IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

reconnaissance visage eigenfaces


Sujet :

MATLAB

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut reconnaissance visage eigenfaces
    Bonjour,

    J'ai un projet de master dont le sujet porte sur la reconnaissance faciale en utilisant eigenfaces j'ai utilisé la base de donnée orl dont j'ai extrait les visages propres, mais le problème c'est que ne j'arrive pas à évaluer les performances du programme. Taux de fausses acceptations; Taux de faux rejet; taux d'égal erreur

    svp aidez-moi

    merci

    voici le code que j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    clear all
    close all
    clc
    % number of images on your training set.
    M=90;
     
    % Chosen std and mean.
    % It can be any number that it is close to the std and mean of most of the images.
    um=100;
    ustd=80;
     
    % read and show image
    S=[];    % img matrix
    figure(1);
    for i=1:M
        str=strcat('trainingimage','/',int2str(i),'.jpg');    % concatenates two strings that form the name of the image
        eval('img=imread(str);');
        subplot(ceil(sqrt(M)),ceil(sqrt(M)),i)
        imshow(img)
        if i==3
            title('Training set','fontsize',18)
        end
        drawnow;
        [irow icol]=size(img);    % get the number of rows (N1) and columns (N2)
        temp=reshape(img',irow*icol,1);    % creates a (N1*N2)x1 vector
        S=[S temp];    % S is a N1*N2xM matrix after finishing the sequence
    end
     
     
    % Here we change the mean and std of all images. We normalize all images.
    % This is done to reduce the error due to lighting conditions and background.
    for i=1:size(S,2)
        temp=double(S(:,i));
        m=mean(temp);
        st=std(temp);
        S(:,i)=(temp-m)*ustd/st+um;
    end
     
    % show normalized images
    figure(2);
    for i=1:M
        str=strcat(int2str(i),'.jpg');
        img=reshape(S(:,i),icol,irow);
        img=img';
        eval('imwrite(img,str)');
        subplot(ceil(sqrt(M)),ceil(sqrt(M)),i)
        imshow(img)
        drawnow;
        if i==3
            title('Normalized Training Set','fontsize',18)
        end
    end
     
     
    % mean image
    m=mean(S,2);  % obtains the mean of each row instead of each column
    tmimg=uint8(m); % converts to unsigned 8-bit integer. Values range from 0 to 255
    img=reshape(tmimg,icol,irow); % takes the N1*N2x1 vector and creates a N1xN2 matrix
    img=img';
    figure(3);
    imshow(img);
    title('Mean Image','fontsize',18)
     
    % Change image for manipulation
    dbx=[];    % A matrix
    for i=1:M
        temp=double(S(:,i));
        dbx=[dbx temp];
    end
     
    %Covariance matrix C=A'A, L=AA'
    A=dbx';
    L=A*A';
    % vv are the eigenvector for L
    % dd are the eigenvalue for both L=dbx'*dbx and C=dbx*dbx';
    [vv dd]=eig(L);
    % Sort and eliminate those whose eigenvalue is zero
    v=[];
    d=[];
    for i=1:size(vv,2)
        % if(dd(i,i)>1e-4)
        v=[v vv(:,i)];
        d=[d dd(i,i)];
    end
    % end
     
    %sort, will return an ascending sequence
    [B index]=sort(d);
    ind=zeros(size(index));
    dtemp=zeros(size(index));
    vtemp=zeros(size(v));
    len=length(index);
    for i=1:len
        dtemp(i)=B(len+1-i);
        ind(i)=len+1-index(i);
        vtemp(:,ind(i))=v(:,i);
    end
    d=dtemp;
    v=vtemp;
     
    % plottt
    figure(10);
    cumVar=cumsum(dtemp);
    cumVarPercent=cumVar/cumVar(end)*100;
    plot(cumVarPercent, '.-');
    xlabel('No. of eigenvalues');
    ylabel('Cumulated variance percentage (%)');
    title('Variance percentage vs. no. of eigenvalues');
    % fprintf('Saving results into eigenFaceResult.mat...\n');
    % save eigenFaceResult A2 eigVec cumVarPercent rowDim colDim
     
     
     
     
     
    %Normalization of eigenvectors
    for i=1:size(v,2) %access each column
        kk=v(:,i);
        temp=sqrt(sum(kk.^2));
        v(:,i)=v(:,i)./temp;
    end
     
    %Eigenvectors of C matrix
    u=[];
    for i=1:size(v,2)
        temp=sqrt(d(i));
        u=[u (dbx*v(:,i))./temp];
    end
     
    %Normalization of eigenvectors
    for i=1:size(u,2)
        kk=u(:,i);
        temp=sqrt(sum(kk.^2));
        u(:,i)=u(:,i)./temp;
    end
     
     
    % show eigenfaces
    figure(4);
    for i=1:size(u,2)-10
        img=reshape(u(:,i),icol,irow);
        img=img';
        img=histeq(img,255);
        subplot(ceil(sqrt(M)),ceil(sqrt(M)),i)
        imshow(img)
        drawnow;
        if i==3
            title('Eigenfaces','fontsize',18)
        end
    end
     
     
    % Find the weight of each face in the training set
    omega = [];
    for h=1:size(dbx,2)
        WW=[];
        for i=1:size(u,2)
            t = u(:,i)';
            WeightOfImage = dot(t,dbx(:,h)');
            WW = [WW; WeightOfImage];
        end
        omega = [omega WW];
    end
     
     
    % Acquire new image
    % Note: the input image must have a bmp or jpg extension.
    % It should have the same size as the ones in your training set.
    % It should be placed on your desktop
    InputImage = input('Please enter the name of the image and its extension from database test image \n','s');
    InputImage = imread(strcat('C:\Program Files\MATLAB\R2010b\bin\\testimage\',InputImage));
    figure(5)
    subplot(1,2,1)
    imshow(InputImage); colormap('gray');title('Input image','fontsize',18)
    InImage=reshape(double(InputImage)',irow*icol,1);
    temp=InImage;
    me=mean(temp);
    st=std(temp);
    temp=(temp-me)*ustd/st+um;
    % img=reshape(temp,icol,irow);
    % img=img';
    % img=uint8(img);
    % imwrite(img,'C:\Program Files\MATLAB\R2010b\bin\r1.jpg');
    % imshow(img);
    NormImage = temp;
    Difference = temp-m;
     
    p = [];
    aa=size(u,2);
    for i = 1:aa
        pare = dot(NormImage,u(:,i));
        p = [p; pare];
    end
    ReshapedImage = m + u(:,1:aa)*p; %m is the mean image, u is the eigenvector
    ReshapedImage = reshape(ReshapedImage,icol,irow);
    ReshapedImage = ReshapedImage';
    %show the reconstructed image.
    subplot(1,2,2)
    imagesc(ReshapedImage); colormap('gray');
    title('Reconstructed image','fontsize',18)
     
     
     
    InImWeight = [];
    for i=1:size(u,2)
        t = u(:,i)';
        WeightOfInputImage = dot(t,Difference');
        InImWeight = [InImWeight; WeightOfInputImage];
    end
     
    ll = 1:M;
    figure(6)
    subplot(1,2,1:2)
    stem(ll,InImWeight)
    title('Weight of Input Face','fontsize',14)
     
     
    % Find Euclidean distance
    e=[];
    for i=1:size(omega,2)
        q = omega(:,i);
        DiffWeight = InImWeight-q;
        mag = norm(DiffWeight);
        e = [e mag];
    end
     
    kk = 1:size(e,2);
    figure(7)
    subplot(1,2,1:2)
    stem(kk,e)
    title('Eucledian distance of input image','fontsize',14)
     
    MaximumValue=max(e)  % maximum eucledian distance
    MinimumValue=min(e)

  2. #2
    Membre actif
    Femme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Par défaut base ORL
    Bonjour,
    J'ai le meme projet que toi est ce que je peux savoir comment tu as telecharge la base orl j'arrive pas a l'avoir.
    merci davance

Discussions similaires

  1. Détecteur de Haar : reconnaissance de visage
    Par Methode dans le forum OpenCV
    Réponses: 2
    Dernier message: 08/05/2010, 12h31
  2. détermination du seuil optimal pour la reconnaissance des visages
    Par imene_t1 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 01/03/2008, 21h13
  3. reconnaissance des visages
    Par imene_t1 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 10/09/2007, 10h36
  4. Suivi d'images pour reconnaissance de visages
    Par souma86.s dans le forum Images
    Réponses: 3
    Dernier message: 24/05/2007, 13h48
  5. Réseau de neurones - reconnaissance visage
    Par PrAbronsius dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 03/05/2006, 03h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo