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

本文介绍基于PointPairFeatures (PPF) 的6D姿态估计方法,包括其在工业场景的优势、原理及2017年对该方法的优化方案。PPF方法能有效处理缺乏纹理或局部曲率变化小的物体,通过Hough Voting实现鲁棒的姿态估计。

文章目录

简介

基于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只在以

UATHelper: 打包 (Android (ASTC)): ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) UATHelper: 打包 (Android (ASTC)): clang++: error: linker command failed with exit code 1 (use -v to see invocation) PackagingResults: Error: undefined symbol: ppf_Message_GetString PackagingResults: Error: undefined symbol: ppf_ApplicationLifecycle_GetLaunchDetails PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetDeeplinkMessage PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetDestinationApiName PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetLobbySessionID PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetMatchSessionID PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetExtra PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetRoomID PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetTrackingID PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetChallengeID PackagingResults: Error: undefined symbol: ppf_LaunchDetails_GetLaunchType PackagingResults: Error: undefined symbol: ppf_ApplicationLifecycle_LogDeeplinkResult PackagingResults: Error: undefined symbol: ppf_Application_GetSystemInfo PackagingResults: Error: undefined symbol: ppf_SystemInfo_GetROMVersion PackagingResults: Error: undefined symbol: ppf_SystemInfo_GetLocale PackagingResults: Error: undefined symbol: ppf_SystemInfo_GetProductName PackagingResults: Error: undefined symbol: ppf_SystemInfo_GetIsCnDevice PackagingResults: Error: undefined symbol: ppf_SystemInfo_GetMatrixVersionName PackagingResults: Error: undefined symbol: ppf_SystemInfo_GetMatrixVersionCode PackagingResults: Error: undefined symbol: ppf_Achievements_Unlock PackagingResults: Error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) PackagingResults: Error: linker command failed with exit code 1 (use -v to see invocation) UATHelper: 打包 (Android (ASTC)): Took 4.8559767s to run UnrealBuildTool.exe, ExitCode=6 UATHelper: 打包 (Android (ASTC)): UnrealBuildTool failed. See log for more details. (C:\Users\XZ612-Student\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+Epic+Games+UE_4.27\UBT-derder0610-Android-Development.txt) UATHelper: 打包 (Android (ASTC)): AutomationTool exiting with ExitCode=6 (6) UATHelper: 打包 (Android (ASTC)): BUILD FAILED PackagingResults: Error: Unknown Error
06-19
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值