點雲學習 1 1 PCA

2021-10-09 21:13:03 字數 2206 閱讀 9158

pca演算法可以降低資料量,且最大程度保持原有資訊,因此pca演算法在機器學習演算法中得到廣泛應用。(pca證明詳見「機器學習」板塊中的「一、資料清洗」)

pca演算法流程:1 計算資料平均值。2 資料歸一化(減掉平均值)。3 構造h矩陣。4 svd分解。5 最大特徵值對應特徵向量為第一主成分,以此類推。

話不多說,直接上**

import open3d as o3d

import numpy as np

from pyntcloud import pyntcloud

from pandas import dataframe

defpca

(data,correlation=

false

,sort=

true):

data_mean = np.mean(data,axis=0)

data_normalize = data - data_mean

h = np.dot(data_normalize.t,data_normalize)

eigenvectors,eigenvalues,eigenvectors_t=np.linalg.svd(h)

if sort:

sort = eigenvalues.argsort()[

::-1

] eigenvalues = eigenvalues[sort]

eigenvectors = eigenvectors[

:,sort]

return eigenvectors , eigenvalues

defmain()

:#建立陣列**資料 讀取txt文件

raw_point_cloud_matrix = np.genfromtxt(

r"f:\\point cloud\\三維點雲課程\\3d資料集\\modelnet40_normal_resampled\\airplane\\airplane_0002.txt"

, delimiter=

",")

#可以理解為建立**,類似excel,且只需要前三列資料(x,y,z)

raw_point_cloud=dataframe(raw_point_cloud_matrix[:,

0:3]

) raw_point_cloud.columns =

['x'

,'y'

,'z'

]#將資料轉化為open3d可以識別的格式

point_cloud_pynt = pyntcloud(raw_point_cloud)

#從點雲中獲取點

points = point_cloud_pynt.points

print

("total points number is :"points.shape[0]

)#使用pca分析點雲主方向

w,v = pca(points)

#提取前兩個主分量

點雲學習 PCA演算法實現與法向量估計

最近報了個點雲學習的網課,前段時間因為各種問題,落下了很多課程,今天開始要好好搞起來了 python真的有點難,之前很少用,也藉著這次課程好好學習一下python 雖然pcl一些現成的庫裡面封裝了pca,但是自己寫出來,雖然是照著別人抄的,但是一點一點搞懂,也是有成就感的 import open3d...

利用Eigen庫,PCA構建點雲法向量

疫情在家,想做科研,可是資料都在學校電腦裡面。只能看看能不能回想起什麼寫點什麼。這次主要是想把提取出的點雲patch單獨進行點雲法向量的計算,因為已經構成patch,則不需使用knn或者設定鄰域半徑。接下來手撕 pca 來構建點雲法向量。1 define crt secure no warnings...

3D 24 PCA點雲法向量估計

點雲法向量的估計在很多場景都會用到,比如icp配準,以及曲面重建。基於pca的點雲法向量估計,其實是從最小二乘法推導出來的。假設我們要估計某一點的法向量,我們需要通過利用該點的近鄰點估計出乙個平面,然後我們就能計算出該點的法向量。或者可以這麼說,通過最小化乙個目標函式 要求的引數為法向量 使得該點與...