2011-07-15 17 views
14

पर कैमरे से दूरी ढूंढना मैं वेबकैम से एक इंच के सफेद क्षेत्र में दूरी की गणना करने के लिए ओपनसीवी का उपयोग करके एक प्रोग्राम लिखने की कोशिश कर रहा हूं। मुझे लगता है कि यह बहुत आसान होना चाहिए, लेकिन किसी भी कारण से मैं एक खाली चित्र खींच रहा हूं। समय से पहले मदद के लिए धन्यवाद।ज्ञात आकार

+0

क्या आपने अपने सिस्टम को "कैलिब्रेटिंग" करने का प्रयास किया है? मेरा मतलब है कि आप पिक्सेल आकार को माप सकते हैं जब क्षेत्र 50 सेमी, 1 मीटर, 2 मीटर वेबकैम से दूर है, और उसके बाद अंशांकन डेटा के वास्तविक समय माप की तुलना करें? –

+0

यह एक अच्छा विचार है, लेकिन अगर मैं एक क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन बनाने की योजना बना रहा हूं जो विभिन्न वेबकैम के सभी प्रकारों पर चलाया जाएगा, तो क्या प्रत्येक अलग-अलग कैमरे को इसकी अपनी अंशांकन की आवश्यकता होगी? या एक ही गुणवत्ता के विभिन्न कैमरे (कहें, उदाहरण के लिए वीजीए) गेंद को प्रत्येक दूरी पर पिक्सेल की एक ही संख्या के रूप में देखेंगे? –

+0

दुर्भाग्य से आपको प्रत्येक कैमरे के लिए अंशांकन की आवश्यकता होगी, क्योंकि बहुत कम लोगों के पास "दृष्टि का कोण" होता है। कुछ दूसरों की तुलना में अधिक चौड़े कोण (ज़ूम किए गए) हैं, उदाहरण के लिए यहां देखें: http://www.tomshardware.com/reviews/webcam-quality-test-shootout,878-10.html। तो मैं समझता हूं कि यह सबसे अच्छा समाधान नहीं है। –

उत्तर

23

आप कैमरा कोण को कैलिब्रेट करने और दूरी खोजने के लिए त्रिभुज समानता का उपयोग कर सकते हैं।
आप अपनी गेंद का आकार जानते हैं: D इकाइयां (उदा। सेमी)। इसे एक ज्ञात दूरी Z पर रखें, कैमरे के सामने 1 मीटर = 100 सेमी, और इसकी स्पष्ट चौड़ाई पिक्सेल में मापें। इस चौड़ाई को d पर कॉल करें।
कैमरे की फोकल लम्बाई f (जो कैमरे से कैमरे से थोड़ा अलग है) तो f=d*Z/D है।

जब आप इस कैमरे के साथ फिर से इस गेंद देखते हैं, और अपनी स्पष्ट चौड़ाई d' पिक्सल, तो त्रिकोण समानता के आधार पर है, आप जानते हैं कि f/d'=Z'/D और इस तरह: Z'=D*f/d' जहां Z' कैमरे से गेंद की वर्तमान दूरी है।

+2

क्या समस्या कैमरे की फ़ोकल लंबाई प्राप्त नहीं कर रही है? आपके स्मार्ट फोन का कैमरा कैलिब्रेशन आपको मीटर के संदर्भ में फोकल लम्बाई नहीं देता है, लेकिन एक्स-वाई अक्षों पर पिक्सेल के मामले में। वे एक स्केलिंग कारक से गुणा किया गया है। –

+0

पहला पैराग्राफ बताता है कि पिक्सेल में फोकल लम्बाई कैसे प्राप्त करें। त्रिभुज समानता अनिवार्य रूप से पिक्सेल से मीटर तक रूपांतरण स्केलिंग कारक पाती है। –

+0

मैं देख रहा हूं कि आप क्या कह रहे हैं। फिर भी, छवि सेंसर आकार और कैलिब्रेशन के डेटाबेस को केवल उसी समस्या के बारे में नहीं रखना है? –

0

मेरे दिमाग में आपको एक कैमरा मॉडल = एक अंशांकन मॉडल की आवश्यकता होगी यदि आप दूरी या अन्य चीजों को मापना चाहते हैं (असली दुनिया)। पिन्होल कैमरा मॉडल सरल, रैखिक है और अच्छे परिणाम देता है (लेकिन विकृतियों को सही नहीं करेगा, (चाहे वे रेडियल या टेंगेंशियल हों)

यदि आप इसका उपयोग नहीं करते हैं, तो आप गणना करने में सक्षम होंगे असमानता-गहराई का नक्शा, (उदाहरण के लिए यदि आप स्टीरियो दृष्टि का उपयोग करते हैं) लेकिन यह सापेक्ष है और यह आपको पूर्ण माप नहीं देता है, केवल पीछे क्या है और किसी अन्य वस्तु के सामने क्या है ....

इसलिए, मुझे लगता है कि जवाब है: आपको इसे किसी भी तरह से कैलिब्रेट करने की आवश्यकता होगी, शायद आप उपयोगकर्ता से कैमरे के क्षेत्र तक पहुंचने के लिए कह सकते हैं जब तक कि सभी छवि विमान गेंद से पूरी तरह से भर नहीं जाते हैं, और गेंद माप के पहले ज्ञात के साथ, आप फिर दूरी की गणना करने में सक्षम हो जाएगा ....

जूलियन,

संबंधित मुद्दे