4、多帧采集策略:连拍模式、曝光时间选择、帧率与运动模糊的权衡
多帧融合夜景,说白了就是「用时间换画质」。你让传感器连续拍好几张,然后算法把它们叠在一起。但这里有个核心矛盾——拍得越多,手抖、物体移动带来的模糊风险就越大。怎么平衡?这就是本章要聊的事。
我个人习惯把采集策略拆成三个维度:连拍模式(怎么拍)、曝光时间(每张拍多久)、帧率与运动模糊(拍多快、糊不糊)。这三个点互相牵制,你调一个,另外两个就得跟着变。
4.1 连拍模式:不是按快门越快越好
连拍模式听起来简单——按住快门,手机咔咔咔拍一堆。但实际工程里,连拍模式的选择直接影响融合效果。
常见的连拍模式有三种:
| 模式 | 触发方式 | 帧间隔 | 典型帧数 | 适用场景 |
|---|---|---|---|---|
| Burst(高速连拍) | 按住快门 | 30-60ms | 10-20帧 | 手持夜景、光线较暗 |
| ZSL(零快门延迟) | 预缓冲 + 按下瞬间 | 16-33ms | 3-5帧 | 抓拍、运动物体 |
| Manual(手动间隔) | 程序控制 | 100-500ms | 3-8帧 | 三脚架、长曝光 |
我在项目中遇到过一个问题:用 Burst 模式拍夜景,帧间隔太短,相邻帧之间的噪声模式高度相关,融合后降噪效果反而变差。你想想看,噪声要是长得一模一样,叠加起来不就变成固定图案噪声了吗?
4.2 曝光时间选择:亮度和噪声的博弈
曝光时间越长,进光量越大,单帧信噪比越高。但代价是什么?运动模糊、手抖模糊、高光过曝。反过来,曝光时间太短,单帧太暗,融合后虽然不糊,但噪声压不下去。
这里有个关键指标叫 单帧信噪比(SNR)。我一般用这个公式估算:
SNR_single = 20 * log10(signal / sqrt(signal + dark_noise^2))
多帧融合后,理论 SNR 提升是:
SNR_fusion = SNR_single + 10 * log10(N) // N 为帧数
举个例子:单帧 SNR 是 20dB,融合 4 帧,理论提升 6dB,达到 26dB。但如果你把单帧曝光时间减半,单帧 SNR 掉到 17dB,融合 8 帧才能回到 26dB。问题是——8 帧的采集时间更长,运动模糊风险更大。
4.3 帧率与运动模糊:那个躲不开的敌人
帧率决定了相邻帧之间的时间间隔。帧率越高,帧间隔越短,运动物体在相邻帧之间的位移越小,对齐算法越容易处理。但高帧率意味着每帧的曝光时间被压缩,单帧质量下降。
运动模糊主要来自两个源头:
- 全局运动模糊:手抖、相机移动。所有像素一起糊。
- 局部运动模糊:行人、汽车、树叶。只有运动区域糊。
我曾经踩过一个坑:用 30fps 连拍夜景,曝光时间设到 1/15 秒。结果拍出来的帧,每张都有明显的全局运动模糊。对齐算法虽然能配准,但融合后边缘还是发虚。后来我把曝光时间降到 1/30 秒,帧率提到 60fps,虽然单帧暗了一点,但融合后清晰度反而更好。
4.4 采集策略的工程决策树
实际项目中,我不会死记硬背参数。我习惯画一个决策树,根据场景动态调整:
4.5 实战中的避坑指南
说了这么多理论,最后分享几个我踩过的坑:
- 别迷信高帧率。 我曾经为了减少运动模糊,把帧率提到 120fps,结果每帧曝光时间只有 1/120 秒,单帧 SNR 掉到 12dB,融合 10 帧都救不回来。后来我改成 60fps + 1/30 秒曝光,效果反而更好。
- 注意帧间曝光一致性。 自动曝光算法在连拍时可能会逐帧调整曝光参数,导致帧间亮度跳变。融合后会出现「闪烁」伪影。我习惯在连拍时锁定 AE(自动曝光),用固定曝光参数拍完一组。
- 运动物体的处理策略。 如果场景里有行人、汽车,不要指望对齐算法能完美配准。我的做法是:检测运动区域,对这些区域只取中间帧,不参与融合。虽然会损失一点降噪效果,但至少不会出现鬼影。