当前位置:
文档之家› 利用OpenCV实现基于PCA算法的人脸识别
利用OpenCV实现基于PCA算法的人脸识别
OpenCV 对非商业应用和商业应用都是免费的,源代码公开, 具备强大的图像和矩阵运算能力,具有丰富的函数处理函数, 减少开发者的工作量,有效提高开发效率和程序运行的可靠 性。 应用:人机互动 、物体识别 、图象分割 、人脸识别 、 动作识别、运动跟踪 、机器人
人脸识别基本介绍
人脸图像采集及检测
人脸识别,是基于人的脸部特征信 息进行身份识别的一种生物识别技 术。用摄像机或摄像头采集含有人 脸的图像或视频流,并自动在图像 中检测和跟踪人脸,进而对检测到 的人脸进行脸部的一系列相关技术, 通常也叫做人像识别、面部识别。
• 第五步:求协方差矩阵的特征值和特征向量,构 造特征脸空间 若协方差矩阵的维数为MN*MN,当其维数较大, 计算量比较大,所以采用奇异值分解 (SingularValue Decomposition ,SVD)定理,通 T T A A AA 过求解 的特征值和特征向量来获得 的特 征值和特征向量。
w
T
• 第二步:定义阈值
1 max i j , i, j 1,2,...,200 2 i, j
• 第三步:采用欧式距离来计算 与每个 人脸的距离
i i
2
2
i 1,2,...,200
系统优缺点分析
系统存在的问题: 1. 抗干扰能力较差。环境光照,遮挡物,人的表情和位置都对识别 结果造成较强的干扰。 2. 训练的时间较长,执行效率不够高。只能对小样本的图像进行识 别,如果图像库太大,则运行效率会比较低。 系统的优点: 1. 不需要对图像进行过多的预处理,PCA本身就能实现降噪的功能; 2. 能有效地识别人脸,且过程相对简单,主要是图像数据的处理和 矩阵的运算; 3. 由于是通过低维子空间表示的,可以对图像的数据进行一定地压 缩,从而减少了计算量,提高运行速度;
利用OpenCV实现基于 PCA算法的人脸识别
1. 2. 3. 4.
OpenCV基本介绍 人脸识别概要 PCA原理介绍 用PCA算法人脸识别的优缺点
OpenCV 基本介绍
OpenCV(Open Source Computer Vision Library)是一个 基于(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows和Mac OS操作系统上。它轻量级而且高效— —由一系列 C 函数和少量 C++ 类构成,同时提供了Python、 Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉 方面的很多通用算法。
i 10
1
xi i
训练阶段
• 第三步:计算差值脸
计算每一张人脸与平均脸的差值
di xi i 1
训练阶段
第四步:构建协方差矩阵
1 C 10
d id i i
1
10
T
1 BB T 10
B d1 d 2 ,...,d10
训练阶段
人 脸 识 别
人脸图像预处理
人脸图像特征提取
匹配与识别
PCA 算法基本介绍
• PCA方法由于其在降维和特征提取方面的有效性 ,在人脸识别领域得到了广泛的应用。 • PCA方法的基本原理是:利用K-L变换抽取人脸的 主要成分,构成特征脸空间,识别时将测试图像 投影到此空间,得到一组投影系数,通过与各个 人脸图像比较进行识别。 • 主要包括两个阶段:训练阶段+识别阶段
训练阶段
• 第一步:假设训练集有10个样本,由灰度图组成,每个样 本大小为M*N(ORL人脸库:分辨率92*112=10304)
• 写出训练样本矩阵:
A x1 ,x 2 ,..., x 10
T
• 其中向量xi为由第i个图像的每一列向量堆叠成一列的MN 维列向量,即把矩阵向量化,如下图所示:
训练阶段
• 如:第i个图像矩阵为
1 2 3 4 5 6 7 8 9
1 4 7 2 5 8 3 6 9
•
则xi为
训练阶段
• 第二步:计算平均脸 计算训练图片的平均脸:
1 10
训练阶段
• 求出C的特征值 i及其正交归一化特征向量 • 根据特征值的贡献率选取前p个最大特征向 量及其对应的特征向量 i • 贡献率是指选取的特征值的和与占所有特征 值的和比,即:
i 1 i 200 i 1
i p
i
a
i
训练阶段
一般取 a 99 % 即使训练样本在前p个特 征向量集上的投影有99%的能量 求出原协,2,..., p)
则“特征脸”空间为:
w u1 , u2 ,... ,u p
训练阶段
• 第六步 • 将每一幅人脸与平均脸的差值脸矢 量投影到“特征脸”空间,即
i w di i 1,2,...,200
T
识别阶段
• 第一步:将待识别的人脸图像 与平均脸的差值 脸投影到特征空间,得到其特征向量表示: