为什么imshow不能在某些输入上工作,而imagesc正常工作?

时间:2014-02-12 21:17:08

标签: matlab image-processing

imshow不适用于值(尤其是十进制),而imagesc可以无缝地使用相同的值。

示例:

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

1 个答案:

答案 0 :(得分:2)

我建议您阅读documentation about imshow或输入help imshow并注意以下内容:

  

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

在您尝试使用imshow时,大于1的值显示为白色。它与值为十进制的事实无关。使用:

imshow(image, []);

如果您希望色彩映射跨越整个图像范围。或者实际上,只需使用imagesc为您完成。