본문 바로가기
  • Hello_
Python/의료영상처리

[Python] mhd 파일 읽고 시각화 하기

by LDwDL 2023. 1. 29.
728x90
반응형

본 포스팅에서는 .mhd 확장자의 파일을 읽고 시각화를 해보고자 한다.

 

.mhd 파일이란?

mhd 확장자는 의료 영상 데이터의 배포에 많이 사용되는 매우 간단한 포맷이다.

mhd 파일은 ASCII 헤더일 뿐이며 기본적인 이미지 속성(예: 치수, 간격, 원점)을 정의한 다음 raw 확장자를 가진 원시 이진 파일을 실제 이미지 데이터와 함께 읽는 데 사용된다.

따라서 mhd 파일과 raw 파일은 하나의 세트라고 보면 된다.

 

mhd 파일 읽기

mhd 확장자를 가진 흉부 CT 영상을 읽어보겠다.

"SimpleITK.ReadImage"를 통해 읽으면 되며 dcm img 형태를 dcm array 형태로 변환하면 된다. 변환은 "SimpleITK.GetArrayFromImage"를 활용하면 된다.

 

import numpy as np
import SimpleITK as sitk

dcm_path = './data_/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059.mhd'
label_path = './label/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_LobeSegmentation.nrrd'

dcm_sitk = sitk.ReadImage(dcm_path)
dcm = sitk.GetArrayFromImage(dcm_sitk)

print(type(dcm)) # <class 'numpy.ndarray’> 
print(dcm.shape) # (161, 512, 512) 
print(np.unique(dcm)) # [-3024 -1024 -1023 ... 2165 2187 2211] # HU 값

 

출력 형식은 numpy이며, CT의 고유 픽셀값인 HU 값으로 잘 나오는 것을 확인할 수 있다.

 

mhd 파일 시각화

mhd 파일을 읽어서 나온 변수는 "dcm"이며 이에 해당하는 라벨은 nrrd형식의 파일을 읽어서 두 개를 동시에 시각화를 해보고자 한다.

 

문제없이 잘 읽은 것을 확인할 수 있다.

 

 

nrrd 파일 읽는 방법은 아래 링크를 참고하면 된다.

 

[Python] nrrd 파일 읽고 시각화 하기

본 포스팅에서는 nrrd 파일을 읽고 시각화해보고자 한다. nrrd 파일 읽기 nrrd 파일을 다루기 위해서는 nrrd 라이브러리를 설치하여 사용하면 된다. pip install pynrrd nrrd를 설치한 이후로는 "nrrd.read"를

baembaembaem.tistory.com

 

mhd 파일과 raw 파일 간의 관계

우선 위에서 읽은 예시 mhd 파일의 경로를 살펴보자.

os.listdir('./data_/')
"""
['1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059.mhd', 
'1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059.raw']
"""

 

mhd 파일뿐 아니라 같은 파일명을 가진 raw 파일도 같이 있는 것을 확인할 수 있다.

 

raw 파일만 없애고 mhd 파일을 읽어보자.

 

os.listdir('./data_/')
"""
['1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059.mhd']
"""

 

그럼 다음과 같이 "Exception thrown in SimpleITK ImageFileReader_Executre: …mhd…" 오류가 발생한다.

 

mhd 파일은 헤더정보만 갖고 있으며 우리가 읽고자 하는 데이터는 모두 raw파일에 있다는 것을 인지하고 하나의 세트처럼 데이터 처리를 해주면 된다.

 

 

 

728x90
반응형

댓글