1. ISP Pipeline 概述:从光信号到数字图像
各位同学好,我是你们这门课的老朋友。今天咱们正式开讲 ISP Pipeline。说实话,每次带新人时,我第一件事就是让他们把 ISP 的整个流程画出来。为什么?因为不理解全局,后面做硬件加速时你根本不知道瓶颈在哪。
这一章,咱们就先把 ISP 是什么、它在成像系统里扮演什么角色、以及典型的处理流程搞清楚。嗯,内容不难,但很重要。
1.1 什么是 ISP?
ISP,全称 Image Signal Processor,中文叫图像信号处理器。说白了,它就是把摄像头传感器(Sensor)输出的原始数据,变成人眼看起来舒服、或者机器能分析的图像。
你想想看,Sensor 直接出来的东西是什么?是一堆电压值,经过 ADC 转换后变成数字信号。这信号是 Bayer 格式的,每个像素只记录了红、绿、蓝中的一种颜色。这能看吗?当然不能。ISP 就是干这个的——把它变成正常的 RGB 图像,再转成 YUV 方便显示和编码。
核心观点: ISP 是连接物理世界(光信号)与数字世界(图像/视频)的桥梁。没有 ISP,Sensor 只是一堆感光元件的集合。
我在项目中遇到过不少刚入行的同学,以为 ISP 就是个简单的滤镜。其实远不止如此。一个完整的 ISP Pipeline 包含几十个模块,比如黑电平校正、去噪、去马赛克、白平衡、Gamma 校正等等。每个模块都有它的物理意义和数学原理。
1.2 ISP 在成像系统中的作用
一个典型的成像系统,从镜头到最终图像,大致是这样的链路:
- 镜头(Lens):汇聚光线,聚焦到 Sensor 表面。
- 传感器(Sensor):将光信号转换为电信号(模拟信号)。
- 模拟前端(AFE):放大、采样、模数转换,输出数字 RAW 数据。
- ISP:处理 RAW 数据,输出 YUV/RGB 图像。
- 后端编码/显示:压缩、存储、显示。
ISP 在这个链路里,承担了 画质修复、色彩还原、噪声抑制、动态范围提升 等关键任务。没有 ISP,你拍出来的照片可能偏色严重、噪点满天飞、边缘模糊不清。
个人经验: 我早期做过一个手机摄像头项目,Sensor 本身素质不错,但 ISP 的降噪参数没调好,导致夜景模式下暗部全是彩色噪点。后来花了整整两周调参数,才把信噪比提上去。所以,ISP 的好坏直接决定了最终画质的上限。
1.3 典型的 ISP Pipeline 流程
ISP Pipeline 的处理流程,按照数据域来划分,可以分为三个阶段:Bayer 域 → RGB 域 → YUV 域。每个阶段都有特定的处理模块。
下面这张图是我自己画的,把整个流程串起来了。你仔细看,后面咱们的硬件加速部署,就是围绕这些模块逐个攻破的。
1.3.1 Bayer 域处理
Sensor 输出的 RAW 数据是 Bayer 格式。什么是 Bayer 格式?简单说,就是每个像素只记录一种颜色分量,按照 RGGB 或类似 pattern 排列。为什么这么干?因为人眼对绿色最敏感,所以绿色像素占一半,红色和蓝色各占四分之一。
Bayer 域的处理,主要是 修复 Sensor 的物理缺陷。比如:
- 黑电平校正(BLC):Sensor 在无光时也有微弱输出,需要减去这个底噪。
- 镜头阴影校正(LSC):镜头边缘进光量少,导致四周偏暗,需要补偿。
- 坏点校正(DPC):Sensor 上总有那么几个像素是坏的,要么全亮要么全暗,得用邻居像素插值替换。
- 去噪(NR):Sensor 的读出噪声、热噪声,在 Bayer 域做初步降噪。
避坑指南: 我曾经在一个项目中,BLC 参数没校准好,导致整个图像偏暗,动态范围损失了将近 2 档。后来发现是 Sensor 的暗电流随温度变化,BLC 需要做温度补偿。所以,Bayer 域的校正一定要结合 Sensor 的物理特性来调。
1.3.2 RGB 域处理
经过 Bayer 域处理后,数据进入 去马赛克(Demosaic) 模块。这是 ISP 里最关键的步骤之一——把单通道的 Bayer 数据,通过插值算法恢复成每个像素都有 R、G、B 三个分量的全彩图像。
RGB 域的主要模块:
| 模块 | 功能 | 硬件加速难点 |
|---|---|---|
| 去马赛克 (Demosaic) | 从 Bayer pattern 恢复全彩 RGB | 边缘方向判断、伪彩色抑制 |
| 白平衡 (AWB) | 校正色温偏差,让白色物体呈现白色 | 统计计算、增益乘法 |
| 颜色校正矩阵 (CCM) | 将 Sensor 的 RGB 空间映射到标准色域 | 3x3 矩阵乘法,流水线设计 |
| Gamma 校正 | 非线性映射,适应显示设备的亮度响应 | LUT 查找表,分段线性近似 |
我个人习惯把 RGB 域称为 画质重塑阶段。因为从 Bayer 到 RGB,图像的信息量增加了三倍,但同时也引入了插值误差和伪彩色。所以,去马赛克算法的好坏,直接决定了图像的细节和色彩准确度。
1.3.3 YUV 域处理
RGB 图像虽然好看,但数据量大,而且三个分量相关性高,不适合直接压缩和传输。所以,ISP 的最后一步是把 RGB 转成 YUV 格式。
YUV 的好处:
- Y 是亮度分量,人眼对亮度最敏感。
- U/V 是色度分量,人眼对色彩细节不敏感,可以降采样(比如 4:2:0)来压缩带宽。
YUV 域的处理主要是 画质增强:
- 边缘增强(Sharpening):提升图像锐度,让轮廓更清晰。
- 色彩增强:调整饱和度、色调,让画面更讨喜。
- 降噪(NR):在 Y 通道做亮度降噪,在 UV 通道做色度降噪。
- 色度重采样:将 UV 分量降采样到目标格式(如 4:2:0)。
经验之谈: 做硬件加速时,YUV 域的降噪和边缘增强往往是资源消耗大户。我见过一个方案,为了在 4K 60fps 下做实时边缘增强,用了整整 8 个行缓冲(Line Buffer)。所以,设计硬件架构时,一定要提前评估行缓冲和计算单元的平衡。
1.4 小结:ISP Pipeline 的核心逻辑
好了,这一章的内容就这些。总结一下:
- ISP 是图像信号处理器,负责把 Sensor 的 RAW 数据变成可用的图像。
- 处理流程分为 Bayer 域(校正、去噪)→ RGB 域(去马赛克、白平衡、颜色校正)→ YUV 域(增强、降噪、格式转换)。
- 每个域都有特定的模块,硬件加速时需要针对每个模块的特点设计流水线和并行架构。