[딥러닝] 의료 이미지 전처리 (Dicom, Pydicom)

김영민·2024년 4월 23일
0

의료AI

목록 보기
1/1

MRI 데이터 내의 종양을 segmentation 하는 프로젝트를 진행하면서, 의료 데이터는 전처리는 중요한 부분 중 하나이다. 석사 연구 때문에 블로그를 소홀히 했는데 다시 한번 시작하는 것을, 데이터 전처리로 시작해보고자 한다.

Dicom

Dicom 파일은Digital Imaging and Communications in Medicine의 약자로, 의료 영상 및 관련 정보를 저장하는 표준 파일 형식이다.
주로 병원이나 의료 기관에서 사용되며, 다양한 의료 영상 장비들과 시스템 간의 데이터 교환을 가능하게 해주는 표준.

Dicom 파일은 어떻게 읽어올까?

파이썬에서 Dicom 파일을 읽어오는 여러 라이브러리가 있다.
그 중에서 나는 pydicom, SimpleITK 등을 주로 사용하는데 특히 pydicom을 많이 사용하였다.

dicom 파일 읽어오기

import pydicom

data_path = "***.dcm"
slice = pydicom.dcmread(data_path)
slice

이렇게 dcmread로 파일을 불러오고 출력해보면 여러 메타 데이터가 출력되는 것을 확인할 수 있다.
메타데이터에는 환자의 나이, 촬영 시간, 이미지 타입, 모달리티 등 여러 정보가 저장되어 있다.

pixel_array

  • numpy 정보를 받아오는 속성은 pixel_array 이다.
  • 이를 통해 pixel 정보를 받아온다.
img = slice.pixel_array
img.shape
#shape : (1,512,512)

전처리 방법

  • 이렇게 픽셀 정보를 불러오면, 전처리할 준비가 다 끝났다.
  • 보통 의료 이미지는 grayscale 이미지이기 때문에 1차원이다.
  • 0~1 사이로 normalize 한다.
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을 동일하게 전처리하는 방법을 소개할 예정이다.

0개의 댓글