点云学习【1.1】PCA

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

def PCA(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


def main():
    #创建数组表格数据 读取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)
    #提取前两个主分量
    point_cloud_vector = v[:,2]
    print("the main orientation of this pointcloud is :",point_cloud_vector)
    point = [[0,0,0],v[:,0],v[:,1]]
    lines = [[0,1],[0,2]]
    colors = [[1,0,0],[0,1,0]]
    line_set = o3d.geometry.LineSet(points = o3d.utility.Vector3dVector(point),lines = o3d.utility.Vector2iVector(lines))
    line_set.colors = o3d.utility.Vector3dVector(colors)
    o3d.visualization.draw_geometries([point_cloud_o3d,line_set])

保留第一第二主成分的点云图1.保留第一第二主成分的点云
原始点云图二.原始点云

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
点云坐标系PCA分析是一种基于主成分分析的方法,用于分析和处理三维空间中的点云数据。主成分分析(PCA)是一种常用的降维技术,通过计算协方差矩阵的特征值和特征向量,确定数据集中最重要的主成分方向。 在点云坐标系PCA分析中,我们首先需要获取点云数据集,通常这些数据是由三维传感器(如激光雷达)获取的。然后,我们需要将点云数据转换为矩阵表示,其中每一行代表一个点的坐标(通常为三个坐标:x、y和z)。接下来,我们计算协方差矩阵,该矩阵描述了数据集中的变化模式。 通过对协方差矩阵进行特征值分解,我们可以获取主成分的特征值和特征向量。特征值表示了每个主成分的重要程度,而特征向量则表示了每个主成分的方向。通过按特征值的大小对特征向量进行排序,我们可以找到数据集中最重要的主成分方向。 根据主成分的特征向量,我们可以将点云数据集投影到新的坐标系上。投影后,数据集中的每个点都通过使其与主成分的方向对齐,实现了降维效果。通常,我们只保留最重要的主成分,去除较低重要性的主成分,以减少数据的维度。 点云坐标系PCA分析可以用于很多实际应用中,例如三维物体识别、目标跟踪和点云表面重建等。它可以提取点云数据的关键特征,减少数据的维度,简化后续处理过程,并帮助我们更好地理解和分析三维空间中的点云数据。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值