의료영상을 다룰 일이 많아질 것 같아 의료영상에서 자주 사용되는 .dcm 확장자, DICOM(다이콤) 파일을 Python 환경에서 어떻게 읽고 시각화하는지 정리한 글이다.
우선 Sample DICOM 파일을 아래 홈페이지 마지막 이미지 부분1개 다운받아보자.
해당 이미지를 클릭하면 다운로드 받을 수 있다.
압축을 해제하면 .dcm 파일 1개가 있을 것이다.
해당 DICOM 파일을 파이썬에서 읽기 위해선 pydicom 라이브러리가 필요하다.
pip install을 통해 설치해주자.
pip install pydicom
# dicom 파이썬 라이브러리
import pydicom
import matplotlib.pyplot as plt
# dcm 파일 경로
dcm_path = './MRBRAIN.dcm'
# dcm 파일 읽기
dcm = pydicom.dcmread(dcm_path)
dcmread 메소드를 통해 정의한 경로의 dcm 파일을 읽을 수 있다.
이제 dcm에 어떤 정보가 있는지 확인해보자.
print(dcm)
print 결과 다음과 같이 dcm 파일의 meta data가 출력되는 것을 확인할 수 있다.
이중에서 시각화를 위해 사용할 변수는 Window Center, Window Width, pixcel_array이다.
WC = dcm.WindowCenter
WW = dcm.WindowWidth
print(WC, WW)
# 1951 237
"여기서 WC, WW에 대해 찾아본 것을 간단히 설명하면 WC를 기준으로 WW 범위만큼 관찰한다"라고 이해했다.
# 픽셀 배열 출력
img = dcm.pixel_array
img
# 이미지 시각화
plt.imshow(img, cmap=plt.cm.bone, vmin=WC-WW/2, vmax=WC+WW/2)
# vmin : 최소값, vmax : 최대값
plt.colorbar()
plt.show()
픽셀의 최소, 최대값을 정의하는 vmin과 vmax파라미터는 임의로 WC 기준 ±WW의 절반으로 정의했다.
위 코드를 실행하면 다음과 샘플이미지와 색상이 조금은 다르지만 동일한 이미지가 출력되는 것을 확인할 수 있었다.