Cloudini 点云压缩库 ROS PCL 入门教程

article/2025/6/17 10:41:46

系列文章目录


前言

        Cloudini 是一个点云压缩库。

        它的重点是速度,但仍能达到很好的压缩比。

        其主要用途如下

  • 改进包含点云数据的数据集的存储(一个显著的例子就是 rosbags)。
  • 降低在网络上串流点云数据时所使用的带宽。

        它可与 PCL 和 ROS 无缝协作,但如果需要,主库也可独立编译和使用。

 


一、预期结果

        压缩率很难预测,因为它取决于原始数据的编码方式。

        例如,ROS 的点云信息效率极低,因为它们在信息中包含了一些 “填充”,在极端情况下,填充可能高达 50%。

        (是的,你没有听错,10 Gb 的数据包中几乎有 50% 是无用的填充)。

        不过,总的来说,你可以期待比 ZTD 或 LZ4 单独压缩更好、编码/解码更快。

        这是两个使用激光雷达真实数据的随机例子。

  • 通道: XYZ、强度,无填充
      [LZ4 only]      ratio: 0.77 time (usec): 2165[ZSTD only]     ratio: 0.68 time (usec): 2967[Cloudini-LZ4]  ratio: 0.56 time (usec): 1254[Cloudini-ZSTD] ratio: 0.51 time (usec): 1576
  • 通道: XYZ、强度、环(int16)、时间戳(双),带填充
      [LZ4 only]      ratio: 0.31 time (usec): 2866[ZSTD only]     ratio: 0.24 time (usec): 3423[Cloudini-LZ4]  ratio: 0.16 time (usec): 2210[Cloudini-ZSTD] ratio: 0.14 time (usec): 2758

        如果您是 ROS 用户,可以在任何包含 sensor_msgs::msg::PointCloud2 主题的 rosbag 上运行应用程序 rosbag_benchmark,亲自测试压缩率和速度。

二、工作原理

        该算法包含两个步骤:

  1. 逐个通道对点云进行编码。
  2. 使用 LZ4 或 ZSTD 压缩。

        浮点通道(通常是 X、Y、Z 通道)的编码是有损的,而 RGBA 和整数通道的编码是无损的。

        现在,我知道当你读到 “有损 ”这个词时,你可能会想到颗粒状的 JPEGS 图像。其实不然。

        编码器使用用户提供的分辨率进行量化。

        典型激光雷达的精度/噪声约为 +/- 2 厘米。因此,使用 1 毫米的分辨率(+/- 0.5 毫米的最大量化误差)通常是非常保守的选择。

        但是,如果您真的很偏执,决定使用 100 微米的分辨率,您仍然可以获得极佳的压缩比!

        还需要注意的是,这种两步压缩策略会产生负开销,也就是说,它实际上比单独使用 LZ4 或 ZSTD 更快。

三、ROS 专用实用程序

3.1 point_cloud_transport plugins

        请参阅 point_cloud_transport 插件,了解其使用方法。

3.2 cloudini_rosbag_converter

        这是一个命令行工具,在给定一个 rosbag(仅限于 MCAP 格式)后,可将所有 sensor_msgs/msg/PointCloud2 主题转换为压缩的 point_cloud_interfaces/msg/CompressedPointCloud2 主题,反之亦然。

        编码/解码速度比通用压缩算法更快,在 1 毫米分辨率下可实现更好的压缩比。

        有趣的是,它可以在系统未安装 ROS 的情况下编译!

        使用示例:往返压缩/解压缩;

# Use option -c for compression
cloudini_rosbag_converter -f original_rosbag.mcap -o compressed_rosbag.mcap -c# Use option -d for decompression
cloudini_rosbag_converter -f compressed_rosbag.mcap -o restored_rosbag.mcap -d

请注意,“restored_rosbag.mcap ”可能比原始文件小,因为 MCAP 提供的基于分块的 ZSTD 压缩功能已启用。

四、常见问题

4.1 与 Draco 相比,它的性能如何?

        Google Draco 有两种主要的编码方式: SEQUENTIAL 和 KD_TREE。

        后者可以达到很好的压缩率,但速度非常慢,而且不能保留点云中点的原始顺序。

        与 Draco 的顺序模式相比,Cloudini 可实现大致相同的压缩率,但在我的基准测试中(目前有限),Cloudini 的速度要快得多。

4.2 解码器需要知道使用的是 LZ4 还是 ZSTD 吗?

        不需要,该信息存储在压缩数据的头部,解码器会自动选择正确的库。


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

相关文章

吉林第三届全国龙舟邀请赛(大安站)激情开赛

龙舟竞渡处,瑞气满湖光。5月31日,金蛇献瑞龙舞九州2025年全国龙舟大联动-中国吉林第三届全国龙舟邀请赛(大安站)“嫩江湾杯”白城市全民健身龙舟赛在吉林大安嫩江湾国家5A级旅游区玉龙湖拉开帷幕。 上午9时,伴随着激昂的音乐,活力四射的青春舞…

【NLP 78、手搓Transformer模型结构及实战】

你以为走不出的淤泥,也迟早会云淡风轻 —— 25.5.31 引言 ——《Attention is all you need》 《Attention is all you need》这篇论文可以说是自然语言处理领域的一座里程碑,它提出的 Transformer 结构带来了一场技术革命。 研究背景与目标 在 Transfo…

【深度学习】14. DL在CV中的应用章:目标检测: R-CNN, Fast R-CNN, Faster R-CNN, MASK R-CNN

深度学习在计算机视觉中的应用介绍 深度卷积神经网络(Deep convolutional neural network, DCNN)是将深度学习引入计算机视觉发展的关键概念。通过模仿生物神经系统,深度神经网络可以提供前所未有的能力来解释复杂的数据模式&…

性能优化 - 理论篇:CPU、内存、I/O诊断手段

文章目录 Pre引言1. CPU 性能瓶颈1.1 top 命令 —— 多维度 CPU 使用率指标1.2 负载(load)——任务排队情况1.3 vmstat 命令 —— CPU 繁忙与等待 2. 内存性能瓶颈2.1 操作系统层面的内存分布2.2 top 命令 —— VIRT / RES / SHR 三个关键列2.3 CPU 缓存…

javaweb-maven以及http协议

1.maven坐标: 坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置; 2.坐标的组成: groupId:定义当前项目隶书的组织名称; artifactId:定义当前maven项目名称 version:定义项目版本 3.依…

Qq空间照片视频批量下载工具

软件介绍 本文介绍的软件是QQ空间相册批量下载器,专门用于批量下载QQ空间中的照片和视频。 软件背景与需求 作为80、90后一代的集体回忆,QQ空间承载了许多人的青春记忆。然而随着时间推移和设备更新,空间中的照片视频画质逐渐模糊。同时&a…

AI Agent智能体:底层逻辑、原理与大模型关系深度解析·优雅草卓伊凡

AI Agent智能体:底层逻辑、原理与大模型关系深度解析优雅草卓伊凡 一、AI Agent的底层架构与核心原理 1.1 AI Agent的基本构成要素 AI Agent(人工智能代理)是一种能够感知环境、自主决策并执行行动的智能系统。其核心架构包含以下关键组件…

【GESP真题解析】第 19 集 GESP 二级 2024 年 12 月编程题 2:数位和

大家好,我是莫小特。 这篇文章给大家分享 GESP 二级 2024 年 12 月编程题第 2 题:数位和。 题目链接 洛谷链接:B4065 数位和 一、完成输入 根据输入格式的描述,输入包含一个正整数 n,数据范围: 1 ≤ n ≤ 10 5 1\le n \le 10^5 1≤n≤105,用 int 类型最合适。 int n…

Python趣学篇:交互式词云生成器(jieba + Tkinter + WordCloud等)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、为什么要做词云?让文字"活"起来!二、核心…

lstm 长短期记忆 视频截图 kaggle示例

【官方双语】LSTM(长短期记忆神经网络)最简单清晰的解释来了!_哔哩哔哩_bilibili . [short,input]*[2.7,1.63]b5.95 换参数和激活函数 tan激活函数输出带正负符号的百分比 tanx公式长这样? 潜在短期记忆 前几天都是乱预测&#xf…

GD32F103系列工程模版创建记录

准备条件: 1:首先需要下载GD32F103的官方库 2:GD32F103的软件包 3:KEIL5软件 4:单片机GD32F103C8T6 本文已经默认KEIL5已将安装好GD32F103的软件包了 步骤一 基本模版创建 1 打开KEIL5软件,新建工程&am…

火绒 6.0 全家桶合集 - 绿色单文件提取版 (垃圾清理/右键管理/弹窗拦截等)

软件介绍 作为互联网冲浪选手,想必火绒是绝大多数网友电脑必备软件之一,今天给大家带来的是我自己用了很久的版本。 软件特点 免费、功能还不错,解压就可以用 软件使用 本次火绒6.0小工具独立版,一共提取了10种小工具&#xf…

守护生命之光:进行性核上性麻痹的全方位健康护理指南

进行性核上性麻痹(PSP)是一种罕见的神经退行性疾病,主要影响患者的运动、平衡及吞咽等功能。科学的健康护理能有效延缓病情发展,提升患者生活质量,具体可从以下方面开展。 在日常生活护理中,安全防护至关重…

聊一下AI编程领域的最新进展

引子 最近,我收听了多个 AI 编程相关的播客,从中捕捉到了一些显著趋势。同时,我还深入研读了 Cursor、Windsurf、Trae 等相关创始人的访谈,广泛涉猎了 AI 编程领域的大量信息,并进行了深入的反思与总结。在此&#xf…

【Doris基础】Doris中的Replica详解:Replica原理、架构

目录 1 Replica基础概念 1.1 什么是Replica 1.2 Doris中的副本类型 2 Doris副本架构设计 2.1 副本分布机制 2.2 副本一致性模型 3 副本生命周期管理 3.1 副本创建流程 3.2 副本恢复机制 4 副本读写流程详解 4.1 写入流程与副本同步 4.2 查询流程与副本选择 5 副本…

老主板焕新生-技嘉B250M-DS3H开Above 4G(G4560+外置核显DG1)

DG1显卡 Intel DG1显卡是一款基于Xe-LP架构的入门级独立显卡,以下是其优势和特点,以及对于老主板(10代CPU以前)的优势: 优势和特点: 视频编解码能力强:DG1显卡支持多种视频格式的编解码,包括H.…

4.6 linux内核启动分析

1. Linux内核源码目录结构 目录名称作用arch包含了不同架构相关的代码block块设备相关的源代码crypto加密算法相关的源代码drivers包含了系统中设备驱动的源代码firmware一些固件的源代码fs系统支持的文件系统相关的源代码include内核共用的头文件init内核启动的源代码ipc进程…

Oracle中EXISTS NOT EXISTS的使用

目录 1.IN与EXISTS EXISTS用法总结 2.NOT IN与NOT EXISTS 3.not in 中 null的用法 4.EXISTS和IN的区别 (面试常问) 1.IN与EXISTS 示例:在 DEPT 表中找出在 EMP 表中存在的部门编号; 方法一:使用in select DEPTNO from DEPT where D…

Lyra学习笔记 Experience流程梳理

目录 前言1 创建2 加载3 Deactivate4 总结与图示 前言 这篇主要将视角放在Experience的流程,所以不会涉及一些更深的东西 之后ULyraExperienceManagerComponent简称为EMC 1 创建 完事开头难,首先找到了管理Experience的组件,那么它的初始化…

一文读懂Automotive SPICE

一、过程参考模型 以下过程组被组织成三个过程类别:主要生命周期过程(Primary Lifecycle Process)、组织生命周期过程(Organization Lifecycle Processes)和支持生命周期过程(Supporting Lifecycle Process)。 1.1、主要生命周期过程类别 主要生命周期过程类别包含可…