Bonjour,
Je bloque sur la partie "Amélioration de la précision par interpolation des coordonnées", explicité en partie dans cette discussion.
Pour chaque image de ma pyramide de DoG en fonction d'un octave donné, je calcul pour chaque keypoint p(x,y,O) de mon image mon H et mon G puis je calcul mon x_chap de cette façon : X=H\G;On calcule les coefficients de H et G en utilisant les formules de différentiation discrètes (cf post précédents).
Dans les cas ou mon x_chap = (x,y,O) n'a pas de NaN, je recherche si x, y ou O est >0.5. Et c'est la ou je bloque.
Wikipédia me dit :
Par exemple si pour le pixel p1(x,y,O) j'obtients un x_chap tel que soit x, y ou O est >0.5.Un delta x_chap supérieur à 0,5 dans l'une des trois dimensions signifie que le point considéré est plus proche d'un des voisins dans l'espace des échelles discret. Dans ce cas, le point-clé candidat est mis à jour et l'interpolation est réalisée à partir des nouvelles coordonnées. Sinon, le delta est ajouté au point candidat initial qui gagne ainsi en précision.
Que doit prendre comme valeur mon pixel p1 ? la valeurs du pixel de coordonnées : p1(x,y,O)=p(x_chap_x,x_chap_Y,x_chap_O) ?Dans ce cas, le point-clé candidat est mis à jour
Et je recommence l'algo pour cette nouvelle valeur tant que une j'obtiens une valeur <0.5
Et sinon :
Les valeurs de mon x_chap ne sont donc pas de nouvelle coordonnées et ça n'aurait pas de sens d'écrire que : p1=p1(x+x_chap_x, y+x_chap_Y, O+ x_chap_O)le delta est ajouté au point candidat initial qui gagne ainsi en précision
Voici la partie de mon code conernant ce problème :
Pourriez vous m'expliquer cette étape du code.
Partager