当前位置:首页 > 嵌入式 > 嵌入式分享

在立体匹配技术领域,半全局匹配(Semi-Global MatchingSGM)算法因其兼顾精度与效率的显著优势,成为工业级双目测距系统中的核心技术。由 Hirschmüller 2005 年提出的 SGM 算法,通过融合局部匹配的快速性与全局匹配的鲁棒性,解决了传统方法在遮挡区域、弱纹理区域的匹配难题。立体匹配的本质是在左右视图中为每个像素寻找对应匹配点,其性能直接决定视差图质量。传统局部匹配算法(如块匹配)通过计算像素邻域的相似度确定匹配点,虽速度快但易受噪声和纹理缺失影响;全局匹配算法(如 Graph-Cut)通过能量函数优化求解全局最优解,虽精度高但计算复杂度呈指数级增长,难以满足实时性要求。SGM 算法提出 “半全局” 策略:通过在多个方向上进行一维代价聚合,近似实现二维全局优化。其核心思想可概括为 “以线代面”—— 在 8 个(或 16 个)不同方向上计算路径代价,将各方向的聚合代价累加作为最终匹配代价。这种设计既规避了全局算法的高复杂度,又通过多方向信息融合提升了匹配鲁棒性,使算法能在普通 GPU 上实现实时运行(帧率≥30fps)。

代价计算是 SGM 的第一步,目的是量化左右视图中像素的匹配程度,生成初始代价体积(Cost Volume)。初始代价需能有效区分匹配与非匹配像素,常用方法包括基于像素值的度量和基于变换特征的度量。基于像素值的度量中,SADSum of Absolute Differences)计算左右像素块对应位置的灰度差绝对值之和,公式为 SAD (u,v,d) = Σ|I(u+i,v+j) - Iᵣ(u+i-d,v+j)|,其中 (u,v) 为像素坐标,d 为视差假设,Iₗ、Iᵣ分别为左右视图灰度值,SAD 计算简单但对光照变化敏感;SSDSum of Squared Differences)通过平方差放大像素差异,对噪声更敏感但能增强匹配峰度。基于特征变换的度量中,Census 变换将像素灰度值转换为二进制特征向量,通过比较邻域像素与中心像素的大小关系(大于为 1,小于为 0)生成抗光照变化的特征,Census 代价通过计算二进制向量的汉明距离获得,对光照鲁棒性强,是 SGM 的常用选择。初始代价体积的维度为 H×W×D(高度 × 宽度 × 最大视差),每个元素代表像素在某视差假设下的匹配代价,值越小表示匹配度越高。

代价聚合是 SGM 的核心创新,通过在多个方向上传播匹配代价,实现对局部噪声的抑制和遮挡区域的鲁棒处理。传统局部匹配仅在固定窗口内聚合代价,易受窗口尺寸影响;而 SGM 通过动态规划在一维路径上聚合代价,再融合多方向结果,近似全局优化效果。对每个像素 (u,v) 和视差 d,沿某一方向(如水平、垂直、45°、135° 等)的聚合代价 L 可通过递归计算:L (u,v,d) = C (u,v,d) + min [L (u',v',d), L (u',v',d-1)+P1, L (u',v',d+1)+P1, minL (u',v',k)+P2] - minL (u',v',d),其中 C (u,v,d) 为初始代价,(u',v') 为路径上的前一个像素,P1 为小惩罚项(用于惩罚视差连续变化 1 的情况),P2 为大惩罚项(用于惩罚视差跳变超过 1 的情况),最后一项 minL (...) 用于归一化,避免代价累积溢出。该公式通过动态规划实现:在路径上传播时,既考虑当前像素的初始代价,也参考前序像素在不同视差下的最优代价,通过惩罚视差突变实现平滑约束。SGM 通常选择 8 个方向(0°、45°、90°、135°、180°、225°、270°、315°)进行路径聚合,每个方向生成独立的聚合代价图,最终聚合代价通过累加所有方向的聚合代价获得:S (u,v,d) = ΣLᵢ(u,v,d)i=1..8)。多方向融合的意义在于:不同方向的路径能捕捉场景中不同结构的连续性(如水平路径适合处理地平线,垂直路径适合处理柱状物体),通过互补信息抑制局部歧义,尤其对遮挡区域(某一方向路径被遮挡时,其他方向仍能提供有效信息)具有显著优化效果。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

自2014年ST公司推出STM32CubeMX以来,这款图形化配置工具凭借“一键生成初始化代码”“跨IDE兼容”“中间件集成”等特性,迅速成为78%的STM32开发者首选工具。然而,伴随其普及的争议始终未息:STM32C...

关键字: STM32CubeMX ST公司

在工业自动化领域,Modbus协议凭借其开放性和易用性成为设备通信的"通用语言"。然而,当工程师面对Modbus RTU、ASCII和TCP三种变体时,如何根据具体场景做出最优选择?本文将从编码机制、通信效率、错误检测等...

关键字: Modbus协议 TCP

在工业自动化、能源管理等实时性要求严苛的场景中,Modbus通信系统的响应延迟直接关系到设备控制的精度与系统稳定性。从智能电表的功率调节到机器人关节的同步控制,微秒级的响应偏差都可能引发连锁故障。本文从硬件架构、软件设计...

关键字: Modbus 通信系统

在新能源发电、电动汽车、数据中心等直流供电系统中,过压故障是导致设备损坏的主要诱因之一。据统计,电力电子设备故障中约35%与过压事件相关,其中直流侧过压占比达62%。本文以基于TVS二极管与MOSFET的复合型直流过压保...

关键字: 直流过压 保护电路

在工业物联网(IIoT)与边缘计算快速发展的背景下,Modbus协议凭借其轻量化特性成为微控制器(MCU)设备互联的首选方案。然而,在资源受限的MCU(如STM32F0系列、ESP8266等,RAM通常小于32KB,Fl...

关键字: 微控制器 Modbus 工业物联网

在工业控制系统中,Modbus RTU协议的CRC校验如同通信网络的"免疫系统",某石化厂DCS系统曾因CRC计算错误导致0.3%的数据包丢失,引发连锁控制故障。本文将深入解析CRC-16/MODBUS算法原理,对比软件...

关键字: Modbus RTU CRC 算法

在工业自动化领域,Modbus协议凭借其简洁高效的设计,已成为设备间通信的"通用语言"。某智能电网项目通过Modbus RTU协议实现2000台电表的数据采集,通信成功率高达99.97%,这背后正是对消息结构的精准把控。...

关键字: Modbus 工业自动化

在工业物联网设备开发中,Modbus从站功能已成为微控制器(MCU)的标配能力。某智能电表项目通过在STM32上实现Modbus RTU从站,成功将设备接入现有SCADA系统,开发周期缩短40%。本文将系统解析MCU实现...

关键字: 微控制器 Modbus 协议栈优化

在嵌入式系统中,Flash存储器因其非易失性、高密度和低成本特性,成为代码存储和关键数据保存的核心组件。然而,MCU驱动Flash读写时,开发者常因对硬件特性理解不足或操作流程疏忽,陷入性能下降、数据损坏甚至硬件损坏的陷...

关键字: MCU驱动 Flash

在嵌入式开发中,STM32的时钟系统因其灵活性和复杂性成为开发者关注的焦点。然而,看似简单的时钟配置背后,隐藏着诸多易被忽视的陷阱,轻则导致系统不稳定,重则引发硬件损坏。本文从时钟源选择、PLL配置、总线时钟分配等关键环...

关键字: STM32 时钟系统
关闭