三维点云 PCA(上)
三维点云之PCA
- PCA
- PCA定义
- PCA属性与作用
- PCA的实现步骤
- 将原始数据按列组成 n 行 m 列矩阵 X;
- 将 X 的每一行进行零均值化,即减去这一行的均值;
- 求出协方差矩阵 1m∗XXT\frac{1}{m}*XX^Tm1∗XXT;
- 求出协方差矩阵的特征值及对应的特征向量;
- 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P;Y=PX 即为降维到 k 维后的数据。
PCA
PCA定义
PCA(Principal Component Analysis)主成分分析;
主成分:可以理解为某个特征的方差;方差越大,越倾向于这个特征(这个成分越是主要的),相对的,方差越小,越不可能趋向它。
定义
它是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。
PCA属性与作用
作用:
- (有损的)数据压缩
- 降维
- 分类
属性:
- 目的:特征的方差大,协方差小;
- 分解后的各个向量存在着不可解释性
- 第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。
PCA的实现步骤
设有 m 条 n 维数据。
将原始数据按列组成 n 行 m 列矩阵 X;
注意数据是竖着放的
将 X 的每一行进行零均值化,即减去这一行的均值;
此操作为中心化:
- 因为样本需要计算方差如x−xˉx-\bar{x}x−xˉ,为了后面计算先进行中心化,方便计算;
- 中心化后也方便观察数据,把数据分类。
求出协方差矩阵 1m∗XXT\frac{1}{m}*XX^Tm1∗XXT;
协方差公式可以表示为:
Cov(a,b)=1m−1∑i=1m(ai−μa)(bi−μb)\operatorname{Cov}(a, b)=\frac{1}{m-1} \sum_{i=1}^{m}\left(a_{i}-\mu_{a}\right)\left(b_{i}-\mu_{b}\right) Cov(a,b)=m−11i=1∑m(ai−μa)(bi−μb)
协方差为 0 时,两个变量只是线性不相关。当我们中心化后,即为期望为0后,协方差公式可写成如下所示:
Cov(a,b)=1m∑i=1maibi\operatorname{Cov}(a, b)=\frac{1}{m} \sum_{i=1}^{m} a_{i} b_{i} Cov(a,b)=m1i=1∑maibi
则可用矩阵的形式1m∗XXT\frac{1}{m}*XX^Tm1∗XXT表示出来改协方差矩阵。
协方差矩阵表示的是
Cov(X,Y) > 0时,X、Y正相关,即两者有同时增加或者减少的倾向
Cov(X,Y) < 0时,X、Y负相关,即两者有反向增加或者减少的倾向
Cov(X,Y) = 0时,X、Y不相关
特别地有Cov(X,X)=Var(X)。其对角线为方差
求出协方差矩阵的特征值及对应的特征向量;
协方差矩阵是一个方阵;所以肯定可以提取特征值、特征向量
将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P;Y=PX 即为降维到 k 维后的数据。
PCA在三维点云上的应用在三维点云 PCA(下)中进行进一步的讲解。
三维点云 PCA(上)相关推荐
- 【点云上采样】三维点云特征上采样
一维和二维数据上采样通常是通过插值的方法来增加点的个数.三维点云上采样理论上也可以通过这个方法来进行.这些上采样的方法均是增加点的数量.但三维空间中点的分布并不是很均匀,不便于定义插值点的位置.因此, ...
- 三维点云学习(1)上-PCA主成分分析 法向量估计
三维点云学习(1)上 环境安装 1.系统环境 win10 或者 ubuntu 2. Anaconda3+python3.6 使用Anaconda创建的conda虚拟环境进行python的编写 环境安装 ...
- (一) 三维点云课程---PCA介绍
三维点云课程-PCA介绍 三维点云课程---PCA介绍 三维点云课程---PCA介绍 1. 什么是PCA 2.知识铺垫 2.1 SVD分解(奇异值分解 ) 2.1 谱定理 2.2 Rayleigh商 ...
- 三维点云:PCA(下)open3d
三维点云之PCA应用下 在三维点云上的应用 主成分方向 降维 求解点云的法向量 拟合平面 AABB框 点云匹配 在三维点云上的应用 PCA 是有损的数据压缩方式,它常用于对高维数据进行降维,也就是把高 ...
- 基于三维点云数据的主成分分析方法(PCA)的python实现
主成分分析(PCA)获取三维点云的坐标轴方向和点云法向量 # 实现PCA分析和法向量计算,并加载数据集中的文件进行验证import open3d as o3d # import os import n ...
- 三维点云分割综述(上)
本文转载自公众号@点云PCL,三维点云分割综述(上) :https://mp.weixin.qq.com/s/BhDd5gn2lksFScKSe0NVbQ 这是一篇综述性论文,以下只做概述性介绍,介绍 ...
- 【三维深度学习】基于片元的渐进式三维点云上采样模型
点云上采样对于从稀疏三维数据重建稠密三维点云十分有效.但面对非规则.无需.稀疏.噪声和不完整的点云结构,图像领域的超分辨.补全.稀疏加密等方法无法直接用于点云上采样中.PointNet系列方法基于全连 ...
- 三维点云学习(2)上- 二叉树实现K-NN Radius-NN Search
三维点云学习(2)上 二叉树实现K-NN Radius-NN Search 代码来自 黎老师github 个人心得 二叉树的搜寻方法 正如老师课堂所说,实现二叉树的搜寻有两种方法,一种是递归,一种是循 ...
- 深度学习在三维点云上的应用(Deep Learning for 3D Point Clouds: A Survey)
深度学习在三维点云上的应用 摘要 最近,点云由于在计算机视觉.自动驾驶和机器人技术等许多领域的广泛应用而受到越来越多的关注.深度学习作为一种主要的人工智能技术,已经成功地用于解决各种二维视觉问题.由于 ...
- 使用MATLAB来可视化三维点云上的法向量
下面展示一种在三维点云上可视化法向量的方法,将单位向量映射到RGB立方体上相应的RGB颜色.用于将三维点云或网格数据上的法向矢量可视化为彩色,而不是法向量箭头因为有时很难看清楚箭头的指向. 对于点云中 ...
最新文章
- log4j2的xml的配置样例
- 虚拟键码和扫描码的区别
- Spring DI[依赖注入]
- mysql表全连接_关于mysql 实现表连接(左,右,内,全连接)
- 利用samba服务为windows用户架设网盘的简单实践
- 【PHP源码】二维码生成api
- Nacos Spring Boot 快速开始
- 监督学习和无监督学习_一篇文章区分监督学习、无监督学习和强化学习
- ANSI C typedef
- 快速定位NodeJs线上问题 - 之火焰图篇
- 地址随机化 linux,GOT覆盖和Linux地址随机化
- 表单防重复提交拦截器
- 面向资源的权限体系设计随想
- 性能测试-性能狗(Perfdog)测试与数据分析
- idea 回退merge_详解IDEA git分支回退指定的历史版本
- 光合作用9月五星推荐图书
- 看看乔帮主留下的世界
- Python-在线网页导出为图片或pdf
- OpenCV python 图片镜像
- MySql安装教程与HeidiSQL管理工具使用方法、HeidiSQL中SQL语句使用(六)