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

📄 feret.m

📁 pca主成分分析算法matlab源码
💻 M
字号:
function [FERET] = feret(distMat, rank)
%
% PROTOTYPE
% function [FERET] = feret(distMat, rank)
% 
% USAGE EXAMPLE(S)
% pcaResultsCOS = feret(pcaDistMatCos, 50);
% pcaResultsCOS.perc(1)         - gives rank 1 result
% plot(pcaResultsL1.cms)        - plots the CMS curve
%
% GENERAL DESCRIPTION
% Implements the standard FERET performance analysis, with standard FERET
% test sets: fa (gallery), fb, fc, dup1, dup2.
% 
% REFERENCES
% P.J. Phillips, H. Moon, S.A. Rizvi, P.J. Rauss, The FERET Evaluation
% Methodology for Face-Recognition Algorithms, IEEE Trans. on PAMI,
% Vol. 22, No. 10, October 2000, pp. 1090-1104
%
% All references available on http://www.face-rec.org/algorithms/
% 
% INPUTS
% distMat       - distance matrix for a given metric, produced by the
%                 createDistMat function
% rank          - wanted highest rank of a CMS curve
%
% OUTPUTS
% FERET structure with the 4 main elements (fb, fc, dup1 and dup2) and the 
% folowing sub-elements:
% perc          - performance (percentage of correctly recognized images)
%                 at each rank. perc(1) rank 1 result, perc(2) the
%                 improvement at rank 2: (result at rank 1) - (result at rank
%                 2)
% rank1			- rank 1 performance (percentage)
% cms           - CMS curve
% numProbeImgs  - total number of images in a given probe set
%
% NOTES / COMMENTS
% * The following files must either be in the same path as this function
%   or somewhere in Matlab's path:
%       1. listAll.mat          - containing the list of all 3816 FERET images
%       2. feretGallery.mat     - list of gallery images
%       3. fb.mat               - list of fb probe set images       
%       4. fc.mat               - list of fc probe set images  
%       5. dup1.mat             - list of dup1 probe set images       
%       6. dup2.mat             - list of dup2 probe set images  
%
% ** Developed using Matlab 7
%
%
% REVISION HISTORY
% -
% 
% RELATED FUNCTIONS (SEE ALSO)
% pca, createDistMat
% 
% ABOUT
% Created:        03 Sep 2005
% Last Update:    -
% Revision:       1.0
% 
% AUTHOR:   Kresimir Delac
% mailto:   kdelac@ieee.org
% URL:      http://www.vcl.fer.hr/kdelac
%
% WHEN PUBLISHING A PAPER AS A RESULT OF RESEARCH CONDUCTED BY USING THIS CODE
% OR ANY PART OF IT, MAKE A REFERENCE TO THE FOLLOWING PAPER:
% Delac K., Grgic M., Grgic S., Independent Comparative Study of PCA, ICA, and LDA 
% on the FERET Data Set, International Journal of Imaging Systems and Technology,
% Vol. 15, Issue 5, 2006, pp. 252-260
%


% Load feretGallery and probe lists
load listAll;
load feretGallery;
load fb;
load fc;
load dup1;
load dup2;

% Constants (number of images in feretGallery and probes)
numGalleryImgs = size   (feretGallery, 1);
numFbImgs = size        (fb, 1);
numFcImgs = size        (fc, 1);
numDup1Imgs = size      (dup1, 1);
numDup2Imgs = size      (dup2, 1);

% Get the list of positions where feretGallery images are located in the list
% of all images and store it in variable index
feretGalleryIndex = getIndex (feretGallery, listAll);

% Get the list of all the probe images
fbIndex = getIndex (fb, listAll);
fcIndex = getIndex (fc, listAll);
dup1Index = getIndex (dup1, listAll);
dup2Index = getIndex (dup2, listAll);

% Calculate ranks for the CMS curve
% The results are stores in a structure
FERET.fb = getResults (distMat, feretGallery, feretGalleryIndex, fb, fbIndex, numFbImgs, rank);
FERET.fc = getResults (distMat, feretGallery, feretGalleryIndex, fc, fcIndex, numFcImgs, rank);
FERET.dup1 = getResults (distMat, feretGallery, feretGalleryIndex, dup1, dup1Index, numDup1Imgs, rank);
FERET.dup2 = getResults (distMat, feretGallery, feretGalleryIndex, dup2, dup2Index, numDup2Imgs, rank);



%**************************************************************************
%   Statistics (CMS curve, total number of probe images) 
%**************************************************************************

function [RESULTS] = getResults (distMat, feretGallery, feretGalleryIndex, probe, probeIndex, numProbeImgs, rank)

for j = 1 : rank
    for i = 1 : numProbeImgs

        position = probeIndex(i);
        currentRow = distMat(position,:);
        reduced = currentRow(1, feretGalleryIndex);
                
        [Y, I] = sort(reduced);
        inx = I(j);
        
        % Determine if G=H based on the first 5 characters of the filename
        G = char(feretGallery(inx));
        H = char(probe(i));
        correct(i) = strncmp(G, H, 5);
        % if G=H correct(i)=1, else 0
        
    end;
    
    % Rank 1 result (percentage)
    if j == 1
    	RESULTS.rank1 = (sum(correct)/numProbeImgs)*100;
    end;
    
    % Percentage of correctly recognized images for a given probe set
    RESULTS.perc(j) = (sum(correct)/numProbeImgs)*100;
    
		% CMS curve
    RESULTS.cms(j) = sum(RESULTS.perc(1:j));
    
end;

% Total number of probe images
RESULTS.numProbeImgs = numProbeImgs;
%**************************************************************************




%**************************************************************************
%   Find positions of probe or feretGallery images in the list of all images 
%**************************************************************************

function [index] = getIndex (sub, all)

num = size (sub, 1);
for i = 1 : num
    index(i) = strmatch(sub(i), all);
end;
%**************************************************************************

⌨️ 快捷键说明

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