2013-10-06 9 views
5

मैं ओपनसीवी के साथ एक स्टीरियो जोड़ी छवियों से गहराई का अनुमान लगाने की कोशिश कर रहा हूं।असमानता मानचित्र से ओपनसीवी गहराई अनुमान

   (Baseline*focal) 
depth =  ------------------ 
      (disparity*SensorSize) 

मैं ब्लॉक मिलान तकनीक का इस्तेमाल किया दो rectificated छवियों में एक ही अंक खोजने के लिए: मैं असमानता मानचित्र और गहराई आकलन के रूप में प्राप्त किया जा सकता है। ओपनसीवी कुछ ब्लॉक मिलान पैरामीटर सेट करने की अनुमति देता है, उदाहरण के लिए BMState->numberOfDisparities

के बाद ब्लॉक मिलान प्रक्रिया:

cvFindStereoCorrespondenceBM(frame1r, frame2r, disp, BMState); 
cvConvertScale(disp, disp, 16, 0); 
cvNormalize(disp, vdisp, 0, 255, CV_MINMAX); 

मैं गहराई मूल्य पाया के रूप में:

if(cvGet2D(vdisp,y,x).val[0]>0) 
    { 
    depth =((baseline*focal)/(((cvGet2D(vdisp,y,x).val[0])*SENSOR_ELEMENT_SIZE))); 
    } 

लेकिन obtaied गहराई मूल्य BMState->numberOfDisparities का मूल्य की वजह से पिछले फार्मूले के साथ obtaied मूल्य से अलग है जो परिणाम मूल्य बदलता है।

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

धन्यवाद

उत्तर

4

सरल सूत्र मान्य है यदि और केवल यदि सही करने के लिए छोड़ दिया कैमरे से प्रस्ताव एक शुद्ध अनुवाद है (विशेष रूप से, क्षैतिज छवि धुरी के समानांतर)।

अभ्यास में यह शायद ही कभी मामला है। उदाहरण के लिए, उदाहरण के लिए, rectifying छवियों के बाद मिलान करने के लिए, यानी एक ज्ञात मौलिक मैट्रिक्स का उपयोग करके उन्हें युद्ध करने के बाद, ताकि समान पिक्सेल एक ही पंक्ति से संबंधित हो। एक बार जब आप पर संशोधित छवियों पर मेल खाते हैं, तो आप उन्हें संशोधित वार के विपरीत उपयोग करके मूल छवियों पर रीमेप कर सकते हैं, और फिर दृश्य को पुनर्निर्माण के लिए 3 डी स्पेस में त्रिकोण बना सकते हैं। ओपनसीवी के पास ऐसा करने का दिनचर्या है: reprojectImageTo3d

+0

आपके उत्तर के लिए थक्स, मैं दो संशोधित छवियों को ब्लॉक मिलान प्रक्रिया में देता हूं, इसलिए इस सूत्र को सही काम करना चाहिए? अब मैं reprojectImageTo3D फ़ंक्शन का उपयोग करने का प्रयास करूंगा। इटालियन संस्करण: डल नोम क्रेडिटो चे टू सिया इटालियनो, क्विंडी प्रति यून मैग्गीर चियारेज़ा (प्रति मेरे); से उपयोग करने के लिए आवेदन कर रहे हैं और अधिक जानकारी के लिए आवेदन कर रहे हैं? सेव उपयोग करने के लिए ReprojectImageTo3D dovrei estrapolare soltanto il valore z? Grazie प्रति ला risposta। – Speed87

+0

परिभाषित करें "काम करना चाहिए"? समानांतर कैमरा सूत्र आपको एक आदर्श कैमरे के संबंध में दिए गए पिक्सेल पर गहराई देता है जो संशोधित छवि को देखता है। इसका पुनर्निर्माण परियोजनात्मक रूप से होगा, लेकिन मेट्रिक रूप से सटीक नहीं होगा। [हाँ, मैं इतालवी बोलता हूं, लेकिन यह एक अंग्रेजी-केवल मंच है] –

0

ऊपर उल्लिखित सूत्र कैमरा कैमरे के रूप में काम नहीं करेगा और छवि विमान समान नहीं है यानी कैमरा कुछ ऊंचाई पर स्थित होगा और जिस विमान को कैप्चर किया जाएगा वह जमीन पर होगा । तो, आपको इस सूत्र में थोड़ा बदलाव करना है। आप इन असमानता मानों और बहुपदवक्र फिटिंग पर ज्ञात दूरी को फिट कर सकते हैं। इससे आप गुणांक प्राप्त करेंगे जिन्हें अन्य अज्ञात दूरी के लिए उपयोग किया जा सकता है। दूसरा तरीका रैप मैट्रिक्स और reprojectimageTo3d (Opencv API) का उपयोग करके 3 डी पॉइंट क्लाउड बनाना है।

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