1、设置帧率:
修改帧率可以通过修改V_Blank 或者frame length。配置在寄存器中生效。
一帧图像的曝光时间 = 帧长 * 一行时间。提高帧长,1帧图像的曝光时间就变大了,单位时间内可曝光的帧数就少了,也就是帧率就下降了。这就是项目中常用的通过降帧,来提高 低照度下相机的性能。
我们生活常用的是交流电,50Hz,电压220V。其变化规律如图所示,这种频率的能量变化反应在发光源上称为flicker(闪烁),采购灯具的时候”抗频闪“ 说的就是肉眼观察不到flicker。
而对于能量来说,并没有正负之分,因此灯泡发光的能量周期是1/100s,即10ms。
一般 CMOS Sensor 相机会采用 Rolling shutter 方式,通过 Sensor逐行曝光的方式实现。在曝光开始的时候,Sensor 逐行扫描逐行进行曝光,直至所有像素点都被曝光。同一行上的每个pixel的曝光开始点和曝光的时间都是一模一样的,所以同一行的所有点所接受到的能量是一样的,而在不同行之间虽然曝光时间都是一样的,但是曝光的开始点是不同的,所以不同行之间所接受到的能量是不一定相同的 。
以OV2740为例,有一个reset信号负责一行像素清零,一个read信号负责读取一行像素数据,reset信号在前,read信号在后,reset信号和read信号之间的行数对应的时间即为曝光时间。
CMOS Sensor
修改帧率,使sensor 的每帧间隔时间和光源周期呈整倍数关系时,50Hz的光源对应帧率为25帧,每帧间隔时间为40ms。则每一帧sensor的每一行接收的能量都是相同的,相邻帧之间没有能量差。
(1)当每行的曝光时间不等于n*10ms时,每行的能量不同,相邻行有明暗条纹,但是位置固定,不会有滚动现象。
(2)当每行的曝光时间=n*10ms时,每行能量相同,不会产生明暗条纹(banding)。--------理想状况
避免flicker计算原理为:
50HZ交流电能量周期:T = 1/(50*2)=0.01s=10ms
sensor曝光时间 = exp_line or expo_time= 10,000us * n.
(sensor 的曝光时间通过ISP设定可以自动调节,所以当灯光很亮的时候,sensor曝光时间很短,还是会产生明暗条纹)
拖影一般是由于曝光时间长导致的,要避免拖影,需要提高帧率。
第一是使用固定帧率,消费级的UVC和车载 很多固定在25帧。
第二是提高出现拖影环境时产品的帧率,虽然之前使人眼感知不到画质卡顿的最小帧率在15帧,但现在手机端多数最小帧率已设为20帧,高端的手机设置在30帧。会牺牲一些亮度,但在拍摄摇晃的人时,人脸变形程度有很大改善。
第三是denoise 时,增加静态的NR去噪强度,减小3DNR 的强度。
曝光表需要设置三部分数值:gain、exposure time(line) (有的时候填写帧率)、拐点优先级。
当最小的曝光增益为1x=1024时,有时候会出现异常噪声,建议min gain=1044。
当table的拐点设置的较多时,前几个拐点设 曝光优先,最后一行设gain 优先。如果和对比机对比效果时,同个稍暗环境,清晰度差异大,可以查看两者此时的帧率和增益,可能两者的曝光优先方式不一致。需要调整。(这一点在最开始设置曝光表的时候,需要猜测对比机的增益和帧率拐点设置,以更好靠近对比机的帧率和清晰度效果,方法是改变环境用对比机拍摄不同ISO等级的图片,再查看对应的帧率。)
在PQ工具里填写好 exposure table的参数,生成的头文件会更新AE更新时索引的曝光表,也包含三部分:gain、shutter、exposure index。(这三部分在打印AE log时可以在log 中查到)
当环境亮度变化剧烈(开关1/2灯),曝光调节过程中低概率出现闪烁,但是不影响曝光的收敛,相对于其他 sensor,即最终曝光收敛的亮度以及速度没有明显区别,其他 sensor 不存在闪烁。
ISP 统计的图像亮度、设置给 ov2710 的曝光时间、曝光增益信息打印出来,仔细分析数据会发现闪烁基本出现在曝光时间与曝光增益的变化趋势不一样的时候,即 Fn+1 相对于 Fn 来说,曝光时间变大,但是曝光增益变小。
可以单独变化曝光时间或是曝光增益,确认 sensor 在第 N 帧刷新曝光时间寄存器,在 N+2 帧生效,Sensor 在第 N 帧刷新曝光增益寄存器,在 N+1 帧生效。
ae设置的曝光时间与曝光增益会根据生效时间的定义来间隔设置曝光时间与增益,从而保证曝光增益与曝光时间在同一帧生效;
---------------有时候需要check sensor的线性度,但成熟的大厂sensor一般不会出现问题--------------
1、如果是闪烁幅度大(震荡):和trigger 相关。这部分和算法相关。
2、AE敏感容易收敛:和stable 相关,两帧之间的差异超过阈值则重新触发收敛。stable out.
3、同一环境,两次收敛最终画面亮度不一致。和以上trigger、stable 相关,稳定范围大则拉大了同一个target目标的AE lux 范围。两次收敛的结果,如果一个较高,一个较低,就会出现不一致。