Traitement d'image:squelettisation [Résolu]

nourch 8 Messages postés vendredi 25 décembre 2009Date d'inscription 21 janvier 2010 Dernière intervention - 7 avril 2009 à 15:40 - Dernière réponse : brahimmjr 1 Messages postés dimanche 16 janvier 2011Date d'inscription 29 mars 2011 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

3 réponses

cs_infsaid 3 Messages postés dimanche 25 mars 2007Date d'inscription 13 mai 2009 Dernière intervention - 13 mai 2009 à 12:42
+3
Utile
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;>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_infsaid
fatmabouzidi 7 Messages postés mardi 21 avril 2009Date d'inscription 27 avril 2010 Dernière intervention - 16 févr. 2010 à 20:08
+1
Utile
je veux programmer cette méthode avec Matlab.Aidez-moi s'il vous plait.
merci
Commenter la réponse de fatmabouzidi
brahimmjr 1 Messages postés dimanche 16 janvier 2011Date d'inscription 29 mars 2011 Dernière intervention - 29 mars 2011 à 12:43
0
Utile
est ce que sur
Commenter la réponse de brahimmjr

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.