图像分辨率融合--数据类型

错误图

我用python复现C++的多分辨率融合时,因为数据类型使用不当,最终产生融合失败的情况。如下图,图像融合后,像素亮度值很高,产生很白的情况。
在这里插入图片描述

分析

  1. 首先,构建完两幅镶嵌图像的拉普拉斯金子塔,如左图高斯金子塔图像,可以看出纹理信息,没有错。
    在这里插入图片描述
  2. 对两个普拉斯金子塔中的图像分别进行融合,结果图如下,问题来了,融合后的图像从上图的浅色纹理变成了像素值很高的图像,融合出错了。
    在这里插入图片描述
  3. 试了很多方法,最终发现opencv读取的图像是unit8,即无符号整型,在融合前,只对图像进行了下采样,上采样,相减操作,并没涉及到像素值越界损失的情况 ,但是当对图像进行拉普拉斯融合时,像素值相加后会有很多大于255的值,它们都会被无符号整型约束到0-225内,最后叠加后,图像只会越来越亮,即上图所示。

解决

只用将图像转化为浮点型。
img.astype(np.float32) img = img/255.0
像素叠加才不会损失值,最后imshow时,会归一化到255。

猜你喜欢

转载自blog.csdn.net/weixin_43646128/article/details/121808493
今日推荐