Bon en fait j'ai encore une question!
Je ne comprend pas trop l’intérêt d'utiliser plusieurs octaves.
J'ai fait pas mal de recherche mais rien qui ne répondait vraiment à ma question.
Sur une même octave on réduit déjà la résolution spatiale en augmentant sigma afin de supprimer les détails insignifiants.
Pourquoi dans ce cas ne pas utiliser plus de scales sur une seule et même octave plutôt que plusieurs octaves?
Donc en gros ma question qu'elle est l'utilité du downsampling de l'image par 2 et d'utiliser plusieurs octaves
Merci!
downsampling par 2 <=> multiplier sigma par 2
Or, plus sigma est grand, plus il faut prendre un grand voisinage de pixels pour faire la convolution... et donc plus la convolution prend du temps. Il est donc beaucoup plus intéressant de diviser la taille de l'image par deux, plutot que de doubler la valeur de sigma. En plus ca permet de réutiliser les memes noyaux de convolution pour tous les octaves.
Bon, pour SURF, le temps de convolution est constant, alors ca a moins d'importance sur les performances. Par contre, le downsampling permet d'adoucir l'image puisqu'on fait une moyenne des pixels. Cela supprime donc les hautes fréquences dans l'image et rend les approximations de SURF (gaussienne/box) meilleures.
Merci c'est très clair, tu m'auras bien aidé!
Plus qu'a faire marcher l'algo maintenant!
Salut Pseudocode j'ai encore une question à propos d'un point pas trop clair pour moi. J'ai vu que ça avait déja été abordé précédemment mais c'est toujours flou.
In other words, each entry into a bin is multiplied by a
weight of 1 − d for each dimension, where d is the distance of the sample from the central value of the bin as measured in units of the histogram bin spacing
Donc ce que je comprend c'est que pour chaque nouvelle entrée dans l'histo de 8 bins on multiplie la norme par (1-d) pour chaque dimension (c'est a dire x,y theta?). Ou d est la distance du pixel du patch sur lequel on calcule l'histo à...
C'est le que ne comprends pas trop. Quand tu dis qu'il faut regarder les patchs adjacents, je ne vois pas ou ça intervient de cette phrase de Lowe. J'aurai penser que c'etait plutot la distance avec le centre du patch ou se trouve le pixel.
Il parle de central value of the bin et je ne vois pas ce que c'est non plus!
Merci d'avance.
En fait je viens de voir que c'etait aussi ecrit Therefore, trilinear interpolation is used to distribute the value of each gradient
sample into adjacent histogram bins.
Donc pour moi si le theta=60 on calcule juste la distance de 60 à 45 et 60 à 90 ( pour le adjacent histogram bins) mais je ne vois pas ou il est question de calculer la distance du pixel au centre des patchs adjacents.
Et bien, tu l'as dit toi même dans le message précédent.
It is important to avoid all boundary affects in which the descriptor abruptly changes as a sample shifts smoothly from being within one histogram to another or from one orientation to another.On doit s'assurer qu'il n'y a pas de changement brutal du descripteur lorsqu'un point d'intérêt passe d'un patch à l'autre (discrétisation de la position spatiale) ou d'une orientation à l'autre (discrétisation de l'orientation = index dans le bin).
Therefore, trilinear interpolation is used to distribute the value of each gradient sample into adjacent histogram bins. In other words, each entry into a bin is multiplied by a weight of 1 − d for each dimension, where d is the distance of the sample from the central value of the bin as measured in units of the histogram bin spacing.Pour cela, la valeur est répartie sur les patchs adjacents (position spatiale) et sur les orientations voisines (index dans le bin). Cela nous fait donc une pondération par 3 facteurs : dx, dy, et dtheta --> interpolation trilinéaire.
D'accord je vois merci.
Je voulais savoir aussi si je souhaite faire correspondre une seule image avec une autre image, c'est a dire que je n'ai pas plus plusieurs images dans ma database. Est ce qu'il est utile d'utiliser les autres étapes de Lowe( cluster par la transformée de Hough, méthodes des moindres carrés etc)?
Pour l'instant je fais juste la comparaison des deux plus proches voisins et ce n'est pas terrible terrible niveau matching!
C'est curieux. Le descripteur de SIFT est généralement un bon discriminant.Pour l'instant je fais juste la comparaison des deux plus proches voisins et ce n'est pas terrible terrible niveau matching!
Il faut d'abord que le matching des plus proches voisins soit bon. Les étapes suivantes sont là pour modéliser la transformation, mais le matching initial est primordial.
Ok de toute façon j'ai certainement du faire quelques erreurs.
L'image que j'utilise aussi n'a une faible résolution et n'a que 3 niveaux de gris.
Pour une image avec beaucoup plus de textures et de détails (type Lena ) j'obtiens de bien meilleurs résultats.
Dans mon cas j'ai des bonnes correspondances mais aussi pas mal de mauvaise, donc je vais tenter d'améliorer ça!
Également tu as dis qu'il fallait prendre les 4 patchs adjacents les plus proches.
Pour les trouver on calcule la distance du pixel au centre de chaque patch.
Tu disais précédemment que la distance pour qu'un patch soit considéré adjacent devaient être inférieur ou égale à 4 pixels.
Or si l'on reprend le dessin du dessus, si le pixel que l'on considère se situe en (0,0) du patch noir alors il est à une distance verticale de 6 pixels jusqu'au centre du patch rouge et une distance horizontal de 6 pixels au centre du patch bleu.
Dans ce cas les considère t-on comme adjacents? Si oui la distance est supérieur à 4, si non on a que 1 patch adjacent dans ce cas?
Oui ça j'avais compris mais je voulais parler du cas ou l'on considérait le 1er patch de la fenêtre 16*16 (et le pixel (0,0) dans le repère de la fenêtre)).Dans ce cas la il n'y aura qu' 1 patch adjacent (lui même) non? Car on se limite bien à la fenêtre autour du keypoint.
Ah. Oui, dans le cas des bords il n'y aura effectivement qu'un patch adjacent.
Cela dit, comme on pondère toutes les valeurs par une gaussienne centrée sur le keypoint, alors on a des valeurs assez faibles sur les bords. Et donc l'absence des 3 autres patchs adjacents n'est pas vraiment grave.
Ouais ok merci, j'avais retenu cette solution dans mon code.
Mais j'ai toujours un important taux de faux matching comparé au taux de vrai matching (environ une 20 aine de points en tout). Pourtant j'ai l'impression d'avoir bien tout fait. Je pense que mes images ne sont pas optimales pour cette solution![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager