本文主要是介绍点云学习【1.4】Farthest point sample降采样,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
FPS算法原理:
1.输入点云有N个点,从N个点中任意选取一个点P0作为初始点。
2.计算所有点到P0的距离,构成N维数组,从中选择距离最大值点P1,更新采样点集合B={P0,P1}。
3.计算所有点到集合B中每个点的距离,将最小距离作为该点到集合的距离,选取最大距离作为采样点,更新采样点集合B。
4.重复2-3步,直至采样点数量满足要求。
如图所示:
import numpy
def farthest_point_sample(point,npoint):N,D = point.shapexyz = point[:,0:3]farthest = np.random.randint(0,N)centroids = np.zeros((npoint,))dist = np.ones((N,)) * 1e10for i in range(npoint):centroids[i] = farthestcentroid = xyz[farthest,:]dist = np.sum((xyz-centroid)**2,-1)mask = dist < distancedistance[mask] = dist[mask]farthest = np.argmax(distance,-1)point = point[centroids.astype(np.int32)]return point
这篇关于点云学习【1.4】Farthest point sample降采样的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!