杨 斌,林志贤,郭太良
(福州大学 物理与信息工程学院,福建 福州 350100)
在雾霾天气情况下,视觉系统获取的图像会受到雾霾颗粒对可见光散射作用的影响,出现对比度小、细节模糊等退化现象,影响视觉系统正常工作。因此复原雾天图像具有重大的必要性。目前,图像的去雾算法主要有两个分支:基于图像增强和基于图像复原[1-2]。其中基于图像增强去雾的本质是进行图像对比度的增强,但该类方法可能会损失图像信息,导致图像失真,其中以Retinex算法为代表[3-4]。而基于图像复原的去雾方法,本质是构建雾天图像的物理模型,反推雾天图像退化过程来复原清晰图像。这种方法复原的图像色彩自然真实,不易出现图像信息损失。
2008年,TAN R T[5]基于清晰图像比有雾降质图像具有更高的对比度这一前提,通过最大化图像的局部对比度来获得清晰图像,但该方法容易造成色彩过于饱和且容易失真的问题。KIM J H[6]等人提出了构建包括对比度和信息丢失的成本函数,通过求解成本函数最小值来获得每个区域块最佳的传输率值,再结合雾天降质物理模型复原图像,该算法所复原的图像对比度高,信息损失小。2009 年,HE K M等[7]使用暗原色先验算法来实现去雾,在大多数情况下得到的复原后图像颜色自然真实、清晰度高。但是在一些暗原色先验规律失效的区域,比如天空等明亮区域,会产生严重的色调偏移,同时HE K M为了解决边缘halo效应,采用了时间复杂度较高的soft matting算法来细化介质透射率,导致算法计算量较大,不具实时性。为此,HE K M等[8]又提出Guided Image Filtering算法来替代soft matting算法,降低时间复杂度,提高算法效率,但图像去雾能力会有所减弱。
雾天图像的退化过程可以用大气散射模型[9]描述,即:
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中x为空间坐标,I(x)表示有雾图像,A为全局大气光值,J(x)表示复原后的清晰无雾图像,t(x)为透射率。仅有I(x)一个已知量,要求取J(x),这是一个病态方程,为此要先求取大气光值A以及透射率t(x)。
为了求取透射率t(x),利用文献[7]提出的暗原色先验,即:在无雾清晰图像中绝大部分非天空局部区域至少有一个颜色通道的亮度值很低并趋近于0。换言之,对于图像J,有:
(2)
其中Jc(y)表示图像J的一个颜色通道,Ω(x)为以x为中心的方形区域,Jdark称为图像J的暗原色。
(3)
实际情况下,如果将图像中的雾霾完全去除,会导致复原图像缺少真实感与层次感,为了保持复原图像的视觉朦胧感,引入系数ω(0<ω≤1,通常取0.90~0.97)。
(4)
此外,求取大气光值A的步骤为:首先取暗原色图像中亮度值为前0.1%的像素所在的位置,其次将这些
位置所对应原图像的像素取出,最后求这些像素中亮度最大值,即为大气光值A的估计值。
将算法求出的透射率图和大气光值代入式(1)恢复出无雾图像J(x),即:
(5)
暗原色先验在天空等明亮区域的局限性会导致复原含有大面积天空区域图像时出现颜色失真,同时大气光值的求取会受到白色高亮物体干扰。本文在文献[7]算法的框架基础上,针对这两点缺陷提出相应的优化算法。
2.1.1天空等明亮区域色彩失真的原因
在不使用暗原色先验假设结论的前提下,透射率的精确表达式为:
(6)
在天空等接近大气光值的明亮区域,暗原色先验的失效使该区域的暗原色值并不为0,因此原算法所得透射率小于该区域实际的透射率。
定义[10]:
Δc=Ic-Ac,c∈{r,g,b}
(7)
由于通常在明亮区域大体偏白色,三个通道亮度值与大气光值差异不大,因此有
Δr≈Δg≈Δb
(8)
又由式(5)可知,极小的Δr,Δg,Δb的值(即(I(x)-A)的值)除以明亮区域偏小的透射率t会导致复原图像强度值J急速放大,最终使得计算结果和原图的色彩有较大的偏差,产生严重色偏,如图1所示。因此需要对文献[7]算法的明亮区域的透射率进行动态调整。
图1 文献[7]算法与本文算法透射率图及去雾效果比较
2.1.2结合像素亮度与饱和度差值的透射率调整算法
文献[11]提出了颜色衰减先验:
d(x)∝c(x)∝vs(x)
(9)
其中d(x)为景深,c(x)为雾霾浓度,vs(x)为像素亮度与饱和度的差值。
由式(9)可以看出vs(x)的值与景深成正比,也就是说天空区域的像素亮度与饱和度的差值大于其他区域,而在原始透射率图中天空等明亮区域的透射率估计值是偏小的。
基于此,本文提出结合像素亮度与饱和度差值图像的透射率修正算法,其修正公式为:
(10)
其中Iv为图像亮度图,Is为饱和度图。
算法采用亮度-饱和度差值图像中明亮区域的归一化值代替原始透射率图中相应位置的透射率值,从而达到该区域透射率修正放大的目的。首先,这种方法避免了对天空进行识别分割的繁琐操作,降低了算法的复杂度;其次,这种方法不仅提升放大了天空等明亮区域的透射率,而且还没有影响其他区域的透射率值,最大程度提升图像整体的去雾效果。
观察图1(c)可以看出,本文算法较好地调整了天空等明亮区域的透射率,解决了该区域因为透射率估值偏小所带来的色彩失真问题,如图1(e)所示。
HE K M等在文献[7]中估计大气光值的方法很大程度上会受到白色物体的影响,从而产生较大的误差。
因此本文采用一种改进的基于晕光算子的大气光值求解算法。算法具体过程如下:
(1)采用文献[12]提出的晕光算子,其表达式如下:
(11)
其中:
在像素值相差较大的两片区域的边界处,R1值会较小,而R2值较大,使得Halation(x)的值较小,而在像素值相差较小的区域内,R1与R2的值相差较小,使得Halation(x)的值较大。因此晕光算子可以较好地检测出像素值差别较大的边界,尤其是与周围像素值差别较大的白色区域。
(2)检测出白色区域后通过对晕光算子图进行腐蚀运算,消除白色物体的干扰。
(3)再对其结果进行二值化处理,得到最终的大气光求值区域。在总结大量实验结果的基础上,晕光算子二值化阈值可由公式(12)求得:
Hthreshold=0.75×max(Halation(x))
(12)
(4)取大气光值求值区域所对应的暗原色图中亮度值为前0.1%的像素的位置,将这些位置对应的有雾图像的像素的亮度值求取均值即为最终的大气光值:
(13)
其中:A(x)为最终的大气光值求值区域,n为A(x) 内的像素个数,I(y)为输入图像。
图2白色方框内的黑点区域为文献[7]算法与本文算法的大气光值求值区域比较。从图2(a)可以看出,文献[7]算法错误地将白色天鹅区域与火车车灯当作大气光值求值区域,导致大气光值求解误差较大。而由图2(b)可以看出本文算法有效地去除了白色物体的干扰,确定出雾浓度最高的区域,从而提高估计大气光值的准确度。
图2 文献[7]算法与本文算法大气光值求值区域的比较
为了客观全面地评测本文算法复原图像的质量,检验本文算法的有效性与可靠性,将本文算法与文献[7]算法、文献[11]算法进行对比实验,实验结果如图3所示。三种不同算法均采用引导滤波细化粗略透射率,引导滤波的滤波器窗口r为40,调节系数ε取0.001。有雾图像素材均来自互联网。文献[11]的算法中β值取1,其他参数取默认值
从图3、图4以及图5的实验结果可以看出,文献[7]的暗原色先验结合引导滤波算法在非明亮区域取得良好的去雾效果,但是在图像天空等明亮区域产生了严重的颜色失真。而文献[11]算法对于图像的去雾较差,在天空区域存在略微的偏色现象,其去雾效果受到β取值的影响,如果β值取得大一些,可以提升其去雾效果,但是也极其容易导致天空区域出现色彩失真。而本文算法的复原图像整体视觉效果较好,非天空等明亮区域去雾彻底,明亮区域无色彩失真,同时本文算法没有引入其他参数,大大提高了本文算法的自动化程度。
图3 三种不同算法效果比较
图4 三种不同算法效果比较
图5 三种不同算法效果比较
为了进一步客观评价各个算法复原图像的质量,本文采用了文献[13]的色调还原度(C)、有效细节强度(V)、结构信息(S)三个方面来评测文献[7]算法、文献[11]算法与本文算法的优劣。有关三个指标的具体定义见文献[13],其综合评价指标Q为:
Q=Cα×Vβ×Sγ
(14)
本文取α=β=γ=1。其中色调还原度C越大说明表明算法色彩还原越真实;有效细节强度V越大表明复原图像细节更加细腻,去雾效果越好;结构信息S越大表明算法保持原图像结构信息的能力越强,复原图像失真越小。综合评价指标Q越大则说明复原图像质量越好。实验数据如表1所示。
由表1的数据统计可以看出,本文算法相比于文献[7]的算法,色调还原度平均值、有效细节强度平均值、结构信息平均值分别提升150.82%、39.9%、15.19%,综合评价指标平均值提升313.719%。在运行时间上,由于本文算法在透射率修正以及大气光值求取步骤上的改进导致运行时间略大于文献[7]的算法。
表1 图3、图4及图5各项指标的比较
而本文算法相比于文献[11]算法,色调还原度平均值、有效细节强度平均值、结构信息平均值分别提升54.27%、14.45%、9.23%,综合评价指标平均值提升95.55%,说明本文算法在解决色彩失真方面、保持图像结构信息以及复原图像质量优于文献[11]的算法,同时本文算法的运行时间远远小于文献[11]的算法。
综上所述,相比于文献[7]算法,本文算法在牺牲较小的运行时间的代价,大大提升了复原图像的质量,而相比于文献[11]算法,本文算法不仅大大提升了运行速度,而且也一定程度提升了复原图像的质量。
本文提出一种改进的基于暗原色图像去雾改进算法。首先将归一化的亮度-饱和度差值图像与粗略透射率逐一比较取最大值作为新的透射率,以此动态修正原始透射率;其次采用晕光算子排除白色等明亮区域,以获得正确的大气光值;最后将改进后的透射率图以及大气光值用于结合暗原色先验以及引导滤波优化的去雾框架中。实验结果表明本文算法保持图像结构信息能力以及复原图像质量较高,有效地解决了天空等明亮区域的色彩失真问题,并且算法的复杂度与文献[7]算法相近且远小于文献[11]算法。
[1] OAKLY J R, SATHERLEY B L. Improving image quality in poor visibility conditions using a physical model for contrast degradation[J]. IEEE Transactions on Image Processing,1998,7(2): 167-179.
[2] 禹晶,徐东彬,廖庆敏.图像去雾技术研究进展[J].中国图象图形学报,2011,16(9):1561-1576.
[3] JOBSON D J, RAHMAN Z, WOODELL G A.Properties and performance of a center/surround retinex[J].IEEE Transactions on Image Processing,1997,6(3):451-462.
[4] 马时平,张明,毕笃彦,等.一种细节保持的Retinex图像增强算法[J].西安电子科技大学学报(自然科学版),2010,37(3): 541-546.
[5] 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.Piscataway, NJ: IEEE, 2008: 1-8.
[6] KIM J H, JANG W D, SIM J Y, et al. Optimized contrast enhancement for real-time image and video dehazing[J]. Journal of Visual Communication & Image Representation, 2013, 24(3):410-425.
[7] HE K M, SUN J, TANG X O.Single image haze removal using dark channel prior[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011,33(12): 2341-2353.
[8] HE K M, SUN J, TANG X O.Guided image filtering [J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2013,35(6): 1397-1409.
[9] NARASIMHAN S G, NAYAR S K.Contrast restoration of weather degraded images[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2003,25(6): 713-724.
[10] 蒋建国,侯天峰,齐美彬,等.改进的基于暗原色先验的图像去雾[J].电路与系统学报,2011,16(2):155-160.
[11] Zhu Qinsong, Mai Jiaming, Shao Ling. A fast single image haze removal algorithm using color attenuation prior[J]. IEEE Transactions on Image Processing, 2015, 24(11):3522-3533.
[12] 刘冬冬,陈莹.基于暗原色先验的区域自适应图像去雾方法[J].计算机工程与应用,2016,52(7):166-170.
[13] 李大鹏,禹晶,肖创柏.图像去雾算的无参考客观质量评测方法[J].中国图象图形学报,2011,16(9):1753-1757.