资源简介
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
相关资源
- 高光谱图像pca分析特征提取
- pca源码matlab
- PCA人脸识别Eigenface特征脸Matlab
- RPCA图像去噪算法
- MATLAB 对iris数据集进行PCA
- 利用WOA算法优化libsvm中SVDD算法的参数
- 遥感影像融合_数字图像处理的matlab程
- MATLAB实现k-svd和mod信号处理
- 基于TE过程的PCA程序matlab
- 基于PCA和SVM的人脸识别.zip
- 基于SVD分解和最近邻算法的高维人脸
- PCA算法实现人脸识别基于matlab GUI界面
- 基于matlab的人脸识别271850
- 2D2DPCA人脸识别matlab代码/ORL库
- PCA人脸识别MATLAB代码/ORL库
- PCA人脸识别论文附MATLAB程序
- KPCA matlab实现
- 基于K-L变换的人脸识别系统
- ksvd算法matlab稀疏表示中训练字典
- 基于PCA使用Yale人脸数据库的人脸识别
- 降维技术matlab工具箱
- 2dpca的matlab源码
- 基于pca的图像压缩与重建代码
- 基于pca的图像压缩算法
- 2DPCA的matlab代码
- 基于PCA算法实现人脸识别完整代码文
- MATLAB下人脸图像的PCA重构
- LDA与PCA的讲解与matlab演示
- 基于PCA的点云位姿估计与粗拼接,m
- 基于PCA的人脸识别matlab)
评论
共有 条评论