激光点云数据快速构建Delaunay三角网

image-20210318113146748

激光点云快速构建Delaunay三角网python

​ 一般的Delaunay三角网构建算法效率很低,只适合于少量点(大约几千个点),这是因为三维Delaunay三角网如果使用数组来进行存储,存取和计算效率都会比较低,理想的办法是使用合适的三维模型,如kdtree、八叉树等三维模型或者是通过并行处理提高运算速度,scipy库中提供了Delaunay方法调用,可以快速的进行大量三维点Delaunay三角网的构建,然后使用mayavi.mlab进行渲染,效果较好。

使用库文件

pclpy:用于读取.pcd格式的激光点云数据,调用tolist函数返回list格式的点云坐标数据;
mayavi:mayavi的mlab模块提供了方便快捷的绘制三维图函数。只要把数据准备好,通常只需要调用一次mlab的函数就可以看到数据的三维显示效果。非常适合在IPython中交互式地使用。
scipy.spatial:对空间数据存储和组织构建高效的模型,如kdtree,通过并行处理提高三维空间数据的运算速度,
Delaunay:构建Delaunay三角网

完整代码

from scipy.spatial import delaunay_plot_2d  
from scipy.spatial import Delaunay  
import numpy as np  
import pclpy  
from pclpy import pcl  
from mayavi import mlab  
import matplotlib.pyplot as plt  
from mpl_toolkits.mplot3d import Axes3D  
  
# 读  
pc = pclpy.pcl.PointCloud.PointXYZ()  
pcl.io.loadPCDFile('./data/DataSample.pcd', pc)  
  
xyz_points = pc.xyz.tolist()  
xy_points = pc.xyz[:,0:2].tolist()  
  
tri = Delaunay(xy_points)  
mlab.triangular_mesh(pc.x, pc.y, pc.z, tri.simplices)  
mlab.show()  

构建结果

​ 这里我们使用600+w个点进行Delaunay三角网构建,耗时大约为30s,电脑内存为16G,效果如下。

image-20210318113019695

思考总结

​ 三维空间数据的存储、组织与管理直接关系到空间运算的效率和精度,现有的三维可视化不能够很好地展现三维实体在多个层次上的细节特征,这也是三维可视化研究的热点方向。造成这种状况的一个重要原因是二维数据结构向三维数据结构扩展的复杂性,不少学者认为开发三维GIS平台的技术关键和瓶颈可能就在于找到合适的三维数据结构,以实现三维空间数据的便捷存储、展示和分析,因此研究者们对可能的三维数据结构进行了大量的探索,这些三维数据结构大致可以分为基于面的三维数据结构和基于体的三维数据结构。基于面的三维数据结构包括栅格结构、不规则三角网结构、边界表示结构和参数方程式结构,基于面的三维数据结构具有精度高、显示美观和更新便捷的优点,但是由于存储关系数据的困难,导致难以进行三维空间分析;基于体的结构包括3D栅格、八叉树结构、实体结构几何和四面体等结构,其优点是便于表示空间体的整体分布状况,这一存储方式解决了基于面结构中空间操作和空间分析困难的问题,但是在存储空间和计算速度等方面存在着有不足之处。

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小凡爱学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值