2009,提出了一种基于中值滤波的快速去雾算法。
去雾的基本原理: 由于大气中悬浮颗粒的存在,场景光线到达传感器之前总是有一部分被散射折射掉,从而导致获取的图像质量退化,使得场景中目标的能见度变弱。去雾能提高对比度。基本原理是:尘雾图像可看做两部分构成:一是场景辐射,二是尘雾。只要正确估计出尘雾浓度图,然后从原图像中减去它,就可以得到无雾图。基本方法是基于中值滤波估计尘雾浓度(大气光幕,大气耗散函数),利用大气散射模型恢复无雾图。
缺点:1.这种算法不能适用与所有的模糊图像。(评价来源CAP,A Fast Single Image Haze Removal Algorithm Using Color Attenuation Prior)2.中值滤波不能很好的去除强边缘附近的雾,而双边滤波可以。
2012年ICPR有篇Tarel算法的用双边滤波代替中值滤波的改进版本。
目标:图像的对比度。
算法的主要优点:是速度快,复杂度仅是图像像素个数的线性函数。这一速度使能见度恢复首次应用于实时处理应用程序,如标志,车道标记和障碍物检测从车内摄像头。另一个优点是可以同时处理彩色图像和灰度图像,因为雾的存在和低饱和度物体之间的模糊性是通过假设只有小的物体才能有低饱和度的颜色来解决的。
适用对象:灰色或彩色图片。
内容分析:假设小的物体才是白色,则可以分辨雾和白色物体。低饱和度就是白色的意思。
算法:
1.白平衡
白平衡就是在图像处理过程中,对原本材质为白色的物体的图像进行色彩还原,通过去除外部光源色温的影响,使其在最终照片上的图像也呈现为原来一致的白色。
其次,我们要明白本文中白平衡的目的是什么,本文中对输入图像进行白平衡操作的目的是还原雾本来的颜色,对于在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿。进行白平衡后,雾的颜色就是纯白色,如果输入图像的像素值范围为[0, 1],那么进行白平衡后,大气光A的值就为(1, 1, 1)。
全局白平衡:
S1:求原始图像I的RGB三通道的最小值赋值给W;
S2:求W中灰度值后99%大的最大值,并赋值给ival;
S3:找出W中比ival还大的像素的位置[rind, cind];
S4:把原始图像中位置为[rind, cind]的像素赋值给sel;
S5:把sel的各个通道的平均值赋值给white,white为3*1的灰度值;
S6:把white除以white的最大值作为白平衡系数f,f为3*1的灰度值;
S7:让原始图像的每个像素除以对应的通道的白平衡系数f,这样就得到白平衡后的图像。
局部白平衡:
S1:对原始图像orig进行局部均值滤波,并赋值给fo;
S2:求fo每个像素点的RGB三通道的平均值,并赋值给nbfo,nbfo为一个3*1灰度值;
S3:把fo除以nbfo,然后把得到的结果的balance次方赋值给fo;
S4:求fo每个像素点的RGB三通道的平均值,并赋值给nbfo,把fo除以nbfo,赋值给fo;
S5:让原始图像orig除以fo,并把得到的结果赋值给orig。
通过白平衡操作后,我们可以得到:把orig的三通道的最小值赋值给W;把orig三通道的平均值赋值给nbo。他们都是单通道灰度值图像。
2.大气遮罩推断
假设大气光Is是已知的,那么V(x,y)只与景深有关,也就是说在相同的景深下Atmospheric Veil 是相同的,而随着景深的增加,Atmospheric Veil 对图像的影响增加。首先用图像中最小亮度值对Atmospheric Veil 做粗略的估计。可以得到,该公式的物理意义是W(x,y)是图像中每个像素在所有通道的最小值。
W(x, y) = min(I(x, y))
求Atmospheric Veil的两个约束条件:(V只跟景深有关系)
1 V>=0,该条件的物理意义是所有的像素点肯定都会受到大气光的影响;
2 V<=W; 该条件的物理意义是所有的像素点肯定都会受到大气光的影响,像素点的亮度值是包含两部分的,除了大气光之外还有景物本身反射的光(其中W为原始图像I的三个通道的最小值)。
由于在近似的景深部分,V(x,y)的值是近似相等的,所以对粗略得到的W(x,y)应该进行平滑,但是在景深变化较大的部分V(x,y)的值是会出现剧烈变化的,所以要尽量保留边缘。
中值滤波对W进行滤波:
(1) A(x, y) = median(W(x, y));
滤波后的图像会存在一些纹理信息,而这些纹理是不属于雾的,所以要过滤掉这些纹理信息:
(2) B(x, y) = A(x, y) – median(abs(W(x, y)-A(x,y)));
最后,要保证细化后的V的范围大于等于0,小于等于W:
(3) V = max(min(p*B(x, y), W(x, y)), 0);
公式中的sv是中值滤波器的尺寸大小,p是考虑天空光比例的大小一般的取值是在0.9~0.95之间。现实中,空气中总会不可避免地包含一些杂质分子.如果彻底地移除雾的存在,图像会看起来不真实,并且深度感会丢失.所以可以通过引进1个常数p,有针对性地保留一部分覆盖
遥远景物的雾。
3.图像能见度复原
S1:factor为1/(1-V)
S2:把原始图像(orig-V)*factor赋值给R;
S3:当为全局白平衡时,R*white赋值给R;当为局部白平衡时,R*fo赋值给R;
S4:把R的三通道的平均值赋值给nbr。
4.适应对比度放大的平滑处理
局部中值滤波
每个像素所进行的局部中值滤波的窗口大小是不一样的,其大小为step3中factor的大小取整,并保证其大小范围为[1, smax],smax为自己指定的最大滤波窗口。
5.专用的色调映射
去雾后图像亮度调整