Matlab imshow没有正确绘制,但imshowpair没有

时间:2015-11-13 22:29:53

标签: image matlab image-processing imshow

我导入了一张图片。我已将其解析为双精度并对其执行了一些过滤。

当我用imshow绘制结果时,双重图像太暗。但是,当我使用imshowpair绘制原始图像和最终图像时,两个图像都会正确显示。

我尝试使用uint8im2uint8,乘以255然后使用这些函数,但获取正确图片的唯一方法是使用imshowpair

我该怎么办?

1 个答案:

答案 0 :(得分:6)

在显示gulp-webserver数据时,大多数强度/颜色数据都超出了imshow接受的动态范围,这听起来像是一个问题。

我也看到您正在使用double,但im2double只是将图片转换为双倍,如果图片已经加倍,则不会发生任何事情。这可能是因为您过滤图像的方式。你在做某种边缘检测吗?你得到黑暗图像的原因可能是因为你的大部分强度是负的,或者是在0左右徘徊。im2double显示imshow类型的图像假设强度的动态范围是[0,1]。

因此,解决问题的一种方法是:

double

这会将显示移动到范围,因此最小值映射为0,最大值映射为1。

如果您想要更持久的解决方案,请考虑创建一个新的输出变量来为您执行此操作:

imshow(im,[]);

这将执行out = (im - min(im(:))) / (max(im(:)) - min(im(:))); 为您显示数据时所做的相同移动。你现在可以这样做:

imshow