我有一些脑部 MRI 扫描的 3D Niftii 数据集(FLAIR、T1、T2、..)。例如,FLAIR 扫描为 144x512x512,体素大小为 1.1、0.5、0.5,我想从轴向、冠状和矢状视图获得 2D 切片,我将其用作 CNN 的输入。
我想做的事:用 nibabel 读入 .nii 文件,将它们保存为 Numpy 数组,并将轴向、冠状和矢状的切片存储为 2D-PNG。
我尝试了什么:
- 使用 med2image python 库
- 使用 nibabel、Numpy 和 image 编写了自己的 python 脚本
问题:轴向和冠状图像以某种方式向一个方向拉伸。矢状面的效果应该很好。
我尝试调试 python 脚本并使用 Matplotlib 来显示我得到的数组,之后
image = nibabel.load(inputfile)
image_array=image.get_fdata()
通过使用例如:
plt.imshow(image_array[:,:, 250])
plt.show()
并发现,数据已经延伸到那里。
我可以弄清楚获得所需的输出
header = image.header
sX=header['pixdim'][1]
sY=header['pixdim'][2]
sZ=header['pixdim'][3]
plt.imshow(image_array[:,:, 250],aspect=sX/sZ)
但是如何在保存图像时应用“方面”之类的东西?或者是否有可能已经加载带有类似参数的 .nii 文件,以获得我可以使用的数据?
看起来,当 nibabel 加载 .nii 图像时,像素尺寸没有得到照顾。但不幸的是,我没有办法解决这个问题..