版权声明:本文为博主原创文章,未经博主允许不得转载。 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,:)));
这样就能成功显示啦。