matlab保存nii_matlab – 如何将nii格式文件转换为2D图像

这篇博客介绍了如何在MATLAB中加载和处理nii格式的4D图像数据,通过示例代码展示了如何将4D数据集转换为2D图像,并提供了将切片保存为gif或png格式的方法。
摘要由CSDN通过智能技术生成

是的,您可以像操作任何阵列一样操纵图像/序列.

这是一个简单的例子,可以从NIH 070??00获得数据.

数据集是4D,名为“filtered_func_data.nii”.

让我们加载数据集并访问结果结构的img字段:

S = load_nii('filtered_func_data.nii')

这里,S是具有以下字段的结构:

S =

hdr: [1x1 struct]

filetype: 2

fileprefix: 'filtered_func_data'

machine: 'ieee-be'

img: [4-D int16]

original: [1x1 struct]

我们可以使用字段img访问图像数据(你已经知道了):

A = S.img

如果我们检查尺寸,我们得到:

size(A)

ans =

64 64 21 180

因此,数据集包含64×64图像,深度/切片数为21,帧数为180.

在这一点上,我们可以操纵A,因为我们喜欢重塑,调整大小或任何东西.

这是一个简单的代码(动画gif)循环遍历4D数组中第一个时间点的每个切片:

NumSlices = size(A,3)

figure(1)

filename = 'MRI_GIF.gif';

for k = 1:NumSlices

imshow(A(:,:,k,1),[])

drawnow

frame = getframe(1);

im = frame2im(frame);

[imind,cm] = rgb2ind(im,256);

if k == 1;

imwrite(imind,cm,filename,'gif', 'Loopcount',inf);

else

imwrite(imind,cm,filename,'gif','WriteMode','append');

end

pause(.1)

end

输出:

这看起来对我很好.

因此,在您的情况下,您获得[39 305 305]的大小,并且您可以应用我所做的相同操作来使用3D数据集.

编辑

使用您的数据是一样的:

S = load_nii('Subject01.nii');

A = S.img;

NumSlices = size(A,3);

然后,如果您想要2D图像,则需要在3D阵列中选择切片.

例如,第一个切片的访问方式如下:

A(:,:,1)

其余的等等.

要将图像另存为png,请使用imwrite.

希望有所帮助!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值