MATLAB 显示3维矩阵的任意维度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lisa_Ren_123/article/details/82564251

最近做的是医学图像nifti格式的数据。用了matlab处理,里面的很多函数还在熟悉。
有个示例是显示三维的最后一维中的图像。
假设v是三维数据示例是这样的:

imshow(v(:,:,50));

这样子是可以成功显示的。
但是如果

显示错误:

imshow(v(:,50,:));

就会如下类似的错

错误使用 imfuse>parse_inputs (line 442)
'A' 的值无效。 Input images A and B must be MxN or MxNx3 numeric arrays.

错误使用 images.internal.imageDisplayValidateParams>validateCData (line 115)
多平面图像的输入项必须是大小为 MxNx3 的 RGB 图像。

然后我就查看了它们各自的大小

>> size(v(:,80,:))

ans =

   127     1   141

>> size(v(:,:, 80))

ans =

   127   207

发现了猫腻,原来取其他维度的时候,居然还是三维的。所以imshow就不起作用了。

解决办法squeeze()

>> size(squeeze(v(:,50,:)))        %把(127,1,141)的大小变成了(127, 141)

ans =

   127   141
imshow(squeeze(v(:,50,:)));

这样就能成功显示啦。

猜你喜欢

转载自blog.csdn.net/Lisa_Ren_123/article/details/82564251