본문 바로가기

카테고리 없음

DICOM/DCM을 NII/NITIF 로 파일 변환(dcm2nii)

일반적으로 CT 데이터셋은 두가지 형태로 많이 제공된다

DCM과 NITIF 포멧. ( .dcm / .nii )

DICOM이 예를 들어 하나의 DCM이 복부 사진 200장중 1장이라면

NITIF는 하나의 NITIF가 복부사진 200장을 다 담고 있다.

그렇기 때문에 DICOM을 쌓은 파일이 nii로 보면 된다.

 

대략 순서는 이렇게 된다.

코드는 대략 간단히 쓸테니 알아서 채워넣으면 될듯

1. 우선 아무런 nii 하나를 구해서, (왠만하면 간 dcm이면 간nii로) header를 뽑는다.

2. dcm을 읽어들여와 쌓아서 배열로 만듬

3. 배열을 nii로 저장

 

import nibabel

from medpy.io import save,load

import os 

import pydicom

img, header = load('XXX.nii')

 

path = 'data/'

data_list = os.listdir(path)

data_list.sort()

 

size = 512 # 사이즈는 알아서 설정... 더 작게 하고 싶으면 dcm을 resize해서 넣어야함

volume = np.ndarray((len(data_list),size,size),dtype=np.float32)

count= 0

for data in data_list :

  dcm_path = os.path.join(path,data)

  dcm_info = pydicom.read_file(dcm_path)

  dcm = dcm_info.pixel_array()

  # 여기에 dcm 가공할 코드를 알아서 첨가

  volume[count,:,:] = dcm # 변환하고 싶으면 [:,count,:] 으로 하던지 [:,:,count].T 로 하면 됨

  count = count+1

 

save(volume,'saving.nii.gz',header) # nii로 해도 되고, nii.gz로 해도 됨.