# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  point d'interet harris

## lastrecrue

je doit implementer un algorithme sur matlab d'extraction de point d'interet avec la methode de harris, je sais que c'est une gradiant multiplier par la transposer du gradiant d'une fenetre tous ca apliqu a une gaussienne on obtient une matrice car de dim 2, mais ce que je ne comprend pas c'est le pourquoi. une valeur propre elev veus dire contour 2 valeurs propres un coin, j'ai cherhcer le pourquoi du comment su google je trouve pas, alors si vous pouvais m'expliquer le pourquoi de la methode de harris, si non si vous pouvez me proposez une bonne documentation sur cette methode ca m'aiderai car je doit rediger un rapport sur cette methode.

----------


## fumidu

Faut reprendre ta respiration l !

Tu es surement trs press d'avoir ta rponse, mais a ne te dispense pas de faire un petit effort au niveau de l'orthographe/grammaire et de la mise en page.




> une valeur propre elev veus dire contour 2 valeurs propres un coin, j'ai cherhcer le pourquoi du comment su google je trouve pas


Je ne comprends mme pas la phrase...
T'es pas oblig de rajouter des enluminures partout, mais fais au moins l'effort de te relire !

----------


## pseudocode

> je sais que c'est une gradiant multiplier par la transposer du gradiant d'une fenetre tous ca apliqu a une gaussienne on obtient une matrice car de dim 2


Ca c'est une des formules. 

Le detecteur de Harris est un detecteur de "coins". Le principe des detecteurs de coins est en gros toujours le meme: chercher un changement rapide de direction du contour.

Et Le principe des detecteurs de contour est: chercher un changement rapide de direction des intensits.

Pour observer les changements, on utilise la norme du gradient:

contour = |Gradient( intensit )|

coin = |Gradient( Gcontour )| 
coin = |Gradient( Gradient( intensit ) )| 
coin = |Gradient-2nd(intensit)| 

Donc, ce qui nous interesse c'est de connaitre la norme de la derive 2nde de l'intensit.

1ere Methode: Calculer la derive 2nde de l'intensit (Hessian), puis prendre la norme.

2nde Methode: Approximer la derive 2nde de l'intensit (Laplacien), puis prendre la norme.

3eme Methode: Approximer la norme de la derive 2nde de l'intensit (Harris).




> mais ce que je ne comprend pas c'est le pourquoi. une valeur propre elev veus dire contour 2 valeurs propres un coin


Pour faire simple, disons que le changement d'intensit dans la direction (u,v) est donne par une formule de type "erreur quadratique" sur un voisinage:



```

```

Pour de petit deplacement (u,v), on peut approximer (si, si) cette fonction par 



```

```

Oh! Une jolie equation matricielle d'ellipse. Les changements sont donc inscrit dans une ellipse de longueur L1 et largeur L2. Et comment on calcule la hauteur et la largeur de l'ellipse, en connaissant sa matrice ?  En calculant ses 2 valeurs propres.

Regardons maintenant la forme de l'ellipse:
- Si L1 et L2 sont petits, les changements sont minimes -> zone uniforme
- Si L1>>L2 ou L2>>L1, les changements sont sur un axe -> bord
- Si L1 et L2 sont grands, les changements sont sur 2 axes -> coin

Voila. J'espere que c'est plus clair...

----------


## lastrecrue

Merci bien pour vos explications, j'ai implment l'algorithme de harris avec lalgorithme suivant :
Calculer du gradient (I) suivant x Ix;
Calculer du gradient (I) suivant y Iy;
Pour chaque pixel la matrice : 


```

```

R=Determinant (M)-k(Trace(M));
si R>0 et Trace(M)>t (seuil) alors coin.
1er si jutilise 0 comme seuil de R a ne marche pas, puis appart chercher un seuillage spcifique a chaque image je ne vois pas comment je peut automatiser mon seuillage.

----------


## pseudocode

> R=Determinant (M)-k(Trace(M));
> si R>0 et Trace(M)>t (seuil) alors coin.
> 1er si j’utilise 0 comme seuil de R a ne marche pas, puis appart chercher un seuillage spcifique a chaque image je ne vois pas comment je peut automatiser mon seuillage.


Le calcul de R est suffisant pour la detection de Harris:  R>seuil ==> coin

En effet R est grand si le produit des valeurs propres est grand.
Evidement "le produit est grand" ne signifie pas forcement  "les 2 valeurs sont grandes". D'ou le facteur "k" qui sert a amoindrir le cas L1>>L2.

Sinon, autre solution: calculer les 2 valeurs propres. Pas trop dur avec une matrice carr symetrique de 2x2  ::P:

----------


## lastrecrue

j'ai implmenter les 2 mthodes, j'ai trouv des rsultats assez satisfaisant, mais dans les 2 cas le seuillage reste un vrais problme car je doit changer le seuil pour chaque image, je cherche savoir si il y a un traitement qui me permettra davoir a peut prs des images qui ont besoin d mme seuil si non est ce que le choix du seuil peut ils tre automatiser, ce genre de question qui me passe par la tte au quelle je ne vois pas de mots cls pour faire une recherche sur google.

----------


## pseudocode

> j'ai implmenter les 2 mthodes, j'ai trouv des rsultats assez satisfaisant, mais dans les 2 cas le seuillage reste un vrais problme car je doit changer le seuil pour chaque image, je cherche savoir si il y a un traitement qui me permettra d’avoir a peut prs des images qui ont besoin d mme seuil si non est ce que le choix du seuil peut ils tre automatiser, ce genre de question qui me passe par la tte au quelle je ne vois pas de mots cls pour faire une recherche sur google.


Oui le seuillage reste un probleme pour ce genre d'algo. Tu peux regarder le " multi-scale Harris operator" pour avoir une piste sur la recherche de seuil.

Sinon tu as la methode "barbare" que j'ai utilis (sous-forum "contribuez"): Tu gardes les "N" coins qui ont le plus grand score.  ::aie::

----------


## parp1

Moi C'est ce que je faisait pour la detection de ma prothese.

En fait, on selectionn des Zones la ou les points nous semblaient robuste. Et ensuite dans cette fenetre il faisait le calcul en augmentant le seuil jusqu'a ce qu'il ne reste qu'un point, le plus robuste....

----------


## lastrecrue

je note mes remaque dans l'lgorithme de harris il yas 3 paramaitre a choisir :
1-la matrice gaussienne.
2-la castante k pour le R=det(M)-k(trace(M))
3-finalement le sueille t.

----------


## math_infomatique

Bonjour  tous, 

je suis dbutant en traitement d'image et quand j'ai tudi le cours des Points d'interet j'ai eu les mme questions que lastrecrue..
d'ailleurs j'ai un mini projet en matlab o j'ai implment l'oprateur Harris et j'ai pas trouv de solution pour le seuillage automatique 

je me suis bas sur : 
R=Determinant (M)-k(Trace(M));

est ce que un coin peut etre dfini comme suit : 

k=0.04 (d'aprs plusieurs documents) et R>0   ??

----------


## pseudocode

> est ce que un coin peut etre dfini comme suit : 
> 
> k=0.04 (d'aprs plusieurs documents) et R>0   ??


Oui, ce sont des paramtres acceptables. Gnralement on prend R entre 0.04 et 0.10.

Pour R, je conseille de calculer dynamiquement la valeur de seuil en tudiant la distribution des valeurs de R. Par exemple, on peut chercher le max de R et seuiller a xx% de ce max. Ou alors choisir le seuil de manire a avoir yy% des valeurs de R suprieurs au seuil.

----------


## math_infomatique

> Oui, ce sont des paramtres acceptables. Gnralement on prend R entre 0.04 et 0.10.
> 
> Pour R, je conseille de calculer dynamiquement la valeur de seuil en tudiant la distribution des valeurs de R. Par exemple, on peut chercher le max de R et seuiller a xx% de ce max. Ou alors choisir le seuil de manire a avoir yy% des valeurs de R suprieurs au seuil.


merci  ::): 

mais que veux tu dire par xx% et yy% ?

----------


## pseudocode

> merci 
> 
> mais que veux tu dire par xx% et yy% ?


Ce sont des valeurs arbitraires pour le seuillage.

Tu me diras, ca dplace le problme : au lieu de seuiller  R>EPSILON (avec EPSILON arbitraire), on seuille  R>xx*maximum/100 (avec xx arbitraire).  ::D: 

Mais c'est en pratique plus stable (et comprhensible) de parler en % par rapport au maximum. Rien qu'avec un seuil  5%, ca limine beaucoup de points.

----------


## math_infomatique

c'est clair   ::D: 

merci

----------

