1. 引言
由于大雾等恶劣天气的影响,图像设备难以采集到清晰的图像(如图1所示),对捕捉到的含雾图像进行去雾处理,减轻甚至消除雾天对图像设备所产生的影响是图像复原的主要任务之一。
目前,较为普遍的去雾算法主要分为两类 [1] :第一类是基于物理模型的场景图像复原算法,第二类是基于图像增强处理的去雾算法。第一类大多是从含雾图像降质的物理方面成因入手 [2] ,Oakley等人提出基于场景几何学方法 [3] ,建立一个新的物理模型,这个模型含有三个参数,对模型参数进行逆向计算,得出的结果再用来计算含雾图像中的每一个像素点的反射以及散,射通量的相对影响值,但是这种方法只能用于灰度级图像,并不适用于彩色图像,且场景深度是由前置空运相机拍摄得到的。Cozman、Krotkov等人在1997年第一次在含雾图像的去雾处理中使用到了大气散射模、型 [4] [5] ,用晴好条件下景点的颜色值和大气光颜色值线性表示出图像设备采集到的图像颜色值,再拿采集到的图像色度值减去大气光色度值,就能复原出晴好天气下景物的色度值。只是这种算法在去雾处理时,采集到图像的景深很难准确计算,天空的亮度值受到了悬浮颗粒散射影响,现实环境中其他光线往往也能导致这个方法瘫痪。第二类主要从时域、频域这两个方面来选择相应的图像增强算法,Jisha John、Grewe等人提出的基于小波融合的去雾算法 [6] [7] [8] ,对多幅含雾图像进行融合来获得一张较好的图像,但是这种方法只能相对地提高图像质量,并不能实现真正意义上的去雾。
2. 大气散射模型
1975年,麦卡特尼(McCartney)等人根据Mie散,射理论,利用入射,光衰减模型和大气光成像模型来描述景物的成像机制,提出了大气散射模型 [9] :
(1)
其中:
为入射光的辐射系数(图像真实的颜色值),
为图像设备所获得的含雾图像的颜色,
为大气光色度,
为大气散射系数,d为景深 [10] 。
当已知大气散射系数
时,由公式(1)可知,若要实现退化图像的复原,就要知道景深d与大气光色度
。通过自左向右对含雾图像的直方图进行扫描,找到直方图中最高峰值点
,
就是大气光色度
。现在,只需计算出退化图像中每一景深d即可。
沿着图像中深度增加的方向选择一个景物消失的近似位置,称为灭点(Vanishing Point,又叫做消失点),场景点的深度与它们在图像上对应的像点到灭点的距离成反比 [11] 。根据图像的灭点,可以找到汇聚在这个灭点的互相平行的直线集合,通过灭点可以确定空间线条的延伸方向。依据这些直线,可以分析出图像方向和景深等立体空间的信息,这样我们就能计算出图像采集点与场景点的距离。
图像透视一般有两种:平行透视和成角透视。真实场景中的这组平行线与画面成90度,就是平行透视,只有1个灭点,如图2;真实场景中的这组平行线与画面所成的角度只要不是90度,都是成角透视,一般有2个灭点,如图3。

Figure 2. The vanishing point of parallel perspective
图2. 平行透视灭点

Figure 3. The vanishing point of angled perspective
图3. 成角透视灭点
3. 基于灭点检测的去雾计算方法
去雾计算的具体步骤如下:
步骤1:灭点检测。为了便于实验的理解,利用了图4城市建筑图来做仿真实验,并且得出了每一步的实验图。
第一步:边缘检测。对原始含雾彩色图转化为灰度图,并染色,如图5,再使用传统边缘检测算法(SOBEL算法)对含雾原图像进行提取,返回低阈值的图,像边缘,如图6。
第二步:边缘检测稀疏。使用稀疏算法,对图像的高密度边缘进行稀疏,除去无用的边缘,只保留原图像主要框架,如图7。
第三步:Curvelet变换。对图7使用Curvelet变换 [12] [13] [14] ,如图8,删除任何对灭点检测没有作用的绝对水平、绝对垂直的边缘,只返回又窄又长的最优细尺度边缘,如图9。
第四步:灭点检测。选择在上个步骤得到的边缘中,把边缘转相交,也就得到了很多交的点,如图10。利用RANSAC算法 [15] ,从得到的交点样本中,拟合误差范围内包含样本最多的线性模型。再把最优的模型两两相交,即得到图像的灭点坐标(170.9762, 150.1190),如图11所示,绿色小圆圈就是灭点位置。
第五步:灭点校验。由于灭点对图像复原至关重要,为了验证RANSAC算法检测到的灭点准确性,

Figure 4. The original image to be processed
图4. 待处理原图像

Figure 6. The image edge by Sobel algorithmic detection
图6. Sobel算法检测的图像边缘
在图10中选4条直线并在每条直线上选6个点,如图12所示,量得这24个点的坐标如表1。
依据最小二乘一,拟合原一,理,拟合出4条直线。如图13所示。

Figure 9. The bordered line of vanishing point
图9. 灭点的边缘直线


Table 1. The 24 intersections of line
表1. 24个直线相交点
对于拟合的4条直线分别两两相交,求它们相交的点坐标,如表2。
从表中,可以看出,各条直线交点坐标基本上都和RANSAC算法得出的灭点(170.9762, 150.1190)附近,甚至相当。因此,可以判定坐标(170.9762, 150.1190)就是该雾天图像的精确值。RANSAC算法计算的灭点完全可以用来做景点深度估计。

Table 2. The six checked coordinates of vanishing point
表2. 校验得到的6个灭点坐标
步骤2:计算景深d。
传统景深计算方法是利用求得灭点坐标
,直接对整幅图像进行景深计算,然后得出一个景深值,再利用这个值对整幅图像做去雾处理。这样做的优点是计算方便,时间复杂度小。但是,如果场景如果多而且复杂,这样一个景深值往往无法代替所有的景深值。本文对原方法进行改进,利用上面
计算出的灭点
分别对含雾图像的每个像素点都做一次景深计算。
首先计算出灭点
到图像四个边缘点(1,1)、(1,512)、(512,1)、(512,512)距离:





那么,利用景深计算公式,求出图像上每一个像,素点
的景深:

这样,就会得到
个景深距离d的值。
步骤3:计算散射系数
。如果把雾天空气中散射介质看成均匀介质的话,
则变成已知。
步骤4:大气光色度
。周围大气光色度
的获取可以从直方图中获取。从含雾图像的直方图中选取几个峰值点
。对
就做加权处理,得到的
是需要的含雾图像大气光色度
。
步骤5:图像设备所获得的含雾图像的颜色
。
步骤6:有了这4个变量,对于含雾图像的每个像素,分别都使用公式
还原其原来的颜色,共计算512 × 512次。然后得到512 × 512个
,再合成一副图像,即景物去雾后的图像。
为了验证方法的有效性,采取了不同观测点、不同场景、不同雾气浓度、不同的天空亮度等3幅随机城市建筑图作为代表。
图14透视方式:成角透视;雾气大小:浓雾;视觉景深距离:>1000 m;图像亮度:偏暗;图16透视方式:平行透视;雾气大小:中雾;视觉景深距离:0~1000 m;图像亮度:中等;图18透视方式:多点透视;雾气大小:轻雾;视觉景深距离:>1000 m;图像亮度:中等。
实验结果显示,原图像图14、图16、图18雾气浓度较低,亮度值均匀,使用本文去雾方法后图15、图17、图19效果较好,而且没有颜色失真,图像看起来更自然。
4. 结论
本文利用大气散射模型进行图像去雾处理,最大的优点是对含雾图像的每个像素点都做一次景深值计算,避免了不同的景深范围差较大的含雾图像对去雾处理的影响,在一定程度上可以解决由于单一景深导致部分区域颜色失真的问题,使去雾后图像的颜色更自然。
基金项目
论文得到国家自然科学基金(No.11161055)的资助。