当前位置: 首页 > news >正文

点云下采样有损压缩

转自本人博客:点云下采样有损压缩

点云下采样是通过一定规则对原点云数据进行再采样,减少点云个数,降低点云稀疏程度,减小点云数据大小。

1. 体素下采样(Voxel Down Sample)

std::shared_ptr<PointCloud> VoxelDownSample (double voxel_size) const;

voxel_size为体素(体积元素)的尺寸大小,体素的尺寸越大,下采样的倍数越大,点云也就越稀疏。

相当于每隔一定的距离采集一个点。

示例:

std::shared_ptr<open3d::geometry::PointCloud> pcd = nullptr;
open3d::io::ReadPointCloud("rabbit.pcd", *pcd);
double voxelSize = 0.05;
pcd = pcd->VoxelDownSample(voxelSize);

2. 均匀下采样(Uniform Down Sample)

std::shared_ptr<PointCloud> UniformDownSample (size_t every_k_points) const;

every_k_points为隔着的点数目,每隔every_k_points个点,保留一个点。

示例:

std::shared_ptr<open3d::geometry::PointCloud> pcd = nullptr;
open3d::io::ReadPointCloud("rabbit.pcd", *pcd);
size_t everyKPoints = 10;
pcd = pcd->UniformDownSample(everyKPoints);

3. 随机下采样(Random Down Sample)

std::shared_ptr<PointCloud> RandomDownSample (double sampling_ratio) const;

sampling_ratio为采样的比率,随机保留点,直至达成指定比率。

示例:

std::shared_ptr<open3d::geometry::PointCloud> pcd = nullptr;
open3d::io::ReadPointCloud("rabbit.pcd", *pcd);
double samplingRatio = 0.2;
pcd = pcd->RandomDownSample(samplingRatio);

4. 最远点下采样(FarthestPoint Down Sample)

std::shared_ptr<PointCloud> FarthestPointDownSample (size_t num_samples) const;

num_samples为采样的点数。

首先随机选择一个点,其次,在剩下点中寻找最远的点,再去再剩下点中找到同时离这两个点最远的点……,以此类推,直到满足采样点个数。

示例:

std::shared_ptr<open3d::geometry::PointCloud> pcd = nullptr;
open3d::io::ReadPointCloud("rabbit.pcd", *pcd);
size_t numSamples = 1000;
pcd = pcd->FarthestPointDownSample(numSamples);
http://www.lryc.cn/news/396154.html

相关文章:

  • AutoHotKey自动热键(六)转义符号
  • 第16章 主成分分析:四个案例及课后习题
  • 股票分析系统设计方案大纲与细节
  • .gitmodules文件
  • STM32 SPI世界:W25Q64 Flash存储器的硬件与软件集成策略
  • 【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验17 开放最短路径优先OSPF
  • ChatGPT对话:python程序模拟操作网页弹出对话框
  • 利用亚马逊云科技云原生Serverless代码托管服务开发OpenAI ChatGPT-4o应用
  • Selenium 切换 frame/iframe
  • VOI(Virtual Operating System Infrastructure,虚拟操作系统基础架构)
  • 迭代器模式(大话设计模式)C/C++版本
  • vue学习day04-计算属性、computed计算属性与methods方法、计算属性完整写法
  • 关于力扣150题目——逆波兰表达式求值Java实现的三种解法
  • FTP与TFTP
  • 【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
  • JAVA预编译简单理解
  • nvm 管理多版本 node
  • C++中的多重继承和虚继承:横向继承、纵向继承和联合继承;虚继承
  • 利用node连接mongodb实现一个小型后端服务系统demo
  • 大数据面试题之数据库(3)
  • 升级之道:精通Conda的自我升级艺术
  • 领导者视角:识别系统问题的信号
  • CentOS7二进制安装和YUM安装mongodb,服务器无法安装5.0以上的 mongodb 数据库报错 Illegal instruction
  • AI的前世今生:从理论起源到未来展望
  • C# list集合元素去重的几种方法
  • WritableStream()写入流,将数字或字符流,写入你需要的地方
  • RK3568平台(opencv篇)opencv处理图像视频
  • 4. kvm存储虚拟化
  • uniapp+vue3嵌入Markdown格式
  • 处理成二维数组对象