A New Image Contrast Enhancement Algorithmusing Exposure Fusion Framework

news/2024/6/15 15:29:11/文章来源:https://blog.csdn.net/u013049912/article/details/137263351

Abstract

弱光图像由于能见度低,不利于人类观察和计算机视觉算法。为了解决这一问题,人们提出了许多图像增强技术,但现有的方法不可避免地会出现对比度增强不足和过度增强的问题。在本文中,我们提出了一种图像对比度增强算法来提供准确的对比度增强。具体来说,我们首先利用光照估计技术设计了用于图像融合的权重矩阵。然后介绍了我们的相机响应模型来合成多曝光图像。其次,我们找到最佳曝光比,使合成图像在原始图像曝光不足的区域曝光良好。最后,根据权重矩阵对输入图像和合成图像进行融合,得到增强结果。实验表明,与现有的几种方法相比,该方法可以获得对比度和亮度失真较小的结果。

1 Introduction

图像增强技术在图像处理中有着广泛的应用。一般来说,它可以使输入图像看起来更好,更适合于特定的算法[6,14]。对比增强作为一种增强技术,可以显示出图像中曝光不足区域的信息。许多对比度增强技术已经被提出,包括基于直方图的[3,6,12,13]、基于Retinex的[7,9]和基于dehaze的方法[4,5]。

彩色图像可以表示为三维数组。最简单的对比度增强方案对每个元素执行相同的处理。例如,最早的图像增强方法使用非线性单调函数(幂律[2],对数[11]等)进行灰度映射。考虑到元素在不同灰度级上的不均匀分布,直方图均衡化(histogram equalization, HE)被广泛用于提高对比度。许多对HE的扩展都考虑了一些限制,如亮度保持[3,6,13]和对比度限制[12]。然而,基于he的方法往往存在过度增强的问题,导致不现实的结果。模仿人类视觉系统,视网膜理论也被广泛应用于图像增强。通过将反射率与照度分离,基于Retinex的算法可以明显增强细节[5,7,9]。然而,这些方法在高对比度区域存在晕状伪影。近年来,一些方法借鉴去霾技术进行对比度增强,取得了良好的主观视觉效果[4]。但这些工作可能因对比度过度增强而造成色彩失真。

虽然图像对比度增强方法已经研究了几十年,但好的增强结果的定义仍然没有明确的定义。此外,现有的弱光增强算法在定位增强过强和增强不足区域方面没有提供参考。我们注意到,只有曝光不同的图像可以作为增强算法的参考,如图1所示。随着暴露量的增加,一些暴露不足的区域变得充分暴露。增强结果应保持曝光良好的区域不变,增强曝光不足的区域。同时,增强区域的对比度应与正确曝光区域的参考图像一致。

在本文中,我们提出了一个新的框架来帮助缓解不足和过度增强的问题。该框架基于摄像机响应模型对输入图像合成的多曝光图像进行曝光融合。基于我们的框架,我们提出了一种增强算法,与几种最先进的方法相比,它可以获得更小的对比度和亮度失真的结果。

2 Our Approach

2.1 Exposure Fusion Framework

在许多户外场景中,由于相机的动态范围有限,无法使所有像素都曝光良好。如图1所示,虽然我们可以通过增加曝光来显示一些曝光不足的区域,但同时曝光良好的区域可能会过度曝光。为了得到一张所有像素曝光良好的图像,我们可以融合这些图像:

其中N为图像个数,Pi为曝光集中的第i张图像,Wi为第i张图像的权重图,c为三色通道指数,R为增强结果。三个颜色分量相等,所有像素的权重都不均匀:曝光好的像素权重大,曝光差的像素权重小。权重被归一化,使得\sum_{i=1}^{N}W_{i}=1

问题是使用其他曝光设置的图像不能用于图像增强问题。幸运的是,用不同曝光方式拍摄的照片是高度相关的。在我们早期的工作中,我们提出了一个相机响应模型来准确地描述这些图像之间的关联,以便我们可以从输入图像中生成一系列图像。仅曝光不同的两幅图像之间的映射函数称为亮度变换函数(BTF)。给定曝光比ki和BTF g,我们可以将输入图像P映射到曝光集中的第i张图像为

在本文中,我们只将输入图像本身与另一个曝光融合,以降低复杂度,如图2所示。融合后的图像定义为

增强问题可以分为三个部分:w, g和k的估计。在下面的小节中,我们逐一解决它们。

2.2 Weight Matrix Estimation

w的设计是获得一种增强算法的关键,该算法可以增强曝光不足区域的低对比度,同时保持曝光良好区域的对比度。我们需要给曝光良好的像素分配大的权重值,给曝光不足的像素分配小的权重值。直观地看,权重矩阵与场景照度呈正相关。由于高照度区域被曝光的可能性较大,因此应赋予大的权重值以保持其对比度。我们计算权重矩阵为

其中T为场景照明图,µ为控制增强程度的参数(详见3.1节)。通过优化求解场景光照贴图T的估计。

Optimization Problem

亮度分量可用作场景照度的估计。我们采用亮度分量作为照度的初始估计:

对于具有相似结构的区域,理想的照明应该具有局部一致性。换句话说,T应该保留图像的有意义的结构,去除纹理边缘。与[5]一样,我们通过求解以下优化方程来细化T:

M是权矩阵,λ是系数。该方程的第一项是最小化初始映射L与精化映射T之间的差值,第二项是保持T的平滑性。

M的设计对于光照图的细化非常重要。与具有复杂图案的纹理[15]相比,局部窗口中的主边缘提供了更多的相似方向梯度。因此,包含有意义边缘的窗口中的权重应该小于只包含纹理的窗口中的权重。因此,我们将权矩阵设计为

Closed-Form Solution

为了降低复杂性,我们将公式6近似为[5]:

其中  \oslash是按元素除法,I 是单位矩阵,算子 Diag(v) 是使用向量 v 构造对角矩阵,Dd 是具有前向差分的离散梯度算子的 Toeplitz 矩阵。我们的光照图估计方法与[5]中的方法的主要区别在于权重矩阵M的设计。我们采用了一种简化的策略,可以产生与[5]中类似的结果。这里可以借用基于 Retinex 的方法中的其他照明分解技术来找到权重矩阵 W。

2.3 Camera Response Model

在我们早期的工作中,我们提出了一种称为 Beta-Gamma 校正模型 [16] 的相机响应模型。,我们模型的 BTF 定义为

其中β和γ是两个模型参数,可以从相机参数a, b和曝光比k中计算出来。我们假设没有提供关于相机的信息,并使用可以适合大多数相机的固定相机参数(a =−0.3293,b = 1.1258)。

2.4 Exposure Ratio Determination

在本节中,我们找到最佳曝光比,使合成图像在原始图像曝光不足的区域曝光良好。首先,我们排除曝光良好的像素并获得全局曝光不足的图像。我们简单地提取低光照像素为

其中Q只包含曝光不足的像素。

不同曝光下的图像亮度变化明显,而颜色基本相同。因此,我们在估计k时只考虑亮度分量,亮度分量B定义为三个通道的几何平均值:

其中Qr、Qg、Qb分别为输入图像Q的红、绿、蓝通道。我们使用几何平均值代替其他定义(例如算术平均值和加权算术平均值),因为它具有与所有三个颜色通道相同的BTF模型参数(β和γ),如Eq. 13所示。

曝光良好的图像的可见性比曝光不足的图像高,可以为人们提供更丰富的信息。因此,最优k应该提供最大量的信息。为了测量信息量,我们使用图像熵,其定义为

其中pi是B的直方图的第i个bin,它计算了[\frac{i}{N},\frac{i+1}{N}]中的数据个数,N是bin的个数(N通常设置为256)。最后,通过最大化增强亮度的图像熵来计算最优k

优化后的k可以用一维极小器求解。为了提高计算效率,我们在优化k时将输入图像的大小调整为50 × 50。

3 Experiments

为了评估我们的方法的性能,我们将其与几种最先进的方法(AMSR [9], LIME [5], Dong[4]和NPE[14])在来自五个公共数据集的数百张低光图像上进行了比较:VV3, LIME-data [5], NPE [14] (NPEdata, NPE-ex1, NPE-ex2和NPE-ex3), MEF[10]和IUS[8]。MEF和IUS是多曝光数据集,我们从每个多曝光集中选择一张低光图像进行评估。

3.1 Implementation Details

在我们的算法中,µ是一个控制整体增强程度的参数。当µ= 0时,得到的R等于P,即不进行增强。当µ= 1时,曝光不足的像素和曝光良好的像素都被增强。当µ> 1时,像素可能会饱和,从而导致R遭受细节损失。为了在保持曝光良好区域的同时进行增强,我们将µ设为1/2。

为了保持比较的公平性,我们的增强算法的参数在所有实验中都是固定的:λ = 1, \epsilon = 0.001,µ= 1/2,局部窗口的大小ω(x)为5。算法中最耗时的部分是光照贴图优化。采用多分辨率预条件共轭梯度求解器(O(N))对其进行了有效求解。为了进一步加速我们的算法,我们使用输入图像的下采样版本来求解T,然后将结果T上采样到原始大小。如果降采样一次,增强后的结果没有视觉上的差异,但计算效率大大提高。

3.2 Contrast Distortion

如前所述,仅曝光不同的图像可作为评价增强结果准确性的参考。DRIM (Dynamic Range Independent Metric,动态范围独立度量)[1]可以在不受图像亮度变化干扰的情况下测量图像对比度的失真。我们用它来可视化增强结果和参考图像之间的对比度差异。

如图3所示,该方法以最小的失真获得了最真实的结果。Dong的结果有严重的对比度失真。虽然AMSR可以恢复细节,但明显的对比度损失使结果看起来模糊而不真实。相比之下,LIME的结果看起来更生动一些,但它们受到无形对比度放大的影响。图5显示了更多的示例以进行视觉比较。

3.3 Lightness Distortion

我们使用亮度阶误差(LOE)来客观地衡量增强结果的亮度失真。LOE的定义是

如文献[5,14]所示,采用下采样来降低计算LOE的复杂度。我们注意到,当图像降采样到不同的尺寸时,LOE可能会发生显著变化,因为RD会随着像素数m的增加而增加。因此,我们将所有图像降采样到固定大小。具体来说,我们均匀地收集100行和100列,形成100 × 100的下采样图像。如表1所示,我们的算法在所有数据集中都优于其他算法。这意味着我们的算法可以很好地保持图像的自然度。我们还在图4中提供了两种情况下的亮度失真的可视化,从中我们可以发现我们的结果具有最小的亮度失真。AMSR结果失去全局亮度顺序,亮度失真最大。虽然LIME的效果在视觉上是令人愉快的,但它们也受到亮度失真的影响。Dong和NPE的结果只能保留良好暴露区域的亮度顺序。

4 Conclusion

在本文中,我们提出了一个曝光融合框架和增强算法,以提供准确的对比度增强。基于该框架,我们解决了三个问题:1)利用照度估计技术获得图像融合的权值矩阵;2)引入相机响应模型合成多曝光图像。3)找出最佳曝光比,使合成图像在原始图像曝光不足的区域曝光良好。根据权重矩阵对输入图像和合成图像进行融合,得到最终的增强结果。实验结果表明,与几种最先进的替代方法相比,我们的方法是先进的。为了鼓励未来的工作并允许更多的实验验证和比较,我们公开了源代码。更多的测试结果可以在我们的项目网站上找到:http://baidut.github.io /OpenCE/ capp2017.html。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1033709.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞吉外卖实战学习--8、人员编辑更新

人员编辑更新 前言1、进入编辑窗口需要先获取用户信息2、通过上篇文章的update的方法来改变数据3、测试效果 前言 1、进入编辑窗口需要先获取用户信息 通过注解PathVariable 来获取路径需要携带的id然后赋值到路径上,再通过id查询用户信息 /*** 通过id查询用户信…

VUE3极速上手手册

文章目录 Vue3简介一、整体认识Vue3项目1、创建Vue3工程2、主要工程结构 二、数据双向绑定1、vue2语法的双向绑定2、OptionsAPI和CompositionAPI3、Vue3中的数据双向绑定3.1 ref定义基础类型响应式数据3.2 reactive定义对象型响应式数据3.3 ref对比reactive3.4 标签的ref属性3.…

Android 开发 Spinner setSelection 不起作用

问题 Android 开发 Spinner setSelection 不起作用 详细问题 笔者进行Android项目开发,根据上一个页面用户选择数据,显示当前页面Spinner选项,调用 Spinner setSelection 不起作用。 相关java代码 spinner.setAdapter(adapter); …

uniapp点击按钮连接wifi?

<view><button class"but" bindtap"connectToWifi">点击连接WiFi</button> </view> js: Page({// 页面数据data: {wifiConnected: false},onLoad: function () {this.checkWifiPermission();},// 检查 WiFi 权限checkWif…

不同设备使用同一个Git账号

想要在公司和家里的电脑上用同一个git账号来pull, push代码 1. 查看原设备的用户名和邮箱 第1种方法&#xff0c; 依次输入 git config user.name git config user.email第2种方法&#xff0c; 输入 cat ~/.gitconfig2. 配置新设备的用户名和邮箱 用户名和邮箱与原设备保持…

uniApp——零基础App的快速开发记录

公司需要使用移动端App来接受云平台的数据&#xff0c;记录一下学习过程。因水平有限&#xff0c;在学习的过程中不能完整、准确、全面的发现错误&#xff0c;如有错误&#xff0c;请评论指教&#xff0c;谢谢&#xff01; 需求分析 总体需求目标&#xff1a;开发一款android的…

文件传输升级!如何让你的MacBook与安卓设备快速共享大文件?

在现代工作环境中&#xff0c;跨设备、跨平台的文件传输已成为日常办公不可避免的一部分。尤其是MacBook和安卓手机之间的大文件传输&#xff0c;由于两者系统的差异&#xff0c;可能会遇到一些效率上的挑战。为了优化这一过程&#xff0c;以下是一些提升传输效率的新技巧。 1&…

搜索与图论——Prim算法求最小生成树

在最小生成树问题里&#xff0c;正边和负边都没问题 朴素版prim算法 时间复杂度O(n^2) 生成树&#xff1a;每一次选中的t点&#xff0c;它和集合的距离对应的那条边&#xff0c;就是生成树的一条边 算法流程和dijkstra算法非常相似 #include<iostream> #include<cs…

稀碎从零算法笔记Day33-LeetCode:生命游戏

今天是“耶稣受难人”&#xff0c;笔者给自己放了天假hhh 且慢&#xff0c;还是会写一点的。 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 题型&#xff1a;矩阵、原地实现、位运算 链…

Pytorch for training1——read data/image

blog torch.utils.data.Dataset create dataset with class torch.utils.data.Dataset automaticly import torch from torch.utils.data import Datasetclass MyDataset(Dataset):def __init__(self, data):self.data datadef __getitem__(self, index):# 根据索引获取样本…

紫光展锐P7885核心板详细参数介绍_5G安卓智能模块开发方案

紫光展锐P7885核心板采用了先进的6nm EUV制程工艺&#xff0c;集成了高性能的应用处理器和金融级安全解决方案&#xff0c;为用户带来了全新的性能体验。 P7885核心板搭载了先进的6nm制程工艺SoC P7885&#xff0c;其中包含四核A76和四核A55&#xff0c;主频可达2.7Ghz&#xf…

计算机网络面试问题(一)

1.在浏览器中输⼊URL并按下回⻋之后会发⽣什么 2.TCP三次握⼿的过程,为什么三次握手 TCP&#xff08;传输控制协议&#xff09;的三次握⼿是建⽴⽹络连接的过程&#xff0c;确保通信双⽅能够正确地进⾏数据传输。 第⼀次握⼿&#xff08;SYN&#xff09;&#xff1a; 客户端&am…

【THM】SQL Injection(SQL注入)-初级渗透测试

简介 SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经正确验证的用户输入与数据库进行通信时,攻击者有可能窃取、删除或更改私人数据和客户数据,并攻击 Web 应用程序身份验证方法以获取私有数据…

风险与收益

风险与收益 影响资产需求的主要因素财富总量预期收益率资产的流动性影响流动性的主要因素 风险 如何降低风险系统风险和非系统风险机会集合与有效集合资产组合理论 影响资产需求的主要因素 影响资产需求的主要因素包括&#xff1a;财富总量、预期收益率、资产的流动性和风险。…

【JavaEE初阶系列】——多线程案例四——线程池

目录 &#x1f6a9;什么是线程池 &#x1f388;从池子中取效率大于新创建线程效率(why) &#x1f6a9;标准库中的线程池 &#x1f388;为什么调用方法而不是直接创建对象 &#x1f388;工厂类里的方法 &#x1f4dd;newCachedThreadPool() &#x1f4dd;newFixedThread…

使用Leaflet.rotatedMaker进行航班飞行航向模拟的实践

目录 前言 一、Leaflet的不足 1、方向插件 2、方向控制脚本说明 二、实时航向可视化实现 1、创建主体框架 2、飞机展示 3、位置和方位模拟 三、成果及分析 1、成果展示 2、方向绑定解读 总结 前言 众所周知&#xff0c;物体在空间中的运动&#xff08;比如飞行、跑步…

【Linux】ubuntu/centos8安装zsh终端

本文首发于 ❄️慕雪的寒舍 根据这篇知乎文章进行 https://zhuanlan.zhihu.com/p/514636147 1.安装zsh 先安装zsh并设置为默认的终端 # ubuntu sudo apt install zsh # centos sudo yum install zsh util-linux-user # 通用 chsh -s /bin/zsh如果centos下找不到chsh命令&am…

深入解析实时数仓Doris:Rollup上卷表与查询

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、基本概念二、Aggregate 和 Unique 模型中的 ROLLUP三、Duplicate 模型中的 ROLLUP四、ROLLUP 调整前缀索引五、ROLLUP使…

改Jenkins版本号

旧服务器迁移到新&#xff0c;打包版本号更新 Jenkins.instance.getItemByFullName("双机热备").updateNextBuildNumber(65)

154 Linux C++ 通讯架构实战9 ,信号功能添加,信号使用sa_sigaction 回调,子进程添加,文件IO详谈,守护进程添加

初始化信号 使用neg_init_signals(); 在nginx.cxx中的位置如下 //(3)一些必须事先准备好的资源&#xff0c;先初始化ngx_log_init(); //日志初始化(创建/打开日志文件)&#xff0c;这个需要配置项&#xff0c;所以必须放配置文件载入的后边&#xff1b;//(4)一些初…