안녕하세요.
이번 장에서는 Python으로 dicom 데이터를 읽는 방법에 대해서 말씀드리겠습니다.
Python에서는 pydicom 모듈과 SimpleITK 모듈을 제공하고 있는데, 이러한 모듈들을 사용하여 dicom 파일을 읽어 필요한 데이터들을 추출(extraction)할 수 있습니다.
그럼 지금부터 데이터들을 추출하는 방법을 간단하게 설명하도록 하겠습니다.
1. Dicom 파일 다운받기
먼저 아래 사이트에 접속하여 dicom 파일 하나를 다운 받습니다.
http://www.rubomedical.com/dicom_files/
2. DICOM Viewer로 dicom 파일 확인하기
다운받은 dicom 파일을 열어보기 위해서는 "DICOM Viewer" 응용프로그램이 설치되어 있어야 합니다.
제 컴퓨터에서는 MicroDicom viewer가 설치되어 있기 때문에 해당 응용프로그램으로 DICOM 파일을 볼 수 있습니다.
3. pydicom 모듈로 dicom 파일 데이터 읽기
https://github.com/pydicom/pydicom
3-1. pydicom 설치
필자는 anaconda 가상환경에서 돌리고 있기 때문에 conda 명령어로 pydicom을 설치해주었습니다.
conda install -c conda-forge pydicom
(↓↓↓conda 명령어로 pydicom 설치 방법↓↓↓)
https://anaconda.org/conda-forge/pydicom
3-2. pydicom으로 데이터 읽기
pydicom으로 dicom 파일을 읽어드리는 명령어는 한 줄이면 됩니다
dcm = pydicom.dcmread(filename)
파일을 읽어들인 후, 특정 attribute에 접근하면 관련 데이터 값을 얻을 수 있습니다.
예를 들어. "dcm.PatientSex"에 접근하면 성별(M or F) 데이터 값을 얻을 수 있고,
"dcm.pixel_array"에 접근하면 이미지 데이터 값을 얻을 수 있습니다.
위의 DICOM 이미지 shape은 (96,512,512)=(channel, width, height)인데, channel이 의미하는 바는 시간 축이라고 보시면 됩니다. 예를 들어, "pixel_array[0] -> pixel_array[1] -> ... -> pixel_array[95]" 시간 순서대로 (512,512) gray scale 이미지가 변한다고 생각하시면 됩니다 (영상 관점에서 설명하면 pixel_array[0], pixel_array[1], ..., pixel_array[95]가 모두 frame이라고 볼 수 있습니다)
※DICOM viewer에서 마우스 휠을 사용하면 dicom 이미지가 연속적으로 변하는걸 보실 수 있으실 겁니다! (image가 하나로만 구성될 수 도 있으니 알아두세요! ex: "Images: 1/1")
특정 시간대의 dicom 파일의 (gray scale) 2d 이미지 값을 얻으려면 아래와 같이 (=dcm.pixel_array[0]) 접근하면 됩니다. ipynb 파일에서 interactive mode를 사용하면 matpotlib를 이용해 실제 이미지를 visualization하여 확인할 수 있습니다.
4. SimpleITK 모듈로 dicom 파일 데이터 읽기
파이썬에서는 pydicom 외에도 SimpleITK 모듈을 이용해 dicom 파일에 접근할 수 있습니다.
5. 그 외 dicom 파일 다루는 방법
아래 사이트에 접속하여 crtl+F 한다음 DICOM 이라고 검색하면 "Chapter10. Combining data sources into a unified dataset)" section이 나옵니다. (책(76p) or pdf페이지(106)) 해당 section의 내용을 참고하시면 dicom 파일을 다루는 또 다른 방법도 소개하고 있으니 참고하시면 좋을 듯 합니다!
https://pytorch.org/assets/deep-learning/Deep-Learning-with-PyTorch.pdf
'Medical AI research > Background' 카테고리의 다른 글
5. 한국에서 의료 데이터를 다루기 위한 행정절차 (2) | 2021.10.08 |
---|---|
4-2. DICOM 파일 전처리 (Feat. 이미지 저장) (6) | 2021.10.07 |
3-2. DICOM이란? (Feat. DICOM format and Viewer) (4) | 2021.07.03 |
3-1. DICOM 파일이란? (Feat. Definition, PACS, digital image 습득과정) (0) | 2021.07.03 |
2-2. 2D 영상의료(medical imaging) 이미지란? (Feat. MRI, PET, 초음파, 내시경 영상이미지) (0) | 2021.06.12 |