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

Images Discussion :

Traitement par ACP


Sujet :

Images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut Traitement par ACP
    Bonjour,

    je doit effectuer une analyse en composantes principales pour des images. J'ai écrit le script et souhaiterai savoir si ce' dernier est correct

    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
    clear all
    %%% on charge les données %%%
    database=load('essai_realdefau_1_kHz.dat');
     
     
    xmin=250
    xmax=500
    ymin=250
    ymax=500
     
     
     
    %%%%%%%%%%%reduction de ma matrice de données%%%%%%%%%%%%%%%%%
    for j=xmin:xmax
        for k=ymin:ymax
            database_reduit(k-ymin+1,j-xmin+1)=database(k,j);
     
            [nb_ex,nb_feat] = size(database_reduit);
        end
    end
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
     
    %%%%%%%%Calcul de la matrice de donnée centrée et normée%%%%%%%%%%%%%%
    for j=1:nb_feat
        rowsum = sum(database_reduit(:, j))/nb_ex;
        ect=std(database_reduit(:, j));
        for k=1:nb_ex
            database1=(database_reduit(k,j)-rowsum)/(ect)^0,5;
           database2_reduit(k,j)=database1;
        end
    end
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
     
    %%% on calcule la matrice de covariance %%%
    S = cov(database2_reduit);
     
    %%% on calcule les vecteurs propres et les valeurs propres %%%
    [vec_p, L] = eig(S);
     
    %%% on trie les vecteurs propres selon les valeurs propres %%%
    [val_p, ind] = sort(diag(L));
    val_p = flipud(val_p);
    ind = flipud(ind);
    vec_p2 = vec_p(:,ind);
    % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    %%%%%%%%%%%%Calcul de la matrice d'estimation%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%(Matrice vecteurs propores*Matrice données centrée%%%%%%%%%%%%%%%%%
    S_chapo=vec_p2'*database2_reduit
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
     
     
    %coeff=corr2(S_chapo,database2_reduit)
    Puis, je souhaiterai représenter une "nouvelle" image, en ne tenant plus compte du premier vecteur propre(seulement de tous les autres).Je ne sais pas comment faire?

    Merci pour votre aide.

    Mariono

  2. #2
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut Traitement image par ACP
    Rebonjour,

    en fait je voulais savoir :
    avec une matrice d'estimation obtenue par ACP, comment puis je visualiser ma nouvelle image selon l'axe du deuxième vecteur propre sous Matlab?

    Merci d'avance.

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 329
    Par défaut
    bonjour,
    pour effectuer l'ACP sur une matrice sous matlab, c mieux d'utiliser la fonction
    pcacov() cherchez la dans le help

    Amicalement

    Hanane

  4. #4
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut
    Je vous remercie pour votre réponse. Le problème est que je ne suis pas sure de posséder la statistic toolbox, et donc pas toutes les fonctions...
    De plus je ne comprends pas trop ce que renvoie la fonction pcacov...

    Enfin, je ne comprend pas non plus ce passage du help:

    pcacov does not standardize V to have unit variances. To perform principal components analysis on standardized variables, use the correlation matrix R = V./(SD*SD')), where SD = sqrt(diag(V)), in place of V. To perform principal components analysis directly on the data matrix, use princomp.

    Pourriez vous m'éclairer?

    Je vous remercie.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut
    D'aprés ce que je comprend, pcacov renvoit la matrice des estimations avec chaque ligne qui correspond à un axe(par ordre décroissant)?

    Ne faut il pas centrer la matrice de données au départ?

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 329
    Par défaut
    pouriez nous expliquer es ce que vous voulez faire par ACP

    dans mon application que j'ai utilisépcacov c'est de reduire le nombre de composante c'est a dire quand j'ai travaillé avec une image couleur c'est a dire j'ai 3 Matrice(R G B) .
    j''ai utiliser la methode de l'ACP pour reduire le nombre de matrice

    A+

Discussions similaires

  1. [FTP] Traitement par lot
    Par gandalf76fr dans le forum Langage
    Réponses: 5
    Dernier message: 06/11/2007, 23h04
  2. Interprétation dune partie d'un traitement par tkprof
    Par Mehdilis dans le forum Administration
    Réponses: 2
    Dernier message: 27/06/2007, 09h47
  3. Réponses: 4
    Dernier message: 11/06/2007, 16h28
  4. optimiser un traitement par du multi-threading
    Par in dans le forum Général Java
    Réponses: 10
    Dernier message: 10/10/2006, 09h46

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