본문 바로가기
  • Hello_
Python/의료영상처리

[Python] nrrd 파일 읽고 시각화 하기

by LDwDL 2023. 1. 29.
728x90
반응형

본 포스팅에서는 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

 

 

728x90
반응형

댓글