MATLAB人脸识别系统

题目:MATLAB人脸识别系统

算法流程:    

本系统运用PCA算法来实现人脸特征提取,然后通过计算欧式距离来判别待识别测试人脸,本个系统框架图如下:

图:  人脸识别系统框架图

整个系统的流程是这样的,首先通过图像采集建立人脸库,这个人脸库里的人脸图像必须是格式及像素统一的,然后针对库里的人脸进行人脸训练,利用PCA进行人脸特征提取,获取特征矩阵向量组,将测试人脸投缘到特征子空间中,运用欧氏距离,在人脸库里查找相应的人脸图像,并输出。

   

  • 算法介绍

 基于PCA算法的人脸特征提取

2.1PCA的基本原理

     PCA中文全称主成分分析 法(Principal Component Analysis)[6]。掌握事物间主要区别的,运用统计学的分析方法,它可以是复杂的问题得到简化,找到物质之间的本质区别,用事物的主要影响因素来解决问题。计算主成分的主要目的是用来降维,也就把将高维空间数据降到低维空间中去。这种线性变化经常被用到数据的压缩和分析中。它就是以K-L变换为基础,运用它的正交变换可以降低数据的运算量。

    在这个系统中,库内人脸读入后被变成为灰度数值图像,把这些数值矩阵按行或者按列排练构成一个原始图像空间,运用K-L变换有效的提取人脸图像的特征,这是为下面的小空间模式匹配奠定基础,这个原始图像空间是维数较高的矩阵,通过K-L变换后获得一组新的正交基。分析比较人脸训练样本中的一些统计特征,保留主要的特征向量,减少向量矩阵的维数,获得了维数较小的人脸空间。在参与训练的人脸样本中,一种是不一样人脸组成的总体散分布矩阵,另一种是同个人脸的不同表情的平均图片或者说是类间散布矩阵。第一种的运用对人脸图像的背景光线的要求很高,后者可以很好的避免光线带来的的干扰,且有减少计算量的作用。选择的正交基的原则是取大去小,所谓的大、小就是特征值的的大小,特征值的数值反应一个人脸的基本特征轮廓,在主要成分分析中就是以它主要能量特征值对应的向量来做基底,用这个方法可以很好的进行人脸重构,重构的人脸必须是参与算法的人脸图像,否则实现重建的效果较差。 

    通过降维后,就可以获得特征空间,将待识别人脸图像进行旋转变换,可以有效的降低维数[9]。也就是用特征空间的向量的线性代数运算来表示。这样就可以把人脸识别这个过程转换成m维空间坐标系数分类问题,至于如何分类可以采用简单的距离进行判断。

2.2 基于PCA的特征提取

    PCA人脸识别特征提取有几个过程:人脸图像获取和处理;构造人脸库并且训练形成特征子空间;提取特征值和特征向量。下面对整个PCA提取特征过程中的步骤做一个详细的描述。

  1. 人脸图像获取和处理,构造人脸库

通过拍照的方式,在背景设定的环境下,拍取人脸图像,然后对人脸样本采取前期的处理,其中包括人脸图像格式的变换,是否需要灰度处理等等。这些都要根据算法需求来对图像进行前期的预处理。PCA算法运用的统计学原理中的K-L变换的原理,对图像背景要求一致,而对光线的要求也一般,前期只要保证图像像素和格式一致就可以。最后保存图像,建立人脸库。

2.训练人脸库

人脸图像获取后,要放进人脸库,把人脸库统一配置后,选取每个人若干图片参与训练,变成训练矩阵。假定格式统一的人脸图像的像素为n*m,采取变换转化为一维矩阵,然后按行相连构成N=m*n维数的的矢量,每个人脸图像都可以视为N维空间中的一点,运用K-L变换可以将这个图像转换到底维的空间当中去,这样描述更加具体。

3.计算人脸图像的生成矩阵

采用训练后的人脸图像构成样本集,产生协方差矩阵可以用以下几种方法求出来(三种等价):

                   

### 使用MATLAB实现人脸识别系统的概述 人脸识别系统在多个领域有着广泛应用,如安全监控和社会媒体平台。MATLAB作为一种功能强大的编程语言和集成环境,在开发此类应用方面表现出色[^2]。 #### 步骤一:准备数据集 为了训练和测试人脸识别模型,需要收集一组包含不同个体面部的照片作为数据集。这些照片应当覆盖各种光照条件、角度变化等因素以增强模型鲁棒性。 #### 步骤二:人脸检测 在执行实际的人脸识别前,首先要能够准确定位图像中的人脸位置。这一步可以通过调用MATLAB内置的`vision.CascadeObjectDetector()`函数来轻松完成,该方法实现了经典的Viola-Jones级联分类器算法[^3]: ```matlab % 加载待处理图片 img = imread('example_image.jpg'); % 初始化人脸探测器 faceDetector = vision.CascadeObjectDetector(); % 执行人脸检测 bbox = step(faceDetector, img); % 将矩形框标注于原图之上显示结果 detectedImg = insertObjectAnnotation(img,'rectangle',bbox,'Face'); imshow(detectedImg); ``` #### 步骤三:特征提取与降维 对于每一张被成功检出的人脸图像,下一步就是对其进行预处理并抽取有用的表征信息。这里采用主成分分析(PCA)技术降低维度的同时保留最重要的视觉特性[^4]: ```matlab % 对齐所有人脸至统一大小,并转换成灰度模式 alignedFaces = cellfun(@(f)rgb2gray(imresize(f,[96 96])),faces,'UniformOutput',false); % 展开二维矩阵为向量形式便于后续运算 featureVectors = arrayfun(@(i)double(alignedFaces{i}(:)),1:numel(alignedFaces)); % 应用PCA变换获取低维表示 [coeff,score,~] = pca(cat(2,featureVectors{:})); lowDimFeatures = score(:,1:min(size(score,2),numComponents)); ``` #### 步骤四:建立分类器 有了前面得到的特征描述子之后就可以着手构建最终用于区分不同身份的判别机制了。考虑到效率及准确性之间的平衡,支持向量机(SVM)是一个不错的选择[^1]: ```matlab % 训练SVM模型 svmModel = fitcsvm(lowDimFeatures,labels,... % 设置参数优化选项... 'KernelFunction','linear',... 'Standardize',true,... 'ClassNames',[0;1]); % 测试阶段预测新样本标签 predictedLabels = predict(svmModel,newTestSamples); ``` 以上即构成了一个完整的基于MATLAB框架下的人脸识别流程实例说明。当然具体实施过程中还需要针对特定应用场景做适当调整和完善。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值