3D点云——NARF特征

NARF: 3D Range Image Features for Object Recognition

NARF 全称 normal aligned radial feature(法线对齐的径向特征) 。是一种3D特征点检测和描述算法。下面将分别详述 NARF 特征点的提取和描述。

NARF 特征点提取

NARF 特征点提取算法的两个目标是:1). 提取出的特征点应位于表面稳定的区域(where the surface is stable)以确保对法线的估计具有较强的鲁邦性,同时在其邻域点的法线应具有明显的变化。2). 提取出的点应尽可能的位于物体的边缘处,从而使得在不同的视点下都能提取到大部分相同的特征点。

特性

  1. 能提取到 borders points 和其对应的 shadow points
  2. 提取到的特征点都是位于物体的外轮廓(边缘)上,更加具有稳定性和可重复性
  3. 对特征点Normal的估计只使用共面点,因而对Normal的估计更加稳定
  4. 所有操作都是基于2D的range image,计算量相比于直接操作点云要小

步骤

1. 边缘提取

论文将点分为三种类型:object borders , shadow borders , veil points .

point type

论文提出“提取边缘的最鲁棒的指导原则是:相邻点之间的距离变化(is a change in the distance between neighboring points)” 。因此边缘提取的算法就是基于这个指导原则进行的。

对于每一个 range image 中的点 p i \bold{p_i} pi

  1. 使用启发式方法寻找不跨越边缘的相邻点的典型3D距离
  2. 使用 (1) 得到的距离信息,计算该点是边缘点的可信度(score)
  3. 如果是边缘点,将该点分为上述3类点中的一类
  4. 非极大抑制以获得精确的边缘点位置

实现细节

  1. 使用启发式方法寻找不跨越边缘的相邻点的典型3D距离

    1. 对每一个 range image 中的点 p i p_{i} pi ,选择其2D平面内的一个方形窗内的邻域点,记为 N p i = { n 1 , n ) 2 , . . . , n s 2 } N_{p_i} = \{n_1, n)2, ..., n_{s^2}\} Npi={n1,n)2,...,ns2} ,其中 s s s 为窗宽

    2. 计算 p i p_i pi N p i N_{p_i} Npi 内每个点的3D距离(欧氏距离),得到 D p i = { d 0 , d 1 , . . . , d s 2 } D_{p_i} = \{d_0, d_1, ..., d_{s^2}\} Dpi={d0,d1,...,ds2} ,对 D p i D_{p_i} Dpi 按升序排列,得到 D p i ′ = { d 0 ′ , d 1 ′ , . . . , d s 2 ′ } D_{p_i}^{'} = \{d_0^{'}, d_1^{'}, ..., d_{s^2}^{'}\} Dpi={d0,d1,...,ds2}

    3. 假设 N p i N_{p_i} Npi 中至少有 M M M 个点与 p i p_i pi 位于同一表面,我们选取 δ = d M ′ \delta = d_M^{'} δ=dM 作为 p i p_i pi p i − s p_i-s pis 邻域内的、不考虑邻域内非共面点的典型3D距离(typical 3D distance)

      Note :关于 M M M s s s 的选取,论文选择 s = 5 s=5 s=5 M = ( s + 1 2 ) 2 M = (\dfrac{s+1}{2})^2 M=(2s+1)2 。为了自适应,可以选择距离 d j d_j dj 跳变的点作为 M M M

  2. 使用 (1) 得到的距离信息,计算该点是边缘点的可信度(score)

    对点 p i p_i pi ,计算四个分数值,分别表示点的上、左、右、下方存在边缘的可能(下面仅以 right 方向为例,其他方向计算方法相似):
    notation : p x , y p_{x,y} px,y 表示图片中 ( x , y ) (x, y) (x,y) 位置处的点

    1. 首先计算右边点的平均距离
      (1) p r i g h t = 1 m p ∑ i = 1 m p p x + i , y p_{right} = \frac{1}{m_p} \sum_{i=1}^{m_p}p_{x+i, y} \tag{1} pright=mp1i=1mppx+i,y(1)
      其中 m p m_p mp 为考虑的右边点的个数,论文中采用 m p = 3 m_p = 3 mp=3

    2. 计算3D距离 d r i g h t = ∣ ∣ p x , y − p r i g h t ∣ ∣ d_{right} = ||p_{x, y} - p_{right}|| dright=px,ypright

    3. 计算 s r i g h t ∈ [ 0 , 1 ) s_{right} \in [0, 1) sright[0,1)
      (2) s r i g h t = max ⁡ ( 0 , 1 − δ d r i g h t ) s_{right} = \max(0, 1 - \dfrac{\delta}{d_{right}}) \tag{2} sright=max(0,1drightδ)(2)
      s r i g h t s_{right} sright 值越大,表明点 p i p_i pi 右边距离变化越明显,则存在边缘的概率越大。

    4. 对得到的 S r i g h t S_{right} Sright 图进行平滑操作,以得到连续的边缘同时提高对噪声的鲁棒性

  3. 如果是边缘点,将该点分为上述3类点中的一类

    1. 确定 p x , y p_{x, y} px,y 所属的点的类型:根据 p x , y p_{x,y } px,y p r i g h t p_{right} pright 的3D距离的比较, p x , y p_{x, y} px,y 距离更小则表明可能是 obstacle border 否则可能是 shadow border
    2. 对所有可能是 obstacle border 的点,在2D平面内搜索其右侧对应的 shadow border 。选择2D平面上右边 m p m_p mp 范围内3D距离最大的点作为对应的 shadow border 并计算 s s h a d o w s_{shadow} sshadow 。对 s r i g h t s_{right} sright 做如下调整:
      (3) s r i g h t ′ = max ⁡ ( 0.9 , 1 − ( 1 − s s h a d o w ) 3 ) × s r i g h t s_{right}^{'} = \max(0.9, 1 - (1 - s_{shadow})^3)\times s_{right} \tag{3} sright=max(0.9,1(1sshadow)3)×sright(3)
  4. 非极大抑制以获得精确的边缘点位置

    如果 s r i g h t ′ s_{right}^{'} sright 大于阈值(论文中取 0.8) ,并且是 ( p x − 1 , y , p x + 1 , y ) (p_{x-1, y}, p_{x+1, y}) (px1,y,px+1,y) 邻域内的极大值,则认为 p x , y p_{x, y} px,yobstacle border ,(4.6) 中找到的对应的 shadow point 即其对应的 shadow border ,位于两者之间的点就是 veil point

2. 特征点提取

特征点提取的指导原则如下:

  1. 必须考虑边缘和表面结构信息
  2. 必须是能在不同视角下都能被检测到的点
  3. 必须位于稳定的区域,从而可以得到的稳定的法向量

步骤如下:

  1. 对 range image 中的每一个点,计算一个表示其邻域表面变化的分数和这种变化的一个主方向(dominant direction)
  2. 对每个点,根据邻域点的dominant direction 计算一个 interest value,该值表达了两个性质 1). 邻域内点的dominant directions 之间的差异;2). 该点所处的表面的局部变化量(表面的稳定程度) 。
  3. 对 interest value 图进行平滑
  4. 非极大抑制,找到最终的 interest points

实现细节

边缘提取 步骤,我们将 range image 中的点分成了两类:borders point 和 others point 。

notation p x , y p_{x, y} px,y 表示 range image 中 ( x , y ) (x, y) (x,y) 处的像素点

  1. 估计法向量 :对每个点 p i ∈ R a n g e I m a g e p_{i} \in RangeImage piRangeImage ,利用其2D邻域内欧氏距离在 2 δ 2\delta 2δ 内的点的3D位置和PCA 算法,估计其法向量 。

  2. 对 range image 中的每一个点,计算一个表示其邻域表面变化的分数和这种变化的一个主方向(dominant direction)

    1. 计算主方向 v v v 和幅值 λ \lambda λ :对于 borders point v v v 为边缘方向;对于 others point v v v 为主曲率方向(main direction of the curvature), λ \lambda λ 为方向的幅值。

    2. 对每个 v v v ,都赋一个权值 w ∈ [ 0 , 1 ) w\in[0,1) w[0,1) :对 borders point w = 1 w = 1 w=1 ;对 others point w = 1 − ( 1 − λ ) 3 w = 1 - (1-\lambda)^3 w=1(1λ)3

    3. 指定一个参数 σ \sigma σ 表示 support size 。对图像中的每个点 p p p ,找到其所有欧氏距离在 σ 2 \dfrac{\sigma}{2} 2σ 内且中间不存在边缘(两点位于同一表面上)的点,记为 N p = { p 0 , p 1 , . . . , p N } N_p = \{p_0, p_1, ..., p_N\} Np={p0,p1,...,pN}

    4. ∀ p i ∈ N p \forall p_i \in N_p piNp ,将 v p i v_{p_i} vpi 投影到一个平面 P P P 上 ( P P P 为垂直于 p p p 到原点连线的一个平面) ,得到一个角度 α p i \alpha_{p_i} αpi 。对 α p i \alpha_{p_i} αpi 作如下调整

      (4) α ′ = { 2 × ( α − 180 )   f o r   α > 90 2 × ( α + 180 )   f o r   α ≤ − 90 \alpha^{'} = \begin{cases}2\times(\alpha-180) \ for \ \alpha \gt 90 \\ 2\times(\alpha+180) \ for \ \alpha \le -90\end{cases} \tag{4} α={2×(α180) for α>902×(α+180) for α90(4)

      使得 α ′ ∈ ( − 180 , 180 ] \alpha^{'} \in (-180, 180] α(180,180]

    5. 使用 bounded Gaussian kernel 对 w w w α \alpha α 进行平滑

    6. 计算 interest value:

      (5) I 1 ( p ) = min ⁡ i ( 1 − w p i × max ⁡ ( 1 − 10 × ∣ ∣ p − p i ∣ ∣ σ , 0 ) ) I_1(p) = \underset{i}{\min}(1-w_{p_i}\times\max(1-\dfrac{10\times||p - p_i||}{\sigma}, 0)) \tag{5} I1(p)=imin(1wpi×max(1σ10×ppi,0))(5)

      (6) f ( p i ) = w p i × ( 1 − ∣ 2 × ∣ ∣ p − p i ∣ ∣ σ − 1 2 ∣ ) f(p_i) = \sqrt{w_{p_i}\times(1-|\dfrac{2\times||p-p_i||}{\sigma}-\dfrac12|)} \tag{6} f(pi)=wpi×(1σ2×ppi21) (6)

      KaTeX parse error: Got function '\max' as argument to '\underset' at position 24: … \underset{i,j}\̲m̲a̲x̲(f(p_i)f(p_j)(1…

      (8) I ( p ) = I 1 ( p ) I 2 ( p ) I(p) = I_1(p)I_2(p) \tag{8} I(p)=I1(p)I2(p)(8)

  3. 非极大抑制,找到最终的 interest points

NARF 描述子计算

特性

  1. 具有 6DOF 的不变性
  2. 使用距离函数即可进行特征之间的比较,匹配简单
  3. 可以根据需要灵活设置描述子的大小,且描述子的大小具有明确的物理意义

步骤

计算 NARF 描述子的指导原则如下:

  1. Captures the existence of occupied and free space, so that parts on the surface and also the outer shape of an object can be described.
  2. 对噪声具有鲁棒性
  3. 能在特征点周围提取一个唯一的局部坐标系

步骤如下:

  1. 计算 interest point p p p 附近的法向量对齐的 range value patch:即视角为沿着 p p p 的法向量的local range image
  2. 将一个星形模板(star pattern)覆盖在这个patch上,模板的每一个beam(梁、束)都是最终NARF描述子中的一个值,这个值表示了local range image 中沿着该beam方向的像素变化了多少
  3. 从(2)中的描述子中提取一个方向(类似于 SIFT 中的主方向),记为 d
  4. 将描述子旋转(3) d 方向,使得最终的描述子具有旋转不变性

实现细节

  1. 计算Local range image

    1. 建立 Local coordinate system:原点在特征点 p p p 上,z 轴指向Normal的方向,y轴指向世界坐标系的 upright(垂直的,直立的) 方向,x轴由右手准则定义。
    2. 将点云中和 p p p 点距离在 σ 2 \dfrac{\sigma}{2} 2σ 内的点都转换到 local 坐标系下表达。转换后的 (x, y)表示该点落在描述子的哪一个cell中,而所有转换后落在该cell中的点的的z值的最小值则是该cell的值。没有点落入的cell则被置为最大值 σ 2 \dfrac{\sigma}{2} 2σ
    3. 论文中选取的 Local range value patch 大小为 10x10
    4. 为了避免在patch中点云分辨率的分布不一致问题,使用插值或 ray tracing 技术来处理cell之间的区域
    5. 使用 Gaussian 模糊对 patch 进行平滑处理
  2. 计算NARF-descriptor描述子

    1. 将一个具有 n n n 个beams 的星形模板覆盖到patch上, n n n 就是 NARF-descriptor 的大小:
      narf b3
    2. 对每一个 beam b i b_i bi ,选择patch上所有落在 b i b_i bi 上的cell 的值 C = { c 0 , c 1 , . . . , c m } C = \{c_0, c_1, ..., c_m\} C={c0,c1,...,cm} 。其中 c 0 c_0 c0 为patch的中心点的值,其余的都按到 c 0 c_0 c0 的距离进行升序排列 。
    3. NARF-descriptor 的第 i i i 个描述子 D I D_I DI 的值由如下公式计算:
      9-11
      其中 w ( c j ) w(c_j) w(cj) 是一个基于距离的加权系数。 随着 c j c_j cj c 0 c_0 c0 的距离的增加, w ( c j ) w(c_j) w(cj) 由2逐渐降低到1。公式(10)中 m m m 为落在 b i b_i bi 上的cell的个数。公式(11)是为了将所有的 D i ′ D_i^{'} Di 归一化到 [ − 0.5 , 0.5 ] [-0.5, 0.5] [0.5,0.5] 内。
    4. 由图(b)可以看到,在最终的 NARF-descriptor 中,平坦区域的 D 值很小,而跨越边缘区域的 D 值很大
  3. 添加对于Normal方向的旋转不变性

    1. 建立一个旋转方向(360°)的离散直方图

    2. 直方图中对应角度 β \beta β 的bin中存放的值为:

      (12) h ( β ) = 1 2 + 1 n ∑ i = 1 n D i × ( 1 − ∣ β − γ i ∣ 180 ) 2 h(\beta) = \dfrac12 + \dfrac{1}{n}\sum_{i=1}^{n}D_{i}\times (1 - \dfrac{|\beta - \gamma_{i}|}{180})^2 \tag{12} h(β)=21+n1i=1nDi×(1180βγi)2(12)
      其中 γ i \gamma_i γi 为NARF-descriptor 中第 i i i 个cell(即 b i b_i bi ) 所对应的角度。

    3. 选择直返图中值最大的bin所对应的角度作为 patch 的dominant orientation。如果存在值为最大值 80 % 80\% 80% 的bin,也保留下来,并为其创建另外一个特征描述子。

    4. 将NARF-descriptor shift(移动?) dominant orientation ,使之具有对 Normal 方向的旋转不变性。

关于特征比较(匹配)

  1. 使用距离函数就可以对特征进行比较,论文选择 Manhattan 距离作为距离函数,并将距离除以描述符中cell的个数,使得度量出来的距离位于 [ 0 , 1 ] [0, 1] [0,1] 内。

个人总结

NARF描述子,整体看下来给我的感觉很像SIFT描述子。尤其是建立方向直方图那一步。通过建立 Normal aligned 的range image patch, 使得描述子具有姿态的不变性,而通过主方向的选取,又使得描述子具有沿着Normal方向旋转的不变性。因此,从理论上来看,NARF描述子具有很好的6DOF的不变性。但是这都是基于一个前提——Normal的估计具有稳定性和准确定。因此将NARF描述子和NARF特征点提取结合使用,应该具有不错的效果。

  • 16
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值