होमोग्राफी - और इसकी गणना कैसे करें?

हे सब, मैं वापस आ गया हूँ! मैं उत्साहित हूं और इस ब्लॉग को लिखने और प्रकाशित करने का इंतजार नहीं कर सकता। उम्मीद है, आप भी इसे पढ़ने के लिए उत्साहित हैं।

Unsplash पर एंटोनी Dautry द्वारा फोटो
मेरे और इस ब्लॉग श्रृंखला के बारे में!
मैं सिद्धार्थ हूं। मैं लॉस एंजिल्स के बाहर एक इलेक्ट्रिक वाहन स्टार्टअप पर स्वायत्त ड्राइविंग इंजीनियर हूं जो धारणा संबंधी समस्याओं पर काम कर रहा है। मुझे अपने आसपास की दुनिया को देखने के लिए रोबोटों को प्रोग्राम करना बहुत पसंद है। अपने सहकर्मी @Aviralksingh के साथ, मैं इस ब्लॉग श्रृंखला को कंप्यूटर विजन और रोबोटिक्स में सबसे मौलिक अवधारणाओं को समझाने के लिए उनके पीछे गणित के साथ लिखने की योजना बना रहा हूं जो हमें स्वायत्त कारों, या संवर्धित वास्तविकता जैसी प्रौद्योगिकियों के लिए धारणा कार्य करने में मदद करता है। यह श्रृंखला में मेरा दूसरा ब्लॉग है। मेरे या मेरे पहले ब्लॉग के बारे में अधिक पढ़ने के लिए इसे देखें:

अब, चलो में गोता।

यह ब्लॉग दो विचारों के बीच होमोग्राफी के बारे में है। इसमें कुछ गणितीय व्युत्पन्न शामिल होंगे: डी। यदि आप गणित में बहुत अधिक नहीं हैं, तो ब्लॉग के उन हिस्सों को छोड़ दें। इस ब्लॉग के लिए आवश्यक बुनियादी कंप्यूटर दृष्टि (जैसे परिप्रेक्ष्य ज्यामिति) और रैखिक बीजगणित होगा। रिचर्ड हार्टले द्वारा बहुत सी सामग्री को "मल्टीविवो जियोमेट्री इन कंप्यूटर विजन" से लिया गया है। मैं इस विषय के बारे में और अधिक जानकारी प्राप्त करने के लिए इस पुस्तक के अध्याय 13 "सीन प्लेन और होमोग्राफी" को पढ़ने की सलाह दूंगा।

यहां कुछ विषय दिए गए हैं जो इस ब्लॉग में शामिल किए जाएंगे।

  1. होमोग्राफी क्या है? यह परिप्रेक्ष्य कैमरा मैट्रिक्स का उपयोग करके गणना है।
  2. बिंदु पत्राचार का उपयोग करके होमोग्राफी की गणना करना।
  3. सजातीय कम से कम वर्ग समाधान।
  4. होमोग्राफी और मौलिक मैट्रिक्स के बीच अंतर (पाठकों के लिए जो मौलिक मैट्रिक्स से परिचित हैं)।

होमोग्राफी में दो कैमरों की अनुमानित ज्यामिति और एक विश्व विमान का वर्णन है। सरल शब्दों में, होमोग्राफी उन बिंदुओं की छवियों को मैप करता है जो एक विश्व दृश्य पर एक कैमरा दृश्य से दूसरे तक लेटती हैं। यह एक अनुमानित संबंध है क्योंकि यह लाइनों के साथ विमानों के चौराहे पर निर्भर करता है। जैसा कि नीचे दिए गए चित्र में दिखाया गया है:

प्लेनर होमोग्राफी

H मैप्स x और x 'को दिए गए सभी पॉइंट्स X (x और x के समान दुनिया के पॉइंट्स) एक ही प्लेन पर झूठ बोलते हैं। आइए हम मान लें कि दो विचारों के लिए प्रोजेक्शन मैट्रेस हैं

जहां 3 डी सूचना के अंतर्निहित नुकसान के कारण हम छवि स्थान से विश्व अंतरिक्ष में परिवर्तित होने वाले अस्पष्टता को दर्शाते हैं। मैंने अपने पिछले ब्लॉग में इस अस्पष्टता के बारे में बताया है। इस ब्लॉग के लिए पहले कैमरे को संदर्भ मान लें और इसलिए पहले कैमरे के लिए रोटेशन मैट्रिक्स पहचान और अनुवाद शून्य है। उपरोक्त समीकरणों का उपयोग करके हम आसानी से निष्कर्ष निकाल सकते हैं

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

मान लीजिए कि हम फुटबॉल मैच के लाइव टेलीकास्ट के दौरान गोलपोस्ट पर किसी भी लोगो (जॉर्जिया टेक लोगो का कहना है) का विज्ञापन करना चाहते हैं।

ऐशे ही

हम इसे कैसे करते हैं? हम पहले से ही लोगो के साथ एक लक्ष्य पोस्ट मानकर इस समस्या को एक होमोग्राफी समस्या के रूप में तैयार कर सकते हैं। इस प्रकार, हमारे पास दो कैमरा दृश्य हैं: एक वह कैमरा है जिसमें से वीडियो लिया गया था और दूसरा एक काल्पनिक कैमरा है जिसमें से लोगो की छवि ली गई थी। इन दोनों के विचारों में आम गोलपोस्ट प्लेन (विश्व विमान) है जिस पर लोगो का अनुमान लगाया गया है। अब हमें इन दो कैमरा दृश्यों के बीच मानचित्रण की गणना करने की आवश्यकता है। लेकिन जैसा कि कैमरों में से एक काल्पनिक है, हम इन दो कैमरों के बीच सापेक्ष मुद्रा की गणना नहीं कर सकते हैं। इस प्रकार, इस मामले में हम होमोग्राफी की गणना के लिए बिंदु पत्राचार का उपयोग करते हैं। पॉइंट पत्राचार दो कैमरा दृश्यों में संबंधित बिंदुओं (x, x ') की जोड़ी है जिनके बारे में हम पहले से ही जानते हैं। हम इन पत्राचारों का उपयोग एक मानचित्रण प्राप्त करने के लिए कर सकते हैं जो तब उस विश्व विमान पर पड़े अन्य सभी बिंदुओं के पत्राचार की गणना करने के लिए उपयोग किया जा सकता है।

बिंदु पत्राचार का उपयोग करके होमोग्राफी की गणना करना

बिंदु पत्राचार का उपयोग करके होमोग्राफी की गणना करने के तरीके में जाने से पहले, होमोग्राफ मैट्रिक्स के कुछ गुणों के बारे में संक्षेप में चर्चा करें। होमोग्राफी दूसरे दृश्य में अंक के लिए पहले दृश्य में अंक से संबंधित है और चूंकि दोनों विचारों में कोई बाधा नहीं है, यह एक पूर्ण रैंक (= 3) मैट्रिक्स है। इसके अलावा, होमोग्राफी को स्केल (उपरोक्त समीकरण में सी) तक परिभाषित किया गया है, अर्थात यह प्रोजेक्ट परिवर्तन पर किसी भी प्रभाव के बिना एक गैर शून्य निरंतर द्वारा बदला जा सकता है। इस प्रकार, होमोग्राफी में स्वतंत्रता की 8 डिग्री होती है, हालांकि इसमें 9 तत्व (3x3 मैट्रिक्स) होते हैं अर्थात अज्ञात के लिए जिसे हल करने की आवश्यकता होती है। 8. फुटबॉल लक्ष्य पोस्ट उदाहरण में, हमें प्रत्येक बिंदु x के बाद से सिर्फ 4 अंक चाहिए होंगे। और y निर्देशांक और एक अद्वितीय समाधान के लिए H को हल करने के लिए कुल 8 अज्ञात हैं। ये चार बिंदु गोलपोस्ट के चार कोने हो सकते हैं।

जब 4 से अधिक बिंदु होते हैं तो यह एक अति-निर्धारित मामला होगा और इसलिए हमें h खोजने के लिए कम से कम वर्ग समाधान का उपयोग करना होगा

हार्टली और ज़िसरमैन ने शोर की उपस्थिति में समीकरण अह = 0 को अधिक स्थिर बनाने के लिए और सही परिणाम से विचलन को रोकने के लिए एच की गणना करने से पहले एक सामान्यीकरण कदम का प्रस्ताव रखा। यह विचार परिवर्तन मैट्रिक्स T और T की गणना करने का है जो x और x को रूपांतरित करता है 'जैसे कि इन बिंदुओं का केन्द्रक मूल और मूल से निश्चित औसत दूरी का समन्वय है। परिवर्तित बिंदुओं से एच 'की गणना करने के बाद हम मूल होमोग्राफी मैट्रिक्स का उपयोग करके वापस प्राप्त कर सकते हैं

सजातीय कम से कम वर्ग समाधान

SVD आसानी से C ++ में Eigen लाइब्रेरी का उपयोग करके गणना की जा सकती है। यहां कोड का टुकड़ा है जो पत्राचार का उपयोग करके होमोग्राफी की गणना करता है।

गोलपोस्ट पर लोगो को प्रोजेक्ट करने के लिए पूर्ण कोड मेरे जीथब रिपॉजिटरी पर उपलब्ध है:

होमोग्राफी मैट्रिक्स और मौलिक मैट्रिक्स के बीच अंतर

भले ही मैंने अपने किसी भी ब्लॉग में अभी तक मौलिक मैट्रिक्स के बारे में नहीं बताया है, लेकिन स्पष्टता के लिए मैं दो मैट्रिसेस के बीच के अंतर को संक्षेप में बताना चाहता हूं।

मौलिक मैट्रिक्स भी दो दृष्टिकोणों के बीच विश्व बिंदु की मैपिंग है लेकिन यह एक दृश्य की छवि को एक दृश्य में दूसरे दृश्य में एक एपीपोलर लाइन को मैप करता है। दूसरे दृश्य पर बिंदु किसी भी बिंदु पर एपिपोलर लाइन पर हो सकता है। चूंकि दूसरे दृष्टिकोण में बिंदु के लिए एक लाइन बाधा है, यह होमोग्राफी के विपरीत रैंक की कमी (= 2) मैट्रिक्स है जो एक पूर्ण रैंक मैट्रिक्स है। मौलिक मैट्रिक्स होमोग्राफी के विपरीत दृश्य संरचना से स्वतंत्र है जिसके लिए सभी विश्व बिंदुओं को एक विमान पर लेटना आवश्यक है। इस प्रकार, होमोग्राफी मूलभूत मैट्रिक्स का एक विशेष मामला है। होमोग्राफी का उपयोग आम तौर पर एक विमान को दूसरे विमान में मैप करने के लिए किया जाता है, जबकि मूलभूत मैट्रिक्स का उपयोग अलग-अलग गहराई की वस्तुओं के साथ दृश्य संरचना की गहराई की गणना करने के लिए किया जाता है।

अब जब हम इस ब्लॉग के अंत में हैं, तो उम्मीद है कि यह पाठकों को एक होमोग्राफी मैट्रिक्स की गणना कैसे करें और होमोग्राफी मैट्रिक्स की गणना कैसे करें, इसकी स्पष्ट समझ देगा ताकि इसे भयानक कंप्यूटर विज़न प्रोजेक्ट्स में एक आवश्यक घटक के रूप में इस्तेमाल किया जा सके।

संदर्भ

[१] केनजी हाटा और सिल्वियो सावरिस द्वारा एपीपोलर ज्यामिति (स्टैनफोर्ड यूनिवर्सिटी सीएस २३१ ए)

https://web.stanford.edu/class/cs231a/course_notes/03-epipolar-geometry.pdf