2012-05-20 18 views
11

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

मैं अब तक जो साझा करता हूं उसे साझा करूंगा।

OpenCV

  • सबसे उन्नत एक और सबसे लोकप्रिय की तरह लगता है।

  • कार्यों की सबसे बड़ी संख्या प्रदान

  • यह पश्चगामी संगतता के साथ समस्या थी

  • तेज है (कम से कम इतना मैंने सुना है लेकिन मैं इसके बारे में शून्य जानकारी है)

  • सबसे बड़ी है इसके बारे में किताबों की मात्रा (कम से कम सी ++ संस्करण के लिए)

जावासीवी

  • opencv

FastCv

  • इसके पीछे क्वालकॉम के साथ नए सहित कुछ अन्य पुस्तकालयों के लिए आवरण है।

Wikitude

  • इस augmentedreality के लिए लेकिन इसके मूल में अधिक है अभी भी कंप्यूटर दृष्टि है।

जैसा कि आप देख सकते हैं कि मेरे पास इसके बारे में थोड़ी सी जानकारी है और प्रत्येक पुस्तकालय के लिए अपने स्वयं के परीक्षण करने से मेरे वर्तमान कंप्यूटर दृष्टि कौशल से काफी दूर है।

दयालु संबंध, पीटर।

+1

किसी और ने पहले इसी तरह की परियोजना पर काम किया: http: //www.cs.brown।edu/courses/csci1290/परिणाम/अंतिम/sbnguyen/ –

+0

@ सैमुएलऑडेट आपको इसे आधिकारिक उत्तर के रूप में रखना चाहिए ताकि मैं इसे प्रतिनिधि बना सकूं! :) – Peter

+0

@ सैमुएलऑडेट अब इसे देख रहा है ऐसा लगता है कि लिंक में जानकारी पुरानी है। – Peter

उत्तर

24

मूल रूप से दो विकल्प हैं: OpenCV और FastCV

OpenCV FastCV की तुलना में बहुत अधिक कार्यक्षमता के साथ एक अधिक परिपक्व पुस्तकालय है। कई कंप्यूटर दृष्टि कार्यों के लिए आप फास्टसीवी में केवल सबसे बुनियादी कार्यक्षमता पा सकते हैं, जबकि आप ओपनसीवी में उपलब्ध लगभग सभी लोकप्रिय विकल्प प्राप्त कर सकते हैं। उदाहरण के लिए उपलब्ध फीचर डिटेक्टरों की जांच करें। ओपनसीवी में हैरिस, एसयूआरएफ, सिफ्ट, फास्ट इत्यादि हैं। दूसरी ओर फास्टसीवी, केवल हैरिस और फास्ट है। ओपनसीवी में डेस्कटॉप कंप्यूटर और मोबाइल कंप्यूटिंग डिवाइस सहित विभिन्न एचडब्ल्यू के लिए हार्डवेयर अनुकूलन शामिल हैं। डेस्कटॉप में ओपनसीवी का उपयोग करने की क्षमता आपको अधिक लचीला विकास विकल्प प्रदान करती है, क्योंकि आप मोबाइल विकास पर काम करना शुरू करने से पहले एक तेज डेस्कटॉप कंप्यूटर पर कोड को ट्वीक और टेस्ट कर सकते हैं। इसके अलावा ओपनसीवी को a Khronos Computer Vision Group Proposal का हिस्सा माना जाता है। इसलिए, अगर यह स्वीकृत हो जाता है तो OpenCV कंप्यूटर दृष्टि के लिए मानक API बन सकता है। जहां तक ​​मैं देख सकता हूं, फास्टसीवी स्नैपड्रैगन सीपीयू के लिए बेहतर अनुकूलन प्रदान करता है। यह अल्पावधि में निर्णय में एक महत्वपूर्ण भूमिका निभा सकता है, लेकिन मुझे यकीन है कि ओपनसीवी अंतराल को बहुत तेजी से बंद कर देगा, यदि कोई हो।

यदि आप ओपनसीवी पथ चुनते हैं, तो दो उप-पथ हैं: एंड्रॉइड एसडीके के साथ एंड्रॉइड एनडीके बनाम जावासीवी के साथ ओपनसीवी। जावासीवी जावासीपीपी के आधार पर ओपनसीवी के आसपास एक रैपर है। जावासीवी ज्यादातर सी एपीआई लपेटता है, हालांकि ओपनसीवी ऑब्जेक्ट ओरिएंटेड सी ++ एपीआई भी प्रदान करता है। उदाहरण के लिए, C++ API स्वचालित रूप से अप्रयुक्त स्मृति को रिलीज़ करता है। हालांकि, सी एपीआई (इसलिए जावासीवी) के लिए आपको अप्रयुक्त इमेजरी मैन्युअल रूप से रिलीज़ करने की आवश्यकता होती है। जब भी आपको जावासीवी में कोई समस्या आती है, तो समस्या से निपटना मुश्किल होता है, क्योंकि जांच के लिए बहुत सारे संकेत हैं। जब आप ओपनसीवी का उपयोग सीधे करते हैं तो समस्याएं ढूंढना आसान होता है। हालांकि, एंड्रॉइड के मामले में, एनडीके की अतिरिक्त कठिनाई को भुलाया नहीं जाना चाहिए।

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

+0

आपको धन्यवाद, यह वह जवाब था जिसे मैं कम या ज्यादा ढूंढ रहा था। – Peter

+0

बीटीडब्ल्यू, हम सीधे एनडीके का उपयोग करने के बजाय जावासीपीपी का उपयोग कर सकते हैं। –

+0

यह ध्यान देने योग्य है कि एसआईएफटी और एसयूआरएफ दोनों पेटेंट किए गए हैं और वाणिज्यिक उपयोग के लिए स्वतंत्र नहीं हैं। पता नहीं लेकिन संभवतः यही कारण है कि फास्टसीवी उन्हें छोड़ देता है। –

5

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

लेकिन जावासीवी पर कोई समृद्ध दस्तावेज नहीं है, लेकिन ओपनसीवी है। तो आप OpenCV दस्तावेज़ों से प्रासंगिक विधियां पा सकते हैं और जावासीवी (समान विधि नाम) में उन लोगों का उपयोग कर सकते हैं।

here पर एक पूरा दस्तावेज़ है। यह ग्रहण - एंड्रॉइड पर्यावरण पर JavaCV को सेटअप करने के तरीके के बारे में चर्चा है।

+1

उत्तर के लिए धन्यवाद, लेकिन मैं पुस्तकालय का उपयोग करने के लिए नहीं देख रहा था, लेकिन शीर्षक कह रहा है कि मैं सामान्य संपीड़न की तलाश में हूं। – Peter

7

मैं ओपनसीवी का उपयोग करूंगा क्योंकि यह अभी सबसे अच्छा कंप्यूटर दृष्टि पुस्तकालय है। आप अपने कार्यों को सी ++ में प्रोग्राम करेंगे, और फिर आप जेएनआई लाइब्रेरी का उपयोग करके एंड्रॉइड एप्लिकेशन को संकलित करेंगे।आपके पास official documentation पर ऐसा करने के बारे में जानकारी है।

मैंने इस कॉन्फ़िगरेशन के साथ काम किया है और एंड्रॉइड में ओपनसीवी प्रदर्शन वास्तव में अच्छा है। यदि आप फिक्स्ड-पॉइंट अंकगणितीय में कुछ फ़ंक्शन करते हैं तो आपको लाभ दिखाई देंगे। गुड लक

+1

हाय @ jav_Rock आपके उत्तर के लिए धन्यवाद, लेकिन जैसा कि मैंने उपरोक्त बताया है, मैं वास्तव में कुछ गंभीर तुलना की तलाश में हूं। – Peter

3

विज़ीर ने काफी अच्छी तरह उत्तर दिया लेकिन मैं इस धारणा के तहत हूं कि उनके विश्लेषण में कोई गलती है। मुझे लगता है कि उसे पता नहीं है कि ओपनसीवी के पास ओपनसीवी 4 एंड्रॉइड नामक एंड्रॉइड के लिए एक संस्करण है। यह C++ कार्यक्षमता के लिए जावा रैपर है, जिसका अर्थ है कि आप एंड्रॉइड एनडीके और जावा में प्रोग्राम सबकुछ का उपयोग करने से बच सकते हैं। इससे जावासीवी "गैर-आधिकारिक" लाइब्रेरी अनावश्यक हो जाएगी, इस तथ्य को छोड़कर कि यह ओपनसीवी लपेटने के अलावा, कई अन्य अच्छे सीवी पुस्तकालयों को भी लपेटता है।

संपादित करें:

यह OpenCV की सिफारिश के बारे में वज़ीर निष्कर्ष नहीं बदलता है, यह वास्तव में अधिक अंक यह चुनने की ओर कहते हैं।

1

एंड्रॉइड पर 0Vपर सीवी के लिए एक नया विकल्प है। एपीआई com.google.android.gms.vision के माध्यम से उजागर किया गया है और आपको मनमानी छवि बिटमैप दिए जाने के विभिन्न प्रकार की वस्तुओं (चेहरे, बारकोड और चेहरे की विशेषताओं) का पता लगाने देता है।

0

ओपनसीवी के साथ शुरू करें, और उसके बाद पोर्ट ट्रैकिंग, रूपांतरण, फैलाव/ईरोड, और शायद एसवीएम जैसे महत्वपूर्ण कार्यों को पोर्ट करें। एंड्रॉइड के लिए संकलन के मामले में उन कॉल को #ifdef __ANDROID__ के साथ लपेटें, फिर बस फास्टसीवी समकक्ष को कॉल करें। अमूर्त आपका मित्र है।

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