⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recognition.m

📁 这是一个改进的人脸识别 算法,希望对大家有用
💻 M
字号:
% Copyright (C) 2006, Eric Chi.
% chijing80@hotmail.com

% Test samples set.
testSamplesNum = samplesPerPerson - trainSamplesNum;
testSamplesTotal = testSamplesNum * personsNum;

% Recogniton begin.
trainX = eigenFaces' * trainSamplesSet; % Training set face sub space.

% Load test samples set.
recSamplesSet = zeros(imWidth*imHeight, testSamplesTotal);

for i = 1 : personsNum
    for j = 1 : testSamplesNum
        
        imFileName = strcat(imDir, 's');
        imFileName = strcat(imFileName, int2str(i));
        imFileName = strcat(imFileName, '/');
        imFileName = strcat(imFileName, int2str(j + trainSamplesNum));
        imFileName = strcat(imFileName, imFormat);
    
        image = imread(imFileName);
        if ( ndims(image) == 3 )
            image2 = rgb2gray(image);
        else
            image2 = image;
        end
        recSamplesSet( : , (i-1)*testSamplesNum + j ) = reshape( ...
                        imresize(image2, [imHeight, imWidth], 'nearest') ...
                        , imHeight*imWidth, 1);
    end
end

recX = eigenFaces' * recSamplesSet;

% Calculate Euclidian distances.
distances = dist(trainX', recX);

% Get classifications.
classification = zeros( size(recX, 2), 1 );

for i = 1 : size(recX, 2)
    minv = min(distances( : , i));
    aux = find(distances( : , i) == minv);
    classification(i) = aux(1);
end

% Recognition end.

% Statistic recognition rate.
success = 0;

for i = 1 : size(classification, 1)
    p1 = floor( (i-1)/testSamplesNum );
    p2 = floor( (classification(i)-1)/trainSamplesNum );
    if p1  == p2
        success = success + 1;
    end
end

recRate = success/testSamplesTotal

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -