python 点云数据读写、下采样与法线估计(open3D安装)

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×

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值