【计算机视觉】特征脸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的更多相关文章

  1. 特征脸(Eigenface)理论基础-PCA(主成分分析法)

    在之前的博客  人脸识别经典算法一:特征脸方法(Eigenface)  里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充.请将这两篇博文结合起来阅读.以下内容大部分参考 ...

  2. 人脸识别经典算法一:特征脸方法(Eigenface)

    这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...

  3. 【笔记】特征脸(PCA在人脸识别领域的应用)

    人脸识别与特征脸(简单介绍) 什么是特征脸 特征脸(Eigenface)是指用于机器视觉领域中的人脸识别问题的一组特征向量,该方法被认为是第一种有效的人脸识别方法. PCA的具体实现思想见 [笔记]主 ...

  4. 特征脸是怎么提取的之主成分分析法PCA

    机器学习笔记 多项式回归这一篇中,我们讲到了如何构造新的特征,相当于对样本数据进行升维. 那么相应的,我们肯定有数据的降维.那么现在思考两个问题 为什么需要降维 为什么可以降维 第一个问题很好理解,假 ...

  5. 机器学习:PCA(人脸识别中的应用——特征脸)

    一.思维理解 X:原始数据集: Wk:原始数据集 X 的前 K 个主成分: Xk:n 维的原始数据降维到 k 维后的数据集: 将原始数据集降维,就是将数据集中的每一个样本降维:X(i) . WkT = ...

  6. PCA算法提取人脸识别特征脸(降噪)

    PCA算法可以使得高维数据(mxn)降到低维,而在整个降维的过程中会丢失一定的信息,也会因此而实现降噪除噪的效果,另外,它通过降维可以计算出原本数据集的主成分分量Wk矩阵(kxn),如果将其作为数据样 ...

  7. Eigenface与PCA人脸识别算法实验

    简单的特征脸识别实验 实现特征脸的过程其实就是主成分分析(Principal Component Analysis,PCA)的一个过程.关于PCA的原理问题,它是一种数学降维的方法.是为了简化问题.在 ...

  8. 机器学习: 特征脸算法 EigenFaces

    人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即 ...

  9. 【从零学习openCV】IOS7人脸识别实战

    前言 接着上篇<IOS7下的人脸检測>,我们顺藤摸瓜的学习怎样在IOS7下用openCV的进行人脸识别,实际上非常easy,因为人脸检測部分已经完毕,剩下的无非调用openCV的方法对採集 ...

随机推荐

  1. Java锁机制总结

    锁是用于控制多线程对共享资源的访问. Java中的锁可以分为内置锁与显式锁Lock.其中内置锁指synchronized关键字. Synchronized synchronized可以修饰方法或代码块 ...

  2. Codeforces Round #585 (Div. 2) C. Swap Letters

    链接: https://codeforces.com/contest/1215/problem/C 题意: Monocarp has got two strings s and t having eq ...

  3. Start Failed, Internal error: recovering IDE to the working state after the critical startup error

    Start Failed, Internal error: recovering IDE to the working state after the critical startup error F ...

  4. tinymce实现ctrl+v粘贴word图片并上传

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...

  5. nodejs基础(管道、流)实现:复制、压缩、加密、解压,解密,写入文件

    stream流 都是events.EventEmitter的一个实例,都可以来创建自定义事件(也就是说,流是一个事件的实例) 在nodejs中 对http的请求与响应都是用流来实现的,请求就是一个输入 ...

  6. Rand工具类

    这篇文章已经废弃. 实际开发中,这个工具类用到得非常少. RandN是主要类,用于生成指定位数的随机字符串,具体功能在这个类中实现 Rand8是修饰了RandN中每个对外方法的修饰类,用与生成8位的随 ...

  7. 三十、CentOS 7之systemd

    一.系统启动流程 POST --> bootloader  --> MBR工作 --> kernel(initramfs/initrd) --> ro rootfs --> ...

  8. MySQL中使用LIMIT分页

    需求:客户端通过传递pageNum(页码)和pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据. 我们知道MySQL提供了分页函数limit m,n,但是该函数的用法和需求不一样,所 ...

  9. 快速上手系列-C语言之指针篇(一)

    快速上手系列-C语言之指针篇(一) 浊酒敬风尘 发布时间:18-06-2108:29 指针的灵活运用使得c语言更加强大,指针是C语言中十分重要的部分,可以说指针是C语言的灵魂.当然指针不是万能的,但没 ...

  10. x86 linux下如何交叉编译?

    答: 需要首先指定两个环境变量CROSS_COMPILE和ARCH 如交叉编译arm64的程序: export CROSS_COMPILE="aarch64-linux-gnu-" ...