想象一下,当你给一个图像匹配算法做了个体检,你会发现它总卡在“多与少”的矛盾里:要不就是抓的关键点少得可怜,根本干不了三维重建这种活;要不就是一堆错的点凑在一起,让整个系统彻底崩溃。这问题其实就出在传统特征描述子太娇气了,它们只能顶得住简单的仿射变换,一碰到复杂的透视变形就彻底没辙了。既然仿射变换只需要三个点就能定下来,那为什么不直接拿三角形当最小单位来筛一筛呢?这就是作者的核心想法。 先看算法流程。第一步得用SIFT把一批兴趣点捞出来,然后两边互相核对——比如图A里的点也是B的候选,反过来也一样才算数,这就叫双向确认。这样能把很多单方向瞎猜的匹配点挡在门外。第二步是用Delaunay三角剖分把这些点铺成一张既不重叠又角度均匀的网格。那些又瘦又长、像铅笔一样的三角形会被自然淘汰掉,这样每个地方都能看成是仿射区域,为后面的几何约束打下基础。 第三步是从网格里随机挑个三角形,比如2-4-6号这三个点。把这三个点对应的匹配点找出来,再去特征点池里找类似的“蓝色三角”。只要这三顶点的仿射关系一致(见公式1),就能算出大概的位置;以这个位置为中心画个圆,圈里的所有特征点就都是候选者了。最后的相似性得分由空间距离和向量内积两部分算出来,得分最高的那个点就是临时匹配点。要是某个三角形里临时匹配点数量够了(公式3),那就把这些临时点都升级成最终的真匹配点;要是不够数,这块区域就得被排除出去。要是某个顶点连着的三角形都没通过检查,那它肯定也是错的,直接踢出去就行。 这个算法有几个特别的地方。第一个是首次把仿射变换下的三角形稳定性写进了逻辑里,用最小单元死死锁住那些假的匹配点。第二个是相似性度量升级了,空间距离加上向量相似度双管齐下,既不怕尺度变化也不怕旋转折腾。第三个是有个误匹配的自淘汰机制,通过“三角形投票”让错误点在统计上露馅,还能自动补上网格里的窟窿。 这么一来,“数量”和“质量”就都上去了:既筛掉了漏网的假匹配,也把被冤枉的真匹配给找回来了。虽然透视变换理论上没被严格证明行得通,但在局部小三角形里它还是被当成仿射处理了,实际效果还是挺好看的。未来要是能把剖分的速度再提一提,或者把相似性度量和深度学习结合起来,说不定就能在无人机AR重建这些场景里派上更大的用场。