3. 多帧采集策略:连拍模式、曝光包围(AEB)、帧率与对齐精度的权衡、运动场景检测
多帧降噪和 HDR 合成,第一步不是算法,而是「怎么拍」。
你想想看,如果采集的帧本身就糊了、抖了、或者曝光完全不对,后面算法再牛也救不回来。我个人习惯把采集策略称为「地基工程」——地基没打好,楼盖得再高也是危房。
3.1 连拍模式:简单粗暴,但坑不少
连拍模式是最直观的多帧采集方式。按下快门,相机以最高帧率连续拍摄 N 张,然后从中选出最好的几张进行合成。
但连拍有个致命问题——手持抖动。我曾在项目中测试过,手持 1/30s 连拍 8 张,结果有 3 张的位移超过 2 个像素。对齐算法虽然能纠正,但代价是边缘画质下降。
连拍模式的适用场景:
- 三脚架固定拍摄: 夜景建筑、星空、长曝光。这时候连拍几乎零风险。
- 光线极暗但主体静止: 比如室内静物、书本翻拍。
- 需要极低噪点的场景: 天文摄影爱好者常用连拍 16 张甚至 32 张叠加。
3.2 曝光包围(AEB):HDR 的灵魂
曝光包围,说白了就是拍三张或五张不同曝光的照片——一张欠曝(保留高光细节)、一张正常、一张过曝(保留暗部细节)。然后通过 HDR 合成算法把它们融合成一张动态范围超大的照片。
标准 AEB 参数配置:
| 档位 | 曝光补偿 (EV) | 作用 |
|---|---|---|
| 欠曝 | -2.0 EV | 保留天空、灯光等高光细节 |
| 正常 | 0.0 EV | 主体正常曝光 |
| 过曝 | +2.0 EV | 提亮阴影、暗部细节 |
嗯,这里要注意:AEB 的步长不是越大越好。±2EV 是主流,但如果你拍的是大光比场景(比如日落),我建议用 ±3EV 甚至 ±4EV。不过步长越大,对齐难度也越大——因为不同曝光帧之间的亮度差异会导致特征点匹配失败。
3.3 帧率与对齐精度的权衡
这是个经典 trade-off。帧率越高,帧间运动越小,对齐越容易;但高帧率意味着单帧曝光时间短,信噪比低。反过来,低帧率单帧画质好,但帧间位移大,对齐算法压力大。
帧率 vs 对齐精度关系表:
| 帧率 (fps) | 单帧曝光时间 | 帧间位移风险 | 对齐难度 | 推荐场景 |
|---|---|---|---|---|
| 30 | ~33ms | 低 | 低 | 手持夜景、运动场景 |
| 15 | ~66ms | 中 | 中 | 一般手持夜景 |
| 8 | ~125ms | 高 | 高 | 三脚架、静止场景 |
| 4 | ~250ms | 极高 | 极高 | 仅限三脚架 |
我建议的黄金法则:手持夜景用 15-30fps,三脚架用 8-15fps。如果帧率低于 10fps,必须配合陀螺仪或光流做运动补偿,否则对齐算法会崩。
3.4 运动场景检测:动态与静态的博弈
多帧合成最怕什么?运动物体。行人走过、树叶摇晃、车灯移动——这些都会在合成结果中留下鬼影。
运动场景检测的核心思路是:区分「静态区域」和「动态区域」。静态区域可以放心多帧平均,动态区域则需要特殊处理——要么只取一帧,要么用运动补偿。
运动检测的常用方法:
- 帧差法: 计算相邻帧的像素差,超过阈值就标记为运动区域。简单,但对光照变化敏感。
- 光流法: 计算每个像素的运动矢量。精度高,但计算量大,手机端跑不动。
- 特征点匹配 + 单应性矩阵: 先找特征点,再算全局运动。适合手持抖动,但对局部运动不敏感。
- 深度学习法: 用 CNN 直接输出运动掩码。效果好,但需要训练数据和 NPU 支持。
举个例子,假设你拍夜景时有个行人走过。帧差法会标记出行人区域,然后算法只对该区域取单帧,其他区域正常多帧平均。最终结果里行人可能稍微模糊,但至少没有鬼影。
3.5 知识体系总览
下面这张图总结了多帧采集策略的核心逻辑和决策路径:
3.6 实战中的决策树
最后,我分享一个在实际项目中总结的决策树。当你拿到一个夜景拍摄需求时,可以按这个思路快速选择采集策略:
- 场景中有运动物体吗?
- 有 → 启用运动检测,动态区域只取单帧
- 没有 → 正常多帧平均
- 手持还是三脚架?
- 手持 → 帧率 ≥ 15fps,连拍 4-6 帧
- 三脚架 → 帧率 8-10fps,连拍 8-16 帧
- 需要 HDR 吗?
- 需要 → 启用 AEB,步长 ±2EV,3 帧
- 不需要 → 固定曝光,只做多帧降噪
- 对齐算法能跟上吗?
- 能 → 放心采集
- 不能 → 降低帧数或提高帧率