PCA人脸识别MATLAB代码/ORL库

  • P7_967914
    了解作者
  • 5.1MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-17 01:45
    上传日期
使用PCA算法对ORL的人脸库进行降维,得到主元向量与特征脸图像,可下载运行,可设置特征维度比较识别效果与图像重建效果
PCA-facerecognition-hcf.zip
  • PCA-facerecognition-hcf
  • ORL
  • s17_5.bmp
    11.1KB
  • s1_2.bmp
    11.1KB
  • s26_3.bmp
    11.1KB
  • s8_2.bmp
    11.1KB
  • s25_7.bmp
    11.1KB
  • s9_8.bmp
    11.1KB
  • s40_9.bmp
    11.1KB
  • s5_9.bmp
    11.1KB
  • s40_10.bmp
    11.1KB
  • s32_6.bmp
    11.1KB
  • s6_6.bmp
    11.1KB
  • s39_6.bmp
    11.1KB
  • s4_7.bmp
    11.1KB
  • s18_2.bmp
    11.1KB
  • s37_8.bmp
    11.1KB
  • s33_5.bmp
    11.1KB
  • s6_10.bmp
    11.1KB
  • s11_3.bmp
    11.1KB
  • s24_3.bmp
    11.1KB
  • s8_10.bmp
    11.1KB
  • s31_7.bmp
    11.1KB
  • s13_8.bmp
    11.1KB
  • s14_10.bmp
    11.1KB
  • s2_7.bmp
    11.1KB
  • s27_4.bmp
    11.1KB
  • s22_5.bmp
    11.1KB
  • s11_1.bmp
    11.1KB
  • s24_4.bmp
    11.1KB
  • s26_6.bmp
    11.1KB
  • s9_6.bmp
    11.1KB
  • s15_8.bmp
    11.1KB
  • s11_9.bmp
    11.1KB
  • s23_2.bmp
    11.1KB
  • s30_10.bmp
    11.1KB
  • s28_1.bmp
    11.1KB
  • s34_9.bmp
    11.1KB
  • s7_2.bmp
    11.1KB
  • s7_6.bmp
    11.1KB
  • s23_9.bmp
    11.1KB
  • s15_2.bmp
    11.1KB
  • s19_10.bmp
    11.1KB
  • s37_1.bmp
    11.1KB
  • s34_5.bmp
    11.1KB
  • s10_2.bmp
    11.1KB
  • s33_6.bmp
    11.1KB
  • s16_5.bmp
    11.1KB
  • s29_3.bmp
    11.1KB
  • s2_3.bmp
    11.1KB
  • s19_7.bmp
    11.1KB
  • s6_9.bmp
    11.1KB
  • s1_5.bmp
    11.1KB
  • s13_3.bmp
    11.1KB
  • s39_4.bmp
    11.1KB
  • s35_10.bmp
    11.1KB
  • s29_7.bmp
    11.1KB
  • s3_9.bmp
    11.1KB
  • s16_2.bmp
    11.1KB
  • s22_1.bmp
    11.1KB
  • s8_7.bmp
    11.1KB
  • s2_1.bmp
    11.1KB
  • s19_5.bmp
    11.1KB
  • s40_8.bmp
    11.1KB
  • s37_10.bmp
    11.1KB
  • s32_9.bmp
    11.1KB
  • s18_1.bmp
    11.1KB
  • s15_4.bmp
    11.1KB
  • s30_9.bmp
    11.1KB
  • s12_3.bmp
    11.1KB
  • s16_4.bmp
    11.1KB
  • s18_8.bmp
    11.1KB
  • s27_1.bmp
    11.1KB
  • s19_4.bmp
    11.1KB
  • s38_2.bmp
    11.1KB
  • s22_4.bmp
    11.1KB
  • s24_10.bmp
    11.1KB
  • s12_7.bmp
    11.1KB
  • s11_2.bmp
    11.1KB
  • s23_7.bmp
    11.1KB
  • s33_4.bmp
    11.1KB
  • s38_3.bmp
    11.1KB
  • s27_6.bmp
    11.1KB
  • s3_1.bmp
    11.1KB
  • s31_1.bmp
    11.1KB
  • s21_7.bmp
    11.1KB
  • s7_3.bmp
    11.1KB
  • s40_4.bmp
    11.1KB
  • s22_9.bmp
    11.1KB
  • s40_1.bmp
    11.1KB
  • s31_5.bmp
    11.1KB
  • s2_9.bmp
    11.1KB
  • s34_3.bmp
    11.1KB
  • s24_7.bmp
    11.1KB
  • s4_5.bmp
    11.1KB
  • s17_6.bmp
    11.1KB
  • s14_1.bmp
    11.1KB
  • s39_8.bmp
    11.1KB
  • s24_1.bmp
    11.1KB
  • s20_2.bmp
    11.1KB
内容介绍
%--------------------------------------------------------clear clear all %clc %close all %--------------------------------------------------------read face database image_rows=112;%人脸图像分辨率 行 image_cols=92; ImageSize=image_rows*image_cols; image_format='.bmp'; ORL_people=40;%人脸种类数 ORL_people_face=10;%每个人样本数 ORL_face_num=ORL_people*ORL_people_face; %获取当前m文件路径并得到人脸图像地址的一部分 add0=mfilename;%当前M文件名 add1=mfilename('fullpath');%当前m文件路径 i=length(add0); j=length(add1); address_workplace=add1(1:j-i-1); address_orl=[address_workplace, '\ORL\s']; %读取数据并转化 allimages=zeros(ImageSize,ORL_face_num);%所有样本 face_label=zeros(1,ORL_face_num);%样本分类 for i=1:ORL_people for j=1:ORL_people_face %得到图像数据并转化为列向量 image=double(imread(strcat(address_orl,num2str(i),'_',num2str(j),image_format))); image=imresize(image,[image_rows image_cols]); image=reshape(image,ImageSize,1); %将列向量放入一个矩阵 allimages(:,(i-1)*ORL_people_face+j)=image; face_label((i-1)*ORL_people_face+j)=i;%标记对应列向量的人脸分类 end end %--------------------------------------------------------计算平均脸 average_face=sum(allimages')'*1/ORL_face_num; average_face1=uint8(reshape(average_face,[image_rows image_cols])); figure; imshow(average_face1); %--------------------------------------------------------PCA primary_vector_num=1000;%主元基向量数量选择 %计算协方差矩阵 allimages1=bsxfun(@minus,allimages,average_face);%图像数据每个维度均减去均值 cov=allimages1*allimages1'/ORL_face_num;%得到协方差矩阵 %得到协方差矩阵的特征值特征向量 [eig_vector,eig_value]=eig(cov); eig_value=diag(eig_value); %特征值,特征向量降序排列 [eig_value_descend,index]=sort(eig_value,'descend'); eig_vector_descend=eig_vector(:,index); primary_vector=eig_vector_descend(:,1:primary_vector_num);%列向量 primary_value=eig_value_descend(1:primary_vector_num); figure plot(1:primary_vector_num,primary_value); %保存主元数据 address=[address_workplace,'\primary_vector.mat']; save(address,'primary_vector'); address=[address_workplace,'\primary_value.mat']; save(address,'primary_value'); %-------------------------------------------------------显示人脸图像主分量 primary_vector_num1=100:100:1000; %平均脸图像主分量 display_pca_face(average_face,primary_vector,primary_vector_num1,image_rows,image_cols) %显示第一个人脸主分量 display_pca_face(allimages(:,1),primary_vector,primary_vector_num1,image_rows,image_cols) %-------------------------------------------------------计算样本间距 %计算人脸图像主元坐标 %primary_vector=primary_vector(:,1:100); face_pca_coordinate=primary_vector'*allimages;%坐标为列向量,得到400个新坐标 distance=zeros(400,400); for i=1:ORL_face_num for j=1:ORL_face_num distance(i,j)=euler_distance(face_pca_coordinate(:,i),face_pca_coordinate(:,j)); end end %绘样本间距离图 figure j=1:ORL_face_num; for i=1:10 col=fix(i/ORL_people_face)/ORL_people; hold on plot(j,distance(i,:),'LineWidth',1,'Color',[col 1-col col]); end %统计样本最相似图像的准确率 aa=1:10:391; distance1=distance(aa,:);%每幅图像与每人第一个图像的距离矩阵 identify_correct=0; for i=1:ORL_people for j=2:ORL_people_face k=i*(ORL_people_face-1)+j; [dis,index]=sort(distance1(:,k),'ascend'); if index(1)==i identify_correct=identify_correct+1;%识别正确则记录 end end end ratio_correct=identify_correct/((ORL_people_face-1)*ORL_people); display(ratio_correct);
评论
    相关推荐
    • 遗传算法Matlab程序
      应用数字群算法设计数字滤波器的matlab程序,遗传算法是最近几年流行的优化算法
    • A*算法Matlab 代码
      A*算法Matlab 代码,输入为自定义地图或图片,图片中默认绿色为起始地址,红色为终点,二值化化后进行路径规划。本文件中共有7张测试图,从20*20-640*480像素。
    • Q算法MATLAB仿真
      移动机器人路径规划MATLAB仿真,使用Q-Learning算法
    • 遗传算法MATLAB应用
      老师上课的参考书 主要是关于遗传算法的一些MATLAB应用,十分有意思 希望大家能喜欢
    • retinex算法MATLAB代码
      retinex算法是目前比较流行且重要的图像增强算法,主要是通过将影响图像质量的照度分量去除,得到图像本来面目的原理!利用了人类视觉系统的特性!
    • 遗传算法matlab
      matlab程序下的遗传算法
    • PSO算法matlab程序
      PSO算法的标准程序,程序使用matlab语言
    • 遗传算法matlab
      遗传算法是自然选择和群体学基础上的非数值优化方法。提供了些matlab实例计算
    • 遗传算法matlab
      matlab是科学计算常用的工具,遗传算法也是一种目前比较流行的一种算法,利用matlab写的遗传算法代码,供大家参考。
    • 遗传算法matlab代码
      遗传算法matlab代码,能够正常运行,对于刚开始接触遗传算法的人员有很好的帮助