新闻  |   论坛  |   博客  |   在线研讨会
PPF(Point Pair Features)原理及实战技巧
计算机视觉工坊 | 2021-11-07 09:10:50    阅读:1978   发布文章

简介

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

1.png

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

1.在工业场景中,有大量缺少表面纹理或局部曲率变化很小的物体,无法利用局部特征提取匹配点对,因此基于局部特征点匹配的姿态估计方法无法使用

2.该方法的输入,model(物体模型)与scene(场景)均为点云;随着3D传感器技术的发展,市场上出现了很多极具性价比的工业级3D传感器,获取高质量点云的成本越来越低

原理

该法的原理,有篇文章珠玉在前PPF原理(https://zhuanlan.zhihu.com/p/94952276),对原论文讲解很详细,这里不再重复,我想强调几个点:

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)参数空间维度高,空间复杂度和时间复杂度都很高;

2.png

优化

2017年的文章:Going Further with Point Pair Features (https://link.springer.com/chapter/10.1007%2F978-3-319-46487-9_51) 对PPF进行了优化, 取得了很好的效果。这篇文章指出Drost提出的原算法(以下称为Drost-PPF)及其变种中的问题:

sampling  schemes of pairs of 3D points 被长期忽视,导致方法效率低下

传感器噪声的影响:影响了quantization过程,而整个算法的加速正是靠quantization

杂乱背景的影响:影响了算法中投****的过程

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

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

3.png4.png5.png6.png7.png

根据投****结果生成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。

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

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

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

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

实验结果:

作者在两个数据集上进行了测试,ACCV DataSet,Occlusion DataSet(https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Krull_Learning_Analysis-by-Synthesis_for_ICCV_2015_paper.pdf), 评价标准是Recogniton rate (定义在Learning Analysis-by-Synthesis for 6D Pose Estimation in RGB-D Images(https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Krull_Learning_Analysis-by-Synthesis_for_ICCV_2015_paper.pdf))

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

Tips

背景及其他杂物尽量提前移除, 在工业应用场景这是比较好实现的

在投****过程中, scene上的Sr选取可以进一步降采样,实现提速的目的

参考文献

1、Model globally, match locally: Efficient and robust 3D object recognition

(https://ieeexplore.ieee.org/document/5540108)

2、PPF介绍:(https://zhuanlan.zhihu.com/p/94952276)

3、Going Further with Point Pair Features

(https://link.springer.com/chapter/10.1007%2F978-3-319-46487-9_51)

备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客