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 在成像系统中的作用

一个典型的成像系统,从镜头到最终图像,大致是这样的链路:

  1. 镜头(Lens):汇聚光线,聚焦到 Sensor 表面。
  2. 传感器(Sensor):将光信号转换为电信号(模拟信号)。
  3. 模拟前端(AFE):放大、采样、模数转换,输出数字 RAW 数据。
  4. ISP:处理 RAW 数据,输出 YUV/RGB 图像。
  5. 后端编码/显示:压缩、存储、显示。

ISP 在这个链路里,承担了 画质修复、色彩还原、噪声抑制、动态范围提升 等关键任务。没有 ISP,你拍出来的照片可能偏色严重、噪点满天飞、边缘模糊不清。

个人经验: 我早期做过一个手机摄像头项目,Sensor 本身素质不错,但 ISP 的降噪参数没调好,导致夜景模式下暗部全是彩色噪点。后来花了整整两周调参数,才把信噪比提上去。所以,ISP 的好坏直接决定了最终画质的上限。

1.3 典型的 ISP Pipeline 流程

ISP Pipeline 的处理流程,按照数据域来划分,可以分为三个阶段:Bayer 域 → RGB 域 → YUV 域。每个阶段都有特定的处理模块。

下面这张图是我自己画的,把整个流程串起来了。你仔细看,后面咱们的硬件加速部署,就是围绕这些模块逐个攻破的。

ISP Pipeline 三域处理流程 ISP Pipeline 典型流程(Bayer → RGB → YUV) Bayer 域 输入:RAW Bayer 数据 黑电平校正 (BLC) 镜头阴影校正 (LSC) 坏点校正 (DPC) 去噪 (NR) - 部分 RGB 域 输入:RGB 图像 去马赛克 (Demosaic) 白平衡 (AWB) 颜色校正矩阵 (CCM) Gamma 校正 YUV 域 输入:YUV 图像 色彩增强 边缘增强 (Sharpening) 降噪 (NR) - 后处理 色度重采样 说明: 每个域的处理模块并非固定不变,不同厂商的 ISP 架构会有增减。但 Bayer → RGB → YUV 的 数据流顺序是业界共识。硬件加速时,我们通常按模块划分硬件单元,实现流水线并行。 数据流方向:RAW (Bayer) → RGB → YUV 各域数据特点对比 域 数据格式 位宽 主要处理目标 Bayer 单通道(Bayer pattern) 10-14 bit 校正、去噪

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 域(增强、降噪、格式转换)。
  • 每个域都有特定的模块,硬件加速时需要针对每个模块的特点设计流水线和并行架构。