2012-04-17 11 views
5

के माध्यम से, अनलिब्रेटेड कैमरों का संशोधन, मैं इमगु/ओपनसीवी के साथ किनेक्ट कैमरा और बाहरी कैमरा की अंशांकन करने की कोशिश कर रहा हूं। मैं अटक गया हूं और मैं वास्तव में किसी भी मदद की सराहना करता हूं।मौलिक मैट्रिक्स

मैंने इसे मौलिक मैट्रिक्स, यानी एपिप्लोर ज्यामिति के माध्यम से किया है। लेकिन नतीजा यह नहीं है जैसा कि मैंने उम्मीद की है। परिणाम छवियां काला हैं, या बिल्कुल कोई समझ नहीं है। मैक्स और मैपी पॉइंट आमतौर पर अनंत या अनंत के बराबर होते हैं, या सभी 0.00 के बराबर होते हैं, और शायद ही कभी नियमित मान होते हैं। छवियों के सेट से

1.) ढूँढें छवि अंक छवि अंक के दो सरणियों मिल (एक हर कैमरे के लिए):

यह मैं कैसे सुधार करने की कोशिश की है। मैंने इसे शतरंज और FindChessboardCorners फ़ंक्शन के साथ किया है।

2.) मौलिक मैट्रिक्स का पता लगाएं

CvInvoke.cvFindFundamentalMat(points1Matrix, points2Matrix, 
_fundamentalMatrix.Ptr, CV_FM.CV_FM_RANSAC,1.0, 0.99, IntPtr.Zero); 

मैं छवियों की, या बस को सुधारने की कोशिश कर दो छवियों से पूरे सेट से सभी एकत्र अंक पारित है?

3.) ढूँढें homography मैट्रिक्स

CvInvoke.cvStereoRectifyUncalibrated(points11Matrix, points21Matrix, 
_fundamentalMatrix.Ptr, Size, h1.Ptr, h2.Ptr, threshold); 

4.) प्राप्त mapx और mapy

double scale = 0.02; 
CvInvoke.cvInvert(_M1.Ptr, _iM.Ptr, SOLVE_METHOD.CV_LU); 

CvInvoke.cvMul(_H1.Ptr, _M1.Ptr, _R1.Ptr,scale); 
CvInvoke.cvMul(_iM.Ptr, _R1.Ptr, _R1.Ptr, scale); 
CvInvoke.cvInvert(_M2.Ptr, _iM.Ptr, SOLVE_METHOD.CV_LU); 
CvInvoke.cvMul(_H2.Ptr, _M2.Ptr, _R2.Ptr, scale); 
CvInvoke.cvMul(_iM.Ptr, _R2.Ptr, _R2.Ptr, scale); 

CvInvoke.cvInitUndistortRectifyMap(_M1.Ptr,_D1.Ptr, _R1.Ptr, _M1.Ptr, 
mapxLeft.Ptr, mapyLeft.Ptr) ; 

मैं यहाँ एक समस्या है ... के बाद से मैं उपयोग कर रहा हूँ कैलिब्रेटेड नहीं छवियों, मेरा कैमरा मैट्रिक्स और विरूपण गुणांक क्या है? मैं इसे मौलिक मैट्रिक्स या होमोग्राफी मैट्रिस से कैसे प्राप्त कर सकता हूं?

5.) Remap

CvInvoke.cvRemap(src.Ptr, destRight.Ptr, mapxRight, mapyRight, 
(int)INTER.CV_INTER_LINEAR, new MCvScalar(255)); 

और यह अच्छा परिणाम लौटने नहीं है। अगर कोई मुझे बताएगा कि मैं क्या गलत कर रहा हूं तो मैं सराहना करता हूं।

मैंने छवियों के 25 जोड़े, और शतरंज पैटर्न आकार 9x6 सेट किया है।

उत्तर

0

O'Reilly प्रकाशन से "लर्निंग ओपनसीवी" पुस्तक, इस विशिष्ट विषय को समर्पित दो पूर्ण अध्याय हैं। दोनों ओपनसीवी के शामिल दिनचर्या का उपयोग करते हैं cvCalibrateCamera2() और cvStereoCalibrate(); ये दिनचर्या कोड पर रैपर हैं जो ओपनसीवी पुस्तकालयों को बनाए रखने वाले लोगों द्वारा अधिक अच्छी तरह से डीबग किए जाने के अतिरिक्त लाभ के साथ यहां लिखे गए कार्यों के समान ही हैं। जबकि वे सुविधाजनक हैं, दोनों को नियमित रूप से आवश्यक इनपुट प्राप्त करने के लिए प्रीप्रोकैसिंग की थोड़ी सी आवश्यकता होती है। वास्तव में एक नमूना कार्यक्रम हो सकता है, ओपनसीवी वितरण की नमूने निर्देशिका में कहीं गहरा है, जो इन रूटीन का उपयोग करता है, उदाहरण के साथ कि कैसे शतरंज छवि से अंशांकन/इंट्रिनिक्स मैट्रिक्स में जाना है। यदि आप इनमें से किसी भी स्थान पर गहराई से विचार करते हैं, तो मुझे यकीन है कि आप देखेंगे कि आप विशेषज्ञों से सलाह के साथ अपना लक्ष्य कैसे प्राप्त कर सकते हैं।

0

सीवी :: findFundamentalMat काम नहीं कर सकता है यदि आपके छवि बिंदुओं का आंतरिक पैरामीटर एक पहचान मैट्रिक्स है, दूसरे शब्दों में, यह असुरक्षित छवि बिंदुओं के साथ काम नहीं कर सकता

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