Single Image Haze Removal Using Dark Channel Prior

本文介绍了一种基于暗通道先验的图像去雾算法,该算法利用大气物理散射模型和暗通道先验原理,能够有效估计雾的浓度并还原出高质量的无雾图像。同时,该方法还能获得图像的深度信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文链接:http://www.robots.ox.ac.uk/~vgg/rg/papers/hazeremoval.pdf

Abstract:作者的观察报告:大多数户外无雾图像的图像块中,至少有一个通道的颜色亮度非常低,甚至接近于0。这个先验知识叫做暗通道先验。这篇文章就是讲述如何利用暗通道先验知识来估计雾的浓度并还原出高质量的无雾图像。不仅如此,此方法还有一个副产品--能还原图像的深度信息。

一、背景知识

1.大气物理散射模型

    其中,I(x)是我们拍摄到的有雾图像,J(x)是我们要恢复的无雾图像,A是大气光(是一个常数,后面会说怎么求),t(x)是透射率。

    关于t(x),还有一个公式:

    这个公式中,表示散射系数(是一个常数,可以自己设置合适的值),d(x)表示场景深度。由(2)公式我们可知,只要求出了透射率t(x),我们就可以求出图像的场景深度(就是摘要里说的副产品,深度信息)。

    回归正题:关于图像去雾,我们的目标就是根据已有的有雾图像I(x),恢复无雾图像J(x)。此时根据公式(1),我们还需求解两个未知参数,常数A与矩阵t(x)。

2.暗通道先验

    定义:在清晰的无雾图像中,局部图像块至少有一个颜色通道的值非常低,甚至接近于0。

    数学表达:

                    

    例子:


    图(a)是原图,图(b)是每个像素三通道中的最小值,图(c)是在图(b)的基础上用15x15的最小滤波器滤过后的结果,也就是一张暗通道先验的图片。

    我们将会利用这两个公式来求解t(x),在此之前先了解一下造成暗通道先验原理的原因:

    a) 汽车、建筑物、城市中玻璃窗户的阴影,或者树木岩石等自然景观的投影。

    b) 色彩鲜艳的物体或者表面,在RGB三个通道中有些通道的值很低。

    c) 颜色较暗的物体或表面。例如灰暗的树干和石头。

    总之,自然界中色彩鲜艳或者表面灰暗或者阴影影子之类的图像,暗通道图像都是很黑暗的。

二、求解A与t(x)

因为大气光A比较简单,所以先求A。

1.求解大气光A

    这里需要注意一点,不能简单粗暴的直接把图片中亮度最大的像素点作为大气光A的值。因为这个最亮的点往往是白色的物体,如房顶、墙壁、白色的汽车等。如果将这些值作为大气光A值,那么还原出的图片会有很大的失真。

    我们可以继续利用暗通道来求解大气光值:

    a) 首先在暗通道图中按亮度选取前0.1%的像素。

    b) 然后在原有雾图像对应的位置上选择亮度最大的点,作为我们的A值。

    显然,这样做就有效的避免了将白色物体的值作为大气光A值,因为鲜艳物体的暗通道值都接近于0。

2.求解透射率t(x)

    解释一下,t(x)并非一个常数,而是和图像大小一样的一个矩阵,矩阵中每个点都代表了在那处的透射率。

    如上文所述,我们将利用公式(5)(6)来求解t(x)。

    首先将公式(1)变形到如下形式:


    然后对(7)式进行两次求最小值运算,等号任成立,得到下式:

    

    这里假设每一个窗口内的t(x)为一个常数,定义为

    注意到,A是一个常数且无雾图像的暗通道先验图像接近于0,所以上式等号右边的第一个部分等于0,数学表达如下:

    

    所以

    如此,(8)式就可简化成:

    

    这就是透射率t(x)的预估值。然而在现实环境中,往远处眺望时极远处必定有薄雾的存在,所以为了图像的视觉效果,作者还另外添加了一个常数,取值在[0,1],通常设为0.95,来保留一定程度的雾,给人判断远近的感觉。

    

三、总结

    此时的只是t(x)的一个粗估计,作者在文中还给出了将精细化的方法--Soft Matting,但是这个方法过于繁琐且速度较慢,这里就不做介绍了。后面何凯明大神还提出了导向图滤波的方法,可以用来代替Soft Matting,效果差不多但速度提升很多大且易于理解,后面一篇文章会总结这个《Guided Image Filtering》。

    回归正题,现在我们已经求解了大气光A值和粗略的透射率t(x),已经可以恢复无雾图像了。但在实际应用中发现,粗略的t(x)值有时会偏小,这会导致恢复的图像过白,整体失真。所以我们需要设置一个最小阈值t0,当t(x)过小时使用t0值来替代,避免失真问题,所以,最终的恢复公式如下:

    

    下次总结完导向图滤波在一起发代码和效果图。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值