在无人艇自主执行任务时, 必须要求其视觉系统能够广泛适用于海上各种恶劣环境, 特别是海雾天气环境下. 在海雾下, 由于雾气粒子的散射、吸收等作用会造成景物反射光的衰减, 此外, 太阳光还会经雾气粒子的散射直接进入成像系统, 会造成海雾下无人艇视觉成像系统采集的视频图像严重降质或模糊, 影响后续目标跟踪和识别等任务的实现. 而且近年来, 常常出现因为海雾等恶劣天气, 导致耽误船只运行, 甚至是船只相撞等海难. 因此, 研究图像海雾的去除具有很重要的现实意义.
近年来, 图像去雾技术主要包含两大类: 一类是基于非物理模型的图像增强去雾方法, 这种方法不考虑图像降质的原因, 以常规的图像增强的方法作为基本的处理手段, 提高雾天图像的对比度, 典型的代表有: 直方图均衡化[1,2]、对比度增强[3]、基于Retinex理论的图像增强算法[4,5]等. 这类方法往往会造成信息损失或过增强现象. 另一类是基于物理模型的图像复原去雾方法, 这种方法以雾天降质图像的物理模型为基础, 利用退化的先验知识来复原真实场景. 这类方法去雾效果自然, 失真小. 但实际上该类方法实现比较复杂, 需要借助雷达等仪器对图像中景物的深度信息进行测量, 并且参数比较多, 去雾过程相对繁琐, 这就给图像去雾技术带来了一项巨大的挑战.
2009年He等[6,7]提出的暗通道理论对自然图像取得了较好的处理效果, 成为了图像复原去雾方法的一个重要研究方向. 但是由于暗通道先验在天空区域会失效, 会产生过渡区域和偏色现象, 因此涌现了一些改进的方法[8,9]. 这些改进算法大都是通过弱化对天空区域的处理来达到改善天空区域的效果, 但是这样的弱化势必会导致和天空连接处的区域也被弱化, 但对于海天背景图像, 当无人艇远距离观察时, 目标恰巧处于海天交界区域处, 因此对于He的改进算法并不适用于海天背景图像去雾.
针对上述问题, 文中提出了一种基于大气散射模型的图像复原去雾算法, 目的在于对天空取得较好处理效果的同时不弱化海天交界处即目标的潜在区域. 首先, 利用海天背景图像的特点将图像划分为天空和非天空区域, 取天空区域最大的值作为大气光的估计值; 其次, 设计代价函数并用超像素进行分块, 令函数取得最小值的透射率即为每一个小块粗估计的透射率值, 再使用引导滤波对透射率进行细化; 最后, 利用大气散射模型对图像进行复原.
1 经典大气散射物理模型大气散射模型[10]描述了雾化图像的退化过程, 可用公式表达为:
$I\left( x \right) = J\left( x \right)t\left( x \right) + A\left( {1 - t\left( x \right)} \right)$ | (1) |
其中, x为图像像素的空间坐标; I(x)是观测到的有雾图像; J(x)为待恢复的无雾图像; A表示全局大气光照强度; t(x)表示介质在图像位置x处的透射率, 用来描述光线通过介质透射到成像设备过程中没有被散射的部分.
图像去雾的主要任务就是从有雾图像I(x)中估计出全局大气光A和透射率t(x), 从而恢复出无雾图像J(x):
$J\left( x \right) = A - \frac{{A - I\left( x \right)}}{{t\left( x \right)}}$ | (2) |
首先, 利用海天背景图像的特点使用Canny算子对天空区域进行分割, 将图像划分为天空和非天空区域, 并根据大气光的物理意义取天空区域最大的值作为大气光的估计值; 其次, 利用无雾图像对比度较高这一事实, 构建了一种衡量图像对比度和信息损失量的代价函数, 并利用超像素分割获得景深和雾浓度相近的小区域, 在每个区域内通过求解代价函数的最小值, 估计出每个区域的粗透射率, 再用引导滤波对其进行细化.
2.1 改进的全局大气光A的估计从全局大气光的物理意义出发, 场景点中全局大气光A对应于图像中天空或雾气最浓的明亮区域. 因此首先利用天空区域的特点对天空进行分割, 然后取天空区域最亮的点作为A的估计. 这样可以使A落到与其物理意义相符的背景区域, 避免将前景区域的白色或高亮物体误选为A.
2.1.1 天空区域分割无人艇在远距离平视时采集的海面图像中必存在天空区域且天空区域一定位于图像上方. 为了将天空区域分割出来, 通过对海面图像分析发现天空区域具有灰度较平坦、面积较大、亮度较高等特点. 针对以上特点, 本文采用一种边缘检测方法对图像进行分割. 如图1所示, 分割方法如下:
(1)将彩色图像转换为灰度图像, 因为中值滤波能保持边缘的细节, 因此采用中值滤波对图像进行预处理, 滤除图像中的噪声, 便于进行边缘提取, 如图1中(b)所示.
(2)由于天空灰度较平坦, 利用Canny边缘检测算子获得灰度图像的边缘信息, 如图1中(c)所示, 并进行膨胀和腐蚀等数学形态学操作获得二值图像, 如(d)所示.
(3)对二值图像取反并进行区域标记, 如(e)所示, 利用天空区域必在图像上方的先验知识只保留第一部分区域, 从而得到天空区域和非天空区域, 如(f)所示.
由图1可以看出, Canny边缘检测算子分割的图像不够精细, 这是因为实际上, 天空区域与其它区域之间的界限并非十分清晰, 有些像素点难以准确的判断它到底处于哪个区域, 但根据先验知识我们可以得知天空区域最亮的部分被准确的分割出来, 因此分割不够精细不影响后续的操作, 也无需在此处消耗太多的时间.
2.1.2 大气光A的估计从全局大气光的物理意义出发, 全局大气光A对应于图像中天空或雾气最浓的明亮区域. 因此, 在对图像进行天空区域分割后, 取天空区域取最大的像素值点作为全局大气光A的初始估计.
$A = \max \left( {S\left( x \right)} \right)$ | (3) |
其中, x为图像像素的坐标; S(x)是分割得到的天空区域.
2.2 改进的透射率t(x)的估计在估计出全局大气光A之后, 有雾图像的恢复取决于透射率的估计值. 由于天空区域并不适用暗原色先验知识, 因此, 采用文献[11]中透射率估计方法, 该方法利用有雾图像对比度很低而无雾图像对比度较高这一先验知识设计代价函数, 通过求取每一个块中函数的最小值估计最优透射率. 由于原方法的普通分块可能会将景深突变处划分在一个小块内, 透射率估计会出现较大偏差, 因此, 本文改进算法是利用SLIC超像素分割对图像进行分块, 这样可以得到景深和雾浓度相近的小块, 生成的透射率更加精细、准确, 再用引导滤波对其进行细化, 消除块效应.
2.2.1 改进的基于代价函数的透射率粗估计首先通过SLIC超像素分割[12]将图像分割成具有相近景深和雾浓度的像素块, 在这一个小块内像素具有相似的纹理、颜色、亮度等特征, 因此在每个小块内不会发生景深突变. SLIC的本质是简单的线性迭代聚类, 首先初始化聚类中心, 然后为每个聚类中心的分配标签, 最后度量距离. 最终的距离度量公式如下:
${D'} = \sqrt {{{\left( {\frac{{{d_c}}}{m}} \right)}^2} + {{\left( {\frac{{{d_s}}}{S}} \right)}^2}} $ | (4) |
其中, D'是最终距离, dc代表颜色距离, ds代表空间距离, S是类间最大空间距离, m是常数, 取值范围为[1, 40]. 对以上步骤迭代优化, 完成对图像的自适应分块, 能够有效避免估计透射率时由于分块划分不够准确而出现的光晕效应. 超像素分割的效果如图2中(a)所示.
接下来通过构造评价函数[11], 求得每一个小块内函数的最小值来估计透射率. 通常有雾图像的对比度较低, 因此提高对比度可以起到一定的去雾效果. 但对比度得到增强的同时, 可能会导致部分像素的调整值偏差过大, 这样就会造成图像细节的损失以及视觉上的瑕疵. 通过设置一个关于对比度和细节信息损失的代价函数, 可以在尽可能减少信息损失的同时, 最大限度地提高对比度, 实现图像去雾. 对于有雾图像, 其整体的对比度比较低, 因此去雾后的对比度要尽量的高, 定义对比度评价函数Econtrast为图像块三个颜色通道对比度的均方误差和的相反数, 表达式如下:
${E_{\rm{contrast}}} = -\!\!\!\!\!\! \sum\limits_{c \in r,g,b} {\sum\limits_{p \in B} {\frac{{{{\left( {{J_c}\left( p \right) - {{\mathop J\limits^ - }_c}} \right)}^2}}}{{{N_b}}}} } = -\!\!\!\!\!\! \sum\limits_{c \in r,g,b} {\sum\limits_{p \in B} {\frac{{{{\left( {{I_c}\left( p \right) - \mathop {{I_c}}\limits^ - } \right)}^2}}}{{{t^2}{N_b}}}} } $ | (5) |
其中,
定义信息丢失评价函数Eloss为图像块B内丢失像素值的平方和:
${E_{\rm{loss}}} = \sum {\sum {\left\{ {{{\left( {\min \left\{ {0,{J_c}\left( p \right)} \right\}} \right)}^2} + {{\left( {\max \left\{ {0,{J_c}\left( p \right) - 255} \right\}} \right)}^2}} \right\}} } $ | (6) |
最终, 将两个评价函数相加得到需要的代价函数:
$E = {E_{\rm{contrast}}} + \lambda {E_{\rm{loss}}}$ | (7) |
其中, λ是用来调节信息丢失和对比度的参数.
根据代价函数, 找出使E值最小的透射率t即为每一个小块的最优透射率.
${t^ * }\!\!\! =\!\!\! \max \!\!\left\{ {\mathop {\min }\limits_{c \in \left\{ {r,g,b} \right\}} \mathop {\min }\limits_{p \in B} \!\!\left\{ {\frac{{{I_c}\left( p \right) - {A_c}}}{{ - {A_c}}}} \right\},\!\!\!\mathop {\max }\limits_{c \in \left\{ {r,g,b} \right\}} \mathop {\max }\limits_{p \in B} \left\{ {\frac{{{I_c}\left( p \right) - {A_c}}}{{255 - {A_c}}}} \!\!\right\}} \!\!\right\}$ | (8) |
透射率的粗估计结果如图2中(b)所示.
2.2.2 基于引导滤波的透射率细化由于上述2.2.1节透射率的粗估计是假定每一个小块的透射率是不变的, 估计出的结果存在块效应, 此有必要对其进行细化处理.
采用文献[7]的引导滤波可以快速得到精细化的t(x). 引导滤波假设滤波输出和引导图是线性相关即:
${q_i} = {a_k}{I_i} + {b_k},\forall i \in {\omega _k}$ | (9) |
其中, wk是引导图Ii中以像素k为中心的邻域; (ak,bk)在邻域wk中为常数, 引导滤波通过待滤波图像Pi和输出图像qi之间的差异来寻求最优化的系数(ak,bk), 使得输出图像q与输入图像p的均方误差最小, 得到输出图像. 经过引导滤波后得到的细化的透射率如图2(c)所示.
由图2可以看出, 得到的最终透射率图质量较好, 较为精细.
3 实验与分析将求得的A和t(x)代入第1节的公式(2)中就可以得到复原后的去雾图像. 为了评价算法的性能, 选取三张典型海天背景的有雾图像, 按薄雾到浓雾分别进行仿真实验, 并将本文算法与去雾领域的经典算法He算法[7]以及He的改进算法[8]进行比较, 实验结果如图3所示.
本文仿真实验的硬件条件为: 64位Windows 10操作系统的计算机, 处理器为Intel Core i5-7200U, 主频为2.5 GHz CPU, 内存为8 GB. 软件条件: Matlab 2016a.
为了客观地评价算法的去雾效果, 本文分别从信息熵Entropy、均方误差MSE、结构相似度SSIM以及运行时间等评价指标进行图像质量的定量分析, 各评价指标数据如表1所示.
其中, 信息熵表示图像所含的平均信息量, 熵的值越大代表图像的信息量越大, 细节越丰富. 均方误差是反映图像处理前后有效信息保持能力的量度, 其值越小说明处理后图像的信息保持能力越强. 结构相似度度量复原图像与原图像的相似程度, SSIM值越大表示两幅图像相似度越好.
由表1可以看出, 在均方误差指标数据上, He的算法一直是最好的, 但是在薄雾和中雾情况下, 在信息熵和结构相似度上, 本文算法高于其它两个算法. 在算法效率上, 本文算法略高于He的算法, 处理速度较快.
实验结果表明, 在非浓雾情况下本文算法优于其它算法. 本文算法既能对天空取得较好处理效果同时又有较好的细节保留能力, 而且算法效率较高. 对于浓雾的处理本文算法虽然不如He的算法, 但是依旧优于He的改进算法.
4 结论与展望针对现有图像去雾算法对海天背景图像不太友好, 本文提出了一种改进的基于大气散射模型的图像复原去雾方法, 可以在对天空取得较好的视觉效果的同时保留较多的细节信息, 实验证明本文算法能对非浓雾的情况取得较好的处理效果. 算法效率虽然较其它算法有所提高, 但是用在视频处理中仍难以满足实时性, 下一步的工作是进一步提高算法效率, 以满足视频图像的处理需求.
[1] |
Wong CY, Jiang GN, Rahman MA, et al. Histogram equalization and optimal profile compression based approach for colour image enhancement. Journal of Visual Communication and Image Representation, 2016, 38: 802-813. DOI:10.1016/j.jvcir.2016.04.019 |
[2] |
Li Y, Zhang YF, Geng AH, et al. Infrared image enhancement based on atmospheric scattering model and histogram equalization. Optics & Laser Technology, 2016, 83: 99-107. |
[3] |
Gao YY, Hu HM, Wang SH, et al. A fast image dehazing algorithm based on negative correction. Signal Processing, 2014, 103: 380-398. DOI:10.1016/j.sigpro.2014.02.016 |
[4] |
Biswas B, Roy P, Choudhuri R, et al. Microscopic image contrast and brightness enhancement using multi-scale retinex and cuckoo search algorithm. Procedia Computer Science, 2015, 70: 348-354. DOI:10.1016/j.procs.2015.10.031 |
[5] |
Lin HN, Shi ZW. Multi-scale retinex improvement for nighttime image enhancement. Optik-International Journal for Light and Electron Optics, 2014, 125(24): 7143-7148. DOI:10.1016/j.ijleo.2014.07.118 |
[6] |
He KM, Sun J, Tang XO. Single image haze removal using dark channel prior. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(12): 2341-2353. DOI:10.1109/TPAMI.2010.168 |
[7] |
He KM, Sun J, Tang XO. Guided image filtering. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(6): 1397-1409. DOI:10.1109/TPAMI.2012.213 |
[8] |
陈书贞, 任占广, 练秋生. 基于改进暗通道和导向滤波的单幅图像去雾算法. 自动化学报, 2016, 42(3): 455-465. |
[9] |
张冰冰, 戴声奎, 孙万源. 基于暗原色先验模型的快速去雾算法. 中国图象图形学报, 2013, 18(2): 184-188. |
[10] |
McCartney EJ. Optics of the atmosphere: Scattering by molecules and particles. Journal of Modern Optics, 1977, 14(7): 521-521. |
[11] |
Kim JH, Jang WD, Sim JY, et al. Optimized contrast enhancement for real-time image and video dehazing. Journal of Visual Communication and Image Representation, 2013, 24(3): 410-425. DOI:10.1016/j.jvcir.2013.02.004 |
[12] |
Achanta R, Shaji A, Smith K, et al. SLIC superpixels compared to state-of-the-art superpixel methods. IEEE Transactions on Pattern analysis and Machine Intelligence, 2012, 34(11): 2274-2282. DOI:10.1109/TPAMI.2012.120 |