核心函数介绍
compute_point_cloud_distance
: 提供了计算从源点云到目标点云的距离的方法。即:它计算源点云中的每个点到目标点云中最近点的距离。
在下面的例子中,展示了使用该函数来计算两点云之间的差值。请注意,此方法也可用于计算两点云之间的Chamfer距离。
代码展示
# -*- coding:utf-8 -*-
import numpy as np
import open3d as o3d
# 读取点云
pcd = o3d.io.read_point_cloud("/home/ancy/Desktop/tradition/Open3D/examples/test_data/Crop/fragment.ply")
# 裁剪点云
vol = o3d.visualization.read_selection_polygon_volume(
"/home/ancy/Desktop/tradition/Open3D/examples/test_data/Crop/cropped.json")
chair = vol.crop_point_cloud(pcd)
# 计算源点云中的每个点到目标点云中最近点的距离
dists = pcd.compute_point_cloud_distance(chair)
dists = np.asarray(dists)
# 提取距离大于0.01米的点云
ind = np.where(dists > 0.01)[0]
pcd_without_chair = pcd.select_by_index(ind)
# 点云可视化
o3d.visualization.draw_geometries([pcd_without_chair],
zoom=0.3412,
front=[0.4257, -0.2125, -0.8795],
lookat=[2.6172, 2.0475, 1.532],
up=[-0.0694, -0.9768, 0.2024])