728x90
반응형
의료영상 중 대표격인 3D 영상을 읽는법에 대해 포스팅을 하고자한다.
보통 내가 써본 의료영상 처리 라이브러리는 pydicom 혹은 SimpleITK인데 경험상 3D 영상인 CT 혹은 MRI를 다룸에 있어 SimpleITK가 가장 유용했다.
본 포스팅도 SimpleITK를 활용해 CT영상을 읽어보고자 한다.
SimpleITK를 통해 CT 영상 읽는법
[SimpleITK 라이브러리 선언]
import SimpleITK as sitk
[CT의 dcm series가 있는 경로 선언]
ct_dir = './example_ct_data'
[DICOM series의 파일이름 선언]
series_ids = sitk.ImageSeriesReader.GetGDCMSeriesIDs(ct_dir) # DCM series의 id 획득
series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(ct_dir, series_ids[-1]) # DCM series의 슬라이스별 이름 획득
print(series_ids)
#('1.3.6.1.4.1.14519.5.2.1.6279.6001.179049373636438705059720603192',)
only_dcm_name = [series_file_name.split('/')[-1]for series_file_name in series_file_names]
print(only_dcm_name)
# 주의: 역순으로 구성되어 있음
# ['1-133.dcm', '1-132.dcm', '1-131.dcm', '1-130.dcm', '1-129.dcm', '1-128.dcm', '1-127.dcm', '1-126.dcm', '1-125.dcm', '1-124.dcm', '1-123.dcm', '1-122.dcm', '1-121.dcm', '1-120.dcm', '1-119.dcm', '1-118.dcm', '1-117.dcm', '1-116.dcm', '1-115.dcm', '1-114.dcm', '1-113.dcm', '1-112.dcm', '1-111.dcm', '1-110.dcm', '1-109.dcm', '1-108.dcm', '1-107.dcm', '1-106.dcm', '1-105.dcm', '1-104.dcm', '1-103.dcm', '1-102.dcm', '1-101.dcm', '1-100.dcm', '1-099.dcm', '1-098.dcm', '1-097.dcm', '1-096.dcm', '1-095.dcm', '1-094.dcm', '1-093.dcm', '1-092.dcm', '1-091.dcm', '1-090.dcm', '1-089.dcm', '1-088.dcm', '1-087.dcm', '1-086.dcm', '1-085.dcm', '1-084.dcm', '1-083.dcm', '1-082.dcm', '1-081.dcm', '1-080.dcm', '1-079.dcm', '1-078.dcm', '1-077.dcm', '1-076.dcm', '1-075.dcm', '1-074.dcm', '1-073.dcm', '1-072.dcm', '1-071.dcm', '1-070.dcm', '1-069.dcm', '1-068.dcm', '1-067.dcm', '1-066.dcm', '1-065.dcm', '1-064.dcm', '1-063.dcm', '1-062.dcm', '1-061.dcm', '1-060.dcm', '1-059.dcm', '1-058.dcm', '1-057.dcm', '1-056.dcm', '1-055.dcm', '1-054.dcm', '1-053.dcm', '1-052.dcm', '1-051.dcm', '1-050.dcm', '1-049.dcm', '1-048.dcm', '1-047.dcm', '1-046.dcm', '1-045.dcm', '1-044.dcm', '1-043.dcm', '1-042.dcm', '1-041.dcm', '1-040.dcm', '1-039.dcm', '1-038.dcm', '1-037.dcm', '1-036.dcm', '1-035.dcm', '1-034.dcm', '1-033.dcm', '1-032.dcm', '1-031.dcm', '1-030.dcm', '1-029.dcm', '1-028.dcm', '1-027.dcm', '1-026.dcm', '1-025.dcm', '1-024.dcm', '1-023.dcm', '1-022.dcm', '1-021.dcm', '1-020.dcm', '1-019.dcm', '1-018.dcm', '1-017.dcm', '1-016.dcm', '1-015.dcm', '1-014.dcm', '1-013.dcm', '1-012.dcm', '1-011.dcm', '1-010.dcm', '1-009.dcm', '1-008.dcm', '1-007.dcm', '1-006.dcm', '1-005.dcm', '1-004.dcm', '1-003.dcm', '1-002.dcm', '1-001.dcm']
[SeriesReader를 활용하여 SimpleITK Image 획득]
series_reader = sitk.ImageSeriesReader()
series_reader.SetFileNames(series_file_names)
series_reader.MetaDataDictionaryArrayUpdateOn()
series_reader.LoadPrivateTagsOn()
sitk_data = series_reader.Execute()
[SimpleITK Image를 Numpy 형태로 변환]
CT_3D_array = sitk.GetArrayFromImage(sitk_data)
print(CT_3D_array.shape)
#(133, 512, 512)
다음과 같은 과정을 통해 CT 영상을 다루기 간단한 numpy 형태로 변환할 수 있다.
[CT 영상 시각화 예시]
import matplotlib.pyplot as plt
plt.imshow(CT_3D_array[62],'gray')
728x90
반응형
'Python > 의료영상처리' 카테고리의 다른 글
[Python] Dicom 의료영상 tag 읽기 (0) | 2023.01.31 |
---|---|
[Python] nrrd 파일 읽고 시각화 하기 (0) | 2023.01.29 |
[Python] mhd 파일 읽고 시각화 하기 (0) | 2023.01.29 |
[Python] nifti 파일 읽고 시각화하기 (0) | 2023.01.26 |
[Python] 민감도 (Sensitivity), 특이도(Specificity), 위양성률(False Positive Rate) (0) | 2022.08.30 |
댓글