2010-08-17 9 views
5

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

I have code that successfully recognizes EAN13 barcodes (which I published on CodePlex) और यूपीसी संस्करण ए/ई को जल्द ही पालन करना चाहिए। मेरे पास दो क्षेत्र हैं जिनके बारे में मुझे चिंता है। सबसे पहले बारकोड कि एक तस्वीर है कि कुछ धुंधले या गरीब विपरीत के साथ है में हैं डिकोडिंग में है, आदि दूसरा बस एक बड़ी तस्वीर में वास्तविक बारकोड खोजने में है (अभी तुम मुझे का सिर्फ बारकोड एक तस्वीर देने के लिए है)।

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

एल्गोरिथ्म किस तरह सबसे अच्छा इस प्रकार की समस्या के लिए अनुकूल है? एआई ग्रंट काम के लिए कोई अनुशंसित पढ़ने या कोड? हां, मैं समझना चाहता हूं कि क्या हो रहा है, लेकिन मैं जरूरी नहीं कि मैं इस तरह के कोडिंग कोड के स्तर पर जाना चाहूंगा।

+3

शायद एक तंत्रिका नेटवर्क? मुझे नहीं पता। शायद मैं तंत्रिका नेटवर्क की तरह। एआई ने मुझे उन्हें पसंद करने के लिए कहा। वरना। –

+0

@ fire.eagle: मेरे लिए कोई लिंक या पॉइंटर्स? "तंत्रिका नेटवर्क" और "एएनएन" पर वेब खोज बहुत व्यापक हैं। :) – ctacke

+0

मुझे लगता है कि आपने आईफोन के लिए रेडलेज़र ऐप देखा है? –

उत्तर

8

मैं गुण एक बारकोड है के लिए खोज करने के लिए सुझाव है। कुछ मैं मन में है कि कर रहे हैं:

  1. रंग की हिस्टोग्राम के बारे में भी वितरण
  2. एक hough transformation कई समानांतर रेखाओं
  3. लाइनों की मोटाई दो अलग-अलग आयाम पाता कर में दो अलग-अलग रंगों को दर्शाता है।

कुछ अन्य?

यह होने के बाद मैं छवि को टुकड़ों में विभाजित कर दूंगा और इन विशेषताओं के साथ वर्गीकरण करूँगा, फिर परिणाम को कोबिन करें ताकि टुकड़े में बारकोड हो या नहीं।

आपकी दूसरी समस्या (धुंधली छवि) के लिए मैं भूरे रंग के 1st order derivative की गणना करने और फिर इस स्थान में रेखाओं के किनारों का पता लगाने का सुझाव दूंगा। छवि धुंधली होने पर अधिकतम व्युत्पन्न कम है लेकिन यह एक निश्चित धुंधला कारक के लिए पता लगाने योग्य होना चाहिए।

इस मदद आप करता है?

0

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

+0

छोड़ा था, जहां से "छवि प्रसंस्करण तकनीक"? मैं यहां कोड भी लिख रहा हूं। मेरे पास मेरे सेलफोन के साथ एक छवि है, मैं एक स्ट्रिंग वापस चाहता हूँ। जहां तक ​​मैं देख सकता हूं, उस सूत्र में लागू मैटलैब वह सब नहीं है। – ctacke

+0

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

4

सांसद के रूप में पहले ही उल्लेख किया आप इसके लिए आवश्यक नहीं है की जरूरत है किसी भी असली ऐ तकनीक है। Real World Haskell के अध्याय 12 पर एक नज़र डालें। यह लगभग पूर्ण बारकोड पहचानकर्ता लागू करता है। नमूना कोड हास्केल में है, लेकिन वहां बहुत सारे स्पष्टीकरण हैं, इसलिए आप शायद हास्केल अनुभव के बिना भी विचारों और चालों को समझ सकते हैं।

यदि आप इसे एआई के साथ हल करना चाहते हैं तो सबसे अच्छा शर्त शायद एएनएन का उपयोग कर रही है। दी गई समस्या के लिए मैं हाइपरनेट नामक एक बहुत ही उन्नत तकनीक का उपयोग करने की सिफारिश करता हूं।तो सवाल यह है Neural Network Size...

मैं शायद दो या तीन अलग अलग नेटवर्क का प्रयोग करेंगे मेरी व्याख्या (और लिंक) करने के लिए पहले जवाब के रूप में देखें,

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

शायद यह छवि की कुछ पूर्व प्रसंस्करण करने में भी मदद करेगा, उदाहरण के लिए आरडब्ल्यूएच में वर्णित हैं।

+0

हाइपरनेट वास्तव में दिलचस्प लगता है –

+0

हाँ, यह एक बहुत ही शक्तिशाली तकनीक है। शोध काफी गहन है और वे अक्सर बहुत रचनात्मक एक्सटेंशन/अनुप्रयोगों के साथ आते हैं। –