第一章:AE曝光三要素与瑞芯微平台映射
各位好,我是老周。做图像调试这行十几年了,从海思到安霸再到瑞芯微,踩过的坑能写本书。今天咱们聊聊AE最基础的东西——曝光三要素。
说白了,一张照片亮不亮,就三个东西在管:光圈、快门、增益。但在瑞芯微的ISP里,这三个东西的玩法跟传统相机不太一样。我刚开始接触瑞芯微平台时,也绕了不少弯路。
1.1 曝光三要素的本质
先理清概念。曝光量 = 单位时间进光量 × 进光时间 × 信号放大倍数。就这么简单。
| 要素 | 物理含义 | 对图像的影响 |
|---|---|---|
| 光圈 (Aperture) | 镜头通光孔径大小 | 控制进光量,影响景深 |
| 快门 (Shutter) | 传感器感光时间 | 控制曝光时间,影响运动模糊 |
| 增益 (Gain) | 信号放大倍数 | 提升亮度,但会放大噪声 |
嗯,这里要注意:在瑞芯微平台上,光圈通常是固定的——手机模组、车载摄像头基本都是固定光圈。所以我们真正能调的,只有快门和增益。
1.2 瑞芯微平台上的映射关系
瑞芯微的ISP架构里,这三个要素映射到具体的寄存器和控制参数上。我整理了一张表,大家调试时直接对照用。
| 曝光要素 | 瑞芯微平台映射 | 控制接口 | 典型范围 |
|---|---|---|---|
| 光圈 | 固定值(由模组决定) | 无(或通过马达驱动) | F1.4 ~ F2.8(固定) |
| 快门 | 传感器曝光行数 | RK_AE_SetExposureTime() |
1行 ~ 帧周期 |
| 增益 | 模拟增益 + 数字增益 | RK_AE_SetGain() |
1x ~ 16x(模拟) |
我在项目中遇到过一个问题:某款车载摄像头在夜间场景下,增益拉到8倍以上,噪声直接炸了。后来发现是数字增益和模拟增益的分配策略没调好。瑞芯微的增益是分段的——先走模拟增益,不够再补数字增益。但模拟增益到顶后,数字增益每提升1倍,信噪比就掉6dB。
核心原则:优先调快门,其次调模拟增益,最后才动数字增益。这个顺序决定了你图像噪声的天花板。
1.3 AE控制环路的基本原理
AE说白了就是一个闭环反馈系统。传感器采集图像,ISP统计亮度,算法算出差值,然后调整曝光参数。我画了个流程图,大家一看就明白。
这个环路里,最关键的其实是PID参数。我见过很多工程师上来就调PID,结果画面忽亮忽暗,像呼吸灯一样。为什么会这样?因为PID的积分项(Ki)设太大了。
我的调试习惯:先把Ki设为0,只调比例项Kp。等画面稳定了,再一点点加积分项。这样能避免积分饱和导致的震荡。
1.4 瑞芯微AE的统计信息
瑞芯微的ISP会输出一些统计信息,供AE算法使用。这些数据在调试时非常有用。
| 统计项 | 含义 | 调试用途 |
|---|---|---|
ae_hist[256] |
256级亮度直方图 | 判断过曝/欠曝区域 |
ae_mean |
全图平均亮度 | 粗调目标值 |
ae_weighted_mean |
加权平均亮度(中心权重高) | 人脸/主体优先场景 |
ae_roi_stats |
多区域统计(4x4或8x8网格) | 背光/逆光场景分析 |
我记得有一次调试行车记录仪,白天效果很好,但晚上画面总是偏暗。查了半天,发现是ae_mean的目标值设得太低了。后来改成基于场景动态调整目标值,问题就解决了。
1.5 避坑指南
我曾经踩过的坑:
- 增益分配不合理:某项目把模拟增益上限设到4倍,数字增益上限设到8倍。结果暗光下数字增益占主导,噪声惨不忍睹。后来把模拟增益上限提到8倍,数字增益上限降到2倍,噪声改善了3dB。
- 快门范围限制太死:默认配置下,快门范围是1/30s到1/1000s。但在室内灯光下(50Hz),快门必须锁定在1/50s或1/100s才能避免频闪。我建议根据场景动态调整快门范围。
- 忽略帧率约束:快门时间不能超过帧周期。比如30fps下,帧周期是33ms,快门最大只能设到33ms。如果设大了,帧率会掉,视频就会卡顿。
1.6 小结
曝光三要素在瑞芯微平台上的映射其实不复杂。记住三点:
- 光圈基本固定,别在上面花太多时间
- 快门优先,增益兜底
- AE环路的核心是PID,调参时先Kp后Ki
你想想看,如果连曝光三要素的映射关系都没搞清楚,后面调AWB、调降噪,全都是空中楼阁。基础打牢了,后面才能走得远。