|
基于主成分分析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维的主分量(样本协方差矩阵的本征向量)。- clc,clear,close all
- warning off
- path = './ORL92112/bmp/';
- if(exist('ORL92112.mat'))
- load('ORL92112.mat')
- else
- k1 = 1; k2=1;
- for i=1:40
- paths = [path, 's', num2str(i),'/'];
- for j=1:10
- im = imread([paths, num2str(j), '.BMP']);
- if(mod(j,2)) % train
- trainImages2D(:,:,k1) = im;
- trainImages1D(:,k1) = im(:);
- trainLabels(k1) = i;
- k1=k1+1;
- else % test
- testImages2D(:,:,k2) = im;
- testImages1D(:,k2) = im(:);
- testLabels(k2) = i;
- k2=k2+1;
- end
- end
- end
- save ORL92112.mat trainImages2D trainImages1D trainLabels testImages2D testImages1D testLabels
- end
- %% 特征脸计算
- numEigs = 199; % 特征向量个数
- [meanFace, WhiteFace, Eigenfaces] = EigenfaceCore(trainImages1D, numEigs);
- % for i=1:20
- % im = Eigenfaces(:,i);
- % im = reshape(im,[112,92]);
- % subplot(5,4,i), imshow(im,[])
- % end
- %% 测试图像
- TestImage = testImages2D(:,:, 1); % 选择一张图像
- Recognized_index = Face_Recognition(TestImage, meanFace, WhiteFace, Eigenfaces);
- SelectedImage = trainImages2D(:,:,Recognized_index);
- figure,
- subplot(121),imshow(TestImage,[]); title('测试图像')
- subplot(122),imshow(SelectedImage,[]); title('识别匹配图像')
- %% 遍历
- for i=1:size(testImages2D,3)
- TestImage = testImages2D(:,:, i); % 选择一张图像
- Recognized_index = Face_Recognition(TestImage, meanFace, WhiteFace, Eigenfaces);
- testSimu(1,i) = Recognized_index;
- end
- accuracy = AccCompute( testSimu, testLabels );
- disp(['测试精度: ',num2str(accuracy)])
复制代码 子函数参考:PCA(Principal Component Analysis)主成分分析---降维处理
PCA算法利用特征向量矩阵实现对训练样本及测试样本的特征提取及降维。在均方误差取得最小值时,该算法对目标图像进行降维并提取其全局特征信息。但是该算法主要描述的是人脸图像的全局特征信息,没有充分考虑到不同类样本间的差异性,导致人脸局部特征信息存在一定程度的缺失。
程序识别精度:0.9
|
|