【人脸识别】用于人脸识别的二维PCA(Matlab识别)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

二维PCA(2D-PCA)是一种基于PCA的人脸识别方法,它通过利用图像的二维结构信息来提高人脸识别的性能。 传统的PCA方法是基于将图像展开成一维向量进行处理的,但它忽略了图像的空间结构信息。而二维PCA则考虑了图像的二维结构,可以更有效地提取图像中的特征。维PCA能够更好地捕获图像中的空间结构信息,提高了特征的区分度和稳定性。 与传统的一维PCA相比,二维PCA提取的特征更具有判别性,有助于提高人脸识别的准确性。通过分块处理,二维PCA可以降低特征提取的计算复杂度,提高了算法的效率。综上所述,二维PCA是一种利用图像的二维结构信息进行人脸识别的方法,它在提高特征的判别性和稳定性方面具有优势,是人脸识别领域的重要研究方向之一。

📚2 运行结果

主函数部分代码:

clc
clear all;
load ORL_FaceDataSet;  % Loading face dataset. ORL consists of 40 classes, each comprising 10 samples
A=double(ORL_FaceDataSet);

%  Specifying the numbers of training and testing samples, and also the
%  number of eigenvectors (DIM) 
%-----------------------------------------------------------------------
Num_Class=40;
No_SampleClass=10;
No_TrainSamples=5;
No_TestSamples=5;
DIM=6;    % DIM can be changed form 1 to n

% Separating the dataset into training and testing sets, and then labeling.    
%-------------------------------------------------------------------------------------------
[TrainData, TestData]=Train_Test(A,No_SampleClass,No_TrainSamples,No_TestSamples);
[m,n,TotalTrainSamples] = size(TrainData);
[m1,n1,TotalTestSamples] = size(TestData);
[TrainLabel,TestLabel]=LebelSamples(Num_Class, No_TrainSamples, No_TestSamples);

% Computing image covariance (scatter) matrix
%-----------------------------------------------------------------------------
TrainMean = mean(TrainData,3); % Total mean of the training set
Gt=zeros([ n n]);
for i=1:TotalTrainSamples
    Temp = TrainData(:,:,i)- TrainMean;
    Gt = Gt + Temp'*Temp;
end
Gt=Gt/TotalTrainSamples; 

% Applying eigen-decompostion to Gt and returning transformation matrix
% 
%---------------------------------------------------------------------------------
[EigVect1,EigVal1]=eig_decomp(Gt);
EigVect=EigVect1(:,1:DIM); 

% Deriving training feature matrices
%----------------------------------------------------------------------------------

for i=1:TotalTrainSamples
    Ytrain(:,:,i)=TrainData(:,:,i)*EigVect;
end

% Testing and Classification
%----------------------------------------------------
TestResult = zeros(TotalTestSamples,1);


for i=1:TotalTestSamples
    
    Distance = zeros(TotalTrainSamples,1);
    
    Ytest = TestData(:,:,i)* EigVect; % Deriving test feature matrix
   
    for j=1:TotalTrainSamples

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]孙吏功,王辰灏,冯嘉琪,等.基于DSC与超球面损失的遮挡人脸识别研究[J/OL].计算机仿真:1-7[2024-05-22].http://kns.cnki.net/kcms/detail/11.3724.tp.20240506.1604.010.html.

[2]李德龙,成钰,柴瑞瑞,等.地铁涉恐安检人脸识别系统配置效力信号博弈模型——基于暴恐分子情绪和袭击资源有限视角[J/OL].系统科学与数学:1-26[2024-05-22].http://kns.cnki.net/kcms/detail/11.2019.O1.20240428.1717.026.html.

🌈4 Matlab代码实现

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值