# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Calcul de la matrice Hessienne

## pseudocode

http://en.wikipedia.org/wiki/Hessian_matrix

Je cherche a calculer les derives partielles secondes (d) de l'intensit au voisinage d'un pixel.

C'est a dire les coefficients de la matrice Hessienne de taille 2:



```

```

A priori, les 2 coefficients d/dx et d/dy peuvent etre calculs grace a la methode du "Laplacian Of Gaussian" (LoG). Mais, je ne sais pas calculer le dernier coefficient: d/dxdy.

Je pense me souvenir qu'on peut calculer les coefficients de cette matrice en faisant 3 convolutions gaussienne / image, mais je ne sais plus comment...

Si vous pouvez m'aider...

 ::merci::

----------


## pseudocode

Hum... Je me rpond a moi meme en disant:

"Bah t'es bete ou quoi ?  T'as donn toi meme la rponse: La mthode du Laplacian of gaussian. Il suffit juste de poursuivre le calcul en derivant dI/dx par rapport a y !".

Hum. Effectivement.  ::oops::   ::mur::  

Comme quoi le fait d'ecrire correctement le probleme, ca aide a trouver la solution  ::aie:: 

Pour info:


```

```

----------


## riadh_ado

Slt, Mais tu as fait le calcul gaussienne? est ce que tu le multiplie ensuite par la valeur de pixel de l'image pour avoir les valeur de la matrice hessiane?  Merci et A+

----------


## pseudocode

> Slt, Mais tu as fait le calcul gaussienne? est ce que tu le multiplie ensuite par la valeur de pixel de l'image pour avoir les valeur de la matrice hessiane?  Merci et A+


Oui.

Il faut 2 convolutions par pixel pour avoir le gradient, et 3 convolutions par pixel pour avoir la matrice hessiane !

L'interet d'avoir pris une gaussienne c'est que ca fait un lissage, ce qui est toujours une bonne ide avant de calculer des gradients...

Gradient (norme) 5x5 sigma=1.4 (a gauche)
Laplacien (trace de la hessiane) 7x7 sigma=1.4 (a droite)

----------


## riadh_ado

Slt vraiment j'ai besoin de votre aide, est ce qu'on peut appliqu le reponse gaussienne cad (d/dxx) comme a 



```

```

et Merci beaucoup pour votre aide.

----------


## riadh_ado

J'oublie les autres elements du matrice hessienne, est ce qu'ils peuvent tre calcul comme a aussi:



```

```

Merci bien. ::lol::

----------


## pseudocode

> Slt vraiment j'ai besoin de votre aide, est ce qu'on peut appliqu le reponse gaussienne cad (d/dxx) comme a 
> 
> 
> 
> ```
> 
> ```
> 
> et Merci beaucoup pour votre aide.


Heu... Non.  ::aie::  

On ne peut pas juste multiplier "un seul" pixel de l'image par "une seule" valeur de la fonction. Il faut faire une convolution sur le voisinage du pixel.

En java:


```

```

----------


## riadh_ado

Oui c'est a, merci beaucoup pseudocode. Maintenent je comprend bien le fonctionnement de filtre gaussienne. Mais il me reste une autre probleme dans ce matrice,bon est ce que je peux avoir comment tu calcules les vecteurs propres de matrice hessienne (pour moi c'est comme a que je le fais)

----------


## riadh_ado

Et pour les valeurs propres je le calcul comme a (image de la piece jointe)
Et merci beaucoup!

----------


## pseudocode

> Oui c'est a, merci beaucoup pseudocode. Maintenent je comprend bien le fonctionnement de filtre gaussienne. Mais il me reste une autre probleme dans ce matrice,bon est ce que je peux avoir comment tu calcules les vecteurs propres de matrice hessienne (pour moi c'est comme a que je le fais)


Oui, j'ai les memes formules.  ::king:: 

A noter que si "fxy=0", alors la matrice est diagonale. Donc les valeurs propres et les vecteurs propres sont triviaux.

----------


## riadh_ado

[FONT=Times New Roman]Est-ce que je peux voir comment tu implmentes les vecteurs propres de matrice hessienne, si possible bien sr, Merci infiniment[/FONT]

----------


## pseudocode

> [FONT=Times New Roman]Est-ce que je peux voir comment tu implmentes les vecteurs propres de matrice hessienne, si possible bien sr, Merci infiniment[/FONT]


Comment ca "comment tu implmentes les vecteurs propres" ?

J'implemente rien du tout. Je calcule les valeurs propres Lmax et Lmin.

Lmin= 0.5 * ( fxx + fyy + Racine ( (fxx-fyy) + 4*fxy) )
Lmax= 0.5 * ( fxx + fyy - Racine ( (fxx-fyy) + 4*fxy) )

Apres je calcule 2 vecteurs propres, par exemple:

U=(fxy , fxx - Lmax) 
V=(fxy, fxx - Lmin) 

Et si necessaire, je les normalise en les divisant par leur norme

||U|| = Racine ( fxy + (fxx - Lmax) )
||V|| = Racine ( fxy + (fxx - Lmin) )

----------


## riadh_ado

[FONT=Verdana]* Comment tu implmentes les vecteurs propres*  [/FONT]
[FONT=Verdana]Bon je pens que vous avez implment (en Java ou C++) le calcul de matrice hessienne pour un traitement particulier comme la dtection des lignes. Car je travaille sur a et je narrive pas a le faire  il y a plein de truc que je ne le comprend pas dans le calcul de ce matrice pouvez vous maid, je serais vraiment content de votre aide  et merci infiniment pseudocode pour votre prestigieux aide. [/FONT]

----------


## pseudocode

> Bon je pens que vous avez implment (en Java ou C++) le calcul de matrice hessienne pour un traitement particulier comme la dtection des lignes.


Pour de la dtection de contour.




> il y a plein de truc que je ne le comprend pas dans le calcul de ce matrice pouvez vous m’aid, je serais vraiment content de votre aide


Voila un exemple de ce que ca peut donner:



```

```



```

```

----------


## riadh_ado

Croyez moi je ne trouve pas les mots pour vous exprimez mes remerciements, vraiment Merci beaucoup.
 ::merci::  ::merci::  ::merci::

----------


## pseudocode

> Croyez moi je ne trouve pas les mots pour vous exprimez mes remerciements, vraiment Merci beaucoup.


 ::pingoin2::

----------

