点云 ransac 平面拟合的地面去除(附open3d python代码)

我们使用一个工件扫描点云数据为例,
分割它的地面部分,只留下工件的扫描点云数据

点云 ransac 平面拟合的地面去除(附open3d python代码)_第1张图片

 


# coding:utf-8
import open3d as o3d

print("->正在加载点云... ")
pcd = o3d.io.read_point_cloud("gongjian1.pcd")
print(pcd)



print("->正在RANSAC平面分割...")
distance_threshold = 8.6    # 内点到平面模型的最大距离
ransac_n = 3                # 用于拟合平面的采样点数
num_iterations = 1000       # 最大迭代次数

# 返回模型系数plane_model和内点索引inliers,并赋值
plane_model, inliers = pcd.segment_plane(distance_threshold, ransac_n, num_iterations)

# 输出平面方程
[a, b, c, d] = plane_model
print(f"Plane equation: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0")

# 平面内点点云
inlier_cloud = pcd.select_by_index(inliers)
inlier_cloud.paint_uniform_color([0, 0, 1.0])
print(inlier_cloud)

# 平面外点点云
outlier_cloud = pcd.selec

你可能感兴趣的:(点云处理代码合集,python,开发语言,numpy,算法)