MRI 데이터 내의 종양을 segmentation 하는 프로젝트를 진행하면서, 의료 데이터는 전처리는 중요한 부분 중 하나이다. 석사 연구 때문에 블로그를 소홀히 했는데 다시 한번 시작하는 것을, 데이터 전처리로 시작해보고자 한다.
Dicom 파일은Digital Imaging and Communications in Medicine
의 약자로, 의료 영상 및 관련 정보를 저장하는 표준 파일 형식이다.
주로 병원이나 의료 기관에서 사용되며, 다양한 의료 영상 장비들과 시스템 간의 데이터 교환을 가능하게 해주는 표준.
파이썬에서 Dicom 파일을 읽어오는 여러 라이브러리가 있다.
그 중에서 나는 pydicom, SimpleITK 등을 주로 사용하는데 특히 pydicom을 많이 사용하였다.
import pydicom
data_path = "***.dcm"
slice = pydicom.dcmread(data_path)
slice
이렇게 dcmread
로 파일을 불러오고 출력해보면 여러 메타 데이터가 출력되는 것을 확인할 수 있다.
메타데이터에는 환자의 나이, 촬영 시간, 이미지 타입, 모달리티 등 여러 정보가 저장되어 있다.
img = slice.pixel_array
img.shape
#shape : (1,512,512)
from pydicom.pixel_data_handlers.util import apply_voi_lut
data_path = "***.dcm"
slice = pydicom.dcmread(data_path)
img = slice.pixel_array
#img = apply_voi_lut(img, slice)
epsilon = 1e-10
min_val = np.min(img)
max_val = np.max(img)
img = (img - min_val) / (max_val - min_val+epsilon)
apply_voi_lut
는 CT 영상에서 주로 사용하는데, 중요한 정보를 더욱 뚜렷하게 표현하기 위해 사용된다.이렇게 간단하게 의료 이미지 데이터를 전처리 하는 방법을 소개하였다.
다음 게시물에서는 pixel spacing을 동일하게 전처리하는 방법을 소개할 예정이다.