注意:这篇文章上次更新于1994天前,文章内容可能已经过时。
This article was last updated1994 days ago, the content may be outdated.
这也许是我复现的所有论文中效果最好的了吧这也许是我见过最好用的低照度图片了吧🦄

开始之前,背景音乐先安排上。
这篇博客介绍一下论文中的方法,目的不是让除了我以外的人能看懂,因为我也做不到让别人能读懂😓,大概就算是阅读笔记吧。欲知方法细节,查看论文原文.
方法简介
流程图

算法共分为以下几个步骤:
- 提取 Y 通道。
- 根据 Y 通道图的直方图分布情况分别求出两个 ,使其分别有效作用于暗区和亮区域。
- 使用 DoG 函数对伽马校正结果图进行局部对比度增强。
- 对增强结果进行自适应的线性加权融合。
- 利用 Y 通道的融合结果对图像进行色彩校正得到最终的结果图。
提取 Y 通道
对 Y 通道进行对数归一化:
其中:
自适应伽马校正
首先,以 0.5 为阈值将对数归一化后的 Y 通道分为亮区域和暗区域两个部分,即大于 0.5 的像素值被划分在亮区域,小于或等于 0.5 的像素被划分在暗区域。
分别根据亮区域和暗区域的标准差来计算 期望中位数,再通过全局搜索的方式寻找两个 使得经过伽马校正后的图像最接近期望中位数。
以下为暗区和亮区期望中位数的计算方法:
其中:L 下标表示暗区;H 下标表示亮区。
两个 的全局搜索方法如下:
其中: 是中位数算子。 表示的是 的像素值。
分别使用以上两个 对输入图像进行伽马校正,得到亮区结果和暗区结果。
局部对比度增强
使用 DoG 模型分别作用于亮区校正结果图和暗区校正结果图,实现图像的对比度增强。具体方法为:
自适应融合
这里使用一种依赖于亮度的自适应线性加权融合方法。
其权重的计算方式为:
此处设置 。
融合方法为:
另外,此处对输出结果进行了一步线性归一化操作。
自适应的色彩恢复
此处依然是一种亮度依赖的自适应方法。
Matlab实现
分区
分区操作只需要记录亮区像素和暗区像素的值就可以,因此此处采用遍历图像的方式对每个像素点进行判断,大于0.5 则加入亮区数组,否则加入暗区数组。
1 | function [Ld,Lb] = fen_qu(Lin) |
DoG 算子
DoG 算子实际上就是两个高斯函数的差,因此这里先实现一个二维的高斯函数。
二维高斯函数也可以使用 Matlab 内置函数fspecial来实现。
1 | function gaussFun = GaussFun2D(hsize) |
DoG 算子的实现如下:
1 | function outImg = DoG(Img,rr_RF,rr_IF,m_qA1,m_qA2,antImg) |
线性归一化
1 | function [outputs] = Normalization(arg) |
其他操作
最后,将其他操作写在主函数中,详见代码注释。
1 | function outputs = main(input) |
几张低照度图像
左为原图,右为结果图。








几张水下图像
左为原图,右为结果图。










