1. 引言
随着CMOS图像传感器(CIS)技术的进步,背照式和堆栈式技术兴起,以及它具有的性价比高、体积小、功耗低等优势,CMOS图像传感器的应用领域越来越广泛。从汽车行业、医疗、安防、到无人机产品、虚拟现实(VR)以及增强现实(AR)技术等新兴市场的推动,CMOS图像传感器正迎来新一轮的产业成长高峰。自动曝光功能是影响成像质量的重要功能之一,是指CMOS芯片系统根据场景的光照条件自动调节曝光时间,保证捕获的图像亮度处于理想亮度范围内的过程。曝光过度,图像看起来太亮;曝光不足,则图像看起来太暗 [1]。
已有的自动曝光算法有基于图像平均亮度法、多区域图像自动曝光法、对分搜索自动曝光控制算法、权重均值法、查找表法、局部信息熵最大法以及人工神经网络的算法等。每种算法各有优点,在实时性和复杂度上均有改进,相应成本也较高。针对高对比光照情况,本文提出一种采用曝光时间和自动增益相结合的控制方法。
2. 算法基本原理
本文提出的自动曝光控制算法的基本思想是:首先根据当前拍摄场景所处的光照条件预先设定亮度均值的参考值区间,在该条件下拍得第一幅图像,并对整个图像进行测光,观察这幅图像的亮度直方图的分布情况,从而判断出所处条件是否为特殊光照条件,即是否为背光或强正面光照情况 [2] [3]。如果是普通光照条件下则直接计算整幅图像的平均亮度值,将此值与预设参考值进行比较后进行相应的曝光增益调节。如果是特殊光照条件,则将整幅图像进行分区,赋予感兴趣区域较大权重,然后进行曝光增益调节来使整个图像达到理想亮度值。
2.1. 直方图判断特殊光照
图像亮度直方图表示的是从最小灰度级到最大灰度级上像素点数的分布情况,是灰度级的函数,某一亮度值对应的像素数的多少反映了图像中某种灰度出现频率的高低 [4]。如图1,从直方图中可以得到关于图像亮度及其分布的很多信息。例如若大部分像素集中在直方图的偏右侧区域,并且有溢出最大亮度值的现象,那么这张图片曝光过度。若大部分像素位于直方图的偏左侧区域,并且有部分像素溢出于坐标原点外,则该图像表明曝光不足。本文的目标是通过进行自动曝光控制使得图像像素能够均匀分布,且主要集中在中央区域附近。
2.2. 图像区域权值分配
背光或正面强光情况下,通过适当调整背景区域和主体区域的权值来保证图像保持比较好的对比度 [5] [6] [7]。本文提供的自动曝光方法将图像进行如下分区,如图2所示。将图像分成6 * 6的模块,每个分块的权重值用Wij (i代表行号,j代表列号)表示。再将这些分块进行分区,其中红色框内的区域为中心区域,用m1表示;红色框和蓝色框之间的区域为次中心区域,用m2表示;蓝色框外面的区域为非中心区域,用m3表示。通常情况下,图像中重点关注的部分置于图像中央部分,因此,这些分区中m1分区的各个分块权重是三个区域中最大的,m2分区中的分块权重值次之,m3分区中的分块权重值最小。各个分块的权重值根据该块与关心区域的距离而定,可以用关系式表示为(1)式。式中(x, y)坐标代表的是当前要分配权重的分块坐标,(x0, y0)坐标代表的是关心区域的坐标,计算出二者的距离来判断当前分块的权重值。考虑了距离后,同时也要考虑光照情况,式中Φ (lux)表示当前的光照情况。也就是说根据不同区域的位置状况和亮度信息来确定分块的权重值。
(1)
为各个分区预设权重后,计算每个区域的灰度均值,然后进行如下判断:
1) 判断非中心区域的平均亮度均值是否在[0, 69]之间或者[180, 255]之间。如果是,计算这些分区占m3区域的比例。因为m3为非感兴趣区域,故若这个比例较大,则降低这些分块的权重。
2) 判断次中心区域的平均亮度均值是否在[0, 69]之间或者[180, 255]之间。如果是,则计算这些分块占区域m2的比例,若所占比例较大,则增加这些分块的权重,若所占比例较小,减少这些分块的权重。因为m2为较关心区域,分块所占该区域比例大说明亮度对比度大,此时图像的状态有可能是背光或者强正面光,因此增加权重。
3) 判断中心区域的平均亮度均值并计算这些分块占区域m1的比例。若所占比例较大,增加分块权重,否则降低权重。因为m1为最关心区域,希望更多关注该分区的细节,因此中心区域权重的增加及降低幅度是次中心区域的倍数。
最后按各个分块的权重值计算图像灰度均值,将所得灰度均值与目标灰度区间进行比较,进行曝光补偿。
2.3. 曝光补偿
CMOS图像传感器中自动曝光控制模块和自动增益控制模块一起协同工作来完成一帧图像的亮度调节,因此曝光补偿采用曝光时间与信号增益共同调节的方法。在CMOS信号未饱和范围内,曝光时间和信号增益与图像亮度之间是呈近似线性关系,即若保持信号增益不便,则可通过调整曝光时间调节图像亮度;若保持曝光时间稳定,可通过调整信号增益调节图像亮度至合适范围。相对于曝光时间调整来说,信号增益是微调。以调整曝光时间为主,调整信号增益为辅 [8] [9] [10] [11]。图像亮度与曝光时间和信号增益的线性关系可以简化为如下公式表示:
(2)
式中Y代表当前的图像亮度,T代表当前的曝光时间,G代表当前的信号增益,
代表一个常数的近似值。已知当前图像亮度、目标图像亮度、当前的曝光时间和当前的信号增益,计算出所需要的目标曝光时间和信号增益值。
由于图像亮度和曝光时间及信号的线性度是一个近似值,实际调解中,不可能通过一步到位的调节方式实现曝光调节,并且被拍摄物体的状态不确定性会出现帧间抖动,影响图像质量 [12] [13]。因此采用迭代法实现曝光补偿。

Figure 3. Step adjustment and balance condition diagram
图3. 步长调整及平衡条件图
定义平均亮度值
和目标亮度值Y,二者的差值定义为
。
定义两个阈值
和
,当
时,说明图像平均亮度和目标亮度值之间的差值很大,需要快速调整曝光时间和信号增益,加大迭代步长;当
时,迭代步长会减小;当
,说明图像的亮度达到了希望的最佳区间,为了判断其是否处于稳定状态,需要判断下一帧的图像平均亮度是否穿过目标值并且仍满足
条件,如果两个条件均成立,并且前帧平衡,说明图像的亮度即为所求亮度值且图像不会出现抖动情况,图像亮度调整过程已经处于了平衡状态,如图3所示,否则还需要调整迭代步长求出曝光时间和信号增益。
为便于理解,定义eg为曝光时间和信号增益的乘积:E代表当前曝光时间,G代表当前信号增益,
代表下一帧曝光时间,
代表下一帧信号增益。由于受读出帧率和允许范围的限制,这里定义Emax代表曝光时间的最大值,EL代表一行的曝光时间。
(3)
根据
值来判断曝光时间和信号增益的乘积eg,从而决定迭代步长的调整量。如果
,减小eg的值,否则增大eg的值。接着判断eg和
大小。
如果
,则
,
。否则
,
。将这时求出的
和
输出并作用于下一帧图像。经过多次迭代后生成稳定且满足条件的曝光时间和信号增益,从而获得理想的图像亮度。以上流程图如图4所示。
调整曝光参数时,如果图像亮度由暗向亮变化,即曝光参数增加时,由于信号增益的增加会带来图像噪声的增加,影响图像质量,此种情况下先调整曝光时间,在考虑信号增益的调整;如果图像由亮向暗变化,则先调整增益后调整曝光时间,可以减小噪声的干扰 [14] [15]。
3. 实验与验证
完成算法的设计工作之后,在软硬件系统上对其进行实现与仿真验证,测试环境如图5所示。CMOS图像传感器图像处理系统由上位机软件和硬件开发板组成。首先用C语言进行仿真验证,由此验证算法的正确性和可行性。然后用Verilog语言对硬件电路进行描述,进行算法验证,综合后可下载到Xilinx公司的FPGA开发板中实现。
3.1. 测试方法
为了尽可能多地包含不同场景、不同光照条件,算法测试采用典型测试和随机测试相结合的方法。表1典型测试读入指定参数对图形进行计算、判断调整后得到理想图像。测试项目包括以下类型:普通光照情况下物体的测试、背光情况下物体的测试、正面强光下物体的测试 [16]。

Table 1. List of typical test tasks
表1. 典型测试任务列表
随机测试的参数是随机生成的,包括自动生成的迭代步长和权重的分配,见表2。

Table 2. Randomly generated iteration step sizes
表2. 随机生成迭代步长
3.2. 测试结果
本文对测试任务进行了验证,测试结果如下图6所示:
由图6可以看出图像在几种典型的测试任务下都能够得到比较满意的曝光效果。图6(a)为普通光照下对物体的拍摄,图6(b)为普通光照下对24色色板的拍摄;图6(c)和图6(d)是针对正面强光下的场景进行的拍摄,其中图6(c)为没有进行曝光补偿时的图像,可以发现两个杯子上的图形和字体无法辨别,图6(d)为曝光补偿后的图像,此时杯子上的图形和字体已经可以看清楚了。图6(e)和图6(f)为背光场景下的测试,同样,经过曝光补偿后的图6(f)的细节表现比图6(e)的图像清晰。
4. 结语
本文提出一种应用于CMOS图像传感器的自动曝光算法,通过亮度直方图判断光照条件,依据各部分和中心区域位置关系进行权重分配,并结合使用自动曝光和自动增益控制进行曝光补偿调节,使得本算法能够实现比较理想的自动曝光调节。该算法易于实现,通过实验测试验证能获得较为理想的图像,能够适应不同场景下的曝光要求。
基金项目
国家重点研发计划项目(2017YFF0 107905);吉林省重大科技项目研发人才团队(KYC-JC-XM-2016-136);吉林省经济结构调整引导资金项目(KYC-JC-XM-2015-103)。
NOTES
*第一作者。
#通讯作者。