2014-02-12 44 views
-1

imshow不能很好地与值(特别是十进制)一起工作,其中imagesc像工作一样具有相同的值。为什么imshow在某些输入上不工作,而imagesc正常工作?

例子:

 image = [0 0 0; 200.50 200 200; 128 128 128]; 
    figure; 
    colormap gray; 
    imshow(image); 
    figure; 
    colormap gray; 
    imagesc(image); 
+0

它为什么不起作用?我得到一个三个不同的矩形的图像,每个代表一个像素。 – Daniel

+0

看看[这个问题](http://stackoverflow.com/q/19280567/2778484)。 – chappjc

回答

2

我建议你阅读documentation about imshow,或键入help imshow并注意以下内容:

如果你的灰度图像为单人或双人,默认显示范围 是[0 1]。如果图像的数据范围远远大于或小于默认的 显示范围,则可能需要尝试将显示范围设置为 ,以查看图像中使用默认的 显示范围不可见的功能。对于具有整数类型所有灰度图像,默认 显示范围为[intmin(类(I))intmax(类(I))]

在你尝试使用imshow,值大于1被示出为白色。这与值是十进制的事实没有关系。使用:

imshow(image, []); 

如果您想让颜色图跨越图像的整个范围。或者实际上,只需使用imagesc即可。

+3

你可以通过'imshow(image,[])' – Adiel

+0

@Adiel right来达到同样的效果,相应编辑。 –