7

में स्पैस छवि मिलान मैं एक आईओएस ऐप बना रहा हूं, एक महत्वपूर्ण विशेषता के रूप में, छवि मिलान को शामिल करता है। समस्या यह है कि जिन छवियों को मुझे पहचानने की आवश्यकता है वे छोटे उन्मुख 10x10 प्लेक हैं जिन पर सरल बड़े पाठ हैं। वे काफी प्रतिबिंबित हो सकते हैं और बाहर होंगे (इसलिए प्रकाश की स्थिति परिवर्तनीय होगी)। नमूना छविआईओएस

enter image description here

वहाँ 15 पूल में छवि के इन प्रकार के ऊपर निर्भर करेगा और वास्तव में सब मैं पता लगाने के लिए की जरूरत पाठ है, क्रम में लॉग इन करने की जहां उपयोगकर्ता किया गया है में।

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

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

क्या कोई भी सॉफ़्टवेयर का एक टुकड़ा सुझा सकता है जो काम करेगा (जैसा कि आईओएस अनुकूल है) या पहचान का एक तरीका जो उपयोगकर्ता के लिए प्रभावी और इंटरैक्टिव/प्रसन्न होगा।

नमूना पर्यावरण: http://www.orienteeringcoach.com/wp-content/uploads/2012/08/startfinishscp.jpeg

वातावरण काफी हद तक बदल सकते हैं, मूल रूप से कहीं भी एक पट्टिका तैनात किया जा सकता है कि वे कर रहे हैं; लकड़ी या खुले क्षेत्रों में बाड़, दीवारें, और पोस्ट, लेकिन भारी सड़क पर।

+2

क्या आपके पास उनके मूल पर्यावरण में इन प्लेक की कुछ छवियां हैं, यह जानने के लिए कि हम उन्हें क्या चुनना चाहते हैं? यदि आप यहां अधिक सामान्यीकृत छवि प्रसंस्करण समस्या का कोई अच्छा समाधान नहीं प्राप्त कर सकते हैं, तो http://dsp.stackexchange.com पर लोग आपको उस हिस्से के साथ हाथ देने में सक्षम हो सकते हैं। हालांकि, वे आईओएस के लिए एक विशिष्ट समाधान का वर्णन करने में सक्षम नहीं होंगे। –

+1

आपको शायद उच्च-विपरीत छवि बनाने के लिए छवियों को प्री-प्रोसेस करने की आवश्यकता है - सभी ग्रे स्केल जानकारी को फेंकना, और छाया के लिए क्षतिपूर्ति आदि। Dsp.stackexchange.com में कुछ पॉइंटर्स हो सकते हैं। (वे इस बोर्ड की तुलना में एक बालों को "बेवकूफ" प्रश्नों के अधिक सहनशील हैं।) –

+0

मेरी रणनीति अब तक छवि को अलग कर चुकी है और कैमरे पर लगाए गए एक फसल निरीक्षण रेक्ट है। मैं उम्मीद करता हूं कि उपयोगकर्ता क्षेत्र के भीतर छवि को संरेखित करे। –

उत्तर

1

मैं एक समाधान खोजने में कामयाब रहा जो काफी अच्छी तरह से काम कर रहा है। मैं अभी तक पूरी तरह से अनुकूलित नहीं हूं लेकिन मुझे लगता है कि यह सिर्फ tweaking फिल्टर, जैसा कि बीमार बाद में समझाया गया है।

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

मुझे मुफ्त लाइब्रेरी टेस्सेक्ट (https://github.com/ldiqual/tesseract-ios-lib) उपयोग करने में आसान और अनुकूलन योग्यता के साथ मिला। सबसे पहले परिणाम बहुत यादृच्छिक थे लेकिन तेज करने और मोनोक्रोमैटिक फ़िल्टर लगाने और एक रंग उलटा पाठ को साफ करने के लिए अच्छी तरह से काम किया। इसके बाद ui पर लक्षित क्षेत्र को चिह्नित किया गया और प्रक्रिया के लिए छवि के आयताकार को काटने के लिए इसका इस्तेमाल किया गया। बड़ी छवियों पर प्रसंस्करण की गति धीमी है और यह नाटकीय रूप से कट जाती है। ओसीआर फ़िल्टर ने मुझे स्वीकार्य पात्रों को प्रतिबंधित करने की अनुमति दी और जैसे ही प्लेक मानक कॉन्फ़िगरेशन का पालन करते हैं, यह सटीकता को कम करता है।

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

2

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

  1. क्लासिक "कंप्यूटर विजन" मार्ग सुविधा निष्कर्षण और वर्गीकरण होगा:

    वर्गीकरण के लिए, मैं दो विकल्प देखें। Local Binary Patterns और HOG फीचर एक्स्ट्रेक्टर्स हैं जो मोबाइल के लिए पर्याप्त तेज़ हैं (बाद वाले से अधिक पूर्व), और वे लागू करने के लिए बहुत जटिल नहीं हैं। वर्गीकृत, हालांकि, गैर-तुच्छ हैं, और आपको शायद एक उचित आईओएस पुस्तकालय की तलाश करनी होगी।

  2. वैकल्पिक रूप से, आप छवि को बिनरराइज़ करने का प्रयास कर सकते हैं, यानी "प्लेट"/सफेद या "टेक्स्ट"/काला के रूप में वर्गीकृत पिक्सेल। फिर आप अपनी बिनराइज्ड छवि की तुलना करने के लिए प्लेक की एक बिनराइज्ड संदर्भ छवि के साथ त्रुटि-सहनशील समानता उपाय का उपयोग कर सकते हैं। chamfer distance measure एक अच्छा उम्मीदवार है। यह अनिवार्य रूप से आपकी दो बिनराइज्ड छवियों के distance transforms की तुलना करने के लिए उबलता है। यह सीधे बाइनरी छवियों की तुलना करने से गलत संरेखण के लिए अधिक सहनशील है। संदर्भ छवियों की दूरी परिवर्तन को पूर्व-गणना और डिवाइस पर संग्रहीत किया जा सकता है।

व्यक्तिगत रूप से, मैं दूसरा दृष्टिकोण आज़माउंगा। दूसरे दृष्टिकोण का ए (गैर-मोबाइल) प्रोटोटाइप अपेक्षाकृत आसान है और एक अच्छी छवि प्रसंस्करण लाइब्रेरी (ओपनसीवी, मैटलैब + छवि प्रसंस्करण टूलबॉक्स, पायथन, आदि) के साथ मूल्यांकन करना आसान है।

+0

उत्कृष्ट प्रतिक्रिया। मेरी मुख्य समस्या यह है कि मेरे पास मिलान करने वाले एल्गोरिदम को लागू करने का समय नहीं है, खासकर शून्य अनुभव से। मैं एक पूर्ण समाधान खोजने/खरीदने के लिए देख रहा हूं, जो कि मैंने अभी तक उपयोग किया है, मेरे पर्यावरण में काम करता है। आप बाइनरी वर्गीकरण के बारे में बात कर रहे हैं मुझे आशा है कि सभी पट्टियों के लिए विपरीत है। धन्यवाद। –