1. RAW图像基础:从传感器到数字底片

做图像处理这些年,我经常被问到同一个问题:「RAW到底是个什么东西?跟JPEG有什么区别?」说实话,我刚入行时也懵过一阵子。记得第一次拿到索尼相机的.ARW文件,用普通看图软件打不开,我还以为是文件坏了……后来才明白,RAW压根就不是给「看」的,它是给「算」的。

这一章,咱们就把RAW的底裤扒干净。你理解了RAW,后面讲黑电平校正、去马赛克、白平衡,才能踩在实地上。

1.1 什么是RAW格式

RAW,直译就是「生的、未加工的」。它记录的是图像传感器每个像素点直接输出的原始电压值——说白了,就是一串数字,告诉你每个感光单元接收到了多少光子。

我习惯把RAW比作「数字底片」。传统胶片摄影,底片记录了最原始的光影信息,后期冲洗时可以调整曝光、对比度。RAW就是数码时代的底片,只不过冲洗过程变成了软件处理。

核心要点:RAW不是图像,是数据。它需要经过ISP(图像信号处理器)的渲染,才能变成我们肉眼能看到的画面。

1.2 RAW vs JPEG:一场「全熟牛排」与「和牛刺身」的较量

JPEG是什么?是相机内部ISP已经帮你「烹饪」好的成品。白平衡、锐化、降噪、伽马校正……全都做完了,然后压缩打包。你拿到手就能吃,但想回锅重做?没门。

RAW呢?是刚从传感器上切下来的「刺身」,什么都没动过。你想怎么调味都行。

我整理了一个对比表,你一看就明白:

对比维度 RAW JPEG
位深度 12bit / 14bit(4096~16384级) 8bit(256级)
色彩空间 相机传感器原生色彩 sRGB / Adobe RGB(已映射)
白平衡 可后期任意调整 拍摄时已固定
动态范围 保留传感器全部动态范围 经过色调映射,高光阴影细节丢失
压缩 无损或有损(但保留原始数据) 有损压缩,不可逆
文件大小 20~50MB(2400万像素) 5~10MB
适用场景 专业后期、高动态场景、暗光 快速分享、存储空间有限

我的经验:有一次在演播室拍LED大屏,JPEG拍出来高光一片死白,怎么拉都拉不回来。换成RAW,硬是从「过曝」里把屏幕上的文字给拽了回来。这就是位深度和动态范围的优势——你后期有「抢救」的空间。

1.3 RAW文件的存储结构:Bayer Pattern

好,现在咱们聊聊RAW文件里面到底存了什么。这就要说到Bayer Pattern了。

你想想看,一个CMOS传感器上的每个像素点,其实只能感知光的强度,它分不清颜色。那彩色照片是怎么来的?答案是在传感器表面覆盖一层彩色滤光片阵列(CFA),让每个像素只接收红、绿、蓝中的一种光。

最常见的排列方式就是Bayer Pattern。它长这样:

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博士在1976年提出的,到现在还在用——经典就是经典。

RAW文件里存的就是这些「R、G、B」的原始数值,每个像素只有一个颜色通道的值。至于每个像素缺失的另外两个颜色通道怎么补全?那是后面「去马赛克(Demosaic)」章节的事,这里先挖个坑。

注意:不同厂家的Bayer排列可能不一样。索尼常用RGGB,三星用GRBG,富士还有X-Trans排列。做ISP算法时,第一步就得确认Bayer Pattern的起始位置,否则颜色全乱套。我曾经因为搞错了一个像素偏移,调试了整整两天……

下面这张图展示了Bayer Pattern的完整数据流:

Bayer Pattern 数据流与RAW文件结构 场景光线 镜头 CFA滤光片 CMOS传感器 Bayer Pattern R G R G B G R G R ADC 模数转换 RAW文件 ▸ 文件头(元数据) ▸ Bayer原始数据 ▸ 黑电平/增益参数 ISP 处理 光线 → 镜头 → CFA滤光 → 传感器感光 → ADC量化 → RAW文件存储 注:RAW文件保存的是ADC量化后的数字值,未经任何ISP处理

1.4 常见RAW文件扩展名

市面上的相机品牌那么多,每家都有自己的RAW格式。我整理了一份清单,方便你对照:

扩展名 品牌/标准 特点
.DNG Adobe(通用标准) 开放格式,很多手机和相机支持。我个人最推荐用DNG做算法开发,因为文档公开,解析方便
.ARW Sony 索尼α系列微单,压缩算法较复杂
.CR2 / .CR3 Canon CR2是经典格式,CR3是新一代,加密更严
.NEF Nikon 尼康的RAW,支持无损压缩
.RAF Fujifilm 富士X-Trans排列,Bayer变种
.ORF Olympus 奥林巴斯,微单常用
.PEF Pentax 宾得,相对小众

避坑指南:做算法验证时,我建议统一转成DNG格式。为什么?因为DNG的Bayer数据排列规范、元数据字段标准,解析代码写一次就能通吃。我曾经被索尼ARW的「无损压缩」坑过——它的压缩算法不是简单的线性存储,解压错了数据全乱。用DNG就省心多了。

1.5 小结

这一章我们聊了:

  • RAW是传感器的原始数据,不是图像
  • RAW vs JPEG:位深度、动态范围、可编辑性的本质差异
  • Bayer Pattern:每个像素只记录一种颜色,绿色占一半
  • 常见RAW扩展名:DNG是通用标准,其他各家有各家的玩法