论文解读 | 基于改进点对特征的点云6D姿态估计
原创 | 文 BFT机器人

01 摘要
点对特征(PPF)方法已被证明是一种有效的杂波和遮挡下的姿态估计方法。
文章的改进方法主要包括:
(1)一种基于奇偶规则求解封闭几何的法向的方法;
(2)通过将体素网格划分为等效角度单元的有效降采样方法;
(3)基于拟合点的验证步骤。在真实杂波数据集上对该方法进行了评估,结果表明该方法在6D姿态估计方面比原PPF方法具有更好的性能和效率。
02 点对特征(PPF)方法是什么?
PPF方法是一种通过提取局部特征和投票匹配的方法对点云中自由曲面三维物体进行姿态估计的方法。

图1 点对特征方法
03 它是如何用于姿态估计的?
该算法的核心思想是从模型和场景的点对中提取由四个值组成的特征向量。这些特征描述了一对中两点之间的相对位置和方向,从而描述了局部视图中对象的表面形状。
总体而言,对象的所有点对所描述的局部特征构成了对象的全局特征。根据该方法的要求,一对中的两点不应该是交换的,即特征是不对称的。
04 改进的方法中的奇偶规则是什么?
本文提出的改进方法包括一种基于奇偶规则求解闭合几何法线方向的方法。奇偶规则是一种基于与曲面相交的边数奇偶性来确定曲面法线方向的方法。
具体来说,它包括计算与垂直于给定点的平面相交的边的数量,并使用此计数来确定法线是指向该点还是远离该点。该方法用于求解闭合几何体的法线方向,以提高6D姿态估计的性能和效率。
05 论文中如何提高6D姿态估计的性能和效率?
基于拟合点的验证步骤是改进的PPF方法中使用的一种方法,用于提高6D姿态估计的性能和效率。该步骤包括使用估计的姿势将模型拟合到场景,然后通过将其与原始点云进行比较来验证拟合。
该方法使用投票方案来确定最佳姿态估计,然后使用迭代最接近点(ICP)算法对其进行细化。这种方法通过减少误报和提高具有遮挡的杂乱场景的准确性来提高性能和效率。
06 论文原理
A. 预处理
1)正态估计
对于重构点云模型或多边形网格数据的输入数据,采用PCA算法计算法线。针对Zhao等人[1]也提到的PCA结果方向模糊的问题,提出了一种基于奇偶规则的光线投射方法,用于检测单位法向量的端点是否位于封闭几何模型内。
为此,检查从z轴方向的每个端点的射线与模型表面相交的次数。如果其中一条与奇数次相交,则根据拓扑学,法线应该在模型内部,应该倒转,如图2所示。对于场景云,所有法线可以直接统一指向视点。
f (i , j)为最外边框起始像素的图像强度。由于像素与点之间的对应关系,可以获得图像中所有分割片段的点云。



图2 射线铸造法的原理和效果。(a)偶数相交的法线(绿色)指向正方向,奇数相交的法线(红色)指向反方向。(b)不含光线投射法的PCA算法正态估计结果。(c)射线投射法PCA算法的正态估计结果。
2)下采样
首先采用RANSAC算法拟合表平面,丢弃平面下(视点对面)的点。然后分别在训练阶段和匹配阶段提出了分割体素网格的两种方法。在训练阶段,遵循Joel等人[2],对每个体素单元采用自下而上的分层聚类方法对法线夹角小于阈值的点进行聚类和平均。为了降低复杂度,考虑过滤掉元素较少的簇。然而,在匹配阶段,迭代和比较的过程可能会影响效率。为此,提出了一种角单元法,将整个球体的实体角平均划分为20个角单元。每个细胞由正二十面体的一个面法线表示(图4a)。对于体素单元中的每个点,比较其法线与20个代表性法线之间的角度,并考虑最小的一个作为它所属的角度单元(图4b)。这样大大降低了体素大小的影响,不再是影响算法效率的重要因素。

图3 一种在体素中对角度单元进行降采样的有效方法。(a) 20个angle cells除以一个正二十面体。每个cell由二十面体的面法线表示。(b)所有方向法线在球面上的投影。一个细胞中法线的投影用相同的颜色表示。
B. 配对及投票
由为了提高匹配效率,丢弃了非区分点对的特征。具体来说,如果点间距离和法线夹角都小于阈值,则对匹配的影响可能很小。设置阈值作为量化步长,可以滤除在量化过程中损失特征为零的对。Hinterstoisser等[3]提出,每个参考点的伴随点应在半径模型直径的球内,可以通过Kd-tree算法高效搜索。
然后,遵循Drost等提出的匹配方法和投票方案。在投票后,采用基于密度的带噪声应用空间聚类(DBSCAN)算法对场景参考点提出的姿态进行聚类,并根据投票的总和对它们进行排序。
C.后处理
聚类后,管道输出一组候选姿势,通过投票评估,前10%被接受为效率的妥协。根据Joel等提出的投影ICP思想,以假设姿态渲染模型点,并应用Z-buffer算法在场景视点下对模型云中的可见点进行裁剪。然后将高效的ICP算法应用于裁剪后的模型。然后,提出了基于拟合点的验证步骤。
使用Kd-tree算法寻找每个模型点最近的场景点,并考虑与最近场景点的距离在阈值内的模型点作为拟合点。如果拟合点占模型总点数的比例低于阈值,则模型被接受。最后,采用非最大抑制(NMS)算法对重叠姿态进行滤波。
D.实验效果
本文提出了一种改进的基于点对特征的点云6D姿态估计方法。该方法提出了一种PCA算法中封闭几何的法向解的方法,并引入了一种通过将体素网格划分为等效角度单元的高效采样方法。
最后,采用ICP的变体、基于拟合点的验证步骤和NMS算法进行细化和验证。实验结果表明,该方法具有较高的效率和鲁棒性,平均召回率为0.87。

图4 论文分割效果
标题:
6D Pose Estimation from Point Cloud Using an Improved Point Pair Features Method[C]
更多精彩内容请关注公众号:BFT机器人
本文为原创文章,版权归BFT机器人所有,如需转载请与我们联系。若您对该文章内容有任何疑问,请与我们联系,将及时回应。
相关文章:
论文解读 | 基于改进点对特征的点云6D姿态估计
原创 | 文 BFT机器人 01 摘要 点对特征(PPF)方法已被证明是一种有效的杂波和遮挡下的姿态估计方法。 文章的改进方法主要包括: (1)一种基于奇偶规则求解封闭几何的法向的方法; (2)通过将体素网格划分为等效角度单元的有效降采样方法; (3)基于拟合点的验证步骤。在真实杂波数据集…...
Shell脚本while循环语句应用
记录:433 场景:Shell脚本while循环语句应用。Shell脚本while循环语句应用。while do done、while : do done、while true do done。 版本:CentOS Linux release 7.9.2009。 1.while常用格式 1.1格式一:while do done while c…...
Kubernetes Dashboard + Ingress 及其 yaml 文件分析
概述 记录部署Dashboard Ingress的具体过程及其 yaml 文件分析 Dashboard Yaml # Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the Li…...
【SpringCloud组件——Nacos】
前置准备: 分别提供订单系统(OrderService)和用户系统(UserService)。订单系统主要负责订单相关信息的处理,用户系统主要负责用户相关信息的处理。 一、服务注册与发现 1.1、在父工程当中引入Nacos依赖 …...
pinia状态管理 用法
Pinia是一个用于vue的状态管理库,类似于vuex,是vue的另一种状态管理工具。 Pinia 是 Vue 的存储库,它允许跨组件/页面共享状态。实际上,Pinia就是Vuex的升级版,官网也说过,为了尊重原作者,所以取名pinia&am…...
Oracle客户端版本安装
一、版本准备 Oracle版本下载官网:Instant Client for Linux x86-64 (64-bit) | Oracle 中国 进入网站下载对应的oracle版本,通常环境所用的包有:basic、sdk、sdkplus三个包。包的类型分为rpm和zip包,均可以下载,当前…...
基于Android studio二手车交易系统app
客户端: 用户注册:通过输入用户名,密码,所在地,联系地址以及电话和电子邮件等信息进行用户信息的注册。 二手车查看:用户注册登录系统后,可以查看二手车的基本信息,通过二手车的品牌…...
【LCD应用编程】绘制点、线、矩形框
之前获取LCD屏幕参数信息时了解到,LCD屏是 FrameBuffer 设备,操作 FrameBuffer 设备 其实就是在读写 /dev/fb0 文件。除此之外,LCD屏上包含多个像素点,绘制点、线、矩形框本质是在修改这些像素点的颜色。 目录 1、定义 lcd_color…...
第八篇、基于Arduino uno,获取MAX30102心率传感器的心率信息——结果导向
0、结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的IR值,第二个值是实时的心跳,第三个值是平均心跳,如果是你想要的,可以接着往下看。 1、外观 说明:MAX30102心率传感器的外观如下…...
【MySQL】MySQL主从同步延迟原因与解决方案
文章目录 一、MySQL数据库主从同步延迟产生的原因二、关于DDL和DML三、主从延时排查方法四、解决方案3.1 解决从库复制延迟的问题:3.2 MySql数据库从库同步其他问题及解决方案 一、MySQL数据库主从同步延迟产生的原因 MySQL的主从复制都是单线程的操作,…...
学C的第二十二天【深度剖析数据在内存中的存储:1. 数据类型介绍;2. 整型在内存中的存储】
相关代码gitee自取:C语言学习日记: 加油努力 (gitee.com) 接上期:学C的第二十一天【初阶测评讲解:1. 计算递归了几次;2. 判断 do while 循环执行了几次;3. 求输入的两个数的最小公倍数;4. 将一句话的单词进…...
测试计划模板一
测试计划 修订历史记录 版本 日期 AMD 修订者 说明 1.0 XXXX年XX月XX (A-添加,M-修改,D-删除) 目录 1. 简介.. 4 1. 1目的... 4 1. 2背景... 4...
【利用AI让知识体系化】5种创建型模式
文章目录 创建型模式简介工厂模式抽象工厂模式单例模式建造者模式原型模式 创建型模式 简介 创建型模式,顾名思义,是用来创建对象的模式。在软件开发中,对象的创建往往比一般的编程任务更为复杂,可能涉及到一些琐碎、复杂的过程…...
Unity的UnityStats: 属性详解与实用案例
UnityStats 属性详解 UnityStats 是 Unity 引擎提供的一个用于监测游戏性能的工具,它提供了一系列的属性值,可以帮助开发者解游戏的运行情况,从而进行优化。本文将详细介绍 UnityStats 的每个属性值,并提供多个使用例子帮助开发者…...
TDengine集群搭建
我这里用三台服务器搭建集群 1、如果搭建集群的物理节点上之前安装过TDengine先卸载清空,直接执行以下4条命令 rmtaos rm -rf /var/lib/taos rm -rf /var/log/taos rm -rf /etc/taos2、确保集群中所有主机开放端口 6030-6043/tcp,6060/tcp,…...
Android 12.0无源码apk设置默认启动Launcher的相关属性
1.概述 在12.0的系统产品开发中,对于一些产品的需求,需要将一些无源码app的某个MainActivity作为启动Launcher页面的功能实现,由于没有源码,所以需要 利用PMS的安装解析apk的AndroidManifest.xml的时候,在判断是某个Activity的时候,设置Lancher属性来实现某些功能 2.无源…...
js深拷贝和浅拷贝
👉十分钟学会 前端面试题 js 深拷贝与浅拷贝_前端深拷贝和浅拷贝面试题_Mar-30的博客-CSDN博客 目录 背景: 概念:核心是创建新地址 方法: 浅拷贝: Object.assign() 方法:Object.assign(拷贝的对象&am…...
CANopenNode Master 配置
文章目录 CANopenNode 简介CANopenNode 主栈SDO ClientPDO 通讯参数RPDO 通讯参数RPDO 通信参数设置实例TPDO 通讯参数TPDO 通信参数设置实例 PDO 映射参数RPDO 映射参数设置实例TPDO 映射参数设置实例 CANopenNode 简介 CANopenNode 是一个开源的免费的开源 CANopen 协议栈。…...
HW之轻量级内网资产探测漏洞扫描工具
简介 RGPScan是一款支持弱口令爆破的内网资产探测漏洞扫描工具,集成了Xray与Nuclei的Poc 工具定位 内网资产探测、通用漏洞扫描、弱口令爆破、端口转发、内网穿透、SOCK5 主机[IP&域名]存活检测,支持PING/ICMP模式 端口[IP&域名]服务扫描 网…...
算法练习-2:送外卖
n 个小区排成一列,编号为从 0 到 n-1 。一开始,美团外卖员在第0号小区,目标为位于第 n-1 个小区的配送站。 给定两个整数数列 a[0]~a[n-1] 和 b[0]~b[n-1] ,在每个小区 i 里你有两种选择: 1) 选择a:向前 a[…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...
