일반적으로 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로 해도 됨.