J'essaie de faire l'enregistrement d'image en utilisant la corrélation de phase comme décrit dans l'article de Reddy Chatterji . Dans mon cas, les images peuvent être redimensionnées et traduites les unes par rapport aux autres.
L'algorithme pour trouver l'échelle relative, si je comprends bien, est (voir: l'organigramme de l'article ):
F1 = DFT(I1)
F2 = DFT(I2)
H1 = Highpass(F1)
H2 = Highpass(F2)
L1 = LogPolar(Magnitude(H1))
L2 = LogPolar(Magnitude(H2))
PC = PhaseCorrelate(L1,L2)
PM = norm(PC)
R = IDFT(PhaseCorr/PM)
P = Peak(R)
Scale = LogBase^P[1]
L'échelle me donne des valeurs apparemment absurdes (très différentes d'une image à l'autre et jamais correctes).
Mais en ignorant l'échelle, la même approche de corrélation de phase fonctionne bien pour la traduction; et donc je soupçonne que j'ai un problème avec ma transformée log-polaire. Voici un exemple, où j'ai résolu pour la traduction - l'image de gauche est l'original et la droite a été recadrée et traduite - la solution est montrée au-dessus de l'original:
Pour la transformation log-polaire, je me transforme d'abord en espace polaire: où est l'image d'origine, est le le rayon de l'image (demi-largeur) et est le nombre d'échantillons dans la direction . J'échantillonne ensuite à partir de cela pour me transformer en espace polaire logarithmique: où comme décrit en 1 pour qu'il couvre tout l'espace polaire.IrNθθIlog(ρ,θ)=I(logb(ρ),θ)b=(2r)-Nρ
Voici les exemples d'images dans l'espace log-polaire avec (au cas où il y aurait quelque chose de mal):
Enfin, cela montre la transformation réelle des images avant l'étape de corrélation de phase (en haut est le filtre passe-haut de magnitude DFT, en bas celui dans l'espace polaire logarithmique):
J'utilise OpenCV, qui dispose des méthodes LogPolar et PhaseCorrelate. Bien que PhaseCorrelate, comme mon implémentation manuelle, me donne la bonne réponse pour la traduction, elle est incorrecte à l'échelle. Étant donné que l'utilisation d'OpenCV LogPolar ou de la mienne n'affecte pas l'exactitude, je dois manquer quelque chose.
Toute aide serait appréciée.