首先,只是基于对算法的主要是想的介绍和理解,对于涉及到的PCA以及直方图比较提到的方法等等可以自己再去深入研究。

其次,只是用作笔记记录。

参考了CSDN博客:https://blog.csdn.net/smartempire/article/details/23377385

https://blog.csdn.net/wanghz999/article/details/78817265

Eigenfaces的原理:
Eigenfaces就是特征脸的意思,是一种从主成分分析(Principal Component Analysis,PCA)中导出的人脸识别和描述技术。特征脸方法的主要思路就是将输入的人脸图像看作一个个矩阵,通过在人脸空间中一组正交向量,并选择最重要的正交向量,作为“主成分”来描述原来的人脸空间。
PCA:
在很多应用中,需要对大量数据进行分析计算并寻找其内在的规律,但是数据量巨大造成了问题分析的复杂性,因此我们需要一些合理的方法来减少分析的数据和变量同时尽量不破坏数据之间的关联性。于是这就有了主成分分析方法,
PCA作用:

数据降维。减少变量个数;
确保变量独立;提供一个合理的框架解释。

去除噪声,发现数据背后的固有模式。

PCA的主要过程:

特征中心化:将每一维的数据(矩阵A)都减去该维的均值,使得变换后(矩阵B)每一维均值为0;
计算变换后矩阵B的协方差矩阵C;

计算协方差矩阵C的特征值和特征向量;

选取大的特征值对应的特征向量作为”主成分”,并构成新的数据集;
特征脸方法

特征脸方法就是将PCA方法应用到人脸识别中,将人脸图像看成是原始数据集,使用PCA方法对其进行处理和降维,得到“主成分”——即特征脸,然后每个人脸都可以用特征脸的组合进行表示。这种方法的核心思路是认为同一类事物必然存在相同特性(主成分),通过将同一目标(人脸图像)的特性寻在出来,就可以用来区分不同的事物了。
特征脸方法的过程(先计算特征脸,然后识别人脸):

将训练集中的N个人脸拉成一列(reshape(1,1)),然后组合在一起形成一个大矩阵A。若人脸图像大小为m * m,则矩阵A的维度是m * m * N;
将N个人脸在对应的维度求平均,得到一个“平均脸”;
将矩阵A中N个图像都减去“平均脸”,得到新矩阵B;
计算B的协方差矩阵;
计算协方差矩阵的特征值和特征向量(特征脸);
将训练集图像和测试集图像都投影到特征向量空间中,再使用聚类方法(最近邻或k近邻等)得到里测试集中的每个图像最近的图像,进行分类即可。或者通过计算测试图片和已知图片的欧氏距离与自己设定的阈值进行比较,如果均大于阈值则不符合,否则符合某一张图片。
特征脸识别的局限性

要让系统准确识别需要保证人脸图像满足:

待识别图像中人脸尺寸接近特征脸中人脸的尺寸;
待识别人脸图像必须为正面人脸图像。
若不满足此条件,识别错误率很高。从PCA方法的过程可以看出,特征脸识别的方法是以每张人脸的一个维度(可以看出是矩阵的一列)为单位进行处理的,求得的特征向量(特征脸)中包含训练集每个纬度的绝大部分信息。但是若测试集中人脸尺寸不同,那么与特征脸中维度的也就没法对应起来。
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
FisherFace算法:
Fisher线性判别分析(linear discriminant analysis,LDA)
两类的线性判别问题可以看做所有的样本投影到一个方向(或者说是一个维度空间中),然后再这个空间中确定一个分类的阈值。过这个阈值点且与投影方向垂直的超平面就是分类面。判别思路是选择投影方向,使得投影后两类相隔尽可能远,类内又尽可能聚集(类间方差最大,类内方差最小)。

它的过程分为:

确定最优的投影方向:
在这个方向上确定分类阈值;

Fisherfaces方法结合了PCA和LDA的优点,其具体过程如下:

PCA降维:对原始样本进行PCA处理,获取PCA处理之后的新样本;

LDA特征提取:对降维后的样本使用Fisher线性判别方法,确定一个最优的投影方向,构造一个一维的特征空间(这就被称为Fisherfaces),将多维的人脸图像投影到Fisherfaces特征空间,利用类内样本数据形成一组特征向量,这组特征向量就代表了人脸的特征。

<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
LBP算法:
最初的LBP是定义在像素3x3邻域内的,以邻域中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3x3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该邻域中心像素点的LBP值,并用这个值来反映该区域的纹理信息

改进的LBP:
圆形LBP算子:

Xp=Xc+Rcos(2πp/p)
Yp=Yc-Rsin(2πp/p)
Xc,Yc为领域中心点,Xp,Yp为某个采样点,通过上式可以计算出任意个采样点的坐标,计算得到的坐标未必是整数值,可以通过双线性插值来得到该采样点的像素值
LBP等价模式:
一个LBP算子可以产生不同的二进制模式,对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生2^P种模式。很显然,随着邻域集内采样点数的增加,二进制模式的种类是急剧增加的。例如:5×5邻域内20个采样点,有220=1,048,576种二进制模式。如此多的二值模式无论对于纹理的提取还是对于纹理的识别、分类及信息的存取都是不利的。同时,过多的模式种类对于纹理的表达是不利的。例如,将LBP算子用于纹理分类或人脸识别时,常采用LBP模式的统计直方图来表达图像的信息,而较多的模式种类将使得数据量过大,且直方图过于稀疏。因此,需要对原始的LBP模式进行降维,使得数据量减少的情况下能最好的代表图像的信息。
为了解决二进制模式过多的问题,提高统计性,Ojala提出了采用一种“等价模式”(Uniform Pattern)来对LBP算子的模式种类进行降维。Ojala等认为,在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,Ojala将“等价模式”定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类。如00000000(0次跳变),00000111(只含一次从0到1的跳变),10001111(先由1跳到0,再由0跳到1,共两次跳变)都是等价模式类。除等价模式类以外的模式都归为另一类,称为混合模式类,例如10010111(共四次跳变)。将许多类减少成为P(P-1)+2种

LBP对光照有明显的鲁棒性

不是直接用计算得到的LBP值之后进行人脸识别,而是将一张人脸照片分为若干子区域,并在子区域内根据LBP值统计其直方图,以直方图作为其判别特征,可以避免一定范围内图像没有完全对准的情况,同时也对LBP做了降维处理

对于得到的直方图特征,有多种方法可以判别其相似性,假设已知人脸的直方图为Mi,待匹配人脸的直方图为Si,那么通过:
(1)直方图交叉核方法
(2)卡方统计方法

经典人脸识别算法(特征脸,FISHERFACE,LBP)相关推荐

  1. 人脸识别之特征脸方法(Eigenface)

    人脸识别之特征脸方法(Eigenface) zouxy09@qq.com http://blog.csdn.net/zouxy09 因为需要,花了一点时间写了下经典的基于特征脸(EigenFace)的 ...

  2. Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)

    将w的每一行想成一个样本,则第一行是最重要的样本..第二行次重要..(Wk特征engen face) CODE 我们使用lfw_people数据集 #人脸识别与特征脸 import numpy as ...

  3. 人脸识别算法二:Fisherface(LDA)

    LDA线性判别分析 也称FLD(Fisher线性判别)是一种有监督的学习方法(supervised learning).目的:是从高维空间中提取出最优判别力的低维特征,这些特征使同一类别的样本尽可能的 ...

  4. 人脸识别之特征脸方法

    特征脸技术是近期发展起来的用于人脸或者一般性刚体识别以及其它涉及到人脸处理的一种方法.首先把一批人脸图像转换成一个特征向量集,称为"Eigenfaces",即"特征脸&q ...

  5. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  6. 人脸识别算法之特征脸方法(Eigenface)

    一.人脸识别算法之特征脸方法(Eigenface) 1.原理介绍及数据收集 特征脸方法主要是基于PCA降维实现. 详细介绍和主要思想可以参考 https://www.cnblogs.com/littl ...

  7. openCV学习笔记(十二) —— 人脸识别算法(1/3)—— 特征脸 EigenFaces

    一.原理 opencv支持3种人脸识别的算法,分别是: 1.    Eigen Faces    PCA(特征脸方法) 2.    Fisher Faces    LDA(线性判别分析) 3.     ...

  8. 基于正交拉普拉斯脸的人脸识别算法研究

    直觉上,自然存在的人脸数据可以由支持的概率分布采样生成或者近似于环绕空间的子流线型分布.据此,我们提出了一种基于外观的人脸识别算法,称为正交拉普拉斯脸(Orthogonal Laplacianface ...

  9. 5种最著名的人脸识别算法和关键特征介绍

    人脸识别算法是任何人脸检测和识别系统或软件的基础组件.专家将这些算法分为两种核心方法:几何方法侧重于区分特征,光度统计方法用于从图像中提取值. 然后将这些值与模板进行比较以消除差异. 这些算法还可以分 ...

最新文章

  1. arthas-boot.jar 工具的简单使用
  2. java static修饰方法_浅析Java中static修饰符
  3. 【周报6.10-6.16】NLP,RL,GAN,DL框架等重磅专栏齐上线,这个月的有三AI你值得拥有...
  4. linux下生成静态库和动态库
  5. 一些常见的HTTP的请求状态码
  6. Linux系统(八)系统信息、其它命令、打包压缩、软件安装
  7. Netty4.0学习笔记系列之二:Handler的执行顺序
  8. 玩转DataGridView之实现两个GRID间行的拖拽
  9. centos6.5 yum安装php5.5,mysql5.5.46 ,aphche 2.2.15
  10. presscad图层LIsp_presscad2010免费版
  11. 免费ftp上传工具,三款免费的ftp上传工具
  12. f5服务器维护,F5-LTM(服务器的负载均衡)网络结构和功能
  13. Unity技术手册 - 形状(Shape)子模块 - Sphere球体和 Hemisphere半球和Donut圆环圈
  14. 家庭服务机器人的人脸检测、跟踪与识别研究
  15. c++调用python详细教程
  16. google浏览器 使用css: transform造成字体模糊问题
  17. pandas玩转excel-> (1)如何利用pandas创建excel数据文件
  18. ie浏览器float兼容性
  19. 【c++复健】双指针(第二弹)
  20. 配置ODBC驱动连接DM8数据库

热门文章

  1. 在国企工作是什么体验?想熬出头难么?
  2. 复旦大学和南京大学计算机,强势支招:南京大学和复旦大学怎么选?
  3. C语言 —— continue语句和break关键字的用法
  4. 海图(基于http服务器的图片管理工具)
  5. 手把手教你用python一键抢12306火车票(附代码)
  6. 安装IIS不能运行ASP 不能打开ASP文件
  7. 分治算法解循环赛日程表问题
  8. 应用安全系列之三十四:数值溢出
  9. Mac 定时重启 TouchBar 脚本(缓解闪烁问题)
  10. 51nod 1366 贫富差距 (并查集+最短路)