3A定义
3A 是Camera ISP 控制算法的一个重要组成部分,通常分为自动曝光(AE)、自动聚焦(AF)、自动白平衡(AWB)三个组件。


本问主要讨论AE,关于AF的内容可参考相关主题文章
关于AWB的内容可参考相关主题文章
自动曝光(Auto Exposure)
自动曝光算法可以理解为一个伺服系统,它不断监控ISP生成的每一帧图像的曝光状态,如果发现采集到的状态与理想目标发生偏离(超过容许范围)则立即进行干预响应,使系统尽快回到容许的工作范围内。
在一个响应周期内,AE算法需要处理的具体事项是:
- 根据ISP 硬件生成的图像曝光统计数据评估当前图像的曝光质量
- 如果曝光质量需要调整,则根据当前的工作参数和理想曝光目标生成下一帧图像的工作参数
- 将新的工作参数写入各硬件设备,驱动光圈、sensor 快门及增益到达新的位置
AE 算法的第一个任务是评估当前图像的曝光质量,大体上可以分成曝光不足、曝光适当、曝光过度三种情况。人类使用肉眼观察比较容易判断一副图像是否曝光适当,但是AE 算法需要一定的客观标准来精确地定义什么是曝光适当。目前主流的ISP 硬件都会提供关于图像的直方图统计数据,AE 算法可以利用直方图的均值来判断图像是否曝光适当。对于多数场景而言,当图像直方图的均值位于设备动态范围的一半位置时,画面的曝光质量通常是比较理想的。


AE 算法的主要调控对象一般是光圈、sensor积分时间、sensor增益(包含模拟增益和数字增益)、ISP数字增益这四个参数,如下图所示。


光圈
光圈是镜头上的一个组件,由机械或电压控制,可通过控制通光孔的开合程度,控制进光量的大小,光圈的进光量与其f值的平方成反比。


光圈的F-stop值
在计量光学系统的通光量时经常使用f-stop作为计量单位。F-stop定义为镜头焦距f 与光圈孔径D 的比值,即
f-stop = f / D
f-stop值越大表示光圈孔径越小,常用的f-stop值一般在1.4~22之间,如下图所示。


由于f-stop反比于光圈孔径,根据圆面积公式S=πD^2/4,镜头的实际通光量与f-stop的平方成反比,它们之间名义上的对应关系如下。


一般来说,光圈f值从f1.8~f22较常见, 其中 f1.8~f5.4,室内用得多一些;而f5.0以上室外用得多,暗场景一般使用最小的f值光圈以获得较大的通光量;
镜头/光圈的种类


由于体积的限制,绝大多数手机镜头模组只有固定光圈,极少数手机(三星S9)具有一个机械的切换叶片,可以实现在F1.5和F2.4两个光圈之间的切换。


音圈马达在不通电(no power)状态下,镜头聚焦到无穷远点(Inf),在通电后马达带动镜筒运动,使焦点向近处即微距(Macro)方向移动。软件通过控制驱动电流将焦距固定到某一位置处。


光圈大小与成像质量的关系
光圈大的优点:通光量大,图像信噪比高,有利于图像质量
光圈大的缺点:景深(depth of field)浅,只有在物方焦距前后一小段范围内的物体可以成清晰像,其它位置成像都是模糊的
光圈小的优点:景深大,物方焦距前后较大范围内均可成清晰像
光圈小的缺点:通光量小,图像信噪比低,不利于图像质量


景深的概念




景深效果对比








在安防行业中,经常会需要camera抓拍人脸和车牌,且图像质量需要满足软件识别的要求。假设一辆车以36km/h的典型速度通过路口,即车速每秒10米,如果camera的景深为2米,则有效的抓拍窗口只有0.2秒,可以抓拍5~6帧清晰的车牌。如果车速是108km/h(高速公路场景),则有效抓拍窗口只有不足0.1秒,只能抓拍1~2帧清晰的车牌。因此在部署摄像机时,需要精心设计抓拍动作的同步时间,使抓拍瞬间目标刚好位于最佳景深范围内。
Sensor 积分时间
用户在使用camera拍摄时需要根据场景特点决定所采用的曝光时间(exposure time),或者让camera 在设定范围内自动选择最合适的曝光时间,这时所涉及的曝光时间概念主要与拍摄场景有关,一般是以毫秒为单位计算的绝对时间。用户更加熟悉和容易理解的概念其实是快门速度(shutter speed),以秒为单位,如1/100秒,1/1000秒等。
而sensor 中用来控制曝光长短的寄存器参数称为积分时间,一般是以行为单位的,这个概念是源于sensor 的技术特性,一般不需要用户去理解。
曝光时间和积分时间存在确定的换算关系。比如说int_t=159,指的是sensor reset 信号和read 信号之间的间隔为159行,而每行所占的绝对时间(line_time)与sensor 主频(pixel clock, PCLK)的和每一行包含多少像素(行长 )有关,具体公式是:
line_time=h_size / pclk
其中h_size 为行长,1/pclk 为一个时钟周期,即扫描一个像素需要花费的绝对时间
因此曝光时间与积分时间的换算公式如下:
exposure time = int_t * line_time
举例来说,假设一个1080p sensor PCLK=76MHz,每行配置成2000个像素,则有
line_time = 2000 / 76MHz = 26.32 us
如果某个场景需要10ms曝光时间,则sensor 积分时间应如下计算,
int_t = 10000us / 26.32us = 379.9 (行)
显然这个例子可以安全地将sensor 寄存器配置为380行,就能得到10ms的曝光时间。
但是当 int_t < 2 时问题就会变得有些复杂。假设计算出的理想积分时间是1.5行,此时自动曝光算法就很容易产生振荡,不停在1行和2行之间切换而无法稳定在一个固定值。因此有些sensor 会支持分数行,可以帮助解决这个问题。
Sensor 增益
Sensor 本质上是测量光电转换事件的线性元件,它的输入是入射到光敏阵列上的光子数,输出是一个N位二进制整数,最大可以表示(2^N-1)。Sensor 的输入输出关系可以用以下公式描述
PixelValue=gain * coeff * LightLevel
其中,
coeff 是综合了光电转率效率和AD转换效率的固定常数,
gain 是sensor 的增益,它可以由外部程序配置,决定了输入输出曲线的斜率。
当环境光线充足时,gain 取最小值(1.0),较大的输入才能驱动输出变化一个bit。
当环境较暗时,gain 可以取较大值,很小的输入就能驱动输出变化一个bit。


Sensor 增益实际上存在两种形式,即模拟增益和数字增益。模拟增益典型值在1~16倍之间,数字增益在1~6倍之间,两者相乘可以提供接近100倍的总增益。
有些sensor 提供两组寄存器分别控制模拟增益和数字增益,有些则只提供一个寄存器用于总的增益,sensor 内部进行分配。其实不论是用户指定,还是sensor 自己内部分配,两者遵循的原则都是一样的,并没有实质区别。
由于各种设计约束,sensor 模拟增益不是连续的,而是一系列离散的增益点,并且划分成若干个阶梯,每个阶梯内的步长也可能不等。以OV2710为例,其增益受寄存器的9个bit控制,增益公式是
gain = (b.8+1)*(b.7+1)*(b.6+1)*(b.5+1)*(b.4+1) * (b[3..0]/16 +1)
显然,当b[8..0]=0x00时,gain=1.0,
当b[8..0]=0x1FF时,gain=2^5 * (15/16 + 1) = 62.0,
若单独考察增益步长,
当b[8..4]=0x00时, delta=1*1/16=0.0625,此阶梯的16个增益点为
1.0625, 1.125,...,1.9375
当b[8..0]=0x1F时, delta=32*1/16=2,此阶梯内的16个增益点为
32, 34, ..., 62
ISO 12233:2006 规定了测量数码相机曝光指数和曝光速度的标准方法。大多数相机产品都会将base ISO值设计为100,当相机工作在此ISO值时,大约0.8lux*sec 的曝光量可以使反射率为18%中性灰得到接近适当(偏暗)的曝光。而0.8lux*sec基本上可以理解为800lux(典型办公室照度)条件下曝光1ms时间。
Sensor 的增益将按比例提升相机的ISO。对于base ISO=100 的相机,当 sensor gain=2时,相机的有效ISO即变成200,以此类推。
F-stop


曝光值 EV
光圈、快门、增益都可以影响画面亮度,最终决定画面亮度的是三者的乘积。据考证,人们早在1844年就开始以曝光表的方式列出不同场景下改采用的曝光参数。有兴趣的读者可以通过以下链接进一步了解曝光表的发展历史。
现在较为流行的是1960年代提出的APEX曝光系统。APEX 全称是 The Additive System of Photographic Exposure,该系统定义了一个经验公式,基本形式如下


其中
t是曝光时间,单位为秒;
N是光圈的f-stop值;
Ls是场景照度,可以是任一适当的单位,如lux;
S是相机敏感度,可以使用ISO;
K是相机厂家提供的与具体相机配置相关的一个常数,使用该常数能够获得厂家认为最佳的曝光效果。
APEX 曝光方程总结了曝光时间、光圈、相机感度、场景亮度之间的关系。在此基础上可以定义一个曝光值 (exposure value)参数,代表能够给出同样曝光的所有相机光圈快门组合。它的定义是


EV0 对应于ISO100,曝光时间为1秒,光圈为f/1.0,以及与之等效的所有曝光组合,这些组合可以使18%的中性灰卡在所处光照条件下获得合适的曝光。因此曝光值主要体现了拍摄场景的亮度,同时在一定程度上也能反映相机的灵敏度。
曝光值每增加1称为增加一挡曝光,也就是将曝光量减半,比如将曝光时间或光圈面积减半,因此可以从EV0出发,按照光圈、快门加倍或减半的方式推导出其余的曝光档位,一般常用的档位在-6~20之间。
如果已知使画面正确曝光的EV值,则可以在下表中选择一个合适的曝光时间+光圈组合。举例来说,假设已知某拍摄场景正确曝光需要EV2,在固定ISO100的前提下,光圈和快门组合只能在(1s,f/2),(1/2s,f/1.4),(1/4s,f/1)这三个方案中选择一个。


下表给出了EV0~EV20的典型场景。


下表给出了更完整的EV数据,同时包含了ISO,光圈和快门值


不同EV值对画面亮度的影响规律。


曝光三角形 Exposure Triangle
光圈、快门、增益都可以影响画面亮度,但是这三者在效能上并不是完全等价的。摄影领域常用一个曝光三角形来形象地阐释三者之间的关系,如下图所示。


光圈(aperture)的副作用主要是影响景深,这个问题已经在光圈章节中专题讨论过了。
快门(shutter)的副作用主要是影响运动模糊。一般而言,当曝光时间大于15ms时,画面中速度大于40km/h的车辆就会开始变模糊。当曝光时间大于30ms时,画面中走动的人就会变模糊。因此,拍摄对象的预期移动速度基本上决定了曝光时间的上限。
增益(ISO)的副作用主要表现为画面噪声,尤其是数字增益会引入较大的噪声,显著降低图像质量。
下图汇总了三者的效能,可供用户参考。


典型场景的照度
晴天
在晴朗的阳光下,地面所接收到的照度是100,000lux


阴天
如果云层遮挡住了太阳,地面所接收到的照度是10,000lux


夜晚
如果是夜晚,在满月的情况下,地面所接收到的照度是0.1lux


人行街道
5lux的照度足够满足行人们在夜晚时的视觉需求。


公路
此种情况下照度必须要高一些,一般在10~30lux左右。


工厂车间
需要进行机械操作,照度为100~300lux可以满足工人在工作时的视觉需求。


办公区域
300~500lux的照度是比较舒适的光环境。


AE算法的策略
AE算法的策略主要分光圈优先、快门优先、增益优先。
- 光圈优先算法只适用于Camera 装配有可变光圈镜头的情形,此时算法会优先调整光圈到合适的位置。当光圈调整到极限后再开始分配曝光时间和增益。
- 当camera光圈不可调时,AE 算法通常会优先分配曝光时间,再分配sensor 增益和ISP 增益。
- 增益优先则是优先分配sensor 增益和ISP 增益,再分配曝光时间,适合拍摄运动物体的场景。
AE 策略的理论依据
AE 策略的主要考虑是图像质量,不同的控制手段对图像质量的影响是不同的。
- 增加光圈可以增大sensor 收集光信号的面积,增加曝光时间可以延长sensor 积累光信号的时间,这两种途径都有助于积累信号,提高信噪比,所以会提高图像质量。
- sensor 增益实际上存在两种形式,即模拟增益和数字增益。模拟增益在放大信号的同时会等比例地放大噪声,所以对提高信噪比没有好处,但也没有坏处,可以放心地使用。而数字增益由于精度的限制会引入量化噪声,不仅对提高信噪比没有好处,反而会有恶化信噪比,降低图像质量,因此需要慎用。
- ISP 增益是纯数字增益,和sensor 数字增益是同样的道理,所以通常很少用。
AE算法的分工
AE算法需要依赖ISP 硬件提供的关于图像的曝光统计数据。曝光统计需要对图像中的每一个像素进行分类和计算,涉及的计算量非常大,对时序要求非常严格,所以这个工作只能交给硬件流水线去做,不适合CPU 处理。
AE算法中根据统计数据评估图像质量、产生新的控制参数的部分则有逻辑比较复杂、算法经常需要升级、数据吞吐量一般不大等特点,因此非常适合用CPU 处理。
通用的Camera ISP 流水线中都会提供AE 统计功能,而且这部分设计有越来越复杂的趋势。


举例来说,
海思ISP 支持
- 三个 AE 采样点, After DG, WB, DRC
- 1024bin 全局直方图
- 不支持 局部直方图
- 分块统计, 最大支持 15x17 块,最小 1x1 块
Apical ISP 支持
- 三个 AE 采样点,After VTPG / WB / Decompander
- Luma Variance 统计
- 1024bin 和 5bin 全局直方图
- 支持 5bin 局部直方图
- 分块统计, 最大支持 33x33 块,默认值 21x23。
AE 统计策略
当需要对一件事情进行的统计的时候,首要的问题就是如何确立统计口径,或者说如何分配统计权重。不同的统计口径计算出的结果会存在较大差异。这是一个开放的问题,没有对错之分,更多是主观取舍。常用的统计方法有以下几种。
- 全局统计 是指将图像全部像素都统计进来,像素的权重完全一样
- 中央权重统计 是指只统计图像中间部分,这主要是因为人们关注的重点通常都位于图像的中间部分;镜头的成像效果也是中央部分清晰度最高,越到边缘清晰度越低
- 中央加背景 图像中间部分占50%权重,图像整体作为背景占50%权重
- 加权平均统计 是指将图像分为不同的部分,如9宫格或者13~15个分散的曝光格,每一部分赋予不同的权重,通常中间部分赋予较大权重,相应的边缘部分则赋予较小的权重。
- 用户ROI 用户通过人机界面划定一个窗口,AE 只统计这个固定窗口内的像素值


典型AE算法
- 基本思想
典型的 AE 算法是一种基于负反馈原理的PID算法。算法的控制参数分段可调,在不同的区间内算法的收敛速度不同,以期在过渡平滑性和快速响应之间取得较好的平衡。


具体来说,
- 在当前曝光量与目标量差别在range0以内的时候,说明当前曝光已经满足要求,不需要进行调整;
- 当差别在range1的范围内时,则说明当前曝光与要求的光照有差别,但差别不大,只需要用较小的步长来进行调节即可;
- 当差别在range2的时候,则表明差别较大,需要用较大步长来进行调节。
2. 控制参数
当曝光误差超过容许值需要调整时,算法需要计算两个值,即
- 当前帧的曝光量,由sensor 曝光时间、sensor 增益、ISP 增益组成。需要注意的是,sensor 的曝光时间和增益通常是非连续的,很可能与AE算法输出的目标参数并不相同,所以当前曝光参数的准确值需要通过sensor 驱动从sensor 寄存器中直接读取,而不能使用AE算法缓存的目标值。
- 增益系数,g=target/measured, 其中target 为理想画面亮度, measured 为当前画面亮度的实测值。 由于sensor 的本质是一个线性元件,若暂不考虑像素饱和等非线性因素,只要在当前曝光总量的基础上乘以系数g,就可以使画面目标亮度达到理想值。
因此AE 算法的核心任务就是计算正确的g参数,这个参数能够使画面得到正确的曝光。
3. 阻尼(damping)
当计算出正确的g参数后,一般并不会让其立刻在下一帧图像就生效。这是因为如果增益变化较大,图像就会产生闪烁,主观感受不好。通常人们更喜欢画面平滑过渡,因此每帧图像的增益变化不宜过大。实现平滑的方法就是给新的参数人为施加一个阻尼,使其缓慢地向新参数过渡。用数学公式描述就是
g(n)= (1-s) * g(n-1) +s * g_target
不妨取 s=0.2,此时每个g参数包含80%的旧参数和20%的目标参数,经过若干帧后旧参数自然衰减,新参数收敛到目标参数,即 g(n)=g_target
从数学上看 (1-0.2)^10=0.1, (1-0.2)^30=0.001, 说明10帧之后(约0.3秒)旧参数的比重下降到10%,30帧之后(约1秒)旧参数的比重可忽略。对于典型的安防应用场景,一般建议经过8~16帧图像过渡到理想亮度。而对于运动和车载型应用,由于场景动态变化大且快,一般建议经过3~4帧图像过渡到理想亮度。
4. 参数分解
当根据路径规划策略计算出下一帧的g参数后,需要遵循一定的策略和约束把g参数进一步映射为sensor 曝光时间、sensor 增益、ISP 增益等设备控制参数。如前所述,曝光时间可以提高图像信噪比,所以在约束边界内应尽可能先将曝光时间用满,然后依照sensor 的硬件约束分配sensor 增益,最后将剩余的增益全部分配给ISP 数字增益。
5. 参数同步
前面分解出来的控制参数必须同步生效才能使画面获得预期的曝光。如果某一项参数未能与其他几项同步生效,则画面会因为短暂过亮、过暗等原因出现闪烁,这是需要避免的。
另一方面,所有参数都需要在一个特定的时间窗口内生效,即前一帧图像已经结束,新一帧图像尚未开始的这段时间,也就是sensor的垂直消隐(vertical blanking)窗口,这个窗口时间很短,典型值在3~5毫秒左右,更短的可以到1ms,如下图所示。


目前主流的sensor都是使用I2C总线进行寄存器读写,而I2C总线的最大时钟频率是400kHz,读写一个16bit寄存器差不多每次需要0.1ms,而完成一帧图像的相关配置常常需要10~20次以上读写,所以在垂直消隐区完成sensor 寄存器配置时间压力是很大的。而且这还是单纯的配置参数,并不考虑3A算法本身所需的计算时间。实际上,在常见的软件硬件架构中,就是把全部消隐时间都分配给3A算法往往都是不够用的。
如果配置sensor 增益时错过了这个窗口,新一帧图像已经开始,则画面的亮度就会在一帧中间发生变化,上半部分使用旧的参数,下半部分使用新的参数,这种情况也是闪烁的一种,是需要避免的。
现在的sensor 为了方便使用,缓解配置参数时间窗口过短的压力,往往都支持一组影子(shadow)寄存器,需要同步生效的参数(曝光时间和增益)可以在任何时间点写入shadow寄存器,当sensor开始捕捉新的一帧图像之前,会自动把shadow 寄存器的内容同步到实际生效的寄存器,这样就把几个毫秒的时间窗口扩展成一帧时间,极大地缓解了用户压力。


需要注意的是,虽然这个方案为软件争取到了一帧的缓冲时间,但同时也意味着系统的响应延迟(latency)增加了一帧,即根据第N帧统计数据生成的新控制参数只能在第N+2帧才开始生效,因为软件需要第在N+1帧时间内完成算法的计算工作。同理,根据第N+2帧统计生成的新控制参数需要在第N+4帧才开始生效,以此类推。因此,如果环境光照条件在第N+1帧发生剧变,算法会在第N+2帧结束时检测到画面异常,在第N+3帧中计算出新的参数,在第N+4帧中实际进行补偿。
事实上,如果CPU的任务比较繁忙,或者每帧的时间很短,则一帧的时间可能还不一定够3A算法完成所有计算,此时则需要考虑继续增加一帧的缓冲时间。
6. 题外话
有些低端sensor本身就支持自动曝光功能,如果不小心打开了,就会与camera ISP的AE算法产生竞争,画面会不停地随机闪烁。当遇到闪烁问题是,应首先注意排除这个问题。
低照度降帧
在正常光照条件下,camera 一般每秒输出25帧或30帧图像,基本上可以保证画面流畅不卡顿。对于一些较特殊的应用场景,比如道路监控,由于实际车速较快,即使是每秒30帧图像也会觉得不特别流畅,所以用户会希望camera 能够输出每秒50帧或60帧图像。当然提高帧率的代价是传输带宽加倍,存储成本加倍,整个应用链条上所涉及的所有设备成本都会加倍,所以高帧率camera 的普及将是一个长期的过程。
在现有的技术条件下,CMOS sensor 还难以在低照度条件下保持与正常照度下同等的图像质量。为了尽量提高图像的信噪比,有时用户不得不接受延长sensor 曝光时间作为折衷方案,对图像质量带来的主要影响是
- 画面中的运动物体会变模糊,车牌识别功能会受较大影响,甚至不可用
- 曝光一帧可能需要正常2~3帧的时间,导致camera 输出帧率降低,画面卡顿
一般要求帧率最低不得低于6帧,实际较多使用12帧左右,否则画面会卡顿严重,因为丢帧造成的价值损失可能已经超过图像质量改善带来的价值收益;
所以,终极的解决方案仍然是寄希望于sensor 的技术革新,通过使用新材料(锗材料)、新工艺(背照式、堆栈式)不断提高sensor 的灵敏度,即使在低照度下也能输出高质量的图像。
AE的呼吸效应
- 图像质量呼吸
假设AE算法需要将画面亮度提高至2倍,一般来说可选的工具有两个
- sensor 曝光时间x2
- sensor 增益x2
假设这两个工具都是可用的,那么进一步的问题是,这两个工具在效果上是完全等价的吗?
粗略看是差不多的,但仔细看的话其实是不完全等价的。下图研究了在增益不变的情况下,通过控制光信号积累多少来调节画面亮度,图像信噪比的变化规律。从图中可以看到累积的光子数越多图像的信噪比越高,图像质量越好。


下图研究了在信号不变的情况下,通过改变sensor增益来调节图像亮度,图像信噪比的变化规律。显然增益越高图像信噪比越低,图像质量越差。


下图说明了在图像平均亮度相同的前提下,信噪比(SNR)是如何影响图像质量的。


回到本节的主题,虽然改变sensor曝光时间和改变sensor增益都可以实现提高画面平均亮度,但得到的图像质量其实是不同的。举个极端但是可能的例子,如果出于某种原因AE算法的输出频繁在两组参数(曝光x2, 增益x1)和(曝光x1, 增益x2)间振荡,则画面会在两种不同的图像质量效果间振荡,称为呼吸效应(breathing effect),会造成画面闪烁,是设计和调试算法时必须注意避免的一种现象。
2. 亮度呼吸
当AE 算法存在设计缺陷,或者某些参数选择不周密时,AE 算法容易出现亮度振荡情况,即环境照明并没有变化时,AE 的控制输出却呈周期性波动,类似电子系统中的自激振荡。通常的原因是画面的平均亮度刚好处在亮度容差的边界值附近,当AE 测量到容差偏大时就会触发微调,但是由于设备的实际参数是离散的,原本的微调参数会被四舍五入到下一个离散点,实际导致超调,于是下一帧AE 不得不回到过去的参数,如此循环往复,形成呼吸效应。
海思AE算法特点
海思算法假设画面中会有一部分区域的重要性高于其它区域,定义为感兴趣区域(ROI, Region Of Interest),需要重点照顾。
必须注意的时,此处的ROI并不与特定的图像位置发生固定关联,当光照条件变化时,ROI 的位置就会随之发生变化。因此,此处的ROI 应该理解为画面中的亮区或者暗区之一。举例来说,不妨定义所有平均亮度低于80的区域集合为ROI,或者定义所有平均亮度高于180的区域集合为ROI,如下图所示。


海思默认的曝光策略是高光优先,主要意图是防止亮区(ROI)过曝。下图仅为示意。


海思提供SDK 接口,可以将AE 策略配置成选低光优先,意图是照顾暗区(ROI)。
Apical AE算法特点
Apical 的 AE 算法依赖于两个事先在实验室标定好的参考点
- LDR target (low dynamic range),低动态场景目标
- WDR target (wide dynamic range),高动态场景目标
Apical AE 算法控制曝光的基本思路是令直方图的 实际高点 尽可能向sensor 设备能力的最大可用高点 移动,设计意图是充分利用设备提供的动态范围。(原则一)
原则一的问题是过于简单,如果不加以限制就会频繁遇到问题。一个明显的的问题是 LDR 场景,不妨设想一个极端场景,即画面是单色的,直方图的低点和高点全部落在同一个bin里,如果按照原则一,画面就会被一直推到平均曝光值>250。
为了解决这个问题,Apical 定义了 LDR target 参数,要求直方图的 mean 不能超过此 target。(原则二)
另一个问题是 WDR 场景,因为 WDR 场景通常的直方图通常集中在高、低两端,当高点恰好与设备高点重合时,直方图 mean 很可能过低,画面暗区被牺牲。


为了解决这个问题,Apical 定义了 WDR target 参数,要求直方图的 mean 不能低于此 target。(原则三)
由于WDR target 的钳位作用,WDR场景下会有更多的像素落在过曝区,更多的暗区像素得到合适的曝光,达到亮区、暗区的平衡,而不是简单地牺牲暗区以保全亮区。
Apical AE 算法流程
Apical 的AE 算法采用了第N+3帧生效的设计方案,这个设计给软件预留了两帧的时间用于处理3A运算和刷新ISP 硬件寄存器,同时它的代价是也是比较大的,假设环境光在N+1帧发生突变,算法会在N+3帧检测出异常,并在N+6帧做出响应,因此第N+1到N+5帧都是曝光不正确的帧,图像质量损失较大。

