Dengan OpenCV , saya menghitung homografi antara, katakanlah, dua gambar ini:
dan
Jangan khawatir tentang bentuk putih aneh di sisi kanan, itu karena pemegang smartphone yang saya gunakan. Homografi, yang diberikan oleh fungsi findHomography () (menggunakan titik yang terdeteksi dengan detektor fitur Cepat dan pencocokan deskriptor HammingLUT ), adalah:
A = [ 1.412817430564191, 0.0684947165270289, -517.7751355800591;
-0.002927297251810, 1.210310757993256, 39.56631316477566;
0.000290600259844, -9.348301989015293e-05, 1]
Sekarang, saya menggunakan proses yang sama untuk menghitung homografi antara gambar yang sama yang telah diputar 180 derajat (terbalik), menggunakan imagemagick (pada kenyataannya, saya akan sama tertarik untuk mengetahui hubungan untuk rotasi 90 atau 270 derajat ...). Di sini mereka:
dan
Dengan gambar-gambar ini, homografnya menjadi:
B = [ 0.7148688519736168, 0.01978048500375845, 325.8330631554814;
-0.1706219498833541, 0.8666521745094313, 64.72944905752504;
-0.0002078857275647, -5.080048486810413e-05, 1]
Sekarang, pertanyaannya adalah bagaimana Anda menghubungkan A dan B? Dua nilai diagonal pertama A dekat dengan kebalikan dari yang sama di B, tapi itu tidak terlalu tepat (0,707805537 bukannya 0,71486885). Tujuan utama saya adalah menggunakan hubungan yang diinginkan untuk mengubah matriks akhir, menghindari untuk menghitung rotasi gambar yang mahal.
sumber
Mat invT = 1./t; Mat n = invT.t() * (H - R);
(sebenarnya, itun/d
). Sekarang, "menerapkan rotasi padanya" memberi saya vektor 3x1, tetapi bagaimana saya bisa menggunakannya untuk menghitung matriks homografi lagi? Terima kasih