论文解读 | 基于改进点对特征的点云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[…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...