资源简介
使用PCA主成分分析方法提取特征脸,然后在特征脸空间使用最近邻分类器进行分类
代码片段和文件信息
clear ;
tic;
%% 打开训练图像集
Files = dir(‘face33\train\*.bmp‘); %打开文件夹中所有图像
Dir = ‘face33\train\‘;
nImg=length(Files);
for k = 1:length(Files);
Filename = [Dir Files(k).name];
Img = imread(Filename);
x(:k) = Img(:); % 把图像放在矩阵x的第k列
%% 将二维Img转换成一维列向量时,按列抽取:即是把第i+1列置于第i列后
end;
nImages = k; % 图像个数
imsize = size(Img); % 图像维度
nPixels = imsize(1)*imsize(2); % 图像总像素数
x = double(x)/255; % 将x转换为double型
%% 计算每幅训练图像的与平均脸的差值
avrgx = mean(x‘)‘; %计算均值图像
for i=1:1:nImages
x(:i) = x(:i) - avrgx; % x每一列减去平均脸
end;
%% 奇异值分解方法计算协方差矩阵的特征值和特征向量
%{
Image尺寸为142x120=17040,协方差阵S=xx‘,则S为17040x17040矩阵,计算其特征值、特征向量计算量很大
于是计算cov_mat=x‘x特征值、特征向量,则x‘x*v=lamda*v,左右同乘以x:xx‘x*v=lamda*x*v
得到S特征向量为:lamda^-0.5*x*v
%}
cov_mat = x‘*x; %协方差矩阵为x*x’,这里用奇异值分解
[VD] = eig(cov_mat); %V为以特征向量为列的矩阵,D为特征值组成的对角阵
%V = x*V*(abs(D))^-0.5; %求协方差矩阵x*x‘的特征向量
%% 计算特征脸个数
add = 0.0;
DD=diag(D); %将对角阵D转换为矢量
sum = sum(DD);
for lamda_k =nImages:-1:1 %由于在D按照从小到大排列,故逆序遍历
add = add + DD(lamda_k);
if add/sum > 0.95
相关资源
- PCA人脸识别matlab代码
-
人脸数据集 Extended Yale B Databa
seEYa - pca matlab代码 数据降维
- 基于MATLAB的人脸识别源码
- PCA故障诊断matlab实现200654
- 人脸识别原理与实战:以MATLAB为工具
- LDA人脸识别MATLAB含k近邻算法
- PCA主成分分析法和ICA独立成分分析法
- 基于pca特征提取的笑脸表情识别代码
- MATLAB人脸识别PCA实现
- 人脸识别MATLAB,亲测可运行
- PCA完整程序MATLAB
- 人脸识别MATLAB源程序
- 基于PCA的人脸识别代码MATLAB版
- KPCA用于TE过程的程序matlab)
- 像素级图像融合算法主成分分析-pca算
- PCA Matlab
- 基于主元分析算法pca的系统故障诊断
- 基于fisher的线性判别分析(LDA)人脸
- KPCA matlab实现代码
- matlab 实现主成分分析PCA
- 基于KL变换的人脸识别
- 层次分析法MATLAB
- 主成分分析法matlab源代码
- matlab基于bp神经网络的人脸识别
- 模式识别-PCA简单应用MATLAB实现
- PCA图像融合
- PCA特征提取方法
- 主成分分析PCA的MATLAB程序
- 主成分分析 PCA matlab实现
评论
共有 条评论