2

PPF(Point Pair Features)原理及实战技巧

 2 years ago
source link: https://zhuanlan.zhihu.com/p/425656495
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

PPF(Point Pair Features)原理及实战技巧

简介

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

作者:阿Q|来源微信公众号:3D视觉工坊
3D视觉精品课程推荐:
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现

v2-ba456b5e6486ee49eee8a64da3113a84_720w.jpg

这种方法具有什么优势呢?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)参数空间维度高,空间复杂度和时间复杂度都很高;

优化

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

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

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









根据投票结果生成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视觉学习社区本文仅做学术分享,如有侵权,请联系删文。

更多干货

欢迎加入【3D视觉工坊】交流群,方向涉及3D视觉、计算机视觉、深度学习、vSLAM、激光SLAM、立体视觉、自动驾驶、点云处理、三维重建、多视图几何、结构光、多传感器融合、VR/AR、学术交流、求职交流等。工坊致力于干货输出,为3D领域贡献自己的力量!欢迎大家一起交流成长~

添加小助手微信:CV_LAB,备注学校/公司+姓名+研究方向即可加入工坊一起学习进步。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK