基于PCA的点云的形状参数获取中计算方法:从去除均值的点c=1ZN1.计算“协方差矩阵(pn-p)(pn-p)云坐标计算得到P-AZN力2.求出矩阵C的3个特征值(CVi=MiViCV2=入2V2CV3=入gV3三个特征值的几何意义特征值大小和椭球体的轴长对应(假设特征向量长度归一化了)特征向量对应了轴的方向
基于PCA的点云的形状参数获取
基于PCA的点云的形状参数获取C=ZN(pn-p)(pn-p))pc_w=pcnn-np.mean(pcnn,axis=0)Pn-pM=np.dot(pc_w.T,pc_w)PuyiUzE,F=np.linalg.eig(M)#E:特征值,F:特征向量idx=np.argsort(E)uz=F[:,idx[o]].ravel()#法向量方向(对应最小特征值)ux=F[:,idx[1]l.ravel()#平面方向×(对应次小特征值)CVI=AVIuy=F[:,idx[2]]1.ravel()#平面方向y(对应最大特征值)CV2=入2V2CV3=AgV3注意:np.linalg.eig(*)输出的特征向量长度已经归一化为1了
基于PCA的点云的形状参数获取
点云形状拟合直线拟合(PCA)参数模型直线上每个点p满足方程:p=dt+m直线方向向量mde几何意义m直线经m0过的1点m1.计算点云坐标均值:P==ZN=1Pn,他就是:m=p2.计算矩阵:C=-EN=1(pn-P)(pn-P)3.求出C的最大特征值对应的特征向量,他就是:d·两点不就确定一直线了吗?·考虑点云数据的位置误差和噪声
点云形状拟合——直线拟合(PCA)
点云形状拟合直线拟合(PCA)直线方程:p=dt+m37#计算直线模型参数:p=dt+38#返回39#d方向33388899940Am直线上一点41def line det pc(pc):42#直线上一点(点云中心)m=np.mean(pc,axis=043#去均值pco=pc-m44#协方差阵C=np.dot(pco.T.pco)201510-0.5000.52015:2.045E,V=np.linalg.eig(c#E:特征值,V:特征向量46#排序idx=np.argmax(E)47d=v[:,idx].ravel()#最大特征值(对应直线方向)48return d,m
点云形状拟合——直线拟合(PCA)