日韩性视频-久久久蜜桃-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在线视| 亚洲天堂无吗 | 在线看黄网| 日韩伊人久久 | 在线看的av | 娇妻被肉到高潮流白浆 | 人人爱人人艹 | 亚洲另类色图 | 色悠悠网址 | 久久激情综合 | 一本色道久久88加勒比—综合 | 视频一区二区国产 | 一级福利片 | 欧美激情一二三 | 啪啪网站免费观看 | 91禁外国网站 | 国产精品久久国产精品 | 九九色网| 欧美男女激情 | 羞羞答答av | 一区二区在线视频播放 | 欧美日韩乱国产 | 911av | 华人永久免费 | 视频在线观看视频 | 日本高清在线观看 | 国产一区免费在线 | 欧美综合第一页 | 国外成人免费视频 | 美女扒开腿让男生桶 | 伊人久久大香线蕉av一区 | 亚洲热视频 | 日韩亚洲精品中文字幕 | 日韩新片王网 | 久操精品在线 | 色综合综合网 | 噜噜噜久久久 | 一二三四视频社区在线 | 香港台湾日本三级大全 | 国产午夜精品理论片在线 | 男女床上拍拍拍 | 激情久久久久久久 | 国v精品久久久网 | 男人的天堂影院 | 精品国产一区二区三区四区阿崩 | 美女毛片视频 | 国产精品自在线 | 夜色一区二区三区 | 中文字幕视频一区二区 | 中文字幕免费视频 | 欧美国产日韩精品 | 国产让女高潮的av毛片 | 欧美aaa在线观看 | 毛茸茸亚洲孕妇孕交片 | 亚洲男男网站 | 日本中文字幕在线 | 国产第八页 | 国产精品久久久久久久裸模 | 午夜影院免费看 | 日韩不卡免费视频 | 天天干天天操天天舔 | 人妻夜夜爽天天爽三区麻豆av网站 | 欧美综合在线观看 | 艳妇av| 桃色成人网 | 色花堂在线 | 亚洲九区 | jizzzz中国 | 国产卡一卡二卡三 | 爽好多水快深点欧美视频 | 日本欧美国产 | 久久久久久久久久久久久久久久久久久久 | 91理论片| 午夜久久久久久久久久影院 | 午夜视频成人 | 中文字幕乱码人妻无码久久95 | 国产伦精品一区二区三区高清 | 婷婷综合五月 | 国产精品久久77777 | 午夜在线不卡 | 99久久精品免费看 | 男女污污软件 | 天天黄色片 | 国产操比视频 | 五月色婷婷综合 | 日韩亚洲欧美一区二区 | 国产美女作爱视频 | 亚洲网站一区 | 国产美女被遭强高潮免费网站 | 一区二区三区在线免费观看视频 | 日韩的一区二区 | 桥本有菜aⅴ一区二区三区 在线午夜电影 | 亚洲成人精品一区二区 | 日韩一区二区在线视频 | 日韩欧美不卡在线 | 一本一道久久a久久精品综合 | 婷婷爱五月 |