暗通道先验算法
本文创新点: 作者提出暗通道先验算法,即:在户外无雾图像中(非天空区域)的大部分局部区域,存在一些像素点(暗像素)在至少一个颜色通道中具有非常低的值,趋近于0。(暗通道图可以估计雾浓度信息)
大气散射模型
在计算机视觉中,描述有雾图像的模型可以表示为
(1)
为观察到的有雾图像,为无雾图像,是大气光值,为透射率,表示能够到达计算机系统的没有被散射掉的一部分光。
去雾的目的是从无雾图像 中恢复,和。
暗通道先验
作者根据对5000多幅无雾图像的暗通道图数据观察发现:约75%的像素值为0,且90%的像素点具有非常低的值,且集中在[0,16]。由此提出暗通道先验理论,即对于一副无雾图像,其暗通道可以表示为:
(2)
表示 的任意一个颜色通道, 表示在像素点的窗口。
根据暗通道先验理论得出:
(3)
本文思路:
1 透射率估计
假设大气光已知,利用大气光对大气散射模型(1)作归一化处理:
(4)
假设透射率局部区域 是恒定不变的,计算式(4)的暗通道,即求最小通道和作最小值滤波:
(5)
在无雾图像中, 由于是确定的,根据暗通道先验可得的暗通道为0,即:
(6)
将式(6)带入(5),可得透射率的表达式:
(7)
为了在景深处保持一定的雾感,使图像看起来更真实自然,本文对式(7)引进一个恒定参数:
(8)
本文中,=0.95。
透射率优化
由于暗通道中使用了最小滤波,因此式(8)得到的透射率含有halo效应和块状效应,为了解决这一问题,作者先后提出了soft-matting和导向滤波的优化算法来优化透射率,值得注意的是,soft-matting算法可以很好地消除halo现象和块状现象,但其时间复杂度大大增加;导向滤波算法时间复杂度较小,但其复原后的图像去雾不彻底,在边缘突变区域仍存在一定程度的雾。
2大气光估计
在前人的研究中,把大气光取值定在图像中雾最不透明区域。
在图像中,雾浓度越低,其暗通道图越暗,像素点值越小;雾浓度越高,其暗通道图越亮,像素点值越大,因此,暗通道图可以较好的反映雾浓度信息。
本文对于大气光值的选取方法为:先在暗通道图中选出图中前0.1%的像素值最大的像素点(这些像素点通常表示的是雾最不透明的点),这些像素点对应到有雾图像中,选取像素值最高的像素点作为大气光A。
3图像复原
根据大气散射模型,将大气光A和t透射率代入式(1),可得出最终的复原场景:
(9)
其中,值为0.1。由于场景点通常不如大气光亮,因此复原后的图像整体较暗,因此我们需要对复原图像进行增强。
本文算法不足
1 暗通道中使用了最小滤波器,容易产生块状现象和halo效应。
2 本文对一些特定图像(含有白色景物和天空区域等)失效。
3 当大气散射模型失效时,本文算法会失败。
伪代码
1 对有雾图像作两次最小滤波min(min(I(x))),求暗通道; 2 求大气光:range=ceil(img_size*0.001);%取暗原色中最亮的0.1%的点数 radi_pro=zeros(range,1); %用于记录最亮点内对应图片点象素的三个通道的颜色强度 A=max(radi_pro)/3;%大气光的值(3个颜色通道的平均值) 3 求透射率: t = 1 - w*(I^dark./A) 4 根据大气散射模型复原图像
复原效果