数字摄像机的高动态范围曝光算法及实现
2011-05-06王延长李培弘刘济林
杨 镔,王延长,李培弘,刘济林
(浙江大学信息与通信工程研究所,杭州 310027)
在月球车自主漫游、道路检测、隧道监测、金属焊接实时检测、智能交通等相关领域,图像信息作为最前端的信息输入直接影响着后端机器视觉算法执行的效果。这些领域对摄像机的动态范围和曝光模式提出了苛刻的要求。为此,本文提出了一种基于对数曲线响应功能传感器的曝光算法,在过曝光情况下,利用分段曝光及对数曲线响应曝光的方法对图像进行处理,算法对感兴区间与自适应判别的目标区间进行评估,动态调节分段阈值及相关的电压参数,从而实现对过曝区域的信息复原,提升摄像系统的动态范围。
1 相关研究
当前的曝光算法均基于传统的传感器模式。由于绝大多数的摄像系统并不存在机械快门,改变曝光时间长短及模拟/数字增益成为控制曝光量大小的唯一途径。一种较为简单的自动曝光控制方法是评估当前图像的亮度,并将它与用户自定义的理想指标相比较,通过控制电路增大或缩短曝光时间,增强或减弱模拟/数字增益值,逐渐逼近理想亮度区间[1],这类算法对过曝图像或者过暗图像的曝光控制结果会显得过暗或过亮。另一些比较普遍的曝光算法即通过研究不同光照条件下的亮度与曝光值之间的关系来进行曝光控制[2-5],或将图像分为几个不同权值区域[6-7]进行曝光评估,这些算法依然受到来自传感器的硬件限制。
为了克服单帧图像动态范围的限制,一类基于多曝光融合进行动态范围增强的相关算法开始应用。Goshtasby[8]对同一场景摄取不同曝光参数下的多副图像,对图像进行分块,求取图像序列中单帧图像每个图像块的信息熵,并将拥有最大信息量的图像块保存下来,合并成新的场景图像。Szeliski[9]通过对一系列不同曝光参数图像的相同位置像素求平均,再利用直方图均衡将平均图像映射到新的强度上从而增大单帧图像的动态范围。这类方法规避了单曝光参数下摄像系统在图像动态范围上的缺陷,通过多曝光图像的拼接从而获得对比细节丰富的图像,大大提高了图像的动态范围,对于没有实时性要求的静态图像系统,该方法效果较好,但对于实时性需求较高的系统不能满足要求。
2 对数曲线响应传感器
2.1 辐射照度响应函数
辐射照度响应函数即相机接收到的场景光强幅度 L与最终成像的像素亮度值 B相关联的函数。
传统传感器的响应函数如图1所示[8]。图像中的单色像素灰度值并非实际场景中光强的真实反映,受成像过程中电子元器件各种非线性因素的影响,响应函数呈现出单调递增的曲线。这种曲线在数字处理过程中常被模拟为线性递增函数。如图 2所示。
图1 相机响应曲线
图2 辐射响应曲线的线性模拟
当辐射光强 L超出传感器的量程时,就会呈现出过曝现象。这种约束也极大地限制了图像的动态范围。
2.2 对数曲线响应传感器原理
对数曲线响应传感器将辐射响应曲线的高亮度区段近似为对数函数曲线,本文利用 Photonfocus公司的 OEM-D1024E CMOS图像传感器进行实验,其辐射响应曲线如图 3所示[11]。
图3 对数曲线响应传感器的辐射响应曲线
对数曲线响应传感器将整个响应过程模拟类对数曲线,以近似对数函数的响应方式响应光亮信息,并将其转化为有效的电压信息传递给视觉系统,从而提高整幅图像的动态范围。
传感器原理使分段曝光的控制成为可能[11]。图4给出一种 3段式曝光响应曲线。整个曝光过程分为三段处理:原点至拐点 a的线性段、拐点 a、b间的低对数曲线段、拐点 b后的高对数曲线段。线性段主要对应低光强区域,以线性响应方式将光强信息转化为电平信息进行处理。低对数曲线段使用了低光强模式,响应曲线以对数曲线形式反馈光强信息,对中等亮度区域进行处理。高对数曲线段增强了对数曲线段曝光电平,对高亮像素进行广电转换,保证了原来在线性条件下过曝的区域复原了部分细节信息。
图4 三段式辐射响应曲线
3 算法流程
算法分为两个部分:感兴区间及目标区间的曝光调整,流程如图 5所示。
图5 算法流程图
(1)感兴区间调整 区间的灰度评估和线性曝光调整;
(2)目标区间调整 区间的对比度评估和曲线响应曝光,整个曝光过程涉及两个关键参数:曝光时段、曝光电平[12]。
3.1 感兴区间与目标区间
由于视觉系统应用的范围极广,实际场景复杂多变,算法需要对所关注的场景进行区间划分,对应曝光曲线的分段组成。
区间划分主要包括两个区间的选择,感兴区间与目标区间。感兴区间表示视觉系统所最为关心的区域,该区域的图像细节对于整体图像处理而言权重系数最大。对数曲线响应曝光算法的首要任务是保证感兴区间的细节完整度。因而,感兴区间的辐射响应曲线应尽量呈现线性状态。目标区间表征了图像过曝区域,该区域由算法自适应计算,对应辐射响应曲线中的对数曲线段。感兴区间的选择为人工选择,根据不同的系统应用自定义区间范围,以图 6为例,图 6为模拟月球表面环境场景,为看清月球车车身细节,我们将月球车车身设置为感兴区间。线性曝光调整稳定后,由于沙土的反光效果而在图像中形成两块过曝区域,它们将被自动判别为目标区间,并将通过对数曲线响应方式进行曝光。
图6 算法区域分布图
为了满足系统的实时性,算法将尽量与可编程器件(FPGA)相融合,并精简结构。目标区间判定算法如下:
(1)图像二值化,将图像中高亮度区域(灰度值255)与其余区域分割开;
(2)扫描线种子填充算法[13-14]填充过曝区域,并统计运算过程中过曝区域的边界信息及像素点数目。
图像二值化操作在 FPGA流水线中完成,整个流程附加一个比较器,由于像素位宽为 8比特,最低位的数值对图像内容基本没有影响,系统将最低位映射为与 255的比较输出。整合方法将使原本在CPU中运算的二值化时间复杂度由 O(N)降低为O(1)。二值化模块如图 7所示。扫描线种子填充是本文算法中唯一在 CPU中处理的模块,对于一副512×512的图像,扫描线种子填充算法的时间成本控制在 20ms以内[10],满足实时要求。
图7 基于FPGA的图像二值化模块
感兴区间和目标区间的边界信息被传递给 FPGA,并进入图像评估模块。
3.2 图像评估模块
对于感兴区间的灰度评估将更多的关注算法复杂度及实时性的需求。由于线性曝光区域的细节保留较为完整,本算法将应用基于 FPGA的区域平均及逼近迭代算法。
区域平均算法将统计感兴区间内所有的像素点的灰度值,取均值后与阈值区间相比较,当灰度平均值位于设定阈值区间内时,表明当前的线性曝光参数已满足系统要求。当灰度平均值在阈值区间外时,将采用迭代迫近法调整线性曝光参数(见§3.3)。
灰度平均值的计算通过可编程逻辑器件(FPGA)中进行并行计算,时间复杂度为 O(1),如图 8所示。条件选择器的界定参数包含了感兴区域的边界信息。
图8 基于FPGA的灰度评估模块
当感兴区间处于稳定曝光状态后,将对目标区间进行对比度评估。
对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量。在本算法中,结合 FPGA的特点,提出了一种基于直方图灰度标准差评估方法。对于大小为 M×N的目标区间 w内每个像素点 In,取目标区间内的均值:
然后求取目标区间内的灰度标准差 GSD(Grayscale Standard Deviation)
将式(3)中根号内部展开得到:
由式(4)可知,在进行对比度评估过程中可以通过一个乘法器及一个累加器在 FPGA中实现灰度标准差评估模块,如图 9所示。条件选择器的界定参数包含了过曝区域的边界信息。
图9 基于 FPGA的 GSD评估模块
由于乘法器的固定延时在 FPGA流水线的工作模式下对图像传输没有影响,整个系统的时间复杂度亦等于 O(1)。
3.3 曝光参数控制模块
感兴区间的图像评估完成后,根据评估结果进行迭代逼近调整。假设当前的图像灰度均值,当前的曝光参数 Ew,理想状态下的图像灰度值,由于图像灰度与曝光值在一定程度上近似线性关系,则目标曝光参数 E的公式如下:
对比步进法,迭代逼近法周期更短,图像的状态转换能在较少的帧间完成,且所有运算仅涉及到乘法器,可以在FPGA中利用硬件资源完成,时间复杂度为O(1)。
目标区间的曝光参数算法将遵循步进法进行调整。以三段式曝光为例,主要的曝光参数包括 T1,T2(曝光时间段,以曝光时间 100归一化),V1,V2(曝光电平,0~20,对应的曲线斜率等级)。参数相互间的的曝光特性曲线如图 10所示[11]
图10 对数曲线传感器曝光特性曲线
在 T1时间段内以电压 T1进行光电信息转换,在 T2时间段内变换电压为 V2。
依据曝光特性曲线及目标区间的图像评估,算法流程为:
(1)设置 T1=T2,V1=V2=V,步进调整电压 V使目标区间灰度均值位于高亮度区间,记录当前的V值作为最终的 V1值。
(2)设置 T1=T2,V1=V2=V,步进调整电压 V使目标区间灰度均值位于低亮度之间,记录当前的V值作为最终的 V2值。
(3)步进调整 T1,使目标区间的 GSD获得 7个步进单位(14-20)中的区域最优解。记录 T1。
第 1和第 2阶段通过计算目标区间的灰度均值,在不同的灰度阈值区间内获取曝光参数中的V1,V2,阈值区间保证了目标区间的图像复原包含了较大的灰度跨度。第 3阶段依据基于灰度标准差的对比度评估计算和调整曝光时间 T1,将目标区间的灰度进行扩展,最大化细节恢复的程度。
4 实验结果
在明暗对比强烈的场景下获取了普通曝光与基于对数曲线响应传感器的高动态范围曝光结果如图 11所示(我们设置室内区域为感兴区间)。
图11(a)为室内场景原图,窗外区域过曝造成细节丢失。将感兴区间设定为室内部分区域,
算法自动将窗外区域设定为目标区间,如图 11(c)。经过对数曲线响应曝光算法,窗外细节得到很大程度上的复原。原图与对数曲线响应曝光后图像的灰度直方图如图 12所示。
图11 普通曝光与对数曲线响应曝光结果
图12 实验前后图像直方图比较
感兴区间细节部分并没受到影响,处理前后直方图分布大致相同,而目标区间的直方图对比度则明显增强,分布更广,细节更丰富。图像动态范围约110 dB,接近传感器 120 dB极限。
本文算法实时性分析如表 1所示(以 512×512图像为例)。
时间复杂度为 O(1)表示算法模块在 FPGA流水线中完成,无需额外时间损耗,对于一副 512×512的图像,除去逻辑损耗,处理速率接近 40帧/s。
本文算法与图像分区曝光算法、多曝光图像拼接算法的性能比较如表 2所示。
表1 算法实时性分析
表2 3种自动曝光算法比较
5 结语
对数曲线响应传感器的研究尚处于起步阶段,本文针对传感器的特点,提出了一种分段性曲线曝光的自动算法,能够自动评估图像亮度等级,处理实际场景中明暗跨度大,逆光强烈等情况,在机器视觉领域具有广阔的应用前景。同时算法与可编程逻辑器件紧密融合,通过硬件的并行计算降低了软件层次的时间复杂度,从而保证前端视觉系统的实时性。
[1]Cho M,Lee S G,Nam B D.The Fast Auto-Exposure Algorithm Based on the Numerical Analysis[C]//Proceedings of the SPIE Conference on Sensors,Cameras,and Applications for Digital Photography,1999,3650:93-99.
[2]徐培凤,李正明,孙俊.基于图像的自动曝光算法研究[J].光学仪器,2005(2):59-61.
[3]杨海涛,常义林,王静,等.一种基于亮度直方图的自动曝光控制方法[J].光学学报,2007,27(5):841-847.
[4]Sampat N,Venkataraman S,Yeh T,et al.System Implications of Implementing Auto-Exposure on Consumer Digital Cameras[C]//Proceedings of the SPIE Conference on Sensors,Cameras,and Applications for Digital Photography,1999,3650:100-107.
[5]王雷斌,张爱武,叶泽田,等.一种自适应快速曝光控制方法[J].测绘科学,2009,34(2):115-117.
[6]甘玉泉,高伟.一种基于图像分区的自动曝光算法[J].微计算机信息,2009,25(12):303-304.
[7]梁佳毅,洪志良.适用于大动态范围场景的自动曝光控制算法[J].光电工程,2008,35(5):89-92.
[8]Goshtasby A.Fusion of Multi-Exposure Images[J].Image and Vision Computing,2005,23(6):611-618.
[9]Szeliski R.System and Process for Improving the Uniformity of the Exposure and Tone of a Digital Image[P].US,6687400:2004-02-03.
[10]Grossberg M D,Nayar SK.What is the Space of Camera Response Functions[C]//Proceedings of IEEE Computer Vision and Pattern Recognition Wisconsin,USA:IEEE,2003:602-609.
[11]Photonfocus A G.LinLog-Principle and Practical Example[R].Datasheet,2007,2:21.
[12]Harton A V.A High Dynamic Range CMOS Image Sensor with Pixel Level ADC and In-Situ Image Enhancement[J].Proc SPIEIST Electronic Imaging,2005,5677:67-77.
[13]Pal N R,Pal S K.A Review on Image Segmentation Techniques[J].Pattern Recognition,1993,26(9):1277-1294.
[14]郭文平,龙帮强.扫描线种子填充算法的改进[J].天津工业大学学报,2008,27(2):48-52.