首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载3D Niftii图像并保存轴位、冠位、矢状位的所有切片?

加载3D Niftii图像并保存轴位、冠位、矢状位的所有切片?
EN

Stack Overflow用户
提问于 2020-12-19 05:08:25
回答 1查看 479关注 0票数 1

我有一些脑部核磁共振扫描的3DNiftii数据集(FLAIR,T1,T2,...)。例如,FLAIR扫描是144x512x512,体素大小为1.1,0.5,0.5,我想要从轴向,冠状和矢状图获得2D切片,我将其作为我的CNN的输入。

我想做的是:用nibabel读取.nii文件,将它们保存为Numpy数组,并将轴向、冠状位和矢状位的切片存储为2D-PNG。

我尝试过的:

-Use med2image python库

-wrote自己的带有nibabel,Numpy和image的python脚本

问题:轴向和日冠状图像不知何故在一个方向上拉伸。Sagittal像它应该做的那样工作。

我尝试调试python脚本,并使用Matplotlib显示我得到的数组。

代码语言:javascript
复制
image = nibabel.load(inputfile)
image_array=image.get_fdata()

通过使用以下示例:

代码语言:javascript
复制
plt.imshow(image_array[:,:, 250])
plt.show()

结果发现,数据已经在那里延伸了。

我可以通过以下命令获得所需的输出

代码语言:javascript
复制
header = image.header
sX=header['pixdim'][1]
sY=header['pixdim'][2]
sZ=header['pixdim'][3]
plt.imshow(image_array[:,:, 250],aspect=sX/sZ)

但是当保存我的图像时,我如何应用像"aspect“这样的东西呢?或者有没有可能已经用这样的参数加载了.nii文件,以获得我可以处理的数据?

看起来,当nibabel加载.nii图像时,像素大小没有得到考虑。但不幸的是,我没有办法解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2021-04-03 22:58:37

我发现,无论图片是否拉伸,对于训练我的ML模型都没有区别,因为我在数据增强中也是这样做的。在Slicer或MRICroGL中打开漂亮的卷显示卷,正如预期的那样,因为这些程序也考虑到了标题。而且预测也是非常好的(尽管当以某种方式以切片方式保存时,图片是“拉伸的”)。

尽管如此,看拉伸的图片还是让我很恼火,我只是用cv2实现了一些大小调整

代码语言:javascript
复制
def saveSlice(img, fname, path):
    img=numpy.uint8(img*255)
    fout=os.path.join(path, f'{fname}.png')
    img = cv2.resize(img, dsize=(IMAGE_WIDTH, IMAGE_HEIGTH), interpolation=cv2.INTER_LINEAR)
    cv2.imwrite(fout, img)
    print(f'[+] Slice saved: {fout}', end='\r')

结果真的很好,对我来说效果也很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65363935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档