1、RAW域基础:理解RAW图像格式、拜耳阵列、黑电平与白平衡的物理意义

做ISP这行,天天跟RAW打交道。说白了,RAW就是传感器最原始的“底片”。它没经过任何美化,像素值直接对应每个感光单元收集到的光子数。我刚开始接触RAW时,总觉得它就是个“大号灰度图”,后来才发现——这里面的门道深着呢。

1.1 RAW图像格式——传感器的“原生语言”

你想想看,相机按下快门那一瞬间,传感器上每个像素点都在拼命收集光子。这些光子被转换成电压,再经过ADC(模数转换器)变成数字值。这个数字值,就是RAW数据。

RAW格式有几个关键特征:

  • 位深高:通常是10bit、12bit、14bit,甚至16bit。普通JPEG只有8bit。位深越高,亮度层次越细腻。
  • 线性响应:RAW数据与场景亮度基本呈线性关系。这一点很重要——后面做HDR合成、去噪、色调映射,都依赖这个线性特性。
  • 未经过ISP管线:没有白平衡、没有去马赛克、没有伽马校正、没有降噪。它就是最原始的数据。

关键认知:RAW域处理之所以强大,是因为我们在“信息损失之前”做操作。一旦进了RGB域或YUV域,很多细节就再也找不回来了。

我记得有一次项目,客户抱怨夜景照片暗部噪点太多。我让他们把RAW文件发过来,在RAW域用双边滤波做降噪,再配合自适应黑电平校正——效果立竿见影。如果换成JPEG处理,暗部早就被压缩得一团糟了。

1.2 拜耳阵列——为什么传感器看不到彩色?

单个像素只能感知亮度,分不清颜色。那彩色照片怎么来的?

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

R Gr
Gb B

为什么绿色占一半?因为人眼对绿色最敏感。传感器设计者很聪明——把更多资源分配给绿色通道,模拟人眼的视觉特性。

这里有个坑:Gr和Gb虽然都是绿色,但物理位置不同,响应可能有细微差异。我在项目中遇到过,某些传感器在低光照下Gr和Gb会出现明显的“横纹”差异。如果不做Gr/Gb平衡校正,去马赛克后就会出现奇怪的绿色条纹。

避坑指南:我曾经在一个手机项目里,忽略了Gr/Gb差异,结果在暗光下拍出的照片有肉眼可见的绿色网格。后来加了Gr/Gb平衡步骤,问题才解决。记住——拜耳阵列不是简单的“RGB排列”,每个位置都有它的物理特性。

1.3 黑电平——传感器的“零点漂移”

理论上,没有光照时,像素输出应该是0。但现实是——传感器有暗电流,即使完全遮光,也会产生少量电荷。这个“非零的暗场输出”就是黑电平(Black Level)。

黑电平的物理意义:

  • 补偿暗电流:每个像素都有微小的漏电,温度越高越明显。
  • ADC偏移:模数转换器本身也有零点偏移。
  • 保证噪声分布对称:如果不减黑电平,暗部的噪声会被“抬高”,影响后续处理。

处理方式很简单:

// 黑电平校正
raw_corrected = raw_original - black_level;

// 如果传感器有多个通道的黑电平
raw_corrected = raw_original - black_level_per_channel[channel];

嗯,这里要注意——黑电平不是固定值。它会随温度、增益、曝光时间变化。我见过一些方案直接用一个固定值减,结果暗部偏色严重。正确的做法是:在每帧图像的光学黑区(OB,Optical Black)中实时采样,动态计算黑电平。

个人经验:我习惯在每帧RAW数据中,取OB区域的中位数作为黑电平值。为什么用中位数?因为OB区域也可能有坏点或噪声尖峰,均值容易被污染,中位数更鲁棒。

1.4 白平衡——还原“白色”的本来面目

人眼有色彩恒常性——不管在日光下还是白炽灯下,看白纸都是白的。但传感器没有这个能力。它忠实地记录光谱分布,结果就是:日光下偏蓝,白炽灯下偏黄。

白平衡的本质,就是给R、G、B三个通道乘上不同的增益,让中性色(灰卡、白纸)在最终图像中呈现为R=G=B。

白平衡增益的计算:

// 假设参考白点的RGB值
R_ref = 120, G_ref = 200, B_ref = 80

// 目标:让R=G=B=200
R_gain = 200 / 120 ≈ 1.667
G_gain = 200 / 200 = 1.0
B_gain = 200 / 80 = 2.5

// 应用增益
R_out = R_in * R_gain
G_out = G_in * G_gain
B_out = B_in * B_gain

在RAW域做白平衡,有个天然优势——线性增益。因为RAW数据是线性的,乘一个增益就是纯粹的缩放,不会引入非线性失真。如果在sRGB域或伽马校正后做白平衡,增益会改变色调曲线的形状,导致高光或暗部偏色。

核心原则:白平衡一定要在RAW域、线性空间下做。这是ISP管线的基本纪律。

你可能会问:白平衡增益会不会放大噪声?会。尤其是B通道增益往往最大(因为蓝光在传感器中响应最弱),暗部蓝色噪声会被明显放大。这就是为什么RAW域HDR噪声抑制中,白平衡和降噪要联合优化——先降噪再白平衡,还是先白平衡再降噪?这个问题我们后面章节会详细讨论。

1.5 知识结构总览

下面这张图,把本章的核心概念串起来了:

RAW域基础:知识结构图 RAW图像格式 拜耳阵列 (Bayer) 黑电平 (Black Level) 白平衡 (AWB) RGGB排列 / Gr/Gb差异 去马赛克 (Demosaic) 前置 暗电流补偿 / ADC偏移 OB区动态采样 / 中位数法 线性增益 / 通道独立校正 噪声放大风险 / 联合优化 核心:RAW域处理 = 在信息损失前做最优操作

1.6 本章小结

RAW域处理,说白了就是“在传感器数据还没被污染之前,做最精细的调整”。拜耳阵列决定了我们看到的彩色信息是如何编码的;黑电平校正保证了暗部数据的准确性;白平衡则让色彩还原有了物理基础。

这三个概念,是ISP管线的基石。后面讲HDR合成、噪声抑制、色调映射,全都绕不开它们。我建议你花时间把本章内容吃透——尤其是黑电平的动态采样和白平衡的线性增益原则。这些细节,往往是项目成败的关键。