😀 Language/- Python

[pydicom]Python으로 PACS DICOM 의료 영상 데이터 활용하기

또방91 2024. 2. 29. 11:39
728x90

 

 

 

 

🐍 Pydicom 소개

의료 영상데이터 관련 업무를 한다면,

DICOM 형식의 파일을 필연적으로 마주친다.

 

파이썬을 통한 DICOM을 다룰 때 Pydicom 패키지는 아주 유용한 패키지가 될 것이다.

pydicom 패키지를 활용할 때 기본적인 작업들을 소개하려한다.

 

* pydicom 공식문서: https://pydicom.github.io/pydicom/stable/

 


🐍 Pydicom 설치 

#pip 사용하여 설치방법
pip install pydicom

#conda 사용하여 설치방법
conda install -c conda-forge pydicom

 

🐍 Dicom 데이터 가져오기

예시 데이터가져오기

의료데이터 정보보호에 의해 쉽게 데이터셋을 구할 수 없다면? 

걱정말고 pydicom에서 제공하는 예시 데이터셋을 활용할 수 있다.

단! git이 설치되어 있는 경우여야 가능함 !

!pip install git+https://github.com/pydicom/pydicom-data

 

🐍 Dicom 파일 읽기

Pydicom 예시 데이터 dicom tags 데이터  읽기

* dicom 영상데이터 tag에는 그 파일 자체의 크기,형식 등 정보도 있겠지만

그 데이터의 환자 ID, 성별, 나이 등의 정보를 담고 있다

* Dicom tag에 어떤 정보가 담겨있는 지 알고 싶다면 아래 사이트 참고

👉 https://www.dicomlibrary.com/dicom/dicom-tags/

# dicom 데이터셋을 읽기위해 dcmread() 사용 
from pydicom import dcmread 
from pydicom.data import get_testdata_file 


fpath= get_testdata_file("CT_small.dcm") 
fpath ## 파일 path 반환하여 확인해보기
ds= dcmread(fpath)
ds #dicom 파일 tags 살펴보기

 

특정요소를 추출하여 확인하고 싶다면?

# 예를 들어 데이터 획득일자를 확인하고 싶다면?

# 방법1 : 코드를 통해서- 16진수이기 때문에 앞에 '0x'를 붙여줘서 확인
ds[0x0008, 0x0022]

#방법2 : tag 이름을 통해서- 공백없이 확인
ds['AcquisitionDate']

 

Pydicom 예시 데이터 dicom tags 데이터  읽기

* dicom data 이미지로 확인하고 싶을 땐 matplotlib.pylot을 사용한다
* .dcm 형식 이미지 말고도 일반 jpg,png 이미지를 활용한 작업에도 사용하는 패키지이다

 

!pip install matplotlib

#주로 plt라고 alias를 지정해서 줄여서 사용한다
#예) numpy->np, pandas->pd, matplotlib,pyplot ->plt

import matplotlib.pyplot as plt
#이미지를 부를 패키지 준비가 되었다면!
#dcm이미지데이터.pixel_array로 2D이미지 정보를 가져와서 표시가능합니다.

plt.imshow(ds.pixel_array, cmap=plt.cm.bone) #위에서 dcmread(dcm파일) 지정한 ds변수를 그대로 사용한다면!

 

 

 

 

🐍Github

https://github.com/LIMSONA/Digigal_Healthcare/blob/main/Pydicom%20pkg.ipynb

 

🐍공식 참고 - Pydicom document 홈페이지

* 예시 데이터 가져오기 -  https://pydicom.github.io/pydicom/stable/tutorials/installation.html

* dicom tags 데이터 읽기 -  https://pydicom.github.io/pydicom/stable/tutorials/dataset_basics.html#getting-our-example-dataset

* dicom 이미지 읽기 - https://pydicom.github.io/pydicom/stable/old/viewing_images.html

 

728x90