资源简介
CroppedYale人脸数据降维的MATLAB代码,使用PCA,SVD和MATLAB自带的PCA对比时间、准确度,可以直接运行。对比中心化给PCA带来的影响;对比PCA与SVD的异同;选取合适的维度k,并观察k个特征向量对应的图像;对比自己实现的PCA算法与matlab自带的PCA函数的性能
代码片段和文件信息
clear;
clc;
% 加载文件
load(‘./CroppedYale/Yale_64x64.mat‘);
% 原样本矩阵A:165*1024
A = fea;
tic
%% 1. Centralization
m = size(A1); % A的行数
n = size(A2); % A的列数
meanA = mean(A); % 求每一列的均值
repmatA = repmat(meanA m 1);
X = A - repmatA; % 样本减去均值,做中心化,X:165*4096
% X = A; % 不用中心化
%% 2. Covariance Matrix
C = X‘ * X./(m-1); % 求协方差矩阵C:4096*4096
%% 3. Eigenvalue Decomposition
% 协方差矩阵C的特征向量,也称特征脸,每一维为一个特征脸
[U D] = eig(C); % 特征向量U:4096*4096; 特征值D:4096*4096
% 按特征值大小排序
grad = sum(D2); % D为对角矩阵,每个元素为相应的特征值,为方便后续处理,这里将特征值放到一个列向量
[sortGrad index] = sort(grad ‘descend‘); % 排序
U = U(: index); % 将对应的特征向量降序排列
k= 1;
% 计算各行累加值所占比例
arr = cumsum(sortGrad) ./ sum(sortGrad);
while ( arr(k 1) <= 0.95 )
k = k + 1;
end
U = U(: 1:k); % 提取前k个特征向量
%% 4. Feature Matrix
% 降维后的矩阵
Y = X * U; % 将样本转化到低维空间,对样本进行降维
toc
%% 5. 还原矩阵
A_re = Y * pinv(U) + repmatA;
%% 6. 显示特征脸
%===========================================
faceW = 64;
faceH = 64;
numPerLine = 11;
ShowLine = 5;
figure
Y = zeros(faceH*ShowLinefaceW*numPerLine);
% 显示特征脸
% for i=0:ShowLine-1
% for j=0:numPerLine-1
% Y(i*faceH+1:(i+1)*faceHj*faceW+1:(j+1)*faceW) = reshape(U(:i*numPerLine+j+1)[faceHfaceW]);
% end
% end
% 显示降维后的人脸
for i=0:ShowLine-1
for j=0:numPerLine-1
Y(i*faceH+1:(i+1)*faceHj*faceW+1:(j+1)*faceW) = reshape(A_re(i*numPerLine+j+1:)[faceHfaceW]);
end
end
imagesc(Y);colormap(gray);
%===========================================
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-04-30 11:39 CroppedYale人脸数据降维\
目录 0 2017-04-30 11:39 CroppedYale人脸数据降维\CroppedYale\
文件 161026 2017-04-04 15:11 CroppedYale人脸数据降维\CroppedYale\Yale_32x32.mat
文件 641318 2017-04-04 15:11 CroppedYale人脸数据降维\CroppedYale\Yale_64x64.mat
文件 1721 2017-04-09 12:44 CroppedYale人脸数据降维\PCA.m
文件 1294 2017-04-09 12:48 CroppedYale人脸数据降维\PCAinMATLAB.m
文件 1211 2017-04-09 12:47 CroppedYale人脸数据降维\SVD.m
相关资源
- KPCA+SVM源代码
- PCA人脸识别定位matlab代码
- 基于matlab,gui的人脸识别(PCA)
- 2dpca的matlab源代码 rar
- 基于PCA及SVM的人脸识别
- exact_alm_rpca
- matlab实现基于PCA的人脸识别算法
- KPCA(经典的MATLAB程序)
- pca与KL变换的综合matlab实现代码
- KSVDMatlab程序
- RPCA 源码 matlab yi Ma
- 基于PCA法的故障检测含matlab代码
- 图像融合算法
- K-SVD实现代码
- PCA和IHS图像融合
- 国外资源 基于PCA的人脸识别matlab代码
- l1-svd稀疏重构算法
- 利用PCA降维方法处理高光谱图像matl
- KPCA故障诊断matlab实现182088
- 基于MATLAB的SVD水印技术
- 谐波恢复中的SVD_TLS算法
- 基于PCA的图像压缩Matlab代码
- MATLAB人脸识别PCALDAKPCABP,可视化界面
- 一个非常经典的KPCA程序
- PCA和LDA人脸识别matlab代码最紧邻分类
- 基于pca实现人脸识别matlab代码
- 掌纹识别PCA
- 基于DWT和SVD结合的水印嵌入MATLAB代码
- SVD算法的MATLAB实现代码
- DPCA 程序编写
评论
共有 条评论