2011-12-29 11 views
5

मैं सी ++ के लिए दृष्टि पुस्तकालय का उपयोग करने में आसान खोजने की कोशिश कर रहा हूं। यहाँ मेरी स्थिति है: मैं एक कैमरा कंप्यूटर को interfaced है (सादगी के लिए, हालांकि, हम अभी मान सकते हैं कि छवि फ़ाइलों को कंप्यूटर पर मौजूद है) और यह है कि क्या छवियों आदर्श प्रकार दिखाई देगा:छवि विभाजन के इस मामले के लिए उपयुक्त सी ++ ओपनसीवी दृष्टि पुस्तकालय है?

enter image description here

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

मैंने पहले कभी एक दृष्टि प्रणाली का उपयोग नहीं किया है और इसलिए मैं कुछ शोध कर रहा हूं और ऐसा लगता है कि ओपनसीवी बहुत लोकप्रिय है। क्या मेरे आवेदन के लिए उपयोग करना आसान होगा, या क्या कोई और लाइब्रेरी है जिसका उपयोग वस्तुओं की स्थिति को आसानी से निर्धारित करने के लिए किया जा सकता है?

आपकी सलाह के लिए धन्यवाद!

उत्तर

4

इस विशेष छवि के लिए, आप पूर्ण रंग अंतरिक्ष में काम करने की जरूरत नहीं है, लेकिन बजाय अकेले तीव्रता ("वी" एचएसवी का हिस्सा - "मूल्य," अर्थ तीव्रता) पर काम कर सकते हैं।

enter image description here

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

ओपनसीवी में वाटरशेड एल्गोरिदम आपकी आवश्यकताओं के लिए एक अच्छा मैच हो सकता है। Otsu की विधि के बारे में सावधानी के http://www.seas.upenn.edu/~bensapp/opencvdocs/ref/opencvref_cv.htm

एक शब्द: यह दो मोड को अलग जब तीव्रता मूल्यों (या रंग मान) का एक हिस्टोग्राम एक bimodal वितरण है के लिए ठीक है, लेकिन प्राकृतिक छवियों के लिए यह सच bimodal वितरण के लिए आम नहीं है। यदि पृष्ठभूमि और/या अग्रभूमि वस्तुएं वस्तु के एक तरफ तीव्रता और/या रंग में भिन्न होती हैं, तो ओत्सु खराब प्रदर्शन कर सकता है।

Otsu निश्चित रूप से, के रूप में डिजिटल इमेज प्रोसेसिंग में गोंजालेज और वुड्स और इस विषय पर अन्य परिचयात्मक पाठ्यपुस्तकों द्वारा समझाया गया है कई मोड के लिए बढ़ाया जा सकता है। हालांकि, एक पृष्ठभूमि ढाल समस्या का कारण बनता है भले ही आप एक समय में एक जोड़ी मोड को अलग करने के लिए ओत्सु का उपयोग करते हैं।

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

एक आम चाल किनारों के पास पिक्सेल पर भरोसा करना है। आपके उदाहरण में हम एक छवि को तेज किनारों, तेज कोनों, और (उम्मीद है) वर्दी एचएसवी मान वाले क्षेत्र के रूप में देख सकते हैं। किनारों के पास नमूना पिक्सेल कई तरीकों से किया जा सकता है, जिसमें निम्नलिखित शामिल हैं:

  1. मजबूत किनारे बिंदु (कैनी या कुछ सरल तकनीक का उपयोग करके) खोजें। एज ग्रेडिएंट की दिशा के साथ, और दूरी पर +/- किनारे बिंदु से डी, (रिश्तेदार) अग्रभूमि और (सापेक्ष) पृष्ठभूमि के ग्रे स्तर का नमूना लें। दूरी डी वस्तुओं में वस्तुओं के आकार से बहुत छोटा होना चाहिए।
  2. मजबूत किनारे बिंदु खोजें। संभावित वांछित थ्रेसहोल्ड के अनुमान के रूप में किनारे बिंदुओं पर ग्रे स्तर का उपयोग करें। आपके उदाहरण में, आप दो मजबूत चोटियों के साथ बढ़ेंगे: ऑब्जेक्ट 1 और ऑब्जेक्ट 2 के बीच किनारे पर, और दूसरा ऑब्जेक्ट 2 और ऑब्जेक्ट 3 के बीच किनारे पर होगा।

चूंकि आपकी ऑब्जेक्ट्स कोनों में हैं, इसलिए आप नमूनाकरण के लिए उपयुक्त ऑब्जेक्ट सीमाओं और/या एज पिक्सल की पहचान करने में सहायता के लिए उन लोगों का उपयोग कर सकते हैं।

यदि आपके पास नाममात्र आयताकार वस्तुएं हैं, तो आप छवि में रेखाओं की पहचान करने के लिए एक आटा किनारे या RANSAC एज एल्गोरिदम का उपयोग भी कर सकते हैं, कोनों पर चौराहे ढूंढ सकते हैं।

सभी कि, ने कहा कि लगभग किसी भी प्राकृतिक वस्तुओं से जुड़े छवि एक दूसरे को आप कई जटिलताओं में चलाने के लिए जा रहे के ऊपर रखा के लिए: नाममात्र का एक उद्देश्य के पार

  • रंग और तीव्रता ढ़ाल

    • छाया लगातार रंग
    • तीखेपन अलग करता है, तो वस्तुओं ऑप्टिकल सिस्टम

    से एक अलग दूरी आप कुछ कितने वस्तु के लिए पता है कर रहे हैं के किनारों एस मौजूद हैं, आप के मीन्स तकनीक का प्रयास कर सकते हैं। http://aishack.in/tutorials/knearest-neighbors-in-opencv/

    जैसे कि जब वस्तुओं की संख्या ज्ञात नहीं है के रूप में और अधिक जटिल विभाजन कार्य, के लिए, आप का उपयोग कर सकते मीन शिफ्ट तकनीक, हालांकि मैं सरल तकनीक की कोशिश कर पहले सलाह देते हैं।

    पहला कदम और सबसे आसान फिक्स उचित प्रकाश का उपयोग करना है। प्रतिबिंब और छाया को कम करने के लिए, फैलाने वाली रोशनी का उपयोग करें। http://www.microscan.com/en-us/products/nerlite-machine-vision-lighting/cdi-illuminators.aspx

    अधिक बस, आप इस तरह स्टूडियो फोटोग्राफी में उपयोग की जाती एक या अधिक "बाउंस" रोशनी की कोशिश कर सकते: कई अनुप्रयोगों के लिए, के लिए निकटतम आदर्श फैलाना प्रकाश "बादल छाए रहेंगे दिन" प्रकाश व्यवस्था है। http://www.photography.com/articles/taking-photos/bounce-lighting/

  • 7

    ओपनसीवी निश्चित रूप से उपयोग करने योग्य दृष्टि पुस्तकालय है। मैंने इसे कुछ कंप्यूटर दृष्टि परियोजनाओं में उपयोग किया है और मेरे लिए यह उपयोग करने के लिए काफी सहज है।

    मुझे लगता है कि ऑब्जेक्ट रंग अज्ञात हैं (यदि नहीं, here's ओपनसीवी में एक विशिष्ट रंग कैसे ढूंढें इस पर एक अच्छा अच्छा ट्यूटोरियल)।

    यहाँ आपकी समस्या को हल करने के लिए एक मोटा अनुमान (मैं क्या संचालन OpenCV में लागू करने के लिए आसान है, की तर्ज पर सोच रहा हूँ) है:

    • एचएसवी colorspace में छवि परिवर्तित - रंग बहुत होना चाहिए इस क्षेत्र में अलग अलग रंग मूल्यों अगर वे उच्च विपरीत है, तो Otsu की विधि (सीमा स्वचालित रूप से निर्धारित किया जाएगा)

    • का उपयोग कर केवल ह्यू चित्र

    • सीमा छवि का इस्तेमाल करता है, तो यह पी मध्य वस्तु को बाहर निकालता है (उदा। पृष्ठभूमि पर 2 जुड़े घटक हैं) विभाजन किया जाता है। यदि आप वर्ग के आकार के हैं तो आप findContours या यहां तक ​​कि हफ़ लाइनों के लिए भी बदल सकते हैं।

    • यदि यह केवल बाहरी वस्तु को चुनता है, तो आप फिर से इसके समरूप रूप से मिल सकते हैं, रुचि का क्षेत्र (जिस चित्र पर आप काम कर रहे हैं उसका हिस्सा) सेट करें ताकि यह केवल समोच्चों के अंदर हो और भीतर की सीमा हो अन्य दो वस्तुओं के बीच सीमा खोजने के लिए फिर से छवि का हिस्सा। अंत में, एक अलग छवि पर पाए गए समोच्चों को बस अतिरंजित करें।

    • सबसे कठिन मामला यह है कि यदि यह थ्रेसहोल्ड होता है ताकि आपको केवल सबसे निचली वस्तु मिलती है। पहली नज़र में, आप ऊपर दिए गए मामले से अलग नहीं कर सकते हैं, लेकिन दूसरा (आंतरिक) थ्रेसहोल्डिंग कोई प्रासंगिक परिणाम नहीं देगा। उस स्थिति में, आप पाए गए थ्रेसहोल्ड क्षेत्र (दूसरी ऑब्जेक्ट के ह्यू) के बाहर एक ह्यू चुन सकते हैं, और इसके लिए सबसे ऊपर ऑब्जेक्ट (बस पाया) का ह्यू सेट कर सकते हैं। अब, आपको 2-ह्यू चित्र दोबारा मिलता है, जिसे आप बाहरी दो ऑब्जेक्ट्स के बीच थ्रेसहोल्ड और समरूप पाते हैं। अंत में, पिछले मामले की तरह, पाए गए समोच्चों को अतिसंवेदनशील करें।

    +0

    "रंगों में इस जगह में बहुत अलग ह्यू मान होना चाहिए" उपयोगी चाल, मुझे याद होगा। – SigTerm

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