10. AE相关验证

当完成图像验证后就可以进行AE交接工作,AE交接要确保基本的曝光、增益是线性的,还有反应帧、同步问题等需要验证。

主要是完成SensorPorting_AE(sensor_test)这份表格的验证。验证工作需要用到灯箱和sensor_test测试程序。

注意:在进行AE相关验证时,需要将之前注释的代码给放开。

10.1. BLC确认和验证

sensor spec上一般都会写blc offset的值,可直接写入xxx_cmos_param.h。

如果没有可通过以下方式测试得出实际blc值:

修改xxx_cmos_param.h,将下面红色圈出的部分,273表示blc offset, 全部改为0,1097表示gain,全部改成1024。

_images/AERela002.png

遮住镜头,在纯黑环境下运行sensor_test,输入CMD

5
2 0 70 0 0

打印出Luma值再乘4就是对应的blc offset值。

比如下面对应的blc offset为74x4=286。

_images/AERela003.png

最后将测试出来的blc offset代入公式gain = 4095/(4095 - offset)*1024 得到 1106, 将确认好的blc和gain填入xxx_cmos_param.h。

10.2. 曝光线性度验证

将镜头对着灯箱环境下运行sensor_test,linear模式下输入CMD

5
2 0 71 0 0

Wdr模式下长曝光输入CMD

5
2 0 75 0 0

Wdr模式下短曝光输入CMD

5
2 0 76 0 0

要满足AE 亮度的统计值在 1/60s 的曝光时间应为 1/30s 的一半, AE亮度的统计值在1/120s 的曝光时间应为 1/60s 的一半这样的关系, 比如下图所示结果就是符合的。

_images/AERela014.png
_images/image5.png

10.3. 增益线性度验证

将镜头对着灯箱环境下运行sensor_test,linear模式下输入CMD

5
2 0 72 0 0

Wdr模式下输入CMD

5
2 0 77 0 0

下图是测试结果,linear mode下again从1024增加到8192, luma值从74变到607,基本符合8倍的关系。

Wdr mode下again从1024改变成2048,luma从51变成100, 基本符合2倍的关系。

所以下图的luma和again能够满足线性关系。

_images/AERela015.png
_images/image7.png

10.4. 进阶验证

如果想要精确验证曝光线性度,需要用到CMD

5
8 SID FID startExpTime endExptime
_images/AERela006.png

可以测试连续的曝光线性度,表示从startExpTime到endExpTime每隔%5的精度进行递增。

SID表示sensorID, FID表示frameID,0表示长帧,1表示短帧。

如果想要精确验证增益线性度,需要用到CMD

5
7 SID FID time StartISO EndISO

可以测试连续的增益线性度,表示从StartISO到EndISO遍历gaintable进行递增。这里ISO 100表示1x,即gain=1024.

_images/AERela007.png

10.5. Response Frame验证

不同的sensor参数生效时间不一样,比如有些sensor要过5 frame时间后才能生效,有些只要过4 frame或者3 frame就能生效。

即使同一颗sensor,不同的寄存器设定,生效时间也有可能不一样,因此需要验证AE相关的寄存器的反应帧。

运行sensor_test,linear模式下输入CMD

5
2 0 71 0 0

这样测出shutter设定后要过多少frame后才会生效。

下图看出shutter从33333改变成16666后,要过4个frame后Luma值才发生改变。

所以曝光的ResponseFrame为4.

_images/image10.png

输入CMD

5
2 0 72 0 0

这样测出gain设定后要过多少frame后才会生效。

下图看出again从1024改变成2048后,要过4个frame后Luma值才发生改变。

所以增益的ResponseFrame为4.

_images/AERela016.png

测试完曝光、增益的ResponseFrame后,ResponseFrame填入xxx_cmos.c中的cmos_get_ae_default函数中,如下图:

_images/AERela009.png

10.6. 曝光增益同步生效验证

有时候不是所有的sensor都是gain 、shutter同时生效,例如可能会出现gain的ResponseFrame是4, shutter的ResponseFrame是3,需要进行曝光增益同步机制验证。

运行sensor_test,linear模式下输入CMD

5
2 0 73 0 0

这个CMD表示同时改变 shutter/gain, AE 的统计值要过多久才会发生变化。

下面的图可以看到同时改变shutter和again都是在4frame后同步生效。

_images/AERela017.png

如果同时加大增益、曝光后,AE 的统计值出现跳变,比如像下面这样的结果,则说明增益、曝光没有同步生效。

L:479  T:33333  AG:8192

L:479  T:33333  AG:8192

L:479  T:1000   AG:1024

L:479  T:1000   AG:1024

L:299  T:1000   AG:1024

L:211  T:1000   AG:1024

L:3    T:1000   AG:1024

L:3    T:1000   AG:1024

L:3    T:1000   AG:1024

L:3    T:1000   AG:1024

此时需要对gain或者shutter进行delay让其同步生效, 修改xxx_cmos.c中的 cmos_get_sns_regs_info函数,修改register的delay设定。

比如下图就是对gain进行delay了2 frame,表示要相对于其他的register设定要晚2帧。

_images/AERela010.png

10.7. FPS可控性验证

用sensor_test运行后输入CMD

5
4 SID FPS
_images/AERela011.png

默认运行起来后fps是25fps,可以查看vi_dbg 查看sensor输出的fps是多少。

Linux: cat /proc/cvitek/vi_dbg

Alios: 运行sensor_test 后输入7 –> 1

_images/image16.png