OpenISP 模块拆解 · 第4讲:抗混叠滤波 (AAF)
模块作用
AAF 是抗混叠滤波模块,位于 BLC/LSC 之后、AWB/CFA 之前。它在 Bayer RAW 域做轻微低通,降低高频纹理在 demosaic 时产生伪彩和摩尔纹的概率。
openISP 实现
源码类名为 AAF(img),没有外部参数。execute() 使用 scipy.ndimage.correlate 对 RAW 图做 5x5 滤波。
卷积核为:
text
1 0 1 0 1
0 0 0 0 0
1 0 8 0 1
0 0 0 0 0
1 0 1 0 1
整体除以 16。中心权重是 8,周围隔点位置权重为 1,体现了尽量使用同色或相近采样位置的思路。
为什么需要 AAF
Bayer 采样对高频图案很敏感。细密纹理、条纹和重复图案可能超过采样频率,demosaic 会把这些高频误解释为颜色变化,形成伪彩。
AAF 的代价是牺牲部分真实高频细节,换取更稳定的颜色插值。
学习重点
- AAF 是锐度和伪彩的权衡。
- AAF 越强,图像越干净但越软。
- AAF 太弱,CFA 后可能出现彩边、锯齿和摩尔纹。
调参方向
虽然源码没有暴露参数,但可通过 kernel 调节:
- 增大中心权重:保锐度,抗混叠弱。
- 增大周围权重:更平滑,抗混叠强。
- 扩大 kernel:低通更强,计算更重。
面试问答
Q1: AAF 和普通 blur 有什么区别?
AAF 的目标不是单纯模糊,而是在采样和 demosaic 前抑制会造成混叠的高频。设计时要考虑 Bayer 结构,尽量避免直接混合不该混合的颜色采样。
Q2: AAF 太强有什么问题?
图像会变软,纹理细节损失,后续 EE 可能需要更强锐化来补偿,从而带来 halo 或噪声放大。
Q3: 光学低通和数字 AAF 有什么关系?
光学低通在光进入传感器前就抑制高频,数字 AAF 在采样后处理。数字 AAF 更灵活,但无法完全恢复采样前已经混叠的信息。
Q4: 为什么 AAF 放在 CFA 前?
伪彩通常在 demosaic 时被放大。CFA 前降低 Bayer 高频异常,可以减少插值产生错误颜色。
Q5: AAF 是否总是需要?
不一定。现代高像素传感器和复杂 demosaic 算法可能减少 AAF 强度,甚至依赖后续伪彩抑制。但在教学 pipeline 中,AAF 有助于理解抗混叠位置。