2. RK ISP硬件架构

做 ISP 调优,如果不懂硬件架构,就像开车不看仪表盘——能跑,但心里没底。RK 的 ISP 模块集成在 SoC 内部,不同型号(如 RK3588、RK3568)的 ISP 版本略有差异,但核心框架是相通的。今天我就带你拆开这个黑盒子,看看里面到底有哪些东西。

ISP 内部模块一览

RK ISP 本质上是一条图像处理流水线。每个模块负责一个环节,数据按顺序流过。我个人习惯把模块分成三大类:前端处理、核心处理、后端输出。

模块分类 模块名称 主要功能
前端 DPF (Defect Pixel Correction) 坏点校正,消除传感器死点/亮点
前端 BLC (Black Level Correction) 黑电平校正,去除暗电流偏移
前端 LSC (Lens Shading Correction) 镜头阴影校正,补偿四角亮度衰减
核心 Demosaic 去马赛克,从 Bayer 数据恢复全彩
核心 AWB (Auto White Balance) 自动白平衡,还原真实色温
核心 AE (Auto Exposure) 自动曝光,控制亮度与动态范围
核心 AF (Auto Focus) 自动对焦,计算清晰度评价
核心 CCM (Color Correction Matrix) 颜色校正矩阵,校准色彩还原
核心 Gamma / Tone Mapping 伽马校正 / 色调映射,调整亮度曲线
后端 Sharpen / Denoise 锐化与降噪,平衡细节与噪声
后端 YUV / RGB 输出 格式转换,输出给编码器或显示
我的经验: 刚开始调 ISP 时,我总以为 AWB 和 AE 是独立的。后来发现它们互相影响——AE 改变亮度,AWB 的统计值就会变。所以调优时一定要联动调试,别孤立看某个模块。

数据流走向:从 Sensor 到显示

数据是怎么走的?我画了一张图,你看完就明白了。

RK ISP 数据流走向 Sensor DPF + BLC LSC Demosaic AWB / AE / AF CCM Gamma / Tone Sharpen / Denoise YUV 输出 注意:AWB / AE / AF 模块会回读统计信息,影响前端参数 实际芯片中部分模块可旁路或重排,但标准流程如上

数据从 Sensor 进来,先经过前端校正(坏点、黑电平、镜头阴影),然后去马赛克变成 RGB,接着做白平衡、曝光、对焦的统计计算,再经过颜色校正和伽马调整,最后锐化降噪后输出 YUV。嗯,这里要注意:AWB/AE/AF 是统计模块,它们不直接修改像素,而是计算参数反馈给前端。

关键理解: ISP 不是一次处理完所有帧。每一帧的数据流中,统计模块会收集当前帧的信息,然后调整下一帧的参数。所以调优时,你改一个参数,可能要等 2-3 帧才能看到稳定效果。

关键性能指标

评估 ISP 硬件好不好,不能只看参数表。我列几个真正影响调优体验的指标:

  • 最大分辨率与帧率:比如 RK3588 支持 48MP @ 30fps,RK3568 只到 24MP @ 30fps。你想想看,如果项目要求 4K 60fps,选错芯片就麻烦了。
  • 处理位深:RK ISP 内部通常是 12-bit 或 14-bit 处理。位深越高,暗部细节保留越好。我曾经在低照度项目里吃过亏——用 10-bit 模式,暗部全是量化噪声。
  • 3A 收敛速度:AWB/AE/AF 从场景变化到稳定输出的帧数。好的 ISP 能在 5-10 帧内收敛,差的可能要 30 帧以上。
  • 动态范围:支持 HDR 合成(如 2 帧 / 3 帧 HDR)以及合成后的位宽。RK 的 HDR 方案在 120dB 场景下表现不错。
  • MIPI 接口带宽:决定能接入多少路 Sensor。RK3588 有 4 路 MIPI CSI,每路 4-lane,总带宽足够接 4 个 4K 摄像头。
指标 RK3588 RK3568 说明
最大分辨率 48MP 24MP 单路 Sensor 输入上限
最大帧率 30fps @ 48MP 30fps @ 24MP 受限于 ISP 时钟与 DDR 带宽
内部位深 14-bit 12-bit 影响暗部信噪比
HDR 支持 3 帧合成 2 帧合成 3 帧 HDR 动态范围更高
MIPI 路数 4 路 2 路 多摄像头方案需注意
避坑指南: 我曾经在一个项目中选了 RK3568 做 4 路摄像头,结果发现 MIPI 接口不够用,只能外接 MIPI 交换机,增加了成本和延迟。选型时一定要先算好接口数量,别只看 ISP 性能。

ISP 与 CPU/GPU 的协作

ISP 不是独立工作的。它通过 VICAP(Video Capture)模块从 Sensor 获取数据,处理完后通过 DDR 写入内存,然后 CPU 或 GPU 可以读取做进一步处理(比如 AI 识别、编码)。

我个人习惯把 ISP 看作一个硬件加速器——它把最重的图像处理任务(去马赛克、降噪、锐化)用硬件流水线完成,CPU 只负责控制参数和调度。这样既省电,又高效。

小技巧: 调试时可以用 cat /sys/kernel/debug/rkisp/* 查看 ISP 的实时状态,包括帧率、丢帧数、各模块使能情况。这个 debugfs 接口在 RK 的 BSP 里默认开启,非常实用。