2、RK ISP Pipeline概览:AE模块在RK ISP中的位置与数据流
做图像调优,第一件事不是调参数,而是搞清楚数据从哪来、到哪去。说白了,你得知道AE模块在整个ISP流水线里到底站在哪个位置,它跟谁说话,谁听它的。
我刚开始接触RK平台时,上来就对着AE参数猛调,结果发现图像亮度死活不对。后来一查,原来是AWB和AE的交互时序没搞对。嗯,从那以后,我养成了一个习惯——先看Pipeline图,再动手。
2.1 RK ISP Pipeline整体架构
RK的ISP Pipeline,我习惯把它分成三大块:前端统计、中间处理、后端输出。AE模块横跨了前端统计和中间处理两个阶段。
下面这张图是我自己整理的,你一看就明白AE在哪个位置了。
看到红色那块没?那就是AE统计模块。它紧跟在LSC(镜头阴影校正)之后,在RAW域就完成了亮度统计。为什么放在这儿?因为此时图像已经去掉了暗电流和镜头阴影,统计出来的亮度值更干净。
2.2 AE模块的输入与输出
AE模块说白了就干三件事:测光、决策、执行。我把它拆成一张表,你对照着看更清楚。
| 阶段 | 输入 | 处理内容 | 输出 |
|---|---|---|---|
| 测光 | RAW域Bayer数据 | 分块统计亮度均值、直方图 | 亮度统计直方图、分区亮度矩阵 |
| 决策 | 亮度统计 + 目标亮度 | 计算曝光误差,查表或PID控制 | 目标曝光值(EV) |
| 执行 | 目标曝光值 | 分配增益、快门、光圈 | Sensor寄存器参数 |
我在项目中遇到过一个问题:测光阶段统计窗口没对准,导致画面中心过曝、四周正常。后来发现是统计ROI(感兴趣区域)没跟着Sensor裁剪走。这个坑,后面我会专门讲。
2.3 数据流中的关键节点
数据流里,有几个节点是AE调优必须盯死的。我列出来,你调参时重点看它们。
- RAW域统计点:在BLC和LSC之后,此时数据最干净。如果统计点放早了(比如BLC之前),暗电流会干扰亮度计算。
- AE算法决策点:这里决定了曝光策略。是优先保证帧率还是优先保证亮度?我建议你根据场景动态切换。
- Sensor控制点:增益和快门的分配比例。同样的曝光量,增益高噪点多,快门慢会拖影。这个平衡点,每个项目都不一样。
我的经验:调AE时,先把统计窗口画出来看看。RK平台提供了调试工具,可以实时显示每个分块的亮度值。你盯着这个窗口调,比盲调参数快十倍。
2.4 AE与其它模块的交互
AE不是孤立的。它跟AWB、AF、甚至去噪模块都有耦合。我简单说一下最关键的几个交互。
- AE ↔ AWB:亮度变化会影响色温判断。比如夜景下AE提亮,AWB可能会误判为偏暖。我一般建议AE稳定后再触发AWB更新。
- AE ↔ AF:曝光不足时,AF的对比度检测会变差。所以低照度下,AE要先保证基础亮度,AF才能正常工作。
- AE ↔ 去噪:增益高了噪点多,去噪模块压力大。反过来,如果去噪太强,细节丢失,AE统计的亮度也会偏。这是个循环,你得整体调。
注意:千万不要在AE还没收敛时就去调AWB参数。我曾经犯过这个错,结果AE和AWB互相拉扯,画面亮度忽明忽暗,色温来回跳。先让AE稳定下来,再动别的模块。
2.5 数据流时序与帧同步
RK平台的AE是逐帧处理的。每一帧的流程大概是这样的:
- Sensor输出当前帧的RAW数据。
- ISP前端完成BLC、LSC后,AE统计模块提取亮度信息。
- AE算法根据统计结果计算下一帧的曝光参数。
- 曝光参数通过I2C写入Sensor寄存器,影响下一帧的曝光。
这里有个关键点:AE的统计结果影响的是下一帧,不是当前帧。所以如果你发现画面亮度变化有延迟,别慌,这是正常的帧级反馈延迟。
我记得有一次调试4K@60fps的摄像头,发现AE响应特别慢。后来一查,是统计窗口太大,导致ISP的DSP处理时间超了帧周期。嗯,缩小统计区域后,问题就解决了。
2.6 调优前的准备工作
在你动手调AE之前,我建议你先确认这几件事:
- 确认统计窗口位置:用RK调试工具把AE统计的ROI框画出来,看看它是不是覆盖了你关心的区域。
- 确认Sensor的曝光范围:不同Sensor的增益范围和快门范围不一样。先读一下Sensor的datasheet,别设了超出范围的参数。
- 确认目标亮度:你希望画面平均亮度是多少?一般Y值在100-120(8bit)之间比较合理。但具体看场景。
一句话总结:AE模块在RK ISP中处于前端统计与后端控制的枢纽位置。搞懂它的数据流,你就掌握了图像亮度调优的命门。