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 知识结构总览
下面这张图,把本章的核心概念串起来了:
1.6 本章小结
RAW域处理,说白了就是“在传感器数据还没被污染之前,做最精细的调整”。拜耳阵列决定了我们看到的彩色信息是如何编码的;黑电平校正保证了暗部数据的准确性;白平衡则让色彩还原有了物理基础。
这三个概念,是ISP管线的基石。后面讲HDR合成、噪声抑制、色调映射,全都绕不开它们。我建议你花时间把本章内容吃透——尤其是黑电平的动态采样和白平衡的线性增益原则。这些细节,往往是项目成败的关键。