【Python】GIS及点云处理十讲
文章目录
- 1 初步
- 2 点云变换
- 3 点云配准
- 4 open3d曲面
- 5 滤波
- 6 点云划分和分割
- 7 常用点云文件
- 8 坐标转换
- 9 地图绘制
- 10 重力场
1 初步
Open3d处理点云数据初步:open3d主要用于三维对象绘制,为Python提供了非常友好的接口,加之Intel维护给力,是Python中处理三维对象的首选模块。本文介绍open3d的基本用法,着重讲解点云读取和交互操作等。
2 点云变换
Python点云对象:变换与框线:【PointCloud】是open3d中用于点云处理的类,封装了包括几何变换、数据滤波、聚类分割等一系列实用算法。本文主要讲解open3d中的点云变换函数,以及点云框线的生成方法。
3 点云配准
open3d点云配准:将两个相似的点云匹配在一起的过程即为点云配准。open3d中封装了多种不同核的ICP算法,适用于不同形式的点云配准任务。
4 open3d曲面
open3d曲面初步:最原始的点云只包含了点的位置信息,这些信息可以呈现出一些散点,但并不能还原出物体的样貌。相比之下,曲面更加完美地表现物体,我们平时看到的三维模型,实际上也是通过曲面来实现的。
5 滤波
open3d点云采样和滤波 介绍了点云数据的索引、采样和滤波方法。点云索引通过select_by_index实现,可选择或排除指定点;采样方法包括随机采样、等序采样和体素采样,分别适用于不同需求。点云滤波用于剔除异常点,常见方法有统计滤波和半径滤波,前者基于邻域点的标准差,后者基于邻域球内点数。进一步,曲面滤波利用法线信息,包含均值滤波、拉普拉斯滤波和锐化滤波,分别用于平滑或凸显细节。为解决传统滤波导致的模型变细问题,Taubin滤波通过引入负参数优化了拉普拉斯滤波效果,避免了模型收缩。下图为Taubin滤波的平滑效果
6 点云划分和分割
点云划分与分割介绍了两种点云划分方法,kd树和oc树;以及两种点云分割算法DBSCAN和RANSAC。下图为DBSCAN的分割结果。
7 常用点云文件
常用点云文件详解 介绍了pcd, ply以及las这三种常用的点云数据格式。
8 坐标转换
Python点云坐标转换 介绍了pyproj模块,演示了WGS84和UTM这两个坐标系统之间的转化方法。
9 地图绘制
Python地图绘制模块cartopy入门 Cartopy的灵活性和与Matplotlib的兼容性,使其适用于多种地理数据可视化需求,尤其在气象、地理和环境科学领域广泛应用。
10 重力场
Python绘制地球的重力场基于boule模块,可以获取地球任意经度处的重力分布,此外,ensaio库中提供了诸多数据,地球的重力场数据也在其中。