zoukankan      html  css  js  c++  java
  • 【计算机视觉】特征脸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 学习笔记 张朋艺

  • 相关阅读:
    第七章补充 -- 关于文件目录的交互 OS
    第七章 -- 关于文件
    Python 函数声明和调用
    第三章 -- Python的基本数据类型
    关于tomcat控制台乱码
    UTF8MB4 是支持 表情符号的
    ngnix启动不了 解决办法
    关于jmeter 加载jar文件的疑问
    jmeter 使用 随机数据+md5加密注意事项
    jmeter 分布式注意事项
  • 原文地址:https://www.cnblogs.com/huty/p/8518932.html
Copyright © 2011-2022 走看看