2012-10-19 11 views
9

मैं OpenCV (findChessboard आदि) के साथ अपने कैमरे कैलिब्रेटेड है तो मेरे पास है: - कैमरा विकृति गुणांकों & intrinsics मैट्रिक्स - कैमरा पोज जानकारी (अनुवाद & रोटेशन, separatedly अभिकलन अन्य साधनों के माध्यम से) यूलर & एक 4x4 कोण के रूप में - कैमरा सीमा के भीतर 2 डी अंकOpenCV में, 3 डी दुनिया इकाई वेक्टर के लिए 2 डी छवि बिंदु परिवर्तित

मैं कैसे दुनिया में उनका कहना है 3 डी इकाई वैक्टर में इन 2 डी अंक में बदल सकते हैं? मैं सीवी :: undistortPoints का उपयोग कर की कोशिश की, लेकिन वह यह करने के लिए नहीं लगता है (केवल रिटर्न 2 डी पुनः मानचित्रित अंक), और मैं वास्तव में मैट्रिक्स गणित किस विधि कैमरा मॉडल करने के लिए कैमरा intrinsics मैं के माध्यम से उपयोग करने के लिए यकीन नहीं है।

+0

क्या 2 डी अंक आप के बारे में बात कर रहे हैं? –

+0

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

उत्तर

14

एक समरूप बिंदु में अपने 2 डी बिंदु कन्वर्ट और फिर गुणा अपने कैमरे intrinsics मैट्रिक्स का प्रतिलोम द्वारा (यह एक तिहाई 1 के बराबर समन्वय दें)। उदाहरण

cv::Matx31f hom_pt(point_in_image.x, point_in_image.y, 1); 
hom_pt = camera_intrinsics_mat.inv()*hom_pt; //put in world coordinates 

cv::Point3f origin(0,0,0); 
cv::Point3f direction(hom_pt(0),hom_pt(1),hom_pt(2)); 

//To get a unit vector, direction just needs to be normalized 
direction *= 1/cv::norm(direction); 

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

  1. Undistort विरूपण के साथ समन्वय स्थापित 2 डी गुणांक
  2. (जैसा कि ऊपर दिखाया गया है) रे में कनवर्ट
  3. ले जाएँ कि रे जो कुछ भी करने के लिए आप की तरह समन्वय प्रणाली है।
+0

आप hom_pt को सामान्य करना भूल गए हैं। :) –

+0

@IanMedeiros आप इसे एक इकाई वेक्टर बनाने के लिए या 3 तत्व 1 बनाने के लिए क्या मतलब है? वेक्टर उन बिंदुओं द्वारा परिभाषित कैमरा मैट्रिक्स 3 तत्व के रूप में एक z समन्वय व्याख्या की जा सकती की प्रतिलोम से गुणा करने के बाद साथ या सामान्य के किसी भी प्रकार के बिना सही है, तो। – Hammer

+0

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

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