【计算机视觉】特征脸EigenFace与PCA
【计算机视觉】特征脸EigenFace与PCA
标签(空格分隔): 【图像处理】
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/。
说明:本文主要想弄清楚将人脸识别推向真正可用的第一种方法:特征脸方法。
【这里采用的是1维的PCA方法,将图像转变为行向量或者列向量,虽然破坏了几何结构,但是处理比较直观方便】
第一步是构建样本集合
获取包含有M张人脸图像的集合S,每张人脸图片的大小scaling到统一的尺寸,如下面图片集合:
每个图片都转变为N维的向量,然后一行一行的吧放起来,从而构成了样本矩阵X,这一点就与我前段所写的协方差矩阵以及matlab PCA函数princomp函数的输入的样本矩阵格式一样了。
第二步进行均值和协方差矩阵
将图像矩阵每一列都加起来取平均,得到一个平均图像,公式和结果如下图所示:
第三步计算差值矩阵或者样本矩阵零均值化
每行也就是每张图象都减去样本均值。
第四步计算协方差矩阵及其特征值、特征向量
实际上这些步骤都是PCA最传统的步骤,一步一步来的。但是对于图像数据来说,如果每个pixel都当作是一个维度特征的话,那么这个协方差矩阵实在太大了那么如果当我们的训练样本数量小于图像维数的时候,起作用的特征向量只有M个,而不是对应的图像维数个,其余都是零,所以求解特征向量的时候我们只需要求解一个。
这些特征向量还原成像素排列,得到如下所示的特征脸:
图中有二十五个特征脸,数量和训练样本一样只是巧合,一般只只需要7个特征脸就可以。
人脸识别
考虑一张新的人脸,scaling到相同的尺寸,然后进行特征转换,对应的公式为:
其中k=1,2,…,M表示对应的特征脸uk,也就是PCA中的第k个特征映射矢量,通过这M个特征脸,可以将新的人脸转变为在特征脸的坐标系的坐标表示:
实际上所有的脸,不管是新来的,还是样本集中的,都会被映射到该特征脸构成的矢量空间中的坐标表示,也可以说是在每个特征脸的权重,这个权重是提炼出来的某个人脸的在特征脸坐标系下的表示,如果要进行人脸识别的话:
其中Ω表示要判别的输入的人脸,而Ωk表示训练集中某个人脸,求取距离,一个一个判断,如果距离小于某个阈值,则认为成功匹配。否则认为没有找到匹配的对象,认为是新的人脸或者不是人脸两种情况。根据训练集的不同,阈值设定并不不是固定的。
2015-11-27 学习笔记 张朋艺
【计算机视觉】特征脸EigenFace与PCA的更多相关文章
- 特征脸(Eigenface)理论基础-PCA(主成分分析法)
在之前的博客 人脸识别经典算法一:特征脸方法(Eigenface) 里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充.请将这两篇博文结合起来阅读.以下内容大部分参考 ...
- 人脸识别经典算法一:特征脸方法(Eigenface)
这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...
- 【笔记】特征脸(PCA在人脸识别领域的应用)
人脸识别与特征脸(简单介绍) 什么是特征脸 特征脸(Eigenface)是指用于机器视觉领域中的人脸识别问题的一组特征向量,该方法被认为是第一种有效的人脸识别方法. PCA的具体实现思想见 [笔记]主 ...
- 特征脸是怎么提取的之主成分分析法PCA
机器学习笔记 多项式回归这一篇中,我们讲到了如何构造新的特征,相当于对样本数据进行升维. 那么相应的,我们肯定有数据的降维.那么现在思考两个问题 为什么需要降维 为什么可以降维 第一个问题很好理解,假 ...
- 机器学习:PCA(人脸识别中的应用——特征脸)
一.思维理解 X:原始数据集: Wk:原始数据集 X 的前 K 个主成分: Xk:n 维的原始数据降维到 k 维后的数据集: 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = ...
- PCA算法提取人脸识别特征脸(降噪)
PCA算法可以使得高维数据(mxn)降到低维,而在整个降维的过程中会丢失一定的信息,也会因此而实现降噪除噪的效果,另外,它通过降维可以计算出原本数据集的主成分分量Wk矩阵(kxn),如果将其作为数据样 ...
- Eigenface与PCA人脸识别算法实验
简单的特征脸识别实验 实现特征脸的过程其实就是主成分分析(Principal Component Analysis,PCA)的一个过程.关于PCA的原理问题,它是一种数学降维的方法.是为了简化问题.在 ...
- 机器学习: 特征脸算法 EigenFaces
人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即 ...
- 【从零学习openCV】IOS7人脸识别实战
前言 接着上篇<IOS7下的人脸检測>,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集 ...
随机推荐
- python面向对象基础(四)内置方法 __xx__之new与init
__init__和__new__方法 __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构造方法 __init__() 负责将 ...
- 更好的处理 Python 多工程 import 依赖
话说, 这段时间需要开发一个项目, 新项目对现有的几乎所有项目都有依赖. 豆瓣现存的几个大项目,基本都是围绕豆瓣主站shire的依赖, 也就是说, 其他项目对shire的单项依赖, 这些项目在需要主 ...
- .Net Core:Middleware自定义中间件
新建standard类库项目,添加引用包 Microsoft.AspNetCore 1.扩展IApplicationBuilder using Microsoft.AspNetCore.Builder ...
- STS工具引入jar报问题?(问题待解决)
pom.xml文件中先引入ojdbc6,后修改成ojdbc7了,为啥还报下面的错误: Project 'nx-test-mybatis-oracle' is missing required libr ...
- linux认识
linux基础 根目录 文档扩展名 在Linux中,跟windows的扩展名.exe .bat.dll不同,只要在那十个字符中有x权限,这个档案就是可执行的, 但是,可被执行和执行成功是两回事,在Li ...
- [Luogu] 余数求和
question: $$\sum_{i=1}^{n} k \bmod i$$$$\sum_{i=1}^{n} k - \lfloor \frac{k}{i} \rfloor i$$$$\sum_{i= ...
- codeforces1213F tarjan缩点+拓扑排序
题意 给定两个长度为n的排列p和q,构造一个字符串s满足\(s[p_i]<=s[p_{i+1}]\)和\(s[q_i]<=s[q_{i+1}]\),且满足字符串中不同字符的个数不少于k. ...
- Java操作文件那点事
刚开始学Java时候,一直搞不懂Java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己结合API来整理一下,有错的话请指正,也希 ...
- SpringMVC配置 事务管理
1.确保持久层配置完毕 2.pom.xml里追加spring-tx 3.application-context.xml追加 <bean id="transactionManager&q ...
- 1626:【例 2】Hankson 的趣味题
1626:[例 2]Hankson 的趣味题题解 [题目描述] Hanks 博士是 BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson ...