Hello Mat

 找回密码
 立即注册
查看: 9876|回复: 0

基于主成分分析PCA的人脸识别

[复制链接]

1319

主题

1547

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22631
发表于 2018-1-9 22:22:31 | 显示全部楼层 |阅读模式
基于主成分分析PCA的人脸识别:  
视频链接:https://pan.baidu.com/s/1qZe0Las
录制的视频是算法底层原理讲解,底层代码实现,方便大家真正掌握算法实质,开发出更加出色的算法。录制视频的初衷是:避免读者朋友利用大把时间学习已有常见算法,本系列视频旨在让读者朋友快速深入了解这些常见算法原理,有更多的时间去研究更加高大上算法(价值)。

具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1

运行环境:win7+32bit+matlab2014a
      
       PCA主成分分析算法,能够将样本图像特征向量分解,得到特征值和特征向量,然后根据选取的特征值个数进行特征脸的构建,选取主成分个数为20,图像大小为112x92,特征脸向量是一个10304x20的矩阵,每列是一个10304维的主分量(样本协方差矩阵的本征向量)。
  1. clc,clear,close all
  2. warning off
  3. path = './ORL92112/bmp/';
  4. if(exist('ORL92112.mat'))
  5.     load('ORL92112.mat')
  6. else
  7.     k1 = 1; k2=1;
  8.     for i=1:40
  9.         paths = [path, 's', num2str(i),'/'];
  10.         for j=1:10
  11.             im = imread([paths, num2str(j), '.BMP']);
  12.             if(mod(j,2))  % train
  13.                 trainImages2D(:,:,k1) = im;
  14.                 trainImages1D(:,k1) = im(:);
  15.                 trainLabels(k1) = i;
  16.                 k1=k1+1;
  17.             else      % test
  18.                 testImages2D(:,:,k2) = im;
  19.                 testImages1D(:,k2) = im(:);
  20.                 testLabels(k2) = i;
  21.                 k2=k2+1;
  22.             end
  23.         end
  24.     end
  25.     save ORL92112.mat trainImages2D trainImages1D trainLabels testImages2D testImages1D testLabels
  26. end
  27. %% 特征脸计算
  28. numEigs = 199;   % 特征向量个数
  29. [meanFace, WhiteFace, Eigenfaces] = EigenfaceCore(trainImages1D, numEigs);
  30. % for i=1:20
  31. %     im = Eigenfaces(:,i);
  32. %     im = reshape(im,[112,92]);
  33. %     subplot(5,4,i), imshow(im,[])
  34. % end
  35. %% 测试图像
  36. TestImage = testImages2D(:,:, 1);  % 选择一张图像
  37. Recognized_index = Face_Recognition(TestImage, meanFace, WhiteFace, Eigenfaces);
  38. SelectedImage = trainImages2D(:,:,Recognized_index);
  39. figure,
  40. subplot(121),imshow(TestImage,[]); title('测试图像')
  41. subplot(122),imshow(SelectedImage,[]); title('识别匹配图像')

  42. %% 遍历
  43. for i=1:size(testImages2D,3)
  44.     TestImage = testImages2D(:,:, i);  % 选择一张图像
  45.     Recognized_index = Face_Recognition(TestImage, meanFace, WhiteFace, Eigenfaces);
  46.     testSimu(1,i) = Recognized_index;
  47. end
  48. accuracy = AccCompute( testSimu, testLabels );
  49. disp(['测试精度:  ',num2str(accuracy)])
复制代码
子函数参考:PCA(Principal Component Analysis)主成分分析---降维处理

        PCA算法利用特征向量矩阵实现对训练样本及测试样本的特征提取及降维。在均方误差取得最小值时,该算法对目标图像进行降维并提取其全局特征信息。但是该算法主要描述的是人脸图像的全局特征信息,没有充分考虑到不同类样本间的差异性,导致人脸局部特征信息存在一定程度的缺失。
       程序识别精度:0.9




相关帖子

算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-10-31 18:24 , Processed in 0.236274 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表