APP下载

基于二进制掩码的单幅图像天空区域识别去雾算法

2024-03-08史佳霖刘鹏张天翼毕誉轩王彩霞

关键词:透射率先验亮度

史佳霖,刘鹏,张天翼,毕誉轩,王彩霞

(长春理工大学 电子信息工程学院,长春 130022)

随着社会发展和城市化进程的快速推进,城市雾霾日益普遍。在数据处理方面,雾霾影响计算机视觉系统的数据采集。在雾霾天气下,由于光线散射和光线吸收的影响,图像的对比度和饱和度较低,色彩失真严重,导致采集到的图像质量下降。因此,开发一种简单、高效的图像去雾方法成为当务之急,这对计算机视觉领域的未来研究具有重要意义。

当前,图像去雾方法主要可以分为两种类型:基于增强的方法和基于复原的方法。其中,基于增强的方法是使用图像处理算法对原始图像进行去雾处理,以图像本身为基础进行除雾;而基于复原的方法则是基于物理模型进行去雾,通过对原始数据进行解析来还原真实图像。

图像去雾是一种通过应用图像增强算法来消除图像受雾气影响而产生的降质效应的方法。该方法不是针对雾气本身进行研究,而是利用图像处理算法来增强图像的清晰度和对比度以去除雾气的影响。通常,图像增强算法可以分为两类:全局增强和局部增强。

全局增强算法包括直方图均衡化、小波分析和Retinex 算法[1]等,这些方法广泛应用于各种场景,包括嵌入式系统中[2]。局部增强算法则包括局部直方图均衡化、局部对比度增强和局部方差增强等方法,它们针对图像中特定局域的区域进行增强,可以得到更加优良的效果。

图像复原是一种利用大气散射物理模型的去雾技术,该技术利用降质模型对雾天下的图像进行建模,并采用参数估计方法实现图像的恢复。目前已有多种基于不同原理的图像复原方法,包括基于偏微分方程[3]、基于深度关系[4]和基于先验信息的图像复原方法。

根据大气散射模型[5],要想还原出一个清晰的真实景象,就必须先计算出对应景象的整体大气亮度和透射分布。基于暗通道先验的去雾算法是目前一种简单有效的估算全局大气光和透过率的方法。但是,暗通道先验算法在处理室外图像的天空区域时存在不适用的问题,可能导致在大气散射场景中,去雾算法中的透射率和大气光照估计不准确,进而引发颜色失真和偏移等现象[6],同时还可能导致去雾图像整体亮度偏暗。因此,文章提出了一种基于二进制掩模的改进天空区域识别,改善了基本的暗通道先验算法的两个问题:一是针对原始算法滤波器易产生块状现象和光晕效应的问题,提出一种随着图像大小变化而调整窗口大小的滤波器来解决问题;二是针对已有的天区提取算法在处理含天区影像时失效的缺陷,研究基于天区影像的天区自动辨识算法,并根据辨识的结果对整体大气亮度及透射率的下界进行修正。

1 基于二值掩码的天空区域识别单幅图像去雾算法

1.1 大气散射模型

1975 年,Mccarthney 等人[7]提出了一个适合于图像去雾处理的空气散射模型,该模型能较好地描述图像去雾的过程。根据大气光在雾天退化过程中传输的物理特性可以用以下公式表示为[6-7]:

其中,I(x)表示有雾图像;J(x)表示去雾后的图像;场景辐射中大气传输过程中的透射率用t(x) 表示;目标辐射信息的直接衰减用J(x)t(x)表示,它反映了目标电磁波信息通过传输介质后到达传感器的能量;A表示大气光,大气光经过衰减后到达传感器的能量用A(1 -t(x)) 表示。假设空气是均匀的,而电磁波是均匀传播的,透射率t表示为[7]:

其中,t≤1;β是大气散射系数;d(x)是场景深度。上式表明场景的辐射值随距离呈指数衰减[8]。

1.2 暗通道先验

暗通道先验[6]是通过对多幅室外无雾图像的研究总结而来的规律。在这种无雾的户外影像中,大多数非天空区域的像素至少有一个色彩通道的值偏低,近似于零,而该区域的像素亮度值偏低。对于任意图像J,暗原色通道通过下式描述[7]:

其中,Jdark表示暗通道;Jc是J的颜色通道;Ω 表示以一个像素为中心的窗口。该式包含了提取R、G、B三个通道最小值与最小值滤波处理两层计算,实验观察表明,对于绝大多数户外无雾的自然场景图像J,除去天空区域以外,Jdark非常低且接近于0 值:Jdark→0。利用暗通道先验,由大雾背景下的原始影像,可以得到估计透射图和天空亮度值A[9]。

1.3 透射率估计

根据文献[6]中暗原色先验理论得到:

将式(4)代入式(1)得到透射率t的预估值:

事实上,即便是晴朗无云的天气,也会有极小的颗粒物,所以当看到远方的东西时,还是会感觉到迷雾的影响。同时,雾还可以赋予图片景深,使其更具真实感。所以,除雾时,有必要保持一定的雾。这可以通过在式(5)中引入一个在[0,1]之间的因子ω,则式(5)修正为[7]:

式中,ω代表了雾的保留度,目的是使估计值接近于自然,这是因为即使在大气非常纯净的情况下,大气中仍然包含有水气等成分。

1.4 大气光值估计

大气光值A可以借助暗通道图从原始雾图中求取。先提取暗通道图像中前0.1%最亮的像素,即透射率最小的点。然后在原始图像I(y)对应的位置上找出最高亮度的点,提取这些点的所有通道中最大的值作为大气光值A的近似。最后,估计出了透射率t(x)和大气光值A,就可以利用有雾图像模型来恢复图像:

透射率t(x)接近零时,由公式(1)可知J(x)t(x)接近零,容易引入噪声。因此设置一个透射率下界t0,一般取0.1。

1.5 算法流程

在暗通道先验算法中,考虑到真实场景中可能存在不符合暗通道规律的像素,例如图像中的高亮建筑物或天空区域,这些像素的实际透射率如下:

因此,异常区域的实际透射率略高,而原算法估计的透射率较低,这使得在复原的过程中,色彩会发生很大的失真,从而影响到图像的视觉效果。

针对在天空域中由于先验信息错误而造成的色彩失真,文章中提出了一种基于天空区域识别的改进算法。该算法的流程如下:首先利用区域窗口自适应最小化滤波器获得暗通图像。然后实现对天空区域的自动识别,并在此基础上对天空区域进行透射率和大气光值的设定[10]。接着,通过引导滤波器对粗透射率图进行了细化。最后,利用大气散射模型对原始图像进行复原。文章中采用Matlab2019b 平台对雾天图像进行处理[11]。

1.6 自适应滤波窗口获取暗通道图

在由He 等人[13]提出的暗通道先验去雾算法中(简称He 方法),对于任何输入的雾天图像,采用固定窗口大小SZ(x)对RGB 三通道最小图像进行滤波。这种方法缺乏灵活性,且出现小黑区现象,降低了后续计算透射率和大气光值的准确性。另外,在实际应用中处理的图像大小也不均匀。为了根据图像自身大小调整滤波尺寸模板,采用自适应滤波窗口对不同大小的输入图像的RGB 三通道组成的最小图像进行滤波,自适应获得大雾天气下不同尺寸模糊图像的暗通道图。暗通道实际上是取三个RGB 通道的最小值形成灰度图像,再进行最小值滤波[14]得到的。计算公式如下:

假设输入的雾天图像大小为M×N,这里设定的滤波窗口大小计算公式如下:

其中,α为调整参数[15],其经验值为0.010;M表示图像长度;N表示图像宽度。floor 将最终结果取整,它等同于计算窗口大小,这里参考了窗口。

图1 展示了使用15×15 固定尺寸窗口和自适应窗口,利用公式(3)对RGB 三通道最小图像最小化处理得到的暗通道图像。图1(b)是滤波窗口大小为15×15 的暗通道图像,而图1(c)则显示了改进后的自适应滤波窗口模板。很明显,通过优化后的自适应窗口滤波模板可以获得更清晰的暗通道图像,并且大大地改善了原始图像中较大的块状像素映射,场景中的信息也更加详细。

图1 自适应窗口的最小滤波获得暗通道图像的比较

1.7 天空区域识别及大气光值计算

天空区域的三个颜色通道的亮度都很高,这与之前所使用的暗通道不符,透光率过低会导致雾后天空区域的颜色失真,因此需要调整天空区域的透光率以保证图像恢复的准确性。在正常拍摄条件下,天空一般位于图像的上半部分,具有较高的亮度特征。文章中利用连通性和高亮度这两个特征来判断雾图像[16]中的可疑天空区域。

通常天区具有很高的亮度值,所以可以设置一个亮度值门限Ti= 0.90Lmax(Lmax为最亮像素的灰度级),以便在影像中识别出所有亮度值的像素点。然后对各像素的亮度值与亮度门限进行比较,得到对应的二进制掩模图M[17]。具体的步骤为:遍历雾图像中与灰度图相对应的每个像素点X,如果像素的灰度值大于等于Ti,则将M(X)设为1,否则设为0。图2 展示了几种常见包含天空区域的图片处理的结果。结果表明,经过亮度阈值筛选后,二值图像中可疑天空像素以白色[18]表示。

图2 基于图像亮度和连通性的可疑天空像素识别

基于图像分割的算法,从值为1 的所有连接区域中消除位于图像下部的连接部分。接下来,设置阈值Tn(代表包含在连接区中的像素数目)。

在一个二进制掩码图中,用一个迭代数值1来遍历全部连接的部分。若当前连接区的像素数少于Tn时,将该区像素值设定为0,判断该区为非天空区域。反之,则应将其视为可疑的天空区域。在经过上述处理的二进制掩码图中,像素值为1 的连通区域被识别为可疑天空区域,而像素值为0 的连通区域被识别为非天空区域。本文采用自适应滤波窗和图像亮度分割方法对天空区域和非天空区域进行分割。图3 显示了将该方法与暗通道算法对典型大雾天气下的天空探测的比较结果。其中,二值图像中的白色区域代表了天空区域。与暗通道图像比较,文章中所提出的图像辨识方法,其辨识结果与原影像的边界相当。而暗通道图像并没有很好地保留天空区域,导致识别结果与原始图像存在较大的偏差。

图3 利用亮度和暗通道连通性进行天空探测的比较

2 除雾效果对比实验分析

2.1 主观去雾效果

文章中选择了三种常用的高分辨率雾图作为实验对象。如图4 所示,将Tarel 算法、He 算法以及它们的改进算法与文章中的算法进行比较。

图4 不同除雾算法比较

可以看出,文章的算法在处理天空区域时呈现出更自然、色彩柔和且失真较小的特点,避免了He 算法的颜色过饱和问题,并改善了Tarel 算法和He 改进算法的去雾效果不足的问题。

2.2 客观评价结果

文章中利用平均梯度、信息熵和雾浓度对复原图像进行评价。平均梯度的计算公式为:

信息熵计算公式如下[19]:

雾浓度计算公式如下:

通常较高的平均梯度会使图像更清晰。随着信息熵的增大,图像的细节特征也随之增强。雾浓度越低,图像中含有的雾越少[20]。

3 分析

通过观察图4 的去雾结果可以得知,文章提出的算法与He 改进算法有较高的相似度,无论在减色程度还是在保留细节方面都取得了显著的效果[21]。综合对比分析表1、表2 和表3 中的图像质量指标,本文算法在平均梯度和雾浓度上明显减少,同时在信息熵上有较大提升。本算法对于含有天空区域的图像具有优秀的恢复效果。

表1 不同算法去雾结果的平均梯度

表2 不同算法去雾结果信息熵指数

表3 不同算法去雾结果的雾浓度指数

4 结论

基于上述数据,文章结合自适应滤波模板和二值掩码识别算法,根据图像大小和天空中像素的不同特性,如连通性、亮度、位置和概率分布,提出了一种在天空区域进行单图像去雾的方法。该算法可以自动调整透光率的下限,以适应浓雾地区较高的透光率需求,并提出了估算不同地区大气光值的方法。实验结果显示,文章提出的方法对于包含有天空的图像,有较好的恢复效果。提高了计算机视觉系统在工程应用中的实用性。

猜你喜欢

透射率先验亮度
基于无噪图像块先验的MRI低秩分解去噪算法研究
亮度调色多面手
纯色太阳镜镜片耐日光辐照性能试验研究
亮度一样吗?
基于自适应块组割先验的噪声图像超分辨率重建
基于斩波调制的LED亮度控制
人生的亮度
基于平滑先验法的被动声信号趋势项消除
先验的废话与功能的进路
石墨烯光栅太赫兹透射特性的研究