1. ISP 基础概念:什么是 ISP、ISP 在成像链路中的位置、海思 ISP 整体架构概览
1.1 什么是 ISP?说白了就是相机的“大脑”
ISP,全称 Image Signal Processor,图像信号处理器。很多刚入行的朋友把它理解成一个简单的“滤镜盒子”,其实远不止如此。
我个人习惯把 ISP 比作相机的“大脑”。镜头和传感器是“眼睛”,负责捕捉光线、转换成电信号。但传感器出来的原始数据——也就是 RAW 图——是“半成品”,有噪声、偏色、亮度不均、细节模糊等各种问题。ISP 的任务,就是把这些 RAW 数据“加工”成一张人眼看着舒服、或者机器能准确识别的图像。
我在项目中遇到过不少客户,拿着 sensor 直接出的 RAW 图说“这效果太差了”。其实不是 sensor 差,是 ISP 没调好。你想想看,一个 12bit 的 RAW 数据,每个像素只记录一种颜色(R/G/B),而且还有暗电流噪声、固定模式噪声……不经过 ISP 处理,根本没法看。
核心定义:ISP 是一个硬件+软件协同的图像处理系统,它接收 sensor 输出的 RAW 数据,经过黑电平校正、去噪、去马赛克、白平衡、色彩校正、伽马校正、锐化等一系列模块,最终输出 YUV 或 RGB 格式的成品图像。
1.2 ISP 在成像链路中的位置
要理解 ISP,先得搞清楚它在整个成像链路里站哪。我画了一张图,你看完就明白了。
从这张图可以清楚看到:光线 → 镜头 → Sensor → ISP → 输出。ISP 处在 sensor 之后、输出之前,是决定图像质量的“最后一公里”。
嗯,这里要注意:有些方案会把 ISP 集成在 sensor 内部(比如手机摄像头模组),有些则放在主控 SoC 里(比如海思平台)。海思的做法是后者——ISP 作为 SoC 的一个独立硬件模块,配合软件驱动和 3A 算法库,形成完整的图像处理方案。
1.3 海思 ISP 整体架构概览
海思的 ISP 架构,我接触过好几个系列——Hi3516、Hi3559、Hi3519 等等。虽然具体型号有差异,但整体框架是共通的。我把它拆成三个层面来讲:硬件层、算法模块层、软件控制层。
1.3.1 硬件层:ISP Pipeline
海思 ISP 的硬件 pipeline 是一条“流水线”,数据从 sensor 进来,按顺序经过各个硬件模块。每个模块都有对应的寄存器控制,调试时就是调这些寄存器的参数。
典型的硬件模块包括:
- BNR (Bayer Noise Reduction):Bayer 域去噪,处理 RAW 数据上的噪声
- DPC (Defect Pixel Correction):坏点校正,修复 sensor 上的死点/亮点
- BLC (Black Level Correction):黑电平校正,消除暗电流偏移
- Demosaic:去马赛克,把 Bayer 格式插值成 RGB
- AWB (Auto White Balance):自动白平衡,校正色温偏差
- CCM (Color Correction Matrix):色彩校正矩阵,还原真实色彩
- Gamma:伽马校正,调整亮度响应曲线
- Sharpen:锐化,增强边缘细节
- NR (Noise Reduction):YUV 域去噪,进一步降噪
调试经验:我个人习惯先调 BLC 和 DPC,这两个是“地基”。地基没打好,后面的白平衡、色彩校正都会跑偏。曾经有个项目,客户说偏色严重,我查了半天,最后发现是 BLC 参数没对准——暗电平没拉平,导致整个色彩矩阵都歪了。
1.3.2 算法模块层:3A 与图像质量调优
海思 ISP 的核心算法,我总结为“3A + 图像质量调优”。
| 模块 | 全称 | 作用 | 调试要点 |
|---|---|---|---|
| AE | Auto Exposure | 自动曝光,控制亮度和动态范围 | 目标亮度、曝光权重、收敛速度 |
| AWB | Auto White Balance | 自动白平衡,还原真实白色 | 色温区间、R/G B/G 目标值 |
| AF | Auto Focus | 自动对焦,保证画面清晰 | 对焦窗口、搜索步长、马达曲线 |
| IQ Tuning | Image Quality Tuning | 图像质量调优,包括去噪、锐化、色彩等 | 各模块参数联动、场景适配 |
3A 是 ISP 的“自动驾驶系统”。AE 决定曝光时间、增益和光圈;AWB 判断当前光源色温并调整白平衡增益;AF 驱动马达找到最清晰的焦平面。这三个算法配合好了,图像质量就稳了一半。
我曾经在一个低照度项目里被 AE 坑过——sensor 增益拉太高,噪声全出来了,去噪模块又压不住,最后画面又暗又糊。后来我把 AE 的最大增益限死,配合长曝光和帧率调整,效果才起来。说白了,3A 不是独立调的,要和 IQ 模块一起看。
1.3.3 软件控制层:驱动与调试工具
海思的 ISP 软件层,主要包括:
- ISP 驱动:负责初始化硬件、配置寄存器、中断处理、数据流控制
- 3A 算法库:海思提供的 AE/AWB/AF 算法,以库的形式集成
- 调试工具:海思官方提供的 ISP 调试工具(如 HiISP Tool),支持在线调参、抓图、分析
- 用户接口:通过 API 或配置文件,让开发者可以自定义参数
调试时,我一般先用工具抓一张 RAW 图,然后在 PC 上离线调参,调出满意的效果后,再把参数固化到配置文件中。这样效率高,也避免在板子上反复烧写。
避坑指南:我曾经在 Hi3516 平台上遇到一个坑——在线调参时效果很好,但一断电重启,效果就变了。后来发现是配置文件没正确加载,驱动默认参数覆盖了调试参数。所以,调完参数后,一定要确认配置文件被正确读取,最好在 log 里打印一下加载的寄存器值。
1.4 海思 ISP 架构总览图
下面这张 SVG 图,把海思 ISP 的整体架构画出来了。你可以把它当作本章的“知识地图”。
1.5 本章小结
这一章我们聊了三个核心问题:
- ISP 是什么——图像信号处理器,负责把 RAW 数据加工成高质量图像
- ISP 在成像链路中的位置——在 sensor 之后、输出之前,是决定画质的关键环节
- 海思 ISP 的整体架构——硬件 pipeline + 3A 算法 + 软件控制,三层协同
嗯,这些概念是后面所有调试工作的基础。你如果能把这张架构图记在脑子里,后面学每个模块的调试时,就知道它属于哪一层、和谁配合、怎么调。我个人觉得,搞 ISP 调试,最重要的不是记住每个寄存器的值,而是理解整个系统的“上下游关系”。
一句话总结:ISP 调试,调的不是单个模块,而是整个系统的平衡。先懂架构,再谈调参。