Traitement d'image:squelettisation

Résolu
nourch Messages postés 8 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 21 janvier 2010 - 7 avril 2009 à 15:40
brahimmjr Messages postés 1 Date d'inscription dimanche 16 janvier 2011 Statut Membre Dernière intervention 29 mars 2011 - 29 mars 2011 à 12:43
salut,s'il vous plait je veux savoir une explication sur les condition de l'algorithme de squelettisation de zhang et suen ou un lien pour un code .merci d'avance.

3 réponses

cs_infsaid Messages postés 3 Date d'inscription dimanche 25 mars 2007 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 12:42
merci atout


/* Zhang-Suen thinning */

int y [256][256];

main()
{

int i,j,k,n,m;
int im[256][256];


/* Read the glyph */
scanf ("%d", &n); scanf("%d", &m);
for (i=0; i<n; i++)="" {="" for="" (j="0;" j<m;="" j++)="" scanf="" ("%d",="" &k);="" im[i][j]="k;" }="" iputim="" (im,="" n,="" m);="" thin_b="" (image,n,m)="" int="" image[256][256],n,m;="" i,j;="" (i="0;" i<n;="" if="" (image[i][j]="">= 100) image[i][j] = 9;
printf ("%3d", image[i][j]);
}
printf ("\n");
}
}


thin_b (image,nn,mm)
int image[256][256], nn,mm;
{
/* Thinning algorithm: CACM 1984 march (Zhang and Suen) */

int i,j,n,m,k, cont, br,ar,p1,p2, t1a();
int a[8];

printf ("Thinning algorithm: CACM 1984 march (Zhang and Suen) \n");
cont = 1;
while (cont) {
printf ("+\n");
cont = 0;

/* Sub-iteration 1: */
for (i=0; i=2) && (br<=6)) &&
(p1 0) && (p2 0) ) {
y[i][j] = 1;
cont = 1;
}
else y[i][j] = 0;
}
subtr (y, image,nn,mm);

/* Sub iteration 2: */
for (i=0; i=2) && (br<=6)) &&
(p1 0) && (p2 0) ) {
y[i][j] = 1;
cont = 1;
}
else y[i][j] = 0;
}
subtr (y, image,nn,mm);
}
}

subtr (a, b, n,m)
int a[256][256], b[256][256],n,m;
{
int i,j;

for (i=0; i= 0) {
a[0] = image[i-1][j];
if (j+1 < mm) a[1] = image[i-1][j+1];
if (j-1 >0) a[7] image[i-1][j-1];
}
if (i+1 < nn) {
a[4] = image[i+1][j];
if (j+1 < mm) a[3] = image[i+1][j+1];
if (j-1 >0) a[5] image[i+1][j-1];
}
if (j+1 < mm) a[2] = image[i][j+1];
if (j-1 >0) a[6] image[i][j-1];

m0; *b 0;
for (n=0; n<7; n++) {
if ((a[n]==0) && (a[n+1]==1)) m++;
*b = *b + a[n];
}
if ((a[7] == 0) && (a[0] == 1)) m++;
*b = *b + a[7];
return m;
}

/* End of method B */
</n;>
3
fatmabouzidi Messages postés 6 Date d'inscription mardi 21 avril 2009 Statut Membre Dernière intervention 27 avril 2010 1
16 févr. 2010 à 20:08
je veux programmer cette méthode avec Matlab.Aidez-moi s'il vous plait.
merci
1
brahimmjr Messages postés 1 Date d'inscription dimanche 16 janvier 2011 Statut Membre Dernière intervention 29 mars 2011
29 mars 2011 à 12:43
est ce que sur
0
Rejoignez-nous