这篇文章是ETH提出的,后面在maplab中也把文章的部分思想集成进去了。这篇文章提出的全局匹配效率和准确之高,甚至不需要local的匹配就能实现实时的定位。
文章一方面提出了滤波器中,定位的观察量和VIO自己的观察量之间的融合方法。另外提出了怎么高效地和地图做全局匹配。这篇文章重点讲后面这部分:
Descriptor Projection
binary的描述符比起float的描述符在计算描述符距离和描述符压缩上面有优势。但是在KD tree的搜索方式中,因为维度太高,却反而是劣势。所以binary的描述符一般都使用暴力匹配。文章提出可以把高维的binary描述符投影到低维的浮点描述符。比如512维的binary描述符可以投影到10维的float描述符空间。
Product Quantization
10维的float描述符对KD tree搜索仍然维度太高。所以作者把10维的向量分为两个5维的向量,这样形式上把10维向量变成了2维向量。新出现的5维的向量,通过k-means聚类成256个类。这样表示一个描述符只需要知道这两个5维向量对应的聚类后的类id。也就是描述符继续压缩成2byte。压缩后的描述符对匹配上也有帮助。因为数据库里面的描述符是存的聚类的id。当我们要计算一个普通描述符和量化后的描述符的距离的时候。只需要计算普通描述符分成的两个5维向量到目标量化后的描述符的类id的距离。我们一共只有256×2个聚类中心,所以当要知道一个普通描述符和数据库中所有的量化描述符的距离的时候。可以提前把普通描述符到这256×2个聚类中心的距离算出来。后面计算距离的时候,就之需要加法运算了。
Inverted Multi-index
高维的描述符对于kd-tree方法维度太高。如果使用但存的Inverted Index方法(先聚类出多个中心,找最近点的时候,先找到离query的描述符