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

C++ Discussion :

parcourir une image avec une fenêtre [4*4]


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 39
    Points : 22
    Points
    22
    Par défaut parcourir une image avec une fenêtre [4*4]
    Bonsoir mes amis(es),
    je veux parcourir une image avec une petite fenêtre de 4*4 en chevauchement. Exemple : voir image ci-joint

    je sais comment parcourir l'image avec ce masque(voir le code), mais je sais pas comment en chevauchement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for ( int p1 = 0, x1 = 0; p1 < dim1Im/4; p1++, x1 += support1 )
             for ( int p2 = 0, x2 = 0; p2 < dim2Im/4; p2++, x2 += support2 )
                      for ( int px1 = 0; px1 < support1; px1++ ){
                        for ( int px2 = 0; px2 < support2; px2++ ){
                             buf=(unsigned char)Im(px1+x1,px2+x2);
                             ...
                             ...
                        }
                    }
    je sais pas comment amélioré ce code pour mettre le parcourir en chevauchement!!

    merci d'avance de vos réponses.
    Images attachées Images attachées  

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonsoir,
    Le buf fonctionne avec ordonné et abscisse ? Si oui ceci est peut être un tout ptit peut moins long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            for( int y( 0 ); y != tailleY - 3; y += 3 ) //tailleY Hauteur image
                    for( int x( 0 ); x != tailleX - 3; x += 3 ) //tailleX Largeur image
                    { //Ici ce passe le parcours 4 * 4
                            for( int y2( y ); y2 < 4 + y; y2++ ) //Parcours de la hauteur
                                    for( int x2( x ); x2 < 4 + x; x2++ ) // De la largeur
                                            buf=(unsigned char)Im( x2 , y2 );
                    }

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    oui, parce que je l'utilise pour faire autre chose.

  4. #4
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Si la taille de la fenetre 4x4 est statique, mieux faut derouler la boucle interne

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    merci pour votre réponse,
    oui ma fenêtre est statique., mais j'ai compris comment dérouler la boucle interne?
    pouvez-vous m'expliquer?

  6. #6
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 042
    Points : 2 232
    Points
    2 232
    Par défaut
    Bonjour,

    Si tu veux que ta matrice évolue selon un pas (1 ou 2 colonnes), cela s'appelle une convolution. Tu trouveras de nombreux algorithme sur le net.
    http://www.aishack.in/2010/08/image-...tion-examples/

    Pour des raisons de simplicité de relecture, je te conseille de séparer ta matrice de convolution et ton parcours en 2 élément distincts ( classe ).
    Puis de faire parcourir ta matrice selon un "pas" de 1 ou 2 élément.

    Une façon de simplifié les boucles est également de rendre ton images sur un vecteur simple, exemple:

    1 1 1 1 1 1 1 1
    2 2 2 2 2 2 2 2
    3 3 3 3 3 3 3 3
    4 4 4 4 4 4 4 4
    5 5 5 5 5 5 5 5
    6 6 6 6 6 6 6 6
    7 7 7 7 7 7 7 7
    8 8 8 8 8 8 8 8

    devient simplement dans un vecteur ou C-Array

    1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8

    ta matrice peut être représenter de la même façon. ( Attention au débordement !! )

    Tu te retrouveras avec une simple boucle for sur un tableau d'une dimension.
    Homer J. Simpson


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 12h17
  2. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 12h51
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59
  4. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 15h19

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