Open3d(九)——KDTree

亲测代码程序可运行使用,open3d版本0.13.0。

open3d数据资源下载:GitHub - Cobotic/Open3D: Open3D: A Modern Library for 3D Data Processing

代码执行功能有:从点云中构建KDTree、寻找邻域点、可视化出来,详情请见代码。

'''
Author: dongcidaci
Date: 2021-09-13 09:08:53
LastEditTime: 2021-09-13 09:23:22
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \open3d_code\09_KDTree.py
'''
import open3d as o3d
import numpy as np

#Open3d使用FLANN构建KDTree以便进行快速最近邻检索。

#从点云中建立KDTree
print("Testing kdtree in open3d ...")
print("Load a point cloud and paint it gray.")
pcd = o3d.io.read_point_cloud("test_data/Feature/cloud_bin_0.pcd")
pcd.paint_uniform_color([0.5, 0.5, 0.5])
pcd_tree = o3d.geometry.KDTreeFlann(pcd)

#寻找邻域点
#我们选择了1500个点作为锚点(anchor point),并将其涂为红色。
print("Paint the 1500th point red.")
pcd.colors[1500] = [1, 0, 0]
#使用 search_radius_vector_3d
#我们能够使用 search_radius_vector_3d 去查询所有的和锚点距离小于给定半径的点,将其涂成绿色。
print("Find its neighbors with distance less than 0.2, paint green.")
[k, idx, _] = pcd_tree.search_radius_vector_3d(pcd.points[1500], 0.2)
np.asarray(pcd.colors)[idx[1:], :] = [0, 1, 0]

print("Visualize the point cloud.")
o3d.visualization.draw_geometries([pcd])
#注意:除了KNN搜索(search_knn_vector_3d)和RNN搜索(search_radius_vector_3d)以外,Open3d还提供了混合搜索函数(search_hybrid_vector_3d)。
#它最多返回K个和锚点距离小于给定半径的最邻近点。这个函数结合了KNN和RNN的搜索条件,在某些文献中也被称作RKNN搜索。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值