3. 数字图像信号基础

做图像信号链路调试,说白了就是跟像素打交道。你拿到的 raw data 到底是什么格式?每个像素占几个 bit?颜色是怎么组织起来的?这些基础问题搞不清楚,后面定位故障就是瞎蒙。我刚开始接触 ISP 时,就被 Bayer 格式的排列方式坑过一次,嗯,今天咱们把这些底层的概念彻底捋一遍。

3.1 像素格式与位深

传感器输出的原始数据,通常叫 raw data。它不是一个完整的彩色图像,而是一堆按特定规律排列的亮度值。每个像素的亮度值用多少 bit 来表示,就是位深。

常见位深对照表

位深取值范围典型应用场景
8-bit0 ~ 255消费级摄像头、预览流
10-bit0 ~ 1023主流手机传感器、MIPI RAW10
12-bit0 ~ 4095车载摄像头、工业相机
14-bit0 ~ 16383专业相机、科学级传感器

位深越高,动态范围越大,暗部细节保留得越好。但数据量也成倍增长。10-bit 比 8-bit 数据量多 25%,12-bit 比 10-bit 又多 20%。

我的经验:调试时先用 8-bit 模式跑通链路,确认时序和同步信号没问题,再切到高位深。否则数据量一大,MIPI 通道数不够或者时钟频率没配好,画面直接花掉。

3.2 Bayer 格式:传感器的原始语言

绝大多数 CMOS 传感器使用 Bayer 滤色阵列。每个像素只感测一种颜色——红、绿或蓝。绿色像素数量是红蓝的两倍,因为人眼对绿色最敏感。

常见的 Bayer 排列有四种:

  • BGGR:第一行 B G B G,第二行 G R G R
  • RGGB:第一行 R G R G,第二行 G B G B
  • GBRG:第一行 G B G B,第二行 R G R G
  • GRBG:第一行 G R G R,第二行 B G B G

我曾经遇到一个项目,sensor 输出的是 RGGB,但 ISP 配置成了 BGGR。结果画面偏色严重,红色草地、绿色天空。查了两天才发现是 Bayer 顺序配反了。这种低级错误,你想想看,一旦流片回来再改就麻烦了。

避坑指南:拿到 sensor 的 datasheet 后,第一件事就是确认 Bayer 排列顺序。不要只看文字描述,最好找到寄存器配置的默认值,跟实际输出做一次交叉验证。

3.3 色彩空间:从 Bayer 到 RGB 再到 YUV

Bayer raw 数据经过 demosaic 插值后,变成每个像素都有 R、G、B 三个分量的 RGB 图像。但 ISP 内部处理时,通常不会一直用 RGB 空间。

为什么?因为 RGB 三个通道相关性太强,做压缩、降噪、传输都不划算。所以大部分 ISP 会把 RGB 转成 YUV 空间。

YUV 的核心思想:

  • Y:亮度分量,包含大部分图像细节
  • U / V:色度分量,包含颜色信息
  • 人眼对亮度敏感,对色度不敏感 → 可以对 UV 做下采样,节省带宽

常见的 YUV 采样格式:

格式描述数据量(相对 4:4:4)
YUV 4:4:4每个像素都有完整的 Y、U、V100%
YUV 4:2:2每 2 个像素共享一组 UV66.7%
YUV 4:2:0每 4 个像素共享一组 UV50%

我建议你在调试 MIPI 链路时,先确认 ISP 输出的 YUV 格式。很多故障表现为画面颜色不对,其实不是 sensor 坏了,而是 ISP 配置的 YUV 采样格式跟接收端不匹配。

3.4 数据接口协议:MIPI 与 LVDS

传感器和 ISP 之间怎么传数据?目前主流就两种:MIPI CSI-2 和 LVDS。我个人的习惯是,先看项目对功耗和走线长度的要求,再选接口。

3.4.1 MIPI CSI-2

MIPI 是手机和平板领域的主流。它使用差分信号传输,一对差分线就是一个 Lane。常见的配置有 1-Lane、2-Lane、4-Lane。

MIPI 的物理层叫 D-PHY,核心参数:

  • 每个 Lane 的数据速率:最高约 2.5 Gbps(D-PHY v1.2)
  • 时钟 Lane 和数据 Lane 分开
  • 低功耗模式(LP)和高速模式(HS)切换

调试要点:MIPI 信号最容易出问题的地方是 Lane 的 skew。4 个 Lane 之间的数据到达时间差不能超过 0.2 UI。我曾经用示波器抓过一组信号,发现 Lane 3 比 Lane 0 晚了 300 ps,画面就出现了竖条纹。调整 PCB 走线等长后问题解决。

3.4.2 LVDS

LVDS 在车载和工业领域用得比较多。它也是差分信号,但跟 MIPI 的协议栈完全不同。LVDS 通常需要额外的同步信号(HSYNC、VSYNC、DE)。

LVDS 的典型配置:

  • 每个通道 4 对差分线(3 对数据 + 1 对时钟)
  • 数据速率:每对线 100 Mbps ~ 800 Mbps
  • 传输距离:可以到 10 米以上(MIPI 一般不超过 30 cm)

注意:LVDS 的共模电压范围是 1.125V ~ 1.375V。如果 sensor 和 ISP 的共模电压不匹配,信号会直接丢失。我遇到过一块板子,LVDS 信号幅度正常但 ISP 就是锁不住 PLL,最后发现是 sensor 的共模电压偏了 50 mV。

3.5 知识体系总览

下面这张图把本章的核心概念串起来了。从 sensor 输出 raw data 开始,经过 Bayer 排列、位深选择、色彩空间转换,最后通过 MIPI 或 LVDS 送到 ISP。每个环节都可能出问题,但只要你把基础概念吃透了,定位故障就有方向。

数字图像信号基础结构图 数字图像信号链路基础结构 CMOS Sensor Bayer Raw 位深选择 Demosaic RGB 空间 YUV 空间 MIPI CSI-2 LVDS ISP 接收 关键路径: Sensor → Bayer Raw → 位深 → Demosaic → RGB → YUV → MIPI/LVDS → ISP

3.6 实战中的常见故障模式

最后,我把自己这些年踩过的坑整理成一张表。你在调试时如果遇到类似现象,可以优先排查对应的环节。

故障现象可能原因排查方向
画面全绿/全红Bayer 顺序配置错误检查 sensor 寄存器,确认 Bayer 排列
颜色偏紫/偏蓝白平衡增益错误或 YUV 格式不匹配检查 ISP 的 AWB 配置和 YUV 采样格式
竖条纹/横条纹MIPI Lane 间 skew 过大用示波器测量各 Lane 的时序偏差
画面闪烁帧同步信号丢失或 PLL 失锁检查 VSYNC 和 HSYNC 波形
暗部噪点严重位深不足或增益过高确认 sensor 输出位深,检查 ISP 增益配置
图像有锯齿Demosaic 算法参数不合适调整 ISP 的 demosaic 边缘保护阈值

嗯,这一章的内容就到这里。基础概念虽然枯燥,但它们是整个图像信号链路的基石。你把这些搞清楚了,后面学 ISP 的各个模块就会轻松很多。