train.m

来自「这是一个改进的人脸识别 算法,希望对大家有用」· M 代码 · 共 68 行

M
68
字号
% 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 + =
减小字号Ctrl + -
显示快捷键?