SGM算法原理详解(下)
扫描二维码
随时随地手机看文章
在获得最终聚合代价 S (u,v,d) 后,通过赢家通吃(Winner-Takes-All,WTA)策略确定每个像素的最优视差:d*(u,v) = argminₐS (u,v,d),即选择使聚合代价最小的视差值作为该像素的视差。原始视差图可能存在噪声、误匹配和遮挡导致的异常值,需通过后处理提升质量:左右一致性检查对左视图视差 dₗ和右视图视差 dᵣ,若 dₗ(u,v) ≠ dᵣ(u-dₗ(u,v),v),则标记为不可靠像素并通过插值修复;亚像素求精对初始整数视差,通过二次曲线拟合代价函数最小值附近的 3 个点,计算亚像素级视差以提升精度;连通域滤波去除小面积孤立区域(通常为误匹配),通过邻域有效像素插值填充;中值滤波抑制椒盐噪声,平滑视差图边缘。后处理步骤能将视差图的错误率降低 30% 以上,是 SGM 工程化应用的关键环节。
SGM 算法的核心优势在于精度与效率的平衡,通过多方向一维聚合近似全局优化,在保持与全局算法接近精度的同时,计算复杂度降至 O (H×W×D×N)(N 为路径数,通常取 8),满足实时性需求;其鲁棒性强,对弱纹理区域(通过区域聚合增强信息)、遮挡区域(多路径互补)和光照变化(Census 变换)均有良好适应性;且易于工程实现,算法逻辑清晰,可通过 GPU 并行加速(如 CUDA)实现实时处理,已广泛集成于工业相机和自动驾驶系统。但也存在局限性,在视差不连续区域处理不足,强边缘处的视差跳变可能因平滑惩罚导致过度模糊,需结合边缘检测进行自适应惩罚调整;长基线场景精度下降,当基线长度增加导致视差范围扩大时,D 值增大使计算量线性增长,需通过视差范围约束优化;动态场景适应性有限,对于快速运动物体,左右视图的时间差可能导致匹配失效,需结合运动估计进行补偿。
SGM 算法凭借其优异性能,已成为双目视觉的主流方案,在自动驾驶中,特斯拉、蔚来等车型用其生成实时深度图,辅助障碍物检测和车道线识别;在工业检测中,3C 产品尺寸测量可实现亚像素级精度(≤0.1mm),满足精密制造需求;在机器人导航中,AGV(自动导引车)结合 SLAM 技术构建环境三维地图,实现自主避障。近年来,SGM 与深度学习的融合成为研究热点,通过神经网络优化初始代价计算(如引入 CNN 特征替代传统 Census 变换)或动态调整惩罚项 P1、P2,进一步提升复杂场景的匹配精度,例如 2022 年提出的 DSGM(Deep SGM)算法将特征提取与代价聚合结合,在 KITTI 数据集上的错误率较传统 SGM 降低 15%。
SGM 算法通过 “多方向一维聚合” 的创新思路,突破了局部匹配与全局匹配的性能瓶颈,成为双目视觉技术实用化的关键支撑。其核心价值不仅在于兼顾精度与效率的技术设计,更在于为立体匹配提供了可工程化的实现框架。随着硬件加速技术的发展和与深度学习的深度融合,SGM 及其改进算法将在三维感知领域持续发挥重要作用,推动自动驾驶、机器人和工业检测等场景向更高精度、更鲁棒的方向演进。