一、课程导论与RAW基础

1.1 什么是RAW格式?

各位同学好,我是这门课的主讲。在正式开始之前,我想先问大家一个问题:你手机或相机拍出来的照片,真的是「原始数据」吗?

答案是否定的。你看到的JPEG或者HEIC文件,其实已经经过了大量处理——白平衡、去马赛克、降噪、锐化、伽马校正……相机内部帮你做了一套完整的「后期流程」。而RAW格式,说白了就是把这些处理全部砍掉,只保留传感器最原始的电压读数。

我习惯把RAW比作「数字底片」。就像胶片时代的底片一样,它记录的是最原始的光信号,而不是最终的照片。每个像素点只记录一个颜色通道的强度——红色、绿色或蓝色,这叫做Bayer阵列。嗯,这里要注意,RAW不是一张完整的彩色图像,它是一堆单色像素的集合。

核心要点:RAW文件 = 传感器原始电压值 + 元数据(ISO、快门、光圈等)。它没有经过任何图像处理,是真正的「第一手数据」。

1.2 RAW与sRGB的区别

很多初学者会混淆这两个概念。我简单列个表,你一看就明白了:

对比维度 RAW sRGB
位深度 12bit / 14bit(4096~16384级) 8bit(256级)
色彩空间 线性(与光强成正比) 非线性(伽马校正)
数据范围 0 ~ 16383(14bit) 0 ~ 255
存储格式 单通道Bayer模式 三通道RGB
处理状态 未处理 已处理(含降噪、锐化等)

为什么会这样?你想想看,sRGB只有256个灰度级,而RAW有16384个。这意味着RAW能记录更细腻的明暗变化。我在项目中遇到过一个问题:用sRGB图像做去噪,暗部细节全被压缩到0~10这个区间,噪声和信号几乎无法区分。但换成RAW数据,暗部可能分布在0~200的范围内,信噪比明显更好。

个人经验:我曾经做过一个实验,把同一张RAW分别保存为sRGB和线性TIFF,然后训练两个去噪模型。结果RAW域训练的模型PSNR高出3dB以上。说白了,信息量决定了上限。

1.3 为什么在RAW域做去噪?

这个问题我经常被问到。我的回答很简单:因为噪声的「出生地」就在RAW域。

传感器上的噪声主要有几种:

  • 读出噪声:读取电压时引入的电子噪声
  • 散粒噪声:光子到达的随机性,服从泊松分布
  • 暗电流噪声:热激发产生的电子
  • 量化噪声:ADC转换时的舍入误差

这些噪声都是在RAW阶段产生的。一旦经过去马赛克、白平衡、伽马校正等处理,噪声的统计特性会被严重扭曲——它不再是简单的加性高斯噪声,而是变成了复杂的、空间相关的、非线性的噪声。这时候再去降噪,就像在打一个会变形的靶子,难度翻倍。

我建议所有做图像去噪的同学,都先问自己一个问题:我的噪声模型是什么?如果你连噪声的分布都不知道,那模型大概率是瞎蒙的。而在RAW域,噪声模型相对清晰——散粒噪声的方差等于信号强度,读出噪声是高斯分布。这些物理规律是可以数学建模的。

避坑指南:我曾经在sRGB域训练了一个看起来很漂亮的去噪网络,结果放到真实相机上效果一塌糊涂。后来排查发现,sRGB的伽马校正把暗部噪声放大了,而亮部噪声被压缩了,网络根本学不到统一的噪声模式。从那以后,我坚持在RAW域做去噪。

1.4 课程项目全景预览

这门课不是纯理论,我们会有完整的实战项目。下面这张图展示了整个课程的知识体系:

课程知识体系与项目流程 RAW基础与数据解析 噪声建模与仿真 数据管线搭建 传统去噪算法 深度学习模型设计 损失函数与训练 真实相机数据采集 模型部署与优化 效果评估与调优 综合项目:端到端RAW去噪系统 📌 课程覆盖:从RAW数据解析 → 噪声建模 → 深度学习模型设计 → 真实相机部署,完整闭环 📌 你将获得:一个可运行的RAW去噪系统 + 一套可复用的数据管线 + 实战避坑经验

整个课程分为四个阶段:

  1. 基础篇(第1-8章):RAW格式解析、噪声建模、数据管线搭建。这部分我会带你手写一个RAW解析器,而不是用现成的库。
  2. 算法篇(第9-18章):从BM3D到深度学习,从U-Net到Transformer。每个模型我都会给出完整的PyTorch实现。
  3. 实战篇(第19-25章):用真实相机采集数据,训练模型,部署到移动端。这部分坑最多,我会把踩过的坑一一告诉你。
  4. 进阶篇(第26-30章):多帧融合、视频去噪、极端暗光场景。这些是工业级应用的核心。

我的建议:如果你刚开始接触RAW域去噪,不要急着跑大模型。先把第一章的基础打牢——理解Bayer阵列、黑电平、增益这些概念。我见过太多人模型跑得飞起,结果连RAW文件都读不对,最后效果差还找不到原因。