2008-09-25 25 views
16

मेरे पास 3 डी स्पेस में 3 अंक हैं जिनमें से मुझे सटीक स्थान पता हैं। मान लीजिए कि वे हैं: (x0,y0,z0), (x1,y1,z1) और (x2,y2,z2)3 डी से 2 डी प्रक्षेपण मैट्रिक्स

इसके अलावा मेरे पास एक कैमरा है जो इन 3 बिंदुओं को देख रहा है और मुझे कैमरे के दृश्य विमान पर उन तीन बिंदुओं के 2 डी स्थानों को पता है। तो उदाहरण के लिए (x0,y0,z0)(x0',y0') होगा, और (x1,y1,z1)(x1',y1') और (x2,y2,z2) कैमरे के दृष्टिकोण से (x2',y2') होगा।

प्रक्षेपण मैट्रिक्स को खोजने का सबसे आसान तरीका क्या है जो कैमरे के दृश्य विमान पर उन 3 डी बिंदुओं को 2 डी बिंदुओं में प्रोजेक्ट करेगा। हम कैमरे के स्थान के बारे में कुछ नहीं जानते हैं।

+0

यह मेरा होमवर्क नहीं है! –

उत्तर

12

यह आपको 3 चर में दो सेट, तीन समीकरणों के प्रत्येक देता है:

a*x0+b*y0+c*z0 = x0' 
a*x1+b*y1+c*z1 = x1' 
a*x2+b*y2+c*z2 = x2' 

d*x0+e*y0+f*z0 = y0' 
d*x1+e*y1+f*z1 = y1' 
d*x2+e*y2+f*z2 = y2' 

बस का उपयोग एक साथ समीकरणों को हल करने के लिए जो भी विधि (यह द्वारा इन का समाधान करने के लिए "भी कठिन नहीं है अपनी स्थिति में सबसे आसान है हाथ ")। फिर आपका रूपांतरण मैट्रिक्स बस है ((ए, बी, सी) (डी, ई, एफ))।

...

वास्तव में, कि अति सरल है और मान लिया गया एक कैमरा अपने 3 डी की उत्पत्ति की दिशा में रखे प्रणाली और कोई परिप्रेक्ष्य समन्वय।

परिप्रेक्ष्य के लिए, परिवर्तन मैट्रिक्स अधिक की तरह काम करता है:

   (a, b, c, d) (xt) 
(x, y, z, 1) (e, f, g, h) = (yt) 
       (i, j, k, l) (zt) 

(xv, yv) = (xc+s*xt/zt, yc+s*yt/zt) if md < zt; 

लेकिन जब से हम

a*a+b*b+c*c = e*e+f*f+g*g = i*i+j*j+k*k = 1 
a*a+e*e+i*i = b*b+f*f+j*j = c*c+g*g+k*k = 1 

होना चाहिए 4x3 मैट्रिक्स स्वतंत्रता के 12 डिग्री की तुलना में अधिक विवश है तो आप शायद 4 होना चाहिए कैमरे की स्थिति और कोण के लिए 6 चर को कवर करने के लिए 8 समीकरण प्राप्त करने के लिए अंक और 2-डी दृश्य बिंदुओं के स्केलिंग के लिए 1 और प्राप्त करने के बाद से हम "केंद्र" निर्देशांक (xc, yc) को खत्म करने में सक्षम होंगे।

तो यदि आपके पास 4 अंक हैं और अपने 2-डी दृश्य बिंदुओं को अपने प्रदर्शन के केंद्र के सापेक्ष होने के लिए बदलते हैं, तो आप 13 चरों में 14 समेकित समीकरण प्राप्त कर सकते हैं और हल कर सकते हैं।

दुर्भाग्य से, समीकरणों में से छह रैखिक समीकरण नहीं हैं। सौभाग्य से, उन समीकरणों में से सभी चर -1 और 1 के मानों तक सीमित हैं, इसलिए यह समीकरणों को हल करने के लिए संभवतः संभव है।

+0

आपका समाधान शायद मेरी समस्या का सबसे अच्छा जवाब था। समाधान के दूसरे भाग के बारे में थोड़ा और वर्णन करें। एक्सवी और वाईवी भी एमडी और जेटी और xt yt zt क्या है। बहुत बहुत धन्यवाद –

0

मुझे नहीं लगता कि एक निश्चित समाधान खोजने के लिए पर्याप्त जानकारी है। अपने कैमरे के स्थान को जानने के बिना और अपने व्यू विमान को जानने के बिना, मैट्रिस की एक अनंत संख्या है जो इस समस्या को हल कर सकती है।

+0

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

+0

मुझे कितने अंक चाहिए? –

+1

यदि आप कैमरे के दृश्य विमान (कैमरे से जेड दूरी) को जानते हैं, तो अंक का उपयोग करके, आप कैमरे की स्थिति को समझ सकते हैं क्योंकि यह केवल 3 लाइनों का चौराहे है। वहां से, मुझे लगता है कि मैट्रिक्स की अक्ष की गणना करना संभव हो सकता है। –

3

आपके कैमरे में (कम से कम) 7 डिग्री स्वतंत्रता है - स्थिति के लिए 3, अभिविन्यास के लिए 3 और एफओवी के लिए 1। मुझे यकीन है कि अगर मैं गलत हूं तो कोई मुझे सही करेगा, लेकिन ऐसा लगता है कि पूर्ण समाधान के लिए 3 अंक पर्याप्त नहीं हैं।

इस समस्या के सामान्यीकृत समाधान के लिए, ग्राफिक्स जेम्स II में 'सहसंबंध देखें' देखें।

+0

7 आमतौर पर सही है, हालांकि कुछ सिस्टम एफओवी के लिए दो पैरामीटर की अनुमति देते हैं: लंबवत और क्षैतिज। आम तौर पर वे एक दूसरे के लिए आनुपातिक होते हैं (यानी एक 4: 3 स्क्रीन = 4: 3 एफओवी अनुपात) लेकिन कुछ मामलों में यदि उपयोगकर्ता चाहता है तो इसे घटाया जा सकता है। –

2

जो आप खोज रहे हैं उसे पॉज़ अनुमान एल्गोरिदम कहा जाता है। ओपनसीवी में पीओएसआईटी कार्यान्वयन पर नज़र डालें: http://opencv.willowgarage.com/documentation/c/calib3d_camera_calibration_and_3d_reconstruction.html#posit

आपको चार या अधिक अंक की आवश्यकता होगी, और वे एक ही विमान में झूठ नहीं बोल सकते हैं।

इस कार्यान्वयन के लिए एक ट्यूटोरियल यहाँ है: http://opencv.willowgarage.com/wiki/Posit

देखभाल करो हालांकि: ट्यूटोरियल में एक वर्ग व्यूपोर्ट प्रयोग किया जाता है, इसलिए सभी दृश्य-निर्देशांक, -1 में हैं -1 1,1 श्रृंखला के लिए । इससे यह माना जाता है कि ये कैमरा समन्वय प्रणाली (पहलू अनुपात सुधार से पहले) में होना चाहिए। यह मामला नहीं है, इसलिए यदि आप व्यूपोर्ट का उपयोग उदाहरण के साथ करते हैं एक 4: 3 पहलू अनुपात तो आपके इनपुट निर्देशांक -1.3333, -1 से 1.3333,1 रेंज में होना चाहिए।

वैसे, अगर अपने अंक चाहिए एक ही तल झूठ है, तो आप भी OpenCV से CameraCalibration एल्गोरिथ्म देख सकते हैं, लेकिन यह अधिक स्थापित करने के लिए शामिल है और इनपुट के रूप में अधिक अंक की आवश्यकता है। हालांकि यह आपको आपके कैमरे की विरूपण जानकारी और आंतरिक पैरामीटर भी प्रदान करेगा।

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