1. ISP 基础概念:从一张照片说起

各位同学,咱们今天聊聊 ISP。说白了,ISP 就是 Image Signal Processor,图像信号处理器。你手机拍照、行车记录仪录像、安防监控抓拍,背后都有它。

我刚开始接触这行时,以为 ISP 就是个简单的滤镜。后来踩了坑才明白——它是整个相机系统的灵魂。

1.1 什么是 ISP?

ISP 是一套专门处理图像信号的硬件 + 算法组合。它的输入是传感器(CMOS/CCD)输出的原始 RAW 数据,输出是人眼看着舒服的 RGB/YUV 图像。

你想想看,传感器拍到的原始数据长什么样?

  • 每个像素只记录一种颜色(R/G/B 之一)
  • 信号有噪声、暗角、偏色
  • 动态范围远不如人眼

ISP 的任务,就是把这些「半成品」变成一张能看的照片。

核心定义: ISP = 从 RAW 到人眼友好图像的信号处理链路。

1.2 ISP 在相机系统中的位置

我习惯把相机系统分成三层:

层级 组件 职责
前端 镜头 + 传感器 光学成像、光电转换
中端 ISP RAW 处理、画质调优
后端 编码器 + 显示/存储 压缩、输出、预览

ISP 夹在中间,承上启下。传感器给它的 RAW 数据质量,决定了 ISP 的天花板;ISP 处理后的效果,决定了用户看到的最终画质。

我的经验: 项目里经常有人只优化传感器或只调 ISP 参数,结果效果总差一口气。记住——ISP 和传感器是夫妻,得一起调。

1.3 ISP Pipeline 概述

ISP 不是单个模块,而是一条流水线。每个模块处理一个具体问题,串联起来就是完整的 Pipeline。

下面这张图是我自己画的典型 ISP 流程,你一看就明白:

ISP Pipeline 典型流程 ISP Pipeline 典型流程 RAW 输入 黑电平校正 (BLC) 去噪 (NR) 去马赛克 (Demosaic) 白平衡 (AWB) 色彩校正 (CCM) + Gamma RGB/YUV 输出 说明 每个模块解决一个具体问题 模块顺序可微调,但逻辑固定 实际芯片会合并或拆分模块

每个模块具体干什么?我简单列一下:

  1. 黑电平校正 (BLC) — 去掉传感器暗电流导致的固定偏置。我遇到过一批传感器黑电平漂移,差点以为是硬件坏了,其实就是 BLC 没跟上。
  2. 去噪 (NR) — 消除光子噪声、读出噪声。降噪太强会丢细节,太弱又满屏噪点,这是个平衡活。
  3. 去马赛克 (Demosaic) — 把 Bayer 模式的单通道 RAW 插值成三通道 RGB。这里最容易出现伪色和锯齿。
  4. 白平衡 (AWB) — 让白色物体在不同光源下都呈现白色。嗯,这个模块调不好,照片就会偏蓝或偏黄。
  5. 色彩校正 (CCM) + Gamma — 把传感器色彩空间映射到标准色域,再做人眼感知的非线性校正。
避坑指南: 我曾经在项目里跳过 BLC 直接做去噪,结果暗部噪声怎么都压不下去。后来才发现——黑电平没校准时,噪声基底是偏的,去噪算法根本没法正确工作。所以,Pipeline 的顺序别乱动。

1.4 为什么 ISP 这么重要?

你想想看,现在手机传感器尺寸就那么大,物理限制摆在那。为什么有的手机拍照就是比别家好?

说白了,差距就在 ISP 的算法和调优上。

  • 同样的传感器,ISP 好能多保留 2-3 档动态范围
  • 同样的暗光场景,ISP 好能少一半噪声
  • 同样的光源,ISP 好能准确还原肤色

我个人的习惯是:拿到一个新传感器,先跑一遍默认 ISP Pipeline,看看每个模块的输出。哪个模块效果差,就重点调哪个。别一上来就全链路优化,容易顾此失彼。

一句话总结: ISP 决定了相机系统的画质上限。传感器是硬件基础,ISP 是软件灵魂。

好,这一章就到这里。你先把 ISP 是什么、它在系统里的位置、Pipeline 有哪些模块搞清楚。后面我们会一个一个模块拆开讲,每个都配上代码和调优经验。