मैं कैसे प्रोग्रामेटिक रूप से एक कैमरे को बता सकता हूं कि कहां इंगित करना है?


8

मेरे पास इस समय कोई विशेष कैमरा नहीं है, मैं बस उत्सुक हूं कि यह कैसे किया जाता है, प्रोग्रामेटिक / गणितीय रूप से।

मेरे पास एक 3 डी स्पेस है, एक आयताकार, जिसमें एक कोने में एक कैमरा ऊपर की ओर दिखता है।
मेरे पास उस आयत में एक चलती हुई वस्तु है जो अपनी वर्तमान स्थिति के निर्देशांक (x, y, z) को प्रसारित कर रही है।
मैं उन निर्देशांकों को लेना चाहता हूं और कैमरे में उस स्थिति को इंगित करने वाले निर्देशों में उनका अनुवाद करना चाहता हूं।
यह अनुवाद आम तौर पर कैसे किया जाता है?


आप यह देखना चाहते होंगे कि गेम डेवलपर्स अपने इन-गेम कैमरों को कैसे संभालते हैं। यह एक ही सिद्धांत है और उन्हें सूरज के नीचे सब कुछ से निपटना पड़ा है, इसलिए बोलने के लिए।
हरबेक

यह ध्यान देने योग्य हो सकता है कि ऑब्जेक्ट को अपने निर्देशांक को शाब्दिक 3 डी स्थान में संचारित करने की आवश्यकता नहीं है, बल्कि कैमरे के FOV में होने से संचारित हो सकता है। तब आप पैटर्न पहचान का उपयोग करके यह पता लगा सकते हैं कि ऑब्जेक्ट कहाँ स्थित है, और फिर ऑब्जेक्ट को केंद्र में रखने के लिए कैमरा को शिफ्ट करें (या अन्यथा 2 डी में मोशन वेक्टर की पहचान करके कई फ़्रेमों में स्थिति को बदलकर और उस दिशा में आगे बढ़ें) । उदाहरण के लिए, पोर्च पर मेरा पीटीजेड कैमरा गति के लिए देख रहे पोर्च को स्कैन करता है, जो गति के कारण गति नहीं करता है, और फिर गति को बंद होने तक चलती वस्तु पर लॉक करता है और उसका अनुसरण करता है।
dannysauer

मेरा उपयोग मामला एक स्पोर्ट्स एनालिटिक्स सिस्टम है, प्रत्येक खिलाड़ी एक टैग पहने हुए है जो पिच पर वर्तमान स्थिति, गति आदि को प्रसारित करता है। इसलिए हमारे पास पहले से ही स्थिति की जानकारी है। मैं निश्चित रूप से एक पैटर्न मान्यता देख लेंगे। उपयोगी लगता है।
बॉट_बॉट

जवाबों:


10

त्रिकोणमिति!

मेरा कैमरा एक DLink 5020-L है और इसमें पैन / टिल्ट कमांड हैं जो एक एपीआई के माध्यम से दिए जा सकते हैं । इसे स्थापित करने के लिए पूर्वनिर्धारित स्थिति भी है और इसे एपीआई के माध्यम से भी ट्रिगर किया जा सकता है

पूर्व init

  • अपने कैमरे की स्थिति को 0 ° पैन और 0 ° झुकाव को अपने संदर्भात्मक => में परिभाषित करें, हम इस स्थिति को कॉल करेंगे Position 1

में इस

  • अपना कैमरा ले जाएँ Position 1
  • अपने कैमरे के पैन / झुकाव को कहीं या तो 0-आरंभीकृत चर में या अपने एपीआई के माध्यम से स्टोर करें

वस्तु को देखो

  • दो विमानों, X, Y और Y, Z विमानों में अपनी वस्तु का पता लगाएँ
  • आप तब पैन (बाएं / दाएं) कोण (IoT SE में omg गणित के सूत्र प्राप्त कर सकते हैं!)

$$ \ arctan \ बिग (\ frac {y} {x} \ बिग) $$

  • आप तब झुकाव (ऊपर / नीचे) कोण प्राप्त कर सकते हैं

$$ \ arctan \ बिग (\ frac {z} {y} \ बिग) $$

  • नए पैन / झुकाव मूल्य को बचाने / अद्यतन करने के लिए मत भूलना क्योंकि आप रिश्तेदार आंदोलन के साथ काम कर सकते हैं ...

आपका कैमरा कैसे रखा गया है, इसके आधार पर आप पिछले परिणामों को नकार सकते हैं

(मेरे पास समय होने पर मैं कुछ योजनाएं जोड़ूंगा)


2
@Hardillb;) द्वारा पिटाई की गई और उनके पास बेहतर दिखने वाले सूत्र हैं ...
Goufalite

2
दुर्भाग्य से इस साइट पर लाटेक्स समर्थन उपलब्ध नहीं है। आप इसे कोडकॉग्स की तरह कहीं से निर्यात कर सकते हैं, हालांकि यदि आप चाहें तो एक विकल्प के रूप में एक छवि में। ; (संपादित करने में संकोच न के रूप में की आवश्यकता है या इसे हटाने अगर आप इसे नहीं करना चाहती मैं आप के लिए यह किया है!)
Aurora0001

आप दोनों का आपकी सहायता के लिए धन्यवाद। यही वह है जिसकी तलाश में मैं हूं।
बॉट_बॉट

मुझे लगता है कि आप इस तथ्य को ध्यान में रखना भूल गए हैं कि झुकाव कोण के लिए आर्कन को कर्ण के ऊपर z घटक के संबंध में होना चाहिए: इसे y घटक पर रखने से आप कैमरे को अपर्याप्त रूप से बढ़ा सकते हैं / कम कर सकते हैं क्योंकि कैमरा होने जा रहा है। Y- घटक और x- घटक के बीच एक सही त्रिभुज के कर्ण के साथ इंगित किया गया है, y अक्ष के साथ नहीं। यदि मैं गलत हूं तो मुझे सही करों। :) महान जवाब है, यद्यपि।
anonymous2

@ अनाम 2 जो मेरा विचार था, भी। मुझे नहीं लगता कि अभी तक प्रस्तुत कोई भी उत्तर वास्तव में सही है लेकिन मेरे पास वास्तव में यह दिखाने के लिए बैंडविड्थ नहीं है - ऐसा लगता है कि आपको चर (पैन या झुकाव) प्राप्त करने के लिए दो त्रिकोण और तीनों निर्देशांक की आवश्यकता है। आप इसे दो अलग-अलग चरम उदाहरणों को देखकर खुद को साबित कर सकते हैं: x, y, 1,1,999 का z बहुत अलग अलग पैन और 1,1,1 की तुलना में बहुत अलग झुकाव देने वाला है। Goufalite का जवाब दोनों के लिए समान पैन देता है।
द्विजुम

6

पहले से ही महान जवाब, मैं सिर्फ कुछ अन्य चीजें जोड़ना चाहूंगा जिन्हें आपको ध्यान में रखना चाहिए। जैसे कि हार्डलिब और गॉफलाइट ने पहले ही उल्लेख किया है, ऐसा करने का तरीका त्रिकोणमितीय है। मैंने कैमरे और IoT ऑब्जेक्ट का 2-डी चित्रण किया है:

यहाँ छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, कैमरे का देखने का क्षेत्र ऑब्जेक्ट से बड़ा होने वाला है - यदि निकट सीमा में नहीं है, जब ऑब्जेक्ट आगे बढ़ता है।

अब, आप कैमरे को हमेशा ऑब्जेक्ट पर केंद्रित कर सकते हैं। उस मामले में, आप केवल उन गणनाओं को ले सकते हैं जो हार्डलिब संदर्भित हैं:

ϴ = arctan(y/x)

... जो एक्स-एक्सिस से प्रति सम्मेलन कोण कोण वामावर्त होगा। आपको कोण को स्तर से दूर भी रखना होगा:

α = arctan(z / ((y^2+x^2)^1/2))

जाहिर है, आपको तीनों अक्षों में मूल स्थान पर कैमरा स्थिति के आधार पर गणना करनी होगी।

दूसरी ओर, आप कैमरे को जरूरत से ज्यादा हिलाना-डुलाना पसंद नहीं कर सकते हैं, यानी कैमरा को केवल एक बार हिलाने के लिए, वस्तु के फ्रेम से बाहर जाने के बारे में प्रतीत होता है। उस स्थिति में, आप शायद एक "दबाव" चर चाहते हैं जो फ्रेम के किनारे पर ऑब्जेक्ट को कितना करीब है, इसके आधार पर कैमरे को अपने कोण को बदलने की अधिक संभावना होगी।

यदि आप उस मार्ग पर जाते हैं, तो आपको कैमरे के दृश्य के क्षेत्र को देखने के दोनों क्षेत्रों में जानने की आवश्यकता होगी, ताकि आप यह निर्धारित कर सकें कि वस्तु की तुलना कैमरे के देखने के क्षेत्र से कहाँ है।


यह भी खूब रही! धन्यवाद, फिलहाल मैं कैमरे के क्षेत्र में वस्तु को केंद्रित रखना चाहता हूं।
बॉट_बॉट

2
जब मैं अपने कैमरे को पैन / टिल्ट करता हूं तो मेरे पास प्रत्येक क्रम के बीच कुछ विलंबता (~ 0.5 सेकंड) होती है, इस बात से सावधान रहें कि आपका कैमरा चलते समय
Goufalite

अच्छा बिंदु - यह निश्चित रूप से विचार करने के लिए कुछ है।
anonymous2

5

यह सामान्य रूप से बुनियादी त्रिकोणमिति के साथ किया जाता है ।

मूल (0,0) और ऑब्जेक्ट पर कैमरा (x, y) के साथ एक 2d फ्लैट विमान पर काम करके शुरू करें

यह देखते हुए कि x दूरी त्रिभुज के समीपवर्ती भाग होगी और y दूरी विपरीत होगी जो आपको मिलती है:

tan (कोण) = y / x

तो पैन कोण के साथ पाया जा सकता है

कोण = invTan (y / x)

आप कैमरा और ऑब्जेक्ट के बीच सीधी रेखा की दूरी (कर्ण) को भी काम कर सकते हैं:

h ^ 2 = x ^ 2 + y ^ 2

देते हुए:

h = sqrt (x ^ 2 + y ^ 2)

अब आप उसी तरह झुकाव कोण की गणना करने के लिए z ऊँचाई के साथ h दूरी का उपयोग कर सकते हैं।

एक बार जब आपके पास कोण होते हैं, तो आप इन्हें कैमरे पर पैन / झुकाव को नियंत्रित कर सकते हैं।

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