ORBSLAM源码理论分析0—灰度质心法

orbslam源码理论分析0—灰度质心法

  • 1.灰度质心法原理
  • 2.灰度质心法程序实现思路

1.灰度质心法原理

1.选择某个图像块B,然后将图像块B的矩 m p q m_{pq} mpq 定义为:
      在这里插入图片描述
   x , y x,y xy 表示像素坐标, I ( x , y ) I(x,y) I(x,y)表示此像素坐标的灰度值。
  
2.图像块B的质心 C C C 可以通过步骤1中的矩找到:
          在这里插入图片描述
3.方向向量 O C → \overrightarrow{OC} OC 可通过将图像块B的几何中心 O O O 和它的质心 C C C 连接在一起得到,所以可以定义特征点的方向 θ \theta θ 为:
          在这里插入图片描述

2.灰度质心法程序实现思路

  以如下5 × \times × 5的图像块B为例,讲解程序实现过程。 I ( x , y ) I(x,y) I(x,y) 为像素值, x , y x,y x,y 为像素在图像块B上的局部坐标。关键点在块中心, I ( 0 , 0 ) I(0,0) I(0,0) 为关键点灰度值。
      
      ORBSLAM源码理论分析0—灰度质心法_第1张图片
m 10 m_{10} m10 可表示为
 ORBSLAM源码理论分析0—灰度质心法_第2张图片
m 10 m_{10} m10 也可表示为
 ORBSLAM源码理论分析0—灰度质心法_第3张图片
m 01 m_{01} m01 可表示为
 ORBSLAM源码理论分析0—灰度质心法_第4张图片
m 01 m_{01} m01 也可表示为
  ORBSLAM源码理论分析0—灰度质心法_第5张图片
  注意在此处我们为了方便讲解,选取的是一个矩形块,而程序中实际上选取的是一个圆形块。之所以选取圆形块,笔者认为是因为只有选取圆形块,才能保证此关键点的旋转不变性。
  我们可以想象一下,一个矩形块绕中心旋转任意角度,不能保证所有角度下,旋转前后两个矩形块完全重合。而圆形块绕圆心无论怎样旋转,前后圆形块一定完全重合。这就可以保证,同一关键点在图片发生旋转后,参与计算方向角的像素点与旋转前完全一样。
  了解了上述内容后,我们言归正传,开始讲解程序实现思路。 m 10 m_{10} m10 的求解应用的是它的第二个公式, m 01 m_{01} m01 的求解应用的是它的第一个公式。
  1.遍历 x x x,计算 y = 0 y=0 y=0 时的 m 10 m_{10} m10 的一小部分
             在这里插入图片描述
  2.遍历 x x x,计算 y = y= y=-1和1 时的 m 10 m_{10} m10 的一小部分
       在这里插入图片描述
     并且计算 m 01 m_{01} m01 的一小部分
       在这里插入图片描述
  3.遍历 x x x,计算 y = y= y=-2和2 时的 m 10 m_{10} m10 的一小部分 
        在这里插入图片描述
    并且计算 m 01 m_{01} m01 的一小部分 
        在这里插入图片描述
  至此,组成 m 10 m_{10} m10 m 01 m_{01} m01 的五小部分分别全部求得,所以 m 10 m_{10} m10 m 01 m_{01} m01 已为囊中之物。程序的最后,可计算出关键点的方向角 θ \theta θ

你可能感兴趣的:(slam,opencv,计算机视觉)