ISP Pipeline 全景概览:从 Sensor 到显示器的图像信号处理流程

大家好,欢迎来到这门实战课。第一节课,我们先不急着调代码,而是把整个 ISP Pipeline 的全局图画清楚。你想想看,一个图像从 Sensor 捕捉到光线,到最终显示在屏幕上,中间到底经历了什么?我见过不少工程师,调了几年 3A 算法,却说不清 Demosaic 和 CCM 谁先谁后。这不行。

今天,我就带你从头到尾走一遍这条“图像流水线”。

一、ISP Pipeline 的整体流程

说白了,ISP(Image Signal Processor)就是一条加工流水线。Sensor 送进来的原始数据是 RAW 图,像一块未经雕琢的璞玉。经过 ISP 各个模块的打磨,最终变成我们肉眼看着舒服的 RGB 或 YUV 图像。

我个人习惯把这条流水线分成三大阶段:

  • 前端预处理:修复 Sensor 的物理缺陷,比如坏点、暗角、黑电平。
  • 中端色彩重建:从 Bayer 模式恢复全彩,做白平衡和色彩校正。
  • 后端美化输出:调亮度、加锐化、降噪,最后编码显示。

下面这张图,是我自己画的一个标准 ISP Pipeline 框架。你可以把它当作整个课程的地图。

ISP Pipeline 标准框架图 ISP Pipeline 标准框架图 Sensor BLC LSC AWB Demosaic CCM Gamma Sharpen Display 3A 算法在 Pipeline 中的位置 AE(自动曝光):控制 Sensor 曝光时间和增益,影响整个 Pipeline 的输入亮度 AF(自动对焦):驱动镜头马达,影响 Sensor 捕获图像的清晰度 AWB(自动白平衡):在 AWB 模块中校正色温,消除偏色
我的经验: 刚入行时,我总以为 ISP 模块越多越好。后来在调试一款低功耗手机摄像头时才发现,每多一个模块就多一份延迟和功耗。Pipeline 不是越全越好,而是越“合适”越好。

二、ISP 各模块功能简介

下面我把每个模块的核心功能拆开来讲。你不用一次性全记住,先有个印象就行。

模块 全称 一句话功能 输入/输出
BLC Black Level Correction 减去 Sensor 暗电流带来的固定偏置 RAW → RAW
LSC Lens Shading Correction 补偿镜头边缘亮度衰减(暗角) RAW → RAW
AWB Auto White Balance 在不同光源下还原白色,消除偏色 RAW → RAW
Demosaic 去马赛克 从 Bayer 模式插值出每个像素的 R/G/B 值 RAW → RGB
CCM Color Correction Matrix 用 3x3 矩阵校正色彩偏差,让红色更红 RGB → RGB
Gamma Gamma 校正 调整亮度曲线,适配人眼非线性感知 RGB → RGB
Sharpen 锐化 增强边缘对比度,让图像更清晰 RGB/YUV → RGB/YUV

1. BLC(黑电平校正)

Sensor 在没有光照时,像素也会产生微弱电流,这叫暗电流。BLC 就是把这个固定偏置减掉。嗯,这里要注意:不同 Sensor 的 BLC 值可能不同,甚至同一 Sensor 在不同温度下也会漂移。我曾经在调试一款安防摄像头时,忽略了温度对 BLC 的影响,结果夜间图像整体偏绿,查了两天才找到原因。

2. LSC(镜头阴影校正)

镜头中心透光多,边缘透光少,拍出来的照片四角发暗。LSC 就是给边缘像素“补光”。校正系数通常存在一个二维表格里,我建议你调试时先拍一张均匀灰板,看看暗角有多严重,再决定校正强度。

3. AWB(自动白平衡)

这个模块我会在后面的课程里花大篇幅讲。简单说,AWB 要回答一个问题:当前场景的光源是日光灯还是白炽灯?然后调整 R/G/B 增益,让白色物体在任何光源下都看起来是白的。

4. Demosaic(去马赛克)

Sensor 的每个像素只能感知一种颜色(R/G/B),排列成 Bayer 模式。Demosaic 就是通过插值算法,给每个像素补全缺失的两种颜色。插值算法的好坏,直接决定了图像边缘有没有锯齿或伪色。

5. CCM(色彩校正矩阵)

Sensor 的光谱响应和人眼不一样,拍出来的红色可能偏紫。CCM 用一个 3x3 矩阵把 Sensor 色彩空间映射到标准色彩空间。说白了,就是让红色更接近你记忆中“红”的样子。

6. Gamma 校正

人眼对暗部细节更敏感,对亮部不敏感。Gamma 校正就是压缩亮部、拉伸暗部,让图像看起来更自然。标准 Gamma 值通常是 2.2。

7. Sharpen(锐化)

经过前面一堆处理,图像边缘可能变模糊了。锐化就是提取边缘信息,叠加回原图,让轮廓更清晰。但锐化过度会产生光晕,我见过有人把锐化拉满,结果人脸边缘像镶了一圈金边,那效果……嗯,你懂的。

三、3A 算法在 Pipeline 中的位置与作用

3A 算法是 ISP 的灵魂。它们不直接处理像素,而是控制整个 Pipeline 的“参数”。

  • AE(自动曝光):位于 Pipeline 最前端。它控制 Sensor 的曝光时间和增益,决定输入图像的亮度。如果 AE 没调好,后面所有模块都是在“垃圾数据”上做文章。
  • AF(自动对焦):也位于前端。它驱动镜头马达,寻找对比度最大的位置。AF 的精度直接影响 Demosaic 和 Sharpen 的效果。
  • AWB(自动白平衡):位于 AWB 模块内部。它根据统计信息计算色温,调整 R/G/B 增益。AWB 的偏差会导致 CCM 和 Gamma 输出偏色。
核心观点: 3A 算法是 ISP 的“大脑”,其他模块是“手脚”。大脑决策错了,手脚再灵活也白搭。

四、避坑指南

我曾经踩过的坑: 有一次,我为了追求高动态范围,把 AE 的目标亮度设得特别高。结果 Sensor 过曝,高光区域一片死白。BLC 和 LSC 再怎么调也救不回来。记住:AE 的目标亮度一定要留有余量,给后期处理留空间。

好了,这一章的内容就到这里。你不需要记住每个模块的细节,但一定要在脑子里形成这张 Pipeline 地图。后面的每一章,我们都会在这张地图上深入一个节点。