日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

基于三维点云数据的主成分分析方法(PCA)的python实现

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于三维点云数据的主成分分析方法(PCA)的python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主成分分析(PCA)獲取三維點云的坐標軸方向和點云法向量

# 實現PCA分析和法向量計算,并加載數據集中的文件進行驗證import open3d as o3d 
# import os
import numpy as np
from scipy.spatial import KDTree# from pyntcloud import PyntCloud# 功能:計算PCA的函數
# 輸入:
#     data:點云,NX3的矩陣
#     correlation:區分np的cov和corrcoef,不輸入時默認為False
#     sort: 特征值排序,排序是為了其他功能方便使用,不輸入時默認為True
# 輸出:
#     eigenvalues:特征值
#     eigenvectors:特征向量
def PCA(data, correlation=False, sort=True):# normalize 歸一化mean_data = np.mean(data, axis=0)normal_data = data - mean_data# 計算對稱的協方差矩陣H = np.dot(normal_data.T, normal_data)# SVD奇異值分解,得到H矩陣的特征值和特征向量eigenvectors, eigenvalues, _ = np.linalg.svd(H)if sort:sort = eigenvalues.argsort()[::-1]eigenvalues = eigenvalues[sort]eigenvectors = eigenvectors[:, sort]return eigenvalues, eigenvectorsdef main():# 從txt文件獲取點,只對點進行處理filename = "D:\pointcloud_processing\modelnet40_normal_resampled\\airplane\\airplane_0001.txt"points = np.loadtxt(filename, delimiter=',')[:, 0:3] # 導入txt數據到np.array,這里只需導入前3列print('total points number is:', points.shape[0])# 用PCA分析點云主方向w, v = PCA(points) # PCA方法得到對應的特征值和特征向量point_cloud_vector = v[:, 0] #點云主方向對應的向量為最大特征值對應的特征向量print('the main orientation of this pointcloud is: ', point_cloud_vector)# 三個特征向量組成了三個坐標軸axis = o3d.geometry.TriangleMesh.create_coordinate_frame().rotate(v, center=(0, 0, 0))# 循環計算每個點的法向量leafsize = 32   # 切換為暴力搜索的最小數量KDTree_radius = 0.1 # 設置鄰域半徑tree = KDTree(points, leafsize=leafsize) # 構建KDTreeradius_neighbor_idx = tree.query_ball_point(points, KDTree_radius) # 得到每個點的鄰近索引normals = [] # 定義一個空list# -------------尋找法線---------------# 首先尋找鄰域內的點for i in range(len(radius_neighbor_idx)):neighbor_idx = radius_neighbor_idx[i] # 得到第i個點的鄰近點索引,鄰近點包括自己neighbor_data = points[neighbor_idx] # 得到鄰近點,在求鄰近法線時沒必要歸一化,在PCA函數中歸一化就行了eigenvalues, eigenvectors = PCA(neighbor_data) # 對鄰近點做PCA,得到特征值和特征向量normals.append(eigenvectors[:, 2]) # 最小特征值對應的方向就是法線方向# ------------法線查找結束---------------normals = np.array(normals, dtype=np.float64) # 把法線放在了normals中# o3d.geometry.PointCloud,返回了PointCloud類型pc_view = o3d.geometry.PointCloud(points=o3d.utility.Vector3dVector(points))# 向PointCloud對象中添加法線pc_view.normals = o3d.utility.Vector3dVector(normals)# 可視化o3d.visualization.draw_geometries([pc_view, axis], point_show_normal=True)if __name__ == '__main__':main()

總結

以上是生活随笔為你收集整理的基于三维点云数据的主成分分析方法(PCA)的python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 红桃成人网 | 亚洲av日韩精品久久久久久久 | 天天射天天干天天舔 | 色视频在线免费观看 | 成人精品视频在线观看 | 成人中文视频 | 依人成人网 | 成人视屏在线 | 厨房性猛交hd | 精品香蕉一区二区三区 | 女女同性女同一区二区三区九色 | 91在线免费播放 | 成人亚洲黄色 | 不卡av免费| 播放美国生活大片 | 激情视频免费观看 | 狠狠艹狠狠干 | 97人妻精品一区二区三区软件 | 成人免费性视频 | 91中文字幕在线视频 | 爱爱网站视频 | 99热久| av一片| 天天色综| 国产免费又爽又色又粗视频 | 97夜夜 | 丰满秘书被猛烈进入高清播放在 | 一级黄色片免费观看 | 国产999在线观看 | 日日插夜夜爽 | 成人激情视频网站 | 狠狠操网址 | 色婷婷一区二区三区 | 精品久久人人 | 成年人视频在线免费看 | www欧美com| 男女一级特黄 | 97精品人妻一区二区三区香蕉 | av色资源| 欧美亚洲三级 | 亚洲精品一区二区三 | 成人黄色一级 | 色桃网| 亚洲av成人精品一区二区三区在线播放 | 亚洲无圣光 | 精品国产91久久久久久 | 人与动物2免费观看完整版电影高清 | 日韩激情av | 日本大尺度电影免费观看全集中文版 | 国产美女极度色诱视频www | jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | 日韩簧片 | 亚洲奶水xxxx哺乳期 | 国产日韩中文字幕 | 国内精品久久久久久久久久 | 蜜桃视频污在线观看 | 亚洲美女综合网 | 国内爆初菊对白视频 | 欧美福利小视频 | av在线中文| 国产色综合网 | 叶山小百合av一区二区 | 密臀av在线播放 | 精精国产xxxx视频在线播放 | 成人在线国产 | 夜夜狠狠擅视频 | 日本一二三区视频在线 | 久草免费资源 | 日本xxxx人| 国产情侣呻吟对白高潮 | 香蕉日日 | 欧美少妇xxxxx | www.日日夜夜 | 久久久久久久久久网站 | 免费高清欧美大片在线观看 | 国产精品一级视频 | 国产富婆一级全黄大片 | 国产一级做a爰片在线看免费 | 在线国产精品一区 | 美女被草网站 | 亚洲瘦老头同性xxxxx | 丁香六月综合 | www一区 | 粉嫩av一区二区白浆 | 成人在线免费小视频 | 色噜噜狠狠狠综合曰曰曰 | 亚洲高清久久 | 成人国产精品一区二区 | 一区二区三区三区在线 | 在线看污视频 | 免费特级黄色片 | 欧美丰满美乳xxx高潮www | 欧美视频一区在线观看 | 狠狠干综合 | 国产精品爽爽久久久久久 | 九九热视频在线 | 亚洲最大成人网站 | 国产一级特黄毛片 | 日本美女视频 |