Vous êtes sur la page 1sur 6

Algorithme de Hough

Ralis par : Rehahlia Mohammed lamine

Partie Thorique:
-La transforme de Hough est une technique de reconnaissance de formes
invente en 1962 par Paul Hough, utilise dans le traitement d'images
numriques.
L'application la plus simple permet de dtecter les lignes prsentes dans
une image, mais des modifications peuvent tre apportes cette
technique pour dtecter d'autres formes gomtriques : c'est la
transforme gnralise de Hough dveloppe par Richard Duda et Peter
Hart en 1972.

Le problme pos:

-Le problme pos est celui de la recherche et de la dtection de lignes


qui seraient ventuellement prsentes dans une image analyse.
Le principe qui sous-tend la transforme de Hough est qu'il existe un
nombre infini de lignes qui passent par un point, dont la seule diffrence
est l'orientation (l'angle). Le but de la transforme est de dterminer
lesquelles de ces lignes sont les plus frquentes dans l'image analyse.
Afin de dterminer que deux points se trouvent sur une mme ligne
potentielle (attention deux points sont toujours aligns), on doit crer une
reprsentation de la ligne qui permet une comparaison dans ce contexte.

-On suppose tout d'abord que si des lignes ou des segments de droites
sont prsents dans une image, ils feront partie des contours prsents dans

l'image. On commence donc dans un premier temps par identifier tous les
points de contours de cette image, par exemple l'aide de techniques de
mesures de gradients locaux entre les valeurs des pixels autour de chaque
point de l'image. Les points de l'image prsentant les gradients les plus
levs dans leur voisinage, soit globalement pour l'image (seuillage fixe),
soit par rapport aux gradients gnralement prsents dans un voisinage
plus large autour du point (seuillage dynamique), sont les plus
susceptibles d'appartenir des contours de cette image.
Chacun des points des contours ainsi identifis (x, y) va alors permettre
une projection dans un plan (le plan transform) des coordonnes polaires
de toutes les droites passant par ce point. Les quations des droites
passant en chacun de ces points (x, y) sont reprsentes par l'quation
"normalise" = x * cos() + y * sin(), o est l'angle de la droite et la
distance de la droite l'origine (au lieu de y = a *x + b). Au point (x, y) du
contour, on fait donc correspondre une courbe [, ], o prend toutes les
valeurs possibles de 0 2, prenant la valeur = x * cos() + y * sin().
Une fois applique tous les points des contours, et, pour chacun, tous
les angles possibles, les points (, ) de l'espace transform les plus
souvent adresss sont les coordonnes des droites ou des segments de
droite les plus reprsents dans l'image de dpart.
En pratique, l'espace transform de Hough sera reprsent par une image,
dont les abscisses seront les angles , dont les ordonnes les valeurs de ,
et dont l'intensit au point quelconque (, ) est le nombre d'occurrences
de (, ) provenant de l'image d'origine. Aucune hypothse de continuit
des droites ou segments de droite de l'image de dpart n'est faite ici, ce
qui rend la transforme robuste l'absence de points : masquage partiel
des droites, et au bruit dans l'image.
Les valeurs de peuvent tre discrtises par exemple en degrs (selon la
prcision souhaite), et les valeurs de en pixels reprsentant la distance
(toujours infrieure en valeur absolue au diamtre de l'image de dpart),
la frquence tant borne par le nombre de points slectionns dans les
contours de l'image de dpart.

-Dans la transforme de Hough, dite aussi transforme standard de Hough


ou SHT, chaque ligne est un vecteur de coordonnes paramtriques :

: l'angle

: la norme du vecteur (la longueur du segment perpendiculaire la


droite d'angle et passant par l'origine)

En transformant toutes les lignes possibles qui passent par un point, cest-dire en calculant la valeur de pour chaque , on obtient une sinusode
unique appele espace de Hough. Si les courbes associes deux points
se coupent, l'endroit o elles se coupent dans l'espace de Hough
correspond aux paramtres d'une droite qui relie ces deux points.

-Exemple:
code matlab:
RGB = imread('gantrycrane.png');

% conversation vers image niveau de gri .


I = rgb2gray(RGB);

% extraction des contours


BW = edge(I,'canny');
[H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',90:0.5:89.5);

% affichage de l'image originale


subplot(2,1,1);
imshow(RGB);
title('Gantrycrane Image');

% affichage de matrice de hough .


subplot(2,1,2);
imshow(imadjust(mat2gray(H)),'XData',T,'YData',R,...
'InitialMagnification','fit');
title('Hough Transform of Gantrycrane Image');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(hot);
Rsultat :

Gantrycrane Image

Hough Transform of Gantrycrane Image


-400

-200
0
200
400
-80

-60

-40

-20

20

40

60

80

Explication de l'algorithme :
-dtecter le contour en utilisant 'canny '
-designer les points de contour dans l'espace hough et
sauvegarder les dans un accumulateur.
-interprtation nous prend vers des lignes avec longer
infinie .