본 포스팅에서는 nrrd 파일을 읽고 시각화해보고자 한다.
nrrd 파일 읽기
nrrd 파일을 다루기 위해서는 nrrd 라이브러리를 설치하여 사용하면 된다.
pip install pynrrd
nrrd를 설치한 이후로는 "nrrd.read"를 통해 파일을 읽으면 된다.
import numpy as np
import SimpleITK as sitk
import nrrd
dcm_path = './data/dcm/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059'
label_path = './label/1.3.6.1.4.1.14519.5.2.1.6279.6001.109002525524522225658609808059_LobeSegmentation.nrrd'
label_mask, header = nrrd.read(label_path)
다만 유의해야 할 점은 nrrd.read를 통해서 data와 header가 동시에 반환되기 때문에 만약 시각화 혹은 데이터 처리가 필요하다면 첫 번째 값을 사용하고 헤더값이 필요하다면 두번째 값을 사용하면 된다.
print(type(label_mask)) # <class 'numpy.ndarray’>
print(label_mask.shape) # (512, 512, 161)
print(np.unique(label_mask)) # [0 1 2 3 4 5] # multi-class
print(header) # OrderedDict([('type', 'uint16'), ('dimension', 3), ('sizes', array([512, 512, 161])), ('endian', 'little'), ('encoding', 'gzip')])
[nrrd 파일의 특징]
1. nrrd는 nifti와 다르게 바이너리가 아닌 multi class를 가질 수 있다.
2. header 정보를 바탕으로 data의 구성을 보면 uint16인 데이터 형식으로 출력되며, 3차원 형식으로 출력되는것을 확인할 수 있다.
3. nrrd를 통해서 출력되는 축은 x, y, z 순으로 반환된다.
nrrd 시각화
왼쪽은 흉부 폐 CT 영상이며, 오른쪽 그림은 폐의 엽별로 영역이 분할된 라벨 영상이다.
문제없이 잘 시각화가 된 것을 확인할 수 있다.
3D CT 영상을 읽는법은 밑에 링크를 참고하면 된다.
[Python] SimpleITK - CT 영상 읽는법
의료영상 중 대표격인 3D 영상을 읽는법에 대해 포스팅을 하고자한다. 보통 내가 써본 의료영상 처리 라이브러리는 pydicom 혹은 SimpleITK인데 경험상 3D 영상인 CT 혹은 MRI를 다룸에 있어 SimpleITK가
baembaembaem.tistory.com
'Python > 의료영상처리' 카테고리의 다른 글
[Python] Dicom 의료영상 tag 읽기 (0) | 2023.01.31 |
---|---|
[Python] mhd 파일 읽고 시각화 하기 (0) | 2023.01.29 |
[Python] nifti 파일 읽고 시각화하기 (0) | 2023.01.26 |
[Python] 민감도 (Sensitivity), 특이도(Specificity), 위양성률(False Positive Rate) (0) | 2022.08.30 |
[Python] SimpleITK - CT 영상 읽는법 (0) | 2022.08.30 |
댓글