ICCV 2019【从颜色科学到相机】04_RAW 到底是什么?从传感器、黑电平到去马赛克
颜色与相机成像专题4RAW 到底是什么从传感器、黑电平到去马赛克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 只是 CFAColor Filter Array彩色滤光阵列的一种。真实文件还可能使用其他排列、特殊像素结构或者已经进行了部分重建。不能仅凭扩展名就认定左上角一定是 R。Bayer 只是 CFAColor 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]≈gktEb 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 b64b64白电平w 4095 w4095w4095某像素读数d 1088 d1088d1088。简单归一化为r d − b w − b 1024 4031 ≈ 0.2540 r\frac{d-b}{w-b}\frac{1024}{4031}\approx 0.2540rw−bd−b40311024≈0.2540直接用1088 / 4095 1088/40951088/4095会把偏置混进信号。程序中先转换为浮点再做减法无符号整数减法可能下溢。黑电平还可能按通道、行或区域变化应读取元数据而不是总写一个常数。importnumpyasnpdefnormalize_raw(raw,black,white):rawnp.asarray(raw,dtypenp.float32)blacknp.asarray(black,dtypenp.float32)whitenp.asarray(white,dtypenp.float32)ifnp.any(whiteblack):raiseValueError(white must exceed black)return(raw-black)/(white-black)这里故意不立即裁到 01负值有时对噪声统计有意义大于 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^4GupGdownGleftGrightB ^ 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^4BulBurBdlBdr图 4讲义 PDF 第 130 页。中心 R 位置缺失的 G、B 分量来自不同方向的邻居。这个方法默认局部变化平缓但边缘两侧可能属于不同物体。跨边缘平均会混合不该混合的值产生颜色拉链、伪色和细节损失。边缘感知方法尝试沿变化较小的方向插值。更复杂的方法利用通道相关性或者联合完成去马赛克与降噪。算法不是在恢复“藏在文件里”的完整 RGB而是在依据采样和先验估计缺失数据。7. 噪声为什么不能总用固定高斯分布模拟光子计数常用泊松分布描述读出噪声则常近似成高斯噪声。在简化数字域中常见的方差模型是Var ( n ∣ s ) ≈ a s b \operatorname{Var}(n\mid s)\approx asbVar(n∣s)≈asbs ss是信号强度a aa描述与信号有关的分量b bb描述近似固定的读出分量。真实设备还可能包含固定模式、行列噪声、空间相关性和量化效应。去马赛克会混合相邻位置白平衡会按通道放大色调曲线会按亮度改变噪声幅度。所以 RAW 噪声和最终 JPEG 中的噪声不是同一种简单分布。8. 保存 RAW 时要一起保存什么至少记录设备型号、曝光时间、ISO 或有效增益信息、黑白电平、CFA 排列、有效区域、白平衡系数和颜色标定信息。尽量保留原始文件及原始元数据而不只导出一张数组。若用 RAW 做科学测量还要验证线性区间、温度影响和重复拍摄的稳定性。若只是生成显示预览则应明确预览经过了哪些白平衡、颜色映射和编码步骤。参考与出处Michael S. Brown PDF 第 109136、176、240 页。噪声方差模型、归一化代码和边界条件是本专题补充的教学内容不代表对某一设备的实测标定结果。上一篇色彩空间与 Gamma下一篇白平衡与颜色标定