计算点相对于参考点云的距离

时间:2021-04-19 19:04:40

标签: python point-cloud-library point-clouds

点云到点云的距离可以简单地使用最近邻距离计算。问题是最近的邻居不一定是由云表示的表面上的实际最近点。特别是在我们的例子中:参考云的密度很低。在这种情况下,使用了插值技术(伪代码):

from scipy import interpolate
import numpy as np

ref_point_cloud = np.load("ref_point_cloud.npy").item() # Grid
f = interpolate.interp2d(ref_point_cloud['x'], ref_point_cloud['y'], ref_point_cloud['z'], kind='linear', copy=False, bounds_error=True)

#### Read dense point cloud (point_cloud_dense) code here ####

for point in point_cloud_dense:
    distance = abs(f(point(x), point(y)) - ref_point_cloud['z'])

插值似乎是一种耗时的技术,但它确实有效。是否有更省时的技术来计算点相对于参考点云的距离?

最终目标:使用仅包含地面点的参考点云,从密集的 MLS 点云中移除地面点。距离阈值将决定一个点是否属于地面。

参考: https://www.cloudcompare.org/doc/wiki/index.php?title=Cloud-to-Cloud_Distance https://pointclouds.org/documentation/tutorials/kdtree_search.html

enter image description here

1 个答案:

答案 0 :(得分:0)

你可以得到 k 个最近的邻居,在它们上面安装一个平面并计算点到平面的距离。