Open3d之点云体素下采样

原理

体素下采样通过输入的点云数据创建一个三维体素栅格,然后在每个体素内,用体素中所有点的重心来近似显示体素中其他点,这样该体素内所有点就用一个重心点最终表示,从而将输入点云创建统一下采样的点云。 它常用作点云处理的预处理中。

该算法分为两个步骤:

  • 点被规整地划分到三维体素栅格中。
  • 对每个三维体素栅格内的所有点用其重心点来表示。

代码展示

# -*-coding:utf-8 -*-
import os
import open3d as o3d
import numpy as np

test_data_dir = '/home/pi/PycharmProjects/learn/Open3D/examples/test_data'
point_cloud_file_name = 'fragment.ply'

point_cloud_file_path = os.path.join(test_data_dir, point_cloud_file_name)

print("加载一个格式为ply的点云,并对其进行打印和渲染")
# 读取点云
pcd = o3d.io.read_point_cloud(point_cloud_file_path)
print("使用5厘米的体素下采样点云")
downpcd = pcd.voxel_down_sample(voxel_size=0.05)
o3d.visualization.draw_geometries([downpcd],
                                  zoom=0.3412,
                                  front=[0.4257, -0.2125, -0.8795],
                                  lookat=[2.6172, 2.0475, 1.532],
                                  up=[-0.0694, -0.9768, 0.2024])

效果展示

Open3d之点云体素下采样_第1张图片

你可能感兴趣的:(open3d)