雾霾天气下,浑浊的大气会吸收景物图像的光线,并造成光线散射,从而降低计算机采集的图像质量。最近几年,国内的雾霾越来越严重,雾霾已经对人们日常生活生产造成了巨大影响,仅仅是由雾霾而引起的交通事故就已对人民的生命财产形成了巨大威胁,因此,对雾霾天气下获得的图像进行去雾处理变得越来越重要。
近年来,在单幅图像的去雾的探索中,已有重大进展。这些算法按照是否基于模型去雾可以分为图像增强类和模型去雾类两类。图像增强类算法通过各种技术增强含雾图像的对比度使图像清晰化,从而达到去雾目的。为了满足主观视觉要求,这类算法不使用物理模型来考察雾天图像退化的真正原因,而是直接从图像处理角度出发来增强图像,因此只能改善图像的部分细节,从而在一定程度上改善图像的视觉效果;对场景结构复杂的图像,这类算法无法有效提高图像质量,甚至还有可能丢失图像的某些信息。比较常用的图像增强类算法有直方图均衡化[1]、同态滤波[2]、Retinex[3]、Tan算法[4]等。模型去雾类算法则考察含雾图像降质原因,建立大气散射物理模型,利用单幅有雾图像中已有的各种信息来估计模型中各个参数,在无需任何附加信息的情况下,能得到原始无雾图像或无雾图像的最优估计值。这种方法是从物理本质上去雾,能够得到更加自然的无雾图像,丢失的信息较少,常见的算法有文献[5-7]提出的算法。
Tarel等[5]提出了一种使用大气成像模型来滤波的去雾思想,利用中值滤波估计大气散耗函数,可实现彩色图和灰度图的去雾;但是去雾后的场景目标存在光伪影现象,在细小边缘区域去雾能力较差。Fattal[6]提出了部分符合物理规律的简单去雾模型,根据数理统计,发现介质传播率与场景色度不相关的规律,利用该规律来估计反射率,然后再计算得到透射率;但该算法对输入信息的统计特性过分依赖,当无法满足假设条件时,去雾效果非常不理想,比如在处理浓雾天气下的图像时有较大失真。He等[7]提出了暗通道先验的方法,并利用该方法取得了良好的去雾效果,从而成为目前最为流行的图像去雾算法;但该算法采用软抠图法细化透射率,存在计算量太大、效率太低的问题,在实际应用和推广中受到极大限制。为了降低暗通道先验算法的复杂度,出现了一大批对暗通道算法复杂度进行改进及应用的算法[8-13]。其中:文献[11]用双边滤波代替软抠图法来去除边缘效应,算法复杂度大大降低,但处理一幅400×600分辨率的图像所需时间依然需要几秒,而且去雾质量有所下降;He等[12]又提出了一种导向滤波算法,与双边滤波相比,该算法去雾质量有所提高,但所需时间相差无几;孙小明等[13]采用分块来求粗暗通道图,然后再用导向滤波细化处理,进一步提高了暗通道去雾速度,但仍不能达到视频处理的实时性。
在图像去雾领域中,基于暗通道先验的去雾算法取得了重大突破,但存在计算量太大、效率太低的问题,从而在实际应用和推广中受到一定限制,比如视频处理领域。针对这一问题,本文对基于暗通道先验的图像去雾算法进行改进,利用分块处理减少求粗暗通道图的运算量,再用线性插值细化透射率,以提高处理效率,达到准实时。
1 大气散射模型在计算机视觉和计算机图形领域中,雾图形成模型广泛采用大气散射模型[14-15],如图 1所示。该模型可以用式(1) 描述:
$\mathit{\boldsymbol{I}}\left( x \right) = \mathit{\boldsymbol{J}}\left( x \right)t\left( x \right) + \mathit{\boldsymbol{A}}\left( {1 - t\left( x \right)} \right)$ | (1) |
其中:x表示一个像素的空间坐标;I(x)指像素RGB颜色强度,即带雾图像;J(x)表示景物光线强度,即无雾图像;A是大气光亮度;t(x)表示景物光线能穿透媒介到达相机的程度。式(1) 中的J(x)t(x)称为直接衰减项,是景物光线在媒介中经衰减后的剩余部分;A(1-t(x))则是大气光成分项,表示由前方散射而把大气光带入成像系统中的部分,会导致景物颜色的偏移。去雾的最终目标就是从I(x)中复原J(x)。
2 暗通道去雾原理He等[7]通过对大量户外无雾图像的观察统计得出暗通道先验规律,即绝大多数的户外无雾图像的每个局部区域都存在至少一个颜色通道的强度值很低的像素。用公式描述,首先对于一幅图像J(x),暗通道值定义如下:
${\mathit{\boldsymbol{J}}_{{\rm{dark}}}}\left( x \right) = \mathop {{\rm{min}}}\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {{\rm{min}}}\limits_{c \in \{ {\rm{r}},{\rm{g}},{\rm{b}}\} } {\mathit{\boldsymbol{J}}_c}\left( y \right)} \right)$ | (2) |
其中:Jdark(x)代表暗通道值;Ω代表一个以x为中心的局部区域,比如一个以x为中心的r×r矩阵(r为奇数,确保像素x在区域中心),所以Jdark(x)代表了在区域Ω内,RGB三通道最小值。由He等[7]的暗通道先验规律知,在无雾图像中Jdark(x)趋于0,即:
${\mathit{\boldsymbol{J}}_{{\rm{dark}}}}\left( x \right) \to 0$ | (3) |
对式(1) 左右两边同求暗通道值,可以得到式(4):
${\mathit{\boldsymbol{I}}_{{\rm{dark}}}}\left( x \right) = \mathop {{\rm{min}}}\limits_{y \in \mathit{\Omega }\left( x \right)} \left\{ {\mathop {{\rm{min}}}\limits_{c \in \{ {\rm{r}},{\rm{ g}},{\rm{ b}}\} } \left[ {{\mathit{\boldsymbol{J}}_c}\left( y \right)t\left( y \right)} \right] + \mathit{\boldsymbol{A}}\left( {1 - t\left( y \right)} \right)} \right\}$ | (4) |
假设在Ω内t(x)为一个常数,记为
${\mathit{\boldsymbol{I}}_{{\rm{dark}}}}\left( x \right) = \left\{ {\mathop {{\rm{min}}}\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {{\rm{min}}}\limits_{c \in \{ {\rm{r}},{\rm{ g}},{\rm{ b}}\} } {\mathit{\boldsymbol{J}}_c}\left( y \right)} \right)} \right\}\tilde t\left( x \right) + \mathit{\boldsymbol{A}}\left( {1 - \tilde t\left( x \right)} \right)$ | (5) |
结合暗通道先验规律,即Jdark(x)趋于0,可得:
${\mathit{\boldsymbol{I}}_{{\rm{dark}}}}\left( x \right) = \mathit{\boldsymbol{A}}\left( {1 - \tilde t\left( x \right)} \right)$ | (6) |
其中:A为大气光亮度,可以从有雾图中估计得到;Idark(x)为暗通道值,可以按式(2) 求取。此时的
当透射率t(x)趋于0时,式(1) 的J(x)t(x)就会趋于0,失去意义,所以给透射率设一个下限t0,与文献[7]一样,取0.1,由式(1) 得去雾图像J(x)表达式:
$\mathit{\boldsymbol{J}}\left( x \right) = \frac{{\mathit{\boldsymbol{I}}\left( x \right) - A}}{{{\rm{max}}(t\left( x \right),{\rm{ }}{t_0})}} + \mathit{\boldsymbol{A}}$ | (7) |
在求取暗通道值过程中需要对区域Ω求最小值,即对图像进行最小值滤波,出现边缘效应,如图 2所示:图 2(a)为原有雾图;图 2(b)为暗通道值不经过细化直接用于去雾的去雾图,可以明显地看到边缘效应。
文献[7]用软抠图法消除边缘效应。软抠图法需求解一个大型稀疏矩阵,算法复杂度高、效率低,一幅400×600分辨率的图像就需要几十秒的处理时间。针对这个问题,He等[12]又提出了一种导向滤波算法,它能有效消除边缘效应,且处理速度较快,算法复杂度为O(N)。但是整个去雾过程依然比较费时,因为导向滤波只能加速消除边缘效应,而在整个去雾过程中,求取粗暗通道值时所采用的最小值滤波运算量也很高。对同样的一幅图像,整个去雾过程依然需要几秒时间,严重制约了算法的推广及应用,尤其是很难应用到视频处理领域中。因此使用一种分块思想,它能有效降低求取粗暗通道值的计算量;再用线性插值细化透射率,使整个算法所需时间降为文献[12]中算法的1/10左右,达到准实时。
文献[13]中用分块来提高求取粗暗通道图的效率,如图 3(a)所示,对一幅有雾图像的中间一小块求统一的暗通道值,然后对这一小块去雾。可以看出按块去雾基本保持了暗通道去雾的优良效果,论证了上述观点的科学性和可行性。
如图 3(b)所示,按块划分暗通道去雾之后,可以明显地看到块状效应,在放大的细节图中间有一道明显的边界,这是由于分块引起的。针对这个问题,文献[9]采用导向滤波来消除块状效应,算法复杂度较高。本文采用线性插值来消除块状效应,因为它不同于边缘效应,只是因为分块而导致边界跳变,线性插值就可有效消除它。
图 3(c)为He等[12]算法去雾效果(本文所提到的He等[12]算法指采用导向滤波[12]代替软抠图[7])。图 3(d)为本文算法去雾效果图,可以看到线性插值之后,放大的细节图已经比较平滑,没有边界,块状效应被消除,整体的去雾效果良好,与He等[12]算法去雾效果基本一致。
在图像处理领域中,线性插值是一种非常简单也经常使用的平滑方法。线性插值操作如图 4所示,图 4(a)表示一幅图像被分成了9块,对其中心的黑色块进行线性插值,与它相邻的是4个白色方块。首先对水平方向进行插值,插值完成后如图 4(b)所示,水平方向变得平滑;同理对竖直方向进行插值,插值完成后如图 4(c)所示,此时原图像中心的黑色块周围的过渡都变得比较平缓。
本文改进算法的流程如图 5所示。首先,对图像分块求取暗通道,从大量实验中得出,一般分成100~200块比较合适。然后线性插值细化透射率。由式(6) 知,透射率和暗通道有一一对应的关系,所以细化暗通道就可以细化透射率。对粗暗通道图线性插值,就是求取相邻两块暗通道的差值,把这个大差值平均到每个像素上,使块状边缘变得相对平滑。然后再求透射率。整个求取过程中还需估计大气光亮度A。由于图像中可能会有白色物体存在,导致最亮的像素可能并不在天空区域,所以采用和文献[7]一样的估计方法,选取前0.1%的暗通道亮度值作为大气光亮度A的估计值,最后把求得的t(x)和A代入式(7) 得到最终的去雾图像J(x)。
在文献[7]的算法中,求取暗通道值的算法复杂度为r×r×N,其中r为正方形区域边长,以像素为单位,如在文献[7]中取15个像素,N为图像总像素。分块求取暗通道值是对一个小分块取一个统一的暗通道值,对于一幅图像不管分成多少块,算法复杂度都为N,所以该改进算法在求取粗暗通道值这一步上有效降低了计算量。
文献[12]中使用导向滤波来消除边缘效应,按其所述,算法复杂度为O(N),但是常数因子较高。而分块求取粗暗通道值时,并不是采取区域最小值滤波,无边缘效应,只有块状效应,所以选择线性插值消除分块以后的块状效应,算法复杂度为2N(二维)。
4 实验结果与分析算法运行环境如下:Intel Core i5-3210M CPU 2.50 GHz,4.00 GB内存,Windows 7操作系统,Matlab 2010软件。实验通过对大量雾霾图像进行去雾处理来验证本文提出的快速暗通道去雾算法的有效性,并且与Tarel等[5]、Fattal[6]、He等[12]、双边滤波[11]、孙小明等[13]几种算法进行对比。实验中将给出不同场景下拍摄的几幅图像的去雾效果,通过本文算法去雾图与其他算法去雾图之间的比较,充分表明本文算法具有较强的实用性。为了对比算法的公平性,这些算法中的大气光亮度A都采用3.1节所述的方法估计。
4.1 主观评价本组实验用不同算法分别对3幅图像进行去雾,去雾效果对比如图 6~8所示,这3幅图像的分辨率分别为517×690、525×600、517×686。图 6~8中:图(a)为原有雾图像;图(b)为Tarel等[5]算法去雾效果,图中有大量发白的小点,都是些细小边缘,显示了其在细小边缘区域去雾效果较差,如在图 7(b)白色椭圆标注中的屋顶处出现光伪影现象,视觉效果不自然;图(c)为Fattal[6]算法去雾效果,该算法基于场景色度和介质传播率不相关的假设,当某些情况下该假设无法满足时,去雾之后的色彩就会过于饱和,如图 8(c)的白色椭圆标注区域中,去雾图像色彩已经出现极大失真;图(d)为He等[12]算法去雾效果,该算法在细化透射率图时采用是速度更快的导向滤波[12],相比Tarel等[5]和Fattal[6]两种算法,其去雾效果最为自然,边缘细节保留完好;图(e)为双边滤波[11]细化投射率的去雾图,该算法能快速有效地消除大部分的边缘效应,但还是有一部分边缘无法消除,如图 6(e)和7(e)白色椭圆标注区域中的屋顶还有明显的边缘效应;图(f)为孙小明等[13]算法去雾图,该算法同样采用导向滤波细化透射率,去雾效果和He等[12]算法相当接近,只有在天空区域的去雾效果有些下降,不如He等[12]算法彻底,如图 7(f)中的白色椭圆标注区域;图(g)为本文改进算法去雾图,可以看出,本文算法效果和He算法的去雾效果基本一致,而且在色彩上更加自然,如图 7(d)和7(g)中白色椭圆标注的右下角草地颜色和图 8(d)和8(g)中白色椭圆标注的右上角树林颜色,He等[12]算法的去雾图色彩都过于饱和,因为He等[12]算法是对每一个点求区域暗通道值,增强得更为强烈,出现了色彩过增。
在客观评价中,本文使用了4个参数,分别是峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)[16]、结构相似性(Structural SIMilarity, SSIM)[16]、可见边增强比例(e)[17]和算法运算所需时间(Time)。PSNR为图像信噪比,越大越好;SSIM是描述去雾前后两幅图像的结构相似度,结构保存越完好,去雾图像保留的有用信息就越多,所以该值越高越好,最大为1;e是一个应用极广的图像去雾效果客观评价参数,由Hautiere等[17]提出,描述的是去雾后图像可见边增加的比例,计算公式如式(8) 所示。
$e = ({p_\mathit{\boldsymbol{J}}} - {p_\mathit{\boldsymbol{I}}})/{p_\mathit{\boldsymbol{I}}}$ | (8) |
其中:pJ代表去雾图像的可见边数,pI代表原有雾图的可见边数,可见边的增加一定程度上可被认为是图像细节得到增强,去雾就是一个增强细节的过程,所以e越大越好。Time描述的是算法所需时间,越短说明复杂度越低,效率越高,实用性就越强,是本文算法改进的重点。
表 1为图 6~8的去雾参数,从表 1中可以看出:Tarel等[5]算法的PSNR、e是6种算法中最好的,但其Time太大,对3幅有雾图像的处理时间都超过10 s,在视频处理领域根本无法使用;Fattal[6]算法的Time是6种算法中最少的,但其他3个指标却是6种算法中最差的,如SSIM只有0.2左右,保留的原图有用信息极少,图(6)可见边e为负,无法有效增强图像细节;He等[12]算法的PSNR和e虽都低于Tarel等[5]算法,但已不影响主观视觉效果,其SSIM高于Tarel等[5]算法,保留的有用信息更多,整体视觉去雾效果比较良好,同时Time为2 s左右,与Tarel等[5]算法相比已有较大提升,但依然无法满足视频处理的实时性要求;双边滤波[11]算法的PSNR、SSIM、e三个参数和He等[12]算法相近,相比软抠图法细化需要几十秒,其Time已经下降到2 s,但也仅仅和导向滤波的速度差不多;与He等[12]算法和双边滤波[11]算法相比,孙小明等[13]算法在保证其他3个去雾指标的前提下,把Time降到了0.6 s左右,已经有相当大的提升;本文改进算法在孙小明等[13]算法基础之上进一步降低了Time,变为200 ms左右,效率明显提升,达到准实时。
综合主观和客观评价两个方面,可以清晰得出本文改进算法在保持暗通道去雾优良效果的同时能有效降低运算量,大大增强暗通道算法的实用性。
5 结语针对暗通道去雾速度慢的问题,本文提出了一种基于暗通道的快速去雾算法,通过分块处理和线性插值,有效提高了去雾速度。实验结果表明,本文改进算法的算法复杂度低、处理速度快,能有效提高暗通道去雾的实用性;但该算法也存在一定缺陷,如:无法突破暗通道去雾瓶颈,对于包含大量天空区域的有雾图像,处理效果并不理想;去雾过程中采用物理模型也有局限性,对于质量要求更高的去雾处理,仍需要进一步深入研究雾霾图像形成过程,提出更加科学的物理模型来优化去雾。
[1] | 徐同莹, 彭定明, 王卫星. 改进的直方图均衡化算法[J]. 兵工自动化, 2006, 25(7): 58-59. (XU T Y, PENG D M, WANG W X. Improved histogram equalization algorithm[J]. Ordnance Industry Automation, 2006, 25(7): 58-59.) |
[2] | 张新明, 沈兰荪. 基于小波的同态滤波器用于图像对比度增强[J]. 电子学报, 2001, 29(4): 531-533. (ZHANG X M, SHEN L S. Image contrast enhanchment by wavelet based homomorphic filtering[J]. Acta Electronica Sinica, 2001, 29(4): 531-533.) |
[3] | RAHMAN Z U, JOBSON D J, WOODELL G A. Retinex processing for automatic image enhancement[J]. Journal of Electronic Imaging, 2004, 13(1): 100-110. DOI:10.1117/1.1636183 |
[4] | TAN R T. Visibility in bad weather from a single image[C]//CVPR 2008:Proceedings of the 2008 IEEE Conference on Computer Vision and Pattern Recognition Workshops. Washington, DC:IEEE Computer Society, 2008:1-8. |
[5] | TAREL J P, HAUTIERE N. Fast visibility restoration from a single color or gray level image[C]//Proceedings of the 2009 IEEE International Conference on Computer Vision. Washington, DC:IEEE Computer Society, 2009:2201-2208. |
[6] | FATTAL R. Single image dehazing[J]. ACM Transactions on Graphics, 2008, 27(3): Article No. 72. |
[7] | HE K, SUN J, TANG X. Single image haze removal using dark channel prior[C]//Proceedings of the 2011 IEEE Conference on Computer Vision and Pattern Recognition Workshops. Washington, DC:IEEE Computer Society, 2011:1956-1963. |
[8] | 马江峰, 杨忠斌, 毕笃彦, 等. 快速图像去雾新方法[J]. 计算机应用, 2012, 32(6): 1567-1569. (MA J F, YANG Z B, BI D Y, et al. New method for fast image dehazing[J]. Journal of Computer Applications, 2012, 32(6): 1567-1569.) |
[9] | 杨燕, 王帆, 白海平. 基于相对透射率估计的快速图像去雾算法[J]. 计算机应用, 2016, 36(3): 806-810. (YANG Y, WANG F, BAI H P. Fast image dehazing algorithm based on relative transmittance estimation[J]. Journal of Computer Applications, 2016, 36(3): 806-810. DOI:10.11772/j.issn.1001-9081.2016.03.806) |
[10] | 王雅婷, 冯子亮. 基于暗原色先验的单幅图像快速去雾算法[J]. 计算机应用, 2016, 36(12): 3406-3410. (WANG Y T, FENG Z L. Single image fast dehazing method based on dark channel prior[J]. Journal of Computer Applications, 2016, 36(12): 3406-3410. DOI:10.11772/j.issn.1001-9081.2016.12.3406) |
[11] | 孙抗, 汪渤, 周志强, 等. 基于双边滤波的实时图像去雾技术研究[J]. 北京理工大学学报, 2011, 31(7): 810-813. (SUN K, WANG B, ZHOU Z Q, et al. Realtime image haze removal using bilateral filter[J]. Transactions of Beijing Institute of Technology, 2011, 31(7): 810-813.) |
[12] | HE K, SUN J, TANG X. Guided image filtering[J]. IEEE Trans-actions on Software Engineering, 2013, 35(6): 1397-1409. |
[13] | 孙小明, 孙俊喜, 赵立荣, 等. 暗原色先验单幅图像去雾改进算法[J]. 中国图象图形学报, 2014, 19(3): 381-385. (SUN X M, SUN J X, ZHAO L R, et al. Improved algorithm for single iamge haze removing using dark channel prior[J]. Journal of Image and Graphics, 2014, 19(3): 381-385.) |
[14] | NARASIMHAN S G, NAYAR S K. Vision and the atmosphere[J]. International Journal of Computer Vision, 2002, 48(3): 233-254. DOI:10.1023/A:1016328200723 |
[15] | NARASIMHAN S G, NAYAR S K. Chromatic framework for vision in bad weather[C]//Proceedings of the 2000 IEEE Conference on Computer Vision and Pattern Recognition Workshops. Washington, DC:IEEE Computer Society, 2000:598-605. |
[16] | HORE A, ZIOU D. Image quality metrics:PSNR vs. SSIM[C]//Proceedings of the 2010 International Conference on Pattern Recognition. Piscataway, NJ:IEEE, 2010:2366-2369. |
[17] | HAUTIERE N, TAREL J P, AUBERT D, et al. Blind contrast enhancement assessment by gradient rationing at visible edges[J]. Image Analysis and Stereology, 2008, 27(2): 87-95. |