4. 地形轮廓匹配(TERCOM)原理:相关峰搜索、MAD、MSD、NCC算法

各位同学,今天我们来聊聊TERCOM的核心——地形匹配算法。说白了,就是让飞行器通过“看”脚下的地形,来确认自己到底在哪儿。

我刚开始接触这个领域时,总觉得这玩意儿挺玄乎的。后来亲手调过几版算法,踩过坑,才真正理解其中的门道。嗯,咱们一个一个来拆解。

4.1 相关峰搜索:找到最像的那块地

TERCOM的原理其实很朴素。飞行器飞过一片区域,实时测出一串地形高度数据。然后拿这串数据,跟预先存好的数字地图去比对。比对一圈下来,找到最匹配的那个位置——这就是“相关峰”。

为什么会叫“峰”?因为匹配度高的地方,在数学上会形成一个明显的峰值。你想想看,如果匹配度低,数值就平平的;一旦对上,数值就会“噌”地一下窜上去。这就是我们要找的峰。

我个人习惯把相关峰搜索分成三步:

  1. 获取实测剖面:飞行器沿航迹测出一段地形高度序列。
  2. 滑动比对:把这个序列放到数字地图上,一格一格地滑动,每滑一次就算一次匹配度。
  3. 找最大值:在所有匹配度里挑出最大的那个,对应的位置就是估计位置。

核心要点:相关峰搜索的本质是一个“模板匹配”问题。实测剖面就是模板,数字地图就是搜索空间。模板在搜索空间里滑动,找到最佳匹配点。

这里有个坑,我曾经踩过。如果实测剖面太短,或者地形太平坦,相关峰就会变得很“钝”,甚至出现多个假峰。嗯,这时候算法就容易跑偏。所以,实测剖面的长度和地形的起伏程度,直接决定了匹配的可靠性。

4.2 平均绝对差(MAD)算法:简单粗暴但有效

MAD算法,全称是Mean Absolute Difference。说白了,就是算两个序列对应点的高度差,取绝对值,然后求平均。

公式长这样:

MAD = (1/N) * Σ |h_实测(i) - h_地图(i)|

其中N是采样点数,h_实测是飞行器测到的高度,h_地图是数字地图上对应位置的高度。

MAD值越小,说明匹配度越高。当MAD接近0时,基本就对上号了。

我为什么说它“简单粗暴”?因为计算量小,实现起来也快。在早期的TERCOM系统里,MAD是主力算法。我记得在某个项目中,硬件资源有限,MAD几乎是唯一的选择。

个人经验:MAD对异常值不太敏感。如果实测数据里有一两个噪声点,MAD的结果不会崩得太厉害。这一点在实际工程中很实用。

但MAD也有短板。它对地形起伏的“形状”不敏感。举个例子,两个地形剖面,一个陡峭一个平缓,但平均绝对差可能差不多。这时候MAD就分不清了。

4.3 均方根差(MSD)算法:放大差异,更敏感

MSD,全称是Mean Squared Difference。跟MAD很像,但把绝对值换成了平方。

公式:

MSD = (1/N) * Σ [h_实测(i) - h_地图(i)]²

平方的作用是什么?放大差异。如果某个点的高度差很大,平方之后会被进一步放大。这样一来,MSD对地形细节更敏感。

我个人的体会是:如果地形起伏比较明显,MSD的效果往往比MAD好。因为它能更好地捕捉到地形的“轮廓特征”。

注意:MSD对异常值非常敏感。如果实测数据里有一个大的噪声点,MSD的结果可能会被严重拉偏。我曾经在一个项目中,因为传感器偶尔跳变,导致MSD匹配结果完全跑飞。后来加了滤波才稳住。

所以,用MSD之前,一定要做好数据预处理。滤波、去野值,这些步骤不能省。

4.4 归一化互相关(NCC)算法:抗干扰能力强

NCC,全称是Normalized Cross-Correlation。这个算法稍微复杂一点,但抗干扰能力最强。

公式:

NCC = Σ [ (h_实测(i) - μ_实测) * (h_地图(i) - μ_地图) ] / (N * σ_实测 * σ_地图)

其中μ是均值,σ是标准差。

NCC的值范围在-1到1之间。1表示完全正相关,-1表示完全负相关,0表示不相关。我们当然希望NCC越接近1越好。

为什么NCC抗干扰能力强?因为它做了“归一化”。说白了,它不看绝对高度,只看地形的“形状”。如果实测剖面和地图剖面的起伏趋势一致,哪怕整体高度有偏差,NCC也能给出高匹配度。

你想想看,飞行器在不同高度飞行,测到的绝对高度肯定不一样。但地形的起伏形状是不变的。NCC正好抓住了这个不变性。

对比总结

算法 计算量 抗噪声 对地形要求 适用场景
MAD 中等 一般 资源受限、地形平坦
MSD 起伏明显 地形特征丰富
NCC 无特殊要求 高精度、复杂环境

4.5 三种算法的选择建议

在实际工程中,选哪个算法,得看具体情况。我一般这样判断:

  • 硬件资源紧张:选MAD。计算量小,够用就行。
  • 地形起伏明显,数据干净:选MSD。精度更高。
  • 环境复杂,噪声多,或者高度变化大:选NCC。虽然计算量大,但稳。

我曾经在一个项目中,三种算法都试过。最后发现,MAD和MSD在某些地形下会“打架”,结果不一致。而NCC始终稳定。从那以后,我对NCC就多了一份信任。

当然,现在很多系统会做“多算法融合”。比如先用MAD快速粗匹配,再用NCC精匹配。这样既保证了速度,又保证了精度。嗯,这个思路值得借鉴。

避坑指南:我曾经在调试时发现,MAD和MSD的结果在平坦区域几乎一样,但在陡峭区域差异很大。后来才意识到,这是因为平方项放大了陡峭区域的差异。所以,如果你发现MSD结果异常,先检查一下地形数据里有没有“尖峰”。

4.6 知识体系图

下面这张图,帮你理清TERCOM匹配算法的核心逻辑:

TERCOM地形匹配算法核心逻辑 实测地形剖面 数字高程地图(DEM) 滑动窗口比对 实测剖面在DEM上逐点滑动 MAD算法 平均绝对差 MSD算法 均方根差 NCC算法 归一化互相关 相关峰 → 位置估计

从图上可以看得很清楚:实测剖面和数字地图经过滑动窗口比对后,分三条路走——MAD、MSD、NCC。最终汇聚到相关峰搜索,输出位置估计。这就是TERCOM匹配的完整链路。


公众号:蓝海资料掘金营,微信deep3321