# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Cration d'un cercle plein blanc sur fond noir

## Rafoo

Bonjour,

J'essaye de cre dans une image, un cercle plein blanc sur fond noir avec pour seul paramtre d'entre le diamtre du cercle (je connais la valeur de mon pixel en m).

Mon algo est bas sur la cration d'un pixel blanc centr dans une image et ensuite je dilate ce point blanc 'x' fois jusqu' l'obtention du diamtre attendu. 

La dilatation est faite en alternant voisinage 'V4' et voisinage 'V8'.

Le rsultat n'est pas se que j'attendais, j'obtiens bien le diamtre voulu, mais j'ai un hexagone et pas un cercle.

Comment pourrais-je faire pour obtenir ce cercle?

merci d'avance
Raphael

----------


## parp1

Bonjour.

J'ai aussi essayer les dilatation ca n'as pa lair efficace.
Normale pliusisuer chose interviennent.

-Le maillage utilis
-L'element structurant
-et le nombres de connexits.

Pourquoi tu ne part pas de ton centre[x,y] et tu colorie les pixels situs a  [x+1,y],[x,y+1],[x+1,y+1],[x-1,y] etc .Bref colorier les pixel situ au 8connexits de ton centre et le faire jusqu'a y ajout D/2 ou D est ton diametre


```

```

Salutations

----------


## Kangourou

salut,

le plus simple pour avoir un disque qui ressemble a un disque, c'est de faire un boucle sur tous les pixels de l'image, et de colorier le pixel en blanc si la distance au centre est inferieure ou egale au rayon.

Si vous ne voulez pas parcourir toute l'image, une boucle sur tous les pixels dans le carre englobant du disque devrait suffire.

Si vous voulez un algorithme rapide, regardez du cote de Brensenham, il y a une variante pour les cercles (mais a mon avis ca vaut vraiment le coup que si 'est pour developpez une bibilotheque graphique).

A+

PS: en alternant les dilatation avec des carres et des croix, on obtient un octogone, pas un hexagone....

----------


## Rafoo

Merci pour ton aide parp1, mais ta mthode me donnera une toile dans les direction V8.

Thoriquement, il y a une mthode qui permet de dilater un pixel pour obtenir un cercle(je crois... :os), mais il faut utiliser la mthode de dilatation avec borgefors. Mais j'ai du mal  l'implmenter.

Si quelqu'un s'y connais avec borgefors, ou aurait une autre mthode je suis prenneur.

merci

----------


## ToTo13

bonjour,

la mthode de kangourou me semble la plus simple et peut tre aussi la plus rapide si tu limites ton balayage par rapport au centre du cercle.

----------


## Rafoo

En fait kangourou, j'avais peur que ta mthode soit trop lente car il faut comparer le rayon avec la racine de (i-centrei)+(j-centrej), et on sait que racine = trs long pour les images...

mais je l'ai fais et en fais a ne gne pas, c'est plus rapide que la dilatation. lol

par contre tant donn que l'image  une dformation d  la trame de la camra qui n'est pas carr, j'aimerai construire non-plus un cercle mais une llipse (je pensait que j'y arriverai facilement une fois que j'aurai fais le prog pour un cercle, et bien non!!)

donc je planche dessus et si quelqu'un trouve avant moi, se serait sympa de m'avancer un peut.

merci bcp pour vos conseilles.

----------


## ToTo13

Bonjour,

il me semble que l'quation d'une ellipse est trs proche de celle d'une cercle, modulo un coefficient fixe.
Je pense que au lieu de calculer la distance entre ton pixel et ton centre, il faudrait sparer les coordonnes x et y et faire deux tests. Mais le deuxime tests devra dpandre de l'quation de ton ellipse.

----------


## Rafoo

En fait, pour tre un peu plus prcis, j'aimerai faire une analyse sur une image mais dans une parti seulement de cette image. 

Donc je compare mon image  une image avec un cercle plein blanc, sur fond noir. Ce cercle a pour seul paramtre variable le diamtre de la surface  controler et doit tre construit automatiquement. Mais comme mon image est prise avec un capteur  trame rectangulaire (avait pas le choix!! snif) si je fais l'acquisition d'objet rond, il sera elliptique... un pixel sur mon image sera de 6.856*6.25, et mon image fait 720*578.

Donc visuellement on voit une llipse, mais en fait la mesure doit elle etre relle (un cercle). Voila mon problme.

Toto13, peut-tu tre un peu plus explicite sur ta mthode?

merci

----------


## Sivrt

> En fait kangourou, j'avais peur que ta mthode soit trop lente car il faut comparer le rayon avec la racine de (i-centrei)+(j-centrej), et on sait que racine = trs long pour les images...


Pour peu que l'on compare le carr de la distance au carr du rayon il n'y a plus de racine.

Je pense aussi qu'il serait avantageux de travailler par ligne et pour chacune de calculer les deux intersections avec le cercle (par symtrie a fait un seul calcul). Aprs plus qu' tracer un segment  ::D:  

Pour l'ellipse les formules sont proches (http://www.schoolangels.be/math/cours/para/para.html en bas).

----------


## Monstros Velu

Un peu de mathmatiques :

une elipse, c'est l'ensemble des points  distance constante des 2 centres, pour faire simple...

par exemple, tu as les centres R1(x1, y1) et R2(x2, y2). Un point(xm, ym) appartient  l'lipse si et seulement si
racine((xm-x1)+(ym-y1))+racine((xm-x2)+(xm-y2)) = K, avec K constant. ( <, si on parle de la surface intrieure de l'lipse).

Il te manque K et la position des points (mais on peut dduire le 3me des deux premiers).

pour calculer K, rien de plus simple. dfinissons S comme le rayon du "petit cot", T le rayon du grand cot, et admettons que l'lipse est allonge horizontalement)
K = 2*racine(S+(x2-x1))

Oui, il nous manque x1 et x2 ;o)

Appelons le centre du "cercle" de dpart, C(xc, yc).
Prennons le cas particulier du point le plus " gauche" de l'lipse. Il a pour coordonne (xc-T, yc).  On a donc alors :
x1-(xc-T)+x2-(xc-T)=K, par dfinition de l'lipse.

enfin, on sait ds le dpart que |x1-xc|=|x2-xc].

Voil, 3 quations, 3 inconnues, vous tes sur la bonne voie pour trouver les coordonne de l'lipse incluse dans votre rectangle, et par la mme l'ensemble des points  l'intrieur de cette lipse ! :o)


edit : j'avais pas vu le lien du message juste au dessus, c'est encore plus simple en fait lol 8o) Mais j'aime pas la trigo ;o)p

----------


## Rafoo

merci bcp pour vos conseil, a marche super!!!

(dsl monstros velu, mais la mthode trigo de sivrit tait plus facile  implmenter... :o) et au niveau de la complexit de calcul, moin dense en racine.

Voila un apperu de ce que a donne:


```

```

encore merci  tous.

----------

