日韩性视频-久久久蜜桃-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实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 天天艹天天爽 | 五十路六十路七十路熟婆 | 亚洲午夜视频在线 | 日本一区二区三区四区视频 | 光棍影院手机版在线观看免费 | 中国黄色三级 | 黑人黄色一级片 | 久久牛牛 | 91第一页| 日韩h视频 | 波多av | 窝窝在线视频 | 国产精品9 | 丁香婷婷色 | 国产自偷自拍 | 天天草天天爽 | 99热6这里只有精品 三级av在线免费观看 | 朋友人妻少妇精品系列 | 四虎成人av| 无毛av| 久久久久在线视频 | 国产在线播 | 色.www| 调教少妇视频 | аⅴ资源天堂资源库在线 | 亚洲人视频 | 国产精品乱子伦 | 亚洲精品国产综合 | 三级av在线免费观看 | 欧美激情小视频 | 在线精品福利 | 国产精品欧美一区二区 | 99久久久无码国产精品免费蜜柚 | 国产精品一区二区自拍 | 午夜日韩福利 | 丰满少妇一级片 | 欧美一区二区免费在线观看 | 天天操天天干天天干 | 精品亚洲一区二区三区四区五区高 | 欧美 日韩 国产 成人 在线观看 | 色啦啦视频 | 奇米91| 欧美做受69| 18岁禁黄网站 | 国产精品99久久久 | 精品久久久久久国产 | 国产一级片久久 | 亚洲综合成人在线 | 欧美六区 | 中文字幕av第一页 | 婷婷俺也去 | 欧美在线不卡视频 | www.国产视频.com | av在线不卡免费看 | 日韩欧美中文字幕一区二区 | 国产一级淫片免费 | 91免费视频国产 | 国产精彩视频一区二区 | 青青青国产视频 | 日本女v片 | 中文字幕一区二区三区视频 | 人人人爽 | 特级西西444www大精品视频免费看 | jlzzjlzz亚洲日本少妇 | 国产精品欧美久久久久天天影视 | 亚洲国产黄色av | 日韩精品在线视频免费观看 | 亚洲夜夜夜 | 99精品视频国产 | 亚洲AV无码久久精品浪潮 | 国产一区二区三区视频 | 久久精品国产视频 | 91视频免费观看网站 | 波多野结衣一区二 | 1000部国产精品成人观看 | 国产自产在线视频 | 黄网www| 亚洲av综合一区 | 校园春色 亚洲色图 | 久久无码人妻丰满熟妇区毛片 | 欧美在线日韩在线 | 性色一区二区 | 老司机亚洲精品 | 欧美一区二区影院 | jav中文字幕 | 一级色视频 | 秋霞免费av | 日本高清视频一区二区三区 | 国产一级一区 | 国产成人精品一区二区三区 | 国产精品手机在线观看 | 国产中文字幕精品 | 国色综合 | 老熟妇午夜毛片一区二区三区 | 香蕉久久精品日日躁夜夜躁 | 国产精品23p| 日韩美女毛片 | 少妇一级淫片免费放中国 | 成人影视在线看 |