繁体   English   中英

如何使用 Nibabel 从同一个文件夹中读取多个 Nifti 文件?

[英]How to read multiple Nifti files from the same folder with Nibabel?

我确实看到了一些与 Nibabel 相关的 tuts,当你只读取一个 nii 图像时它们工作正常,但我需要从同一个文件夹中读取 167 个文件,但我不知道该怎么做。 我尝试使用 glob,因为我们将它用于 OpenCV,但它与 Nibabel 的工作方式不同。

data = glob.glob('path to my data' + '*.nii.gz')
print(len(data))
print(data)
data = np.asarray(data)
print(data)

正如上面提到的评论之一,您描述的data只包含图像文件名而不是它们的像素。

一旦你有了文件名列表(或一些容器,其中每个文件名字符串都是一个元素) data ,你可以这样做:

import numpy as np;
import nibabel as nb;

if "imdata" not in locals():    

    for i in range ( len ( data ) ):

        imname = data [ i ];

        if "imdata" not in locals():
            imdata = nb.load ( imname ).get_fdata().flatten();
            imlen  = len ( imdata );
            imdata = imdata.reshape ( 1, imlen );
        else:
            imdata = np.append ( imdata, nb.load ( imname ).get_fdata().flatten().reshape ( 1, imlen ), axis=0 );

如果图像大小相同,这将起作用 - 您将获得#images x #pixelsperimage的矩阵。 您当然也可以在 3D 或 4D 中执行此操作,具体取决于您需要对图像数据执行的操作。

locals()的使用有点多,对我来说,当我写这个时它很方便,因为不必在同一个 session 中重新加载图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM