三维点云的格网(体素)组织

1、格网(体素)化原理

        点云格网化组织可以分为二维格网化与三维体素,其主要根据不同应用场景进行分类。其中二维格网化主要用于机载LiDAR采集的点云数据,该类数据主要从俯视的角度采集的数据,因此采用二维格网对数据进行组织比较合适,过程类似规则的影像数据,将点投影在XOY平面上。点云体素化(voxel)在车载、地面三维激光上应用较为广泛,因为在三维空间分布离散,且无论投影在任意一个面上都不合理,如XOY不可取,存在大量的重叠点,因此一般采用体素化对其进行组织。

                             

        二维格网                                                            三维体素

       无论是点云格网化处理还是体素化处理,都属于数据的预处理,后续的很多数据处理,如分割、分类等,都是在点云格网化(体素化)基础上进行的,因此有必要理解这两种原理。

1.1二维格网化(机载LiDAR点云)

        首先统计点云数据的X、Y坐标值的最大值与最小值,分别为Xmin、Xmax、Ymin、Ymax。根据划分的格网尺寸L再确定行号格网的总的行号与列号:

行号=ceil(Xmax-Xmin)/L

列号=ceil(Ymax-Ymin)/L

Ceil为向上取整函数,对于每个点P(x,y,z),依据其x、y坐标将该点划入到相应的格网内即可。P点的格网号为:

行号=ceil(x-Xmin)

列号=ceil(y-Ymin)

****需要注意的是,为了防止出现越界,需要将XminXmaxYminYmax适当的向外扩,如

Xmin=Xmin-L

Xmax=Xmax+L

Ymin=Ymin-L

Ymax=Ymax+L

(这些都是些小技巧,不然在后续应用中可能出现内存溢出,或者越界的情况)

1.2 三维体素化(车载、地面激光点云)

        其过程与二维格网类似,只是多了一个Z轴的划分。具体步骤如下:首先统计点云数据的X、Y、Z坐标值的最大值与最小值,分别为Xmin、Xmax、Ymin、Ymax、Zmin、Zmax。根据划分的格网尺寸L再确定行号格网的总的行号、列号、层号:

行号=ceil((Xmax-Xmin)/L)

列号=ceil((Ymax-Ymin)/L)

层号=ceil((Zmax-Zmin)/L)

Ceil为向上取整符号,对于每个点P(x,y,z),依据其x、y、z坐标将该点划入到相应的格网内。P点的行号、列号、层号:

行号=ceil((x-Xmin)/L)

列号=ceil((y-Ymin)/L)

层号=ceil((z-Zmin)/L)

****同样需要注意的是,为了防止出现越界,需要将Xmin、Xmax、Ymin、Ymax、Zmin、Zmax适当的向外扩,如

Xmin=Xmin-L 

Xmax=Xmax+L

Ymin=Ymin-L

Ymax=Ymax+L

Zmin=Zmin-L

 Zmax=Zmax+L

基于C++编写的源码,下载链接如下:

机载点云格网化、车载与地基点云体素化-算法与数据结构文档类资源-CSDN下载

2. 效果如下:

机载点云的二维格网化效果图如下:

较大格网尺度

较小格网尺度

局部放大图

地基点云在不同尺度下的三维体素化结果:

  

需要注意的是,这仅仅对数据进行组织,同一格网内点没有必然的属性,需要按照自己的要求做进一步处理。

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云实验室lab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值