# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  algorithme "Transforme de Hough"

## comrad85

bonsoir a tous! Voila j'ai fais quelques recherches sur le forum et sur le net sur l'implmentation de la *transforme de Hough* pour la dtection de droite, mais rien qui pourrait m'aider . J'utilise builder c++!!!
Je ne sais pas est ce qu'il y'a plusieurs faon d'implmenter la TH ?? (accumulateur...) :8O: 
Si quelqu'un pourrait m'aider a serait sympa car j'en ai besoin pour avancer dans mon projet!!
Je vous remercie

----------


## FR119492

Salut !

Et si tu cherchais *transforme de Hough* dans Wikipedia ?

Jean-Marc Blanc

----------


## ToTo13

Bonjour,

en faisant une recherche dans le forum en tapant Hough, on trouve ce lien :
 - http://www.developpez.net/forums/sho...d.php?t=352300

Il y a deux mthodes expliques...

----------


## comrad85

Merci pour les rponses!!  et dsol pour le retard!!
J'ai jet un coup d'il sur a mais je crois que a ne peut pas m'aider ::roll:: 
Si il y a quelqu'un qui a le code source a serait gentil de me le passer!!!
Merci a vous

----------


## ToTo13

Bonsoir,

Hough est une technique facile  programmer, surtout qu'il y a de trs nombreux tutoriels sur le sujet.
Toutefois, il semblerait que tu puisses trouver ton bonheur parmi ces deux recherches :
 - 1 - Pour ImageJ
 - 2 - Google Lab code source

----------


## comrad85

merci toto!!je vais voir tout cela!!! a+

----------


## comrad85

j'ai essay de comprendre mais pas moyen ::(: !!!
C'est aussi difficile que a ou sinon je suis nul???? ::oops::

----------


## ToTo13

Bonjour,

non, ce n'est pas quelque chose de difficile, mais je pense que tu dois avoir un problme de reprsentation de ce qui se passe.
Dis nous o tu bloques, nous dtaillerons pas  pas afin que tout soit limpide  :;):

----------


## comrad85

salut!!! je ne comprends pas le principe de l'accumulateur!!!!
merci

----------


## ToTo13

Bonsoir,

en tirant des couples (A,B) de points au hasard (disons N couples), on obtient N couples (R,thta) reprsentant les droites passant A et B.
Mais chacun de ces couple ne fait pas forcment parti de la solution du problme : par exemple A appartient  une droite et B  une autre => (R,thta) ne fait pas parti de la solution.
Le ou les couple(s) qui apparaissent le plus souvent font parti de la solution => D'o l'intrt de l'accumulateur.
En gnral on fait un seuillage plus ou moins arbitraire sur l'accumulateur pour trouver les solutions.

----------


## comrad85

Merci toto!!! (dsol pour le drangement ::oops:: )
j'ai lu ton algo. Mais au dbut je dois dclarer l'accumulateur qui est un tableau a 2 dimensions. Ses lments sont des structures:
                    cellule {vote, x1, y1,x2, y2} 
o (x1, y1) et (x2, y2) sont les coordonnes des points extrmes des segments.
vote est la variable  incrmenter lorsque la cellule est intresse par le rsultat de l'quation p=x.cos(thta)+y.sin(thta).
je ne sais pas si c'est a?????

----------


## pseudocode

@ToTo13: pourquoi choisir des couples de points ? Dans l'algo de Hough que je connais on prend un par un les pixels et on augmente les accumulateurs (rho,theta) des droites candidates.

----------


## ToTo13

Bonjour,




> @ToTo13: pourquoi choisir des couples de points ? Dans l'algo de Hough que je connais on prend un par un les pixels et on augmente les accumulateurs (rho,theta) des droites candidates.


dans celui que je connais, on prend des couples de points afin de n'avoir qu'une seule droite candidate.

----------


## comrad85

> @ToTo13: pourquoi choisir des couples de points ? Dans l'algo de Hough que je connais on prend un par un les pixels et on augmente les accumulateurs (rho,theta) des droites candidates.


Donc quand le tableau est rempli,je prends le max???
et comment retracer la droite????

----------


## ToTo13

Bonjour




> Donc quand le tableau est rempli,je prends le max???


Si tu ne prends QUE le MAX, tu n'auras qu'une seule et unique droite solution ce qui n'est pas forcment ton cas  ::(: 
C'est l qu'il faut tre un peu fin :
 - tu vas devoir chercher des amas de points dans l'espace solution (l'accumulateur). Si tu prends un seuillage, tu risques d'avoir plusieurs droites solutions pour une mme droite.
 - chaque amas reprsente une droite.
 - pourquoi on a des amas et pas un point o l'accumulateur est lev => on travaille dans un espace discret et on a des erreurs. Une mme droite peut tre caractrise par plusieurs couples (R,Thta).
 - pour dtecter les amas, tu peux procder en faisant un quadrillage de ton espace solution en faisant attention qu'un amas n'appartienne pas deux carrs.
 - une autre solution est de faire une ouverture sur l'espace solution, ainsi il ne restera que les amas reprsentant une droite.
 - une fois que tu as des amas, tu les repres (numroter les composantes connexes) et tu fais une moyenne pondre pour chacun de amas afin garder que la droite qui reprsente le mieux l'amas.






> et comment retracer la droite????


De la faon inverse dont tu as calcul ton (R,Thta).

----------


## comrad85

Salut!!!




> De la faon inverse dont tu as calcul ton (R,Thta).


Mais comment savoir les extrmits de ma droite??? il faut enregistrer les points o????
merci

----------


## ToTo13

Bonjour,




> Mais comment savoir les extrmits de ma droite???


Par dfinition, une droite n'a pas d'extrmits, sinon c'est un segment ou une demi-droite.




> il faut enregistrer les points o????


Donc tu calcules les coefficients de ta droite y=ax+b et tu la traces en calculant son intersection avec les bords de ta fnetre par exemple.

----------


## comrad85

Salut a tous!!! J'ai trouv un algorithme de TH dans une thse. Mais le code est un peut compliqu, je crois mme qu'il comporte quelques erreurs. Ils ont utilis un tableau pour l'accumulateur de 2 dimensions, chaque cellule est une structure (int vote, int x1, int y1, int x2, int y2). J'aimerai bien crire le code ici mais il est un peut long ::roll:: .
Comme a je vous direz les choses que je ne comprends pas et peut tre que vous pourrez m'aider.
Merci

----------


## pseudocode

C'est mon jour de bont:

http://www.developpez.net/forums/sho...d.php?t=495285

----------


## comrad85

Merci pour le code!!!!
J'aimerai juste que tu m'expliques (si c'est possible) quelques lignes :


```

```

j'ai pas bien compris les formules.
Merci

----------


## pseudocode

C'est vrai que je n'ai pas pris le temps de commenter le code (il tait tard  ::aie:: ).



```

```


Ces 2 formules permettent de calculer la taille du tableau d'accumulateurs.

On commence par calculer la rsolution minimale d'une droite, c'est-a dire l'intervalle des valeurs possibles pour les couples (rho,theta).

par dfininition, 
0 <= rho <= maxRho
0 <= theta <=2.PI

1. rho est la distance  l'origine
-> c'est un entier (= nmb de pixel jusqu'a l'origine)
-> la plus grande distance  l'origine c'est la diagonale de l'image (au del, la droite est en dehors de l'image)

2. theta est l'angle du vecteur directeur
-> il est born entre 0 et 2PI
-> le plus petit angle possible c'est celui entre la droite horizontale et la droite qui termine  1 pixel au dessus de l'horizontale. Avec la formule de pythagore on trouve que tan(mintheta) = minhauteur/maxLongueur = 1/width

(en considerant que width>heigh, sinon ca serait 1/height)

Le coefficient 1/scale permet de rduire la taille du tableau d'accumulateurs au dtriment de la prcision.



```

```


Ces formules permettent de transformer un couple (rho,theta) en indices dans le tableau d'accumulateurs. C'est juste une rgle de 3.

----------


## comrad85

Merci !!!!!!!!!!!!
en ce qui concerne :


```

```

c'est le main()????

----------


## pseudocode

> c'est le main()????


oui, c'est un exemple d'utilisation.

----------


## comrad85

salut!!!!Merci pour l'explication!!!
Comme je l'ai dis un peu plus haut, je viens de trouver un algorithme dans une thse, qui traite des images de 256*256 pixels (moi aussi).
l'algorithme est un peu long. Quelqu'un pourrait il m'aider a le comprendre si c'est possible?
Je vous remercie!!

----------


## pseudocode

a va tre dur de t'aider sur un algorithme que tu es le seul  connatre mais que tu ne comprends pas.

----------


## comrad85

Salut!!! Voila l'algorithme:


```

```

----------


## ToTo13

Bonjour,

qu'est ce que tu ne comprends pas dans cet algo qui est extrmement bien dtaill  :;):

----------


## comrad85

salut toto!!! par exemple: (j'ai mis en rouge)


```

```

C'est quels p et theta dont il s'agit?? on est en dehors de la boucle!!!!
merci

----------


## ToTo13

Bonjour,

effectivement, je n'aivais pas vu ce cas  ::(: 
Le parenthsage  l'air correcte, pas de parenthse manquante.
Donc sans plus de prcision je dirai que cet algo est incomplet ou faux.

----------


## pseudocode

> Donc sans plus de prcision je dirai que cet algo est incomplet ou faux.


En fait, il est faux. Mme en remettant les accolades aux bons endroits, le calcul des extrmits des droites est faux. Les extrmits ne sont pas le min/max de la distance (0,0)-(x,y), c'est flagrant pour une droite  -45. Il faudrait utiliser la distance (a,b)-(x,y) ou (a,b) est un point de repre spcifique  la droite (rho,theta)

----------


## comrad85

Merci a vous!! 
Vous pouvez me donner l'algorithme juste svp ::roll:: 
Merci

----------


## pseudocode

> Merci a vous!! 
> Vous pouvez me donner l'algorithme juste svp
> Merci


Heu... non. Je ne vois pas comment modifier cet algo pour en faire quelque chose de correct (mme en faisant les modifications que j'ai indiqu).

Extraire des "segments" ncessite plus d'information que la ligne porteuse et 2 points extrmes. Tu peux, par exemple, avoir plusieurs segment ou des pixels de bruit sur la mme ligne porteuse.

----------


## comrad85

merci!!je ne savais pas.
C'est quoi la solution????
Au fait le code en java. a marche mais pas pour les lignes horizontales.

----------


## pseudocode

> Au fait le code en java. a marche mais pas pour les lignes horizontales.


 :8O:  ??

----------


## comrad85

http://www.developpez.net/forums/sho...d.php?t=495285

----------


## pseudocode

Mon interrogation venait surtout de la partie:




> a marche mais pas pour les lignes horizontales.


 ::roll::

----------


## comrad85

Vous m'avez dit que la TH est simple, mais apparemment ce n'est pas aussi facile que ca  ::?:  !!  puisque les points extrmes ne suffisent pas pour reconstruire la droite. Il faut enregistrer quoi???
Merci

----------


## pseudocode

> Vous m'avez dit que la TH est simple, mais apparemment ce n'est pas aussi facile que ca  !!  puisque les points extrmes ne suffisent pas pour reconstruire la droite. Il faut enregistrer quoi???
> Merci


La TH est simple. Il suffit de faire "voter" tous les pixels dans l'espace de Hough et de prendre le couple (rho,theta) qui a recueilli le plus de votes. 

Ce couple (rho,theta) reprsente UNE droite INFINIE.

----------


## comrad85

> Ce couple (rho,theta) reprsente UNE droite INFINIE.


Le problme c'est que je dois faire:
1. L'extraction des lignes par la TH
2. Reconstruction de ces lignes sur l'image originale.
Donc c'est pas aussi simple.
Merci

----------


## pseudocode

> 1. L'extraction des lignes par la TH


une fois que tu as tous les votes, il faut prendre les couples (rho,theta) qui ont recueillis le plus de votes. Pour cela, tu dois fixer un seuil au del duquel tu prends le couple en considration.




> 2. Reconstruction de ces lignes sur l'image originale.


Si tu dois juste tracer les lignes infinies, il suffit de tracer les droites correspondants aux couples (rho,theta).

Si tu dois tracer les segments prsents sur l'image, il faut te dplacer le long des lignes infinies et tracer le point du segment seulement s'il y a suffisamment de points dans le voisinage.

----------


## comrad85

> Si tu dois tracer les segments prsents sur l'image, il faut te dplacer le long des lignes infinies et tracer le point du segment seulement s'il y a suffisamment de points dans le voisinage.


Donc pas besoin d'enregistrer  chaque fois x1,y1,x2,y2????

J'ai une autre question: Est ce que je dois centrer l'image (comme dans l'algo)????
Merci

----------


## pseudocode

> Donc pas besoin d'enregistrer  chaque fois x1,y1,x2,y2????


non, pas dans l'algo standard de la TH. Dans ma mthode, ca ne sert  rien de savoir quel pixel a particip au vote car on va reparcourir l'image pour tracer les segments




> J'ai une autre question: Est ce que je dois centrer l'image (comme dans l'algo)????


il y a 2 espaces de Hough possibles:

1. 0<=theta<2.PI  et  0<=rho<=diagonale (celui de mon code)

2. 0<=theta<PI  et -diagonale/2<=rho<=diagonale/2 (celui qui necessite de centrer l'image)

----------


## comrad85

Salut. J'ai trouv quelque chose d'autre (mais je ne sais pas est ce que c'est correct!!!!!)
Si je prends l'origine le point du haut gauche, je fais varier theta entre 0 et 90, le valeur de rho sera toujours positive et sera comprise entre 0 et 360(la valeur max de rho).
c'est juste???
Merci

----------


## pseudocode

> Si je prends l'origine le point du haut gauche, je fais varier theta entre 0 et 90, le valeur de rho sera toujours positive et sera comprise entre 0 et 360(la valeur max de rho).
> c'est juste???


Non.  ::aie:: 

Theta c'est la valeur de l'angle du *vecteur directeur* de la droite. Ca varie donc entre 0 et 360 ( ou 0 et 180 si on autorise les rho ngatifs ).

Ce n'est *pas* l'angle entre l'origine (0,0) et un point de la droite (qui lui varierait effectivement entre 0 et 90)

----------


## comrad85

Merci!En fait c'est quelqu'un qui m'a propos de faire a!!mais apparement c'est faux. 
et pour trouver les a et b de l'equation Y=aX+b, je fais :
a = cos(theta)/sin(theta);
b = Rho/sin(theta);
C'est bien ca???

----------


## pseudocode

> et pour trouver les a et b de l'equation Y=aX+b, je fais :
> a = cos(theta)/sin(theta);
> b = Rho/sin(theta);
> C'est bien ca???


il faut un signe ngatif pour "a":

a = *-cos(theta)/sin(theta)*;  // <--- signe ngatif
b = Rho/sin(theta);

----------


## comrad85

ah!! Merci. 
Dans ton code (en java) tu as rajout une condition:


```

```

pourquoi si sin(theta)=0 alors a=valeurmax et b??
cela a rapport avec quoi???

----------


## pseudocode

> pourquoi si sin(theta)=0 alors a=valeurmax et b??
> cela a rapport avec quoi???


1re chose, il y a UN SIGNE NEGATIF pour le calcul de "a".  ::evilred:: 

Ensuite, si sin(theta)=0 ca signifie que theta=+/-90 et donc que la droite est VERTICALE. On ne peut donc pas l'ecrire sous la forme y=a.x+b  :;):

----------


## comrad85

Merci!! dsol pour le signe ngatif (et pourtant je l'ai corrig dans mon code ::roll:: ).
En fait je reviens  ce que je t'ai dis tout a l'heure, quand on prends l'origine (0,0) et thta qui varie entre 0 et 90 on arrive  dtecter les droites mais pour les droites dont la pente est ngative il ne dtecte qu'un point ou une toute petite partie!!!
ciao

----------


## comrad85

salut a tous!!!voila j'ai un nouveau problme  ::cry:: 
En fait quand je dclare mon accumulateur (acc[183][361]) j'ai un message d'erreur au moment de la compilation: StackOverflow (dbordement de pile)!! il n'est pas vraiment volumineux mon tableau???
quelqu'un pourrait m'aider???
Merci

----------


## pseudocode

> salut a tous!!!voila j'ai un nouveau problme 
> En fait quand je dclare mon accumulateur (acc[183][361]) j'ai un message d'erreur au moment de la compilation: StackOverflow (dbordement de pile)!! il n'est pas vraiment volumineux mon tableau???
> quelqu'un pourrait m'aider???
> Merci


Je te conseille un petit tour sur le forum "C", ou dans la FAQ "C" pour voir comment dclarer un tableau dynamique.  :;):

----------


## comrad85

merci pseudocode! J'ai rgl le problme en dclarant un tableau dynamique.
En fait quand j'excute mon code, il dtecte une droite discontinue comme tant continu ::roll:: !!C'est normal????
a++

----------


## pseudocode

> merci pseudocode! J'ai rgl le problme en dclarant un tableau dynamique.
> En fait quand j'excute mon code, il dtecte une droite discontinue comme tant continu!!C'est normal????
> a++


oui. Comme l'a dit *Toto13* la TH renvoie des droites infinies et pas des bouts de segments.

----------


## comrad85

Merci! Puisque j'ai besoin de dtecter des segments donc il ne suffit pas d'enregistrer les x1,y1,x2,y2??? sinon j'aurai toute la droite mme s'il y a une discontinuit  ::?:  !! Peut tu m'aider ??? (dsol je suis vraiment dbutant dans ce domaine la)
ciao

----------


## ToTo13

Bonjour,

tes segments sont contenus sur la droite trouve, donc il te suffit de faire l'intersection des diffrents morceaux dans l'image d'origine avec la droite trouve.
Tu auras ainsi les diffrents segments qui composent et qui ont engendr la droite solution.

----------


## comrad85

salut toto!!! Dans ce cas je ne peux pas prendre le segment le plus long (max)
??????
Merci

----------


## ToTo13

Bonjour,

tu prends dans un premier temps le segment le plus long (celui qui coupe les bords de la fnetre). Ca te donnera un point de dpart et d'arrive de ton parcours.
Ensuite tu regardes les diffrents morceaux de ce segment qui sont en communs avec les segments de l'image initiale.

----------


## comrad85

salut toto!! C'est ce que j'ai fais!! Mais si par exemple on a deux segments sur la mme droite , on peut pas choisir la plus grande!!!non??
Merci

----------


## ToTo13

Bonjour,

une fois que tu as trouv tes segments, il te suffit de regarder leurs tailles... non ? :S

----------


## comrad85

> une fois que tu as trouv tes segments, il te suffit de regarder leurs tailles...


Salut!! mais je fais le test(taille) avant l'intersection avec l'image d'origine. Je ne vois pas comment faire aprs!
Merci

----------


## ToTo13

Bonsoir,

lorsque tu as ta droite solution, tu calcules sont intersection avec le bord de l'image d'origine afin d'avoir le segment qui parcours l'image.
Tu parcours se segment en notant tous les pixels de l'image d'origine qu'il va rencontrer => ce sont les pixels qui ont engendrs cette solution.
Donc tu as tous les segments solutions => Il ne reste plus qu' calculer leurs tailles, voire ventuellement si ce n'est pas dj fait,  sparer les diffrents segments en numrotant les composantes connexes...

----------


## comrad85

Merci toto!!
Je vais essayer de faire ce que tu m'as dis! Mais a m'a l'air compliqu (enfin pour moi)...

----------


## comrad85

Salut!! Pour avoir une petite ide de mon problme j'ai mis des images.
La premire image est l'image originale.
La seconde est l'image aprs application de la TH.
j'ai pris le cas o on dtecte le segment le plus grand de l'image. Mais contrairement au rsultat on doit obtenir que le segment de droite...non??? ::?:

----------


## ToTo13

Bonjour,

la transforme de Hough va dtecter une seule droite mme s'il y a deux segments qui la compose.
Il est donc normal que les deux segments soient colors aprs rsultats.

----------


## comrad85

Salut toto!! Je peux pas rsoudre ce problme??? J'ai envi de dtecter que les segments suprieurs au seuil.
Merci

----------


## ToTo13

Bonjour,

quand tu as TOUS les segments solutions de la TH, tu n'as qu' trouver la taille de chaque segments  :8O:  et de seuiller comme tu le souhaites.
Tu as fait le plus dur avec la TH, je ne vois pas pourquoi tu bloques sur les segments qui gnrent la droite solution.

----------


## comrad85

Salut toto!!! Y a beaucoup de trucs bizarres dans mes rsultats...
par exemple dans l'image suivante: (la deuxime)

----------


## ToTo13

Bonjour,

trs certainement, la transforme de Hough te donnera deux droites rsultats pour ces deux images.
En faisant l'intersection comme nous en avons longuement parl, tu trouveras :
 - premire images => Deux segments supports (gnrateur, ...)  d'une taille assez importante pour les garder.
 - deuxime image => Un segment support et une srie de petits segments qui seront limins par le seuillage. Donc la deuxime droite n'aura aucun segment support, donc elle sera retire de ta solution finale.

----------


## comrad85

salut!!! C'est pas normal que le 2me segment soit limin puisque il est suprieur au seuil fix dans la TH. 
Pourquoi j'obtiens beaucoup de ptits points??
merci

----------


## comrad85

voici le code :


```

```

----------


## ToTo13

Bonjour,

et si tu nous montrais la partie o tu as les rsultats et que tu essaies de seuiller en fonction de l'image source.

----------


## comrad85

> Bonjour,
> et si tu nous montrais la partie o tu as les rsultats et que tu essaies de seuiller en fonction de l'image source.


Salut toto!! tu veux ke je mette l'image rsultat ou????
merci

----------


## ToTo13

Bonjour,

disons le passade de ton code o tu seuilles ton segment rsultat en fonction de l'image d'origine.
Et une image pour voir ce qui pose problme pourrait tre bien  ::):

----------


## comrad85

salut toto!! j'ai utilis une seule fonction dans le code. Quand je parle de seuil, je signifie longueur du segment. mais sur les images que j'ai post avant y a dj des trucs bizarres (points). dans les images suivantes normalement la droite verticales doit tre dessine (sa longueur est suprieur  30) mais ce n'est pas le cas..
Je crois qu'il y a un problme dans l'enregistrement des extrmas de mes segments.
Merci

----------


## ToTo13

Bonjour,

si on ne voit pas o tu seuilles ton rsultat, on ne va pas pouvoir trouver l'erreur  ::(:

----------


## comrad85

salut toto!! En fait j'ai tout mis dans la fonction Hough...dans le code que j'ai post. j'ai dclar la variable max = 30 ensuite je fais le test pour chaque pixel, j'ai repris la partie du code :


```

```

C'est ca, non???
merci

----------


## ToTo13

Bonjour,

quand tu as tes valeurs (PointX1, PointX2, PointY1, PointY2), pourquoi ne fait tu pas un petit Bresenham pour avoir tous les pixels reliant ces deux points.
Ainsi tu pourrais comparer cette liste de points avec l'image d'origine et dterminer les segments supports et les seuiller.
Mais je ne vois pas o tu calcules l'intersection de la droite passant par les points 1 et 2 avec les bords de ton image...

----------


## comrad85

Salut toto!!



> pourquoi ne fait tu pas un petit Bresenham pour avoir tous les pixels reliant ces deux points.


je ne sais pas comment faire un Bresenham. Dans mon algo je trace une droite entre (X1,Y1) et (X2,Y2)...C'est pas la mme chose? ::oops:: 




> Mais je ne vois pas o tu calcules l'intersection de la droite passant par les points 1 et 2 avec les bords de ton image...


C'est important de le faire???

Je voulais dire aussi: que quand dans mon image d'origine il y a un segment ou plusieurs segments dont les droites ne se croisent pas...aprs application de mon algo pas de problmes, ils les dtectent .
Je crois qu'il faut utiliser une faon pour enregistrer les extrmas de mes segments
Merci

----------


## ToTo13

Bonjour,





> C'est important de le faire???


Ben oui :S, cela va te permettre de trouver l'intersection de la droite solution avec ton image de dpart. C'est bien ce que tu veux faire car tu veux seuiller pour ne garder que les segments support d'une certaine longueur.






> je ne sais pas comment faire un Bresenham. Dans mon algo je trace une droite entre (X1,Y1) et (X2,Y2)...C'est pas la mme chose?


 ::aie::  Non... dommage. Il est diffrent de tracer "visuellement" une droite  l'cran et de calculer tous les points de ta droite.
Pour Bresenham, le web regorge de code source, tu auras l'embarras du choix.

----------


## comrad85

salut !!! Merci pour la rponse.
Mais j'ai pas compris pourquoi quand j'ai un segment ou plusieurs segments dont les droites ne se croisent pas j'obtiens de bons rsultats???
 ::roll::

----------


## ToTo13

Bonjour,

est ce que tu peux prciser ta question, j'avoue ne pas bien saisir.
Si tu as plusieurs petits segments aligns, il n'y a qu'un seule droite passant par eux et il est normal qu'elle soit dtecte... c'tait a ta question ?

----------


## comrad85

salut !! En fait ce que je ne comprends pas:
quand j'ai un segments ou plusieurs segments parallles je n'ai pas de problmes, c'est  dire qu'il dtecte les segments suprieurs  max (donc les rsultats sont bons). Mais ds qu'ils y a deux segments ou plusieurs dont les droites se croisent j'obtiens des points (ils ne dtectent pas tout)
voila j'espre que j'ai t clair.
Merci

----------


## ToTo13

Bonjour,

si tu as deux segments qui se croisent, tu dois dtecter deux droites solutions. C'est ce que fais la classe propose par PseudoCode dans la rubrique contribuez.

----------


## comrad85

Merci!! Je vais essayer de comprendre cela!!

Si j'ai bien compris la classe Hough propos par PseudoCode, permet retrouver les points a et b aprs application de la TH.
Mais comment faire pour appliquer cela  une image?
En plus je trouve quelques problmes:
scale: ca sert  quoi??
la classe Random (loi gaussienne .....), je la trouve pas dans c++ builder  ::cry:: 
donc je dois faire autrement!!
Quelqu'un pou m'aider?? ::roll:: 

J'ai essay de me dbrouiller tout seul pendant ces 2 jours, mais je n'y arrive pas!! ::cry:: 
Si quelqu'un a un programme en c++, a serait sympa.
Merci

----------


## comrad85

Salut a tous!! Je n'arrive toujours pas  regler le problme!!! ::cry:: 
Si quelqu'un pouvait m'aider ca serait vraiment gentil, car je commence a strsser grave pour mon projet
Merci

----------


## pseudocode

> Salut a tous!! Je n'arrive toujours pas  regler le problme!!!
> Si quelqu'un pouvait m'aider ca serait vraiment gentil, car je commence a strsser grave pour mon projet
> Merci


Peut-etre que tu devrais te faire un peu de bibliographie sur la "vectorisation" d'image.

----------


## comrad85

Salut !! J'ai enfin regl mon problme sur la TH  ::king:: 
Merci a vous

----------

