我是NiBabel的新人。我想知道如何使用此库从Nifti图像中获取强度矩阵。我使用以下脚本来获取体素:
import nibabel as ni
example_img = ni.load('myImage.nii')
data = example_img.get_data()
我开始认为数据包含体素'强度,但是当我打印它时,我看到了负值,在图像中出现负强度似乎很奇怪,你想不想? 我需要得到体素'在nifti图像中的强度,是否可以使用nibabel?如果没有,你能提出另一个解决方案吗?感谢。
答案 0 :(得分:2)
不确定你是如何得到负体素值的,但是这里有一种方法可以将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”。
答案 1 :(得分:0)
另一种直接使用的方法是nltools
:: Brain_Data
函数,可将数据直接提取到一维数组中。虽然不是Nibabel
,但与您的逻辑类似。
from nltools.data import Brain_Data
img = Brain_Data('myImage.nii')
data = img.data
答案 2 :(得分:0)
不。您可以使用负数和nan。
这些代表大脑外部的体素。 强度只是
的输出data = example_img.get_fdata()
注意:使用get_fdata
而不是get_data
来始终获取浮点数numpy数组。
答案 3 :(得分:0)
除了 seralouk 在 earlier answer, 中所说的之外,由于我们正在处理 'nii' nifti 图像,体素值可能为负。例如,如果是 CT 扫描,则每个体素将值存储在 Hounsfield unit 中,在这种情况下,0 表示通过水的衰减,而通过空气的衰减为 -1000。