Bonjour,
Le défaut des calculs initiaux apparaît immédiatement sur un simple graphique:
les centres (C0, C1) des deux images ne sont pas superposés.
Si l'on convient de noter
X0 = F(X1, Y1)
Y0 = G(X1, Y1)
les relations donnant les coordonnées d'un point de l'image initiale (Im0) en fonction de celles du point correspondant de la nouvelle image (Im1),
celles-ci doivent impérativement vérifier la correspondance entre les centres, soit:
Xc0 = F(Xc1, Yc1)
Yc0 = G(Xc1, Yc1)
Une rotation d'angle (θ) s'exprime ainsi par les relations linéaires:
X0 = Xc0 + (X1 - Xc1)*Cos(θ) - (Y1 - Yc1)*Sin(θ)
Y0 = Yc0 + (X1 - Xc1)*Sin(θ) + (Y1 - Yc1)*Cos(θ)
On vérifie facilement que l'expression des anciennes coordonnées en fonction des nouvelles respecte la superposition des centres.
Je laisse le soin à l'intéressé d'adapter ces relations à des arrondis ou d'éventuelles interpolations.
Partager