Matlab imshow没有正确绘制,但imshowpair确实如此

1 matlab image image-processing imshow

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

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

我试过使用uint8,im2uint8乘以255然后使用这些函数,但获取正确图像的唯一方法是使用imshowpair.

我能做什么?

ray*_*ica 6

这听起来像是一个问题,大多数强度/颜色数据超出了imshow显示double数据时所接受的动态范围.

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

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

imshow(im,[]);
Run Code Online (Sandbox Code Playgroud)

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

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

out = (im - min(im(:))) / (max(im(:)) - min(im(:)));
Run Code Online (Sandbox Code Playgroud)

这将执行与imshow为您显示数据时相同的移位.你现在可以这样做:

imshow(out);
Run Code Online (Sandbox Code Playgroud)