点云第一期作业习题
第一:pca_normal.py
# 實現PCA分析和法向量計算,并加載數據集中的文件進行驗證import open3d as o3d
import os
import numpy as np
from pyntcloud import PyntCloud#pyntcloud是一個用于處理3D點云的Python庫# 功能:計算PCA的函數
# 輸入:
# data:點云,NX3的矩陣
# correlation:區分np的cov和corrcoef,不輸入時默認為False
# sort: 特征值排序,排序是為了其他功能方便使用,不輸入時默認為True
# 輸出:
# eigenvalues:特征值
# eigenvectors:特征向量
def PCA(data, correlation=False, sort=True):#(1)先標準化#計算均值data_mean=np.mean(data,axis=0)#axis =0 是指對列進行求均值, axis=1是指對行求均值pin#歸一化normalize_data=data-data_mean#(2)SVD分解#構造協方差矩陣H=np.dot(normalize_data.T,normalize_data)#SVD分解eigenvectors,eigenvalues,eigenvectoes_t=np.linalg.svd(H)if sort:sort = eigenvalues.argsort()[::-1]eigenvalues = eigenvalues[sort]eigenvectors = eigenvectors[:, sort]
總結
- 上一篇: 三维点云课程第一章:应用
- 下一篇: C++:文件读写