基于场景局部特征的多曝光图像融合
2020-09-04李卫中
李卫中
(湖北工程学院物理与电子信息工程学院,湖北孝感432000)
0 引言
现实场景因包含丰富的光影信息而呈现出了绚丽多彩的大千世界[1-2]。然而,当人们用数码相机记录这些景象时,往往因为数码相机的动态范围受限而导致自然场景信息的大量丢失[3-4]。例如:缩短曝光时间(欠曝光)可以很好地捕捉场景明亮区域的信息,但场景暗区的信息丢失严重;增加曝光时间(过曝光)可以很好地捕捉场景暗区的信息,但场景明亮区域由于过度曝光导致信息严重丢失。
为了尽可能多地捕获现实场景的信息,可以利用计算机图像处理的办法将同一场景多张不同曝光量的图像合成一张包括场景所有信息的图像。目前,主要有两种不同的方法实现上述过程。
第一种方法通常包括高动态范围图像合成和色调映射两个步骤[5]:首先通过模拟相机响应曲线和辐射图将多曝光图像序列合成一张高动态范围图像;然后,利用色调映射进行动态范围压缩使合成的场景图像能够在普通显示器上正常显示。该方法由于需要高动态范围图像合成和色调映射两个步骤,因此效率较低,实时性相对较差。
第二种方法则利用图像融合的方式直接将同一现实场景不同曝光量的图像序列融合成一张包括自然场景所有光影信息的图像,该方法被称为多曝光图像融合(以下简称曝光融合)。目前,曝光融合已经广泛用于便携式多媒体设备、数码相机以及机器视觉领域[6-7]。
为了获得高质量的曝光融合图像,本文提出了基于场景局部特征的曝光融合算法。首先,利用滑动窗将曝光序列分解为具有一定重叠区域的规则的图像块;其次,利用图像的局部特征(局部方差、局部可视性、局部显著性以及局部相似性)计算图像块权重值;接着,利用加权融合的方法计算最佳输出图像块;最后,将输出的图像块融合得到最终的输出图像。实验结果表明,无论在静态场景还是动态场景,本文提出的算法都能获得令人满意的结果。
1 相关工作
近些年,曝光融合已经成为图像处理和光学成像领域的研究热点[8]。Mertens 等[9]采用多尺度图像分解及融合的方法,利用图像的评价指标实现曝光融合;该方法可以获得较好的静态场景图像,但在动态场景融合时容易产生鬼影现象。Shen 等[10]改进了该算法,利用改进的拉普拉斯金字塔实现曝光融合,在一定程度上提高了图像质量,但算法复杂度也明显增加。Singh等[11]利用引导滤波和非线性方程增强场景信息,但图像显得不自然。Shen 等[12]利用概率模型和随机游走算法实现曝光融合,可以较好地呈现场景的整体效果,但局部对比度低且细节模糊。Bruce[13]采用局部信息熵评价每一像素的权重实现曝光融合,但该方法得到的图像比较昏暗。
上述算法只适合静态场景(即场景中所有物体都是静止不动)的曝光融合,如果现实场景为动态场景,即相机的移动或者场景中存在运动的物体(如:奔驰的小汽车、移动中的行人、随风飘摇的树枝等),直接利用上述算法实现曝光融合,将产生严重的鬼影现象。其中,因相机移动产生的鬼影现象可以通过将相机固定放置在三脚架上来解决[14]。除此之外,鬼影现象主要由场景中的移动物体产生。针对该问题,国内外众多学者展开了深入的研究。Jacobs 等[15]介绍了基于局部信息熵和对比度的去鬼影方法,但它只能消除因物体小范围移动产生的鬼影现象;Gallo 等[16]提出了基于随机抽样一致和泊松融合的去鬼影方法,可以较好地去除鬼影,但容易产生块效应;Zhang 等[17]分别利用梯度幅值和梯度方向表示对比度和空间连续性,其中梯度方向用于去除鬼影,但该方法只能在一定程度上减少鬼影并不能完全消除;Li 等[18]分别运用中值滤波和递归滤波去除鬼影现象和噪声,在一定程度上改善了图像质量;Kakarala 等[19]采用离散余弦变换去除鬼影现象,但只能去除小物体移动产生的鬼影;Liu等[20]介绍了稠密尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)算子实现曝光融合,但去除鬼影现象并不彻底;Ma 等[21]将图像序列分解为信号强度、信号结构和平均强度三个分量进行处理,然后分别对三个分量进行重构得到最终的融合结果,但去除鬼影效果并不彻底且算法效率不高。
2 本文算法
本文算法的基本思想如图1所示。
图1 本文算法流程Fig. 1 Flowchart of the proposed algorithm
首先,采用滑动窗函数将不同曝光量图像划分为规则的图像块,并且要求相邻的图像块具有一定像素的重叠。其次,引入图像的四种局部特征:局部方差、局部可视性、局部显著性以及局部相似性,分别计算图像块的权重值。如果是静态场景,只需要局部方差、局部可视性和局部显著性三种局部特征计算图像块权重值;如果是动态场景,则四种局部特征都需要用于计算图像块的权重值,其中局部相似性特征只用于去除动态场景的鬼影现象。接着,利用加权融合的方法计算最佳输出图像块。最后,将输出的图像块采取重叠区域像素取平均值的方法得到最终结果。
2.1 图像分块
在本文中,假设输入的图像序列已经配准,Ik表示曝光序列,其中k = 1,2,…,N,N 表示输入图像的数量。采用滑动窗将每一张不同曝光量的输入图像划分成尺寸为n × n 的规则的图像块,并且要求相邻的图像块有一定像素的重叠,滑动窗每次移动的步幅为μ。本文选取图像块的尺寸为15× 15(即n = 15),滑动窗的步幅选取为μ = 6。
2.2 局部方差
自然场景中包含大量的边缘和纹理等结构信息,这些结构信息可以充分表达场景中主要的可视信息,人类对场景中的结构信息感知十分敏感。文献[22]中指出自然场景的大量结构信息包含在局部方差中,图像的局部方差可以较好地表征场景中的大部分边缘和粗纹理等结构信息,能很好地呈现自然场景的基本信息,因此本文采用局部方差表示场景的结构信息,计算过程为:
其中:Sij,k为图像块 Pij,k的局部方差分别表示三颜色通道(红、绿和蓝)的局部方差。
2.3 局部可视性
场景的曝光亮度决定了图像的可视性:曝光亮度过低的场景过于昏暗,可识别的场景信息少;曝光亮度过高的场景由于亮度过饱和,可识别的信息也很少。即场景曝光亮度过低或者过高都会导致场景的可视性差,只有合适的曝光亮度才能让场景的可视信息足够多。因此,本文采用曝光亮度表示图像块的局部可视性。
首先,计算图像块归一化后像素的平均值。文献[18]中指出:像素的归一化亮度值小于0.1 和像素的归一化亮度值大于0.9 时,分别对应曝光亮度过低和曝光亮度过高两种情况,只有像素的归一化亮度值在0.5 附近才意味着合适的曝光亮度[9,23]。曝光亮度过低和过高两种情况下,图像块的可视性差,应该分配小的局部可视性权重;而曝光合适的图像块可视性好,应该分配较大的可视性权重值。因此,本文设计了一个分段函数表示图像的局部可视性权重,计算过程为:
2.4 局部显著性
JND(Just Noticeable Distortion)模型[24]用于衡量人类的视觉系统对场景信息的敏感度和感知力,是一个非常重要的图像质量评价指标。JND 模型以场景的纹理信息和背景亮度为基础,可以很好地突显场景中细节丰富、对比度好的显著区域。因此,本文利用JND模型估算图像块的局部显著性,计算过程为:
2.5 局部相似性
当场景中存在行驶的汽车、奔跑的动物以及行人等移动物体时,直接将曝光序列进行图像融合很容易产生鬼影现象(伪影),这将严重影响图像的质量。为了提高图像质量,消除场景中移动物体对融合图像的影响,本文利用局部相似性去除鬼影现象。
首先,将每个图像块转换为灰度图并将像素值归一化到区间[0,1]。由于图像序列中每张图像的曝光量不一样,导致序列中图像的亮度差异较大,亮度差异将直接影响去鬼影的效果。图像亮度过暗或者过亮,都无法有效地去除鬼影;而亮度合适的图像去除鬼影的效果会更好。因此,本文对灰度图进行了伽马校正,以便让每张灰度图的曝光水平都比较接近。文献[9,23]中指出,像素值为0.5 的像素有合适的曝光亮度,呈现的图像亮度合适,故应该尽量使图像在伽马校正后像素亮度接近0.5。当像素亮度值小于0.5时,应该通过伽马校正使像素亮度值变大以接近于0.5;当像素亮度值大于0.5 时,应该通过伽马校正使像素亮度值变小以接近于0.5;当像素亮度值等于0.5 时,伽马校正后亮度保持不变。本文将伽马系数设置为2ηij,k(这里ηij,k为像素亮度值),伽马校正过程可以表示为:
其中:ηij,k表示图像块 Pij,k的灰度图的像素的平均值。
本文选择曝光亮度合适的图像块的伽马校正结果作为参考图像块,采用欧氏距离表征图像块之间的相似性。为了提高算法效率、减小复杂度,采用欧氏距离的平方值计算图像块的局部相似性。利用图像块与参考块之间的相似性计算,检测图像块相对于参考块的运动物体,图像相似性Dij,k计算表达式为:
其中:σ2为标准差,本文设定σ2= 0.5。
2.6 权重图计算及图像块融合
为了便于后续采取加权融合的方法计算输出图像,本文综合考虑上述四种局部特征计算图像块的权重值。首先将各图像块的权重值对应相乘,然后进行归一化处理得到每个图像块的权重。图像块归一化权重Wij,k的计算表达式为:
其中:ε为一个很小的正常数,ε = 10-12。
需要注意的是:只有在动态场景时才需要考虑Aij,k,如果是静态场景,式(10)中Aij,k是不需要考虑的。
在计算得到每个图像块的权重之后,利用加权融合的方法计算最佳输出图像块Bij,其表达式为:
如果直接将输出图像块融合,很容易出现块效应,影响图像的质量。为了保持图像块之间的连续性避免出现块效应,同时由于图像分块时相邻的图像块有一定像素的重叠,因此本文将最佳输出图像块之间的重叠区域像素取平均值实现图像块融合,得到最终的曝光融合结果。同时,为了减小图像中的噪声,大约有1%的极亮和极暗像素被裁剪掉。
3 实验与结果分析
选择多组静态场景和动态场景的曝光序列用于实验的测试和分析,实验中所用的图像序列可从网站http://users.soe.ucsc.edu/~orazio/deghost.html下载,分别从主观和客观两方面与现有的算法进行比较和分析。实验的硬件平台采用Intel i7处理器(3.4 GHz,64 位),16 GB 内存的计算机。所有的算法全部利用Matlab R2016a编程实现。
3.1 静态场景测试
图2和图3为静态场景测试及实验结果比较,并分别给出了测试结果和对应的局部放大图。
图2 为曝光序列Candik 的测试结果,在每个算法测试结果的右边分别给出了台灯和桌上文件的局部放大图。从实验结果可以看出,文献[12,18,20]的算法得到的图像效果比较相似,这三种算法都获得了较好的整体效果,但局部对比度低,从局部放大图中可以看出,台灯的轮廓和文件中的文字都比较模糊。文献[13]的算法得到的图像整体比较昏暗,全局对比度低,画面看起来不够生动。文献[21]的算法在全局对比度和色彩饱和度方面都取得了较好的效果,但是在极亮区域损失了部分可视信息,例如台灯内部和桌上文件可视细节不是很清晰。相对而言,本文算法得到的图像整体效果更好,色彩鲜艳,画面看起来生动,场景局部可视细节丰富,例如局部放大图中的台灯轮廓和文件中的文字看起来都比较清晰。
图3 显示了House 图像序列的实验结果。文献[12,18,20]的算法为了同时兼顾亮区和暗区信息,整体对比度偏低,并且在门框部分呈现出比较严重的黑色光晕现象。文献[13]的算法呈现的图像整体比较暗,色彩的饱和度低,整个画面昏暗缺乏生机,场景的可视信息模糊。文献[21]的算法虽然呈现了较好的整体效果,但损失了场景中明亮区域的一部分可视信息,且该区域色彩饱和度低,例如室外花园区域由于亮度过饱和导致可视信息较少并且色彩不够鲜艳。本文算法保持了良好的整体效果,很好地兼顾了场景亮区和暗区信息,保持了较高的全局对比度和局部对比度,场景细节清晰可见,例如室外花园区域可视信息丰富,色彩鲜艳(见局部放大图)。
图2 序列Candik曝光融合结果Fig.2 Exposure fusion results of“Candik”sequence
图3 序列House曝光融合结果Fig.3 Exposure fusion results of“House”sequence
3.2 动态场景测试
动态场景的实验测试结果分别如图4 和图5 所示:图4 中每组图像的左边部分为算法得到的实验结果,右边为实验结果的局部放大图像;图5 中每组图像的上半部分为算法得到的实验结果,其下半部分为对应实验结果的局部放大图像。文献[17,18,20]的算法得到了类似的实验结果,这三种算法采用不同的方法实现动态场景曝光融合,但只在一定程度上减轻了鬼影现象,并没有完全去除鬼影,从图4 和图5 的局部放大图可以看出,马的头部、移动的皮球和行人都能看到比较明显的鬼影现象。文献[19]的算法虽然较好地去除了鬼影现象,但却导致了颜色失真(例如图4 局部放大图中马头部出现了比较明显的颜色退化)和较亮区域的场景信息丢失(图5 天空区域由于亮度过饱和导致天空、白云等可视信息大量丢失)。文献[21]的算法在图4 中虽然消除了鬼影现象,但马圈内部由于过于昏暗而损失了大量的可视信息。在图5 中,文献[21]的算法只在一定程度上减少了鬼影现象,并没有完全消除,例如图5 中的皮球和行人还是存在鬼影现象。相对而言,本文算法有效地去除了鬼影现象,同时保持了图像较好的整体效果和丰富的局部信息,例如图4 中马圈的内部细节和 图5中天空区域的信息都清晰可见。
图4 序列Horse曝光融合结果Fig.4 Exposure fusion results of“Horse”sequence
图5 序列Street曝光融合结果Fig.5 Exposure fusion results of“Street”sequence
3.3 客观评价
图像质量的客观评价指标可以更加全面地评价算法的性能。本文采用图像清晰度和曝光融合图像质量评价指标(Image Quality Assessment,IQA)[25]综合评价算法性能。图像清晰度利用平均梯度衡量图像中的微小细节,图像清晰度值越大,表明图像提供的可视信息越多,图像越清晰,可视效果越好,其定义为:
其中:zr,c表示像素灰度值,r和c分别表示像素所在的行和列坐标;R和C表示测试图像像素行和列的数目。
IQA 是文献[25]为曝光融合提出的评价指标,综合考虑了曝光融合前后图像的结构连续性和结构相似性,该指标的评定结果在区间[0,1],其值越大,表明图像质量越高。IQA的定义为:
其中,M(Y)表示IQA 计算结果;Ml(Y)表示第l尺度图像质量的平均值;L为图像分解尺度的数量;βl为第l尺度的权值。
表1 为不同自然场景的曝光融合图像清晰度测试结果,从表中的测试数据可以看出,本文算法在绝大多数场景的测试中,图像清晰度测试结果优于其他对比算法,表明本文算法得到的图像保留了场景更多的微小细节、有更好的图像清晰度。表2 给出了9 组不同自然场景的IQA 测试结果。在绝大部分场景测试中,本文算法的测试结果高于其他算法,说明本文算法在曝光融合前后保持了更好的图像结构连续性和结构相似性。
表1 图像清晰度测试结果Tab. 1 Test results of image definition
综合上述两项客观指标测试结果,本文算法有更加优良的性能,获得的图像具有更高的图像质量。
3.4 计算效率
本文所有的比较算法均在同一台PC 上采用Matlab R2016a编程实现。表3为本文算法与另外四种曝光融合算法计算效率的对比结果。本文算法和文献[18]的算法效率相当,两者的计算效率都较高,但本文算法获得的图像效果更好。文献[12]的算法效率次之,但该算法只适用于静态场景。文献[20-21]的算法效率较低。实验结果表明:本文算法在提高曝光融合图像质量的同时,保持了较高的计算效率。
表2 IQA测试结果Tab. 2 Test results of IQA
表3 计算效率测试结果 单位:sTab. 3 Test results of computational efficiency unit:s
4 结语
本文提出了一种实用而高效的曝光融合算法。该算法利用滑动窗将图像序列分成规则的图像块,通过计算图像块的局部特征,采取加权融合的办法得到最终的融合图像。选取12 组不同自然场景的曝光序列,分别在静态场景和动态场景从主观和客观两方面完成了对算法的测试和分析。实验结果表明:本文算法保持了图像良好的整体效果,保留了场景丰富的可视信息,完全去除了动态场景的鬼影现象。无论在静态场景还是动态场景,本文算法都表现出了更加优异的性能,得到了令人满意的图像。后期将考虑进一步提升算法的性能,以便将算法应用于实际项目中。