【问题标题】:How to get images intensity matrix from Nifti images with Nibabel?如何使用 Nibabel 从 Nifti 图像中获取图像强度矩阵?
【发布时间】:2017-07-14 11:57:38
【问题描述】:

我是 NiBabel 的新手。我想知道如何使用这个库从 Nifti 图像中获取强度矩阵。我使用以下脚本来获取体素:

import nibabel as ni
example_img = ni.load('myImage.nii')

data = example_img.get_data()

我一开始以为数据包含体素的强度,但是当我打印它时,我看到了负值,在图像中具有负强度似乎很奇怪,你不觉得吗? 我需要在 nifti 图像中获取体素的强度,是否可以使用 nibabel?如果没有,你能建议我另一个解决方案吗?谢谢。

【问题讨论】:

    标签: python nifti nibabel neuro-image


    【解决方案1】:

    不确定如何获得负体素值,但这是一种将 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”打印出来/存储在文本文件中。

    【讨论】:

      【解决方案2】:

      没有。你可以有底片和 nan 。

      这些代表大脑外的体素。 强度只是

      的输出
      data = example_img.get_fdata()
      

      注意:使用get_fdata 而不是get_data,始终获取浮点 numpy 数组。

      【讨论】:

        【解决方案3】:

        另一种直接使用的方法是nltools :: Brain_Data 函数将数据直接提取到一维数组中。虽然不是Nibabel但是和你的逻辑差不多。

        from nltools.data import Brain_Data
        img = Brain_Data('myImage.nii')
        data = img.data
        

        【讨论】:

          【解决方案4】:

          除了 seralouk 在earlier answer, 中所说的之外,由于我们正在处理“nii”nifti 图像,因此体素值可能为负数。例如,如果是 CT 扫描,则每个体素将值存储在 Hounsfield unit 中,此时 0 表示通过水的衰减,而通过空气的衰减为 -1000。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-19
            • 1970-01-01
            相关资源
            最近更新 更多