1 matlab image image-processing imshow
我导入了一张图片.我已将其解析为双精度并对其执行了一些过滤.
当我用结果绘制时imshow,双重图像太暗.但是当我imshowpair用来绘制原始图像和最终图像时,两个图像都被正确显示.
我试过使用uint8,im2uint8乘以255然后使用这些函数,但获取正确图像的唯一方法是使用imshowpair.
我能做什么?
这听起来像是一个问题,大多数强度/颜色数据超出了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)