先前用pca对三维人脸进行了姿势坐标系的统一,只是照步骤来写代码,没有仔细推敲其中的原理。无论人脸是怎样姿势处理后都能够归一化其所在的坐标系。Pca算法为什么能把人脸摆正呢?->统计学中奥妙的冰山一角啊~

先说下主成分分析法的感性理解:有一个很长很细的棒子,从上往下看只有个圆点,那么“竖直“这个方向可以看做是这个物体最主要的方向。

假设这个棒子是斜的,获取了斜的方向,很容易将棒子摆竖直。这就是人脸姿势坐标系统一的原理。如果想对这个棒子进行压缩,那就可以压缩成一条线,忽略棒子的直径,这是我对采用主成分分析进行压缩的理解。

下面点集中的数据,可以看做有红蓝两个主要的方向。数据有几个维度就可能有几个”主要的方向“,称为主轴或主成分。

在主要的方向上,数据所具有离散程度,也就是方差最大。

数据不同的主成分之间是线性无关的。这和数据定义有关,每一维度都对应一个主成分,在之前的点集示例中,数据格式为(xi,yi),x轴和y轴是相互垂直的,自然主成分也是相互垂直的。如果数据有N维,仍然可以对应N个主成分,但主成分之间的关系可能没有这么直观。

下面说主成分是如何找到的。以做过的三维人脸姿势归一为例。

处理前:

在点集P中,每个点为,p为P的行向量,N为点的个数。

1.计算点集P的协方差矩阵:

协方差矩阵描述了样本各维度的方差及维数之间的相关程度,对角线分别是x、y、z轴的方差,其余为各维度之间的协方差。

2.分解协方差矩阵的特征值与特征向量。matlab里用这个函数:

[V,D]=eig(cov);

以上两步的意义:

我们希望在各个维度上,数据是不相关的,协方差都为0。因此我们希望处理后的数据的协方差矩阵是对角矩阵。我们知道,任何一个非奇异矩阵都可以写成对角矩阵的形式,对角线的元素就是矩阵的特征值。

求解出特征值,及其一一对应的特征向量。这时对矩阵的特征值与特征向量的概念进行了再次的复习和思考。特征向量描述一个变换(矩阵)中线性无关的方向,一个点集的协方差矩阵,其线性无关的三个特征向量正是理想情况下三个维度的方向,其对应的特征值,正是在新的方向下的三个方差。

在协方差矩阵的基础上进一步理解特征值和特征向量,之前已述,协方差矩阵表示了样本集在原n维空间中各个方向上的能量分布,通过对协方差矩阵求特征向量,实际上找到的是在原n维空间中的一些特定的方向,样本集的能量集中分布在这些方向上,而特征值的大小就反映了样本集在该方向上的能量大小。PCA正式基于这一点,删掉对应特征值小的方向,只保留主要的方向,达到降维的目的。

引自http://blog.csdn.net/idhfihfoihfof/article/details/10435195

3.构造旋转矩阵,

4.对原始点集进行旋转。

P’=PR

我们得到了三个维度的新方向,根据这个三个向量构造旋转矩阵。人脸的最大主轴方向应为沿额头鼻子往下的方向,在姿势坐标系里希望这个方向是y轴;其次的轴向是水平方向,我们希望是x轴,最后是厚度方向,z轴。

但是处理后人脸的前后,正反有时会错,是因为分解特征向量时,并未给定统一的正负标准。按不同的函数分解得到的特征向量可能是(a,-b,c)也可能是(-a,b,-c),也有可能有标准但不符合我们的归一化规则。于是对那三个维度的新方向做点手脚,保证新的x轴对应的特征向量的第一个分量为正,新的y轴对应的特征向量的第二个分量为正,新的z轴对应的特征向量的第三个分量为正,就可以解决了。

纠正后的V:

旋转矩阵R:

处理后:

可以看到脸基本摆正了。这样进行粗匹配必须基于原始数据的对称性有要求。如果原始数据有缺口很不对称,最后出来方差最大的轴就可能不是y轴了~

主成分分析法的理解与人脸摆正实例相关推荐

  1. PCA主成分分析法浅理解

    ML课刚学,发现更多是对线性代数的回顾.更进一步说,统计机器学习方法就是以高数.线代和概率论为基石构筑的"一栋大厦".下面主要沿着老师ppt的思路讲讲对PCA方法的个人理解. 这里 ...

  2. 数学建模系列-评价模型(四)---主成分分析法

    主成分分析法可以理解为层次分析法的一种衍生,是为了舍去无用或者效用较少的参数来达到拟合的目的,为了简化计算. 主成分与原始变量之间的关系: ​ (1)主成分保留了原始变量绝大多数信息. ​ (2)主成 ...

  3. 主成分分析法原理简单理解及技术实现

    主成分分析法 主成分分析是利用降维的思想,在损失很少信息的前提下,把多个指标转化为几个综合指标的多元统计方法.通常把转化生成的综合指标称为主成分,其中每个主成分都是原始变量的线性组合,且各个主成分之间 ...

  4. 主成分分析法(PCA)的理解(附python代码案例)

    目录 一.PCA简介 二.举个例子 三.计算过程(公式) 3.0 题干假设 3.1 标准化 3.2 计算协方差矩阵 3.3 计算特征值和特征值向量 3.3 多重共线性检验(可跳过) 3.4 适合性检验 ...

  5. 主成分分析法(PCA)原理漫谈

    在研究OpenCV人脸识别算法时,了解到其中OpenCV特征脸法Eigenfaces是基于主成分分析法(principal component analysis,简称PCA),后来再了解到PCA不仅仅 ...

  6. 主成分分析法_数学建模 || 葡萄酒的评价(1)主成分分析法

    首先要说一下,这篇文章我在其他的平台发过,也是本人亲自写的,如果大家觉得眼熟的话放弃轻松,没有抄袭,主要是因为与我这 "葡萄酒的评价" 题目成系列了,因此在这里再把这个贴出来. 2 ...

  7. 主成分分析法案例_机器学习理论(五)主成分分析法

    (小小:机器学习的经典算法与应用) (小小:机器学习理论(一)KNN-k近邻算法) (小小:机器学习理论(二)简单线性回归) (小小:机器学习理论(三)多元线性回归) (小小:机器学习理论(四)线性回 ...

  8. 机器学习-特征抽取(主成分分析法/因子分析法/非负矩阵因子分解NMF算法)

    1.特征抽取: 特征抽取是机器学习中另一种十分有用的方法,它与特性选择不同,特征抽取是对数据的特征进行概括和总结,而特性选择则主要是对数据中的不同特征进行比较和选取. 特征抽取是机器学习技术中的一个常 ...

  9. 【机器学习】主成分分析法

    主成分分析法 目录 主成分分析法 一.主成分分析的理解 二.使用梯度上升法求解PCA 三.求数据的前n个主成分 四.将高维数据向低维数据映射 五.scikit-learn中的PCA 六.对真实数据集M ...

最新文章

  1. unbuntu下安装flash插件
  2. 计算机组成原理手动在线模式,实验四计算机组成原理 运算器手动实验
  3. mysql版本 hibernate_Mysql 不同版本 说明
  4. java servlet接口开发_servlet三种实现方式之一实现servlet接口
  5. Midi 乐器set
  6. Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器转载...
  7. Center OS7网络设置
  8. C++Primer 学习笔记之关联容器
  9. rsyslog官方文档
  10. 相亲交友App,婚恋交友App,开源源码可搭建H5公众号小程序App,支持个性化定制
  11. 【科来】网络异常行为分析学习笔记
  12. 小米笔记本Air13.3扩充硬盘
  13. 上行带宽,下行带宽和内网带宽的区别及相关问题
  14. Unity3D游戏开发之游戏模型制作:机器人
  15. 【20保研】复旦大学2019年大数据学院全国优秀大学生夏令营活动方案
  16. 实验三 使用CSS3
  17. 错误记录一:线程通信时抛出Exception in thread “Thread-0” java.lang.IllegalMonitorStateException异常
  18. 为什么英语学习得不到我们想要的效果?
  19. 怎么看光驱有没有带刻录DVD功能
  20. 识别图书ISBN号并输出查询结果的示例

热门文章

  1. jQuery-5(HTML DOM)
  2. 如何防止Excel工作表名称被修改
  3. 网络对抗 Exp8 Web基础 20154311 王卓然
  4. 人工智能写作的春天来了 除了写作, 人工智能还能写诗、画画
  5. Frustum culling
  6. 第四次作业 个人学习总结 霍兰德- 职业兴趣测评
  7. 组合数学的一些常见公式
  8. 北大青鸟 ASP.NET(C#) 视频 全32集
  9. BI平台:怎么进行报表的开发和搭建
  10. 地球气候系统模式cesm的基本运行流程