介绍一篇很好的图像去雾算法论文,对图像去雾算法的学习均源自此文章。
《Single Image Haze Removal Using Dark Channel Prior》在中国知网、百度学术上都有下载的。
作者根据Dark Object Subtraction原理通过大量实验发现局部找最暗点进行均匀去雾有很好的效果。
由此得到对于一个无雾图像,每个局部区域都很有可能有一些暗的地方,换言之,至少一个颜色通道会有很低的值、或黑色东西。
一些相关原理及公式理解:
1、暗通道表达式
任意输入图像J,表达式:
表示彩色图像的每个通道 ,表示以像素X为中心的一个窗口。
2、暗通道先验理论
作者思路启发来自 image matting 问题(半透明物体边界提取),在matting框架下,寻找一个能局部估算雾的浓度的方法。
3、去雾公式推导
I(x) —— 待去雾图像 J(x) —— 恢复的去雾图像
A —— 全球大气光成分 t(x) —— 透射率
- 被广泛使用的雾图形成模型
(1)
由(1)左右同时除以A,得到变形式:
(2)
c表示R、G、B三通道
- A值定义
借助暗通道图从有雾图像中获取。
步骤:
(1)从暗通道图中按亮度大小排序,取前0.1%的像素
(2)在原始有雾图 I 中找出其中亮度最高的点的值,即为A值
- 透射率t(x)预估值
对式(2)进行两次求最小值:
由式(2)得:
可推出:
将式(10)带入式(8)中,得:
即为透射率预估值。
在现实生活中,雾的存在让人类感到景深的存在,因此在去雾的同时需要保留一定程度的雾。
故,对式(11)存入一个因子,取值范围[ 0 , 1 ]。本文所有测试结果,依赖于=0.95。得到:
- 去雾公式
由式(1)可得:
当投射图t的值很小时,会导致J的值偏大,而使图像整体向白场过度,因此一般设置一个阈值T0。本文以T0=1为标准。
最终得到去雾公式为:
4、各参数对去雾效果的影响
- 窗口大小
窗口越大,去雾效果越不明显。建议窗口大小在11-51之间,即半径在5-25之间。
值越小,去雾效果越不明显。
5、算法效果
6、去雾图像缺陷
去雾图像存在偏暗的现象,可以结合一些自动色剂之类的算法增强曝光,得到更理想的去雾图像。
具体实现源码可以在此处下载。
同时推荐另一篇文章:《Guided Image Filtering》是作者在2013年对上述算法的改进,用导向滤波代替soft matting。
参考文章:
何恺明经典去雾算法:https://blog.csdn.net/real_myth/article/details/53022490
高级图像去雾算法的快速实现:https://blog.csdn.net/huixingshao/article/details/42834939