【计算机视觉】详解立体匹配算法:原理、公式与核心策略

【计算机视觉】详解立体匹配算法:原理、公式与核心策略

摘要:立体匹配(Stereo Matching)是计算机视觉中从双目图像获取深度信息的关键技术。本文将避开繁琐的代码实现,从数学原理和算法逻辑出发,深入解析立体匹配的核心步骤、视差计算公式、能量函数优化以及经典的SGM算法原理。

一、 引言:为什么需要立体匹配?

人类通过双眼观察世界,由于左右眼的位置差异,观察到的物体在视网膜上的成像存在微小的水平位移。这种位移被称为视差(Disparity)。大脑通过处理视差,让我们感知到了深度(Depth)。

在计算机视觉中,立体匹配的目标就是模仿这一过程:通过寻找左右两幅图像中对应的像素点,计算视差图,进而转化为深度图。

二、 核心几何原理

在讨论复杂的匹配算法之前,必须理解最基础的双目测距模型(假设图像已进行极线校正,即左右图行对齐)。

2.1 视差与深度的关系公式

设双目相机的焦距为 𝑓 f ,两相机光心之间的距离(基线)为 𝐵 B 。

对于空间中一点 𝑃 P ,其在左图的横坐标为 𝑥 𝑙 x l ​ ,在右图的横坐标为 𝑥 𝑟 x r ​ 。

视差(Disparity, 𝑑 d )定义为:

𝑑 = 𝑥 𝑙 − 𝑥 𝑟 d=x l ​ −x r ​

根据相似三角形原理,深度(Depth, 𝑍 Z )与视差的关系为:

𝑍 = 𝑓 ⋅ 𝐵 𝑑 Z= d f⋅B ​

结论

深度 𝑍 Z 与视差 𝑑 d 成反比。视差越大,物体越近;视差越小,物体越远。

当视差 𝑑 → 0 d→0 时,深度趋向无穷远。

三、 立体匹配的算法框架

经典的立体匹配算法通常遵循 Scharstein 和 Szeliski 提出的四个标准步骤:

  1. 匹配代价计算(Matching Cost Computation)
  2. 代价聚合(Cost Aggregation)
  3. 视差计算/优化(Disparity Computation / Optimization)
  4. 视差细化(Disparity Refinement)

3.1 步骤一:匹配代价计算

这一步是计算左图像素 𝑝 ( 𝑥 , 𝑦 ) p(x,y) 与右图潜在对应像素 𝑝 ( 𝑥 − 𝑑 , 𝑦 ) p(x−d,y) 之间的相似度。常用的代价函数有以下几种:

  1. 绝对差值和 (SAD) / 单像素绝对差 (AD)

    最简单的计算方式,计算像素灰度值的差的绝对值。

    𝐶 𝐴 𝐷 ( 𝑥 , 𝑦 , 𝑑 ) = ∣ 𝐼 𝐿 ( 𝑥 , 𝑦 ) − 𝐼 𝑅 ( 𝑥 − 𝑑 , 𝑦 ) ∣ C AD ​ (x,y,d)=∣I L ​ (x,y)−I R ​ (x−d,y)∣

  2. 平方差和 (SSD) / 单像素平方差 (SD)

    对差值进行平方,对大误差更敏感。

    𝐶 𝑆 𝐷 ( 𝑥 , 𝑦 , 𝑑 ) = ( 𝐼 𝐿 ( 𝑥 , 𝑦 ) − 𝐼 𝑅 ( 𝑥 − 𝑑 , 𝑦 ) ) 2 C SD ​ (x,y,d)=(I L ​ (x,y)−I R ​ (x−d,y)) 2

  3. 归一化互相关 (NCC)

    对光照变化具有较好的鲁棒性,但在纹理弱的区域表现一般。公式较为复杂,本质是计算两个窗口内的统计相关性(余弦相似度)。

  4. Census 变换 (非参数变换)

    Census变换是一种基于相对灰度关系的变换,对光照变化极度鲁棒。它将窗口内的像素与中心像素比较,生成一串二进制码(Bit String),通过计算**汉明距离(Hamming Distance)**作为代价。

3.2 步骤二 & 三:代价聚合与优化策略

这是立体匹配算法分流的关键点,主要分为局部算法和全局算法。

A. 局部匹配算法 (Local Methods)

原理:假设在一个局部窗口内,所有像素的视差是相同的。

公式 :对窗口 𝑊 W 内的代价进行求和聚合。

𝑆 ( 𝑥 , 𝑦 , 𝑑 ) = ∑ ( 𝑖 , 𝑗 ) ∈ 𝑊 𝐶 ( 𝑖 , 𝑗 , 𝑑 ) S(x,y,d)= (i,j)∈W ∑ ​ C(i,j,d)

策略 :采用**赢家通吃(Winner-Takes-All, WTA)**策略,直接选择聚合代价最小的 𝑑 d 作为最终视差。

𝑑 𝑏 𝑒 𝑠 𝑡 = arg ⁡ min ⁡ 𝑑 𝑆 ( 𝑥 , 𝑦 , 𝑑 ) d best ​ =arg d min ​ S(x,y,d)

优点 :速度极快,适合实时应用。
缺点:在弱纹理区域(如白墙)和视差不连续区域(物体边缘)效果差,容易产生"肥大"效应。

B. 全局匹配算法 (Global Methods)

原理:将立体匹配转化为一个能量最小化问题。不仅考虑像素匹配的相似度,还考虑视差图的平滑性。

能量函数公式

𝐸 ( 𝐷 ) = 𝐸 𝑑 𝑎 𝑡 𝑎 ( 𝐷 ) + 𝜆 𝐸 𝑠 𝑚 𝑜 𝑜 𝑡 ℎ ( 𝐷 ) E(D)=E data ​ (D)+λE smooth ​ (D)

数据项 𝐸 𝑑 𝑎 𝑡 𝑎 ( 𝐷 ) E data ​ (D) :描述匹配代价的总和。

𝐸 𝑑 𝑎 𝑡 𝑎 ( 𝐷 ) = ∑ 𝑝 𝐶 ( 𝑝 , 𝑑 𝑝 ) E data ​ (D)= p ∑ ​ C(p,d p ​ )

平滑项 𝐸 𝑠 𝑚 𝑜 𝑜 𝑡 ℎ ( 𝐷 ) E smooth ​ (D) :惩罚相邻像素视差变化过大的情况(假设相邻像素深度应该是连续的)。通常使用 Potts 模型或截断线性模型。

𝐸 𝑠 𝑚 𝑜 𝑜 𝑡 ℎ ( 𝐷 ) = ∑ ( 𝑝 , 𝑞 ) ∈ 𝑁 𝑉 ( 𝑑 𝑝 , 𝑑 𝑞 ) E smooth ​ (D)= (p,q)∈N ∑ ​ V(d p ​ ,d q ​ )

求解方法:由于这是个NP难问题,通常使用 图割(Graph Cuts) 或 置信度传播(Belief Propagation) 来近似求解。

优点 :精度极高,边缘清晰。
缺点:计算量巨大,难以实时。

C. 半全局匹配 (Semi-Global Matching, SGM)

SGM 是目前工业界应用最广泛的算法,它平衡了局部算法的速度和全局算法的精度。

核心原理

SGM 不在2D图像上进行全局优化,而是将问题分解为多个1D路径(通常是8个或16个方向)上的动态规划问题。

路径聚合公式

沿某路径 𝑟 r 聚合到像素 𝑝 p 、视差为 𝑑 d 的代价 𝐿 𝑟 ( 𝑝 , 𝑑 ) L r ​ (p,d) 定义为:

𝐶 ( 𝑝 , 𝑑 ) C(p,d) :当前像素的匹配代价。

𝑃 1 P 1 ​ :对小视差变化(斜坡表面)的惩罚系数。

𝑃 2 P 2 ​ :对大视差变化(深度断层)的惩罚系数( 𝑃 2 > 𝑃 1 P 2 ​ >P 1 ​ )。

最后一项是为了防止路径代价数值无限累加而进行的归一化。

最终的代价是所有路径代价之和:

𝑆 ( 𝑝 , 𝑑 ) = ∑ 𝑟 𝐿 𝑟 ( 𝑝 , 𝑑 ) S(p,d)= r ∑ ​ L r ​ (p,d)

3.3 步骤四:视差细化

经过上述计算得到的视差图通常包含噪声和遮挡区的错误,需要后续处理:

  1. 左右一致性检测 (Left-Right Consistency Check)

    分别以左图和右图为基准计算两张视差图,如果某点 𝑑 𝐿 → 𝑅 ≠ 𝑑 𝑅 → 𝐿 d L→R ​  =d R→L ​ ,则视为遮挡点或无效点。

  2. 亚像素插值 (Sub-pixel Interpolation)

    由于视差通常是离散整数,为了得到更平滑的深度,通过拟合代价曲线的抛物线极值点来获得小数视差。

  3. 中值滤波:去除椒盐噪声。

四、 总结

立体匹配算法从数学本质上是一个寻找最优解的过程。

  • 基本公式: 𝑍 = 𝑓 𝐵 / 𝑑 Z=fB/d 是物理基础。
  • 局部算法:基于窗口求和,快但不准。
  • 全局算法:基于能量最小化 𝐸 = 𝐸 𝑑 𝑎 𝑡 𝑎 + 𝐸 𝑠 𝑚 𝑜 𝑜 𝑡 ℎ E=E data +E smooth ,准但太慢。
  • SGM算法:利用动态规划在多路径上聚合代价,是目前传统算法中的性价比之王。

随着深度学习的发展,基于CNN的立体匹配(如PSMNet, GC-Net, RAFT-Stereo)正在逐渐取代传统算法,但理解上述几何原理和能量函数设计,依然是掌握3D视觉技术的基石。


图片来源于网络,如有侵权,请联系删除

相关推荐
3***g2052 小时前
MATLAB高效算法设计原则利用MATLAB内置函数
开发语言·算法·matlab
TAICHIFEI2 小时前
Hugging Face 的 Transformers库
人工智能·深度学习·学习·自然语言处理
雍凉明月夜2 小时前
深度学习之目标检测yolo算法Ⅰ(v1-v3)
深度学习·算法·yolo·目标检测
山科智能信息处理实验室2 小时前
SDS-Complete: 利用预训练文生图模型进行点云补全
人工智能·深度学习
清铎2 小时前
大模型训练_week2_day12&13&14_手撕transformer_《穷途末路》
人工智能·深度学习·transformer
模型启动机2 小时前
一个模型统一4D世界生成与重建,港科大One4D框架来了
人工智能·ai·大模型
AutumnorLiuu2 小时前
【红外小目标检测实战 五】轻量化模型结构及去除DFL以加速边缘推理
人工智能·深度学习·机器学习
Coovally AI模型快速验证2 小时前
YOLO-Maste开源:首个MoE加速加速实时检测,推理提速17.8%
人工智能·yolo·计算机视觉·百度·人机交互
饭饭大王6662 小时前
深度学习模型的部署与优化:从实验室到生产环境的全攻略
人工智能·深度学习