Contents — find the section you need
कैमरे को थोड़ा सा तिरछा करके उसी दृश्य की तस्वीर लें, तो पास की वस्तुएं पृष्ठभूमि के सापेक्ष दूर की वस्तुओं की तुलना में अधिक विस्थापित होती हैं। यह लंबन (पैरेलेक्स) आपको 2D छवियों से 3D आकार और कैमरा गति को पुनर्प्राप्त करने में सक्षम बनाता है। लेकिन छवियों में केवल "एक ही भौतिक बिंदु" का मिलान करना पर्याप्त नहीं है। विसंगतियों, लेंस विरूपण, शुद्ध घूर्णन, तलों और गतिशील वस्तुओं से भरी वास्तविक छवियों में, आपको यह निर्धारित करने की आवश्यकता होती है कि बिंदुओं के कौन से जोड़े एक ही कैमरा गति के अनुरूप हैं। एपिपोलर ज्यामिति ठीक यही करने के लिए सामान्य भाषा है।
यह केवल स्टीरियो मापन के बारे में नहीं है। स्ट्रक्चर फ्रॉम मोशन (SfM), विजुअल ओडोमेट्री, विजुअल SLAM, AR प्लेन ट्रैकिंग, रोबोट सेल्फ-लोकलाइज़ेशन और COLMAP का विरल पुनर्निर्माण, ये सभी पत्राचार और प्रक्षेपी ज्यामिति पर आधारित हैं। यह लेख पूरे समय निर्देशांक फ्रेम को स्पष्ट रखता है, यह बताता है कि प्रत्येक मैट्रिक्स का क्या अर्थ है, कौन सा अनुमानक चुनना है और आपको परिणाम पर कब भरोसा नहीं करना चाहिए।
स्टीरियो-कैमरा वाहन का उदाहरणछवि: Subaru WRX S4 2.0GT-S EyeSight (Tokumeigakarinoaoshima, CC BY-SA 4.0), विकिमीडिया कॉमन्स। यह बाहरी दृश्य है, कैमरे के आंतरिक भाग का क्लोज-अप नहीं।
0. 30-सेकंड का सारांश
- दो कैमरा केंद्रों और एक 3D बिंदु द्वारा निर्मित समतल है इसे एपिपोलर प्लेन कहा जाता है। यह प्लेन प्रत्येक छवि को एक रेखा के रूप में काटता है, इसलिए एक छवि में संगत बिंदु दूसरी छवि में केवल उसी रेखा — एपिपोलर लाइन — पर ही दिखाई दे सकता है।
- बिना कैलिब्रेटेड छवियों के लिए, फंडामेंटल मैट्रिक्स F \mathbf{x}'^\mathsf{T}F\mathbf{x}=0 को संतुष्ट करता है। ज्ञात इंट्रिंसिक्स वाले मानकीकृत निर्देशांकों में, एसेंशियल मैट्रिक्स E=[\mathbf{t}]_\times R का उपयोग किया जाता है। E रोटेशन R और ट्रांसलेशन की दिशा को पुनर्प्राप्त करता है, लेकिन एक एकल मोनोक्युलर टू-व्यू पेयर ट्रांसलेशन के निरपेक्ष पैमाने को पुनर्प्राप्त नहीं कर सकता है।
-
मानकीकृत 8-पॉइंट एल्गोरिदम एक आसानी से लागू होने वाला रैखिक प्रारंभिक अनुमान है; 5-पॉइंट एल्गोरिदम एक न्यूनतम सॉल्वर है जिसे कैलिब्रेटेड कैमरे के लिए कम पत्राचार की आवश्यकता होती है। दोनों ही बेमेल के प्रति संवेदनशील हैं, इसलिए व्यवहार में आप RANSAC/USAC के साथ आउटलायर्स को हटाते हैं और रीप्रोजेक्शन के साथ मूल्यांकन करते हैं। त्रुटि।
-
ट्रायंगुलेशन दो दृष्टि रेखाओं के प्रतिच्छेदन का पता लगाता है, लेकिन पैरेलेक्स कम होने, बेसलाइन छोटी होने या इमेज नॉइज़ अधिक होने पर गहराई अस्थिर हो जाती है। अनुमान के बाद, बंडल एडजस्टमेंट संयुक्त रूप से कैमरा पोज़ और 3D बिंदुओं को परिष्कृत करता है।
-
केवल समतल दृश्य के लिए, या लगभग शुद्ध-घूर्णनशील कैमरे के लिए, होमोग्राफी H छवियों का अच्छी तरह से वर्णन करती है, और F/E के माध्यम से अनुवाद/गहराई पुनर्प्राप्ति विकृत हो जाती है। मॉडल चयन केवल इनलायर गणना पर निर्भर नहीं होना चाहिए - अवशिष्ट, पैरेलेक्स, स्थानिक वितरण और चीरैलिटी की एक साथ जाँच करें।
1. निर्देशांकों से दो-दृश्य प्रक्षेपण लिखना
मान लीजिए कि एक विश्व-निर्देशांक बिंदु समरूप निर्देशांक \mathbf{X}=(X,Y,Z,1)^\mathsf{T} है। पिनहोल कैमरा प्रक्षेपण, स्केल तक, इस प्रकार लिखा जाता है:
यहाँ \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} समरूप छवि निर्देशांक है। K आंतरिक मैट्रिक्स है, और R\in SO(3) और \mathbf{t} दुनिया से कैमरे की बाह्य स्थिति हैं। आमतौर पर
जहां f_x,f_y पिक्सेल इकाइयों में फोकल लंबाई हैं, (c_x,c_y) मुख्य बिंदु है, और s तिरछापन है। विरूपण ठीक हो जाने के बाद, सामान्यीकृत छवि निर्देशांक \mathbf{x}=K^{-1}\tilde{\mathbf{x}} है। अब से, बाएं कैमरे को P_1=K[I\mid\mathbf{0}] और दाएं कैमरे को P_2=K[R\mid\mathbf{t}] के रूप में संदर्भ मानकर चलें।
चित्र में, C,C' कैमरा केंद्र हैं, और खंड CC' आधार रेखा है। बिंदु X और दोनों केंद्रों द्वारा परिभाषित समतल, बाएँ छवि तल को उपध्रुवीय रेखा l के रूप में और दाएँ छवि तल को l' के रूप में काटता है। एक बार जब आप बाएँ छवि में संगत बिंदु \mathbf{x} पा लेते हैं, तो दाएँ छवि में 2D खोज क्षेत्र एक रेखा में सिमट जाता है। एक संशोधित स्टीरियो युग्म के लिए, वह रेखा क्षैतिज होती है, और संगति खोज उसी स्कैनलाइन के अनुदिश 1D खोज बन जाती है।
2. आवश्यक मैट्रिक्स और मौलिक मैट्रिक्स
केवल बाह्य पोज़ पर ध्यान केंद्रित करते हुए, अंशांकित, सामान्यीकृत निर्देशांक (\mathbf{x},\mathbf{x}') पर विचार करें। बाएं कैमरे से बिंदु तक दृष्टि रेखा की दिशा \mathbf{x} है, और दाएं कैमरे के फ्रेम में यह R\mathbf{x} है। यह तथ्य कि अनुवाद सदिश \mathbf{t} और दृष्टि की दोनों रेखाएँ एक ही समतल में स्थित हैं, को शून्य अदिश त्रिगुण गुणनफल के रूप में लिखा जा सकता है:
यहाँ [\mathbf{t}]_\times क्रॉस गुणनफल का विषम-सममितीय मैट्रिक्स रूप है।
इस E=[\mathbf{t}]_\times R को आवश्यक मैट्रिक्स कहा जाता है। E कोई मनमाना 3\times3 मैट्रिक्स नहीं है — इसकी रैंक 2 है, इस शर्त के साथ कि इसके दो गैर-शून्य विलक्षण मान बराबर हैं। SVD के माध्यम से E=U\operatorname{diag}(s,s,0)V^\mathsf{T} रूप में प्रक्षेपित करने से यह भौतिक बाधा पुनः प्राप्त हो जाती है।
बिना कैलिब्रेशन वाले मामले में, सीधे रॉ पिक्सेल निर्देशांकों का उपयोग करते हुए,
और F मूलभूत मैट्रिक्स है। F\tilde{\mathbf{x}} दाईं छवि में उपध्रुवीय रेखा l' देता है, और F^\mathsf{T}\tilde{\mathbf{x}}' बाईं छवि में रेखा l देता है। चूंकि F आंतरिक मापदंडों को अवशोषित करता है, इसलिए यह छवि युग्मों के ज्यामितीय सत्यापन के लिए सुविधाजनक है, लेकिन मीट्रिक इकाइयों में पोज़ की व्याख्या के लिए कैलिब्रेशन आवश्यक है।
| मैट्रिक्स | निर्देशांक | आवश्यक ज्ञात मात्रा | आकार बाधा | आपको क्या मिलता है | मुख्य उपयोग |
|---|---|---|---|---|---|
| F | रॉ पिक्सेल समरूप निर्देशांक | कोई नहीं | रैंक 2, 7 DoF | उपध्रुवीय रेखाएँ | कैलिब्रेटेड SfM नहीं, पत्राचार सत्यापन |
दोनों कैमरों का रैंक 2, विलक्षण मान | VO, SLAM, कैलिब्रेटेड स्टीरियो |
एकल पिक्सेल समतल पर या शुद्ध घूर्णन के अधीन | समतल या घूर्णन मॉडल | सामान्यतः 8 DoF | समतलीय ताना-बाना | AR समतल, छवि संयोजन |
एपिपोल क्या बताता है
दाएँ कैमरे का केंद्र जहाँ बाएँ चित्र में प्रक्षेपित होता है, वह बिंदु बायाँ एपिपोल कहलाता है, जोF\mathbf{e}=0को संतुष्ट करता है। इसी प्रकारF^\mathsf{T}\mathbf{e}'=0भी। यदि उपध्रुव छवि के भीतर स्थित है, तो उपध्रुवीय रेखाएँ त्रिज्या के अनुसार अभिसरित होती हैं, जो इंगित करती हैं कि कैमरा लगभग आगे या पीछे की ओर चला है। यदि यह अनंत पर स्थित है, तो रेखाएँ लगभग समानांतर होती हैं, जो पार्श्व गति के समान कुछ इंगित करती हैं। यह एक उपयोगी निदान है, लेकिन केवल एक गलत अनुमान भी उपध्रुव की अप्राकृतिक स्थिति उत्पन्न कर सकता है, इसलिए आपको कभी भी केवल इसी से गति का निर्धारण नहीं करना चाहिए।
3. पत्राचारों से मैट्रिक्स का अनुमान लगाना: 8-बिंदु एल्गोरिथम
एकल पत्राचार \tilde{\mathbf{x}}=(u,v,1)^\mathsf{T} और \tilde{\mathbf{x}}'=(u',v',1)^\mathsf{T} F की नौ प्रविष्टियों पर एक रैखिक अवरोध प्रदान करता है। उदाहरण के लिए, \mathbf{f}=\operatorname{vec}(F) के साथ
आठ या अधिक पत्राचारों को मैट्रिक्स A में स्टैक करने पर, 8-बिंदु एल्गोरिथम A\mathbf{f}=0 का सबसे छोटा विलक्षण सदिश लेता है। यह नाम स्वतंत्रता की डिग्री को संतुष्ट करने वाले आठ पत्राचारों से लिया गया है, लेकिन वास्तविक, शोरगुल वाले मामले में, न्यूनतम वर्ग विधि का उपयोग करके कई और बिंदुओं का उपयोग किया जाता है।
कच्चे पिक्सेल निर्देशांकों के साथ हल करने से निर्देशांक मानों के परिमाण से अनुचित स्थिति उत्पन्न होती है। हार्टले का मानकीकृत 8-बिंदु एल्गोरिदम प्रत्येक छवि के बिंदु सेट को समानता रूपांतरणों T,T' के साथ मानकीकृत करता है ताकि केंद्रक शून्य हो और औसत दूरी \sqrt{2} हो, उस स्थान में हल करता है, और अंत में पुनर्प्राप्त करता है।
इसके अलावा, परिणामी F का SVD लेकर और सबसे छोटे विलक्षण मान को शून्य करके रैंक 2 को लागू किया जाता है। यह एक मामूली कार्यान्वयन विवरण प्रतीत होता है, लेकिन यह समाधान स्थिरता को दृढ़ता से प्रभावित करता है।
यदि कैलिब्रेट किया जाए, तो यही विचार मानकीकृत पत्राचारों से E का प्रारंभिक अनुमान तैयार करता है। लेकिन 8 बिंदुओं से प्राप्त रैखिक समाधान एसेंशियल मैट्रिक्स की अधिक प्रबल विलक्षण-मान बाधा को स्वतः संतुष्ट नहीं करता है। आप E=U\operatorname{diag}(\sigma_1,\sigma_2,\sigma_3)V^\mathsf{T} की गणना करते हैं और इसे \operatorname{diag}((\sigma_1+\sigma_2)/2,(\sigma_1+\sigma_2)/2,0) से प्रतिस्थापित करके प्रक्षेपित करते हैं।
4. 5-बिंदु एल्गोरिदम: अंशांकित होने पर न्यूनतम नमूने का संकुचन
एसेंशियल मैट्रिक्स में 5 डिग्री ऑफ़ फ़्रीडम हैं। 5-बिंदु एल्गोरिदम एक न्यूनतम समाधानकर्ता है जो 5 पत्राचारों से E उम्मीदवारों का एक सीमित सेट ढूंढता है; निस्टर की विधि शून्य स्थान को बहुपद बाधाओं में प्रतिस्थापित करती है, जिससे 10 तक वास्तविक समाधान उम्मीदवारों की गणना की जा सकती है। व्युत्पत्ति और कार्यान्वयन दोनों 8-बिंदु एल्गोरिदम की तुलना में अधिक जटिल हैं, लेकिन RANSAC परिकल्पना के लिए केवल 5 बिंदुओं की आवश्यकता का लाभ बहुत बड़ा है।
इनलायर अनुपात w दिया गया है, एक ही ड्रॉ में सभी इनलायर होने की प्रायिकता w^s है, विफलता प्रायिकता p है, और न्यूनतम नमूना आकार s है, तो आवश्यक पुनरावृति का अनुमान इस प्रकार है:
w=0.5,p=0.01 के लिए: s=8 को लगभग 1177 पुनरावृति की आवश्यकता होती है, जबकि s=5 को लगभग 145 पुनरावृति की आवश्यकता होती है। व्यवहार में यह सीधी तुलना नहीं है, क्योंकि PROSAC जैसी विधियाँ मिलान गुणवत्ता के क्रम में नमूने लेती हैं और अनुकूल रूप से समाप्त होती हैं। फिर भी, कम इनलायर अनुपात वाले वातावरण में 5-बिंदु एल्गोरिदम का महत्व स्पष्ट है।
OpenCV का findEssentialMat RANSAC/LMEDS के साथ-साथ 5-पॉइंट-फ़ैमिली कार्यान्वयन प्रदान करता है, और recoverPose कैंडिडेट डीकंपोज़िशन और चीरैलिटी जाँच को संभालता है। कार्यान्वयनकर्ताओं के लिए, यह पुष्टि करना कि इनपुट विकृत/सामान्यीकृत है और थ्रेशोल्ड किस समन्वय इकाई का उपयोग करता है, इस तथ्य से अधिक महत्वपूर्ण है कि "हमने 5-पॉइंट एल्गोरिदम को कॉल किया है।"
5. RANSAC: आउटलायर्स को मानते हुए ज्यामिति का उपयोग करना
SIFT, ORB, SuperPoint और LoFTR जैसे मैचर्स दोहराए गए टेक्सचर, प्रतिबिंब, दोहराव वाले ग्रिड और अवरोध से बेमेल उत्पन्न करते हैं। न्यूनतम वर्ग विधि द्वारा सभी पत्राचारों पर F को फिट करने से कुछ त्रुटियाँ पूरे मैट्रिक्स को बिगाड़ सकती हैं। RANSAC निम्नलिखित चरणों को दोहराता है:
-
पत्राचारों का एक न्यूनतम सेट यादृच्छिक रूप से चुनें और एक F या E परिकल्पना बनाएं।
-
प्रत्येक पत्राचार के लिए अवशिष्ट की गणना करें, और सीमा के भीतर आने वाले पत्राचारों को इनलायर्स के रूप में चिह्नित करें।
-
सबसे अधिक समर्थन वाली या सर्वोत्तम रोबस्ट स्कोर वाली परिकल्पना को रखें।
-
सभी अंतिम इनलायर्स का उपयोग करके पुनः अनुमान लगाएं, और यदि आवश्यक हो तो नॉनलाइनियर ऑप्टिमाइजेशन के साथ परिष्कृत करें।
आपको केवल बीजगणितीय त्रुटि \mathbf{x}'^\mathsf{T}F\mathbf{x} का उपयोग करके एपिपोलर बाधा को सीमांकित नहीं करना चाहिए, क्योंकि यह F के पैमाने पर निर्भर करता है। व्यवहार में, इसके बजाय आमतौर पर सैम्पसन दूरी
यह ज्यामितीय त्रुटि का प्रथम-क्रम सन्निकटन है - प्रत्येक पत्राचार से उसकी एपिपोलर रेखा तक की दूरी का एक मानकीकृत माप। पिक्सेल निर्देशांकों में थ्रेशहोल्ड छवि रिज़ॉल्यूशन, कीपॉइंट स्थानीयकरण सटीकता, अवशिष्ट विरूपण और धुंधलापन पर निर्भर करता है। कोई सार्वभौमिक "1 पिक्सेल" नहीं है। आप अवशिष्ट हिस्टोग्राम और छवि पर इनलायर्स के स्थानिक वितरण को देखकर इसे समायोजित कर सकते हैं।
वर्तमान OpenCV USAC-परिवार की मजबूत अनुमान विधि भी प्रदान करता है। गुणवत्ता-क्रमबद्ध नमूनाकरण, स्थानीय अनुकूलन और अपघटन जांचों को मिलाकर, यह सामान्य RANSAC की तुलना में तेज़ और अधिक स्थिर हो सकता है। हालांकि, सांख्यिकीय आउटलायर अस्वीकृति इस धारणा से आगे नहीं बढ़ सकती कि "अधिकांश भाग एक ही, स्थिर कठोर-पिंड गति का अनुसरण करता है।" यदि फ्रेम का अधिकांश भाग एक गतिशील वाहन या व्यक्ति है, तो आपको सिमेंटिक मास्क, मोशन सेगमेंटेशन, IMU या गहराई जैसी अन्य जानकारी जोड़ने की आवश्यकता होती है।
6. E को पोज़ में विघटित करना और सही उम्मीदवार का चयन करना
संशोधित E=U\operatorname{diag}(s,s,0)V^\mathsf{T} के लिए,
घूर्णन उम्मीदवार R=UWV^\mathsf{T} या UW^\mathsf{T}V^\mathsf{T} और अनुवाद-दिशा उम्मीदवार \pm U_{:,3} प्राप्त होते हैं। चिह्न और घूर्णन के 4 संयोजन हैं। यहाँ महत्वपूर्ण बात यह है कि दो-दृश्य बाधा ही इन सभी को बीजगणितीय रूप से समान E के साथ सुसंगत बनाती है।
चयन में चीरैलिटी (सकारात्मक गहराई) का उपयोग किया जाता है। प्रत्येक उम्मीदवार के लिए, कुछ इनलायर्स का त्रिभुजीकरण करें और दोनों कैमरा फ्रेम में सबसे अधिक बिंदुओं के लिए Z>0 देने वाले उम्मीदवार को चुनें। इसके अतिरिक्त, यह भी जांचें कि रोटेशन मैट्रिक्स का डिटरमिनेंट +1 है या नहीं, रीप्रोजेक्शन त्रुटि कम है या नहीं, और पर्याप्त पैरेलेक्स है या नहीं। एक विशेष रूप से ध्यान देने योग्य सीमा: \mathbf{t} को केवल दिशा तक ही पुनर्प्राप्त किया जा सकता है। \mathbf{t} और सभी 3D बिंदुओं को एक ही कारक से स्केल करने पर प्रोजेक्शन अपरिवर्तित रहता है। एक ज्ञात स्टीरियो बेसलाइन, व्हील ओडोमेट्री, IMU, ज्ञात आकार की वस्तु, या GNSS स्केल प्रदान कर सकते हैं।
7. ट्रायंगुलेशन: दो किरणों से 3D बिंदु तक
प्रोजेक्शन समीकरण \mathbf{x}\times(P\mathbf{X})=\mathbf{0} प्रति दृश्य दो स्वतंत्र समीकरण उत्पन्न करता है। DLT ट्रायंगुलेशन, SVD के माध्यम से दो दृश्यों से स्टैक किए गए रैखिक सिस्टम A\mathbf{X}=0 को हल करता है; यह सरल है, और OpenCV का triangulatePoints इसी रूप के निकट है। उदाहरण के लिए, मान लीजिए कि \mathbf{p}_{ij}^\mathsf{T}, P_i की jवीं पंक्ति है, तो एक बिंदु (u_i,v_i) से प्राप्त होता है:
अंत में समरूप घटक से भाग देने से पहले, यह सुनिश्चित कर लें कि w बहुत छोटा तो नहीं है।
एक संशोधित क्षैतिज स्टीरियो युग्म के लिए, यह अधिक सहज है। विषमता d=u_L-u_R (बाएँ और दाएँ के बीच क्षैतिज निर्देशांक अंतर), फोकल लंबाई f और बेसलाइन B के साथ,
गहराई त्रुटि लगभग \delta Z\simeq \frac{Z^2}{fB}\delta d है। दूरी जितनी अधिक होगी, और फोकल लंबाई या बेसलाइन जितनी कम होगी, समान 1-पिक्सेल असमानता त्रुटि से गहराई त्रुटि उतनी ही अधिक होगी। इसलिए, "यह मेल खाता है, इसलिए इसे पॉइंट क्लाउड में जोड़ें" के बजाय, ट्रायंगुलेशन कोण, असमानता, रीप्रोजेक्शन त्रुटि और धनात्मक गहराई को गुणवत्ता मापक के रूप में उपयोग करें।
रेखीय ट्रायंगुलेशन केवल एक प्रारंभिक अनुमान है - यह छवि शोर को सही ढंग से कम नहीं करता है। बंडल समायोजन, जो कैमरा पोज़ P_i और बिंदुओं \mathbf{X}_j को संयुक्त रूप से अनुकूलित करता है, निम्नलिखित को हल करता है:
जहां \rho ह्यूबर्ट या कॉची जैसे एक मजबूत हानि है, और \pi परिप्रेक्ष्य विभाजन है। यही कारण है कि COLMAP, Theia, या Ceres Solver का उपयोग करके किए गए पुनर्निर्माण सटीकता प्राप्त करते हैं। गेज फ्रीडम को ठीक करने के लिए, पहले कैमरे को मूल बिंदु पर रखें, और यदि आवश्यक हो, तो एक ज्ञात पैमाने को स्थिर करें।
8. एपिपोलर ज्योमेट्री और होमोग्राफी के बीच चयन
जब दृश्य का प्रत्येक बिंदु एक ही समतल पर स्थित होता है, या कैमरा शुद्ध घूर्णन से गुजरता है, तो छवियों के बीच पत्राचार को 3×3 होमोग्राफी द्वारा अच्छी तरह से वर्णित किया जाता है। यदि इसे समतल के अभिलंब और दूरी के साथ कैलिब्रेट किया जाता है, तो
शुद्ध घूर्णन के तहत, अनुवाद पद गायब हो जाता है। किसी पोस्टर, डेस्क, इमारत के अग्रभाग, या दूर के दृश्य में पैनिंग फुटेज के लिए, एक उत्कृष्ट मॉडल बन जाता है, और यह एआर प्लेनर एंकर और इमेज स्टिचिंग के लिए स्वाभाविक रूप से पहली पसंद है।
हालाँकि, केवल समतल डेटा से F/E का अनुमान लगाने पर कई स्पष्ट इनलायर्स दिखाई दे सकते हैं, जबकि 3D संरचना को ट्रांसलेशन से स्थिर रूप से अलग करना संभव नहीं होता। इसके विपरीत, एक सामान्य, गैर-समतल दृश्य को एक ही H में समाहित करने पर निकट और दूर की वस्तुएँ असंगत रूप से विकृत हो जाती हैं। कार्यान्वयन में, RANSAC का उपयोग करके F/E और H दोनों का अनुमान लगाएँ और पुनर्निर्माण के बाद अवशिष्ट, व्याख्या किए गए बिंदुओं की संख्या, बिंदु वितरण और लंबन की तुलना करें। यदि आप केवल मिलान गणना के आधार पर किसी मॉडल को स्वीकार करने का निर्णय लेते हैं, तो आप एक बड़ी समतल दीवार या छवि के केंद्र पर हावी होने वाले समतल की ओर आकर्षित होंगे।
| स्थिति | पहला उम्मीदवार | आपको क्या मिलता है | सावधानियां |
|---|---|---|---|
| कैलिब्रेटेड, सामान्य 3D, ट्रांसलेशन मौजूद | E + 5-बिंदु एल्गोरिदम | सापेक्ष स्थिति, विरल गहराई | पैमाना अनिर्धारित, कम लंबन पर अस्थिर |
असंरेखित छवि युग्म | F + मानकीकृत 8-बिंदु एल्गोरिदम | उपध्रुवीय रेखाएँ, पत्राचार सत्यापन | K के बिना भौतिक स्थिति की व्याख्या न करें |
लगभग समतल, पोस्टर, डेस्क | H + 4-बिंदु एल्गोरिदम | समतलीय ताना-बाना, समतलीय-स्थिति उम्मीदवार | समतल से बाहर की गहराई नहीं |
शुद्ध घूर्णन / पैनोरमा | H | छवि संरेखण, घूर्णन | अनुवाद और गहराई अवलोकन योग्य नहीं |
ज्ञात 3D मानचित्र 2D प्रेक्षणों के साथ | PnP + RANSAC | निरपेक्ष स्थिति | मानचित्र की गुणवत्ता और पैमाने पर निर्भर |
9. कैलिब्रेशन प्रीप्रोसेसिंग चरण नहीं है — यह मॉडल का हिस्सा है
विभिन्न दूरियों, झुकावों और छवि स्थितियों पर चेकरबोर्ड, चारुको या अप्रैलटैग ग्रिड शूट करें ताकि K और विरूपण गुणांकों का अनुमान लगाया जा सके। ब्राउन-कॉनराडी रेडियल विरूपण को, सामान्यीकृत त्रिज्या r^2=x^2+y^2 के लिए, लगभग इस प्रकार व्यक्त किया जाता है:
वाइड-एंगल और फिशआई लेंस के लिए, मानक पिनहोल विरूपण मॉडल को लागू न करें — OpenCV के फिशआई मॉडल या उपयोग में लाए जा रहे लेंस के अनुरूप मॉडल का चयन करें। भले ही कैलिब्रेशन की औसत रीप्रोजेक्शन त्रुटि कम हो, त्रुटि संरचना छवि किनारों पर, विभिन्न फोकल लंबाई पर, तापमान के साथ, फोकस के साथ या रिज़ॉल्यूशन में परिवर्तन के साथ बदल सकती है।
दो-दृश्य प्रसंस्करण में प्रवेश करने से पहले, पुष्टि करें कि कैलिब्रेशन मान आपके वर्तमान कैप्चर के समान रिज़ॉल्यूशन, क्रॉप और डिजिटल ज़ूम स्थितियों पर प्राप्त किए गए थे। undistortPoints के माध्यम से सामान्यीकृत बिंदुओं से E का अनुमान लगाने और विकृत न की गई छवियों से F का अनुमान लगाने में अक्सर भ्रम हो जाता है। हमेशा यह पढ़ें कि कोई API आंतरिक रूप से फोकल लेंथ, प्रिंसिपल पॉइंट और डिस्टॉर्शन का उपयोग करता है या पहले से सही किए गए निर्देशांकों की अपेक्षा करता है। स्टीरियो रिग के लिए, दोनों कैमरों के इंट्रिंसिक्स के अलावा, stereoCalibrate के साथ सापेक्ष पोज़ ज्ञात करें और stereoRectify के साथ एपिपोलर रेखाओं को क्षैतिज में संशोधित करें।
10. OpenCV में एक न्यूनतम पाइपलाइन
नीचे कैलिब्रेटेड मोनोक्युलर कैमरे के दो फ्रेम से सापेक्ष पोज़ और गुणवत्ता-फ़िल्टर किए गए विरल 3D बिंदु सेट प्राप्त करने का ढांचा दिया गया है। यह विशेषताओं के लिए ORB का उपयोग करता है, लेकिन कैप्चर स्थितियों के आधार पर इसे SIFT या लर्निंग-आधारित मैचर से बदला जा सकता है। व्यवहार में, आप एक्सपोज़र, गतिमान वस्तुओं और समय सिंक्रोनाइज़ेशन को भी लॉग करेंगे।
import cv2 as cv
import numpy as np
# K, dist are values calibrated for this capture resolution and lens
orb = cv.ORB_create(nfeatures=3000)
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
matches = cv.BFMatcher(cv.NORM_HAMMING).knnMatch(des1, des2, k=2)
good = [m for m, n in matches if m.distance < 0.75 * n.distance]
p1 = np.float32([kp1[m.queryIdx].pt for m in good])
p2 = np.float32([kp2[m.trainIdx].pt for m in good])
# threshold is in pixel units. Decide it from the residual distribution, not an initial guess.
E, mask = cv.findEssentialMat(p1, p2, K, method=cv.USAC_MAGSAC,
prob=0.999, threshold=1.0)
in1, in2 = p1[mask.ravel() != 0], p2[mask.ravel() != 0]
count, R, t, pose_mask = cv.recoverPose(E, in1, in2, K)
# P1, P2 are for normalized coordinates. Scale is arbitrary, so t's length is not a physical unit.
n1 = cv.undistortPoints(in1.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
n2 = cv.undistortPoints(in2.reshape(-1, 1, 2), K, dist).reshape(-1, 2)
P1 = np.hstack([np.eye(3), np.zeros((3, 1))])
P2 = np.hstack([R, t])
X4 = cv.triangulatePoints(P1, P2, n1.T, n2.T)
X = (X4[:3] / X4[3]).T
# Further filter by positive depth in both views, reprojection error, and triangulation angle.
z1 = X[:, 2]
z2 = (R @ X.T + t).T[:, 2]
valid = (z1 > 0) & (z2 > 0) & np.isfinite(X).all(axis=1)
यह उदाहरण रॉ पिक्सल और K को सीधे findEssentialMat में पास करता है, लेकिन यदि विरूपण नगण्य नहीं है, तो पहले undistortPoints से सामान्यीकृत बिंदुओं को पास करें और संबंधित API फ़ॉर्म पर स्विच करें। recoverPose द्वारा लौटाए गए \mathbf{t} को "तय की गई दूरी" के रूप में मानना भी एक त्रुटि है। जिन अनुप्रयोगों को स्केल की आवश्यकता होती है, उन्हें इसे ज्ञात बेसलाइन, VIO, व्हील ओडोमेट्री, डेप्थ सेंसर या इसी तरह के किसी अन्य उपकरण से सीमित करना होगा।
COLMAP फीचर एक्सट्रैक्शन, मैचिंग, जियोमेट्रिक वेरिफिकेशन, इंक्रीमेंटल मैपिंग और बंडल एडजस्टमेंट को एक कनेक्टेड पाइपलाइन के रूप में लागू करता है। छोटे डेटासेट के लिए, आप GUI के माध्यम से कैमरा मॉडल और पुनर्निर्माण का निरीक्षण कर सकते हैं। कमांड लाइन पर, कैमरा मॉडल का चयन, EXIF फोकल लेंथ को संभालने का तरीका, मिलान रणनीति (व्यापक/अनुक्रमिक/शब्दावली ट्री), और छवि युग्मों के बीच का समय अंतराल सटीकता और गणना लागत दोनों को प्रभावित करते हैं। पुनर्निर्माण के बाद, बिंदुओं की संख्या की नहीं, बल्कि पंजीकृत छवियों की संख्या, औसत पुनर्प्रक्षेपण त्रुटि, प्रति छवि अवलोकन संख्या और बिंदु क्लाउड में अंतराल की जाँच करें।
11. सामान्य विफलता स्थितियाँ और उनका निदान कैसे करें
छोटा लंबन, कोई आधार रेखा नहीं
आगे की गति, दूर के दृश्य, या कम फ्रेम अंतराल के साथ, आपको गहराई प्राप्त किए बिना भी पत्राचार मिल सकता है। यदि उपध्रुवीय रेखाएँ उचित प्रतीत होती हैं, लेकिन त्रिभुज कोण शून्य के निकट है, तो गहराई को जबरदस्ती अपडेट करने के बजाय उसे रोक दें। इसके मूल समाधान हैं कीफ्रेमों को अधिक दूरी पर रखना, पार्श्व गति के साथ अवलोकन कैप्चर करना, या ज्ञात आधार रेखा वाले स्टीरियो रिग का उपयोग करना।
शुद्ध घूर्णन या समतलीय अपभ्रंश
पैनिंग शॉट्स या केवल दीवार वाले दृश्य क्षेत्र में, H व्याख्यात्मक क्षमता रखता है। E के लिए उच्च इनलायर संख्या का अर्थ यह नहीं है कि स्थानांतरण देखा गया था। H और E के बीच प्रतिस्पर्धा को लॉग करें, और त्रिभुजीकरण के बाद धनात्मक गहराई दर और माध्य लंबन पर गेटिंग करें। AR पोस्टर ट्रैकिंग में, यह कोई विफलता नहीं है - यह सही मॉडल चयन है।
बेमेल, दोहराव वाले पैटर्न, परावर्तन
खिड़कियाँ, टाइलें, किताबों की अलमारियाँ, एलसीडी स्क्रीन और पानी की सतहें समान स्थानीय विवरण उत्पन्न करती हैं। अनुपात परीक्षण, पारस्परिक निकटतम-पड़ोसी मिलान और ज्यामितीय RANSAC को परत दर परत लागू करें, और जांचें कि क्या इनलायर बिंदु पूरी छवि में फैले हुए हैं। दर्पण प्रतिबिंब और पारदर्शी वस्तुएं रिजिड-बॉडी, लैम्बर्टियन-रिफ्लेक्टेंस की मूल धारणा को ही तोड़ देती हैं, इसलिए थ्रेशोल्ड ट्यूनिंग से भी कोई फायदा नहीं होगा।
गतिशील वस्तुएं और एकाधिक गतियां
RANSAC केवल सबसे बड़ी गति का चयन करता है। यदि पृष्ठभूमि अल्पसंख्यक है, तो यह कार की गति का अनुमान लगा सकता है। आपके अनुप्रयोग के आधार पर, व्यक्तियों/वाहनों को सिमेंटिक रूप से बाहर करने, ऑप्टिकल फ्लो को क्लस्टर करने, मल्टी-मॉडल अनुमान चलाने या डेप्थ/IMU के साथ अलाइन करने में से किसी एक को चुनें।
लेंस विरूपण, रोलिंग शटर, अतुल्यकालिकता
बिना सुधारित वाइड-एंगल एज का उपयोग करने से एपिपोलर रेखाओं में व्यवस्थित वक्रता रह जाती है। तीव्र गति के दौरान रोलिंग शटर के साथ, एक ही फ्रेम के भीतर अभिस्थिति बदल जाती है, इसलिए एक एकल E केवल एक अनुमान है। स्टीरियो जोड़ी के लिए बाएं/दाएं एक्सपोज़र टाइमिंग में थोड़ा सा अंतर भी गतिशील वस्तुओं के लिए गलत असमानता उत्पन्न करता है। ग्लोबल शटर, शॉर्ट एक्सपोज़र, रो-टाइमिंग मॉडल, आईएमयू-आधारित करेक्शन और हार्डवेयर सिंक्रोनाइज़ेशन पर विचार करें।
संख्यात्मक और निर्देशांक-फ्रेम संबंधी त्रुटियाँ
पिक्सेल और मानकीकृत निर्देशांकों को मिलाना, R,\mathbf{t} के लिए वर्ल्ड-टू-कैमरा बनाम कैमरा-टू-वर्ल्ड में भ्रम होना, बाएँ/दाएँ बिंदु क्रम को बदलना और छवि का आकार बदलने के बाद K को अपडेट करना भूल जाना, ये सभी सामान्य गलतियाँ हैं। अनुमानित मानों को आँख बंद करके स्वीकार न करें — पत्राचार और उपध्रुवीय रेखाओं को ओवरले करें, और दोनों कैमरों में सकारात्मक गहराई, रीप्रोजेक्शन त्रुटि, \det R=1 और R^\mathsf{T}R\simeq I की जाँच को स्वचालित करें।
12. व्यावहारिक मूल्यांकन मेट्रिक्स और एक डिज़ाइन चेकलिस्ट
केवल इसलिए कि "एक मैट्रिक्स प्राप्त हुआ" के आधार पर दो-दृश्य अनुमान को सफल न मानें। मिलान की संख्या बनावट की मात्रा से प्रभावित होती है, और औसत त्रुटि अकेले कुछ अच्छे बिंदुओं के पीछे छिप सकती है। प्रत्येक फ्रेम के लिए निम्नलिखित जानकारी सहेजने से आपको बाद में यह पहचानने में मदद मिलेगी कि सेंसर/मैचर/पोज़-एस्टिमेशन श्रृंखला में कहाँ गड़बड़ी हुई:
- डिटेक्शन काउंट, रेश्यो-टेस्ट पास काउंट, RANSAC इनलायर काउंट/रेशियो, इमेज ग्रिड सेल्स में वितरण
- मीडियन और अपर-परसेंटाइल सैम्पसन दूरी और रीप्रोजेक्शन त्रुटि, पॉजिटिव-डेप्थ रेट, ट्रायंगुलेशन-एंगल वितरण
- H बनाम E/F के लिए सपोर्ट काउंट और रोबस्ट स्कोर, और मॉडल के स्वीकार या अस्वीकार होने का कारण
- अनुमानित रोटेशन का परिमाण, ट्रांसलेशन दिशा की अस्थायी निरंतरता, स्केल किए गए बाहरी सेंसर के साथ संगति
- एक्सपोज़र समय, गेन, IMU कोणीय वेग, बाएँ/दाएँ समय ऑफ़सेट, ब्लर मेट्रिक, इमेज मास्क रेश्यो
ग्राउंड ट्रुथ उपलब्ध होने पर अनुसंधान या उत्पाद मूल्यांकन के लिए, सापेक्ष रोटेशन त्रुटि, ट्रांसलेशन-दिशा त्रुटि, ट्रेजेक्टरी ATE/RPE, और निरपेक्ष/सापेक्ष गहराई त्रुटि को अलग-अलग रिपोर्ट करें। क्योंकि मोनोक्युलर टू-व्यू ट्रांसलेशन स्केल-अस्पष्ट है, इसलिए स्पष्ट रूप से बताएं कि त्रुटि नॉर्मलाइज़ेशन के बाद है या Sim(3) अलाइनमेंट के बाद। औसत से विफल फ़्रेमों को बाहर करने के बजाय, यह बताना कि प्रत्येक विफलता किस डिजनरेसी या विज़ुअल स्थिति के अंतर्गत हुई, सिस्टम की सीमाओं को अधिक ईमानदारी से दर्शाता है।
13. हाल के घटनाक्रम: क्या लर्निंग ने ज्योमेट्री की जगह ले ली है?
लर्निंग-आधारित कीपॉइंट्स और डिस्क्रिप्टर्स (सुपरपॉइंट), कोर्स-टू-फाइन मैचर्स (LoFTR), और सामान्य-उद्देश्यीय कॉरेस्पोंडेंस एस्टिमेशन (लाइटग्लू और इसी तरह के) कम टेक्सचर या व्यूप्वाइंट परिवर्तन के तहत क्लासिकल डिस्क्रिप्टर्स की तुलना में अधिक संभावित मैच उत्पन्न कर सकते हैं। लेकिन नेटवर्क द्वारा लौटाए गए कॉरेस्पोंडेंस अभी भी गलत हो सकते हैं, और कैमरा मोशन, प्लेन, रोलिंग शटर और स्केल की भौतिक अस्पष्टताएँ दूर नहीं होती हैं। व्यावहारिक SfM/SLAM में, एक हाइब्रिड सेटअप जो E/F/H के मजबूत अनुमान और बंडल एडजस्टमेंट के माध्यम से एक लर्नड मैचर के आउटपुट को सत्यापित करता है, व्यावहारिक विकल्प बना हुआ है।
व्यापक स्तर पर, NeRF और 3D गॉसियन स्प्लैटिंग जैसी न्यूरल/स्पष्ट दृश्य निरूपण प्रणालियाँ भी कई दृश्यों में एकरूपता का लाभ उठाती हैं। ये आकर्षक नवीन-दृश्य संश्लेषण को सक्षम बनाती हैं, लेकिन कैमरा पोज़ और अवलोकन ज्यामिति की गुणवत्ता के प्रति संवेदनशील होती हैं, और कई कार्यान्वयन COLMAP से प्राप्त पोज़ के साथ आरंभ होते हैं। बड़े पैमाने पर, गतिशील और परावर्तक वातावरणों के लिए पत्राचार, गहराई, विभाजन, जड़त्वीय डेटा और समय मॉडल के संयुक्त अनुमान पर शोध जारी है।
इसलिए, किसी नए मॉडल को अपनाने का निर्णय केवल इस आधार पर नहीं होना चाहिए कि "क्या ORB की तुलना में मिलान की संख्या बढ़ी है" - इसमें पोस्ट-एस्टिमेशन इनलायर वितरण, पोज़ त्रुटि, कंप्यूट विलंबता, GPU आवश्यकताएँ, प्रशिक्षण स्थितियों के बाहर विफलता और लाइसेंसिंग जैसे कारकों को भी ध्यान में रखना चाहिए। ज्यामिति कोई अप्रचलित पूर्व-प्रसंस्करण चरण नहीं है; यह अभी भी वह सत्यापनकर्ता है जो वास्तविक 3D संरचना के विरुद्ध सीखे गए मॉडल के आउटपुट की जाँच करता है।
14. निष्कर्ष
एपिपोलर ज्यामिति वह ढांचा है जो दो छवियों के बीच पत्राचार को "सबसे समान दिखने वाले बिंदुओं" से "एकल कैमरा गति द्वारा व्याख्या किए जा सकने वाले बिंदुओं" तक ले जाता है। यदि आंतरिक मान ज्ञात हैं, तो आप E=[\mathbf{t}]_\times R के माध्यम से सापेक्ष स्थिति की गणना करते हैं; यदि नहीं, तो आप F के साथ एपिपोलर रेखाओं और पत्राचारों की पुष्टि करते हैं। 8-बिंदु एल्गोरिदम समझ और आरंभीकरण के लिए आधार है, 5-बिंदु एल्गोरिदम मजबूत अनुमान के लिए एक कुशल न्यूनतम सॉल्वर है, RANSAC वह तंत्र है जो आउटलायर्स को मानता है, और त्रिभुजीकरण और बंडल समायोजन 3D में प्रवेश का सेतु हैं।
हालांकि, जब कोई लंबन नहीं होता है, केवल एक समतल होता है, शुद्ध घूर्णन होता है, कई गतिशील वस्तुएं होती हैं, या भारी विरूपण/अतुल्यकालिकता होती है, तो लौटाया गया मैट्रिक्स भौतिक रूप से सार्थक गहराई या अनुवाद की गारंटी नहीं देता है। होमोग्राफी के आधार पर मॉडल चयन को डिज़ाइन करना, अंशांकन स्थितियों का प्रबंधन करना, पुनर्प्रक्षेपण त्रुटि और धनात्मक गहराई की जाँच करना, और बाह्य पैमाने के साथ इन सभी को एक ही पाइपलाइन में एकीकृत करना ही पुनरुत्पादनीय कंप्यूटर विज़न की ओर ले जाता है।
क्या एक उपध्रुवीय रेखा किसी मिलान को विशिष्ट रूप से निर्धारित करती है?
यह खोज को एक रेखा तक सीमित कर देती है।
छवि साक्ष्य से ही बिंदु का स्थान निर्धारित किया जा सकता है, और पुनरावृत्ति या अवरोध से अस्पष्टता उत्पन्न हो सकती है। ## संदर्भ (प्राथमिक स्रोत और आधिकारिक दस्तावेज़) - [हार्टले और ज़िसरमैन, कंप्यूटर विज़न में मल्टीपल व्यू ज्योमेट्री (लेखक का आधिकारिक पृष्ठ)](https://www.robots.ox.ac.uk/~vgg/hzbook/) - [लॉन्गेट-हिगिंस, दो प्रक्षेपणों से एक दृश्य के पुनर्निर्माण के लिए एक कंप्यूटर एल्गोरिदम (1981, रॉयल सोसाइटी)](https://royalsocietypublishing.org/doi/10.1098/rspa.1981.0136) - [हार्टले, आठ-बिंदु एल्गोरिदम के बचाव में (IEEE TPAMI, 1997)](https://doi.org/10.1109/34.601246) - [निस्टर, पांच-बिंदु सापेक्ष मुद्रा समस्या का एक कुशल समाधान (IEEE TPAMI, 2004)](https://doi.org/10.1109/TPAMI.2004.17) - [फिशलर और बोल्स, रैंडम सैंपल कंसेंसस (कम्युनिकेशन्स ऑफ द एसीएम, 1981)](https://doi.org/10.1145/358669.358692) - [ओपनसीवी — एपिपोलर ज्योमेट्री ट्यूटोरियल](https://docs.opencv.org/4.x/da/de9/tutorial_py_epipolar_geometry.html) - [ओपनसीवी — कैलिब3डी: फाइंड एसेंशियल मैट / रिकवर पोज़](https://docs.opencv.org/4.x/d9/d0c/group__calib3d.html) - [कोलमैप आधिकारिक प्रलेखन](https://colmap.github.io/) - [शॉनबर्गर और फ्राम, स्ट्रक्चर-फ्रॉम-मोशन रिविजिटेड (सीवीपीआर 2016)](https://openaccess.thecvf.com/content_cvpr_2016/html/Schoenberger_Structure-From-Motion_Revisited_CVPR_2016_paper.html) - [सार्लिन एट अल., लाइटग्लू (आईसीसीवी 2023)](https://openaccess.thecvf.com/content/ICCV2023/html/Lindenberger_LightGlue_Local_Feature_Matching_at_Light_Speed_ICCV_2023_paper.html)
टिप्पणियाँ
पहले लॉग इन करें।
अभी कोई डेटा नहीं है।