1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab保存nii_matlab – 如何将nii格式文件转换为2D图像

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

时间:2020-03-06 10:41:21

相关推荐

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

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

这是一个简单的例子,可以从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.

希望有所帮助!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。