
点云学习
Even丶666
记录学习(python,深度学习,点云)
展开
-
点云学习【1.4】Farthest point sample降采样
FPS算法原理:1.输入点云有N个点,从N个点中任意选取一个点P0作为初始点。2.计算所有点到P0的距离,构成N维数组,从中选择距离最大值点P1,更新采样点集合B={P0,P1}。3.计算所有点到集合B中每个点的距离,将最小距离作为该点到集合的距离,选取最大距离作为采样点,更新采样点集合B。4.重复2-3步,直至采样点数量满足要求。如图所示:import numpydef farthest_point_sample(point,npoint): N,D = point.shape xyz原创 2021-03-30 20:45:19 · 449 阅读 · 0 评论 -
点云学习【3.2】聚类算法之谱聚类
谱聚类推导过程较为繁琐,本文不作介绍,重点在于使用python语言实现算法。谱聚类步骤:1.建无向图,获取邻接矩阵W(对称矩阵)2.计算拉普拉斯矩阵L L = D-W,其中D为对角阵,每个元素为W在该行求和3.对L进行特征分解,获取最小的k个特征值对应的特征向量4.将k个特征向量构造成矩阵V5.i=1,…n,yi对应于V的第i行6.利用K-means对yi进行聚类代码:import numpy as npfrom sklearn.cluster import KMeansimport原创 2020-12-17 22:55:24 · 888 阅读 · 0 评论 -
点云学习【3.1】k-means聚类算法
K-means聚类步骤:1.随机选取K个中心点;2.每个数据点分配给K个中心点;3.通过每个类的均值重新计算中心点;4.对步骤2-3进行迭代计算。import numpy as npimport randomclass K_means(): def __init__(self,n_clusters=2,tolerance=0.0001,max_iter=300): #n_clusters是k(聚类数量),tolerance是允许误差,max_iter是迭代次数原创 2020-10-08 16:46:24 · 1372 阅读 · 0 评论 -
点云学习【1.3】voxel grid降采样
import numpy as npimport open3d as o3dfrom pyntcloud import PyntCloudfrom pandas import DataFramedef voxel_filter(point_cloud,leaf_size,mode=='random'): #首先建立voxel grid x_max ,y_max ,z_max = np.max(point_cloud,axis=0) x_min ,y_min ,z_min =原创 2020-09-30 10:17:22 · 595 阅读 · 2 评论 -
点云学习【1.2】法向量计算
1.1中学习了PCA算法,其中最大主成分为投影到某方向后方差最大的方向(信息量最大的方向);而法向量为投影到某方向后,信息量最小的方向,因此需要PCA变换,将点云投影到特征值最小的方向。由于需要PCA算法,因此先把昨天的PCA算法拷贝过来。`import open3d as o3dimport numpy as npfrom pyntcloud import PyntCloudfrom pandas import DataFramedef PCA(data,correlation=False,s原创 2020-09-29 10:19:52 · 2936 阅读 · 6 评论 -
点云学习【1.1】PCA
PCA算法可以降低数据量,且最大程度保持原有信息,因此PCA算法在机器学习算法中得到广泛应用。PCA算法流程:1 计算数据平均值。2 数据归一化(减掉平均值)。3 构造H矩阵。4 SVD分解。5 最大特征值对应特征向量为第一主成分,以此类推。话不多说,直接上代码import open3d as o3dimport numpy as npfrom pyntcloud import PyntCloudfrom pandas import DataFramedef PCA(data,correla原创 2020-09-28 22:45:30 · 766 阅读 · 12 评论