📄 train.m
字号:
% Copyright (C) 2006, Eric Chi.
% chijing80@hotmail.com
clear
% Training samples set.
imDir = './AT&T/';
imFormat = '.pgm';
personsNum = 30;
samplesPerPerson = 10;
trainSamplesNum = 7;
trainSamplesTotal = trainSamplesNum * personsNum;
imWidth = 80;
imHeight = 80;
% Load training samples set.
trainSamplesSet = zeros(imWidth*imHeight, trainSamplesTotal);
for i = 1 : personsNum
for j = 1 : trainSamplesNum
imFileName = strcat(imDir, 's');
imFileName = strcat(imFileName, int2str(i));
imFileName = strcat(imFileName, '/');
imFileName = strcat(imFileName, int2str(j));
imFileName = strcat(imFileName, imFormat);
image = imread(imFileName);
if ( ndims(image) == 3 )
image2 = rgb2gray(image);
else
image2 = image;
end
trainSamplesSet( : , (i-1)*trainSamplesNum+j ) = reshape( ...
imresize( image2, [imHeight, imWidth], 'nearest' ) ...
, imWidth*imHeight, 1 );
end
end
% Calculate the mean image.
meanImage = zeros(imWidth*imHeight);
meanImage = mean(trainSamplesSet, 2);
% Calculate the difference images.
diffImages = zeros(imWidth*imHeight, trainSamplesTotal);
for i = 1 : (trainSamplesTotal)
diffImages( : , i ) = trainSamplesSet( : , i ) - meanImage;
end
% Extract eigenfaces.
eigenFaces = zeros(imWidth*imHeight, trainSamplesTotal);
[eigenFaces s v] = svd(diffImages, 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -