# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Comprendre le descripteur SIFT

## ibnensi

Bonjour  tous,


Je suis une dbutante en analyse d'images.

Je viens de commencer mon projet de recherche. Comme premire tape, je dois comprendre le droulement du descripteur SIFT.

J'ai lu une partie de l'article de David Lowe. Cependant, je trouve une difficult  dcortiquer son contenu (sauf la premire partie de la diffrence de Gaussiennes).

Dois je me documenter avant sur quelques points gnraux de l'analyse d'images?

En fait, j'ai cherch une autre source documentaire sur le net mais je n'ai pas trouv,

Merci de m'aider SVP,

Bon travail  tous,

----------


## romanzo

Salut,

Tu trouveras tout ce dont tu as besoin ici
http://www.developpez.net/forums/d52...gorithme-sift/

----------


## ibnensi

Bonjour, 

Merci beaucoup, 

Bonne journe,

----------


## ibnensi

Bonjour, 

J'ai bien vu la discussion du lien http://www.developpez.net/forums/d52...gorithme-sift/. Ce lien m'a beaucoup aid et m'a clairci plusieurs points flous surtout dans la premire partie de l'article de David  Lowe "Detection of scale-space extrema". Je vous remercie :-). 

Cependant, il reste quelques parties que je n'ai comprises: 

Pourquoi LOWE a utilis la mthode de pyramide (octave) et appliqu successivement la diffrence de gaussienne ?Est ce que si on choisit 3 niveaux de pyramides par exemple, faut-il avoir 3 DOGs par octave? Pourquoi on calcule l'interpolation de taylor pour la fonction DOGs? que reprsente l'offset transpos((x,y,sigma))? en fait, ce que j'ai compris  partir de ce forum que les coordonnes entires d'un point cl sont dtermins en comparant chaque point avec ses 26 voisins, ensuite, les coordonnes relles sont obtenues en interpolant chaque DOG par Taylor. Je n'ai pas encore saisi le lien entre ses deux tapes. Je n'ai encore compris ce que David Lowe cherche  prouver dans les deux sections "Frequency of sampling in scale" et "Frequency of sampling in the spatial domain". "For the experiments in this paper, all extrema with a value of |D(x)| less than 0.03 were discarded (as before, we assume image pixel values in the range [0,1])", pourquoi David lowe a opt pour ce choix? Dans l'tape d'limination des points se trouvant sur les artes, je n'ai compris comment David Lowe procde?

Merci d'avance,

----------


## pseudocode

> Pourquoi LOWE a utilis la mthode de pyramide (octave) et appliqu successivement la diffrence de gaussienne ?


C'est une approximation rapide pour le calcul du Laplacien, afin de dtecter les blobs.




> Est ce que si on choisit 3 niveaux de pyramides par exemple, faut-il avoir 3 DOGs par octave?


Le nombre d'octaves et le nombre de niveau par octave ne sont pas lis. 




> Pourquoi on calcule l'interpolation de taylor pour la fonction DOGs? que reprsente l'offset transpos((x,y,sigma))? en fait, ce que j'ai compris  partir de ce forum que les coordonnes entires d'un point cl sont dtermins en comparant chaque point avec ses 26 voisins, ensuite, les coordonnes relles sont obtenues en interpolant chaque DOG par Taylor. Je n'ai pas encore saisi le lien entre ses deux tapes.


Lors de la recherche de maximum, on trouve un point qui est en fait un pixel sur un des niveaux. Ce n'est qu'une approximation de l'endroit o se trouve rellement le point-cl. Pour avoir l'endroit exact il faudrait une rsolution infiniment prcise = une infinit de niveaux et de pixels.

L'interpolation de taylor permet d'avoir une approximation plus prcise de cet endroit exact  partir des niveaux et pixels dont on dispose.




> Je n'ai encore compris ce que David Lowe cherche  prouver dans les deux sections "Frequency of sampling in scale" et "Frequency of sampling in the spatial domain".


Lowe a fait des essais et conclu que les meilleures valeurs pour lui taient 3 DOGs par octave et sigma=1.6




> "For the experiments in this paper, all extrema with a value of |D(x)| less than 0.03 were discarded (as before, we assume image pixel values in the range [0,1])", pourquoi David lowe a opt pour ce choix?


On ne s'interesse qu'aux points ayant un fort laplacien : les point avec des valeurs trop basses sont limins. Je ne sais pas pourquoi il a choisi spcifiquement 0.03.




> Dans l'tape d'limination des points se trouvant sur les artes, je n'ai compris comment David Lowe procde?


Les vecteurs  propres de la Hessienne nous donne les 2 principales directions du blob. Les 2 valeurs propres associes nous donne l'influence de chaque direction.

Si les 2 valeurs propres sont grandes, le blob est fortement attir dans 2 directions diffrentes => c'est donc un coin.

Si une seule valeur propre est grande, le blob est fortement attir dans une seule direction => c'est donc une arte.

----------


## ibnensi

Bonjour  tous, 

Je vous remercie beaucoup pour votre rponse,

En fait, je suis maintenant  l'tape "assignation d'orientation" et "descripteur du point cl". 
Comme je suis trs dbutante dans ce domaine, je n'ai pas compris grande chose, malgr que j'ai bien feuill la discussion du lien "http://www.developpez.net/forums/d52...gorithme-sift/". J'ai vu d'autres liens qui dfinissent plusieurs notions en imagerie tel que l'histogramme des orientations, notion de gradient, etc. Mais, cette partie reste encore floue. 

j'ai quelques questions  vous poser: 

j'ai compris que l'tape d'assignation d'orientation est ncessaire pour l'invariance en rotation. Elle se fait pour chaque pixel du voisinage du point cl correspondant. On calcule le gradient en fait pour chaque pixel (i,j) au voisinage du point cl. Or, d'aprs l'tape prcdente, les points cls restants sont de coordonnes relles Pc(x,y). Comment est dfini le voisinage de Point cl cad pour quels coordonnes des points le gradient est calcul? 

Pourquoi on divise l'histogramme en 36 intervalles? Est ce que l'histogramme se calcule pour toute la zone couvrant le voisinage? 

J'ai pas compris globalement tout le processus, pourquoi Lowe a choisi le gradient/ histogramme pour garantir l'invariance par rotation? 

Pourquoi il a divis aprs la zone entourant le point cl en 4 zones dont chacune est subdivis en 16 parties?

Pourquoi il a divis chaque histogramme de la plus petite zone en 8 intervalles? 

Pourquoi chaque fois qu'on calcule un histogramme, il est doublement pondr? 

Je sais que mes questions sont assez simples. Mais, votre aide sera trs bnfique pour moi. 

En fait, je ne vois pas l'aspect pratique de toutes les oprations du descripteur SIFT depuis la convolution de l'image initiale jusqu' la dernire tape.

Merci de m'aider SVP,

----------


## pseudocode

> j'ai compris que l'tape d'assignation d'orientation est ncessaire pour l'invariance en rotation. Elle se fait pour chaque pixel du voisinage du point cl correspondant. On calcule le gradient en fait pour chaque pixel (i,j) au voisinage du point cl. Or, d'aprs l'tape prcdente, les points cls restants sont de coordonnes relles Pc(x,y). Comment est dfini le voisinage de Point cl cad pour quels coordonnes des points le gradiant est calcul?


le voisinage est un rectangle de 16x16 points centr sur le keypoint. Comme les coordonnes du keypoint (P) sont relles, les coordonnes des 16x16 points du voisinage (Vi,j) sont galement relles.
Vi,j.x = P.x-8+16*i 
Vi,j.y = P.y-8+16*j

En thorie, il faut dont calculer la calculer la valeur des points Vi,j par interpolations. Et ensuite on calcule le gradient.

En pratique, on calcule d'abord le gradient sur toute l'images... donc sur des coordonnes entires. Et on interpole la valeur du gradient.




> Pourquoi on divise l'histogramme en 36 intervalles? Est ce que l'histogramme se calcule pour toute la zone couvrant le voisinage?


Oui, la recherche de l'orientation principale se fait sur toute la zone couvrant le voisinage. Je ne sais pas pourquoi Lowe a choisi spcifiquement de prendre 36 intervalles.




> J'ai pas compris globalement tout le processus, pourquoi Lowe a choisi le gradient/ histogramme pour garantir l'invariance par rotation?


Ce qui garanti l'invariance, c'est qu'on oriente toujours le voisinage par rapport a la direction dominante = au vecteur gradient qui apparait le plus souvent dans le voisinage. 

D'o le fait qu'on calcule un histogramme pour trouver l'orientation qui apparait la plus souvent.




> Pourquoi il a divis aprs la zone entourant le point cl en 4 zones dont chacune est subdivis en 16 parties? Pourquoi il a divis chaque histogramme de la plus petite zone en 8 intervalles?


Il a fait des tests et trouv que c'tait de bonnes valeurs.  ::P: 




> Pourquoi chaque fois qu'on calcule un histogramme, il est doublement pondr?


 ::koi::  Je ne vois pas de quoi tu parles. 





> En fait, je ne vois pas l'aspect pratique de toutes les oprations du descripteur SIFT depuis la convolution de l'image initiale jusqu' la dernire tape.


L'image qui rsume le mieux l'ide, c'est celle l :


Pour chaque pixel de l'image, on peut calculer le vecteur gradient (image de gauche). Le gradient nous renseigne sur le contour local.

Les keypoint dans SIFT sont des "coins", c'est a dire des endroits ou le contour change brutalement d'orientation. Ce sont des point particulirement intressants car ils sont trs spcifiques, il n'y en a pas trop, et ils sont assez invariants aux transformations (zoom, rotation, perspective, ...).

Un bon moyen de dcrire ce qui se passe autour d'un keypoint, c'est de dcrire les contours autour du keypoint. Donc de regarder les vecteurs gradient dans le voisinage : est-ce qu'ils vont tous dans la mme direction, ou dans 2 directions principales, ou dans tous les sens, ... 

Pour cela on construit un histogramme qui reprsente la rpartition des vecteurs gradient dans les 8 directions cardinales (image de droite). Lowe a choisi de faire 16 histogrammes, chacun reprsentant un voisinage de 4x4 pixels.

En mettant bout a bout toutes ces informations, on obtient une "signature" compose de 16 histogrammes * 8 directions cardinales = 128 valeurs.

----------


## ibnensi

Je vous remercie beaucoup pour votre rponse,




> le voisinage est un rectangle de 16x16 points centr sur le keypoint. Comme les coordonnes du keypoint (P) sont relles, les coordonnes des 16x16 points du voisinage (Vi,j) sont galement relles.
> Vi,j.x = P.x-8+16*i 
> Vi,j.y = P.y-8+16*j
> 
> En thorie, il faut dont calculer la calculer la valeur des points Vi,j par interpolations. Et ensuite on calcule le gradient.
> 
> En pratique, on calcule d'abord le gradient sur toute l'images... donc sur des coordonnes entires. Et on interpole la valeur du gradient.


D'accord,




> Oui, la recherche de l'orientation principale se fait sur toute la zone couvrant le voisinage. Je ne sais pas pourquoi Lowe a choisi spcifiquement de prendre 36 intervalles.


La direction principale est-elle gale  la direction dominante de l'histogramme ?




> Ce qui garanti l'invariance, c'est qu'on oriente toujours le voisinage par rapport a la direction dominante = au vecteur gradient qui apparait le plus souvent dans le voisinage. 
> 
> D'o le fait qu'on calcule un histogramme pour trouver l'orientation qui apparait la plus souvent.


cad l'axe des abscisses de l'histogramme prsente les intervalles de l'orientation: 1er intervalle: 0..10
2me intervalle: 10..20
...
dernier intervalle: 350..360 
L'axe d'ordonnes prsente la frquence d'apparition des points ayant une orientation du gradient appartenant  chaque intervalle de l'axe d'abscisses. On slectionne aprs l'orientation dominante et on l'attribue au point cl. 

Comme c'est cit sur Wikipdia: " l'issue de cette tape, un point-cl est donc dfini par quatre paramtres (x,y,σ,θ)" ==> θ: orientation dominante de l'histogramme??





> Je ne vois pas de quoi tu parles.


Je veux dire pourquoi LOWE a choisi de multiplier l'histogramme  36 intervalles lors de l'tape d'assignation d'orientation d'une part, par une fentre circulaire gaussienne de paramtre gal  1,5 fois le facteur d'chelle du point-cl σ0 ; d'autre part, par l'amplitude de chaque point. Puis, il fait la mme chose lors de l'tape de constitution du descripteur du point cl avec 8 intervalles. 





> L'image qui rsume le mieux l'ide, c'est celle l :
> 
> 
> Pour chaque pixel de l'image, on peut calculer le vecteur gradient (image de gauche). Le gradient nous renseigne sur le contour local.
> 
> Les keypoint dans SIFT sont des "coins", c'est a dire des endroits ou le contour change brutalement d'orientation. Ce sont des point particulirement intressants car ils sont trs spcifiques, il n'y en a pas trop, et ils sont assez invariants aux transformations (zoom, rotation, perspective, ...).
> 
> Un bon moyen de dcrire ce qui se passe autour d'un keypoint, c'est de dcrire les contours autour du keypoint. Donc de regarder les vecteurs gradient dans le voisinage : est-ce qu'ils vont tous dans la mme direction, ou dans 2 directions principales, ou dans tous les sens, ... 
> 
> ...


D'accord, merci, 

cad le descripteur dcrit la direction de chaque pixel appartenant au voisinage du point cl en calculant le gradient de chacun et en dfinissant l'histogramme pour chaque zone de 4*4 pixels??

----------


## pseudocode

> La direction principale est-elle gale  la direction dominante de l'histogramme ?


Oui. 




> Comme c'est cit sur Wikipdia: " l'issue de cette tape, un point-cl est donc dfini par quatre paramtres (x,y,σ,θ)" ==> θ: orientation dominante de l'histogramme??


Oui. 

A noter qu'il peut y avoir plusieurs directions dominantes dans un histogramme. On cre alors un keypoint pour chaque direction dominante trouve.




> Je veux dire pourquoi LOWE a choisi de multiplier l'histogramme  36 intervalles lors de l'tape d'assignation d'orientation d'une part, par une fentre circulaire gaussienne de paramtre gal  1,5 fois le facteur d'chelle du point-cl σ0 ; d'autre part, par l'amplitude de chaque point. Puis, il fait la mme chose lors de l'tape de constitution du descripteur du point cl avec 8 intervalles.


En fait, on accumule des "contributions". Chaque vecteur gradient apporte sa propre contribution  l'histogramme. Ces contributions dpendent de deux choses :
- la "force" du gradient (plus l'amplitude est grande, plus il contribue)
- la distance au keypoint (plus il est proche du keypoint, plus il contribue)

C'est pour cela que la contribution est un produit amplitude*gaussienne.




> cad le descripteur dcrit la direction de chaque pixel appartenant au voisinage du point cl en calculant le gradient de chacun et en dfinissant l'histogramme pour chaque zone de 4*4 pixels??


Oui.

Attention a prendre en compte l'orientation du keypoint. La zone 16*16 n'est pas aligne sur les bords de l'image.

----------


## ibnensi

D'accord, 

c'est trs clair, 

Merci beaucoup pour votre aide,

----------


## ibnensi

Bonjour  tous, 

Je reviens encore  cette discussion. 

En fait, j'ai lu la deuxime partie de l'article de LOWE "utilisation du descripteur pour la recherche des objets dans des images". J'ai quelques questions  poser. Si quelqu'un peut m'aider, je serais trs reconnaissante. 

Pourquoi Lowe cherche le premier plus proche voisin et le second plus proche voisin ? Dans la partie "indexation des descripteurs par l'arbre kd, il parle de distance euclidienne d'un descripteur  la base de donnes des descripteurs des images de rfrence -->"Par distance dun nud  un descripteur, on entend distance euclidienne de la bote englobante des feuilles sous-jacentes  ce descripteur."
J'ai pas compris de quelle bote il parle? Pourquoi LOWE a utilis la mthode de Hough Transform? J'ai compris que cette mthode sert  regrouper les correspondances cohrentes du point de vue orientation, chelle, location, etc c'est  dire celle correspondantes  des poses pour le mme objet. Puis, LOWE identifier que les clusters contenant au moins 3 correspondances? Pourquoi il a opt pour ce choix? Dans l'article de LOWE, j'ai pas compris le paragraphe suivant: 

"Therefore, we use broad bin sizes of 30 degrees for orientation, a factor of 2 for scale, and 0.25 times the maximum projected training image dimension (using the predicted scale) for location. To avoid the problem of boundary effects in bin assignment, each keypoint match votes for the 2 closest bins in each dimension, giving a total of 16 entries for each hypothesis and further broadening the pose range."

Comment on aura pour chaque hypothse 16 entre? 

Le 'bin' reprsente quoi? Dans la partie 'vrification du modle par la mthode des moindres carrs', je n'ai pas compris comment obtenir les paramtres de transformation, que reprsente chaque matrice et vecteur utilis, l'inconnu  rechercher par le systme d'quations Ax=b, quelle est l'interprtation pour faire ceci. 



Merci d'avance, 

Cordialement,

----------


## pseudocode

> Pourquoi Lowe cherche le premier plus proche voisin et le second plus proche voisin ?


C'est pour s'assurer que le descripteur de l'image est proche du descripteur de reference, tout en tant assez loign du 2nd plus proche descripteur.

On vite ainsi les faux positifs, car s'il y a une "vraie" correspondance alors le descripteur de reference est nettement plus proche que les autres descripteurs.




> Dans la partie "indexation des descripteurs par l'arbre kd, il parle de distance euclidienne d'un descripteur  la base de donnes des descripteurs des images de rfrence -->"Par distance dun nud  un descripteur, on entend distance euclidienne de la bote englobante des feuilles sous-jacentes  ce descripteur."
> J'ai pas compris de quelle bote il parle?


Je ne vois pas a quelle partie de l'article de Lowe tu fais rfrence.  ::koi:: 




> Puis, LOWE identifier que les clusters contenant au moins 3 correspondances? Pourquoi il a opt pour ce choix?


Sans doute parce qu'il a fait des tests.  ::D: 
[*]Dans l'article de LOWE, j'ai pas compris le paragraphe suivant: 




> Comment on aura pour chaque hypothse 16 entre?


une marge de 2 bins pour l'orientation.
pour chaque orientation, une marge de 2 bins pour l'echelle.
pour chaque echelle, une marge de 2 bins pour la position Y
Pour chaque position Y, une marge de 2 bins pour la position X

Soit un total de 2*2*2*2 = 16 votes.




> Dans la partie 'vrification du modle par la mthode des moindres carrs', je n'ai pas compris comment obtenir les paramtres de transformation, que reprsente chaque matrice et vecteur utilis, l'inconnu  rechercher par le systme d'quations Ax=b, quelle est l'interprtation pour faire ceci.


On cherche la "meilleure" transformation T qui transforme les points du modle (x1,y1), (x2,y2), ... en points de l'image (u1,v1), (u2,v2), ...

Chaque correspondance peut s'crire sous forme d'une quation (u,v) = T(x,y). On cherche alors les paramtres de T qui satisfont toutes les quations  la fois.

La mthode des moindres carrs permet d'crire l'ensemble de toutes ces quations sous forme d'un seul systme matriciel Ax=b, et ainsi de trouver d'un coup les meilleurs paramtres pour toutes les quations.

----------


## ibnensi

Bonjour Monsieur, 

Merci beaucoup pour vos rponses, 

Cordialement,

----------


## ibnensi

Bonjour  tous, 

Je voulais maintenant passer au test du descripteur SIFT sur des images quelconques. J'ai utilis le logiciel de David LOWE qui se trouve sous le lien http://www.cs.ubc.ca/~lowe/keypoints/. 

Les tests que j'ai effectus me montrent directement le rsultat final c'est  dire le nombre des points cls ainsi que leur rpartition et leur affichage sur la figure en question. Cependant, ils ne me donnent pas les rsultats intermdiaires cad  les rsultats de chaque phase de la mthode SIFT. 

En outre, l'implmentation de LOWE nous donne les points cls et non pas le reprage d'un objet complet. 

Par exemple, si on veut reprer lexistence d'un objet dans une figure, il vous donne les points cls homologues aux points de l'objet et non pas l'homologue de l'objet entier. 

Y a t-il une implmentation de la mthode SIFT qui rpond  mes questions? Comment arrive-on  reprer l'objet en entier? 

Merci de me rpondre SVP, 

Cordialement,

----------


## pseudocode

> Y a t-il une implmentation de la mthode SIFT qui rpond  mes questions? Comment arrive-on  reprer l'objet en entier?


Je ne sais pas s'il existe une implmentation toute faite de SIFT avec dtection d'objet.

En revanche le principe est expliqu dans le document de Lowe, ainsi que sur Wikipedia et autres sources du web. Le principe est en 3 phases:
1. Recherche d'objets "candidats" pouvant se trouver quelque part dans l'image, par la transforme de Hough gnralise.
2. Vrification de la position de l'objet candidat dans l'image, par modlisation de la transformation via les moindres carrs
3. valuation de la probabilit de prsence de l'objet  la position donne, par infrence baysienne.

----------


## ibnensi

Bonjour, 

Merci pour votre rponse, 

cad dois-je programmer ces trois phases pour dtecter tout l'objet ou quoi?

----------


## pseudocode

Oui, il faut programmer les 3 phases pour dtecter un objet entier.

----------


## TheDwarf01

J'ai un doute sur un point de l'article de Lowe pour trouver l'orientation maximale.

Pour un PI d'chelle sigma et un octave donn sur la mme image donc flouter  sigma. Lowe nous dit qu'il faut convoluer cette image par un filtre gaussient de 1.5*sigma. 

Il nous parle de l'image source net qu'on doit flouter ou de l'image auquel appartient le PI ( donc la flouter 2x) .

----------


## pseudocode

> Il nous parle de l'image source net qu'on doit flouter ou de l'image auquel appartient le PI ( donc la flouter 2x) .


Il parle de l'image auquel appartient le PI, c'est  dire l'image dj floute:



> The scale of the keypoint is used to select the Gaussian smoothed image, L, with the closest scale, so that all computations are performed in a scale-invariant manner.


La gaussienne  1.5*sigma sert  pondrer l'importance des gradients autour du PI lors du calcul du max d'orientation.Les gradients proches du PI ont ainsi un poids plus fort lors du calcul, et les gradients loigns ont un poids plus faible.




> Each sample added to the histogram is weighted by its gradient magnitude and by a Gaussian-weighted circular window with a σ that is 1.5 times that of the scale of the keypoint.

----------


## TheDwarf01

C'est bien ce qui me semblait.  

Le dernier point auquel je bloque, mais l c'est plus un problme d'algorithme. C'est la rotation du patch centre au centre du patch. 
J'ai dj poster un message sur le forum mais peut tre que s'tait ici que j'aurai du le mettre. 

J'ai trouv ce code pour calculer des nouvelles coordonnes de pixel tourne de u (orientation max) degrs tel que u et en degrs je suppose.
Tx Ty dfinis les positions de mon pixel central



```

```


Si i et  j sont les coordonnes des points de mon patch alors je suppose que :


```
  new_point= transfo*[i,j,1]
```


Or je trouve souvent des valeurs ngatives et si [i,j] est mon pixel central je trouve des nouvelles coordonnes ce qui ne doit pas avoir lieu.

Une ide ?

----------


## pseudocode

Sur le principe, les formulations me semblent correctes.
Comme je ne maitrise pas matlab, je ne peut rien dire sur la mise en pratique. 

Essaye dj de voir si t1*[tx,ty,1] = [0,0,1]

----------


## TheDwarf01

Oui je trouve bien [ 0 0 1 ]  pour [pt_x pt_y 1]*t1

----------


## pseudocode

> Oui je trouve bien [ 0 0 1 ]  pour [pt_x pt_y 1]*t1


Donc normalement ton pixel central ne devrait jamais avoir des "nouvelles coordonnes". C'est trange.

----------


## ibnensi

Bonjour  tous, 

Je voudrais savoir quels sont les paramtres qui contrlent la dtection des points cls "keypoints" avec SIFT.  

J'ai lu sur un site qu'il s'agit de deux paramtres: " peak threshold et (non) edge threshold.

Cependant, je n'ai pas compris de quoi il s'agit et comment elle agit sur le nombre et la position des points cls dtects. 


Merci,

----------


## fratry

> C'est bien ce qui me semblait.  
> 
> Le dernier point auquel je bloque, mais l c'est plus un problme d'algorithme. C'est la rotation du patch centre au centre du patch. 
> J'ai dj poster un message sur le forum mais peut tre que s'tait ici que j'aurai du le mettre. 
> 
> J'ai trouv ce code pour calculer des nouvelles coordonnes de pixel tourne de* u (orientation max) degrs* tel que u et en degrs je suppose.
> Tx Ty dfinis les positions de mon pixel central
> 
> 
> ...


Il me semble que Matlab calcul le sin et cos pour un angle en radian
c'est peut tre a le problme.

----------

