OpenCV

2012-02-21 18 views
10

में किनारे का पता लगाने के बाद ब्याज का सर्वोत्तम क्षेत्र खोजें I दीवार पर 7 सेगमेंट डिस्प्ले की कुछ तस्वीरों पर ओसीआर लागू करना चाहते हैं।OpenCV

  1. गुप्त Img ग्रेस्केल को
  2. धुंधला img एक द्विआधारी img को गलत किनारों
  3. थ्रेसहोल्ड img कम करने के लिए
  4. सेट रुचि के क्षेत्र (लागू कैनी एज का पता लगाने: मेरी रणनीति का पालन है आरओआई) संख्या
  5. स्केल आरओआई और टेम्पलेट क्षेत्र से मेल खाने वाले पैटर्न पर आधार

आरओआई कैसे सेट करें ताकि मेरे प्रोग्राम को पूरी छवि के माध्यम से टेम्पलेट की तलाश न हो? मैं अपने आरओआई बेस को किनारों की संख्या पर सेट करना चाहता हूं या कुछ मददगार अगर कुछ मेरी मदद कर सकता है।

मैं कैस्केड वर्गीकरण और हार में देख रहा था लेकिन मुझे नहीं पता कि यह मेरी समस्या पर कैसे लागू करें। संसाधित पूर्व

यहाँ रहने के बाद एक छवि है और बढ़त का पता चला: an image after being pre-processed and edge detected

मूल छवि

enter image description here

+2

क्या आप मूल छवि भी जोड़ सकते हैं? –

उत्तर

3

इस किनारों की संख्या का प्रतिनिधि आप से निपटने के लिए होगा है आप एक अच्छी बेवकूफ रणनीति का प्रयास कर सकते हैं जैसे बाइनरी छवि में एक आरओआई-फाइंडर विंडो स्लाइड करना, जो केवल पिक्सेल मानों को रकम करता है, और जब तक वह मान थ्रेसहोल्ड से ऊपर न हो तब तक आग नहीं लगती है। यह सभी रिक्त सतहों को अनुकूलित करना चाहिए।

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

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

+0

यह मेरी मूल योजनाओं में से एक था। मैं देखना चाहता हूं कि वहां कुछ कम बेवकूफ है जो मेरी मदद कर सकता है। – locorecto

0

सबसे पहले, यह देखते हुए कि मूल छवि में एलईडी डिस्प्ले है और इसलिए प्रबुद्ध क्षेत्र में ट्रेस की तुलना में अधिक तीव्रता है, मैं मूल छवि पर एक युवक रंग परिवर्तन कहूंगा और फिर तीव्रता के साथ काम करूंगा विमान (वाई)।

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

sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5) 
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5) 

नहीं तो आप समोच्च पहचान का उपयोग अंक की सीमा से लगता है हो सकता है (हालांकि आप एलईडी क्षेत्रों के बीच अंतराल को बंद करने के लिए एक फैलाने प्रदर्शन करने के लिए आवश्यकता हो सकती है।

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

अंत में, मैं वाई विमान को थ्रेसहोल्ड करता हूं और अपने टेम्पलेट के साथ प्रत्येक आरओआई का पता लगाता हूं।