我已经导入了图像。我已将其解析为双精度并对其进行了一些过滤。
当我绘制结果时imshow
,双像太暗。但是当我使用imshowpair
绘制原始图像和最终图像,两个图像都正确显示。
我尝试过使用uint8
, im2uint8
,乘以 255,然后使用这些函数,但获得正确图像的唯一方法是使用imshowpair
.
我能做些什么?
这听起来像是一个问题,您的大多数强度/颜色数据都超出了可接受的动态范围imshow
当显示double
data.
我还看到你正在使用im2double
, but im2double
只是将图像转换为双精度图像,如果图像已经是双精度图像,则不会发生任何情况。这可能是因为您过滤图像的方式。你在做某种边缘检测吗?您得到暗图像的原因可能是因为您的大部分强度都是负值,或者徘徊在 0 左右。imshow
显示时double
类型图像假设强度的动态范围为[0,1]。
因此,解决您的问题的一种方法是:
imshow(im,[]);
这会改变显示范围,从而将最小值映射到 0,将最大值映射到 1。
如果您想要更永久的解决方案,请考虑创建一个新的输出变量来为您执行此操作:
out = (im - min(im(:))) / (max(im(:)) - min(im(:)));
这将执行相同的转换imshow
为您显示数据时执行的操作。你现在可以这样做:
imshow(out);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)