本文系ORB-SLAM2原理+代码实战系列原创文章,对应的视频课程见:
大家好,从今天开始我们陆续更新ORB-SLAM2/3系列的原创文章,以小白和师兄对话的形式阐述背景原理+代码解析,喜欢的点个赞分享,支持的人越多,更新越有动力!如有错误欢迎留言指正!
代码注释地址:
https://github.com/electech6/ORB_SLAM2_detailed_comments
VSLAM系列原创01讲 | 深入理解ORB关键点提取:原理+代码
接上回继续。。。
小白:我们计算出来的这个角点具体怎么用呢?
师兄:在关键点部分我们根据灰度质心法得到关键点的旋转角度后,在计算描述子之前我们会先用这个角度进行旋转。如下图所示P为圆形区域的几何中心,Q为圆形区域的灰度质心,我们的目的就是把下图左中像素旋转到和主方向坐标轴对齐。
描述子 Steered BRIEF
师兄:前面我们用Oriented FAST确定了关键点,下面就要对每个关键点的信息进行量化,计算其描述子。ORB特征点里的描述子是在BRIEF基础上进行改进的,称之为Steered BRIEF。我们先来了解一下什么是BRIEF。
BRIEF是一种二进制编码的描述子,在ORB-SLAM2里面它是一个256 bit的向量,其中每个bit是0或者1。这样我们在比较两个描述子的时候可以直接用异或位运算来计算汉明距离,速度非常快。
以下是 BRIEF 描述子的具体计算方法:
-
第1步:为减少噪声干扰,先对图像进行高斯滤波。
-
第2步:以关键点为中心,取一定大小的图像窗口 。在窗口内随机选取一对点,比较二者像素的大小,进行如下二进制赋值。
其