首先,只是基于对算法的主要想法的介绍和理解,对于相关的PCA和提及直方图比较的方法等,可以自己进行深入的研究。
接下来,它只是用作备忘录的记录。
CSDN博客:参见https://blog.csdn.net/smart empire/article/details/23377385
3359 blog.csdn.net/wanghz 999/article/details/78817265
Eigenfaces原理:
Eigenfaces在特征脸的意义上,是从主成分分析(Principal Component Analysis,PCA ) )导出的人脸识别和描述技术。 特征人脸方法的主要思路是将输入的人脸图像视为一个矩阵,在人脸空间中选择一系列正交向量,以最重要的正交向量为“主成分”描述原始人脸空间。
PCA :
在许多APP应用中,需要分析计算大量数据并寻找其内在规律,但数据量巨大带来了问题分析的复杂性,因此需要尽可能不破坏数据之间的相关性,同时减少要分析的数据和变量的合理方法。 于是有了主成分分析法
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算法:
费舍尔线性判别分析(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)卡方统计方法