2 चित्रों पर गणना की गई होमोग्राफी के बीच की कड़ी क्या है और एक ही छवियों पर गणना की गई होमोग्राफी उलटी है?


9

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)। मेरा अंतिम उद्देश्य एक महंगी छवि रोटेशन की गणना से बचने के लिए अंतिम मैट्रिक्स को बदलने के लिए वांछित संबंध का उपयोग करना होगा।

जवाबों:


4

मुझे लगता है कि जब होमोग्राफी मैट्रिक्स के लिए सूत्र देख रहे हैं:

एच=आर-टीnटी
कहाँ पे आर रोटेशन मैट्रिक्स है जिसके द्वारा के संबंध में घुमाया जाता है ; टी से अनुवाद वेक्टर है सेवा ; n तथा विमान के सामान्य वेक्टर और क्रमशः विमान की दूरी ( होमोग्राफी -3 डी प्लेन टू प्लेन समीकरण ) हैं।

दो मैट्रिसेस के बीच का संबंध प्लेन के सामान्य वेक्टर में होता है। तो आपको विमान के सामान्य वेक्टर (होमोग्राफी मैट्रिक्स से बाहर) प्राप्त करने की आवश्यकता है, और इसके लिए रोटेशन लागू करें, और फिर ऊपर सूत्र का उपयोग करके होमोग्राफी मैट्रिक्स की गणना करें। होमोग्राफी मैट्रिक्स के सही डीकंपोज़िंग के लिए, आप इन कोड नमूनों और इस पेपर को देख सकते हैं ।


मैं वास्तव में आप क्या मतलब नहीं मिलता है। समीकरण से, मैं सामान्य के साथ मिला Mat invT = 1./t; Mat n = invT.t() * (H - R);(वास्तव में, यह n/d)। अब, "इसे रोटेशन को लागू करना" मुझे एक 3x1 वेक्टर देता है, लेकिन मैं इसे फिर से होमोग्राफी मैट्रिक्स की गणना करने के लिए कैसे उपयोग कर सकता हूं? धन्यवाद
स्टीफन Péchard

अधिक जानकारी जोड़ी गई, आशा है कि यह स्पष्ट है।
गीर्टेन

ऐसा क्यों है - टी / डी और नहीं + टी / डी?
मेस्ट्रो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.