资源简介
使用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
相关资源
- matlab人脸识别和特征提取
- 高光谱图像pca分析特征提取
- pca源码matlab
- matlab人脸识别217995
- PCA人脸识别Eigenface特征脸Matlab
- RPCA图像去噪算法
- MATLAB 对iris数据集进行PCA
- 基于KL变换的人脸识别 matlab
- 遥感影像融合_数字图像处理的matlab程
- 基于Matlab行人检测系统
- 基于TE过程的PCA程序matlab
- Face Recognition with KNN in MATLAB(12017108
- 人脸识别yale数据.mat格式
- 基于PCA和SVM的人脸识别.zip
- 基于SVD分解和最近邻算法的高维人脸
- MATLAB人脸识别考勤系统摄像头,记录
- PCA算法实现人脸识别基于matlab GUI界面
- 基于matlab的人脸识别271850
- 2D2DPCA人脸识别matlab代码/ORL库
- PCA人脸识别MATLAB代码/ORL库
- matlab结课大作业人脸识别是否戴口罩
- PCA人脸识别论文附MATLAB程序
- KPCA matlab实现
- 应用matlab计算人脸识别率
- 个人收集的人脸识别经典算法源码
- 基于K-L变换的人脸识别系统
- 基于matlab的人脸识别源代码235297
- 基于PCA使用Yale人脸数据库的人脸识别
- 降维技术matlab工具箱
- 人脸识别系统
评论
共有 条评论