1. ISP Pipeline 概述与 AI 降噪的切入点
各位同学,咱们今天正式开讲。我是老张,在图像处理这行摸爬滚打了十几年,从最早的黑白 CCD 做到现在的 5000 万像素手机模组。说实话,AI 降噪这玩意儿刚出来的时候,我是不太信的——传统方法调了那么多年参数,一个神经网络就能搞定?后来真香了。
这一章,我们先搭个框架。你得先搞清楚 ISP 这条流水线到底长什么样,才能在合适的地方把 AI 降噪塞进去。别急着写代码,先把地图看明白。
1.1 传统 ISP 流水线:三个域的故事
一个典型的 ISP Pipeline,说白了就是把 Sensor 吐出来的原始数据,一步步变成你屏幕上看到的那张照片。整个过程会经历三个颜色空间:Bayer 域、RGB 域和 YUV 域。
我习惯把 ISP 想象成一条工厂流水线。Sensor 是原材料仓库,输出的是 Bayer 格式的 RAW 图。然后经过黑电平校正、去噪、去马赛克、白平衡、色彩校正、Gamma、锐化……最后输出一张 YUV 或 RGB 的成品图。
下面这张图,是我自己画的一个简化版 ISP 流程。你仔细看,每个阶段处理的域都不一样。
1.2 三个域,各自的特点
咱们一个一个说清楚。
| 处理域 | 数据格式 | 主要模块 | 噪声特点 |
|---|---|---|---|
| Bayer 域 | RAW (RGGB/GRBG等) | 黑电平校正、LSC、去噪 | 噪声与信号相关,呈泊松-高斯分布 |
| RGB 域 | RGB 三通道 | 白平衡、CCM、Gamma | 噪声经去马赛克后出现空间相关性 |
| YUV 域 | Y + UV 分量 | 锐化、色彩增强、缩放 | 亮度噪声与色度噪声分离 |
这里有个关键点:Bayer 域的噪声是最“原始”的。每个像素只记录一种颜色分量,噪声分布还没被后续处理扭曲过。我在项目中遇到过好几次,在 RGB 域做降噪,结果去马赛克算法把噪声变成了彩色的“水波纹”,怎么调都去不掉。后来把降噪挪到 RAW 域,问题直接解决。
1.3 AI 降噪的切入点:选 RAW 还是 RGB?
现在问题来了:AI 降噪模型应该插在流水线的哪个位置?
我个人习惯把选择分成两种场景:
场景一:追求极致画质 → RAW 域降噪
- 噪声模型最干净,没有去马赛克引入的伪影
- 信噪比增益最高,通常能比 RGB 域多 2-3dB
- 缺点:输入是 Bayer 格式,需要特殊网络设计
场景二:追求部署便捷 → RGB 域降噪
- 输入是标准 RGB 三通道,网络结构通用
- 可以和去马赛克后的其他模块共享硬件资源
- 缺点:噪声已经被“污染”,恢复空间有限
你想想看,为什么大部分旗舰手机的 ISP 芯片,都把 AI 降噪放在 RAW 域?说白了,就是要在噪声被“搞乱”之前把它干掉。我曾经在一个项目里试过在 YUV 域加降噪,结果锐化模块又把噪声放大了,折腾了两周才找到平衡点。后来直接换成 RAW 域降噪,一周就搞定了。
我的建议:如果你是第一次做 ISP 上的 AI 降噪,优先考虑 RAW 域。虽然网络设计麻烦一点,但效果上限高得多。等 pipeline 跑通了,再考虑往 RGB 域迁移做轻量化。
1.4 一个实际的部署案例
拿我之前做的一个 4800 万像素手机项目举例。Sensor 输出是 10-bit RAW,Bayer 格式为 Quad-Bayer(四合一)。
我们当时对比了三个插入点的效果:
| 插入位置 | PSNR (dB) | 推理耗时 (ms) | 模型大小 | 主观效果 |
|---|---|---|---|---|
| RAW 域 (Bayer) | 41.2 | 12.5 | 1.2 MB | 细节保留最好,无明显伪影 |
| RGB 域 (去马赛克后) | 38.7 | 8.3 | 0.8 MB | 边缘有轻微锯齿,平坦区域干净 |
| YUV 域 (后处理前) | 36.1 | 6.1 | 0.5 MB | 亮度噪声去除好,色度有偏色 |
看到没?RAW 域降噪的 PSNR 比 RGB 域高了 2.5dB。虽然推理时间多了 4ms,但在旗舰芯片上完全能接受。最终我们选择了 RAW 域方案。
注意:RAW 域降噪的模型输入通道数不是 3,而是 Bayer 模式的通道数(比如 RGGB 是 4 通道)。很多新手在这里踩坑,直接把 RAW 当成单通道灰度图送进网络,结果训练出来的模型根本没法用。
1.5 本章小结
好了,这一章的内容就这些。总结一下核心要点:
- ISP 流水线经历 Bayer → RGB → YUV 三个域
- AI 降噪的推荐插入点是 RAW 域(Bayer 格式)
- RAW 域降噪保留最原始的噪声分布,效果最好
- RGB 域降噪部署更简单,但效果有上限
- YUV 域降噪一般不推荐,除非算力极度受限