Concernant la création des descripteurs, tu as l'air au point. Ce dont je me souviens (c'était il y a quelques années) c'est qu'après avoir trouvé l'orientation principale du gradient, on fait la même chose sur un voisinage (4x4 si je me souviens bien) avec des histogrammes sur les (8) orientations dans ces voisinages. C'est la dessus que se trouve le brevet je crois (en plus de la DoG).
Le matching est assez simple en fait: il est basé sur norme L1 entre deux descripteurs, cette distance doit être la plus petite possible. L'idée un peu astucieuse est de dire qu'un descripteur A marche avec B d'un l'ensemble de keypoints si C, le deuxième meilleur de cet ensemble match beaucoup moins bien.
soit: dAB < k.dAC avec k=0.53 (0.73*0.73, je sais pas d'où cela viennent ces chiffres).
Je ne penses pas qu'il y ait de brevet non plus sur le matching. Il faut souvent valider le matching par un RANSAC.
[^] # Re: Brevet pas valide en Europe
Posté par kif . En réponse à la dépêche Recalage d’images, PIV et corrélation d’images — Les logiciels. Évalué à 1.
Salut,
Concernant la création des descripteurs, tu as l'air au point. Ce dont je me souviens (c'était il y a quelques années) c'est qu'après avoir trouvé l'orientation principale du gradient, on fait la même chose sur un voisinage (4x4 si je me souviens bien) avec des histogrammes sur les (8) orientations dans ces voisinages. C'est la dessus que se trouve le brevet je crois (en plus de la DoG).
Le matching est assez simple en fait: il est basé sur norme L1 entre deux descripteurs, cette distance doit être la plus petite possible. L'idée un peu astucieuse est de dire qu'un descripteur A marche avec B d'un l'ensemble de keypoints si C, le deuxième meilleur de cet ensemble match beaucoup moins bien.
soit: dAB < k.dAC avec k=0.53 (0.73*0.73, je sais pas d'où cela viennent ces chiffres).
Je ne penses pas qu'il y ait de brevet non plus sur le matching. Il faut souvent valider le matching par un RANSAC.
Voici une implémentation python (pour référence) du matching.
https://github.com/silx-kit/silx/blob/master/silx/opencl/sift/match.py#L337
Le reste du fichier c'est l'implémentation GPU.