%faces.mat为ORL人脸图像库,共40人,每人10幅图像,其中每人的前5幅作为训练样本,
clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')
%MATLAB/verilog/python/opencv/tensorflow/caffe/C/C++等算法仿真
%微信公众号:matlabworld
load faces.mat;
a1=faces;%%样本库
pattennumbers=40;
accu=zeros(1,pattennumbers);
for ii=1:pattennumbers
%patten提取用pca method
%其中每人的前5幅作为训练样本,训练样本总数为200,后5幅作为测试分类样本,
%测试样本总数也为200
%clear all
i=0;
j=0;
trainsamples=[];
testsamples=[];
index1=[1 2 3 4 5];
index2=[6 7 8 9 10];
numbpatten=ii*10;
while(j<numbpatten)
index1=[j+1 j+2 j+3 j+4 j+5];
index2=[j+6 j+7 j+8 j+9 j+10];
trainsamples=[trainsamples,a1(:,index1)] ;
testsamples=[testsamples,a1(:,index2)];
j=j+10;
end
%% 通过训练样本求出人脸的特征子空间U
%training
num=numbpatten/2;%训练样品数
trainsamples=trainsamples';
testsamples=testsamples';
trainsamplesmean=mean(trainsamples);%samplesmean维数为1*10304,为训练样本的均值行向量
testsamplesmean=mean(testsamples);
trainallsamples=trainsamples-repmat(trainsamplesmean,num,1);%200*10304
testallsamples=testsamples-repmat(testsamplesmean,num,1);
trainallsamples=trainallsamples';%10304*200 为A矩阵
testallsamples=testallsamples';
a=trainallsamples;
Gt=a'*a;
[V D]=eig(Gt);
[PD index2]=sort(-diag(D));
PV=V(:,index2);
dim=num;%%可以根据特征谱信息来选取
%dim=num;
PV=PV(:,1:dim);%200*50 PY为特征脸空间
U=trainallsamples*PV;%为特征脸空间 10304*100
%% 获得训练样本的特征
Y1=zeros(dim,num);%为训练样本的特征100*200
for i=1:num
Y1(:,i)=U'*trainallsamples(:,i);
end
%% 获得测试样本特征
Y2=zeros(dim,num);%为训练样本的特征100*200
for i=1:num
Y2(:,i)=U'*testallsamples(:,i);
end
%% 采用余弦距离分类器进行分类
num=numbpatten/2;
%num测试人脸数
mdist=zeros(1,num);
for i=1:num
for j=1:num
mdist(j)=(Y1(:,j)'*Y2(:,i))/(norm(Y1(:,j))*norm(Y2(:,i)));%余弦距离分类器
end
[dist ,index200]=sort(mdist);
class=ceil(index200(num)/5);
i1=ceil(i/5);
%ii
if class==i1;
accu(1,ii)=(accu(1,ii)+1);
% accu
end
end
accu(1,ii)= accu(1,ii)/num;
end
plot(accu,'b-o')
ylabel('正确率');
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2022A,包含仿真操作录像,操作录像使用windows media player播放。 2.领域:人脸特征数据识别 3.仿真效果:仿真效果可以参考博客同名文章《基于PCA特征提取的人脸特征数据识别算法matlab仿真》 4.内容:基于PCA特征提取的人脸特征数据识别算法matlab仿真。基于PCA(主成分分析,Principal Component Analysis)的人脸特征提取算法是一种广泛应用于人脸识别领域的经典方法。PCA的主要目标是通过线性变换将原始高维人脸图像数据降维到一个低维空间中,同时保留尽可能多的方差信息或“主要”特征。在人脸识别任务中,PCA主要用于减少计算量、去除冗余信息和突出关键面部特征。 5.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
资源推荐
资源详情
资源评论
收起资源包目录
基于PCA特征提取的人脸特征数据识别算法matlab仿真.rar (9个子文件)
1.jpg 22KB
20240305_234923.mp4 2.19MB
code
faces.mat 3.93MB
Runme_PCAface.m 2KB
func
unvec.m 256B
faceselecpopu.m 831B
crtbp.m 300B
facefitness.m 706B
PCA.m 1KB
共 9 条
- 1
资源评论
- 2301_807888172024-05-30资源太好了,解决了我当下遇到的难题,抱紧大佬的大腿~
fpga和matlab
- 粉丝: 17w+
- 资源: 2626
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java医院人事管理系统源码数据库 MySQL源码类型 WebForm
- 道路养护病害数据集-含原图和标签
- 2023-04-06-项目笔记 - 第三百一十九阶段 - 4.4.2.317全局变量的作用域-317 -2025.11.16
- 2023-04-06-项目笔记 - 第三百一十九阶段 - 4.4.2.317全局变量的作用域-317 -2025.11.16
- 1503ANDH1503002016_20241116222825
- 时间序列-黄金-15秒数据
- C#HR人事管理系统源码数据库 MySQL源码类型 WebForm
- C#CS餐饮管理系统源码数据库 SQL2008源码类型 WinForm
- 蛾类识别系统(深度学习+UI可视化)
- 时间序列-黄金-5秒数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功