1.点云库opend3d的安装
Anaconda(python3.7):
链接:https://pan.baidu.com/s/1w7ZoQtJKmoE02e9csEAxeA
提取码:j4ee
安装open3d:
pip install open3d-python
or
pip install open3d
上述两种安装方式得到的open3d版本不同,有些函数有很大不同。尤其是在点云采样和法线计算时:
pip install open3d-python:
o3d.geometry.uniform_down_sample(pcd, value)
pcd_new = o3d.geometry.voxel_down_sample(pcd, voxel_size)
法线估计暂未找到解决办法
pip install open3d:
pcd.uniform_down_sample(value)
pcd.voxel_down_sample(value)
downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
2. 数据的读写
open3d 支持点云、mesh、图片数据的读写。
2.1 点云数据的读写,如.xyz .xyzn .xyzrgb .pts .ply .pcd 格式文件:
pcd = o3d.io.read_point_cloud("xxx.ply")
o3d.io.write_point_cloud("xxx.pcd",pcd)
2.2 mesh 数据的读写,如.ply .stl .obj .off .gltf 格式文件:
mesh = o3d.io.read_triangle_mesh("xxx.ply")
o3d.io.write_triangle_mesh("xxx.ply", mesh)
# obj顶点显示
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(mesh.vertices)
### 三角面片法向量
mesh.compute_vertex_normals()
print(np.asarray(mesh.triangle_normals))# 打印法线信息
2.3 图片数据的读写:
img = o3d.io.read_image("xxx.jpg")
o3d.io.write_image("xxx.jpg", img)
也可以先读成numpy,然后转换成pcd
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(numpyPointList)
3. 数据显示
o3d.visualization.draw_geometries([pcd],width=910,height=540)
4. 点云采样:
均匀下采样:通过收集每第n个点来对点云进行下采样。最远点采样FPS。
体素下采样:把点云分配在三维的网格中,每个小体素包含了若干个点,取中心点或离中心点最近的点为采样点。
曲率下采样:云曲率越大的地方,采样点个数越多。
曲面均匀采样:从三角网格曲面数据均匀采样得到点云。
泊松磁盘采样:也是对mesh 进行采样得到点云。
解释看:https://zhuanlan.zhihu.com/p/353761080
UniformSampling (10): FPS(2048*7):相比VoxelSampling: ,非常耗时
VoxelSampling(0.5): CurvatureSampling:
UniformSampling_of_Surfaces(2048*7): PoissonDiskSampling(2048*7):
5. 顶点法线估计(Vertex normal estimation)
downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
o3d.visualization.draw_geometries([downpcd], window_name='Open3D downSample Normals', width=1920, height=1080, left=50, top=50, point_show_normal=True, mesh_show_wireframe=False, mesh_show_back_face=False)
VoxelSampling(0.5): PoissonDiskSampling(2048):
参考:
python版本的点云数据处理库:https://www.jianshu.com/p/c4e065a33da5
Enable GingerCannot connect to Ginger Check your internet connection
or reload the browserDisable in this text fieldRephraseRephrase current sentence99+Edit in Ginger×