
🐍 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
'😀 Language > - Python' 카테고리의 다른 글
[pydicom] DICOM 대량 데이터 PACS프로그램에서 확인하기 (FileSet) (0) | 2024.02.29 |
---|---|
대용량 csv 파일 pyarrow로 pandas 다루기 & excel 저장 (feat. 연구 데이터) (0) | 2023.04.07 |
[샛길공부] join 문자열 리스트 합치기, 공백 구분 추가하기, (feat. 백준 문제 풀 때 유용하더라) (0) | 2022.07.04 |
[Pandas] EDA 자주 사용하는 코드 모아보기 😆 (0) | 2022.02.24 |
[Pandas] 판다스 튜토리얼 (Pandas quickstart)공부해보기 (0) | 2022.02.22 |