-
基于图像分层的算法基本原理是将原始图像分解成背景层图像和细节层图像,然后对背景层图像进行压缩,对细节层图像进行拉伸, 最后将压缩的背景层图像和拉伸的细节层图像重新整合成一张动态范围被压缩、细节层图像被增强的图像。
2.1.
基于双边滤波的宽动态图像增强算法
-
参考文献[4]中提出了基于双边滤波的红外图像增强(bilateral filter and dynamic range partitioning, BF&DRP)算法。该算法首先利用双边滤波将原始图像分为背景层图像和细节层图像,并对背景层图像和细节层图像分别进行Gamma曲线处理(压缩或者扩展),最后再将背景层和细节层图像重新整合得到经过细节增强的图像。图 1展示了BF&DRP算法的实现流程。下面具体介绍BF&DRP算法的实现过程。
双边滤波器是同时考虑空间邻近度和像素灰度差的非线性滤波器,对输入图像的均匀区域如天空和大海会起到平滑的作用,对强边缘如楼层就会得到保留。对输入的高动态红外图像进行双边滤波处理, 结果表示如下:
式中,下标in表示输入的原始图像,下标BF, b表示经过双边滤波处理之后得到的背景层图像,下标BF, d表示经过双线性滤波后得到的细节层图像。(m, n)∈wi, j, 表示像素点(m, n)是以(i, j)为中心像素的窗口wi, j的相邻像素,k(i, j)为归一化系数:
式中,Gs和Gr均为标准的高斯函数,定义如下:
式中,Gs代表了空间域的高斯滤波函数,Gr代表了强度域的高斯滤波函数。函数σs与σr表示两个高斯核函数的标准差参量,控制两个高斯核函数的扩张范围。
得到背景层图像和细节层图像之后就需要分别进行处理,具体而言是对背景层图像进行压缩,对细节层图像进行增强。参考文献[4]中用γ2的Gamma曲线进行压缩和扩展。用γ < 1对背景层图像进行压缩,用γ>1对细节层进行扩展。同时考虑图像的输出显示为M位,则用参量0 < p < 1对背景层和细节层的范围进行分配,p是背景层权重。若背景层的图像范围为p·2M, 则细节层图像的范围为(1-p)·2M。
BF&DRP算法的优点有:(1)可以准确设定背景层图像和细节层图像的位数;(2)图像的较大变化部分会被设置到最高位,而不会出现过饱和;(3)由于背景层被强制拉到输出动态范围的中间部分,故输出图像会有一个更加稳定的图像均值。
然而BF&DRP算法的缺点也很明显:(1)算法中的参量需要精细地调整才能得到较好的增强效果;(2)细节层图像的边缘会比原始图像的边缘更加尖锐甚至出现梯度反转,同时在平坦区域出现高亮噪声[5-6]。基于此, 参考文献[7]中提出了增强版的BF&DRP算法即基于双边滤波的宽动态细节增强(display and detail enhancement for high dynamic range infrared images based on bilateral filter, BF&DDE)算法,并在以下3个方面进行了改进。算法实现流程如图 2所示。
2.1.1.
改进1:去梯度反转
-
对背景层图像IBF, b进行高斯滤波,同时考虑到不同滤波器的不同标准差会有不同的滤波效果,适应于不同的区域,故提出了自适应的高斯滤波算法, 其目的是获得修正的基本层图像,使得基本层图像更加接近于原始图像。具体分为以下几个步骤。
(1) 计算带权重的差异:
式中,d(i, j)表示差异增益系数,E(i, j)表示权重差异性。
(2) 计算梯度:
式中,d2[]表示图像梯度。
(3) 计算方差:
式中,σ表示图像方差。
(4) 修正背景图像:
2.1.2.
改进2:背景层图像的直方图投影
-
参考文献[4]中采用的Gamma曲线,对细节层图像进行自适应增益的同时允许少量的极端像素饱和,但是这并不能确保背景层图像的直方图有一个准均匀的分布,故参考文献[7]中采用了修改过的直方图投影算法,同时细节层的信息具体包括以下几个步骤。
(1) 对原始直方图进行二值化处理:
式中,nx代表像素值为的像素数量,T代表阈值(一般为图像总像素数的0.1%)。设置阈值的目的是为了提高全局的对比度,避免一些少量的异常值影响全局的梯度分布。
(2) 计算累计分布函数:
式中,nvalid表示H(x, y)的值为1的数量,由此将输入范围为x的图像映射到了R·B(x)。其中输出图像的最大值为:R=max(nvalid, D), D为输出动态范围。
2.1.3.
改进3:细节层的自适应增益控制
-
由于细节层图像含有微小的细节信息,所以需要进行放大;但是细节层图像中包含了大量的噪声。所以如果对细节层图像直接进行放大,则噪声也会被直接放大。人体视觉系统的相关研究表明,人眼对均匀区域的噪声比在复杂区域的噪声更加敏感。基于此,参考文献[8]中首先定义了噪声掩模函数,参考文献[9]中采用了基于局部方差的噪声掩模函数如下所示:
式中,θ为可调参量,M0(i, j)表示图像的局部方差。噪声可见度函数通常会做归一化处理。从上式可以看出,当区域中的细节丰富时,噪声掩模函数取得较大值,噪声可见度函数接近于0,即噪声几乎不可见。当区域中的场景较为平坦时,噪声可见度接近于1,此时噪声近乎完全暴露。基于此, 参考文献[7]中提出通过利用图像的局部信息进行自动调整细节层增益的算法。该算法在图像细节丰富的区域进行较大倍数的放大,对较为平坦的区域进行较小的放大;同时考虑到双边滤波中的差异增益系数d(i, j)是一个能很好地反映区域细节信息的变量,可用[d(i, j)]-1作为噪声掩模函数。故得到最终的细节层自增益计算公式:
式中,gmin为图像的低增益值,gmax为图像的高增益值。为了不使细节层图像信息被抑制,gmin的选取通常为1。为了避免出现过度增强的效果,参考文献[7]中推荐gmax的选取通常为2.5。参考文献[7]中的实验结果表明,BF&DDE算法能很好地继承原始图像中不同亮度级的细节,明显提高了图像的整体对比度,增强了目标和细节信息,消除了光晕和地图反转,抑制了背景噪声。其缺点是不适合用于温度测量等场景, 同时需要指数计算,在嵌入式平台上实现困难。图 3展示了基于映射和双边滤波的部分算法实现效果。从图中可以看出,自增益控制(automatic gain control,AGC)算法的细节不够突出,直方图均衡(histogram equalization,HE)算法有较多的过增强现象,BF&DRP算法和BF&DDE比映射算法有很大的改善,BF&DDE算法在4种算法中的效果最好。
2.2.
基于引导滤波的宽动态图像增强算法
-
为了改善基于双边滤波的图像增强算法缺点,参考文献[10]中提出了一种线性滤波器即引导滤波器(guided filter,GF)的细节增强算法,同时参考文献[10]和参考文献[11]中都介绍了基于引导滤波的宽动态图像增强(detail enhancement for high-dynamic-range infrared images based on guided image filter,GF&DDE)算法。
为方便说明,下面对引导滤波做简要介绍。假设输入图像为Iin,输出图像为qi,引导图像pi采用输入图像Iin,qi与Iin在以像素k为中心的窗口中存在局部线性关系见下式:
式中,ak和bk为线性系数,且在局部窗口wk中为常数,wk为以r为半径的方形窗口, i表示在wk中的像素标号,k表示窗口w的标号。为确保以上公式中的线性系数,并满足qi与pi的差别最小,转化为如下所示的优化问题:
式中,Em表示使得qi与pi的差别最小的ak, bk值,以上公式的求解可以利用线性回归得到:
式中,uk和σk2表示输入图像在窗口wk中的均值和方差,ε是一个非常小的数,目的是为了防止分母出现0,pk表示引导图像在窗口wk的像素,Ik表示输入图像在窗口wk的像素,|w|表示窗口wk的像素数。当求得ak和bk后,用(14)式即可计算得qi。然而,在计算ak和bk时不同的窗会有不同的qi,所以一个较为简单的方法就是遍历wk并取均值,即得到:
式中,ai表示ak在窗口wk中的均值,bi表示bk在窗口wk中的均值。从以上的引导滤波算法介绍中可知,整个引导滤波是一个线性计算。参考文献[10]中提出的GF&DDE算法就是用引导滤波作为图像分层算法以改善基于双边滤波的图像增强算法的缺陷。GF&DDE算法的流程如图 4所示。
从图 3可知,GF&DDE算法在架构上与BF&DRP算法和BF&DDE算法基本一致,但在具体的实现上进行了改进。GF&DDE算法用引导滤波替代了BF&DRP算法和BF&DDE算法的双边滤波,这样既可以消除双边滤波引起的细节层反转,同时可以降低算法的计算复杂度。GF&DDE算法的时间复杂度只有O(n), 故GF&DDE算法具有更加广泛的应用前景。
2.3.
基于局部边界保持滤波器的宽动态图像增强算法
-
为了综合基于双边滤波和基于引导滤波的宽动态图像增强算法优点,故参考文献[12]中提出了一种基于局部边界保持滤波器的宽动态图像增强(edge-preserving decompositions for multi-scale tone and detail manipulation,LEPF&DDE)算法。LEPF&DDE算法的实现流程如图 5所示。该算法首先利用局部边界保持滤波器(local edge-preserving decompositions filter for multi-scale tone, LEPF)将原始图像分离成一个基本层图像和一个或多个细节层图像;接着,对背景层图像进行基于最大熵的Gamma曲线校正,对细节层进行伪影消除和细节放大;最后将细节层图像和背景层图像重新绑定。
LEPF是参考文献[12]~参考文献[14]中提出的一种边缘保持滤波算法,该算法的目的是在保持强边缘的同时对低幅度的噪声进行滤波,可用下式表示:
式中,Iin是原始图像,B是经过滤波之后的图像,$\frac{\alpha }{{{{\left| {\nabla {\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right|}^{{\beta _{\rm{s}}}}}}}$是对滤波前后的差异性和滤波之后图像的梯度信息的一个平衡,βs是确定每个像素中梯度敏感度的系数,α是调节梯度信息和滤波前后图像差异性的自由因子。当▽Iin较大时,$\frac{\alpha }{{{{\left| {\nabla {\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right|}^{{\beta _{\rm{s}}}}}}}$较小,(Iin-B)2是主要部分,输出的图像会接近于输入图像;当▽Iin较小时,$\frac{\alpha }{{{{\left| {\nabla {\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right|}^{{\beta _{\rm{s}}}}}}}$较大,|▽B|2占主要部分,输出图像将会尽可能平滑。为了便于解决上述的问题,假设滤波后的图像与输入图像线性相关,则可表示为下式:
式中,Iin, i表示输入图像的第i个像素,aw表示以像素i为中心的局部窗口增益系数,bw表示以像素i为中心的局部窗口偏置系数。
由(12)式可以进一步变换得到下式:
式中,α′是用于平衡两个边缘和噪声的权重系数,并利用最小均方误差法可得到:
式中,$\overline {{I_{{\rm{in}}, {\rm{w}}}}} $和σw2分别是窗口w内的均值和方差。
LEPF&DDE就是利用LEPF算法对输入图像重复滤波, 得到一张背景层图像和多张不同尺度的细节层图像见下:
式中,Bn表示背景层图像,Bi+1=fLEPF(Bi),Dn表示细节层图像, Di+1=Bi-fLEPF(Bi)。
对于背景层,常用的处理方法有线性映射法、Gamma校正法、直方图投影法、对数变换法等。线性映射法是简单快速的方法,但是只适用于灰度分布较为均匀的场景;直方图均衡是目前采用最多的一种背景层压缩算法,该算法的输出不会受到灰度比例的影响,也不会产生对高比例灰度级的过分增强,但是当区域中的灰度差异较小时,投影之后的灰度差异也会较小。故参考文献[13]中提出了一种熵引导的Gamma校正算法, 即:
式中,γ0是使得Gamma变换之后具有最大熵的γ值,fentropy表示求熵。
同时为了计算简单,用列举法就可确定具有最大熵值的Gamma值。对于细节层,LEPF&DDE算法利用了韦伯定律特性,即人眼对背景较暗淡区域的细节较为敏感,对背景较亮的区域细节敏感度较差。同时经过分离之后的背景层图像反应了背景亮度,故用下式进行细节层放大:
式中,Ibase是经过滤波之后得到的背景层图像,Idetail表示经过滤波之后得到的细节层图像,Idetailτ表示对细节层图像的每个图像进行τ次幂计算,τ是放大因子,Idetail, p表示经过放大之后的细节层图像,同时为了防止过增强,用下式绑定背景层图像和增强的细节层图像Ienhance:
当τ∈(0.8, 0.9)、增益系数β=0.3时取得较好的结果。同时对于分解成多个细节层的算法可以用下式实现:
式中, Idetail, 1, p, …, Idetail, n, p表示多次滤波之后得到的多个细节层,β1, …, βn表示不同细节层的增益系数。同时考虑到基于图像分层的细节增强算法容易产生光晕,LEPF&DDE算法通过对细节层进行梯度修正得到如下式:
式中,φ表示阈值系数,Ix是输入图像的x方向梯度,Dx是细节层图像的x方向梯度,Dx′是经过修正之后的x方向梯度。y方向上的校正与x方向上的修正相同。同时参考文献[14]中的结果表明,φ=2时取得较好的效果。