Going Further with Point Pair Features: PPF, 如何走的更远?

文章目录

简介

基于Point Pair Features(PPF)的6D姿态估计方法PPF,Drost et al., 2010,是在机器视觉领域应用广泛的一种物体位姿提取方法。大名鼎鼎的Halcon,其Surface Matching 模块就是在这种方法的基础上做的优化。(Halcon有一份technique notes 专门讲该模块的使用)。

在这里插入图片描述

这种方法具有什么优势呢?

  1. 在工业场景中,有大量缺少表面纹理或局部曲率变化很小的物体,无法利用局部特征提取匹配点对,因此基于局部特征点匹配的姿态估计方法无法使用
  2. 该方法的输入,model(物体模型)与scene(场景)均为点云;随着3D传感器技术的发展,市场上出现了很多极具性价比的工业级3D传感器,获取高质量点云的成本越来越低

原理

该法的原理,有篇文章珠玉在前PPF原理,对原论文讲解很详细,这里不再重复,我想强调几个点:

  1. 一个高度概括:原论文的标题,"Model Globally, Match Locally"高度概括了该法的优点;所谓Model Globally,是指对model中所有的点对(任取两个点组成一个点对,遍历所有可能的组合)都计算了PPF描述子,以描述子为key,以这两个点为value构建hash table, 该hash table可以看作是对model 的一个global的描述; 在使用scene进行匹配的时候,同样要对scene中所有点对计算PPF描述子,然后在hash table中进行查找;

  2. 一种思想:广义霍夫变换是一种2D 形状匹配方法,早已于上世纪80年代提出。PPF可以看作该法的3D推广。基于Hough Voting思想,PPF描述子可以看成是一种“去中心化”的特征描述子。什么是“去中心化”?就是说两个点到底匹不匹配,不像传统的局部特征描述子,依赖点的局部信息,而是要靠其他的点来投票。尽管会有噪声影响,但是正确的匹配一定会在投票过程中被“群众”突显出来,取得最高票数。由于PPF采取了Hough Voting的思想,因此继承了其优缺点:

    • 优点:
      1. 对于轻微形变、遮挡鲁棒性好
      2. 抗噪声能力强
      3. 可一次提取出多个目标(对比Ransac与Hough Voting, 两者都是做model fitting的经典方法,但是Hough voting在这一点上胜过Ransac)
    • 缺点:
      1. 参数空间维度高,空间复杂度和时间复杂度都很高;
  3. 一个Intuition: 直观理解一下原文中做姿态估计的过程。两个点云如何align到一起?找到一对匹配点,先将这两个匹配点align到一起,并且他们的法向量方向也要一致;剩下只差一个绕着法向量的旋转角度。这个Intuition决定了在什么样的参数空间进行Hough Voting: 参数空间有两个维度,原文中为 ( m r , α ) (m_r,\alpha) mr,α) m r m_r mr代表了在model中,scene中 s r s_r sr的匹配点; α \alpha α代表了绕法向量的旋转角度;

在这里插入图片描述

优化

2017年的文章:Going Further with Point Pair Features 对PPF进行了优化, 取得了很好的效果。这篇文章指出Drost提出的原算法(以下称为Drost-PPF)及其变种中的问题:

  1. sampling schemes of pairs of 3D points 被长期忽视,导致方法效率低下
  2. 传感器噪声的影响:影响了quantization过程,而整个算法的加速正是靠quantization
  3. 杂乱背景的影响:影响了算法中投票的过程

针对这几个问题,作者采取的优化措施有以下几条:

  1. Pre-processing: 点云的降采样的策略。降采样可以加速计算,并且避免一些很接近的点(空间距离近的点往往法向量也很接近)产生的不具有区分性的PPF features。Drost-PPF中的降采样策略比较简单,作者认为会丢失部分有用信息,所以,即使两个点的距离够近,但如果法向量角度偏差超过30度,也会予以保留。

  2. Smart Sampling: 对scene中的 s i s_i si s r s_r sr的距离 d d d进行限制,即对于每一个 s i s_i si, 与其配对的 s r s_r sr只在以 s i s_i si为球心,以 d d d为半径的球(作者称为voting ball)内选取。 因为两个点显然应该在同一个物体上。但是如果直接限制 d d d为物体的外接球直径也不好,这不能很好的处理物体较扁的情形。

    作者的策略是这样的, 使用一大一小两个voting ball做两轮投票, 小的半径为 R min ⁡ = d min ⁡ 2 + d med  2 R_{\min }=\sqrt{d_{\min }^{2}+d_{\text {med }}^{2}} Rmin=dmin2+dmed 2 ( d min ⁡ d_{\min } dmin是bouding box 最短边, d med  d_{\text {med }} dmed 是中等长度的边, R m i n R_{min} Rmin是物体的smallest observation expansion),大的半径 R m a x = d o b j R_{max}=d_{obj} Rmax=dobj(外接球直径)

    第一轮投票只使用小球内的点,有助于最大限度的降低背景噪声的干扰

    第二轮投票则使用了在大球内而在小球外的点, 可以对上一轮投票做补充(比如一些很扁的物体)

    如何快速找到半径为 d d d 的voting ball 内的点呢?可以为scene中的点建立一个spatial look up table。具体的做法是将空间分为多个size为 d d d 的voxel,每个voxel保存了落在该voxel中的点的indices,而每个点也保存着自己所在的voxel的index。Build这个look up table 的时间复杂度为 O ( n ) O(n) O(n).然后对于 s i s_i si, 只需要在 s i s_i si所属的voxel和其相邻的voxel中查找距离小于 d d d的点就可以了。

    这种做法大大减少了需要考虑的 s r s_r sr的数目,将原算法 O ( n 2 ) O(n^2) O(n2)的复杂度降为 O ( n k ) O(nk) O(nk), k k k通常比 n n n小一个量级。

    在这里插入图片描述

  3. Sensor noise: 噪声的影响主要在于会改变PPF Features的discretization bin,导致feature无法正确匹配。 解决的方法是feature spread, 即:

    1. 在建立model hash table的过程中, ( m r , α ) (m_r,\alpha) mr,α)不仅被存储在自己的PPF feature vector f f f所对应的value,同样要在 f f f相邻的feature vector (4维向量的话,相邻的向量有80个)的value中保存一份。(?????尝试下能否再加速一波
    2. 在投票过程中,对quantized rotation angle采取同样的策略,即不仅给rotation angle α \alpha α投票,也要给 α \alpha α的邻居们投票。(???指的哪步,投票不是( m r m_r mr α \alpha α一起投吗)。指的是 α s c e n e \alpha_{scene} αscene

    但是,同时使用quantization和spread 是有缺点的,考虑 s r s_r sr和一组 s i s_i si, 如果这组 s i s_i si距离很近的话,quantization得到的 α s c e n e \alpha_{scene} αscene是相同的, f e a t u r e   v e c t o r feature\ vector feature vector也很可能是相同的,从而在投票空间造成bias。

在这里插入图片描述

作者在这里使用了一个bit mask table来减少这种bias。比如对于上图所示情形,三组point pair只允许投一票。具体做法是对每一个 s r s_r sr, 初始化一个size 跟model hash table的size相同的bit mask table,table的每个元素为32bit的mask (每个bit对应一个 q u a n t i z a t i o n   α s c e n e quantization\ \alpha_{scene} quantization αscene),每个bit均初始化为0。当一对 ( s r , s i ) (s_r,s_i) (sr,si)计算得到 f e a t u r e   v e c t o r feature\ vector feature vector q u a n t i z a t i o n   α s c e n e quantization\ \alpha_{scene} quantization αscene之后, 对应的bit被置为1。对其他的 s i s_i si,检查对应的bit mask是否为1,为1则不再参与投票(spread 得到的feature也要检查)。

  1. 根据投票结果生成pose。 Drost-PPF 使用了一种贪心策略(评价的标准是投票空间的投票数)来做pose cluster。本文作者发现这种策略在有噪声和背景干扰的情况下并不鲁棒,投票数也不是一个可靠的标准。

    作者采用了一种自底向上的聚类方法(????哪种),允许每个pose同时属于不同的cluster。需要保存每个pose相关联的model point。 pose A可以为其cluster投票,但是是有条件的,如果存在另一个pose B,pose B关联的model point与pose A相同,且已经为该cluster投过票,则pose A不再参与投票。这避免了repetitive geometric structures (比如平面)引起的bias。

    下面几个后处理也是比较重要的:

    • Refine:使用了projective ICP (???)来做pose refine。只选择了两个voting ball中排名前四的cluster 来做refine。

    • Occulation check: 根据pose将物体虚拟投影到2D图上,检查对应像素的深度值,同虚拟投影相比,原深度图有多少距离相机更近,有多少更远,如果更近的像素比例过大(大于总像素数的10%),这个pose显然是有问题的,拒绝这个pose。

    • Silhouette check: 同样根据pose将物体虚拟投影到2D图上,得到轮廓。同时计算场景点云中深度和法向量变化剧烈的区域, 检查轮廓是否被这些区域cover了。如果有大于10%的轮廓没有被cover,拒绝这个pose

    实验结果:

    作者在两个数据集上进行了测试,ACCV DataSet,Occlusion DataSet, 评价标准是Recogniton rate (定义在Learning Analysis-by-Synthesis for 6D Pose Estimation in RGB-D Images

    计算时间在0.1~0.8s之间(640x 480 depth map)

Tips

  • 背景及其他杂物尽量提前移除, 在工业应用场景这是比较好实现的
  • 在投票过程中, scene上的 s r s_r sr选取可以进一步降采样,实现提速的目的
  • 可以尝试使用2D实例分割+PPF的两阶段方法,代表工作来自MVTec的A Hybrid Approach for 6DoF Pose Estimation
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Point pair feature算法是一种特征提取技术,它通过检测图像中特征点之间的相对位置关系来提取高级特征。它基于点对特征(也称为最小重复特征),可以计算特征点之间的距离、角度、缩放因子和旋转角度,从而对图像中的物体进行精确识别。 ### 回答2: Point Pair Feature (PPF)算法是一种用于3D物体识别和配准的算法。它的原理是利用物体的表面特征点对之间的相对关系来描述物体的形状。 PPF算法首先对物体的表面进行采样,得到一组表面特征点。然后,对于每一个特征点,算法会计算它与其他特征点之间的相对位置关系。这种相对关系是通过计算特征点之间的角度差和距离差来描述的。 具体来说,PPF算法首先计算每一对特征点之间的法向量,并计算它们之间的角度差。然后,算法会计算特征点之间的距离差,并将这两个差值组合成一个特征描述符。这个特征描述符被称为点对特征。 接下来,算法会将这些点对特征进行聚类,将相似的特征点组合在一起。这样,每个聚类代表了物体上的一个唯一的形状特征。最后,通过比较待识别物体的各个形状特征与已知物体的形状特征,可以实现物体的识别和配准。 PPF算法的优点是能够对物体进行全局识别和配准,因为它考虑了物体表面特征点之间的相对位置关系。同时,它对噪声和局部变形有一定的鲁棒性,能够处理一些复杂和不精确的物体模型。 总之,Point Pair Feature算法通过计算物体表面特征点对之间的相对位置关系来描述物体的形状,并通过聚类和比较特征来实现物体识别和配准。 ### 回答3: Point pair feature (PPF)算法是一种在三维物体识别和匹配中常用的特征描述方法。其原理是通过对点云数据中的点对进行计算,来得到物体的特征描述符。 该算法主要包括以下步骤: 1. 特征点提取:从三维点云数据中选择一部分特征点作为计算的候选点。一般可以使用关键点提取算法,如SIFT或ISS等。 2. 匹配候选点:使用快速kd树或其他加速结构来减少匹配时间,将计算的候选点与模型库中的点进行匹配。 3. PPF计算:根据匹配的候选点对,计算其法线和相对位置,并将其组合为特征描述符。这里使用了点对之间的方向、位置和角度信息。 4. 特征匹配:将计算得到的特征描述符与模型库中的特征描述符进行比较,并找到最佳匹配。可以使用最近邻搜索或其他匹配算法。 5. 姿态估计:通过匹配得到的特征对,估计出物体的姿态(位置和旋转)信息。 PPF算法的优点是不依赖于特定的模型参数,可以适用于各种形状的三维物体。并且,由于使用了点对的信息,可以提供准确和鲁棒的匹配结果。然而,该算法对于大型点云数据和复杂场景的处理速度较慢,需要进行进一步的加速优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值