登山第二十三梯:有序点云平面快速分割——35Hz帧速前进

article/2025/9/5 4:40:21

文章目录

一 摘要

二 资源

三 内容


一 摘要

        3D 点云中的实时平面提取对于许多机器人应用至关重要。作者提出了一种新颖的算法,用于在从 Kinect 传感器等设备获得的有组织的点云中实时可靠地检测多个平面。通过在图像空间中将这样的点云均匀地划分为不重叠的点组,我们首先构建了一个图,其节点和边分别代表一组点及其邻域。然后,在此图上执行凝聚分层聚类,以系统地合并属于同一平面的节点,直到平面拟合均方误差超过阈值。最后,使用像素级区域增长来优化提取的平面。实验表明,所提出的算法可以可靠地以超过 35Hz 的帧速检测场景中的所有主要平面,对于 640×480 个点云,比最先进的算法要快得多。

二 资源

文章: Fast plane extraction in organized point clouds using agglomerative hierarchical clustering

代码:GitHub - qq625924821/peac: [ICRA2014] Fast Plane Extraction Using Agglomerative Hierarchical Clustering (AHC)

日期:2014年

三 内容

1)摘要

        3D 点云中的实时平面提取对于许多机器人应用至关重要。作者提出了一种新颖的算法,用于在从 Kinect 传感器等设备获得的有组织的点云中实时可靠地检测多个平面。通过在图像空间中将这样的点云均匀地划分为不重叠的点组,我们首先构建了一个图,其节点和边分别代表一组点及其邻域。然后,在此图上执行凝聚分层聚类,以系统地合并属于同一平面的节点,直到平面拟合均方误差超过阈值。最后,使用像素级区域增长来优化提取的平面。实验表明,所提出的算法可以可靠地以超过 35Hz 的帧速检测场景中的所有主要平面,对于 640×480 个点云,比最先进的算法要快得多。

2)创新点

①提出了一种基于组织点云的凝聚聚类的高效平面提取算法。

②分析了聚类算法的复杂性,并表明它在初始节点的数量上是对数线性的。

③展示了实时性能,其准确性可与最先进的算法相媲美。

3)算法结构

3.1快速平面粗提取

        快速平面提取算法包括三个主要步骤,如上图所示:该算法首先初始化一个图形,然后执行 AHC 以提取粗平面,最后进行细化。如果应用程序只需要对平面区域进行粗略分割,例如,检测点云中的对象,则可以跳过最后的优化步骤,这可能会将 640 × 480 个点的帧速率增加到 50Hz 以上。

        首先,我们澄清我们的符号。F 表示由 M 行和 N 列组成的有序点云的完整帧。B、C 分别表示粗细分割,即 B/C 的每个元素 Bk/Cl 都是一个段——一组 3D 点 pi,j 。同时 Π、Π0 分别是对应于 B、C 的平面方程组。另请注意,图 G 的每个节点 v 都是一组 3D 点,每个无向边 uv 表示图像空间中线段 u、v 的邻域。

A 图初始化

        我们的算法需要非重叠节点初始化,如算法 2 的第 3 行到第 5 行所示。此步骤在图像空间中将点云均匀划分为一组大小为 H × W 的初始节点。这个要求导致我们的算法失去了自动检测平面边界的优势。为了在此限制下使用 AHC 正确分割平面,我们从图中删除以下类型的节点和相应的边缘,如下图中的示例所示:

        1)具有高 MSE 的节点:非平面区域会导致高平面拟合 MSE,我们只需将其删除即可。

        2)包含缺失数据的节点:由于传感器的限制,可能无法正确感知场景的某些区域,从而导致数据丢失(例如,百叶窗后面的玻璃窗)。

        3)包含深度不连续性的节点:这些节点包含两组点,它们位于两个表面上,这两个表面在 3D 中并不接近,但在图像空间中很接近(通常一个表面部分遮挡了另一个表面,例如,显示器遮挡了后面的墙壁)。如果在属于该节点的点上执行主成分分析 (PCA) 以进行平面拟合,则拟合平面将几乎平行于视线方向,因此仍然具有较小的 MSE。将此“异常值”节点与其相邻节点合并将对平面拟合结果产生不良影响,因为在最小二乘法中存在众所周知的过度加权异常值的问题。

        4)两个平面之间边界处的节点:这些节点包含两组在 3D 中彼此靠近但位于两个不同平面上的点(例如,房间的角落),如果它们合并到其中一个平面,将降低平面拟合精度。

算法 2 中的函数 REJECTNODE 和 REJECTEDGE 旨在减少这四种不良初始节点的影响。REJECTNODE 函数从图形中删除前三种类型的坏节点(以及其中的点),而 REJECTEDGE 函数用于减轻第四种坏节点的影响。有趣的是,这种不重叠的 “劣势 ”的好处是避免了每点的正常估计。我们的初始化步骤可以看作是将节点内的所有点视为具有公共平面法线。与其他最先进的方法相比,这是我们速度提高的一个重要原因,这些方法通常花费大量时间对每个点进行正常估计。

B Agglomerative Hierarchical Clustering

        如算法 3 所示,我们算法中的 AHC 与线回归中的 AHC 几乎相同,只是它是在图而不是双链表上做的。我们首先构建一个最小堆数据结构,以有效地找到具有最小平面拟合 MSE 的节点。然后,我们重复查找一个节点 v,该节点当前在图中的所有节点中具有最小平面拟合 MSE,并将其与它的一个相邻节点 u_best 合并,从而产生最小合并 MSE(回想一下,图中的每个节点都是一组点;因此合并的 MSE 是两组 umerge 的并集的平面拟合 MSE)。如果此最小合并 MSE 超过某个预定义的阈值 TMSE(不一定是固定参数),则找到一个平面段 v 并从图中提取;否则,合并后的节点 umerge 将通过 v 和 ubest 之间的边收缩添加回图中。

3.2平面分割结果细化

        对于许多应用程序,在上一节中获得的粗平面分割可能还不够,特别是如果应用程序使用平面的边界或需要更高精度的估计平面方程。因此,我们对粗略分割 B 执行细化。

        粗略分割中预计会出现三种类型的伪影,如上图所示:

        • 锯齿波:通常位于两个连接平面之间的边界处。

        • 未使用的数据点:通常位于遮挡或缺失数据节点的边界处。

        • Over-Segmentation:通常在两个对象的遮挡边界之间

        锯齿伪影会导致估计中包含少量异常值,而未使用的数据点和过度分段会导致使用的异常值较少。所有伪影都会产生不准确的平面边界,并略微降低估计平面方程的精度。

        我们对它们的解决方案在算法 4 中进行了描述。由于锯齿伪影几乎总是在 B 的边界区域观察到,因此每个段边界区域的侵蚀可以有效地消除它们(第 5 行至第 13 行)。然后,从所有新的边界点开始像素级区域增长,将所有未使用的数据点分配给之前提取的最近平面(第 14 行到第 27 行)。在区域增长期间,将为每个段 Bk 发现 4 个连接的邻域,从而形成一个新的图形 G0 。最后,在这个非常小的图形(通常少于 30 个节点)上再次应用 AHC 可以修复过度分割伪影(第 28 行)。

4)实验

A 仿真数据

        在模拟深度图上测试了算法的鲁棒性,该深度图具有 20 个不同级别的均匀分布噪声,幅度为 E = 10l、l = 0、. . . 、20(噪声单位:mm;真实深度范围为 1396mm 至 3704mm)。将噪声添加到深度图后,我们将其转换为有组织的点云并输入到我们的算法中 (W = H = 20,TMSE = 502 )。如下图所示,我们的算法可以可靠地检测 l = 0, . . . , 14 的所有 4 个平面,并在此之后开始过度分割。然而,即使 E = 200 毫米,我们的算法也能够检测到场景中的主要平面。

B Kinect采集实际数据

        为了测量算法的处理速度,在室内场景中收集了 2102 帧 640 × 480 像素的真实 Kinect 数据,部分如上图所示。然后使用 12 种不同的初始节点大小(TNUM = 800,α = 0.02,e= 8mm,TANG 从 z = 500mm 的 15◦ 线性增加到 z = 4000mm 的 90◦)。如下图所示,初始节点大小为 10 × 10,即使经过细化,我们的算法平均只需 27.3 ± 6.9 毫秒即可处理一帧 640×480 像素的 Kinect 数据,实现了超过 35Hz 的帧速率。据我们所知,这比其他最先进的算法要快得多。

C 分割数据集

        使用 SegComp 数据集评估了算法的准确性。对平面场景的 ABW (W = H = 4,TMSE = 1,TANG = 60◦ ,TNUM = 160, α = 0.1) 和感知器 (W = H = 8,TMSE = 2.1,TANG = 45◦ ,TNUM = 240, α = 0.03) 数据集进行了实验。ABW 和 PERCEPTRON 测试数据集的典型分割结果如上图所示。使用 SegComp 提供的评估工具的详细基准测试结果如下表所示。可以看出,该算法在分割精度和平面方向估计方面的性能与最先进的算法相当,特别是考虑到帧速率要高得多

5)结论

        作者提出了一种新颖的有点云快速平面提取算法,在 640 × 480 个点云上实现了超过 35Hz 的帧速率,同时提供了准确的分割。将来,希望将该算法扩展到无组织的点云以及球体和圆柱体等其他基元的快速提取


http://www.hkcw.cn/article/UoMfOuCYGC.shtml

相关文章

【聚焦国产8K全画幅摄像机应用】多图预警!

聚焦国产8K全画幅摄像机应用实战图: 博冠8K全画幅摄像机B1应用于2023中央广播电视总台春晚拍摄现场 博冠8K全画幅摄像机B1应用于2023中央广播电视总台春晚拍摄现场 ​​​​ 博冠8K全画幅摄像机B1拍摄2022北京冬奥会 博冠8K全画幅摄像机B1在某电视台节目制作现场进行…

专题|LSTM-XGBoost,ARMA-LSTM,LDA-LSTM黄金比特币价格混合预测,蔬菜包发放时空协同调配,知乎综艺评论情感时序洞察

全文链接:https://tecdat.cn/?p42305 原文出处:拓端数据部落公众号 分析师:Jingwen Luo,Yuying Liu,Yiyuan Jiang 在数字化浪潮席卷各行各业的当下,数据已成为驱动决策的核心要素。作为数据科学工作者…

Vue 组件 - 指令

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue指令 目录 指令写法 自定义指令 简单封装指令 指令传递字符串 update事件 指令应用 指令实现轮播 指令函数简写 指令函数列表 bind inserted update componentUpdated unbind Vue3指令轮播 nextick 总结 指…

在Mathematica中求解带阻尼的波方程

考察偏微分方程 和初边值条件 这里主要示意一下,这个方程如何用Mathematica来求解以及在使用不同解法的时候,会遇到什么问题。 方法一:不额外附加边界条件 ClearAll[u, x, t, a, b, c, w, n];c 1; n 1; a 1; b 1; w 1;pde {D[u[t, x]…

Linux目录结构与命令基础与ls命令

目录结构 linux的目录结构是一个树形结构,只有一个根目录:/,所有文件都在他下面。 而win有多个根目录,每一个盘符都是一个根目录 在linux系统中,路径的层级关系使用“/”表示。而一般来说,开头的 /表示的…

13 接口自动化-框架封装之 csv 数据驱动封装和日志

文章目录 一、框架封装规则总结二、框架代码简单实现项目框架预览csv_util.py - 处理 csv 数据logger_util.py - 处理日志requests_util.py - 将请求封装在同一个方法中yaml_util.py - 处理 yaml 数据get_token.yml 文件-采用了csv数据驱动get_token.csv 文件get_token_error.c…

1Panel v2 首发体验(alpha)

前言 1Panel v2 也是期待已久了,今天来试试,这是一个 alpha 版本,不代表最终正式版品质🤪。 体验 登录界面 登录页面的变化还是比较大的,不再像 v1 时挂几个大字,在视觉和交互体验上都有显著提升。 新版…

SAR ADC 比较器噪声分析(一)

SAR ADC的比较器是非常重要的模块,需要仔细设计。主要考虑比较器的以下指标: 1)失调电压 2)输入共模范围 3)比较器精度 4)传输延时 5)噪声 6)功耗 这里主要讲一下noise。 上图比较器的噪声分析,详情见本专栏中的《SAR ADC 的噪声考虑》的比较器噪声的相关描述。比较器噪声…

【大模型/MCP】MCP简介

一句话总结 如果你打算让 LLM 像人一样“随手”调用脚本、数据库、搜索引擎或 CI/CD 流水线,而又不想为每个工具分别写 REST 插件或轮询接口,那么把它们包进 MCP 服务器是当前最省心、延迟最低、可复用最高的做法——正因如此 OpenAI、Google DeepMind、…

日常--OBS+mediamtx实现本地RTMP推流环境搭建(详细图文)

文章目录 一.前言二.介绍1.OBS2.mediamtx 三.环境搭建1.安装1.安装mediamtx2.安装OBS 2.配置OBS3.开启推流4.测试拉流 四.总结 一.前言 最近博主更新了一些和实时摄像头内容视觉项目,有好多小伙伴私信我问…

2024 CKA模拟系统制作 | Step-By-Step | 12、创建多容器Pod

目录 免费获取题库配套 CKA_v1.31_模拟系统 一、题目 二、考点分析 1. 多容器 Pod 的理解 2. YAML 配置规范 3. 镜像版本控制 三、考点详细讲解 1. 多容器 Pod 的工作原理 2. 容器端口冲突处理 3. 资源隔离机制 四、实验环境搭建步骤 总结 免费获取题库配套 CKA_v…

江科大UART串口通讯hal库实现

hal库相关库函数 初始化结构体 typedef struct {uint32_t BaudRate; /*波特率设置*/uint32_t WordLength; /*字长设置*/uint32_t StopBits; /*停止位设置 */uint32_t Parity; /*奇偶校验位设置*/uint32…

基于本地知识库的政务问答智能体

1.项目背景: 近年来,国家大力推进 “数字政府”“智慧政务” 建设,《“十四五” 数字经济发展规划》《关于加强数字政府建设的指导意见》等政策文件明确提出,要运用新一代信息技术优化政务服务流程,推动政务服务从 “…

python面向对象

可调用对象的范围包括:用户定义的函数,匿名函数,内置函数和内置方法,类,在类中定义的方法,生成器函数,如果类实现了_call 方法,那么类的实例对象也是可调用对象。 1 变量 1.1 类属性…

纯html,js创建一个类似excel的表格

后台是php,表中数据可编辑,可删除,可提交到数据库 <!DOCTYPE html> <html> <head><meta charset="utf-8"><style>body {font-family: Arial, sans-serif;margin: 20px;background-color: #fff;}.toolbar {margin-bottom: 10px;disp…

【测试】设计测试⽤例方法

设计测试⽤例方法 等价类 依据需求将输入&#xff08;特殊情况下会考虑输出&#xff09;划分为 若⼲个等价类 &#xff0c;从等价类中 选出⼀个测试⽤例 &#xff0c;如果 这个测试⽤例测试通过&#xff0c;则 认为所代表的等价类测试通过 &#xff0c;这样就可以⽤较少的测试…

摩尔信使MThings无法生成机器码的解决方法

在使用摩尔信使MThings的过程中&#xff0c;部分用户&#xff08;Win11操作系统&#xff09;可能会遇到无法生成机器码的问题&#xff0c;这将影响软件的正常授权。机器码是软件授权管理的关键环节&#xff0c;用于确保授权证书与特定设备的绑定。 解决步骤&#xff1a; 1、按 …

设计师如何搭建自己的素材库?

在数字化设计时代&#xff0c;设计资产已成为团队核心竞争力的重要组成部分。无论是UI组件、品牌视觉规范&#xff0c;还是交互原型和历史版本文件&#xff0c;这些资源的高效管理直接影响着设计质量和团队协作效率。然而&#xff0c;许多设计师仍深陷“文件混乱-重复劳动-版本…

AU6815集成音频DSP的2x25W数字型ClaSS D音频功率放大器(替代TAS5805)

1.特性 ● 输出配置 - 立体声 2.0: 2x25W (8Ω,21V,THD N 1%) - 立体声 2.0: 2x23W (6Ω, 18V,THD N 1%) ● 供电电压范围 - PVDD:4.5V-21V - DVDD: 1.8V 或者 3.3V ● 静态功耗 - 31.5mA at PVDD12V,BD - 18.5mA at PVDD12V,1SPW ● 音频性能指标 - Noise: ≤38uVrms - TH…

国产 BIM 软件万翼斗拱的技术突破与现实差距 —— 在创新与迭代中寻找破局之路

万翼斗拱在国产BIM领域迈出重要一步&#xff0c;凭借二三维一体化、参数化建模及AI辅助设计等功能形成差异化竞争力&#xff0c;在住宅设计场景中展现效率优势&#xff0c;但与国际主流软件相比&#xff0c;在功能完整性、性能稳定性和生态成熟度上仍有显著差距&#xff0c;需通…