最近对图像去雾算法产生了兴趣,查阅学习了大量论文和大牛博客后,决定动手用自己熟悉的opencv来编写程序完成。文章专门记录了具体算法实现过程以及其中遇见的大量问题。供自己以后参考,当然也希望能给广大博友提供一些参考。本文着重讲实现过程,图像去雾理论会同过参考文献形式给出。整个内容拟大概分成三个章节来介绍。
开发环境:
计算机系统:win10(64-bit)
编译器:MSVC 2013(64 bit)
Qt版本:5.4.2(64 bit)
OpenCV:3.0.0
1、去雾原理(简述)
雾图形成模型:
其中,I(X)就是我们现在已经有的图像(待去雾的图像),J(x)是我们要恢复的无雾的图像,A是全球大气光成分(未知), t(x)为透射率(未知)。现在的已知条件就是I(X),要求目标值J(x),显然,这是个有无数解的方程。所以要求解J(x),必须通过一系列的先验知识求取t(x)和A.
由先验知识,A是一个全局变量,它可以选取含雾图像的最大像素值来作为A值,这是最简单的办法,还有一些求解方法可以见参考文献1.
暗原色先验知识可以作为求取t(x)的理论依据。 该理论认为,在绝大多数户外无雾图像的局部区域里,至少存在一些像素, 其一个颜色通道的强度值很低。通过对每个像素块