मैं केवल रूपात्मक ऑपरेशनों का उपयोग करके एक छवि से पाठ का पुनर्निर्माण कैसे करूं?


16

मैं यथासंभव निम्न छवि से पाठ को फिर से बनाना चाहता हूं। मुश्किल हिस्सा यह है कि मैं इसे केवल छवि पर रूपात्मक कार्यों का उपयोग करके करना चाहता हूं

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

क्या यह भी संभव है?

यहाँ छवि विवरण दर्ज करें


उन फजी किनारों को सुचारू करने के लिए पहला स्पष्ट कदम की तरह दिखता है?
पॉल आर

हां, मुझे लगता है कि यह मेरे द्वारा किए गए हर संयोजन का पहला चरण है।

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

इसे और अधिक पठनीय बनाने के लिए मैंने एक imdilate बनाया [0 1 0]; 1 1 1; ० १ ०]। मैं ऐसी चीज की तलाश कर रहा हूं, जो मूल के साथ पाठ को बहुत करीब लाएगी।
जैकबसेन

जवाबों:


6

यदि आप रूपांतरित / रूपांतरित छवियों को जोड़ने / घटाना करने के इच्छुक हैं, तो आप गिन सकते हैं कि प्रत्येक पिक्सेल के आसपास कितने सिग्नल पिक्सेल हैं, और उस संख्या के आधार पर थ्रेशोल्ड।

img = imread('http://i.stack.imgur.com/wicpc.png');

n = false(3);n(4) = 1;
s = false(3);s(6) = 1;
w = false(3);w(2) = 1;
e = false(3);e(8) = 1;

%# note that you could convolve with a cross instead
fourNeighbourCount = imerode(img,n) + imerode(img,s) + imerode(img,w) + imerode(img,3) + img;

यहाँ छवि विवरण दर्ज करें

%# require at least two neighbours
img = fourNeighbourCount > 1;

यहाँ छवि विवरण दर्ज करें

यदि आप एक 3x3 मास्क के साथ हल करते हैं, जिसमें बीच में एक छेद है, तो आप इस तरह से कुछ प्राप्त कर सकते हैं:

यहाँ छवि विवरण दर्ज करें


3

यह हल करने के लिए काफी दिलचस्प समस्या है! एक माध्य फ़िल्टर को आज़माएं । अधिक विवरण के लिए यहां और यहां संदर्भ देखें।

हालांकि मैंने आपकी समस्या का अनुकरण करने के लिए अपने हाथ नहीं लगाए हैं, यह एक सुझाव है। मेरी आंत की भावना कहती है कि यह आपको बहुत लाभ दे सकता है क्योंकि, यह नमक-एन-काली मिर्च के शोर का मुकाबला करने के लिए जाना जाता है। आपके मामले में, चित्रों में बॉर्डर के चारों ओर अतिरिक्त सफेद डॉट्स होते हैं जो या तो पूर्ण सफेद या पूर्ण ब्लैक में परिवर्तित हो जाते हैं जो वर्णमाला के किस पक्ष पर निर्भर करता है। यहाँ है कि यह माध्य फ़िल्टरिंग के बाद कैसा दिखता है:

यहाँ छवि विवरण दर्ज करें


1

यदि किसी कारण से आप रूपात्मक संचालन का उपयोग करने के लिए सीमित हैं, तो आप उन्मुख करीबी संचालन की "वोटिंग योजना" का उपयोग करने पर विचार कर सकते हैं।

रूपात्मक संचालन के साथ एक समस्या यह है कि वे वास्तव में दिशात्मकता को ध्यान में नहीं रखते हैं। केंद्र पिक्सेल के लिए, इस तरह का एक पड़ोस

1 0 0
1 1 0
0 1 1

वास्तव में इस तरह से एक पड़ोस से अलग नहीं है

0 1 0
1 1 0
1 1 0

जब आपके द्वारा उन्हें पसंद किया जा सकता है, तो फैलाव और कटाव प्रत्यक्ष रूप से पक्षपाती नहीं होने के कारण समस्याएँ पैदा हो सकती हैं। तो एक चीज जो आप कर सकते हैं, वह है कि गुठली का उपयोग करते हुए सबसे उपयुक्त प्रत्यक्ष रूप से पक्षपातपूर्ण रूपात्मक ऑपरेशन का पता लगाएं:

1 1 0   1 0 0   1 0 0
0 1 0   1 1 0   1 1 0
0 1 1   0 1 1   0 1 1 . . .

यह 5 x 5 कर्नेल के साथ बेहतर होगा, लेकिन मुझे लगता है कि यह विचार पर्याप्त स्पष्ट है। मूल रूप से, एक कोने का पता लगाने कर्नेल का विचार थोड़ा खिंचाव है ताकि यह एक लाइन सेगमेंट का पता लगाने वाला कर्नेल हो। आप इसका उपयोग सर्वोत्तम-फिट घटता खोजने के लिए भी कर सकते हैं:

0 0 0 1 1
0 0 1 1 0
0 1 1 0 0 
0 0 1 1 0
0 0 0 1 1

स्पष्ट रूप से यह बड़ी संख्या में गुठली की ओर जाता है, लेकिन अगर मूल विचार काम करता है तो आप के लिए वादा दिखाता है कि तकनीक को अनुकूलित करने का एक तरीका है ताकि सबसे अच्छा-फिट कर्नेल एक पास में मिल जाए।

किसी भी मामले में, यदि आप कई कर्नेल और कुछ तर्क का उपयोग करते हैं, तो प्रत्येक ऑपरेशन (x, y) को पारंपरिक रूपात्मक आकृति की तुलना में अधिक गणना की आवश्यकता होती है:

  1. प्रत्येक पिक्सेल (एक्स, वाई) पर, कई रूपात्मक ऑपरेटरों में से प्रत्येक को लागू करें। प्रत्येक ऑपरेटर के लिए, रूपात्मक ऑपरेशन के परिणाम और इनपुट के कर्नेल से मेल खाने वाले डिग्री दोनों की गणना करें। ("डिग्री" = पिक्सेल की संख्या जो मेल खाती है)
  2. कर्नेल के लिए रूपात्मक परिणाम चुनें जो कि पिक्सेल कॉन्फ़िगरेशन पर वास्तविक रूप से सबसे निकटता से मेल खाता है।

कर्नेल का आकार इनपुट के आकार से मेल खाना चाहिए। बड़े कर्नेल का उपयोग करने के बजाय, आप ऑपरेशन की संख्या को कम करने के लिए "स्प्रेड" कर्नेल का उपयोग कर सकते हैं। निम्नलिखित कर्नेल सिर्फ 3 x 3 कर्नेल है, जिसका दायरा 1 से बड़ा है।

1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 0 0 0 0 0 0
1 0 0 0 0 0 1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.