基于open3d的半径滤波

发布时间:2024年01月24日

概念原理

半径滤波器比较简单粗暴。以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定;

radius_outlier_removal 实现半径滤波算法,移除给定球体中几乎没有邻居的点。需要两个参数:

  • num_points,邻域球内的最少点数,低于该值的点为噪声点
  • radius ,邻域半径的大小

示例代码

# @describe:可视化半径滤波后的结果点云和噪声点云
# @param:cloud,原始点云
# @param:ind,内点索引
def display_inlier_outlier(cloud, ind):
    # 提取滤波后的结果点云
    inlier_cloud = cloud.select_by_index(ind)
    # 提取噪声点云
    outlier_cloud = cloud.select_by_index(ind, invert=True)
    # 结果展示
    print("Showing outliers (red) and inliers (blue): ")
    outlier_cloud.paint_uniform_color([1, 0, 0])
    inlier_cloud.paint_uniform_color([0, 0, 1])
    o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud])

结果图像

文章来源:https://blog.csdn.net/qq_20660115/article/details/135763507
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。