作者:仲夏夜之星
Date:2020-04-08
文章“A Method for 6D Pose Estimation of Free-Form Rigid Objects Using Point Pair Features on Range Data” 2018年发表在《sensors》上,是近年来对PPF方法的进一步继承与改进。
1.本文的思路
本文介绍的方法主要分为两个阶段即线下建模与线上匹配,在建模时,通过计算和保存所有可能的模型对及其相关的PPF来创建全局模型描述符。在匹配阶段,通过使用PPF将场景对与存储的模型对匹配来估计场景中的模型姿态。这一匹配过程由两个不同的部分组成:(1)利用四维特征找到对之间的对应关系;(2)将产生假设姿态的对应关系分组。
模型点对(mr,ms)定义的点对特征
 
2.本文内容
(1)模型的前处理
前处理包括法向估计和对点云的下采样。其中法向估计问题,本文建议使用两个不同的变体来表示每个阶段的输入数据表示。对于离线阶段,使用重构或cad网格数据,通过平均每个顶点周围三角形的法线平面来估计法线。对于在线阶段,利用有组织的点云数据,本文提出了一种基于一阶Taylor展开的方法,包括对表面深度差高于给定阈值的情况下的双边滤波器启发解决方案。而对点云下采样方面,本文是基于一种新的利用表面信息的体素网格下采样方法和一个额外的非识别对的平均步骤。首先计算点云数据的体素网格结构,对于每个体素单元,采用贪婪聚类方法对具有相似正态信息的点进行分组,即法线之间的角度小于阈值。然后,对于每个聚类组,我们平均定向点,有效地合并相似点,同时保持判别数据。与原始方法一样,体素大小设置为,定义相对于模型大小的值,然而,在本文方法中,参数对算法性能的影响显著降低,转向了一种更鲁棒的参数无关方法。
(2)特征提取
在离线阶段,得到模型包围盒,并将模型直径估计为包围盒的对角线长度,对于给定的ppf,使用方程(1)中定义的量化函数来获得四维数组:
(1)
其中量化步骤设置为0.05dm,固定为,这些值被设置为识别率和速度之间的权衡。这样,哈希表的尺寸得定义为,在预处理后,对于每个模型点对,得到量化的ppf索引,并将参考点和计算的保存到哈希表对应的单元格中。
在线阶段,对于每个参考点,将计算所有可能的点对,并使用四维查找表与对象模型进行匹配,其中每五个点中只有一个(按输入顺序)将用作参考点,其余点将用作第二点,为了提高匹配部分的效率并且避免考虑比模型直径更远的点对,对于每个场景参考点,我们建议使用一个有效的kd-tree结构来获得模型直径内的第二个点。
(3)线上匹配
本文提出了一个更有效的解决方案,只检查保持量化步骤大小的16个邻域中最大一个,如图7d所示。考虑到相似点对之间的差异主要是由传感器噪声产生的,可以合理地假设这种噪声遵循一个正态分布,其特征是一个相对较小的标准差,即小于量化步骤,基于这一假设,我们检查量化误差方程
,以确定哪些邻域更有可能受到噪声的影响。这个过程是由方程(2)中表示的分段函数为每个维度定义的:
(2)
其中-1表示左邻域可能受到影响,1表示右邻域可能受到影响,0表示没有邻域可能受到影响。
在实验中,我们将标准差值设置为量化步骤;然而,对于任何特定的噪声模型,都可以使用其他值,该方法可以访问单个哈希表单元格的最佳情况和访问16个单元格的最坏情况。
(4)位姿假设
在假设生成过程中,所有一致的点对应被分组在一起,生成一个候选姿态。详细地说,对于每个获得的场景模型点对,在二维投票表中投票一个LC组合。这样,哈希表的每个位置都表示一个LC,定义了场景中的模型姿态候选,其值表示支持的数量,这表明姿态的可能性有多大。通过一个总大小为
的投票表定义的来量化LCα,在所有投票被投完后,哈希表的最高值表示最可能的LC,为这个场景参考点定义一个候选姿态。该文定义一个阈值,只考虑具有最小支持数的LC,如果哈希表的峰值低于这个数字,则姿态将被丢弃;否则,将生成具有相关分数的候选姿态。
(5)位姿聚类
为了将相似的姿态组合在一起,我们提出了一种分层完全链接聚类方法。这种聚类方法强制要求每个聚类的所有元素组合基于两个主要阈值,即距离和旋转,在实验中,我们根据候选位姿的投票决定对位姿进行排序,并为每个位姿创建一个集群。然后,按顺序检查所有集群,当条件保持其元素的所有组合时,两个集群被连接在一起。这样,最有可能的集群将首先合并,减少相互排斥组合的影响。
(6)后处理
由于摄像机视图自遮挡在场景中的模型点产生的偏差和对象模型相对于场景的可能对齐误差,我们将上述位姿通过ICP算法进一步进行细化匹配,得到最优位姿。
3.实验结果
(1)BOP基准数据集
(2)不同方法之间的性能比较
(3)使用不同的后处理参数进行性能比较
(4)所提出的方法对BOP基准数据集的场景的影响。场景RGB数据以灰色显示, 对象模型以颜色和绿色包围框内显示。
4.参考文献
[1] Drost, B.; Ulrich, M.; Navab, N.; Ilic, S. Model globally, match locally: Efficient and robust 3D object recognition. In Proceedings of the 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, San Francisco, CA, USA, 13–18 June 2010; pp. 998–1005.[2] Vidal, J.; Lin, C.; Martí, R. 6D pose estimation using an improved method based on point pair features.In Proceedings of the 2018 4th International Conference on Control, Automation and Robotics (ICCAR),Auckland, New Zealand, 20–23 April 2018; pp. 405–409.

物体的三维识别与6D位姿估计:PPF系列论文介绍(三)的更多相关文章

  1. 李飞飞团队最新论文:基于anchor关键点的类别级物体6D位姿跟踪

    6-PACK: Category-level 6D Pose Tracker with Anchor-Based Keypoints 论文地址: 6-PACK: Category-level 6D P ...

  2. 相机位姿估计1_1:OpenCV:solvePnP二次封装与性能测试

    关键词:OpenCV::solvePnP 文章类型:方法封装.测试 @Author:VShawn(singlex@foxmail.com) @Date:2016-11-27 @Lab: CvLab20 ...

  3. 相机位姿估计0:基本原理之如何解PNP问题

    关键词:相机位姿估计 PNP问题求解 用途:各种位姿估计 文章类型:原理 @Author:VShawn(singlex@foxmail.com) @Date:2016-11-18 @Lab: CvLa ...

  4. python+opencv2相机位姿估计

    最近在做基于图像的室内定位方面的研究,于是使用到了百度最新的室内数据库Image-based Localization (IBL) .由于该数据库给出的数据是每幅图像和其对应相机的内外参数和光心投影方 ...

  5. 利用modelarts和物体检测方式识别验证码

    近来有朋友让老山帮忙识别验证码.在github上查看了下,目前开源社区中主要流行以下几种验证码识别方式: tesseract-ocr模块: 这是HP实验室开发由Google 维护的开源 OCR引擎,内 ...

  6. 三维点云去噪无监督学习:ICCV2019论文分析

    三维点云去噪无监督学习:ICCV2019论文分析 Total Denoising: Unsupervised Learning of 3D Point Cloud Cleaning 论文链接: htt ...

  7. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  8. OpenCV学习 物体检测 人脸识别 填充颜色

    介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...

  9. MATLAB:读取txt文件中物体的三维坐标,显示三维模型

    在MATLAB中建立一个脚本show3Dtxt.m文件,编写代码: clear; %%read 3D data fileID= fopen('E:\博士\深度学习与三维重建\代码实现\voxel_gr ...

随机推荐

  1. step(iter)、epoch、batch size之间的关系

    转自:https://blog.csdn.net/wcy23580/article/details/90082221

  2. 本地目录配置多个远程Git仓库

    目录 情景一:不同的库分别 pull/push 1. 使用git命令配置 2. 修改.git/config 文件 3. 操作 情景二:不同的库一次push 1. 使用git命令配置 2. 修改.git ...

  3. 自定义添加$_SERVER中的变量

    如何根据自己项目中的需求自定义$_SERVER中的变量呢?比如$_SERVER['XU_TEXT_PARAM'],这个超全局变量输出肯定是会报错的.那如何自定义它,让它输出我们想要输出的值呢? 1.在 ...

  4. vue中moment.js的使用

    一.介绍 moment.js是一款现在对时间处理的强大的函数. Moment被设计用于在浏览器和Node.js中工作. 目前ci系统使用的浏览器有:IE8.IE9在Windows 7上.Chrome在 ...

  5. 建议13:禁用Function构造函数

    定义函数的方法包括3种:function语句,Function构造函数和函数直接量.不管用哪种方法定义函数,它们都是Function对象的实例,并将继承Function对象所有默认或自定义的方法和属性 ...

  6. Java字符串转List

    List<String> result = Arrays.asList(str.split(","));

  7. Java多线程并发07——锁在Java中的实现

    上一篇文章中,我们已经介绍过了各种锁,让各位对锁有了一定的了解.接下来将为各位介绍锁在Java中的实现.关注我的公众号「Java面典」了解更多 Java 相关知识点. 在 Java 中主要通过使用sy ...

  8. Java基础 - 数据类型和运算符

    Java 语言支持的类型分为两类:基本数据类型(Primitive Type)和引用类型(Reference Type). 目录 基本数据类型 数值类型 整数类型 byte short int lon ...

  9. 目标检测 | RetinaNet:Focal Loss for Dense Object Detection

    论文分析了one-stage网络训练存在的类别不平衡问题,提出能根据loss大小自动调节权重的focal loss,使得模型的训练更专注于困难样本.同时,基于FPN设计了RetinaNet,在精度和速 ...

  10. JS三个事件绑定方法

    1. JS三个事件绑定方法 1.1. 使用html进行事件绑定 1.直接在html标签上写入事件类型和事件处理方法. <button onclick = "alert('hello w ...