Создайте объем nifti с изображениями nifti, которые имеют разный размер вокселя - PullRequest
0 голосов
/ 08 июля 2020

У меня есть вопрос о создании 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)

Заранее спасибо

...