OpenCV के साथ , मैं इन दोनों छवियों के बीच होमोग्राफी की गणना करता हूं, कहते हैं:
तथा
दाईं ओर के अजीब सफेद रूप के बारे में चिंता न करें, यह स्मार्टफोन धारक द्वारा उपयोग किए जाने के कारण है। होमोग्राफी, findHomography () फ़ंक्शन द्वारा दी गई ( फास्ट फ़ीचर डिटेक्टर और हैमिंगग्लूट डिस्क्रिप्टर मैचर के साथ पाई गई बिंदुओं का उपयोग करके ) है:
A = [ 1.412817430564191, 0.0684947165270289, -517.7751355800591;
-0.002927297251810, 1.210310757993256, 39.56631316477566;
0.000290600259844, -9.348301989015293e-05, 1]
अब, मैं एक ही प्रक्रिया का उपयोग करके समान चित्रों के बीच की होमोग्राफी की गणना करता हूं, जिसे 180 डिग्री (उल्टा) द्वारा घुमाया गया है, इमेजमेगिक का उपयोग करके (वास्तव में, मैं 90 के रोटेशन के संबंध को जानने के लिए समान रूप से दिलचस्पी लूंगा ) 270 डिग्री ...)। वे यहाँ हैं:
तथा
इन चित्रों के साथ, होमोग्राफी बन जाती है:
B = [ 0.7148688519736168, 0.01978048500375845, 325.8330631554814;
-0.1706219498833541, 0.8666521745094313, 64.72944905752504;
-0.0002078857275647, -5.080048486810413e-05, 1]
अब, सवाल यह है कि आप A और B से कैसे संबंधित हैं? A के दो पहले विकर्ण मूल्य B में समान के व्युत्क्रम के करीब हैं, लेकिन यह बहुत सटीक नहीं है (.707805555 के बजाय 0.71486885)। मेरा अंतिम उद्देश्य एक महंगी छवि रोटेशन की गणना से बचने के लिए अंतिम मैट्रिक्स को बदलने के लिए वांछित संबंध का उपयोग करना होगा।
Mat invT = 1./t; Mat n = invT.t() * (H - R);
(वास्तव में, यहn/d
)। अब, "इसे रोटेशन को लागू करना" मुझे एक 3x1 वेक्टर देता है, लेकिन मैं इसे फिर से होमोग्राफी मैट्रिक्स की गणना करने के लिए कैसे उपयोग कर सकता हूं? धन्यवाद