图像质量基础:RAW图、Bayer格式、ISP Pipeline简介

做图像算法调优,有个坎儿你早晚得迈过去——理解图像传感器到底输出了什么。

我见过不少刚入行的工程师,拿着RGB图像就开始调3A参数。调了半天效果不对,最后发现连原始数据长什么样都没看过。嗯,这其实是个大坑。

这一节,咱们把地基打牢。从RAW图、Bayer格式,到ISP Pipeline,一条线捋清楚。

1. RAW图:传感器最诚实的输出

先问个问题:你手机拍完一张照片,存成JPEG。这个JPEG,跟传感器看到的东西,差了多少?

答案是——差了一个银河系。

传感器输出的原始数据,叫RAW图。它有几个关键特征:

  • 线性数据:像素值和光强成正比。没有Gamma校正,没有色调映射。
  • 高位深:通常是10bit、12bit甚至14bit。不像8bit JPEG只有256个灰度级。
  • 未经过任何美化:没有白平衡、没有降噪、没有锐化。说白了,就是传感器最诚实的记录。

核心观点:3A算法(自动对焦、自动曝光、自动白平衡)的输入,必须是RAW图。用JPEG做3A,就像戴着墨镜看颜色——不准。

我在项目中遇到过一件事:某款手机在暗光下对焦总是慢半拍。排查了很久,发现算法用的是YUV数据做对焦评价。换成RAW域的相位差数据后,对焦速度直接翻倍。这就是数据源选对的重要性。

2. Bayer格式:为什么是RGGB?

传感器上的每个像素,其实只能感知光的强度,分不清颜色。那彩色照片怎么来的?

答案是在像素表面覆盖一层彩色滤光片阵列(CFA)。最经典的,就是Bayer格式。

Bayer阵列的排列方式:

R G R G
G B G B
R G R G
G B G B

你注意看,绿色像素占了50%,红色和蓝色各占25%。为什么?

因为人眼对绿色最敏感。绿色通道的分辨率直接决定了画面的细节感。这个设计,说白了就是仿生学——模拟人眼视锥细胞的分布密度。

实战技巧:调自动白平衡时,我建议你重点关注Bayer中的G通道。因为G通道的信噪比最高,用它做色温估计,稳定性最好。

Bayer RAW图在内存里的排布,就是一个二维数组。每个像素只存一个颜色值。比如一个1920x1080的Bayer RAW,实际数据量就是1920x1080个像素值,每个值12bit。

你想想看,如果直接显示这个图,它看起来是灰蒙蒙的、带网格纹理的。这就是所谓的“马赛克图”。

3. ISP Pipeline:从RAW到人眼喜欢的样子

RAW图不能直接用。得经过一系列处理,才能变成我们看到的鲜艳照片。这个处理链条,就是ISP Pipeline(图像信号处理流水线)。

我画了一张图,帮你把整个流程串起来:

ISP Pipeline 典型流程 Bayer RAW 黑电平校正 去马赛克 白平衡 Gamma校正 色彩校正 降噪 锐化 色调映射 YUV输出 3A算法在Pipeline中的位置 自动曝光(AE)通常在黑电平校正后、去马赛克前,基于RAW统计直方图 自动白平衡(AWB)在去马赛克后,基于RGB统计做色温估计 自动对焦(AF)在RAW域或YUV域,基于相位差或对比度评价

这个流程里,有几个关键点你得记住:

  • 黑电平校正:传感器有暗电流,即使全黑也有非零输出。得减掉这个底噪。
  • 去马赛克:把Bayer格式插值成完整的RGB图。插值算法好坏,直接影响边缘和细节。
  • 白平衡:调整R/G/B增益,让白色物体在不同光源下都呈现白色。这就是咱们课程的核心之一。
  • Gamma校正:把线性数据映射到人眼感知的亮度空间。说白了,就是让暗部细节更明显。

避坑指南:我曾经在调试自动曝光时,直接从Gamma校正后的数据里取亮度统计。结果曝光总是偏暗。后来才发现,Gamma已经改变了亮度映射关系。正确的做法是在线性域(Gamma之前)做曝光统计。

4. 为什么3A算法必须理解这些?

我直接给你列个对照表,你就明白了:

3A模块 依赖的数据 常见坑点
自动曝光(AE) RAW域亮度直方图 用Gamma后数据会导致曝光不准
自动白平衡(AWB) 去马赛克后的RGB统计 Bayer格式下直接统计会引入网格噪声
自动对焦(AF) RAW域相位差或YUV对比度 不同ISP阶段的对焦评价函数差异很大

你想想看,如果不懂Bayer格式,你连白平衡的R/G增益该加在哪个通道上都不清楚。如果不懂ISP Pipeline,你都不知道曝光统计应该在哪个环节取数据。

所以,这一节虽然基础,但它是后面所有调优工作的前提。

个人习惯:我每次接手一个新平台的ISP调试,第一件事就是抓一帧RAW图,用工具打开看看。看黑电平值、看Bayer排列、看有没有坏点。这些信息,比看任何文档都来得直接。