# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Calcul du jacobian et de la matrice hessienne

## info_amel

Bonsoir,

D'abord il faut signaler que je suis novice dans le domaine de traitement d'image donc a se peut que mes questions seront banales  ::oops:: 

En fait, je suis entraine d'implmenter un algorithme d'alignement dont le principe est :

on a deux images T et I . et une transformation W(p1,...pn) de n paramtres. tel que I=W(T) . (par exemple W peut tre une translation)

L'algorithme prend T et I comme entr et donne W comme rsultat.

Pour faire a il faut  une certaine tape calculer le jacobien de W not :


```

```


et calculer la matrice hessienne :



```

```

j'ai compris comment calculer a mathmatiquement mais j'arrive pas  comprendre comment le faire sur les image ou la transformation que j'ai !!!

Merci d'avance de me faire comprendre  ::oops::

----------


## pseudocode

Il faut utiliser les formules de drivations discrtes.

1er ordre

dI/dx = ( I(x+1,y) - I(x-1,y) ) / 2
dI/dy = ( I(x,y+1) - I(x,y-1) ) / 2


2nd ordre

dI/dx = ( I(x+1,y) - 2*I(x,y) + I(x-1,y) ) / 4
dI/dy = ( I(x,y+1) - 2*I(x,y) + I(x,y-1) ) / 4
dI/dxy = ( I(x+1,y+1) - I(x-1,y+1) - I(x+1,y-1) + I(x-1,y-1) ) / 4


Et de mme pour W

dWx/dp1 = ( Wx(p1+epsilon,...) - Wx(p1-epsilon, ...) ) / 2*epsilon

----------


## info_amel

Bonjour, merci pour ta rponse  ::): 

concernant la matrice hessienne . est ce que je peux utiliser directement les valeur de gradient de l'image? parce que j'ai calculer le gradient de l'image I par le filtre "Sobel". et je posde deux matrices : une pour le gradient en x et l'autre pour le gradient en y.
Donc est ce que je peux remplir la matrice hessienne comme cela ?: 



```

```


et concernant le jacobien !! je n'ai pas compris ce que tu m'as dis  ::oops:: 
W est une matrice de transformation , comment j'applique ce que tu m'as cris ?

J'espre que j'ai bien exprim mon problme  ::oops::

----------


## pseudocode

> Donc est ce que je peux remplir la matrice hessienne comme cela ?:


Non. La drive seconde ce n'est pas le carr de la drive premire.  ::aie:: 




> et concernant le jacobien !! je n'ai pas compris ce que tu m'as dis 
> W est une matrice de transformation , comment j'applique ce que tu m'as cris ?


Bah, tu appliques la formule de drivation pour chaque paramtre.

Si tu nous donnais un exemple de matrice W, et de la formule utilise pour calculer W(T) ?

----------


## info_amel

> Non. La drive seconde ce n'est pas le carr de la drive premire.


D'accord , alors j'applique le filtre sobel 2 fois en x pour obtenir dI/dx?
c'est  dire :

```

```

et je l'applique une fois en x et autre en y pour obtenir dI/dx dI/dy ?
c'est  dire :

```

```




> Si tu nous donnais un exemple de matrice W, et de la formule utilise pour calculer W(T) ?


W peut avoir plusieurs forme par exemple :


```

```

Donc chaque pixel p(x,y) de T est multipli par W pour trouver ces nouvelles coordonnes dans l'image W(T).

donc si (xt,yt)=(2,30) alors aprs la multiplication de chaque pixel de T par W en trouve une image (T1=W(T)) qui est la similaire  T mais dont les pixels sont dcals de 2 en x et de 30 en y.

noter que W peut tre une rotation, changement d'chelle....

En tous les cas l'algorithme s'appelle "Lucas et Kanade" il est utilis pour l'alignement des image et aussi pour le suivi et autres... (En sait jamais tu as une ide sur a)

----------


## pseudocode

> D'accord , alors j'applique le filtre sobel 2 fois en x pour obtenir dI/dx?
> et je l'applique une fois en x et autre en y pour obtenir dI/dx dI/dy ?


Oui, comme a cela marche. D'ailleurs on obtient au final les memes formules que j'ai donne.




> W peut avoir plusieurs forme par exemple :
> 
> 
> ```
> 
> ```
> 
> Donc chaque pixel p(x,y) de T est multipli par W pour trouver ces nouvelles coordonnes dans l'image W(T).


Ok. C'est donc une matrice de transformation 2D en coordonnes homognes (x,y,s).

Wx = 1*x + 0*y + xt = x + xt
Wy = 0*x + 1*y + yt = y + yt
Ws = 0*x + 0*y + 1  = 1



```

```

on calcule (ou on approxime) les termes de la matrice.

Ici, c'est facile

dWx/dxt  = d(x + xt) / dxt = 1
dWy/dxt  = d(y + yt) / dxt = 0
...

Ce qui nous donne 



```

```

----------


## info_amel

Merci beaucoup pour ta rponse j'ai bien compris le jacobien  ::ccool:: 

Concernant la matrice hessienne maintenant le document que je lis donne une autre dfinition de la matrice hessienne (c'est pour cela que j'ai pens  la premire solution qui consiste  faire le carr de la drive) .

Bref : 
dans Wikipedia : j'ai a :


> En mathmatiques, la matrice hessienne d'une fonction numrique f est la matrice carre, note H(f), de ses drives partielles secondes.


Donc le calcul doit tre comme tu m'as dis.

Alors que dans le document que j'ai , la matrice hessienne est plutt dfinie comme il est montr dans l'image attache.
et dans ce cas elle doit tre ( mon avis) calcul par produit !!!

Merci de voir l'image et me dis est ce que c'est la mme dfinition de la matrice ou quoi exactement ?!

je te remercie pour ton aide prcieuse

----------


## pseudocode

> Alors que dans le document que j'ai , la matrice hessienne est plutt dfinie comme il est montr dans l'image attache.
> et dans ce cas elle doit tre ( mon avis) calcul par produit !!!
> 
> Merci de voir l'image et me dis est ce que c'est la mme dfinition de la matrice ou quoi exactement ?!



Hum... Ce qui est sr c'est que la dfinition de wikipedia est bonne.  ::D: 

Pour ta formule, je ne sais pas si elle donne, au final, le meme rsultat que celle de wikipedia. Dans le doute, je prendrai les formules que je t'ai donn.  ::aie::

----------


## info_amel

peut tu s'il te plait jeter un coup d'il sur l'image attache ici :

http://www.developpez.net/forums/d91...e-luca-tomasi/

elle contient les tapes que j'ai entraine de suivre... Pour tre sur si se qui est demand de calcul est vraiment la matrice hessienne !!!

----------


## pseudocode

> peut tu s'il te plait jeter un coup d'il sur l'image attache ici :
> 
> http://www.developpez.net/forums/d91...e-luca-tomasi/
> 
> elle contient les tapes que j'ai entraine de suivre... Pour tre sur si se qui est demand de calcul est vraiment la matrice hessienne !!!


Dans le papier original, ce n'est pas la Hessienne mais le carr de la drive (et donc ta formule est bonne).  ::D:

----------


## info_amel

mmm merci pour cette information. Mais le document que j'ai : 
http://grvc.us.es/staff/ferruz/maste...cas_kanade.pdf

et mme dans les site je trouve toujours que son nom est la matrice hessienne !!!!

en tous les cas en rdigeant le rapport donc est ce que je note H comme matrice hessienne?!!! (juste ton avis)

----------


## pseudocode

> mmm merci pour cette information. Mais le document que j'ai : 
> http://grvc.us.es/staff/ferruz/maste...cas_kanade.pdf
> 
> et mme dans les site je trouve toujours que son nom est la matrice hessienne !!!!
> 
> en tous les cas en rdigeant le rapport donc est ce que je note H comme matrice hessienne?!!! (juste ton avis)


Tu peux la noter comme matrice hessienne "de Lucas Kanade". Parce que ce n'est ni la hessienne de l'image, ni celle de la transformation, mais d'un mlange des deux.

----------


## info_amel

Merciiii bien pour tes rponses  ::): 

c'est rsolu  ::ccool::

----------

