Traitement image : filtre circulaire

jphotension Messages postés 6 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 13 décembre 2004 - 13 déc. 2004 à 17:58
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 19 mars 2008 à 18:10
jphotension

Bonjour,

je traite des images binaires bitmap en programmant en C. J'effectue des traitements sur l'image : érosion, dilatation, ouverture, fermeture ( fusion....), chapeau de forme...etc.
et donc pour traiter ces images j'utilise un élément structurant (filtre)de forme rectangulaire...le probleme c'est que c'est pourri avec des rectangles...donc j'essaie de faire des cercles mai je galere.

Explication de ma méthode : j'ai dessiné un grand disque noir sur photoshop..on s'en fou..lol, et donc suivant la taille du filtre ( élément structurant) rentrée par l'utilisateur (nombre de pixels : ici diametre du cercle) je découpe le cercle par ce nombre. Chaque case de ce cercle contient donc alors (nombre de pixel du diametre du cercle / taille filtre) ² . Si le nombre de pixels blancs dans un grand carré est inférieur au nombre de pixels noirs, alors dans un tableau de la taille du filtre je met la couleur noir ou blanche.

/*imageheight = imageWidth ici : taille de l'image ou j'ai dessiné mon grand cercle / d : taille du filtre
*/
echelle = ( imageHeight - imageHeight%d ) / d ;
//compte le nombre de pixel de meme couleur a l'intérieur de chaque carre
for (rowIdx = 0 ; rowIdx < d ; rowIdx++ )
{
for (colIdx = 0 ; colIdx < d ; colIdx++ )
{
for ( l = 0 ; l < echelle ; l++ )
{
for ( c = 0 ; c < echelle ; c++ )
{
if (matrice_binarise[rowIdx*echelle + l][colIdx*echelle + c] == 255)
sommeBlanc = sommeBlanc++ ;
else sommeNoir = sommeNoir++ ;
}
}
if ( sommeBlanc > sommeNoir ) matrice_cercle[rowIdx][colIdx] = 255;
else matrice_cercle[rowIdx][colIdx] = 0; sommeBlanc 0; sommeNoir 0;
}
}

je rajouterai du code si vous voulez parce que c'est plus compliqué que ca ! :big) j'utilise des pointeurs de pointeurs et tout, je veux pas travailler avec des tableau 1D, c'est chiant pour les indices..
Merci
Et puis meme si vous avez un algo pour faire des cercles!?! lol (pas de BGI ni OpenGl...)

2 réponses

muzamfr Messages postés 4 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 24 mars 2005
24 mars 2005 à 00:51
salut j'ai po trop compris ton truc mais moi j'essaye de faire érosion, dilatation, ouverture, fermeture sur une bitmap si tu as les algos de base sur les procédés stp envoi par mail [mailto:muzamfr@hotmail.com muzamfr@hotmail.com] merci ciao

zamzam
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 mars 2008 à 18:10
Salut
Pour la morphologie mathematique, c'est par ici:
http://www.cppfrance.com/codes/LOGICIEL-COMPLET-TRAITEMENT-IMAGE-WIN-32_44353.aspx

A+
0
Rejoignez-nous