在可用的KD树中搜索空间中点的近邻,同时使用混合搜索技术以提高搜索效率。
search_hybrid_vector_3d(points: open3d.utility.Vector3dVector,
radius: float,
max_nn: int,
plane_center: Optional[ndarray] = None,
plane_normal: Optional[ndarray] = None,
plane_radius: Optional[float] = None,
triangles: Optional[ndarray] = None,
tetras: Optional[ndarray] = None) -> Tuple[ndarray, ndarray]
points
:包含要搜索近邻的点的Vector3dVector。radius
:搜索半径,确定要搜索的点。max_nn
:返回点的最大数量。plane_center
:可选平面的中心,在此平面上搜索点的近邻。 默认值为完整空间。plane_normal
:平面法线,用于定位plane_center,如果指定的话。默认值为零向量。plane_radius
:可选的平面半径,搜索距离radius
范围内的点。 默认值为None
(使用radius
搜索相同半径的点)。triangles
:三角形数组,用于控制搜索范围。 points
将限制在这些三角形内进行搜索。默认值为 None
(搜索完整空间)。tetras
:四面体数组,用于限制搜索范围。 points
将被限制在这些四面体内进行搜索。默认值为 None
(搜索完整空间)。返回两个ndarray,第一个包含近邻点的索引,第二个包含对应点的距离。
import open3d as o3d
import numpy as np
pcd = o3d.io.read_point_cloud("cloud.pcd")
points = np.asarray(pcd.points)
kd_tree = o3d.geometry.KDTreeFlann(points)
[_, idx] = kd_tree.search_hybrid_vector_3d(pcd.points[0], 8.0, 500)
ValueError
:如果给定的半径为负数,则抛出此异常。