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

Contribuez Discussion :

[image] Algorithmes de squelettisation d'images


Sujet :

Contribuez

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 [image] Algorithmes de squelettisation d'images
    Salut,

    Il existe plusieurs algorithmes de squelettisation d'images, je vais essayer de vous expliquer quelques uns, je commence par l'algorithme de Hilditch :


    Considérons le voisinage suivant :

    P1 P2 P3
    P8 P P4
    P7 P6 P5
    Hilditch présente quatre conditions qu’un squelette doit remplir :

    2 < = B(p1) < = 6
    A(p1)=1
    p2.p4.p8=0 ou A(p2)!= 1
    p2.p4.p6=0 ou A(p4)!= 1


    Avec :

    B(p1) = nombre de voisins non nuls de P1.
    A(p1) = nombre de passage de 0,1 de la séquence : P2,p3,p4,p5,p6,p7,p8,p1,p2

    code C++
    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
     
    H=Image2->Picture->Bitmap->Height;
    W=Image2->Picture->Bitmap->Width;
    int Bp,Ap1,Ap2,Ap4;
    for (int i=1;i<=nombreitération; i++)
    {
    for(int x=1;x<W;x++)
            for(int y=1;y<H;y++)
            {
            Bp=0;
            Ap1=0;
            Ap2=0;
            Ap4=0;
     
            if (Image2->Canvas->Pixels[x-1][y-1]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x-1][y]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x-1][y+1]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x][y+1]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x+1][y+1]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x+1][y]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x+1][y-1]==clBlack)Bp=Bp+1;
            if (Image2->Canvas->Pixels[x][y-1]==clBlack)Bp=Bp+1;
     
     
            if (Image2->Canvas->Pixels[x-1][y]==clWhite && Image2->Canvas->Pixels[x-1][y+1]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x-1][y+1]==clWhite && Image2->Canvas->Pixels[x][y+1]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x][y+1]==clWhite && Image2->Canvas->Pixels[x+1][y+1]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x+1][y+1]==clWhite && Image2->Canvas->Pixels[x+1][y]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x+1][y]==clWhite && Image2->Canvas->Pixels[x+1][y-1]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x+1][y-1]==clWhite && Image2->Canvas->Pixels[x][y-1]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x][y-1]==clWhite && Image2->Canvas->Pixels[x-1][y-1]==clBlack)Ap1=Ap1+1;
            if (Image2->Canvas->Pixels[x-1][y-1]==clWhite && Image2->Canvas->Pixels[x-1][y]==clBlack)Ap1=Ap1+1;
     
     
            if (Image2->Canvas->Pixels[x-2][y]==clWhite && Image2->Canvas->Pixels[x-2][y+1]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x-2][y+1]==clWhite && Image2->Canvas->Pixels[x-1][y+1]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x-1][y+1]==clWhite && Image2->Canvas->Pixels[x][y+1]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x][y+1]==clWhite && Image2->Canvas->Pixels[x][y]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x][y]==clWhite && Image2->Canvas->Pixels[x][y-1]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x][y-1]==clWhite && Image2->Canvas->Pixels[x-1][y-1]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x-1][y-1]==clWhite && Image2->Canvas->Pixels[x-2][y-1]==clBlack)Ap2=Ap2+1;
            if (Image2->Canvas->Pixels[x-2][y-1]==clWhite && Image2->Canvas->Pixels[x-2][y]==clBlack)Ap2=Ap2+1;
     
     
            if (Image2->Canvas->Pixels[x-1][y+1]==clWhite && Image2->Canvas->Pixels[x-1][y+2]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x-1][y+2]==clWhite && Image2->Canvas->Pixels[x][y+2]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x][y+2]==clWhite && Image2->Canvas->Pixels[x+1][y+2]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x+1][y+2]==clWhite && Image2->Canvas->Pixels[x+1][y+1]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x+1][y+1]==clWhite && Image2->Canvas->Pixels[x][y+1]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x][y+1]==clWhite && Image2->Canvas->Pixels[x][y]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x][y]==clWhite && Image2->Canvas->Pixels[x-1][y]==clBlack)Ap4=Ap4+1;
            if (Image2->Canvas->Pixels[x-1][y]==clWhite && Image2->Canvas->Pixels[x-1][y+1]==clBlack)Ap4=Ap4+1;
     
     
            if (Bp>=2 && Bp<=6 && Ap1==1)
            {
            if ((Image2->Canvas->Pixels[x-1][y]==clWhite && Image2->Canvas->Pixels[x][y+1]==clWhite && Image2->Canvas->Pixels[x][y-1]==clWhite)|| (Ap2==1) )
            {
            if ((Image2->Canvas->Pixels[x-1][y]==clWhite && Image2->Canvas->Pixels[x][y+1]==clWhite && Image2->Canvas->Pixels[x+1][y]==clWhite)|| (Ap4==1) )
                    {
                    Image2->Canvas->Pixels[x][y]=clWhite;
                    }
            }
            }
    }
    }

    NB : Les objets dans l'image doivent être noirs ( je n'aime pas les fonds noirs )

    A suivre....

  2. #2
    Membre émérite Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Par défaut
    Merci pour cette contribution.
    Je vois que vous utiliser la propriété Pixels!,la traitement doit être hyper long non?(surtout avec 3 boucles imbriqués)

  3. #3
    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 b_reda31 Voir le message
    Je vois que vous utiliser la propriété Pixels!,la traitement doit être hyper long non?(surtout avec 3 boucles imbriqués)
    Non, je ne trouve pas qu'il est long !! mais toute optimisation du code sera la bienvenue.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Lost in Voir le message
    Non, je ne trouve pas qu'il est long !! mais toute optimisation du code sera la bienvenue.
    En l'occurence, je crois qu'il parle d'une optimisation spécifique à C++Builder(Scaline / Pixels)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre émérite Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Par défaut
    Citation Envoyé par Lost in Voir le message
    Non, je ne trouve pas qu'il est long !! mais toute optimisation du code sera la bienvenue.
    Ah oui?!
    Je viens de le tester chez moi,ça met environ une minute pour une Image 256x256 et avec 10 itérations.

    En l'occurence, je crois qu'il parle d'une optimisation spécifique à C++Builder(Scaline / Pixels)
    Oui c'est de ça que je parlais et non pas d'optimisation de l'algorithme.
    En remplaçant la propriété Pixels par ScanLine,le traitement sera beaucoup plus rapide.

  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
    Citation Envoyé par b_reda31 Voir le message
    En remplaçant la propriété Pixels par ScanLine,le traitement sera beaucoup plus rapide.
    Peux tu poster le code avec la propriété ScanLine ?

  7. #7
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Est-ce que tu peux nous poster un exemple d'application de ton algo ?

  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
    Salut,

    Pour déterminer si un point est inessentiel, Serra utilise les masques suivants :

    0 0 0
    x 1 x
    1 1 1
    et

    x 0 0
    1 1 0
    x 1 x
    L’ensemble des voisinages 3*3 d’un point inessentiel est obtenu à partir de ces configurations par rotation de 90°.

    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
     
    for (int i=1;i<=nombreiteration; i++)
    {
    for(int x=1;x<W;x++)
            for(int y=1;y<H;y++)
            {
            if (matrice[x-1][y-1]==255  && matrice[x-1][y]==255    && matrice[x-1][y+1]==255  && matrice[x+1][y+1]==0    && matrice[x+1][y]==0     && matrice[x+1][y-1]==0 )   matrice[x][y]=255;
            if (matrice[x-1][y]==255    && matrice[x-1][y+1]==255  && matrice[x][y+1]==255    && matrice[x+1][y]==0      && matrice[x+1][y-1]==0   && matrice[x][y-1]==0 )     matrice[x][y]=255;
            if (matrice[x-1][y-1]==0    && matrice[x-1][y+1]==255  && matrice[x][y+1]==255    && matrice[x+1][y+1]==255  && matrice[x+1][y-1]==0   && matrice[x][y-1]==0 )     matrice[x][y]=255;
            if (matrice[x-1][y-1]==0    && matrice[x-1][y]==0      && matrice[x][y+1]==255    && matrice[x+1][y+1]==255  && matrice[x+1][y]==255   && matrice[x][y-1]==0 )     matrice[x][y]=255;
            if (matrice[x-1][y-1]==0    && matrice[x-1][y]==0      && matrice[x-1][y+1]==0    && matrice[x+1][y+1]==255  && matrice[x+1][y]==255   && matrice[x+1][y-1]==255 ) matrice[x][y]=255;
            if (matrice[x-1][y]==0      && matrice[x-1][y+1]==0    && matrice[x][y+1]==0      && matrice[x+1][y]==255    && matrice[x+1][y-1]==255 && matrice[x][y-1]==255 )   matrice[x][y]=255;
            if (matrice[x-1][y-1]==255  && matrice[x-1][y+1]==0    && matrice[x][y+1]==0      && matrice[x+1][y+1]==0    && matrice[x+1][y-1]==255 && matrice[x][y-1]==255 )   matrice[x][y]=255;
            if (matrice[x-1][y-1]==255  && matrice[x-1][y]==255    && matrice[x][y+1]==0      && matrice[x+1][y+1]==0    && matrice[x+1][y]==0     && matrice[x][y-1]==255 )   matrice[x][y]=255;
            }
    }


    L’algorithme général est de type séquentiel. Il consiste à balayer l’image ligne par ligne et à supprimer les points inessentiels au fur et à mesure qu’ils sont rencontrés. Il ne peut donc pas tenir compte de l’environnement dans lequel il opère et a tendance à enlever trop de points d’un seul coup.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Algorithme de thomé en OpenCV: (petit pb d'exécution)

    J'ai deja implémenté l'algo de Thomé en C++ mais à l'aide de la biblio OpenCv pr l'accés aux pixels de l'image (builder C++ et ImageToMatrice...machin chose pas trop compri !! )

    en OpenCv, l'accés à l'image ne se fait pas comme une matrice donc le traitement est un peu lourd cad kil faut récupérer la valeur du pixel aprés faire la verification de son voisinage de configuration...etc, du fait, cela va prendre bcp de temps ou meme un buggage..voici mon code:

    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
     
    nbr=10;
    for(int k=0;k<nbr;k++)
     {
       // superposition et verification des 16 configurations de masques pour chaque pixel
       for(i=0;i<m_img->width;i++)
        {for(j=0;j<m_img->height;j++)
         {
     
            pixel=cvGet2D(m_img,j,i);
            // si le pixel est noir (l'image) on teste les masques
           if(pixel.val[0]==0) {
                                     verif=config_1(i,j);// verifie le mask1
                                     //cout<<pixel.val[0]<<endl;
                                     if(verif==true) {
     
                                                      pixel.val[0]=255;
                                                      pixel.val[1]=255;
                                                      pixel.val[2]=255;
                                                      cvSet2D(img_squel,j,i,pixel);
                                                      m_img=img_squel;
     
                                                     }
                                      else
                                      {
                                       verif=config_2(i,j);//verifie mask2
                                       if(verif==true){
                                                       pixel.val[0]=255;
                                                       pixel.val[1]=255;
                                                       pixel.val[2]=255;
                                                       cvSet2D(img_squel,j,i,pixel);
                                                       m_img=img_squel;
     
                                                      }
                                        else
                                        {
                                          verif=config_3(i,j);
                                          if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
                                          else
                                          { verif=config_4(i,j);
                                            if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
                                                            stable=false;
                                                           }
     
                                            else
                                            {
                                               verif=config_5(i,j);
                                               if(verif==true) { pixel.val[0]=255;
                                                                 pixel.val[1]=255;
                                                                 pixel.val[2]=255;
                                                                 cvSet2D(img_squel,j,i,pixel);
                                                                 m_img=img_squel;
     
                                                              }
                                             else
                                             {
                                                verif=config_6(i,j);
                                                if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
     
                                                else
                                                {
                                                 verif=config_7(i,j);
                                                 if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                                 }
                                                  else
                                                  {
                                                    verif=config_8(i,j);
                                                    if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
                                                            stable=false;
                                                           }
                                                   else
                                                   {
                                                    verif=config_9(i,j);
                                                    if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
                                                    else
                                                    {
                                                     verif=config_10(i,j);
                                                     if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
                                                    else
                                                    {
                                                      verif=config_11(i,j);
                                                      if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
                                                      else
                                                      {
                                                       verif=config_12(i,j);
                                                       if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
                                                      else
                                                      {
                                                        verif=config_13(i,j);
                                                        if(verif==true) { pixel.val[0]=255;
                                                            pixel.val[1]=255;
                                                            pixel.val[2]=255;
                                                            cvSet2D(img_squel,j,i,pixel);
                                                            m_img=img_squel;
     
                                                           }
                                                        else
                                                        {
                                                         verif=config_14(i,j);
                                                         if(verif==true) { pixel.val[0]=255;
                                                               pixel.val[1]=255;
                                                               pixel.val[2]=255;
                                                               cvSet2D(img_squel,j,i,pixel);
                                                                m_img=img_squel;
     
                                                                         }
                                                        else
                                                        {
                                                          verif=config_15(i,j);
                                                          if(verif==true) { pixel.val[0]=255;
                                                              pixel.val[1]=255;
                                                              pixel.val[2]=255;
                                                              cvSet2D(img_squel,j,i,pixel);
                                                              m_img=img_squel;
     
                                                                          }
                                                          else
                                                          {
                                                            verif=config_16(i,j);
                                                            if(verif==true) { pixel.val[0]=255;
                                                              pixel.val[1]=255;
                                                              pixel.val[2]=255;
                                                              cvSet2D(img_squel,j,i,pixel);
                                                              m_img=img_squel;
     
                                                                            }
                                                          }
                                                        }
                                                        }
                                                      }
                                                      }
                                                    }
                                                    }
                                                   }
                                                  }
                                                }
                                             }
                                            }
                                          }
                                        }
                                      }
            }
         }
        }
     }
     
     cvSaveImage("33_Frame_squelettisé.bmp",img_squel);
     
    }
    je veux vraiment savoir ou ça cloche ici, car parfois, il n'arrive pas a sortir de la boucle globale!!!! SOS

  10. #10
    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,

    Je n'ai pas bien compris ton problème !!

    Pour l'algorithme de Thomé il suffit qu'un pixel de l'image satisfasse l'une des 16 configurations données pour qu'on puisse dire qu'il n'appartient pas au squelette.

    A+

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Oui c'est clair, en fait mon algo à marcher mais juste pour 10 itérations, si je mets plus, ça ne se compile pas, en plus moi je travaille sur les images humaines donc en utilisant l'algo de Thomé, le resultat sur une posture humaine était un peu pas satisfaisant! je me demande est ce que j'ai bien choisi l'algo ou pas ??
    voila pour un petit humain ce que ça donne avec Thomé !
    Images attachées Images attachées   

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Booster_8 Voir le message
    Oui c'est clair, en fait mon algo à marcher mais juste pour 10 itérations, si je mets plus, ça ne se compile pas, en plus moi je travaille sur les images humaines donc en utilisant l'algo de Thomé, le resultat sur une posture humaine était un peu pas satisfaisant! je me demande est ce que j'ai bien choisi l'algo ou pas ??
    voila pour un petit humain ce que ça donne avec Thomé !
    Essaye avec l'algo modifié du Dr. Chai Quek que j'ai posté dans la rubrique "contribuez". Avec un petit pré-filtrage médian/gaussien de ton image, ca devrait te donner ce que tu cherches.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. algorithme LBG pour les images
    Par soufiane121 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 12/04/2008, 20h40
  2. recalage d'image, algorithme rapide
    Par svagrim dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 26/03/2008, 18h34
  3. algorithme d'étiquetage des images
    Par vanesima dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 15/09/2007, 10h25
  4. [Image] Algorithme pour déterminer une forme continue
    Par wizzmasta dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 25/04/2006, 15h56
  5. Besoin d'aide pour algorithme de traitement d'images
    Par Zenman94 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 07/04/2005, 14h31

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