Với OpenCV , tôi tính toán đồng nhất giữa hai hình ảnh này:
và
Đừng lo lắng về hình thức màu trắng kỳ lạ ở phía bên phải, đó là do người giữ điện thoại thông minh tôi sử dụng. Homography , được cung cấp bởi hàm findHomography () (sử dụng các điểm được phát hiện bằng trình phát hiện tính năng nhanh và trình so khớp mô tả HammingLUT ), là:
A = [ 1.412817430564191, 0.0684947165270289, -517.7751355800591;
-0.002927297251810, 1.210310757993256, 39.56631316477566;
0.000290600259844, -9.348301989015293e-05, 1]
Bây giờ, tôi sử dụng quá trình tương tự để tính homography giữa những hình ảnh tương tự đã được xoay 180 độ (upside down), sử dụng ImageMagick (như là một vấn đề của thực tế, tôi sẽ không kém quan tâm để biết mối quan hệ đối với chuyển động quay của 90 hoặc 270 độ ...). Họ đây rồi:
và
Với những hình ảnh này, homography trở thành:
B = [ 0.7148688519736168, 0.01978048500375845, 325.8330631554814;
-0.1706219498833541, 0.8666521745094313, 64.72944905752504;
-0.0002078857275647, -5.080048486810413e-05, 1]
Bây giờ, câu hỏi là làm thế nào để bạn liên quan đến A và B? Hai giá trị đường chéo đầu tiên của A gần với nghịch đảo của B, nhưng nó không chính xác lắm (.707805537 thay vì 0.71486885). Mục đích cuối cùng của tôi là sử dụng mối quan hệ mong muốn để biến đổi ma trận cuối cùng, tránh để tính toán xoay hình ảnh tốn kém.
Mat invT = 1./t; Mat n = invT.t() * (H - R);
(thực tế, nón/d
). Bây giờ, "áp dụng phép quay cho nó" cho tôi một vectơ 3x1, nhưng làm thế nào tôi có thể sử dụng nó để tính lại ma trận homography? Cảm ơn