-----------------------体素数据---------------------体素化网格

体素(Voxel)是体积元素(Volume pixel)的简称,是数据位于三维空间内规则网格上的最小单位,体素,其物理意义类似于二维图像像素在三维空间上的推广,是一组均匀分布、位于正交网格中心的立方体的集合。体素不能表示三维空间中的位置信息,即不具有三维坐标。可以通过体素数据在立体空间内的相对位置关系表示场景或物体的三维信息。

场景的体素数据表示

1.首先将点云数据进行体素化

体素化(Voxelization)是利用体素来近似表示场景或物体的空间结构和几何形状的过程。体素化的基本原理是:在输入的点云数据上创建一个三维立体的网格,立体网格是一种微小的三维立方体的集合。然后,在每个三维立方体内,利用立方体内所有点云数据的重心点来近似表示网格内的所有点,网格处理后得到相应的体素云数据。体素云数据可以表示模型的表面几何特征和内部属性信息,并且利用体素数据的相对位置关系还可以表示三维信息。

点云数据是杂乱、无组织结构的,但是通过体素化处理后,在体素空间内存在三
种拓扑结构:6 邻接、18 邻接以及 26 邻接。其中 6 邻接的两个体素具有 6 个公共面,
18 邻接的体素具有 12 条公共边和 6 个公共面,26 邻接体素在此基础上还具有 8 个
公共点。如图 3.3 所示,从左到右依次为 6 邻接、18 邻接以及 26 邻接。

2.体素化后获得体素云数据

体素化处理首先需要建立体素空间,体素空间类似于二维图像模型的像素空间。体素空间的范围可以根据点云数据坐标分别在 X,Y,Z 轴的最大、最小值来确定,然后设定固定的体素分辨率 R,以体素分辨率为基本单位对体素空间下的最大包围盒进行划分,得到体积为 的微小的立方体集合。每个立方体内的中心点或者质心点可以用来表示相应的体素立方体,所有中心点或者质心点形成的数据集即为体素云数据。

--------------------超体素数据------------------------

超体素(Supervoxel)是一种由体素数据组成的集合,是在三维空间内具有一定语义感知信息的原子体积的三维网格的子集,类似于二维图像上的超像素。超体素是根据位置关系或者其他属性的相似性来生成不规则形状的簇,与体素的本质类似,是三维空间内的由体素构成的不规则的几何体。超体素内携带丰富的属性信息,例如具有空间一致性,并且相对于体素数据更加易于理。一个性质良好的超体素应该具有较为规则的几何形状与均匀的体素密度,并且可以很好的依附于边界信息。

场景的超体素数据表示

超体素的获取过程即体素数据的聚类过程,其基本原理是对局部范围内满足相似性约束的体素数据的融合,根据纹理、颜色、法线等相似属性将体素云数据划分为相应的超体素,用于研究体素簇之间的关系,有利于后续的分类和识别工作。这类似于在图像分割处理中,将像素聚类得到超像素,利用超像素的关系来分割、理解图像。目前,超体素已普遍应用于三维数据处理和视频分析等研究领域,如点云分割,目标识别,运动分析和场景重构等。

--------------------

应用在体素滤波、超体聚类等。

1.体素滤波

在使用PCL的处理点云时,很多时候我们不需要有太过高的分辨率,因为点云过多会造成计算变慢,并且更加消耗计算资源,所以我们需要把点云变稀,voxel就是一个很好的方法。

voxel就是三维的pixel,也就是把点云画出网格,然后每个网格内保留一个点就可以了。网格的大小可以自己定义,这就相当于一个downsample(下采样)

我显示出了所有的点,如果某一个格子内没有点就可以不显示了,你也可以把格子调的很密,颜色也可以保留。

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/voxel_grid.h>//Pcl自带的voxel功能pcl::VoxelGrid<pcl::PCLPointCloud2> sor;//pcl的一贯规则,你要使用voxel功能,首先需要创建一个voxel类的一个对象,也就是sor sor.setInputCloud (cloud);//然后输入需要过滤的点云,也就是cloudsor.setLeafSize (0.01f, 0.01f, 0.01f);//然后设置一下叶子大小,也就是resolution(分辨率),也就是这个格子的最小间距,设置的越小则越密集,保留的点越多。三个参数分别是xyzsor.filter (*cloud_filtered);//然后给一个输出的点云用来接收过滤的结果,即cloud_filtered就是变稀疏后的cloud

点云数量很有可能点数减少了十倍,但是形状还保留,基本上没什么太大的影响,不过如果你要做精确的体积估计的话这个肯定是不可以的,因为边缘肯定会变短,但是不那么精确,知道大致形状,知道中心就可以的需求就可以放心大胆的使用这个功能

左右是过滤前后的对比,右边的图然能够看出来是一张桌子上面放了个杯子,但是点明显变稀疏了,能够满足你的要求且不会破坏你的结果那么就可以尝试读入点云就用这个过滤一遍,点云少了后续的处理速度会快的很多。

-----------------------

后续可以基于体素做超体聚类,LCCP等算法。

PCL:点云中的超体素数据相关推荐

  1. PCL中点云的超体素(SuperVoxel)

    各位小伙伴们,有没有发现PCL库中已经集成了太多我们想实现的算法或者功能呢?所以这里组织一下学习小组针对PCL库中实现的算法进行剖析与论文解读,所以希望更多的小伙伴们参与进来,我们一起吃透PCL,欢迎 ...

  2. SuperVoxel:PCL中点云的超体素

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:Voxel Cloud Connectivity Segmentation - Supervox ...

  3. 利用PCL点云下采样实现数据体素化

    利用PCL点云下采样实现数据体素化 PCL PCL(Point Cloud Library) 库集成了针对大体量级别的空间点数据处理所需要的算法和操作,降低了处理相关需求的复杂度,对快速建立点云数据文 ...

  4. 超体素分割——分割块点云单独保存及遗漏点的处理

    根据上一篇博客介绍的超体素分割原理,在PCL中该功能以将其实现,并将其进行可视化.但是存在如下问题:(1)其将所有的块同时显示,对于很多其他应用,比如后续处理需要对每一块点单独进行操作,那么就需要将每 ...

  5. PCL点云处理之体素滤波(八十七)

    PCL点云处理之体素滤波(八十七) 前言 一.概述 二.算法实现 1.代码 2.代码解读 结果 前言 数据的海量性始终是点云处理时需要面临的一个大问题,严重的时间消耗和内存占用影响了点云处理的发展,当 ...

  6. CloudComparePCL 基于超体素的点云分割

    文章目录 一.原理概述 二.实现过程 三.实现效果 参考资料 一.原理概述 一般而言,孤立的点并没有什么意义,只有许多点组合在一起形成一种形状,这样才能对我们有所意义.二维图像处理领域中,很早就出现了 ...

  7. 基于机器学习的自适应超体素分割揭示了人脑中的躯体定位组织

    文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注 导读 除了在中央前回和中央后回的成熟的躯体组织外,目前强有力的证据表明躯体组织在感觉运动网络的其他区域也很明显.这就存在几个实验问题:感觉运 ...

  8. ch04——4.3.4连接两个点云中的字段或数据形成新点云

    ch04--4.3.4连接两个点云中的字段或数据形成新点云 进行连接前要保证两个数据中的字段类型和维度相同,数目一样.如:点云a是n个点的xyz点,点云b是n个点的rgb点,则形成c点云是n个点xyz ...

  9. 连接两个点云中的字段或数据形成新点云以及Opennni Grabber初识

    (1)学习如何连接两个不同点云为一个点云,进行操作前要确保两个数据集中字段的类型相同和维度相等,同时了解如何连接两个不同点云的字段(例如颜色 法线)这种操作的强制约束条件是两个数据集中点的数目必须一样 ...

最新文章

  1. 用小程序·云开发打造功能全面的博客小程序丨实战
  2. 爬虫技巧:在pycharm 下 调试 scrapy项目
  3. ubuntu 更新python2.7 ssl 错误解决
  4. linux进程自动启动,linux 嵌入式 自启动 系统自动登录-自动启动程序或脚本
  5. 读《刘帅:在失望中寻找希望》有感
  6. ZooKeeper 这么牛逼,基本原理你懂吗?
  7. 电磁学——电磁场与电磁波:麦克斯韦方程组
  8. 简简单单做股票读书笔记(1/8)
  9. postman——基础操作——API请求与响应——构造器
  10. win2008服务器系统玩红警,Win10系统玩不了红警2怎么办?
  11. 企业微信品牌私域运营案例合集
  12. Linux防火墙的开启、关闭、重启、查看永久处理防火墙(需重启系统后才能生效)
  13. VL53L0X 底层思路整理(1)
  14. 普通人利用寒假一个月可以学会的四个赚钱技能
  15. linux怎么sftp传文件,如何使用Linux SFTP命令传输文件
  16. mysql函数名称顿号,快速统计一个单元格内有多少个名字,你不会是一个一个数的吧...
  17. 软件测试实战项目,问题答疑
  18. SpringBoot笔记通俗易懂版
  19. GlobalMapper20:10分钟根据CAD、shp等离散高程点生成一份精准边界的地形数据
  20. .for 与.fori区别

热门文章

  1. php连接mysql页面空白_求大神: php注册页面跳转出现空白页
  2. Ubuntu 打开文件 (使用nautilus )
  3. Android 计时器 Chronometer
  4. android 创建 file 文件,文本 并写入内容
  5. android Canvas 最基础知识总结
  6. 玩转Spring Cloud之配置中心(config server config client)
  7. VMware 12.0 在安装的时候出现 microsoft runtime dll
  8. js 打开窗口window.open
  9. HDU 1429 胜利大逃亡(续) (BFS+位压缩)
  10. 数论(一)——素数,GCD,LCM