2015-10-19 69 views
0

我在Matlab中输入了双精度图像。我怎样才能imshow呢?谢谢。在Matlab中显示图像类型Double

load('file.mat'); 
b=d.l{2,1}.a{1,1}; %//b is an image <96x96x4 double> 
imshow(b); 
+3

'imshow'不支持显示4通道图像。这幅图像应该代表什么? – rayryeng

+0

如果你的图像是'NxMx3',并且你在评论中输入了错字,使用'imshow(b,[])'来自动调整'imshow'函数的限制 –

回答

1

作为@rayryeng表明,imshow不喜欢4倍信道的图像。因此:

如果您的图像是NxMx3,并且您在评论中输入了错字,请使用imshow(b,[])自动调整imshow函数的限制。

如果你的第4通道是α,则要么忽略阿尔法:imshow(b(:,:,1:3),[])

或者,从RGBA转换你的图像在RGB最接近的表示。你可以做到这一点与一些所谓的alpha blending,你必须在这个SO后一个很好的答案(在另一种编程语言):Convert RGBA color to RGB

如果这些都不是你的话,那么你可能需要提供更多的信息。

+0

是的,你是正确的Ander Biguri。它在我忽略Alpha通道时起作用。谢谢。 – Dani

+0

怎么样如果我想显示一个图像25x25双倍而不是96x96x4。我试图使用imshow函数,但它不起作用,并显示如下错误:索引超出矩阵的尺寸。谢谢 – Dani

+0

@Dani图像的大小在'imshow'中没有绝对的影响,所以如果它不起作用,还有另外一个原因。 –