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 :

algorithme de remplissage en 4 connexité (lent) -> image non remplie complètement


Sujet :

C

  1. #1
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut algorithme de remplissage en 4 connexité (lent) -> image non remplie complètement
    Bonjour,
    j'ai écrit une fonction de remplissage en 4 connexité, mais le résultat n'est pas "plein". Il y a beaucoup de pixels oubliés. Cela vient-il du fait qu'il s'agit d'une '4-connexité' et non d'un '8-connexité'?

    Code c : 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
    void flood_fill (image I, int x, int y, colour couleur_de_remplissage)
    {
     int position_P1 = image_offset (I, x, y);
     
     fifo F = standard_empty_fifo_create (NULL, NULL, NULL, NULL);
     fifo_push (F, (void*) position_P1);
     
     
     int position_P_nord = 0;
     int position_P_sud = 0;
     int position_P_est = 0;
     int position_P_ouest = 0;
     
     int position_P_diagonale_haut_gauche = 0;
     int position_P_diagonale_bas_gauche = 0;
     int position_P_diagonale_haut_droite = 0;
     int position_P_diagonale_bas_droite = 0;  
     
     
     while (!is_fifo_empty (F))
      {
        /* 
       assert (position_P1 >= 0);
       assert (position_P_nord >= 0);
       assert (position_P_sud < I->h);
       assert (position_P_est < I->w);
       assert (position_P_ouest >= 0);
       */
     
       if (position_P_sud > I->h) position_P_sud = I->h - 1;
       if (position_P_nord < 0) position_P_nord = 0;
       if (position_P_est < 0) position_P_est = 0;
       if (position_P_ouest > I->w) position_P_ouest = I->w -1;
     
     
       position_P1 = (int) fifo_pop (F);   
     
     
     
     
       /*if ((I->pixel[position_P1] != c) && (I->pixel[position_P1] == 0x000000FF)) return;*/
       /*if (I->pixel[position_P1] == 0x000000FF) return;*/
       if (I->pixel[position_P1] != couleur_de_remplissage) I->pixel[position_P1] = couleur_de_remplissage;
     
     
       position_P_nord = position_P1 - I->w;
       position_P_sud = position_P1 + I->w;
       position_P_est = position_P1 + 1;
       position_P_ouest = position_P1 - 1;
     
       position_P_diagonale_haut_gauche = position_P_nord - 1;
       position_P_diagonale_bas_gauche = position_P_sud - 1;
       position_P_diagonale_haut_droite = position_P_nord + 1;
       position_P_diagonale_bas_droite = position_P_nord + 1;  
     
    /*
       if (position_P_diagonale_haut_gauche < 0) position_P_diagonale_haut_gauche = 0;
     
       if (position_P_diagonale_haut_droite > I->w) position_P_diagonale_haut_droite = I->w - 1;
       if (position_P_diagonale_haut_droite < 0) position_P_diagonale_haut_droite = 0;   
     
       if (position_P_diagonale_bas_droite > I->w) position_P_diagonale_haut_droite = I->w - 1;
       if (position_P_diagonale_bas_droite > I->h) position_P_diagonale_bas_droite = I->h - 1;   
     
       if (position_P_diagonale_bas_gauche < 0) position_P_diagonale_bas_gauche = 0;
       if (position_P_diagonale_bas_gauche > I->h) position_P_diagonale_bas_gauche = I->h -1;   
     
    */
     
       if ((I->pixel[position_P_nord] != couleur_de_remplissage) && (I->pixel[position_P_nord] != 0x000000FF)) 
         fifo_push (F, (void*) position_P_nord);
     
       if ((I->pixel[position_P_sud] != couleur_de_remplissage) && (I->pixel[position_P_sud] != 0x000000FF)) 
         fifo_push (F, (void*) position_P_sud);
     
       if ((I->pixel[position_P_est] != couleur_de_remplissage) && (I->pixel[position_P_est] != 0x000000FF)) 
         fifo_push (F, (void*) position_P_est);
     
       if ((I->pixel[position_P_ouest] != couleur_de_remplissage) && (I->pixel[position_P_ouest] != 0x000000FF)) 
         fifo_push (F, (void*) position_P_ouest);
     
     
    /*        
        if ((I->pixel[position_P_diagonale_haut_gauche] != couleur_de_remplissage) && (I->pixel[position_P_diagonale_haut_gauche] != 0x000000FF)) fifo_push (F, (void*) position_P_diagonale_haut_gauche);
     
       if ((I->pixel[position_P_diagonale_haut_droite] != couleur_de_remplissage) && (I->pixel[position_P_diagonale_haut_droite] != 0x000000FF)) fifo_push (F, (void*) position_P_diagonale_haut_droite);
     
     
       if ((I->pixel[position_P_diagonale_bas_gauche] != couleur_de_remplissage) && (I->pixel[position_P_diagonale_bas_gauche] != 0x000000FF)) fifo_push (F, (void*) position_P_diagonale_bas_gauche);
      
       if ((I->pixel[position_P_diagonale_bas_droite] != couleur_de_remplissage) && (I->pixel[position_P_diagonale_bas_droite] != 0x000000FF)) fifo_push (F, (void*) position_P_diagonale_bas_droite);
          
            
      */      
     
     
     
     
     
       fifo_remove(F);
     
      }
     
     fifo_destroy(&F);
     
    }
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    position_P_diagonale_bas_droite = position_P_nord + 1;
    Il semble déjà qu'un bug se soit glissé ici.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    position_P_diagonale_bas_droite = position_P_nord + 1;
    Il semble déjà qu'un bug se soit glissé ici.
    Il me semble que cette partie est commenté car il ne l'utilise pas en 4-conexités...

    Moi je miserai plutot sur le fifo_remove ligne 100 qui n'as pas lieu d'être puisqu'un fifo_pop (ligne 36) est censé retiré l'élément de tête...
    Cela dit, il me semble que le calcul
    position_P_nord = position_P1 - I->w;
    position_P_sud = position_P1 + I->w;
    position_P_est = position_P1 + 1;
    position_P_ouest = position_P1 - 1;
    est faux pour est et ouest aux abord de l'image!... il est plus facile de passer par de la 2d(x,y) ...
    Pourquoi ne pas simplement pusher un vecteur 2D et juste faire la conversion 1D pour l'accès au tableau?

  4. #4
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    Bonjour et merci pour votre intérêt sur la question.

    Effectivement, la position de la diagonale bas droite n'était pas bonne.
    J'utilise la 4 connexité. Je commente la 8 connexité car j'ai des erreurs de segmentation en pagaille.

    Et, je ne l'avais pas vu, mais c'est vrai, la fonction fifo_pop retire l'élément après qu'on l'ait récupéré. A la différence de fifo_remove, qui retire purement et simplement l'élément, sans qu'on l'ait récupéré.

    Merci à tous deux, je reviendrai ici pour vous dire si j'ai réussi (ou pas) à faire tourner ma fonction de remplissage.

  5. #5
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    Bon, voilà, en rajoutant le pixel en haut à gauche et le pixel en bas à droite, j'arrive presque à ce que je veux, sauf qu'il y a deux pixels non peints (à côté de chaque "fenêtre" - j'ai dessiné une maison - elle est pas belle ma maison ?)

    ça ne marche toujours pas en 8 connexité.

    Code c : 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
    void flood_fill (image I, int x, int y, colour couleur_de_remplissage)
    {
     int position_P1 = image_offset (I, x, y);
     
     fifo F = standard_empty_fifo_create (NULL, NULL, NULL, NULL);
     fifo_push (F, (void*) position_P1);
     
     
     int position_P_nord = 0;
     int position_P_sud = 0;
     int position_P_est = 0;
     int position_P_ouest = 0;
     
     int position_P_diagonale_haut_gauche = 0;
     int position_P_diagonale_bas_gauche = 0;
     int position_P_diagonale_haut_droite = 0;
     int position_P_diagonale_bas_droite = 0;  
     
     
     while (!is_fifo_empty (F))
      {
       assert (position_P1 >= 0);
       assert (position_P_nord >= 0);
       assert (position_P_sud < (I->h * I->w));
       assert (position_P_est < (I->w * I->h));
       assert (position_P_ouest >= 0);
     
       position_P1 = fifo_pop(F);
       fifo_remove(F);
     
       if (I->pixel[position_P1] != couleur_de_remplissage) I->pixel[position_P1] = couleur_de_remplissage;
     
     
       position_P_nord = position_P1 - I->w; 
       position_P_sud = position_P1 + I->w; 
       position_P_est = position_P1 + 1;     
       position_P_ouest = position_P1 - 1; 
     
       if ((I->pixel[position_P_nord] != couleur_de_remplissage) && (I->pixel[position_P_nord] != 0x000000FF))
         fifo_push (F, (void*) position_P_nord);
     
       if ((I->pixel[position_P_sud] != couleur_de_remplissage) && (I->pixel[position_P_sud] != 0x000000FF))
         fifo_push (F, (void*) position_P_sud);
     
       if ((I->pixel[position_P_est] != couleur_de_remplissage) && (I->pixel[position_P_est] != 0x000000FF))
         fifo_push (F, (void*) position_P_est);
     
       if ((I->pixel[position_P_ouest] != couleur_de_remplissage) && (I->pixel[position_P_ouest] != 0x000000FF))
         fifo_push (F, (void*) position_P_ouest);
     
     
     
       position_P_diagonale_haut_gauche = position_P1 - I->w - 1;
       position_P_diagonale_bas_droite = position_P1 + I->w + 1;  
     
       if ((I->pixel[position_P_diagonale_haut_gauche] != couleur_de_remplissage) && (I->pixel[position_P_diagonale_haut_gauche] != 0x000000FF)) fifo_push (F, (void*) position_P_diagonale_haut_gauche);
     
     
       if ((I->pixel[position_P_diagonale_bas_droite] != couleur_de_remplissage) && (I->pixel[position_P_diagonale_bas_droite] != 0x000000FF)) fifo_push (F, (void*) position_P_diagonale_bas_droite); 
     
      }
     
     fifo_destroy(&F);
     
    }
    Images attachées Images attachées  

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par piponux Voir le message
    Et, je ne l'avais pas vu, mais c'est vrai, la fonction fifo_pop retire l'élément après qu'on l'ait récupéré. A la différence de fifo_remove, qui retire purement et simplement l'élément, sans qu'on l'ait récupéré.
    .
    Ben supprime tes appels à fifo_remove alors!
    Tes calculs de position sont toujours incorrects!

  7. #7
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    Si je retire fifo remove j ai des erreurs de segmentation.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    C'est quoi le code lié à fifo?
    tu n'as pas corrigé les formules de calcul de position...

  9. #9
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    le code lié à fifo se trouve sur multiparadigme, le site de Jacques Olivier Lapeyre, la partie sur les listes doublement chaînées, unité 2, dossier Cfuns. "dlist.c"

    J'ai beau retourner le pb dans tous les sens , il me semble que je ne me trompe pas dans le calcul de la position des pixels.

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par piponux Voir le message
    le code lié à fifo se trouve sur multiparadigme, le site de Jacques Olivier Lapeyre, la partie sur les listes doublement chaînées, unité 2, dossier Cfuns. "dlist.c"
    T'es obligé d'utiliser ça?

    Citation Envoyé par piponux Voir le message
    J'ai beau retourner le pb dans tous les sens , il me semble que je ne me trompe pas dans le calcul de la position des pixels.
    Quand tu es sur un bord (gauche / droite) et que tu veux bouger vers l'Est / L'Ouest, juste décrémenter / incrémenter de 1 fait que tu changes de bord!
    Au lieu de floodfill ta maison (au centre de l'image), divise ton image en 2 verticalement et colorie un seul coté pour voir?)
    Sinon la 4-connexité marche très bien (en c# par contre!)
    Le "plus" de la 8 connexité c'est quelle considère ce genre de chemin possible:
    1 0 0
    0 1 0
    0 0 1
    mais il ne se présente pas dans ton dessin...
    (
    la 4 connexité a besoins d'une diagonale plus large pour passée:
    1 1 0 0
    0 1 1 0
    0 0 1 1
    )

  11. #11
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    Citation Envoyé par devbreizhbugs Voir le message
    T'es obligé d'utiliser ça?
    Non, mais c'est un modèle de liste doublement chaînée avec un curseur, une cellule appelée "sentinelle" et un memory pool. C'est trés rapide.
    La liste vide ne pointe pas sur NULL, mais sur la sentinelle.
    moi, j'aime bien.

  12. #12
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut OHHHH YESSSS!!!!!!!
    Ca y est, j'ai réussi à faire ce que je voulais!
    la fonction marche du feu de dieu :

    - plus aucune erreur de segmentation (en fait, il y avait un if qui n'avait pas d'effet car je n'avais pas mis les accolades au bon endroit).
    -> au passage, les positions de mes pixels sont bonnes depuis le début

    voici donc le code de ma fonction (je ne suis pas peu fier)

    j'ai réussi en suivant l'algo sur wikipedia : https://fr.wikipedia.org/wiki/Algori..._par_diffusion

    Code c : 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
     
    void flood_fill (image I, int x, int y, colour couleur_de_remplissage)
    {
     
     int position_P1 = image_offset (I, x, y);
     
     fifo F = standard_empty_dlist_create (NULL, NULL, &generic_int_print, NULL);
     fifo_push (F, (void*) position_P1);
     
     
     int position_P_nord = image_offset (I, x, y-1);
     int position_P_sud = image_offset (I, x, y+1);
     int position_P_est = image_offset (I, x+1, y);
     int position_P_ouest = image_offset (I, x-1, y);
     
     
     int position_P_diagonale_haut_gauche = image_offset (I, x-1, y-1);
     int position_P_diagonale_bas_droite = image_offset (I, x+1, y+1); 
     
     int position_P_diagonale_bas_gauche = image_offset (I, x-1, y+1);
     int position_P_diagonale_haut_droite = image_offset (I, x+1, y-1); 
     
     while (!is_fifo_empty (F))
      {
     
       assert ((position_P1 >= 0) || (position_P1 < I->w * I->h));
       assert ((position_P_nord >= 0) || (position_P_nord < I->w * I->h));
       assert (position_P_sud < (I->h * I->w));
       assert (position_P_est < (I->w * I->h));
       assert ((position_P_ouest >= 0) || (position_P_ouest < I->w * I->h));
     
     
       position_P1 = fifo_pop(F);
       position_P_nord = position_P1 - I->w; 
       position_P_sud = position_P1 + I->w;  
       position_P_est = position_P1 + 1; 
       position_P_ouest = position_P1 - 1; 
     
       if (I->pixel[position_P1] != 0xFF0000FF && I->pixel[position_P1] != couleur_de_remplissage)
        {
     
        I->pixel[position_P1] = couleur_de_remplissage;
     
        if (I->pixel[position_P_nord] != couleur_de_remplissage && I->pixel[position_P_nord] != 		0x000000FF)     
           fifo_push (F, (void*) position_P_nord);
        if (I->pixel[position_P_est] != couleur_de_remplissage && I->pixel[position_P_est] != 		0x000000FF)      
           fifo_push (F, (void*) position_P_est);
        if (I->pixel[position_P_sud] != couleur_de_remplissage && I->pixel[position_P_sud] != 		0x000000FF)     
           fifo_push (F, (void*) position_P_sud);
        if (I->pixel[position_P_ouest] != couleur_de_remplissage && I->pixel[position_P_ouest] != 		0x000000FF)       
           fifo_push (F, (void*) position_P_ouest);
     
        }  
     
      }
     
     fifo_destroy(&F);
     
    }


    Images attachées Images attachées  

  13. #13
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    Avec une image TGA 24 bit non compressée en dimensions 1600 x 960 :

    real 0m0.131s
    user 0m0.120s
    sys 0m0.000s

    Je ne trouve pas cet algo si lent finalement.
    Images attachées Images attachées  

  14. #14
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Passe tout de même ton code à valgrind, c'est pas bon signe ces crashes qui disparaissent.

  15. #15
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    ok, merci du conseil, le temps d'installer valgrind et de voir comment ça marche.

  16. #16
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    Effectivement, fifo_pop retire l'élément retourné de la liste, donc la version où il était suivi d'un fifo_remove ne pouvait pas être correcte.

    Jacques-Olivier

  17. #17
    Membre actif

    Homme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juillet 2015
    Messages : 176
    Points : 202
    Points
    202
    Par défaut
    Bonjour Jacques-Olivier.
    Un grand merci pour tes vidéos sur youtube. C'est clairement cela qui m'a donné le goût de programmer en c.
    Effectivement, avec fifo_remove, je détruisais deux fois plus de cellules que ce que je croyais. Donc, quand j'arrivais en fin de liste, je demandais à ce que la dernière cellule soit détruite, alors qu'elle n'existait déjà plus.

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

Discussions similaires

  1. algorithme de remplissage
    Par Aquaa dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 02/02/2010, 09h40
  2. Algorithmes de remplissage (≠ flood fill)
    Par Luke58 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 24/11/2009, 16h40
  3. Algorithme de remplissage d'une matrice
    Par bettiboo94 dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/05/2008, 05h53
  4. Algorithme de remplissage d'un triangle
    Par nicolas66 dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 15/05/2007, 10h00
  5. [XSLT] algorithme de remplissage d'armoire
    Par tylenchus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/03/2007, 14h10

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