当前位置: 首页 > news >正文

曝光融合(Exposure Fusion)

一、背景介绍

        图像融合算法里面,hdr图像进行融合,拓宽动态范围的操作非常常见。

        常用的hdr融合算法通常有两类:

                1、不同曝光的ldr图像先进行hdr融合,得到高bit位的hdr图像,再通过tonemaping算法得到结果如图像。

                2、不同曝光的ldr图像,直接融合生成期望的结果图像,不需要高bit的hdr中间结果和tonemapping相关操作。

        本篇主要是对第二类方法之exposure fusion 的简单实现和记录。

二、实现流程

1、基本原理

        对输入的不同曝光ldr图像,通过各自的亮度/对比度/饱和度信息,生成对应帧融合权重,再通过金字塔融合,直接得到hdr结果图像。

        详细信息的话,小伙伴们可以参考:Exposure Fusion_Adagrad的博客-CSDN博客

2、代码流程

        a、拿到ldr输入输入图像:

 

        b、利用拉普拉斯滤波,计算图像对比度权重:

 

        如上图,纹理信息越丰富区域,权重越高。

        但是实际上,这种方式得到的对比度权重其实并不太好,因为这里的边缘纹理太细了,对于区域融合来说,这种细散的纹理状态,对融合权重的贡献并不友好,并还可能导致结果图像出现边缘异常之类情况。

        可以尝试加入多尺度融合或者说使用更复杂一些的对比度检测,将丰富纹理区域更突显一些。不过这些我这里就不拓展了,有兴趣的大佬们自己折腾吧。

        c、根据每个像素r/g/b标准差,得到图像饱和度权重:

 

        可以看到,饱和度越高的区域,对应权重越大,比如天空位置,最亮帧完全没有权重,最暗帧上权重最大。

        但是实际上来说,这里用r/g/b标准差来计算图像饱和度方式,权重表现并不特别好,并且复杂度太高了。

        rgb图像饱和度计算有个特别简单的办法:每个像素上r/g/b里面最大值-最小值,取绝对值的结果,就可以是当前图像饱和度。

        d、根据公式:

 

        得到图像对应的亮度权重。基本原理来说就是图像像素越接近128,表示图像越不可能死黑或者过曝,相应的它权重也就越高。

 

        但是该亮度权重计算其实也有缺陷,会导致图像融合时候,整体动态范围趋势趋向靠近128中间灰度,容易导致部分场景的亮区或者暗区出现对比度发蒙的情况。

        另外,这个权重公式没有考虑到暗帧过曝的情况,假设某个区域暗帧也完全过曝,那么会导致这个过曝区域的权重直接跑飞,因为所有帧上这个区域的融合权重都会是0。

        e、根据公式:

 

        将三个权重合并,得到最终权重结果(我这里设置Wc,Ws,We都为1)。

         f、根据生成的融合权重,使用金字塔融合,得到hdr融合结果图像。

 

        这一步也有问题,因为对不同ev的ldr图像用金字塔做图像融合,会有个大缺陷:结果图像上在高光和死黑区域会数据溢出,如果直接截断保存,就会导致结果图像出现高光过曝或者暗区死黑。

        如下图可以看到,直接截断的结果图上,天空区域这些的地方已经完全过曝了。

 

        要避免这个问题,要么直接换成alpha之类融合算法代替,要么对金字塔融合结果就不要直接截断,而且完整数据保存,然后对金字塔融合图像,再做一次轻量的tonemaping之类操作,得到最终结果。

        最终表现如下图所示:

                从左往右依次为:最暗帧,金字塔融合直接截断保存结果,金字塔融合+tonemaping处理结果。

 

三、复现代码

        参考论文的简单复现代码地址:

https://github.com/yulinghan/ImageQualityEnhancement/tree/master/fusion/exposure_fusion

相关文章:

  • java后端学习
  • 【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑
  • 51单片机的lcd12864驱动程序
  • uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)
  • 虚拟机在挂起恢复后时间漂移问题
  • 吉客云数据集成到金蝶云星空的最佳实践
  • HTML常用标签用法全解析:构建语义化网页的核心指南
  • 工具:shell命令提示符自定义之显示GIT当前分支
  • WebGL2光照效果
  • 龙芯新一代国产服务器CPU及产品闪耀信创大会,助力信创与智算新突破
  • SpringBoot3.4.5下Lombok的@Data注解不生效,解决方案
  • 数据科学和机器学习的“看家兵器”——pandas模块 之六
  • 【漫话机器学习系列】261.工具变量(Instrumental Variables)
  • 《AI大模型应知应会100篇》第66篇:用大模型 + 向量数据库构建你的个性化知识库系统(附实战代码)
  • Java 21 + Spring Boot 3.5:AI驱动的高性能框架实战
  • 【漫话机器学习系列】262.交叉项(Interaction Term)
  • 机器学习-特征工程
  • GD32 GPIO失控的解决方案
  • 【动态导通电阻】GaN HEMT动态导通电阻的精确测量
  • 每日Prompt:迷你 3D 建筑
  • 工人日报:应对“职场肥胖”,健康与减重同受关注
  • 李伟任山东省委常委、省纪委书记
  • 国家卫健委通报:吊销肖某医师执业证书,撤销董某莹四项证书
  • 北方产粮大省遭遇气象干旱,夏粮用水如何解决?
  • 人民日报民生观:转人工客服,怎么这么难?
  • 第十届影像上海博览会落幕后,留给中国摄影收藏的三个问题