Как получить матрицу интенсивности изображений из изображений Nifti с Nibabel?
Я новичок с NiBabel. Я хочу знать, как получить матрицу интенсивности из изображений Nifti с этой библиотекой. Я использую следующий скрипт для получения вокселей:
import nibabel as ni
example_img = ni.load('myImage.nii')
data = example_img.get_data()
Сначала я думал, что данные содержат интенсивность вокселей, но когда я их напечатал, я увидел отрицательные значения, кажется странным иметь отрицательную интенсивность на изображении, не так ли? Мне нужно получить интенсивность вокселей в изображении nifti, возможно ли это с помощью nibabel? Если нет, можете ли вы предложить мне другое решение? Благодарю.
4 ответа
Не уверен, как вы получаете отрицательные значения вокселей, но вот способ отобразить изображение NifTi в виде матрицы:
import nibabel as ni
img = ni.load('myImage.nii')
data = example_img.get_data()
mat = []
for i in range(img.shape[0]):
plane = []
for j in range(img.shape[1]):
row = []
for k in range(img.shape[2]):
row.append(data[i][j][k])
plane.append(row)
mat.append(plane)
Теперь вы можете распечатать / сохранить в текстовом файле переменную "mat".
Нет. У вас могут быть негативы и нан.
Они представляют собой воксели вне мозга. Интенсивность - это просто результат
data = example_img.get_fdata()
Примечание: используйте get_fdata
и нет get_data
, чтобы всегда получать массивы с плавающей запятой.
В дополнение к тому, что Сералук сказал в предыдущем ответе, поскольку мы имеем дело с изображениями «nii» nifti, значение вокселя может быть отрицательным. Например, если это компьютерная томография, то каждый воксель хранит значения в единицах Хаунсфилда , и в этом случае 0 представляет затухание в воде, тогда как затухание в воздухе равно -1000.
Другой прямой метод для использования nltools
:: Brain_Data
функция для извлечения данных непосредственно в 1d массив. Хотя нет Nibabel
но похоже на твою логику.
from nltools.data import Brain_Data
img = Brain_Data('myImage.nii')
data = img.data