#灵感# AE是个值得推敲再推敲的模块,有意思。
目录
相关的硬件-光圈:
相关的软件-曝光-ISO:
ISP中的sensor AE 组成:
sensor AE的流程及控制:
tuning时AE的一些策略:
相关的硬件-光圈:
光圈(F-Number)光圈(相对孔径),光圈是镜头里控制光线进量的装置。
F=f/D,f为焦距,D为通光孔直径。焦距相等, F 越小表示通光孔径越大。
F数以 √2 倍增长,F数每增加一档,通光量减少一半。
光圈除了控制光线进量外,还与景深相关。在其他因素相同的条件下,光圈越小景深越大,光圈越大,景深就越小。
光圈变化对亮度影响:
相关的软件-曝光-ISO:
sensor的曝光时间(快门时间)指的是sensor的感光时间。曝光(快门)时间越长,图像就越亮。
当延长快门时间,仍然达不到期望的亮度,就需要调节sensor的感光度(ISO)。
CMOS sensor的感光度就是它的增益(gain)。增益是用模拟或数字的方法进行放大,不可避免的会放大噪声。ISO 用100、200等表示,通常100=1倍的增益,200表示2倍的增益。
光圈、曝光(快门)、ISO 的组合结果是乘积倍数关系。达到同样的亮度,光圈小一倍,曝光时间就需要增加一倍,或者 ISO增加一倍。
扩展阅读链接:如何理解 ISO、快门、光圈、曝光这几个概念? - 知乎 (zhihu.com)
ISP中的sensor AE 组成:
因为多数中低端项目(手机、车载、监控等)的光圈是固定的,所以想调整拍摄的画面亮度,只能依赖曝光时间和增益的配合。
sensor 的AE (auto exposure)调节分为两部分:
AEC(auto exposure control) 调节曝光时间;
AGC(auto gain control) 调节增益值。
sensor本身没有 auto功能的,需要通过后端平台实现 。在整个 AEC/AGC过程中,以图像过暗的情况为例,调整策略为曝光时间优先(此时增益关闭),曝光时间已经最长无法继续调整时,开启并调整增益。
需要明确指出的是,仅曝光时间加大,噪声并不会明显增加,有助于提升图像信噪比。而增益开启,将直接导致平均噪声呈倍数放大;
调整AGC时,一般情况下 优先调节模拟gain值 ,模拟 gain调节到上限时, 如果要继续增大图像亮度,可以调节数字 gain值。
以上段落文字参考:
自动曝光AEC和自动增益AGC控制 - 简书 (jianshu.com)
sensor AE的流程及控制:
AE分为算法模块和统计模块,统计模块是和硬件相关的,包含在 ISP pipeline 里,这部分通常需要强大的算力,吐出亮度直方图,亮度区域统计值,当前亮度,环境亮度。算法模块,即我们需要调试的模块,这部分的参数由isp调试传入,依据前面的AE统计值进行运算后决定AE行为。如果需要进行AE收敛,则设置sensor内部shutter 和gain 或者ISP gain。
AE 算法模块计算出合适的shutter和gain 通过驱动接口,下到sensor寄存器中。
驱动中AE的控制:
1>、首先配置曝光时间
根据 sensor datasheet 配置好最大最小积分时间(integration_time,以行为单位,通常也称为曝光行,minLineCnt、maxLineCnt, 或写作exposure_line等)。可以从sensor手册获得此值,以及生效的寄存器地址。
AE 算法模块计算出合适的shutter,在寄存器地址,写入index 对应的exposure time值。
范围:min_integration_time(有时候=1) <= integration_times <= VTS - frame_offset(frame_offset是指最小的dummy_line,或者写为VB_min.[dummy_line=用来填充V_Blank的行,这个也可以从sensor datesheet中获得])我恨!为啥不统一命名。
VTS = frame_length = V_Size + V_Blank // 帧长;
fps = pclk/(VTS * HTS) = pclk/(frame_length*line_length) = 1 / (frame_length * line_time)
不占用曝光时间,即可以通过调节V_Blank,调节帧长,从而改变帧率,但不会改变画面的亮度(曝光)。一般情况下,帧率可以由sensor供应商的FAE 提供配置。
2>、配置sensor 模拟增益、数字增益
一般我们只需配置 sensor 模拟增益(maxAnalogGain、minAnalogGain可以查sensor datasheet 或者找FAE 获得此值),不用特别配置数字增益。(很多时候在暗环境为了达到合适的信噪比,sensor 的模拟增益并不会用到最大值,所以也用不上数字增益。)但有时候会用到isp 数字增益,它是 AE 算法控制的,不用在 sensor 驱动中去配置。
sensor 模拟增益的控制,一种是写入 sensor Again 寄存器的值。sensor datasheet 会有一个 Again_table,配置好平台与 Sensor 的匹配精度(几倍增益对应写入哪个寄存器)。
AE 算法模块计算出合适的gain后 ,驱动通过查 Again_table 写入寄存器regValTable 生效。
3>、验证AE 生效:
通过调试工具手动写入积分时间、模拟增益,观察画面亮度变化。并通过读 sensor 相应的寄存器地址,根据读出的值来判断曝光数据是否正确写入,以此来检查驱动中的相关配置是否正确。
生效帧:曝光时间及增益若在第 N 帧写入,则第 N+2 帧生效。
原文链接:https://blog.csdn.net/qq_25109183/article/details/107179744
此段参考:【精选】Sensor 调试流程_sensor模拟增益和数字增益-CSDN博客
tuning时AE的一些策略:
1、设置帧率:
2、避免flicker:
3、避免异常噪声:
4、避免拖影:
(先烂个尾,明天再封顶)