gusucode.com > Matlab脸部识别程序源码 > code/code/vj_test.m

    function [h_final acc] = vj_test(adaboost_train,testdata)
% [h_final acc] = vj_test(adaboost_train,testdata)
%
%       Nathan Sutter, Fall 2007
%       Last Updated, 11/14/07
%-------------------------------------------------------------------------
    precomp_data = testdata;
    all_features = precomp_data.imagefeatures;
    numfeat = precomp_data.numfeat;
    labels = precomp_data.labels;
    [numtotal d] = size(all_features);
    [numlearners ydim] = size(adaboost_train.weak_learners.learner(:));
    h = zeros(numlearners,numtotal);
    
    %compute decisions for each individual learner
    for i=1:numtotal                                                    %for each image
        for t=1:numlearners                                             %compute a decision for each learner
            learner_feature = adaboost_train.weak_learners.feature(t);
            learner_weights = adaboost_train.weak_learners.learner(t).weights;
            curdata = zeros(numtotal,1);
            for k=1:numtotal
                image_features = all_features{k};                       %get the kth set of features (features from kth image)
                curdata(k) = image_features(learner_feature);           %get the jth feature from the kth set of features.
            end
            curdata = [curdata ones(numtotal,1)];                       %pad with ones for the perceptron
            h(t,:) = perceptron(learner_weights,curdata);
        end
    end
    
    h_final = zeros(numtotal,1);                                        %vector for global classifications
    for i=1:numtotal                                                    %do classification for each based on the ensemble
        insum = 0;
        for z=1:numlearners
            insum = insum + adaboost_train.alphas(z)*h(z,i); 
        end
        if insum >= .5*sum(adaboost_train.alphas(:))
            h_final(i) = 1;
        else
            h_final(i) = -1;
        end
    end
    keyboard
end