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 :

Remplacer les boucles for


Sujet :

Images

  1. #1
    Membre éclairé Avatar de Lost in
    Inscrit en
    Janvier 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 268
    Par défaut Remplacer les boucles for
    Salut !!

    Est ce que c'est possible d'avoir la même chose sans utiliser les boucles for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for i=1:m-2
        for j=1:n-2
           nablaNW=abs(im(i,j)-im(i+1,j+1));
           nablaN=abs(im(i,j+1)-im(i+1,j+1));
           nablaNE=abs(im(i,j+2)-im(i+1,j+1));
           nablaW=abs(im(i+1,j)-im(i+1,j+1));
           nablaE=abs(im(i+1,j+2)-im(i+1,j+1));
           nablaSW=abs(im(i+2,j)-im(i+1,j+1));
           nablaS=abs(im(i+2,j+1)-im(i+1,j+1));
           nablaSE=abs(im(i+2,j+2)-im(i+1,j+1));
    end
    end
    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Salut.
    for i=1:m-2
    for j=1:n-2
    nablaNW=abs(im(i,j)-im(i+1,j+1));
    Je ne comprends pas ce que tu veux faire. nablaNW est égal à la dernière différence !
    Si tu veux une différence de pixels peut-être "diff" est approprié.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut
    La ton code peut se résumer a ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    i=m-2
    j=n-2
    nablaNW=abs(im(i,j)-im(i+1,j+1));
    nablaN=abs(im(i,j+1)-im(i+1,j+1));
    nablaNE=abs(im(i,j+2)-im(i+1,j+1));
    nablaW=abs(im(i+1,j)-im(i+1,j+1));
    nablaE=abs(im(i+1,j+2)-im(i+1,j+1));
    nablaSW=abs(im(i+2,j)-im(i+1,j+1));
    nablaS=abs(im(i+2,j+1)-im(i+1,j+1));
    nablaSE=abs(im(i+2,j+2)-im(i+1,j+1));
    Ta boucle ne garde que le dernier passage et tes variables sont écrasé a chaque fois
    Je ne sais pas ce que tu veux faire donc je peux pas optimiser ton code.

    Pour aide : sum(sum(matrice)) fait la somme de tous les membres de ta matrice.

  4. #4
    Membre éclairé Avatar de Lost in
    Inscrit en
    Janvier 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 268
    Par défaut
    Citation Envoyé par Robert Dumarais Voir le message

    Ta boucle ne garde que le dernier passage et tes variables sont écrasé a chaque fois
    Je ne sais pas ce que tu veux faire donc je peux pas optimiser ton code.

    Pour aide : sum(sum(matrice)) fait la somme de tous les membres de ta matrice.
    Non, je n'écrase pas le contenu de mes variables !! le code que j'ai donné représente seulement la partie que je désire optimiser

    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
     
    for i=1:m-2
        for j=1:n-2
           nablaNW=abs(im(i,j)-im(i+1,j+1));
           nablaN=abs(im(i,j+1)-im(i+1,j+1));
           nablaNE=abs(im(i,j+2)-im(i+1,j+1));
           nablaW=abs(im(i+1,j)-im(i+1,j+1));
           nablaE=abs(im(i+1,j+2)-im(i+1,j+1));
           nablaSW=abs(im(i+2,j)-im(i+1,j+1));
           nablaS=abs(im(i+2,j+1)-im(i+1,j+1));
           nablaSE=abs(im(i+2,j+2)-im(i+1,j+1));
     
    % suite du code où j'utilise mes variables avant de les écraser
     
    end
    end

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut
    Pour enlever les boucles, il faut connaître toute ta boucle.

  6. #6
    Membre éclairé Avatar de Lost in
    Inscrit en
    Janvier 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 268
    Par défaut
    Salut,

    Le but de mon poste et d'apprendre à manipuler le voisinage (3x3 ou plus) d'un pixel sur toute l'image sans utiliser de boucles

    Je sais que cela peut se faire en utilisant la fonction diff malheureusement je ne l'ai pas très bien comprise en lisant le help de matlab.

    Je reformule ma question :

    Comment calcule-t-on les gradients dans toutes les directions dans un voisinage(3x3 ou 4x4...etc) sans utiliser de boucles ?

    Merci pour votre aide.

  7. #7
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Hello,

    Si j'ai bien compris tu aimerais vectoriser un code du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    m = 5;
    n = 5;
    im = rand(m,n);
    nablaNW = zeros(m-1, n-1);
     
    for i=1:m-1
        for j=1:n-1
           nablaNW(i,j)=abs(im(i,j)-im(i+1,j+1));
        end
    end
    tu peux le faire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nablaNW2 = abs(im(1:end-1, 1:end-1) - im(2:end, 2:end));
    voir aussi la fonction diff et gradient.

    Salutations,

    Greg

  8. #8
    Membre éclairé Avatar de Lost in
    Inscrit en
    Janvier 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 268
    Par défaut
    Merci paradize3 c'est exactement ce que je cherchais et grâce à toi je l'ai trouvé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. les boucles for en java
    Par blackhock dans le forum Général Java
    Réponses: 9
    Dernier message: 12/05/2009, 15h04
  2. les boucles for..next
    Par dispa dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/06/2007, 15h23
  3. Réponses: 2
    Dernier message: 07/05/2007, 17h46
  4. Réponses: 3
    Dernier message: 20/09/2006, 23h35
  5. [VBS]Bug sur les boucles for.
    Par méphistopheles dans le forum VBScript
    Réponses: 7
    Dernier message: 24/03/2006, 23h17

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