-
基于映射的宽动态红外图像增强算法是最简单也是应用最广泛的算法。这些算法包括:基于自增益的线性映射、Gamma曲线校正、直方图投影等。其中基于自增益的图像增强算法是对原始图像去除极值之后压缩到能显示的动态范围内,假设显示设备的动态范围为8位,则自增益算法表示为:
$ {I_{{\rm{out}}}}\left( {i,j} \right) = \frac{{256 \times {I_{{\rm{in}}}}\left( {i,j} \right)}}{{\max \left( {{\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right) - \min \left( {{\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right)}} $
(1) 式中,Iin是输入图像,Iout是输出图像,(i, j)表示第i行第j列像素。上式中计算的最大值和最小值都是去除极值之后得到的。该方法计算简单,场景主要分布在某个灰度范围附近,但场景会整体发生偏移。
基于Gamma曲线的校正算法通过Gamma曲线的自变量与因变量之间的一个映射,应用广泛。其缺点是:不同的Gamma值在不同的场景中会有不同的校正效果;同时该算法不能消除宽动态图像中的空缺灰度值。
最原始的直方图均衡是利用累计分布函数将图像灰度重新分配,使得直方图分布尽可能均匀。该方法可以获得均匀的概率密度分布,但是也会造成图像细节被过度增强、提高噪声水平、丢失部分细节、褪色等缺点[1-2]。为了解决这些问题,参考文献[3]中提出了一种基于阈值的平台直方图均衡(plateau histogram equalization,PHE)算法。与原始的直方图算法相比,PHE算法在普通的直方图算法上添加了一个阈值,只有每个灰度值的密度超过了阈值才可以占用一个灰度值,以避免一些少量的异常值影响全局的梯度分布。参考文献[1]中提出了一种自适应的直方图均衡(adaptive histogram equalization,AHE)算法,该算法是计算基于局部窗口的直方图函数,能进一步提高图像的局部对比度,同时凸显出图像的细节信息。然而AHE算法很容易产生明显的噪声。基于此,参考文献[2]中提出了一种对比度限制的自适应直方图均值(contrast limited AHE, CLAHE)算法, CLAHE算法通过一个削波阈值降低噪声的幅度。整体而言,基于直方图均衡的算法在性能上比基于自增益的算法有了很大改善。但是基于直方图的算法完全依赖于直方图统计信息,所以在一些特定的应用场景中缺乏灵活性,同时容易产生过增强和褪色。
基于映射的宽动态的算法计算复杂度低、实现简单,目前已经广泛应用于现场可编程门阵列(field-programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)等嵌入式处理器中。
-
基于图像分层的算法基本原理是将原始图像分解成背景层图像和细节层图像,然后对背景层图像进行压缩,对细节层图像进行拉伸, 最后将压缩的背景层图像和拉伸的细节层图像重新整合成一张动态范围被压缩、细节层图像被增强的图像。
-
参考文献[4]中提出了基于双边滤波的红外图像增强(bilateral filter and dynamic range partitioning, BF&DRP)算法。该算法首先利用双边滤波将原始图像分为背景层图像和细节层图像,并对背景层图像和细节层图像分别进行Gamma曲线处理(压缩或者扩展),最后再将背景层和细节层图像重新整合得到经过细节增强的图像。图 1展示了BF&DRP算法的实现流程。下面具体介绍BF&DRP算法的实现过程。
图 1 基于双边滤波的红外图像增强算法实现流程[4]
双边滤波器是同时考虑空间邻近度和像素灰度差的非线性滤波器,对输入图像的均匀区域如天空和大海会起到平滑的作用,对强边缘如楼层就会得到保留。对输入的高动态红外图像进行双边滤波处理, 结果表示如下:
$ \left\{ \begin{array}{l} {I_{{\rm{BF}},{\rm{b}}}}\left( {i,j} \right) = \frac{1}{{k\left( {i,j} \right)}}\sum\limits_{\left( {m,n} \right) \in {\mathit{\boldsymbol{w}}_{i,j}}} {{G_{\rm{s}}}\left( {i - m,j - n} \right)} \times \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{G_{\rm{r}}}\left[ {{I_{{\rm{in}}}}\left( {i,j} \right) - {I_{{\rm{in}}}}\left( {m,n} \right)} \right] \times \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{I_{{\rm{in}}}}\left( {m,n} \right)\\ {I_{{\rm{BF}},d}}\left( {i,j} \right) = {I_{{\rm{in}}}}\left( {m,n} \right) - {I_{{\rm{BF}},{\rm{b}}}}\left( {i,j} \right) \end{array} \right. $
(2) 式中,下标in表示输入的原始图像,下标BF, b表示经过双边滤波处理之后得到的背景层图像,下标BF, d表示经过双线性滤波后得到的细节层图像。(m, n)∈wi, j, 表示像素点(m, n)是以(i, j)为中心像素的窗口wi, j的相邻像素,k(i, j)为归一化系数:
$ \begin{array}{*{20}{c}} {k\left( {i,j} \right) = \sum\limits_{\left( {m,n} \right) \in {\mathit{\boldsymbol{w}}_{i,j}}} {{G_{\rm{s}}}\left( {i - m,j - n} \right)} \times }\\ {{G_{\rm{r}}}\left[ {{I_{{\rm{in}}}}\left( {i,j} \right) - {I_{{\rm{in}}}}\left( {m,n} \right)} \right]} \end{array} $
(3) 式中,Gs和Gr均为标准的高斯函数,定义如下:
$ \begin{array}{*{20}{c}} {{G_{\rm{s}}}\left( {i - m,j - n} \right) = }\\ {\exp \left[ { - \frac{{{{\left( {i - m} \right)}^2} + {{\left( {j - n} \right)}^2}}}{{2{\sigma _{\rm{s}}}^2}}} \right]} \end{array} $
(4) $ \begin{array}{*{20}{c}} {{G_{\rm{r}}}\left[ {{I_{{\rm{in}}}}\left( {i,j} \right) - {I_{{\rm{in}}}}\left( {m,n} \right)} \right] = }\\ {\exp \left\{ { - \frac{{{{\left[ {{I_{{\rm{in}}}}\left( {i,j} \right) - {I_{{\rm{in}}}}\left( {m,n} \right)} \right]}^2}}}{{2\sigma _{\rm{r}}^2}}} \right\}} \end{array} $
(5) 式中,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 基于双边滤波的宽动态细节增强算法实现流程[7]
-
对背景层图像IBF, b进行高斯滤波,同时考虑到不同滤波器的不同标准差会有不同的滤波效果,适应于不同的区域,故提出了自适应的高斯滤波算法, 其目的是获得修正的基本层图像,使得基本层图像更加接近于原始图像。具体分为以下几个步骤。
(1) 计算带权重的差异:
$ E\left( {i,j} \right) = d\left( {i,j} \right)\left[ {{I_{{\rm{in}}}}\left( {i,j} \right) - {I_{{\rm{BF,b}}}}\left( {i,j} \right)} \right] $
(6) 式中,d(i, j)表示差异增益系数,E(i, j)表示权重差异性。
(2) 计算梯度:
$ \begin{array}{*{20}{c}} {{d^2}\left[ {{I_{{\rm{BF,b}}}}\left( {i,j} \right)} \right] \approx {I_{{\rm{BF,b}}}}\left( {i + 1,j} \right) + }\\ {{I_{{\rm{BF,b}}}}\left( {i - 1,j} \right) + {I_{{\rm{BF,b}}}}\left( {i,j} \right) + 4{I_{{\rm{in}}}}\left( {i,j} \right)} \end{array} $
(7) 式中,d2[]表示图像梯度。
(3) 计算方差:
$ \sigma = \sqrt {\frac{{2E\left( {i,j} \right)}}{{{d^2}\left[ {{I_{{\rm{BF,b}}}}\left( {i,j} \right)} \right]}}} $
(8) 式中,σ表示图像方差。
(4) 修正背景图像:
$ {I_{{\rm{BF}}}}\left( {i,j} \right) = {I_{{\rm{BF,b}}}}\left( {i,j} \right) + \frac{{{d^2}\left[ {{I_{{\rm{BF,b}}}}\left( {i,j} \right)} \right]}}{2}{\sigma ^2} $
(9) -
参考文献[4]中采用的Gamma曲线,对细节层图像进行自适应增益的同时允许少量的极端像素饱和,但是这并不能确保背景层图像的直方图有一个准均匀的分布,故参考文献[7]中采用了修改过的直方图投影算法,同时细节层的信息具体包括以下几个步骤。
(1) 对原始直方图进行二值化处理:
$ \mathit{\boldsymbol{H}}\left( x \right) = \left\{ \begin{array}{l} 0,\left( {{n_x} < T} \right)\\ 1,\left( {{n_x} > T} \right) \end{array} \right. $
(10) 式中,nx代表像素值为的像素数量,T代表阈值(一般为图像总像素数的0.1%)。设置阈值的目的是为了提高全局的对比度,避免一些少量的异常值影响全局的梯度分布。
(2) 计算累计分布函数:
$ B\left( x \right) = \left\{ \begin{array}{l} 0,\left( {x = 0} \right)\\ \left[ {\sum\limits_{y = 0}^{x - 1} {\mathit{\boldsymbol{H}}\left( {x,y} \right)} } \right]/{n_{{\rm{valid}}}},\left( {{\rm{other}}} \right) \end{array} \right. $
(11) 式中,nvalid表示H(x, y)的值为1的数量,由此将输入范围为x的图像映射到了R·B(x)。其中输出图像的最大值为:R=max(nvalid, D), D为输出动态范围。
-
由于细节层图像含有微小的细节信息,所以需要进行放大;但是细节层图像中包含了大量的噪声。所以如果对细节层图像直接进行放大,则噪声也会被直接放大。人体视觉系统的相关研究表明,人眼对均匀区域的噪声比在复杂区域的噪声更加敏感。基于此,参考文献[8]中首先定义了噪声掩模函数,参考文献[9]中采用了基于局部方差的噪声掩模函数如下所示:
$ f\left( {i,j} \right) = \frac{1}{{{M_0}\left( {i,j} \right) \cdot \theta + 1}} $
(12) 式中,θ为可调参量,M0(i, j)表示图像的局部方差。噪声可见度函数通常会做归一化处理。从上式可以看出,当区域中的细节丰富时,噪声掩模函数取得较大值,噪声可见度函数接近于0,即噪声几乎不可见。当区域中的场景较为平坦时,噪声可见度接近于1,此时噪声近乎完全暴露。基于此, 参考文献[7]中提出通过利用图像的局部信息进行自动调整细节层增益的算法。该算法在图像细节丰富的区域进行较大倍数的放大,对较为平坦的区域进行较小的放大;同时考虑到双边滤波中的差异增益系数d(i, j)是一个能很好地反映区域细节信息的变量,可用[d(i, j)]-1作为噪声掩模函数。故得到最终的细节层自增益计算公式:
$ \begin{array}{*{20}{c}} {g\left( {i,j} \right) = {g_{\min }} + \left[ {1 - f\left( {i,j} \right)} \right] \times \left( {{g_{\max }} - {g_{\min }}} \right) = }\\ {{g_{\min }} + \left[ {1 - d\left( {i,j} \right)} \right] \times \left( {{g_{\max }} - {g_{\min }}} \right)} \end{array} $
(13) 式中,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种算法中的效果最好。
图 3 映射算法和双边滤波的部分算法效果对比图[7]
-
为了改善基于双边滤波的图像增强算法缺点,参考文献[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为中心的窗口中存在局部线性关系见下式:
$ {\mathit{\boldsymbol{q}}_i} = {a_k}{\mathit{\boldsymbol{I}}_{{\rm{in}}}} + {b_k},\left( {i \in {\mathit{\boldsymbol{w}}_k}} \right) $
(14) 式中,ak和bk为线性系数,且在局部窗口wk中为常数,wk为以r为半径的方形窗口, i表示在wk中的像素标号,k表示窗口w的标号。为确保以上公式中的线性系数,并满足qi与pi的差别最小,转化为如下所示的优化问题:
$ {E_{\rm{m}}}\left( {{a_k},{b_k}} \right) = \sum\limits_{i \in {\mathit{\boldsymbol{w}}_k}} {\left[ {{{\left( {{a_k}{\mathit{\boldsymbol{I}}_{{\rm{in}}}} + {b_k} - {\mathit{\boldsymbol{p}}_i}} \right)}^2} + \varepsilon a_k^2} \right]} $
(15) 式中,Em表示使得qi与pi的差别最小的ak, bk值,以上公式的求解可以利用线性回归得到:
$ \left\{ \begin{array}{l} {a_k} = \frac{{\overline {{\mathit{\boldsymbol{p}}_k}{\mathit{\boldsymbol{I}}_k}} - \overline {{\mathit{\boldsymbol{p}}_k}} \overline {{\mathit{\boldsymbol{I}}_k}} }}{{\overline {\mathit{\boldsymbol{I}}_k^2} - \mathit{\boldsymbol{\bar I}}_k^2 + \varepsilon }} = \frac{{{{\left| w \right|}^{ - 1}}\sum\limits_{i \in {\mathit{\boldsymbol{w}}_k}} {{\mathit{\boldsymbol{I}}_{{\rm{in}}}}{\mathit{\boldsymbol{p}}_i}} - {u_k}\overline {{\mathit{\boldsymbol{p}}_k}} }}{{\sigma _k^2 + \varepsilon }}\\ {b_k} = \overline {{\mathit{\boldsymbol{p}}_k}} - {a_k}{u_k} \end{array} \right. $
(16) 式中,uk和σk2表示输入图像在窗口wk中的均值和方差,ε是一个非常小的数,目的是为了防止分母出现0,pk表示引导图像在窗口wk的像素,Ik表示输入图像在窗口wk的像素,|w|表示窗口wk的像素数。当求得ak和bk后,用(14)式即可计算得qi。然而,在计算ak和bk时不同的窗会有不同的qi,所以一个较为简单的方法就是遍历wk并取均值,即得到:
$ {\mathit{\boldsymbol{q}}_i} = {{\bar a}_i}{\mathit{\boldsymbol{I}}_{{\rm{in}}}} + {{\bar b}_i} $
(17) 式中,ai表示ak在窗口wk中的均值,bi表示bk在窗口wk中的均值。从以上的引导滤波算法介绍中可知,整个引导滤波是一个线性计算。参考文献[10]中提出的GF&DDE算法就是用引导滤波作为图像分层算法以改善基于双边滤波的图像增强算法的缺陷。GF&DDE算法的流程如图 4所示。
图 4 基于引导滤波的宽动态图像增强算法实现流程[10]
从图 3可知,GF&DDE算法在架构上与BF&DRP算法和BF&DDE算法基本一致,但在具体的实现上进行了改进。GF&DDE算法用引导滤波替代了BF&DRP算法和BF&DDE算法的双边滤波,这样既可以消除双边滤波引起的细节层反转,同时可以降低算法的计算复杂度。GF&DDE算法的时间复杂度只有O(n), 故GF&DDE算法具有更加广泛的应用前景。
-
为了综合基于双边滤波和基于引导滤波的宽动态图像增强算法优点,故参考文献[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曲线校正,对细节层进行伪影消除和细节放大;最后将细节层图像和背景层图像重新绑定。
图 5 基于局部边界保持滤波器的宽动态图像增强算法流程[12]
LEPF是参考文献[12]~参考文献[14]中提出的一种边缘保持滤波算法,该算法的目的是在保持强边缘的同时对低幅度的噪声进行滤波,可用下式表示:
$ \sum\limits_{i \in \mathit{\boldsymbol{w}}} {\left[ {{{\left( {{\mathit{\boldsymbol{I}}_{{\rm{in}}}} - \mathit{\boldsymbol{B}}} \right)}^2} + \frac{\alpha }{{{{\left| {\nabla {\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right|}^{{\beta _{\rm{s}}}}}}}{{\left| {\nabla \mathit{\boldsymbol{B}}} \right|}^2}} \right]} $
(18) 式中,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占主要部分,输出图像将会尽可能平滑。为了便于解决上述的问题,假设滤波后的图像与输入图像线性相关,则可表示为下式:
$ {\mathit{\boldsymbol{B}}_i} = {a_{\rm{w}}}{I_{{\rm{in}},i}} + {b_{\rm{w}}},\left( {i \in \mathit{\boldsymbol{w}}} \right) $
(19) 式中,Iin, i表示输入图像的第i个像素,aw表示以像素i为中心的局部窗口增益系数,bw表示以像素i为中心的局部窗口偏置系数。
由(12)式可以进一步变换得到下式:
$ \begin{array}{*{20}{c}} {\sum\limits_{i \in \mathit{\boldsymbol{w}}} {\left[ {{{\left( {{I_{{\rm{in}},i}} - {a_{\rm{w}}}{I_{{\rm{in}},i}} - {b_{\rm{w}}}} \right)}^2} + } \right.} }\\ {\left. {\alpha '{{\left| {\nabla {I_{{\rm{in,}}i}}} \right|}^{2 - {\beta _{\rm{s}}}}}a_{\rm{w}}^2} \right]} \end{array} $
(20) 式中,α′是用于平衡两个边缘和噪声的权重系数,并利用最小均方误差法可得到:
$ {a_{\rm{w}}} = {\sigma _{\rm{w}}}^2/\left( {{\sigma _{\rm{w}}}^2 + \frac{1}{N}\alpha '\sum\limits_{i \in \mathit{\boldsymbol{w}}} {{{\left| {\nabla {I_{{\rm{in,}}i}}} \right|}^{2 - {\beta _{\rm{s}}}}}} } \right) $
(21) $ {b_{\rm{w}}} = \overline {{I_{{\rm{in}},w}}} - {a_{\rm{w}}}\overline {{I_{{\rm{in}},w}}} $
(22) 式中,$\overline {{I_{{\rm{in}}, {\rm{w}}}}} $和σw2分别是窗口w内的均值和方差。
LEPF&DDE就是利用LEPF算法对输入图像重复滤波, 得到一张背景层图像和多张不同尺度的细节层图像见下:
$ {\mathit{\boldsymbol{I}}_{{\rm{in}}}} = {\mathit{\boldsymbol{B}}_n} + {\mathit{\boldsymbol{D}}_1} + {\mathit{\boldsymbol{D}}_2} + \cdots + {\mathit{\boldsymbol{D}}_n} $
(23) 式中,Bn表示背景层图像,Bi+1=fLEPF(Bi),Dn表示细节层图像, Di+1=Bi-fLEPF(Bi)。
对于背景层,常用的处理方法有线性映射法、Gamma校正法、直方图投影法、对数变换法等。线性映射法是简单快速的方法,但是只适用于灰度分布较为均匀的场景;直方图均衡是目前采用最多的一种背景层压缩算法,该算法的输出不会受到灰度比例的影响,也不会产生对高比例灰度级的过分增强,但是当区域中的灰度差异较小时,投影之后的灰度差异也会较小。故参考文献[13]中提出了一种熵引导的Gamma校正算法, 即:
$ {\gamma _0} = \mathop {\max }\limits_\gamma \left\{ {{f_{{\rm{entropy}}}}\left( {{\mathit{\boldsymbol{I}}_{{\rm{in}}}}^\gamma } \right)} \right\} $
(24) 式中,γ0是使得Gamma变换之后具有最大熵的γ值,fentropy表示求熵。
同时为了计算简单,用列举法就可确定具有最大熵值的Gamma值。对于细节层,LEPF&DDE算法利用了韦伯定律特性,即人眼对背景较暗淡区域的细节较为敏感,对背景较亮的区域细节敏感度较差。同时经过分离之后的背景层图像反应了背景亮度,故用下式进行细节层放大:
$ {\mathit{\boldsymbol{I}}_{{\rm{detail}},{\rm{p}}}} = {\mathit{\boldsymbol{I}}_{{\rm{detail}}}}^\tau \cdot {\mathit{\boldsymbol{I}}_{{\rm{base}}}} $
(25) 式中,Ibase是经过滤波之后得到的背景层图像,Idetail表示经过滤波之后得到的细节层图像,Idetailτ表示对细节层图像的每个图像进行τ次幂计算,τ是放大因子,Idetail, p表示经过放大之后的细节层图像,同时为了防止过增强,用下式绑定背景层图像和增强的细节层图像Ienhance:
$ {\mathit{\boldsymbol{I}}_{{\rm{enhance}}}} = {\mathit{\boldsymbol{I}}_{{\rm{base}}}} + \beta \cdot {\mathit{\boldsymbol{I}}_{{\rm{detail}},{\rm{p}}}} $
(26) 当τ∈(0.8, 0.9)、增益系数β=0.3时取得较好的结果。同时对于分解成多个细节层的算法可以用下式实现:
$ \begin{array}{*{20}{c}} {{\mathit{\boldsymbol{I}}_{{\rm{enhance}}}} = {\mathit{\boldsymbol{I}}_{{\rm{base}}}} + {\beta _1} \cdot {\mathit{\boldsymbol{I}}_{{\rm{detail}},1,{\rm{p}}}} + }\\ {{\beta _2} \cdot {\mathit{\boldsymbol{I}}_{{\rm{detail}},2,{\rm{p}}}} + \cdots + {\beta _n} \cdot {\mathit{\boldsymbol{I}}_{{\rm{detail}},n,{\rm{p}}}}} \end{array} $
(27) 式中, Idetail, 1, p, …, Idetail, n, p表示多次滤波之后得到的多个细节层,β1, …, βn表示不同细节层的增益系数。同时考虑到基于图像分层的细节增强算法容易产生光晕,LEPF&DDE算法通过对细节层进行梯度修正得到如下式:
$ {{\mathit{\boldsymbol{D'}}}_x} = \left\{ \begin{array}{l} {\mathit{\boldsymbol{I}}_x},\left( {\left| {{\mathit{\boldsymbol{D}}_x}} \right| \ge \varphi \left| {{\mathit{\boldsymbol{I}}_x}} \right|} \right)\\ {\mathit{\boldsymbol{D}}_x},\left( {{\rm{other}}} \right) \end{array} \right. $
(28) 式中,φ表示阈值系数,Ix是输入图像的x方向梯度,Dx是细节层图像的x方向梯度,Dx′是经过修正之后的x方向梯度。y方向上的校正与x方向上的修正相同。同时参考文献[14]中的结果表明,φ=2时取得较好的效果。
-
由于不产生光晕和梯度反转,基于梯度域的宽动态图像增强算法受到了很多研究者的关注。参考文献[15]中最先提出了基于梯度域的宽动态图像压缩(gradient domain high dynamic range compression,GDHDRC)算法。该算法的基本原理是对梯度域进行不同程度的压缩,即在对大幅度的梯度进行压缩的情况下保留低幅度的细节。同时该算法的所有计算都是在对数计算之后完成,其原因在于:(1)照度的对数值可以近似为人体感知到的亮度;(2)对数域的梯度与局部对比度是线性相关的。假设原始图像为H0(x),对应的梯度为▽H0(x),梯度衰减因子为ϕ(x),其中x表示图像的横坐标,则经过衰减之后的梯度如下式:
$ G\left( x \right) = \nabla {H_0}\left( x \right)\phi \left( x \right) $
(29) 梯度衰减因子ϕ(x)的更新过程见下:
(1) $\nabla {H_k}\left( {x, y} \right) = \left( {\frac{{{H_k}\left( {x + 1, y} \right) - {H_k}\left( {x - 1, y} \right)}}{{{2^{k + 1}}}}, \frac{{{H_k}\left( {x, y + 1} \right) - {H_k}\left( {x, y - 1} \right)}}{{{2^{k + 1}}}}} \right)$;
(2) ${\varphi _k}\left( {x.y} \right) = \frac{\alpha }{{\left\| {\nabla {H_k}\left( {x, y} \right)} \right\|}}{\left( {\frac{{\left\| {\nabla {H_k}\left( {x, y} \right)} \right\|}}{\alpha }} \right)^\beta }$;
(3) ${\phi _k}\left( {x, y} \right) = L\left( {x, y} \right){\phi _{k + 1}}\left( {x, y} \right){\varphi _k}\left( {x,y} \right)$;
(4) $\phi \left( {x, y} \right) = {\phi _0}\left( {x, y} \right)$。
式中,Hk是利用原始图像构建的金字塔图像,(x, y)表示像素坐标,H0为原始的全分辨率图像, 是Hk中k=0时的图像,φk(x, y)表示压缩之后的梯度域,L(x, y)表示通过线性插值得到的上采样图像,ϕk(x, y)表示对梯度域进行放大之后的图像。接着通过下式获得梯度压缩的对数域图像:
$ \mathit{\boldsymbol{I}} = \mathop {\min }\limits_\mathit{\boldsymbol{I}} {\left\| {\nabla \mathit{\boldsymbol{I}} - \mathit{\boldsymbol{G}}} \right\|^2} $
(30) 式中,G为梯度域图像,最后对I进行指数计算即可获得最终的图像。但是参考文献[16]中指出,GDHDRC算法对细节的突出不够明显。
在GDHDRC算法的基础上,参考文献[16]中提出了一种基于梯度的一致性的二次优化框架如下:
$ \begin{array}{*{20}{c}} {{\mathit{\boldsymbol{I}}_{{\rm{out}}}} = \mathop {\min }\limits_{{\mathit{\boldsymbol{I}}_{{\rm{out}}}}} {{\left\| {{\mathit{\boldsymbol{I}}_{{\rm{out}}}} - {\mathit{\boldsymbol{I}}_{{\rm{in}}}}} \right\|}^2} + }\\ {{\tau _1}{{\left\| {\nabla {\mathit{\boldsymbol{I}}_{{\rm{out}}}} - \mathit{\boldsymbol{g}}} \right\|}^2}} \end{array} $
(31) 式中,Iin是输入图像,g是输入图像的梯度,Iout是输出图像,▽Iout是输出图像的梯度,τ1是用于平衡数据项和梯度项。基于前面的构想,参考文献[17]中提出了一种细节保持(detail-preserving stretching,DPS)算法, 其实现过程如图 6所示。DPS算法包括4个步骤:(1)利用基于均值的拉伸算法获得拉伸的图像v和拉伸增益K; (2)计算原始图像的梯度场g;(3)利用均值拉伸获得拉伸增益对梯度场g进行拉伸得到G; (4)利用GDP算法将拉伸的梯度场G和数据v重新整合获得最终的增强图像Iout。
图 6 细节保持的算法实现流程[17]
DPS算法中,经过拉伸之后的数据和梯度具有了相同的幅度,为了保存原始图像的全局对比度,用下式进行约束:
$ {\mathit{\boldsymbol{I}}_{{\rm{out}}}} = \mathop {\min }\limits_{{\mathit{\boldsymbol{I}}_{{\rm{out}}}}} {\left\| {{\mathit{\boldsymbol{I}}_{{\rm{out}}}} - \mathit{\boldsymbol{v}}} \right\|^2} + {\tau _1}{\left\| {\nabla {\mathit{\boldsymbol{I}}_{{\rm{out}}}} - \mathit{\boldsymbol{g}}} \right\|^2} $
(32) 上式可用共轭梯度算法[18]解决。
DPS算法在大部分场合都有一个比较好的效果,但是在一些特殊的场合还存在一些缺陷。一方面,为了防止出现过饱和的情况,用于平衡数据项和梯度项的因子需要精心的设计;另一方面,输出图像的细节仍然不够锐利,无法满足一些要求较高的宽动态(high dynamic range, HDR)红外图像显示要求。故参考文献[19]中提出了一种基于梯度域的宽动态范围压缩和细节增强(high dynamic range compression and detail enhancement in the gradient domain, GD&DDE)算法。GD&DDE算法同样采用了参考文献[16]中提出的构架,但是在具体的实现上有所不同。在数据项的获取上,GD&DDE采用直方图投影算法,其原因是线性映射、Gamma校正算法等会存在一些灰度值的空缺,采用直方图投影能更好地保存原始图像的全局对比度。在梯度项的计算过程中,首先用将原始图像标准化:
$ M\left( {x,y} \right) = \left[ {u\left( {x,y} \right) - {m_u}} \right] \cdot \left( {\frac{{{s_{\rm{d}}}}}{{{s_{\rm{u}}}}}} \right) + {m_{\rm{d}}} $
(33) 式中,M(x, y)是标准化之后的图像,u(x, y)是原始图像,mu和md分别是原始图像和目标图像的均值,su和sd是分别是原始图像和目标图像的方差。同时考虑到韦伯定律,即人眼在暗背景下对细节较为敏感,而对亮背景不太敏感,故可得到每个像素的梯度增益因子见下式:
$ s\left( {x,y} \right) = \frac{{{\alpha _0}\max \left( {\left\| {\nabla M\left( {x,y} \right)} \right\|} \right)}}{{\left\| {\nabla M\left( {x,y} \right)} \right\| + \varepsilon }}\tau \left( {x,y} \right) $
(34) 式中,▽M(x, y)是标准化图像的梯度,α0∈(0, 1]是调参量,ε是一个很小的数。τ(x, y)是基于背景的增益调整因子, 可用下式计算得到:
$ \begin{array}{*{20}{c}} {\tau \left( {x,y} \right) = }\\ {{\beta _{\rm{e}}}\left[ {1 + \frac{{{E_{\rm{v}}}\left( {x,y} \right) - {E_{\rm{v}}}\left( {x,y} \right)}}{{\max \left( {{E_{\rm{v}}}\left( {x,y} \right)} \right) - \min \left( {{E_{\rm{v}}}\left( {x,y} \right)} \right)}}} \right]} \end{array} $
(35) 式中,βe是调整因子,Ev(x, y)是特定像素的八领域均值,代表每个像素的照度,计算公式如下:
$ \begin{array}{*{20}{c}} {{E_{\rm{v}}}\left( {x,y} \right) = \frac{1}{2}\left\{ {\frac{1}{2}\left\{ {\frac{1}{4}\sum\limits_Q {M\left( {i,j} \right)} + } \right.} \right.}\\ {\left. {\left. {\frac{1}{{4\sqrt 2 }}\sum\limits_{{Q^1}} {M\left( {k,l} \right)} } \right] + M\left( {x,y} \right)} \right\}} \end{array} $
(36) 式中,Q代表上下和左右的四领域像素,Q1代表对角的四领域像素。参考文献[19]中的结果表明,GD&DDE算法在抑制传统问题如光晕、梯度反转、模糊、过饱和的情况下,实现了很好的动态范围压缩和图像细节增强。
图 7展示了基于梯度域、基于引导滤波和基于边沿保持3种算法的效果。整体而言,与原始图像相比3种算法都有了很大的改善。GF&DDE和LEPF&DDE的细节效果更加突出,但GF&DDE和LEPF&DDE算法容易产生光晕和梯度反转,所以各类算法各有优点。
图 7 基于图像分层和基于梯度域的部分算法效果展示[12]
-
为了进一步验证各类算法的性能,作者采用长波红外采集到的一组数据进行对比分析。采集到的原始数据为16位,通过宽动态算法之后将原始图像压缩到8位进行显示。其中,各类算法的参量选取对算法的性能都有较大的影响,下列算法中各个算法的参量采用参考文献的推荐参量,在此就不一一列出。算法在装有64位操作系统、主时钟为1.8GHz、RAM为4GB的PC机上实现,实现平台为MATLAB2016b。图 8是不同算法处理之后的宽动态图像结果,表 1中是各个算法的运行时间,表 2中列出了各个算法的优缺点。
表 1 各类算法的运行时间
算法类 典型算法 运行时间/s 基于映射 线性映射 0.0040 Gamma曲线校正 0.1780 直方图投影 0.0004 基于图像分层 BF&DDE 2.2360 GF&DDE 0.6590 LEPF&DDE 0.0310 基于梯度域 GDHDRC 0.1100 DPS 0.3450 GD&DDE 3.2250 表 2 各类算法的特点对比
算法类 典型算法 优点 缺点 基于映射 线性映射、Gamma曲线校正、直方图投影 实现简单、复杂度低 细节增强效果一般 基于图像分层 BF&DDE, GF&DDE, LEPF&DDE 细节增强效果好 易产生光晕和梯度反转,复杂度较大 基于梯度域 GDHDRC, DPS, GD&DDE 细节增强效果较好,抑制光晕、梯度反转、模糊、过饱和等 算法复杂度大,背景噪声较大 从图像的效果来看,基于映射的算法细节效果最差,细节突出不明显;基于图像分层的算法在3类算法中细节效果最好,然而在边缘地区容易出现光晕, 如图 8b中的深色圈标注区域所示,同时容易出现过饱和现象, 如图 8b中的白色圈标注区域所示;基于梯度域的算法在细节性能上明显好于线性映射算法,但略逊于基于图像分层的算法,另外,基于梯度域的算法在噪声抑制上没有基于梯度域的算法好。
从算法的执行时间来看,基于映射的算法明显低于其它两类算法,尤其是线性映射算法和直方图均衡算法的计算完全可以实时实现,其中Gamma校正算法相对较慢的原因是需要指数计算,所以一种提高Gamma曲线处理算法的方法是提前准备好映射参量,在实际应用的过程中直接索引读取出处理结果;基于图像分层的算法中BF&DDE算法运行速度最慢,很难实现实时,其主要原因是需要进行指数计算,所以改进的方向也是提前准备好映射参量,在实际应用的过程中直接索引读取出处理结果;基于梯度域的算法中GD&DDE算法计算速度最慢且背景噪声较大,其主要时间消耗在细节项信息和数据项信息融合时的共轭梯度算法,故一个改进的方向是改进梯度算法、增加噪声抑制函数。
宽动态红外图像增强算法综述
Review of high dynamic range infrared image enhancement algorithms
-
摘要: 红外成像系统设计中,一般采用宽动态的采集电路以获得丰富的细节信息,当前大部分的显示设备都只有8位,所以将宽动态图像压缩成低动态图像同时保持尽可能多的信息成为重点。研究了当前主流的宽动态红外图像处理算法,分析了映射、图像分层和梯度域3类算法的优缺点,实现了3类算法中的经典算法,并用同一张红外图片进行对比分析,提出了各类算法的改进意见。图像分层算法要在抑制光晕和梯度反转的情况下降低时间复杂度;梯度域算法需在进一步提高细节信息的情况下抑制背景噪声。Abstract: In order to obtain rich image detail information, a wide dynamic acquisition circuit is often used in an infrared imaging system. However, most of the display devices are only 8 bits, how to compress wide dynamic images into low dynamic images and preserve detail information as much as possible is one of the key technologies of infrared image display. Current mainstream infrared image processing algorithms, such as mapping, image stratification and gradient domain are introduced, and the advantages and disadvantages of the 3 algorithms are analyzed. Contrast analysis is made with the same infrared image, and the improved opinions of all the algorithms are proposed. Image stratification algorithm needs to reduce time complexity in the case of inhibition of halo and gradient inversion. Gradient domain algorithm needs to suppress background noise and then the details are further improved.
-
图 1 基于双边滤波的红外图像增强算法实现流程[4]
图 2 基于双边滤波的宽动态细节增强算法实现流程[7]
图 3 映射算法和双边滤波的部分算法效果对比图[7]
a—自增益算法b—直方图均衡算法c—基于双边滤波的宽动态算法d—基于双边滤波的宽动态细节增强算法
图 4 基于引导滤波的宽动态图像增强算法实现流程[10]
图 5 基于局部边界保持滤波器的宽动态图像增强算法流程[12]
图 6 细节保持的算法实现流程[17]
图 7 基于图像分层和基于梯度域的部分算法效果展示[12]
a—原始图像b—基于梯度域的宽动态范围压缩和细节增强算法c—基于引导滤波的宽动态图像增强算法d—基于局部边界保持滤波器的宽动态图像增强算法
表 1 各类算法的运行时间
算法类 典型算法 运行时间/s 基于映射 线性映射 0.0040 Gamma曲线校正 0.1780 直方图投影 0.0004 基于图像分层 BF&DDE 2.2360 GF&DDE 0.6590 LEPF&DDE 0.0310 基于梯度域 GDHDRC 0.1100 DPS 0.3450 GD&DDE 3.2250 表 2 各类算法的特点对比
算法类 典型算法 优点 缺点 基于映射 线性映射、Gamma曲线校正、直方图投影 实现简单、复杂度低 细节增强效果一般 基于图像分层 BF&DDE, GF&DDE, LEPF&DDE 细节增强效果好 易产生光晕和梯度反转,复杂度较大 基于梯度域 GDHDRC, DPS, GD&DDE 细节增强效果较好,抑制光晕、梯度反转、模糊、过饱和等 算法复杂度大,背景噪声较大 -
[1] PIZER S M, AMBURN E P, AUSTIN J D, et al. Adaptive histogram equalization and its variations[J]. Computer Vision Graphics & Image Processing, 1987, 39(3):355-368. [2] ZUIDERVELD K. Contrast limited adaptive histogram equalization[M]. San Diego, USA:Academic Press Professional, Inc., 1994:474-485. [3] VICKERS V E. Plateau equalization algorithm for real-time display of high-quality infrared imagery[J]. Optical Engineering, 1996, 35(7):1921-1926. doi: 10.1117/1.601006 [4] BRANCHITTA F, DIANI M, CORSINI G. New technique for the visualization of high dynamic range infrared images[J]. Optical Engineering, 2009, 48(9):096401. doi: 10.1117/1.3216575 [5] DURAND F, DORSEY J. Fast bilateral filtering for the display of highdynamic range images[J]. ACM Transactions Graphics, 2002, 21(3):257-266. [6] BAE S, PARIS S. Two-scale tone management for photographic look[J]. ACM Transactions Graphics, 2006, 25(3):637-645. doi: 10.1145/1141911 [7] ZUO C, CHEN Q, REN J. Display and detail enhancement for high-dynamic-range infrared images[J]. Optical Engineering, 2011, 50(12):895-900. [8] ANDERSON G L, NETRAVALI A N. Image restoration based on a subjective criterion[J]. IEEE Transactions on Systems Man & Cybernetics, 1976, 6(12):845-853. [9] KATSAGGELOS A K, BIEMOND J, SCHAFER R W, et al. A regularized iterative image restoration algorithm[J]. IEEE Transactions on Signal Processing, 1991, 39(4):914-929. doi: 10.1109/78.80914 [10] HE K, SUN J, TANG X. Guided image filtering[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2013, 35(6):1397-1409. [11] LIU N, ZHAO D X. Detail enhancement for high-dynamic-range infrared images based on guided image filter[J]. Infrared Physics & Technology, 2014, 67:138-147. [12] FARBMAN Z, FATTAL R, LISCHINSKI D. Edge-preserving decompositions for multi-scale tone and detail manipulation[J]. ACM Transactions on Graphics, 2008, 27(3):1-10. [13] SONG Q, WANG Y H, BAI K. High dynamic range infrared images detail enhancement based on local edge preserving filter[J]. Infrared Physics & Technology, 2016, 77:464-473. [14] GU B, LI W, ZHU M, et al. Local edge-preserving multiscale decomposition for high dynamic range image tone mapping[J]. IEEE Transactions on Image Processing, 2012, 22(1):70-79. [15] FATTAL R, LISCHINSKI D, WERMAN M. Gradient domain high dynamic range compression[C]//Conference on Computer Graphics & Interactive Techniques: Proc of 29th Annual Co Conference on Computer Graphics & Interactive Techniques. New York, USA: ACM Press, 2002: 249-256. [16] ZHANG F F, XIE W, MA G R, et al. High dynamic range compression and detail enhancement of infrared images in the gradient domain[J]. Infrared Physics & Technology, 2014, 67:441-454. [17] KIM J H. Novel contrast enhancement scheme for infrared image using detail-preserving stretching[J]. Optical Engineering, 2011, 50(7):077002. doi: 10.1117/1.3597639 [18] SHEWCHUK J R. An introductionto the conjugate gradient method without the agonizing pain[D]. Pittsburgh, USA: Carnegie Mellon University, 1994: 94-125. [19] ZHANG F, XIE W, MA G, et al. High dynamic range compression and detail enhancement of infrared images in the gradient domain[J]. Infrared Physics & Technology, 2014, 67:441-454.