У меня есть вопрос о создании nifti-объема для биомедицинских изображений
Обычно я использую nibabel в python для загрузки и создания трехмерного nifti-объема, но недавно у меня есть группа изображений с другой толщиной среза (нечетные числовые срезы составляют 300 микрон (0,3 мм / пиксель), а четные числовые срезы - 60 микрон (0,06 мм / пиксель) с точки зрения толщины).
Я обычно использую следующий код для преобразования nifti для создания 3D numpy файл массива:
vol = np.zeros((864, 1296, 214))
count = 0
numbers = np.arange(1, 215).tolist()
for i in numbers:
file_name = 'central_block_{}.nii'.format(i)
img = nib.load(file_name)
data = img.get_fdata()
#test file size
if img.shape[0] != vol.shape[0] or img.shape[1] != vol.shape[1]:
print(file_name+' size is wrong. Resizing...')
img = xform.resize(img,(vol.shape[0],vol.shape[1]))
vol[:,:,count] = data
count += 1
и то, что я обычно делаю после создания массива 3D numpy:
M = [[0.0232,0,0,0], [0,0.0232,0,0], [0,0,0.232,0], [0,0, 0, 0.3]]
nii = nib.Nifti1Image(vol, None)
Но в этом случае я не думаю, что информация о толщине в каждый срез будет сохранен, а размер вокселя толщины среза будет вместо этого установлен на 0,232.
Есть ли другой способ сложить nifti, сохраняя при этом размер вокселя отдельного среза? или мне нужно сначала изменить индивидуальную толщину nifti, чтобы сначала получить однородный размер вокселя? (например, изменение nifti с 0,3 мм / пиксель на 0,01 мм / пиксель с толщиной 30 и 0,06 мм / пиксель на 0,01 мм / пиксель с толщиной 6)
Заранее спасибо