1、背景介绍
在以往的博客中,介绍过利用格网统计平面点云面积(具体参考博客:详解基于格网法统计平面点云面积_点云格网法计算xy投影面积-CSDN博客),其实点云格网化可以做其他内容,如边缘检测、格网关系拓扑构建等。为此,本博客详细介绍,将格网过程进行可视化,即格网覆盖所有点云进行可视化、包含点云的格网进行可视化,让点云数据处理过程,更加直观明了。效果如下图所示。
覆盖点云的所有格网 | 只包含点云的格网 |
2、原理介绍
2.1 点云格网行列号计算
首先统计点云数据的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)
****需要注意的是,为了防止出现越界,需要将Xmin、Xmax、Ymin、Ymax适当的向外扩,如
Xmin=Xmin-L
Xmax=Xmax+L
Ymin=Ymin-L
Ymax=Ymax+L
所有点处理完后,每个格网内包含的点个数不一致,有的格网部包含点,有点包含若干点。
2.2 格网可视化
每个格网可以看成一个正方形,因此格网可视化可以看成将这些正方形进行可视化,具体而言,根据格网尺寸L,点云x、y的最小值Xmin、Ymin计算出正方形的四个顶点,便可完成正方形可视化。
3、测试
本程序基于PCL、C++进行编写,文件包含内容如下:
3.1所有格网可视化
所有格网可视化,即将覆盖点云的最小外包矩形,均匀划分成边长为L的若干正方形,效果如下,其中对于三角形而言,不包含点的格网也进行了可视化。属于同一格网内的点,颜色被标记为相同颜色,且点云颜色间划分,刚好与正方形边界重合。
3.2 部分格网可视化
部分格网可视化,是只将包含点的格网进行可视化,空的格网部进行可视化,效果如下所示。可以看到,每个格网内都包含了点,且属于同一格网内的点,颜色相同,表明这些点位于同一格网内。