4、多帧融合基础:多帧采集原理、图像配准(光流法、特征匹配)、帧间一致性假设

多帧融合,说白了就是让多张照片“拧成一股绳”。你单帧拍得再好,也扛不住暗光下的噪点。但多帧不一样——它用时间换信噪比。这一章,我们先把地基打牢。

4.1 多帧采集原理

多帧采集不是简单连拍。它背后有一套严谨的物理逻辑。我刚开始做这个方向时,以为就是按快门按得快一点。后来发现,事情没那么简单。

核心思路:同一场景,多次采样,平均降噪。因为噪声是随机的,信号是确定的。多帧平均后,噪声的方差会降为原来的 1/N(N 是帧数)。

信噪比增益公式:

SNR多帧 = SNR单帧 + 10·log₁₀(N) (dB)

N=4 时,增益约 6dB;N=16 时,增益约 12dB。但前提是——帧间必须对齐。

采集方式主要有三种:

采集模式 特点 典型场景
手持连拍 帧间有随机位移,需配准 手机夜景模式
三脚架固定 帧间位移极小,配准简单 长曝光堆栈
视频抽帧 帧率高,但存在运动模糊 监控/运动场景

我个人习惯,手持连拍是最有挑战性的。因为手抖、呼吸、甚至心跳都会引入亚像素级的偏移。这些偏移,就是配准要解决的问题。

4.2 图像配准:光流法

配准,就是把多帧图像“对齐”到同一个坐标系下。光流法是我用得最多的方法之一。

光流的基本假设:亮度恒定 + 小运动 + 空间一致。说白了,就是同一个像素点在相邻帧之间,亮度不变,位置只挪了一点点,而且它邻居也挪了差不多。

经典的光流方程:

I(x, y, t) = I(x + dx, y + dy, t + dt)

泰勒展开后得到:
Ix * u + Iy * v + It = 0

其中:
- Ix, Iy 是空间梯度
- It 是时间梯度
- (u, v) 是光流向量

嗯,这里要注意。一个方程两个未知数,解不唯一。所以需要加约束。Lucas-Kanade 方法假设局部窗口内运动一致,用最小二乘法求解。

我的经验:LK 光流对小位移效果很好,但遇到大运动(比如快速摇镜头)就容易崩。我曾在一次夜景堆叠项目里,因为手抖幅度太大,光流直接算出了“飞点”。后来加了图像金字塔,从粗到细逐层优化,才稳住。

光流法的优缺点:

  • 优点:稠密匹配,每个像素都有位移向量;亚像素精度高。
  • 缺点:计算量大;对光照变化敏感;大运动容易失效。

4.3 图像配准:特征匹配

光流法算的是“每个像素去哪了”。特征匹配则是“找几个关键点,算它们怎么变”。

流程很清晰:

  1. 特征点检测:用 SIFT、ORB、AKAZE 等算法找到角点、斑点。
  2. 特征描述:给每个特征点算一个“指纹”(描述子)。
  3. 特征匹配:用暴力匹配或 FLANN 找到两帧间的对应点对。
  4. 变换估计:用 RANSAC 剔除误匹配,算出单应性矩阵或仿射变换。

你想想看,特征匹配和光流法本质上是互补的。光流法擅长精细对齐,特征匹配擅长粗对齐和应对大运动。

对比维度 光流法 特征匹配
输出 稠密位移场 稀疏变换矩阵
计算量 大 中等
大运动 弱 强
亚像素精度 高 依赖插值
光照鲁棒性 差 较好(SIFT)

我曾经踩过的坑:在纹理稀疏区域(比如白墙、夜空),特征匹配几乎找不到点。这时候强行用特征匹配,配准结果就是一坨。我的建议是:纹理丰富用特征匹配,纹理稀疏用光流法,或者两者融合。

4.4 帧间一致性假设

这是多帧融合的“信仰”。没有这个假设,后面所有算法都是空中楼阁。

帧间一致性假设包含三层:

  • 几何一致性:场景中的同一个物理点,在不同帧中对应同一个像素位置(经过配准后)。
  • 光度一致性:同一个物理点的亮度值,在不同帧中应该相同(不考虑噪声和曝光差异)。
  • 运动一致性:运动物体的位移在短时间内是平滑的、连续的。

说白了,就是“同一个东西,看起来应该差不多”。但现实往往打脸——

举个例子:树叶在风中摇晃。你拍 8 帧,每帧树叶位置都不一样。这时候几何一致性就被破坏了。怎么办?

我的做法是:检测运动区域,做局部自适应处理。静止区域用多帧平均,运动区域用单帧或短时融合。这个思路在后续章节会展开讲。

一致性假设的数学表达:

对于配准后的像素位置 (x', y'):

I₁(x, y) ≈ I₂(x', y') ≈ ... ≈ Iₙ(x', y')

残差 = Iᵢ(x', y') - Iⱼ(x', y') 应服从零均值高斯分布(仅含噪声)。

如果残差出现结构性偏差,说明配准失败或存在运动物体。

4.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。我建议你多看几遍,理清脉络。

多帧融合基础 · 知识体系 多帧融合基础 多帧采集原理 图像配准 帧间一致性假设 手持连拍 / 三脚架 / 视频抽帧 信噪比增益:10·log₁₀(N) dB 光流法(稠密配准) 特征匹配(稀疏配准) LK / Farneback / 金字塔 SIFT / ORB / RANSAC 几何一致性 光度一致性 运动一致性 核心逻辑 多帧采集 → 图像配准(光流/特征) → 一致性检验 → 融合 配准精度决定融合上限,一致性假设决定算法边界

4.6 本章小结

多帧融合的第一步,不是写代码,而是理解“帧与帧之间的关系”。

  • 采集方式决定了配准的难度。手持连拍最常用,也最考验算法。
  • 光流法给每个像素算位移,精度高但怕大运动。
  • 特征匹配找关键点算变换,鲁棒性好但纹理稀疏时失效。
  • 帧间一致性假设是融合的理论基石。现实场景中,这个假设经常被打破——运动物体、光照变化、遮挡,都是你需要处理的“例外”。

我个人觉得,这一章最难的不是算法本身,而是理解“什么时候该用哪种方法”。没有银弹。多帧融合的工程实践,就是在各种方法之间做权衡。

一个小建议:刚开始做多帧项目时,先用特征匹配做粗配准,再用光流法做精配准。这个“粗到细”的流程,能帮你省掉很多调试时间。我自己的第一个多帧项目就是这么调通的。