1. RAW 域基础概念:什么是 RAW 图像、Bayer 阵列模式、RAW 与 RGB/YUV 的区别

做图像处理这些年,我经常被刚入行的同事问一个问题:「老师傅,RAW 到底是个啥?跟 JPEG 有啥不一样?」

嗯,这个问题问得好。说白了,RAW 就是相机传感器最原始的「底片」,是未经任何加工的原始数据。今天咱们就把这个基础打牢。

1.1 什么是 RAW 图像

RAW 图像,你可以把它理解成传感器「看到」的原始电信号。每个像素点只记录一个颜色通道的亮度值——要么是红,要么是绿,要么是蓝。它不像你手机相册里的 JPEG,已经经过了白平衡、去马赛克、伽马校正等一系列处理。

核心要点:RAW 是线性数据,位深通常为 10bit、12bit 或 14bit。而 JPEG 是 8bit 非线性数据,已经被人眼视觉特性「扭曲」过了。

我最早接触 RAW 是在做一款安防相机的时候。当时客户抱怨夜间图像噪点太多,我一看 JPEG 输出,根本没法分析噪声来源。后来我直接抓了 RAW 数据,才发现问题出在模拟增益上——这就是 RAW 的价值:它保留了最原始的信息,让你能追根溯源。

1.2 Bayer 阵列模式

为什么传感器不直接记录 RGB 三个通道?你想想看,如果每个像素都要记录三个颜色,那传感器面积得翻三倍,成本根本扛不住。所以拜耳(Bayer)在 1976 年提出了一个巧妙的方案:用 2×2 的滤色器阵列,让每个像素只感光一种颜色。

最常见的模式是 RGGB,也就是左上角是 R(红),右上角和左下角是 G(绿),右下角是 B(蓝)。为什么绿色有两个?因为人眼对绿色最敏感,多给绿色一些采样,视觉上更自然。

模式名称 2×2 排列 常见应用
RGGB R G / G B Sony、OmniVision 多数传感器
GRBG G R / B G 部分 Samsung 传感器
BGGR B G / G R 部分安森美传感器
GBRG G B / R G 部分老款 CCD 传感器

避坑指南:我曾经在一个项目中,因为 Bayer 模式搞反了,导致整张图像偏色严重。调试了整整两天才发现是 sensor 配置里的模式跟 ISP 里写的不一致。所以拿到新 sensor 的第一件事,就是确认它的 Bayer 排列顺序。

你可能会问:「这四种模式有啥本质区别?」其实没有。它们只是起始相位不同。只要 ISP 里的去马赛克算法知道当前是什么模式,就能正确还原颜色。但如果你搞错了,那画面就会像打翻了调色盘。

1.3 RAW 与 RGB/YUV 的区别

这个区别,我习惯用一个比喻来解释:

  • RAW 是「未加工的食材」—— 一块生牛肉,你可以煎、烤、炖,自由度最高。
  • RGB 是「切好配好的菜」—— 已经处理过,可以直接下锅,但选择少了。
  • YUV 是「半成品菜」—— 不仅切好了,还按人眼喜好调了味,直接吃也行。

从数据量上看,同样分辨率下,RAW 占用的空间最小(每个像素 1 个值),RGB 最大(每个像素 3 个值),YUV 介于中间(Y 分量全分辨率,UV 分量通常降采样)。

特性 RAW RGB YUV
数据来源 传感器直接输出 去马赛克后 RGB 转换后
位深 10-14bit 8-12bit 8-10bit
颜色空间 传感器原生 sRGB/Adobe RGB BT.601/BT.709
数据量 1 通道/像素 3 通道/像素 1.5-2 通道/像素
可编辑性 极高 中等 低

注意:千万不要在 RAW 域做 RGB 域的操作,比如直接对 RAW 数据做白平衡增益。因为 RAW 数据是 Bayer 排列的,每个像素只对应一个颜色通道,你没法单独调整某个颜色的增益——除非你先做去马赛克。我见过有人这么干,结果图像出现了严重的伪色。

说到 YUV,我记得有一次做视频编码优化,发现编码器对 YUV 420 格式处理效率特别高。为什么?因为 UV 分量只有 Y 的四分之一,数据量直接减半。但代价是色彩分辨率降低了——不过人眼对亮度敏感、对色彩不敏感,所以这个取舍很划算。

1.4 知识结构总览

下面这张图,是我自己整理的知识框架。每次带新人,我都会先让他们看这张图,搞清楚 RAW 在整个图像处理链路中的位置。

RAW 域图像处理知识结构 RAW 图像 Bayer 阵列模式 RGGB GRBG BGGR GBRG RAW vs RGB vs YUV RAW RGB YUV 核心:RAW 是传感器原始数据,Bayer 是采样模式 RGB/YUV 是经过 ISP 处理后的不同表示形式

这张图把本章的三个核心概念串起来了。你从左上角开始看:RAW 图像是源头,它通过 Bayer 阵列采样得到原始数据;然后经过 ISP 处理,可以变成 RGB 或 YUV。搞清楚这三者的关系,后面的课程你就不会迷路。

个人建议:刚开始学 RAW 处理时,别急着上复杂的算法。先学会怎么读 RAW 文件、怎么解析 Bayer 模式、怎么把 RAW 数据可视化。我当年就是靠着一份 raw 文件和一个 Python 脚本,一点点把 ISP 流程啃下来的。