Как я могу перебрать 3D NIFTI изображение в Python - PullRequest
0 голосов
/ 04 января 2019

Для проекта, который я делаю, я хочу написать сценарий, который может рассчитать общий объем мозга изображения МРТ в формате nifti (расширение .nii).Что я не знаю, как это сделать, это перебрать все отдельные воксели и извлечь целые данные внутри.Кто-нибудь знает, как это сделать?

Это код, который я использовал для загрузки определенного изображения nifti в Python:

import nibabel as nib
import numpy as np
import os

path = '/Users/arnavlohe/Desktop/ADNI_002_S_0782_MR_MP-RAGE_REPEAT_br_raw_20060814234209235_1_S17836_I20520_be_be_mixeltype.nii'
img = nib.load(path)
print(img)

И это итоговые данные вывода / изображения:

<class 'nibabel.nifti1.Nifti1Image'>
data shape (166, 256, 256)
affine: 
[[  1.20000184   0.           0.         113.7559967 ]
 [  0.           0.9375       0.         158.26870728]
 [  0.           0.           0.9375     418.0289917 ]
 [  0.           0.           0.           1.        ]]
metadata:
<class 'nibabel.nifti1.Nifti1Header'> object, endian='<'
sizeof_hdr      : 348
data_type       : 
db_name         : 
extents         : 0
session_error   : 0
regular         : r
dim_info        : 0
dim             : [  3 166 256 256   1   1   1   1]
intent_p1       : 0.0
intent_p2       : 0.0
intent_p3       : 0.0
intent_code     : none
datatype        : int32
bitpix          : 32
slice_start     : 0
pixdim          : [1.        1.2000018 0.9375    0.9375    1.        0.        
0.
 0.       ]
... 

Это вся информация, которую я могу предоставить, и я прошу прощения, что мой вопрос не является более конкретным.

1 Ответ

0 голосов
/ 04 января 2019

Вы можете комбинировать get_fdata() для извлечения данных изображения в виде массива NumPy:

img = nib.load(path)
data = img.get_fdata()

и индексирование NumPy для доступа к вокселям, например:

data[1,1,1]

В заключение отметьте, что вы можете задавать такие вопросы по Neurostars .

...