Mit OpenCV berechne ich die Homographie zwischen diesen beiden Bildern:
und
Mach dir keine Sorgen über die seltsame weiße Form auf der rechten Seite, es liegt an dem Smartphone-Halter, den ich benutze. Die durch die Funktion findHomography () gegebene Homographie (unter Verwendung von Punkten, die mit dem Fast Feature Detector und dem HammingLUT Deskriptor Matcher erkannt wurden ) lautet:
A = [ 1.412817430564191, 0.0684947165270289, -517.7751355800591;
-0.002927297251810, 1.210310757993256, 39.56631316477566;
0.000290600259844, -9.348301989015293e-05, 1]
Jetzt verwende ich den gleichen Prozess, um die Homographie zwischen denselben Bildern zu berechnen, die mit imagemagick um 180 Grad (verkehrt herum ) gedreht wurden (tatsächlich wäre ich gleichermaßen interessiert, die Beziehung für die Drehung von 90 oder zu kennen 270 Grad ...). Hier sind sie:
und
Mit diesen Bildern wird die Homographie:
B = [ 0.7148688519736168, 0.01978048500375845, 325.8330631554814;
-0.1706219498833541, 0.8666521745094313, 64.72944905752504;
-0.0002078857275647, -5.080048486810413e-05, 1]
Die Frage ist nun, wie Sie A und B in Beziehung setzen. Die beiden ersten Diagonalwerte von A liegen nahe an der Umkehrung derselben in B, sind jedoch nicht sehr genau (.707805537 anstelle von 0.71486885). Mein letztendlicher Zweck wäre es, die gewünschte Beziehung zur Transformation der endgültigen Matrix zu verwenden und zu vermeiden, dass eine kostspielige Bildrotation berechnet wird.
Mat invT = 1./t; Mat n = invT.t() * (H - R);
(eigentlich ist esn/d
). Wenn Sie nun die Rotation darauf anwenden, erhalten Sie einen 3x1-Vektor. Wie kann ich ihn jedoch verwenden, um die Homografiematrix erneut zu berechnen? Vielen Dank