Get Out of My Lab: Large-scale, Real-Time Visual-Inertial Localization文章理解

这篇文章是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的描述符最近的那个中心,然后在把属于这个中心的所有描述符和quary描述符做暴力匹配)。这种方法因为聚类中心会很多,所以一开始找最近的聚类中心也会非常费时。所以作者通过类似于Product Quantization的思路,先把描述符分给成等长度的部分。文章中把10维向量分为两个5维的。然后通过kd-tree来找最近的聚类中心(2维空间中找),知道后再做暴力匹配。

Covisibility Filter

压缩后的描述符的表达分辨率肯定不如原始的高。所以之际使用描述符距离找到的匹配肯定有很多无匹配。这里作者提出,一张图片和所有描述符匹配的结果。大量错误的匹配会分散在不同的帧上面,也就是几乎在所有帧上面都会找到匹配上的描述符。但正确的匹配会在被匹配上特别多的那些帧上。

猜你喜欢

转载自blog.csdn.net/ziliwangmoe/article/details/84786268