☰
ICCV 2019【从颜色科学到相机】04_RAW 到底是什么?从传感器、黑电平到去马赛克
2026/10/16 3:02:48 网站建设 项目流程

颜色与相机成像专题(4):RAW 到底是什么?从传感器、黑电平到去马赛克

RAW 不是“一张比较暗的 RGB 照片”。它通常保存更接近传感器采样的数据及解释这些数据所需的元信息。本文解释 Bayer、曝光、ISO、黑电平、镜头阴影校正、去马赛克与噪声的关系。

关键词:RAW、Bayer、黑电平、去马赛克、图像传感器

1. 一个像素通常没有完整的 RGB

典型 Bayer 传感器在每个感光单元前放置一种颜色滤光片。一个常见的 2×2 排列是:

R G G B

这意味着红色位置只直接采样红色滤光通道,绿色位置和蓝色位置类似。最终照片需要每个位置都有 RGB 三个分量,缺少的分量必须估计出来。

这意味着红色位置只直接采样红色滤光通道,绿色位置和蓝色位置类似。最终照片需要每个位置都有 RGB 三个分量,缺少的分量必须估计出来。

具体来说,在 2×2 的 Bayer 单元中,左上和右下各有一个绿色感光单元,右上为红色,左下为蓝色。由于人眼对绿色最敏感,Bayer 排列让绿色占据一半的采样位置,以尽量贴近人眼的亮度感知特性。这种设计在成本和成像质量之间取得了平衡,也是它成为最主流 CFA 排列的原因之一。

每个感光单元本质上只记录一个亮度值,这个值对应它所覆盖的滤光片颜色通道。也就是说,RAW 文件里每个像素位置只有一个数字,而不是三个。要得到一张可显示的彩色照片,必须通过后续的去马赛克(demosaicing)算法,为每个位置补全缺失的另外两个颜色分量。这个补全过程本质上是一种估计,而不是直接测量,因此会引入一定的误差和伪影。

图 1:每个 CFA 位置只采到一个分量;去马赛克负责估计另外两个分量。

Bayer 只是 CFA(Color Filter Array,彩色滤光阵列)的一种。真实文件还可能使用其他排列、特殊像素结构,或者已经进行了部分重建。不能仅凭扩展名就认定左上角一定是 R。

Bayer 只是 CFA(Color Filter Array,彩色滤光阵列)的一种。真实文件还可能使用其他排列、特殊像素结构,或者已经进行了部分重建。不能仅凭扩展名就认定左上角一定是 R。

例如,有些传感器采用 RCCC(红、透明、透明、透明)排列,主要用于安防和车载场景,因为这类场景对亮度更敏感而对色彩要求较低。还有些传感器使用 RYYB(红、黄、黄、蓝)排列,通过用黄色滤光片替代部分绿色来提升进光量,常见于部分手机摄像头。此外,一些传感器会在 Bayer 阵列中嵌入白色像素(W)或相位检测像素(PDAF),用于辅助对焦或提升暗光表现。

因此,处理 RAW 文件时,必须从元数据中读取真实的 CFA 排列信息,而不能想当然地假设某种固定模式。错误的排列假设会导致去马赛克结果出现严重的颜色错乱和伪色。

2. RAW 为什么接近线性?

在合适工作区间内,光电子的期望数量与传感器接收的光和积分时间近似成正比。简化成:
在合适工作区间内,光电子的期望数量与传感器接收的光和积分时间近似成正比。简化成:

这个线性关系是理解 RAW 的核心。当光子打到感光单元上时,会激发电子,产生光生电荷。在未饱和的前提下,积累的电荷数量与入射光子数近似成正比,而入射光子数又正比于光照强度和曝光时间的乘积。因此,RAW 读数在理想情况下是场景辐照度的线性函数。

这种线性特性带来一个重要好处:RAW 数据可以直接用于光度学计算。例如,在做高动态范围(HDR)合成时,不同曝光时间的 RAW 帧之间可以通过简单的比例关系对齐;在做颜色标定时,线性响应也让矩阵变换更加可靠。相比之下,经过 Gamma 编码或色调映射后的 JPEG 已经不再是线性关系,直接做算术运算会产生偏差。

E [ d − b ] ≈ g k t E \mathbb{E}[d-b]\approx gktEE[d−b]≈gktE

b bb是黑电平,g gg是有效增益,t tt是曝光时间,E EE是适当加权后的辐照度,k kk包含转换比例。这里是期望关系,单次读数仍受噪声影响。

成立条件包括不饱和、不过度接近噪声底、传感器响应处于近似线性区间,并正确处理黑电平和设备特有校正。某些“计算 RAW”已经包含融合、降噪等步骤,需要查看具体设备与接口。

另外,RAW 的线性是针对本设备的通道响应。不同传感器使用不同滤光片,拍摄相同光谱时得到的三个读数仍可能不同。
另外,RAW 的线性是针对本设备的通道响应。不同传感器使用不同滤光片,拍摄相同光谱时得到的三个读数仍可能不同。

这意味着,即使两台相机对着同一个色卡拍摄,它们的 RAW 读数也不会直接可比。一台相机的红色通道可能对 600nm 的光更敏感,另一台则可能对 620nm 更敏感。因此,跨设备比较 RAW 数值时,必须先经过颜色标定,把各自的通道响应映射到一个共同的色彩空间(如 sRGB 或 XYZ),否则会得出错误的结论。

这也是为什么 RAW 文件必须附带颜色标定信息:没有这些信息,RAW 数值本身只是一堆与具体设备绑定的相对读数,无法被通用地解释。

图 2:讲义 PDF 第 118 页。线性并不意味着不同设备的原生 RGB 属于同一色彩空间。

3. 曝光和 ISO 分别改变什么?

曝光时间变长,通常能积累更多光电子,但更容易出现运动模糊或饱和。光圈和照明也会改变传感器接收的光。

ISO 设置与相机的模拟增益、数字增益、转换增益和成像策略有关。提高 ISO 本身不会让同样曝光条件下的像素接收到更多光子。把已有信号放大,也不会凭空改善光子统计带来的信噪比。

实际自动曝光会在提高 ISO 时缩短快门,噪声因此可能更明显。不同传感器还存在双转换增益等机制,所以“ISO 越高一定越差”也过于简单。比较时要把曝光量、增益和后续处理分开。

4. 黑电平:为什么关灯后读数不是零?

数字读数通常含有基线偏置,还可能受暗电流、温度和读出电路影响。光学遮挡区域或暗帧可用于估计黑电平,但减去黑电平只能校正基线,不能消除随机噪声。

假设黑电平b = 64 b=64b=64,白电平w = 4095 w=4095w=4095,某像素读数d = 1088 d=1088d=1088。简单归一化为:

r = d − b w − b = 1024 4031 ≈ 0.2540 r=\frac{d-b}{w-b}=\frac{1024}{4031}\approx 0.2540r=w−bd−b​=40311024​≈0.2540

直接用1088 / 4095 1088/40951088/4095会把偏置混进信号。

程序中先转换为浮点,再做减法;无符号整数减法可能下溢。黑电平还可能按通道、行或区域变化,应读取元数据,而不是总写一个常数。

importnumpyasnpdefnormalize_raw(raw,black,white):raw=np.asarray(raw,dtype=np.float32)black=np.asarray(black,dtype=np.float32)white=np.asarray(white,dtype=np.float32)ifnp.any(white<=black):raiseValueError("white must exceed black")return(raw-black)/(white-black)

这里故意不立即裁到 0~1:负值有时对噪声统计有意义,大于 1 的情况则需要检查白电平和饱和定义。显示或输出时再根据明确目的裁剪。

5. 坏点与平场校正

坏点处理用标定得到的位置或在线检测结果定位异常像素,再利用邻域估计替换值。单张暗图更容易发现热像素;完全无响应的死像素还需要明场等信息,不能把一张暗帧当作所有坏点的充分检测。

平场校正处理“均匀照明却不均匀输出”的问题,包括镜头阴影和响应不均。其简化形式为:

r f l a t ( x , y , c ) = a ( x , y , c ) [ d ( x , y , c ) − b ( x , y , c ) ] r_{\mathrm{flat}}(x,y,c)=a(x,y,c)\,[d(x,y,c)-b(x,y,c)]rflat​(x,y,c)=a(x,y,c)[d(x,y,c)−b(x,y,c)]

增益图a aa应在合适的标定条件下获得。

图 3:讲义 PDF 第 127 页。空间增益可以补偿边角衰减,但也会放大相应区域的噪声。

平场校正并不创造边角处本来没有采集到的光子。若边角原始信号很弱,校正后看起来同样亮,也不意味着信噪比与中心相同。

6. 去马赛克:插值为什么会产生伪色?

在一个 R 位置,简单的双线性插值可以写为:

G ^ = G u p + G d o w n + G l e f t + G r i g h t 4 \hat G=\frac{G_{\mathrm{up}}+G_{\mathrm{down}}+ G_{\mathrm{left}}+G_{\mathrm{right}}}{4}G^=4Gup​+Gdown​+Gleft​+Gright​​

B ^ = B u l + B u r + B d l + B d r 4 \hat B=\frac{B_{\mathrm{ul}}+B_{\mathrm{ur}}+ B_{\mathrm{dl}}+B_{\mathrm{dr}}}{4}B^=4Bul​+Bur​+Bdl​+Bdr​​

图 4:讲义 PDF 第 130 页。中心 R 位置缺失的 G、B 分量来自不同方向的邻居。

这个方法默认局部变化平缓,但边缘两侧可能属于不同物体。跨边缘平均会混合不该混合的值,产生颜色拉链、伪色和细节损失。

边缘感知方法尝试沿变化较小的方向插值。更复杂的方法利用通道相关性,或者联合完成去马赛克与降噪。算法不是在恢复“藏在文件里”的完整 RGB,而是在依据采样和先验估计缺失数据。

7. 噪声为什么不能总用固定高斯分布模拟?

光子计数常用泊松分布描述,读出噪声则常近似成高斯噪声。在简化数字域中,常见的方差模型是:

Var ⁡ ( n ∣ s ) ≈ a s + b \operatorname{Var}(n\mid s)\approx as+bVar(n∣s)≈as+b

s ss是信号强度,a aa描述与信号有关的分量,b bb描述近似固定的读出分量。真实设备还可能包含固定模式、行列噪声、空间相关性和量化效应。

去马赛克会混合相邻位置,白平衡会按通道放大,色调曲线会按亮度改变噪声幅度。所以 RAW 噪声和最终 JPEG 中的噪声不是同一种简单分布。

8. 保存 RAW 时要一起保存什么?

至少记录设备型号、曝光时间、ISO 或有效增益信息、黑白电平、CFA 排列、有效区域、白平衡系数和颜色标定信息。尽量保留原始文件及原始元数据,而不只导出一张数组。

若用 RAW 做科学测量,还要验证线性区间、温度影响和重复拍摄的稳定性。若只是生成显示预览,则应明确预览经过了哪些白平衡、颜色映射和编码步骤。

参考与出处

  • Michael S. Brown, PDF 第 109~136、176、240 页。
  • 噪声方差模型、归一化代码和边界条件是本专题补充的教学内容,不代表对某一设备的实测标定结果。

上一篇:色彩空间与 Gamma
下一篇:白平衡与颜色标定

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询