3、RAW图格式解析:RAW数据格式、Bayer模式、黑电平校正原理

说到RAW图,很多刚入行的朋友会觉得它就是个“半成品”。其实不然。我个人的理解是——RAW是传感器最诚实的表达。它还没被“美颜”,也没被“修图”,但恰恰是这种原始状态,藏着图像质量的命根子。

这一节,咱们就把它扒开看看。

3.1 RAW数据格式:传感器到底存了什么?

你想想看,相机按下快门那一瞬间,传感器上的每个像素点都在拼命收集光子。但传感器不关心颜色,它只认“光多光少”——也就是电压高低。这个电压经过ADC(模数转换器)变成数字值,存下来,就是RAW数据。

RAW格式说白了就是:每个像素只存一个数值,代表该像素感受到的光强度。没有去马赛克,没有白平衡,没有Gamma校正。干干净净。

关键点: RAW数据是线性的,且位深通常高于8bit。常见的位深有:

  • 10-bit:1024级灰度,常见于早期手机传感器
  • 12-bit:4096级灰度,主流安防和消费级相机
  • 14-bit:16384级灰度,专业相机和高端工业相机
  • 16-bit:65536级灰度,科学级/医疗级应用

我在项目中遇到过有人直接把10-bit RAW当成8-bit去处理,结果暗部全是色块。嗯,位深这事,千万别省。

3.2 Bayer模式:为什么传感器不直接拍彩色?

传感器本身是色盲的。它只能感知亮度,分不清红绿蓝。那彩色照片怎么来的?

答案是在传感器表面覆盖一层彩色滤光片阵列(CFA)。每个像素只允许特定波长的光通过。最常见的排列方式就是Bayer模式。

Bayer模式由Bryce Bayer在1976年发明。它的核心思想是:人眼对绿色最敏感,所以绿色像素占一半,红色和蓝色各占四分之一。

典型的Bayer排列长这样:

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

但别以为只有这一种。我整理了几种常见的Bayer变体:

模式名称 排列顺序 常见应用
BGGR 第一行 B G B G,第二行 G R G R Sony、OmniVision传感器
RGGB 第一行 R G R G,第二行 G B G B 三星、安森美传感器
GRBG 第一行 G R G R,第二行 B G B G 部分安防传感器
GBRG 第一行 G B G B,第二行 R G R G 部分工业相机

避坑指南: 我曾经因为搞错Bayer顺序,把RGGB当成BGGR去解,结果整张图偏紫。调了三天参数才发现是顺序问题。所以拿到RAW的第一件事——确认Bayer pattern。别信文档,自己画个4x4的像素值矩阵看一眼。

除了标准的Bayer,还有更复杂的CFA模式。比如X-Trans(富士)、Quad Bayer(高像素手机)、RGBW(低光增强)。但万变不离其宗——都是让每个像素只感光一种颜色,后续通过插值恢复全彩。

3.3 黑电平校正:为什么RAW图不是从0开始的?

这个问题很有意思。你打开一个RAW文件,发现最暗的像素值不是0,而是某个正数。比如12-bit RAW里,最暗可能是64,而不是0。

为什么会这样?

原因有两个:

  1. 传感器暗电流: 即使完全遮光,传感器内部的热噪声也会产生微弱电荷。这个底噪会叠加到信号上。
  2. ADC偏移: 模数转换器为了保证信号不削波,会人为加一个偏置电压。

这个“非零的起点”,就是黑电平(Black Level)。

黑电平校正的目的很简单:把真正的“黑”拉回到0。

校正公式也很直接:

校正后像素值 = 原始像素值 - 黑电平值

但这里有个坑——黑电平不是固定不变的。我遇到过的情况是:

  • 不同增益下,黑电平会漂移
  • 不同温度下,黑电平会变化
  • 不同通道(R/Gr/Gb/B),黑电平可能不同

注意: 黑电平校正必须在去马赛克之前做。如果顺序搞反,插值会把黑电平误差扩散到整个画面,导致暗部偏色。我曾经见过一个案例,黑电平没校正好,暗部偏绿,调了半个月白平衡都拉不回来。

实际工程中,黑电平的获取方式有两种:

方式 原理 优缺点
OB(Optical Black)像素 传感器边缘有一圈被金属遮挡的像素,读取它们的平均值作为黑电平 实时性好,但OB区域可能受温度梯度影响
暗场校准 在完全遮光条件下拍摄一张全黑RAW,统计全图最小值或均值 精度高,但需要离线校准,且温度变化后需重新校准

我个人习惯用OB像素做实时校正,同时定期做暗场校准来修正OB的偏差。双保险。

3.4 知识结构总览

下面这张图把本节的核心逻辑串起来了。你可以把它当作一个快速索引:

RAW图格式解析 · 知识结构 RAW数据格式 Bayer模式 每个像素只感光一种颜色 绿色占50%,红蓝各占25% 常见排列:RGGB/BGGR/GRBG/GBRG 黑电平校正 校正公式:P_out = P_in - BL OB像素实时校正 / 暗场校准 注意:不同增益/温度下BL会漂移 核心原则 RAW是线性数据 → 先做黑电平校正 → 再做去马赛克 → 后续ISP流程

3.5 实战要点总结

最后,我把这一节最核心的几个实战要点列出来。你调试ISP时,这些地方最容易出问题:

  • 拿到RAW先确认位深和Bayer顺序——用工具读一下文件头,或者直接看4x4像素矩阵
  • 黑电平校正必须在去马赛克之前——顺序错了,暗部偏色跑不掉
  • 黑电平不是常数——增益变化、温度变化都要重新校准
  • OB像素和暗场校准结合使用——一个保实时,一个保精度
  • 校正后检查暗部是否归零——盖上镜头盖拍一张,看最暗像素值是不是接近0

一个小技巧: 我习惯在调试阶段,把黑电平校正前后的RAW图各存一份。对比着看,能快速判断是黑电平问题还是其他ISP模块的问题。这个习惯帮我省了不少排查时间。