本文介绍一篇2016年发表于CVPR的去雾论文。
该去雾方法基于以下假设:在一张无雾的图像中,人眼可分辨的颜色数量远远低于这张图中的像素数量。
为了证明这一点,作者在一个无雾图像的数据集上对其中的每一张图片使用K-means在RGB空间上聚成500个颜色类,将原本的颜色替换为其所属聚类中心的颜色,然后统计了每一张图片与原图的PSNR值,PSNR大多分布在36-54之间(图(a))。比较图(b)和图(d),可以看到,肉眼几乎无法分辨出区别。
将该假设与雾天成像模型结合,雾天成像模型指出了有无图像与无雾图像的关系,可以看到对于无雾图像中的同一种颜色。
由于雾的影响,加雾后的颜色I相当于在原颜色J和大气环境光A之间线性加权平均,权重即透射率t,与距离d有关。当同一种颜色的t随着距离d变化时,无雾时原本属于同一颜色聚类的像素点不再能够聚成同一类,而是每种颜色形成一条雾线haze-line。
图a和图b分别展示了无雾图像中四种颜色的分布位置和它们在RGB空间中的四个聚类。
图c和图d分别为有雾图像中的同样的四种颜色分布位置和它们在RGB空间中形成的haze-line。
这些haze-line均汇聚于大气环境光A值,线端的另一端为透射率t最接近1的像素点,t越接近1意味着该像素距离相机最近,受到颜色衰减和大气环境光干扰最小,也最接近原始颜色。
因此将haze-line上的像素点颜色替换为线段另一段的颜色即可实现去雾。
该去雾方法的关键在于如何检测出这些haze-line。
文中首先将原始像素减去大气环境光A值(A值估计方法参考K. He, J. Sun, and X. Tang. Single image haze removal using dark channel prior. In Proc. IEEE CVPR, 2009.)。此时所有雾线出发于原点,然后转换到球坐标,因同一条雾线的θ、φ相同,因此在θ、φ上进行二维聚类,属同一类的即位于同一条雾线。
下面根据雾线估计透射率t。
将同一条雾线上半径最大的点定义为t=1的点(假设深度最浅的点为无雾点),雾线上其他位置的透射率可由r/rmax来计算。
然而该估计方法在当雾线上的像素点分布非常集中时会失效(因为并没有深度很浅的点可以作为无雾时的颜色)。
因此接下来对上一步的得到的粗糙透射率t进行优化,首先由有雾图像一定大于0,结合成像方程推导出t的下界tLB,使用该下界排除上一步得到的粗糙透射率中的不合理数值。
然后最小化如上目标函数得到精细的透射率图。
第一项使得优化后的t尽可能接近粗糙透射率图,接近程度由雾线上的分布方差决定, 第二项为平滑项,可以减缓空间分布上的噪声。
最后一步使用估计的A和t进行去雾,算法整体流程如上。
最后是该方法与其他去雾方法的对比,相比基于local-patch的去雾算法,haze-line去雾是一个全局方法,估计出的透射率图能够很好的对应上深度的变化,恢复出的图像对细节保留更好。

 关 注 我 们 
实验室网站:http://viplab.fudan.edu.cn/
OpenASIC官方网站:www.openasic.org
知乎专栏:http://zhuanlan.zhihu.com/viplab
微信公众号:OpenASIC
继续阅读
阅读原文