王改云,郭智超,路皓翔,陆家卓,张琦
(1 桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)
(2 桂林电子科技大学 计算机与信息安全学院,广西 桂林 541004)
图像处理在路线规划[1]、工业损伤检测[2]、人脸识别[3]、医学辅助诊断[4]、卫星遥感[5]等领域都得到了广泛应用。图像增强可解决在复杂环境中采集到图像的目标识别问题。现阶段常用的增强方法主要有基于空域增强的方法、基于频域增强的方法和基于深度学习增强的方法三大类。
基于空域增强的方法通过逐像素处理来增强图像,代表算法包含直方图均衡、直方图匹配和直方图调整等。WANG D 等[6]和GUPTA B 等[7]使用构造双边Gamma 函数和改进的sigmoid 函数处理输入图像的亮度分量Y,在增强图像亮度且不影响图像平均亮度和颜色信息的情况下增强暗区域的亮度,减少了因光照条件不匀对图像增强带来的影响。相同思路的算法还有Hue-Saturation-Value(HSV)空间增强图像亮度算法,该算法能在保留图像饱和度的同时解耦图像的亮度信息和色度信息,从而更容易捕捉图像细节。CHANDRASEKHARAN R 等[8]通过求取HSV 空间亮度通道的均值得到模糊变换模型的核参数,并对图像亮度信息进行模糊变换使其变得平滑,进而提升图像亮度,能在增强图像亮度的同时保留原图细节特性。为了更好地还原真实场景的亮度特征,YING Z 等[9]利用相机响应模型(Camera Response Function CRF)分析两幅场景相同曝光不同图像的直方图特征,提出了基于准确相机响应模型的增强算法,该算法增强后的图像能够更好地模拟真实场景的光照环境。为了在更有效地滤除噪声的同时增强图像的细节信息,LIANG K 等[10]和LI S 等[11]通过自适应搜索图像直方图的局部最大灰度值和局部最小灰度值,实时更新直方图的上下阈值,通过选择合适的上阈值约束噪声,选择合适的下限阈值保护并增强图像的详细信息,该方法很好地保留了原图的细节信息。BHANDARI A 等[12]和BHANDARI A 等[13]将图像直方图分成两个子直方图,分别使用布谷鸟搜索算法和高原极限法优化处理每个子直方图,在改善图像对比度的同时有效还原图像亮度,解决低照度情况下图像照明不统一的问题。直方图法简单有效且处理速度快,但是该类算法对噪声比较敏感,基于变换域的图像增强算法可有效解决该问题。
基于变换域图像增强法将图像信息转换至频域空间,通过改变图像不同频率的分量增强图像,该类算法主要利用低通滤波、高通滤波和同态滤波增强图像。HUANG K 等[14]利用视觉统计特性对比度调整多尺度小波系数,校正图像的全局和局部对比度,该算法增强的图像其颜色更符合人类视觉特征。SHAHAN C等[15]利用HSV 模型的亮度遮蔽特性和对比度遮蔽梯度特性,在固定波变换域和双树复合波变换域,利用非线性对比度映射系数增强图像对比度调整图像亮度。典型的频域增强算法还有LAND E 等[16]提出的基于Retinex 的增强算法,为了使增强后的图像亮度更符合人眼视觉,该算法模拟人类视觉系统感知模型,通过变换域滤波将人眼接收的光信号分离为入射光和反射光,并通过减弱入射光增强传递物体真实信息的反射光提升图像质量。之后WANG S 等[17]通过计算图像亮度顺序误差,评价图像自然亮度,并利用双对数变换平衡图像分解的入射光图像和反射光图像,该算法能有效增强图像的细节信息。FU X 等[18]通过分析对数变换的特点,证明对数变换不适合直接作为正则项,进而使用加权变分模型估计图像的入射光图像和反射光图像增强图像亮度。该类算法能够很好地增强图像的细节信息,但是增强过程比较复杂,而基于深度学习的增强算法可以解决这一难题。
基于深度学习的增强算法近几年得到了广泛应用。YING Q 等[19]使用神经网络生成输入图像的高动态范围图像(High-Dynamic Range,HDR),通过融合HDR 图像和原始图像,将堆栈之间丢失的信息用于学习和更新网络的权重,最后利用训练好的网络增强图像亮度。该算法增强的图像保留了原图的亮度特性,同时抑制了图像边界模糊的问题。XIAO B 等[20]采用全卷积网络学习输入图像的加权直方图,在输入图像中随机添加照明,模拟光照不均匀图像,进而学习像素的潜在不良照明信息,构造更优的图像加权直方图,从而在保留图像色彩和细节信息的同时,有效增强图像对比度差的区域。LV F 等[21]提出基于多分支卷积神经网络端到端的注意力引导算法。该算法首先利用合成数据集进行训练,得到两个指导亮度增强的网络。第一个网络可以区分图像中非正常曝光区域和照明良好区域,第二个网络能够区分图像中噪声和真实纹理,算法在两个网络的指导下对图像进行自适应增强。
分析可知,直方图能描述图像各灰度级包含的像素个数,但一幅图像被转换为直方图,图像的空间信息将会丢失。基于变换域的增强方法将图像信息转换至频域空间,再对转换后的频域信息进行增强处理,该方法对图像的空间位置信息不敏感。为了不丢失图像的颜色信息,同时解决低照度图像曝光不均匀的问题,不同于大多数增强算法在RGB 通道对图像进行增强,本文将RGB 图像转换至HSV 空间,结合遗传算法(Genetic Algorithm,GA)和多阈值分块增强算法(Multi-threshold Block Enhancement,MBE)增强图像亮度,并利用多尺度融合算法(Multi-Scale Fusion,MSF)和反锐化掩模算法(Unsharp Masking,UM)增强的图像轮廓信息以及引导滤波算法增强的图像纹理信息,得到细节信息丰富且曝光正常的输出图像。
本文算法主要分为颜色空间转换、亮度增强、细节增强和多尺度融合四个阶段,其流程如图1 所示。为防止算法在增强图像亮度时改变图像的颜色信息,先将低照度图像从RGB 空间转换至HSV 空间,由能够表征该图像不同信息的ImageH、ImageS和ImageV表示,其中ImageH和ImageS表征图像的色彩信息,ImageV表征图像的亮度信息,由此分离图像的色彩信息和亮度信息[22-24],并利用遗传算法求出ImageV的最优分割阈值,将ImageV分为亮度不同的多个子图。采用多阈值分块增强算法对各子图进行亮度的评判和增强,得到亮度增强后的ImageA。为增强图像的细节信息,利用引导滤波算法[25-28]和反锐化掩模算法[29]提取图像ImageV的轮廓信息ImageC和纹理信息ImageB,并借鉴多尺度融合思想[30]将ImageA、ImageB和ImageC加权融合,重构出曝光度正常且细节信息丰富的ImageV1,最后将ImageV1、ImageH和ImageS转换为细节清晰、对比度高且视觉效果良好的高质量RGB 图像。
图1 算法逻辑框图Fig.1 Algorithm logic block diagram
由于真实图像采集场景的曝光情况复杂且不受人为因素影响,若以相同增强方式增强整体图像亮度,处理后的图像极易出现部分区域过曝光或欠曝光的问题,因此算法在增强图像亮度时采用了更符合实际场景的多阈值分块增强算法对图1 中的ImageV进行增强。亮度增强阶段利用GA 搜索输入图像亮度分量的最优分割阈值,按照得到的阈值利用图像亮度渐变规律,将输入图像的亮度分量分为曝光度不同的多张子图,每张子图包含输入图像相同曝光区域的所有像素点,并利用多阈值分块增强算法对所有子图进行评判,根据评判结果对各子图亮度进行不同程度地增强。
1.1.1 获取子图
式中,k=0,1,…,n-1,T0=0,Tn=Z,整幅图像的灰度均值为
类内方差为
GA 搜索最优分割阈值的过程就是求适应度函数F(T1,T2,…,Tn-1)最优解的过程,具体求解流程为:
1)染色体选择。随机生成若干染色体并求取每一个染色体的适应度,选出当前种群中适应度最大的染色体,并在其余染色体中再随机选取一个染色体,两者一同作为下一代种群繁衍的基础。
2)基因交叉。在步骤1)选取的两个染色体上选取随机位置进行基因交换。
3)基因变异。为了防止步骤2)多次重复后陷入局部最优解,采用赌轮法在染色体上随机翻转bit,完成基因变异从而跳出局部最优解。
4)染色体更新。将基因变异后表现优异的染色体加入新的种群。
5)终止循环。当染色体的适应度函数满足条件或算法达到预设的迭代次数时终止算法。
1.1.2 子图评估
曝光融合框架可分区域增强图像亮度[10],其原理是利用曝光度映射公式将图像分为前景和背景两部分,并对这两部分的图像亮度进行不同程度地增强。多阈值分块增强算法在曝光融合框架的基础上进行了改进。1.1.1 节中已经将输入图像分为若干子图,由于过曝光区域只包含极少的图像信息,增强该区域的亮度对图像质量不会有太大提升,而对正常曝光区域进行亮度增强会使图像出现过曝光问题。因此算法在亮度增强阶段将只对欠曝光区域进行亮度增强,且着重增强富含丰富细节的欠曝光区域。曝光融合框架中提出的曝光度映射公式为
式中,W代表图像的亮度权重矩阵,Y代表场景光照图Image V,μ代表曝光强度。因为Y固定不变且图像的亮度与W成正比,所以图像的亮度和曝光强度μ成正比,而μ算子可以人为修改,因此可以通过设计算子μ达到简化曝光融合框架的目的。首先将1.1.1 节得到的子图按照其所包含像素的平均灰度值,把图像分为过曝光区域(平均灰度值大于0.5)、正常曝光区域(平均灰度值等于0.5)和欠曝光区域(平均灰度值小于0.5),再排除过曝光区域和正常曝光区域,并将欠曝光区域子图按其平均灰度值从大到小的顺序进行排序,其中平均灰度值最大的子图编号为0,最小的子图编号为n。输入图像可以分为两类,一类是包含正常曝光区域的图像,另一类是只包含欠曝光区域的图像。若输入图像不存在正常曝光区域,算法则默认以标准曝光的平均灰度值对编号为0 至编号为n的欠曝光区域子图进行亮度调整。为了更好地解决低照度图像中细微纹理特征难以被识别的问题,算法更侧重于增强含有丰富细节信息子图的亮度[9],即子图区域亮度增强程度与它包含的细节信息丰富度成正比,进而提升这些微小细节的可识别性。因此在提升图像亮度前需要对各子图进行复杂度评判,并以此作为各子图亮度提升的标准。
为了从局部信息和全局信息评判各子图的复杂度,参考传统LeNet-5[34]网络设计了复杂度评判卷积神经网络。该网络中需要设定的参数有两种,一种是人为设定且在训练过程中不变的值,如卷积核的大小、池化单元的大小以及卷积核平移采样时的步长和填充。另一种是在训练过程中变化的值,如组成卷积核各元素的值,这些值在第一次卷积操作时可随机选取,神经网络会在卷积过程中根据误差函数求得的误差不停修正这些参数。该算法的复杂度评判卷积神经网络由3 个卷积层、2 个池化层和1 个全连接层组成,如图2,网络的框架如下:
图2 复杂度评判网络模型Fig.2 Complexity evaluation network model
1)利用6 个5×5 的卷积核,以步长为1、填充为0 的方式对resize 为32×32 的输入子图进行采样,选取Relu 作为激活函数,生成6 个28×28 的特征图。
2)利用2×2 的池化单元(最大池化)以步长为2、填充为0 的方式对上层输入的特征图进行采样,得到6个14×14 的特征图。
3)Convolution3 为了提取各子图的局部信息和全局信息,首先在16 个5×5 卷积核中依次选取2 个5×5卷积核对6 个14×14 的特征图进行步长为1、填充为0 的特征提取,然后将得到的结果相加,再加一个偏置量并取sigmoid 得到16 个10×10 的特征图。
4)通过2×2 的池化单元(最大池化)对16 个10×10 的特征图进行步长为2、填充为0 的采样,得到16 个5×5 的特征图。
5)Convolution5 利用16 个5×5 的卷积核对16 个5×5 的特征图进行特征提取,选取Relu 函数作为激活函数,得到16 个1×1 的特征图。6)利用全连接层将Convolution5 得到的1×16 向量转换为标量C,并以此作为该子图的复杂度。该神经网络在池化过程对采集到的特征信息进行降维,使得网络在采集图像信息时不会将图像的噪声误判为图像本身的信息,进而提升了算法评判子图信息复杂度的准确性,
1.1.3 提升子图亮度
为了在增强图像亮度时尽可能保留图像的原有特征,设计了子图亮度增强公式为
式中,Lxj⊕代表j子图提升亮度后其内部标号为x像素的亮度(灰度值),Lxj代表j子图提升亮度前其内部标号为x像素的亮度(带有“⊕”的变量为亮度增强后的变量),Cj是1.1.2 节求取的j子图的复杂度,maxCA代表所有子图中复杂度最大的值,minCA代表所有子图中复杂度最小的值,μj代表j子图中所有像素的平均灰度值,μj-1代表比j子图亮度高一个等级的j-1 子图中所有像素的平均灰度值,提升亮度的表达式如式(4)所示。
式(9)通过对各子图亮度特性直方图进行线性拉伸提升图像整体的亮度。当输入图像被转换为直方图后,该图像的空间信息将会丢失,因此在对图像直方图进行处理时引入1.1.2 节求取的各子图空间信息复杂度C。由式(9)可知各子图增强后的亮度与该子图的复杂度C成正比。
算法在亮度增强阶段改善了图像的亮度,但亮度增强后的图像仍存在噪声大、细节信息不明显的问题,因此细节增强阶段利用引导滤波算法,滤除图像噪声,增强图像轮廓信息。同时引入反锐化掩模算法,增强图像的纹理信息。其中引导滤波能够利用引导图与原图(待滤波图像)之间的局部线性关系构建输出图像,并与原图做最小二乘,使输出图像在增强原图轮廓信息的同时尽可能逼近原图。引导图和原图相同时,该算法可实现对原图的平滑滤波。引导滤波公式为
式中,ωk表示某一滤波窗口,g代表图像中的某个像素点,q代表输出图像,I代表引导图像。通过式(10)可以看出q与I具有线性关系。式(11)描述了输出图像与原图的相似程度可由ak和bk决定。
式中,yg代表窗口中输入图像中g像素的值,Ig代表窗口中引导图像中g像素的值,为防止ak过大,引入正则化参数ε,引导图像选用原图像时ε将被舍弃。由式(11)可知,合适的ak和bk可使输出图像更好地还原输入图像,化简后ak和bk的表达式分别为
式中,μk和分别表示I在ωk内的平均值和方差,|ω|是ωk包含的像素个数表示y在ωk中的平均值。为了滤除图像的噪声,同时增强图像的轮廓信息,需要对原图像进行两次引导滤波处理,第一次处理滤除图像噪声,引导图像和待滤波图像均为图1 中的ImageV。第二次滤波增强图像的轮廓信息,引导图为第一次滤波的结果,待滤波图像为图1 中的ImageV。通过两次滤波处理后得到图1 中轮廓信息丰富、噪声少的ImageC。最后引入反锐化掩模算法,利用低通滤波获取原图像的低频信息,将原图像与低频信息相减得到图像的高频信息,并将增强后的高频信息与原图像进行叠加得到图1 中纹理信息增强后的ImageB。
优化算法在多尺度融合阶段通过拉普拉斯算子将ImageA、ImageB、ImageC分解为拉普拉斯金字塔和高斯金字塔,并通过融合ImageA、ImageB、ImageC的拉普拉斯输入与对应的各级别高斯权重图将ImageB中增强的纹理信息和ImageC中增强的轮廓信息与亮度得到增强的ImageA进行融合。多尺度融合逻辑如图3 所示。
图3 多尺度融合逻辑框图Fig.3 Multi-scale fusion logic block diagram
多尺度融合的过程为
式中,Vl(x,y)是混合拉普拉斯输入和各级别高斯权重图的结果,l代表金字塔的层数,Dk(x,y)表示标号为k的Derived Input 通道输入,Lal{Dk(x,y)}是输入Dk(x,y)的拉普拉斯金字塔是归一化权重图,高斯金字塔权重图(x,y)的归一化公式为
为了得到合适亮度的输出图像,算法取标准差σ=0.3,平均像素m=0.5。
改进算法在CPU 为3.40 GHz(4 CPUs),Intel core i7-855 U 1.8 GHz,内存为8192 MB 的Windows 10操作系统上用MATLAB 2018b 软件实现。由于常用的多目标识别任务会对图像内所有区域进行搜索,并根据搜索结果提取出希望获取的目标信息。多数情况下,图像拍摄于过亮或过暗的不均衡光照条件,使图像亮度分布不均匀,导致图像中细节信息不明显,降低了识别任务的准确率,严重时会导致图像中重要信息无法被识别。因此,选取细节信息丰富且照明不均匀的低照度图像作为实验对象,并通过定量分析和定性分析对各算法的增强结果进行评估。
2.1.1 亮度增强
图4 展示了选取不同分割阈值时算法的增强效果。图4(a)、(d)、(g)是阈值个数为5、12 和15 时通过GA 求得的分块阈值,直方图中每个平行于纵轴的分割线代表一个分割阈值。图4(b)、(e)、(h)为多阈值分块增强算法处理后的子图分割效果,其中各子图的灰度值与原图对应区域亮度成正比,与该区域亮度增强强度成反比。图4(c)、(f)、(i)是亮度增强后的RGB 图像,通过对比可以发现,当分割阈值个数为5 时,处理后图像亮度没有得到很好的提升,当阈值个数增加到12 时,图像的整体亮度得到了不错的提升。当阈值个数增加到15 时图像的亮度渐变特性已经确定,若阈值个数继续增加,求解最优分割阈值时,算法容易陷入局部最优解。为了高效地得到最好的增强效果,优化算法将分割阈值个数定为12。由图4 可以看出,增强后图像出现了不自然的分块现象,该问题的解决方法将在2.1.3 节介绍。
图4 可视化子图拼接图及其增强效果Fig.4 Visualized sub-picture splicing picture and its enhanced effect
2.1.2 轮廓及纹理增强
1)轮廓增强
引导滤波的目的是滤除图像噪声并增强图像的轮廓信息。图5(a)、(d)、(g)为原图,其它小图为引导滤波算法选取不同参数时的增强效果。R为滤波器滤波窗口半径,取值大小与算法的降噪能力成正比,EPS 为增强系数,取值大小与图像轮廓的增强程度成正比。经过实验对比发现R=4、R=8 或R=16,同时EPS=0.12或EPS=0.022时算法的滤波效果较好。
图5 引导滤波使用不同参数的效果Fig.5 The effect of guided filtering using different parameters
当R=8 时,算法在过滤图像噪声时能很好保留图像的轮廓信息。当R=16 时,增强图像会丢失大量的轮廓信息,故算法将权重R设置为8。当EPS=0.022时,图像的轮廓信息会明显增强,当EPS 大于0.12时,图像会出现明显的颜色失真,故算法将权重EPS 设置为0.022。
2)纹理增强
引入反锐化掩模算法是为了增强图像的纹理信息,图6 展示了算法高频信息增强参数取2、5 和10 时的效果图,通过对比可以看出增强参数的大小与图像中纹理的丰富度成正比。当参数设置为2 时,图像的纹理信息得到了很好的提升,但当参数设置为5 或10 时,图像的边缘会出现伪影,故算法将高频增强参数设置为2。
图6 反锐化掩模增强细节对比Fig.6 Comparison of unsharp mask enhancement details
2.1.3 多尺度融合
图7(a)为原始低照度图像,图7(b)为只经过改进算法增强亮度的RGB 图像,图7(c)为经完整改进算法增强后的RGB 图像。对比图7(a)和(b)可以看出原图经过分块增强后亮度得到了提升,同时也出现了明显的分块现象。多尺度融合算法通过改变权值将图1 中ImageA、ImageB和ImageC的拉普拉斯输入和它们各级别的高斯权重图进行了加权融合,提升图像亮度的同时在图像中融入了更多的细节信息,同时解决了图像的分块问题。
图7 多尺度增强算法弱化分块现象对比Fig.7 Comparison of multi-scale enhancement algorithm weakening blocking phenomenon
为验证算法的优越性,选取存在欠曝光区域且细节信息丰富的遥感图像作为实验样本,同时挑选5 个近几年提出的增强算法Patch-net(Platform:Tensorflow,CPU)[35]FBBF(Platform:MATLAB,CPU)[36]Zerodce(Platform:Tensorflow,CPU)[37]FFM(Platform:MATLAB,CPU)[38]FBM(Platform:MATLAB,CPU)[30]进行对比实验,并对它们的增强结果进行定性和定量的分析。
2.2.1 定性分析
图8 中给出了富含轮廓信息且光照不均匀的遥感图像,以及不同算法对该图像进行增强的效果。改进算法将RGB 空间的图像转换到HSV 空间进行处理,同时在多尺度融合阶段融入增强后的图像轮廓信息。通过比较不同算法的增强结果可以看出,改进算法在提升图像亮度的同时有效地解决了图像增强后颜色失真和亮度分块的问题。
图8 轮廓增强对比效果Fig.8 Contour enhancement contrast effect
图9 中分别给出了富含纹理信息且光照条件不均匀的遥感图像和不同算法对该图进行增强后的效果。改进算法在亮度增强阶段利用分块增强思想,多尺度融合阶段加权融合经过增强的图像纹理信息,使得增强后图像的亮度分布很好地还原了真实拍摄环境的亮度分布。通过对比增强结果可以看出,改进算法有效地还原了图像的纹理信息。
图9 纹理增强对比效果Fig.9 Texture enhances contrast effect
2.2.2 定量分析
为了验证算法的增强效果,选取了平均梯度(Average Gradient,AG)、信息熵(Entropy,EN)和熵增强(Extended Maximum Entropy,EME)三项客观指标对各算法的增强结果进行评判。
平均梯度可以评判图像细节的丰富程度和图像的亮度,图像包含的细节越丰富AG 的值越大,平均梯度表达式为
式中,∇xS(u,v)表示S(u,v)横向的差分,∇yS(u,v)表示S(u,v)纵向的差分,M和N表示图像的宽和高。
信息熵可以评判图像所包含的信息量,其值与图像的质量成正比,信息熵表达式为
式中,i表示图像中像素灰度值的大小,p(i)是整幅图像中出现灰度值为i的像素的概率。
熵增强能够评判图像的对比度,熵增强的值与图像的对比度成正比,熵增强表达式为
评判图像熵增强时需先将图像分为k1×k2块,并求出各块的平均像素灰度值,式中ymax;u,v和ymin;u,v表示位置在(u,v)周围像素的最大灰度值和最小灰度值。
表1 给出了对比增强算法Patch-net、FBBF、Zero-dce、FFM、FBM 和改进算法增强效果的客观指标,可以看出几种算法均可以提升图像的AG、EN 和EME,但本文算法的增强效果最好。
表1 不同算法的增强效果对比Table 1 Comparison of enhancement effects of different methods
本文算法首先将RGB 图像转换至HSV 空间,亮度增强阶段利用多阈值分割算法对图像的亮度通道进行处理,在提升图像亮度的同时还原真实场景的光照情况;细节增强阶段,利用引导滤波算法和反锐化掩膜算法提取并增强图像的细节信息;多尺度融合阶段,采用多尺度融合算法将提取的细节信息加权融合到曝光正常的图像中从而提升图像的质量。将该算法与近几年提出的增强算法从主观视觉和客观参数上进行对比后发现,该算法在提升图像亮度时能够更好地模拟真实场景的光照环境,并通过增强图像的细节信息进一步提升图像的质量。该算法仅适用于增强光照强度不均匀的图像,无法很好地还原过曝光区域的细节信息,很大程度限制了算法的普适性,下一阶段的工作将着重解决该问题。