2012-07-13 11 views
11

इमगुसीवी में पाठ पहचान के लिए छवियों पर लागू करने के लिए छवि प्रीप्रोकैसिंग संचालन का सबसे अच्छा सेट क्या है?टेक्स्ट पहचान के लिए छवि प्रीप्रोकैसिंग

मैंने दो नमूना छवियां here शामिल की हैं।

कम या उच्च पास फ़िल्टर लागू करना उपयुक्त नहीं होगा, क्योंकि पाठ किसी भी आकार का हो सकता है। मैंने मध्य और द्विपक्षीय फ़िल्टरों की कोशिश की है, लेकिन वे छवि को बहुत प्रभावित नहीं करते हैं।

आदर्श परिणाम सभी पाठ सफेद, और शेष काले रंग के साथ एक बाइनरी छवि होगी। यह छवि तब ओसीआर इंजन को भेजी जाएगी।

धन्यवाद

+1

क्या आप यहां उन नमूना छवियों को अपलोड कर सकते हैं? लिंक 403 वर्जित – Alupotha

उत्तर

16

सबसे अच्छा सेट जैसा कुछ भी नहीं है। ध्यान रखें कि डिजिटल छवियों को विभिन्न कैप्चर डिवाइसों द्वारा अधिग्रहित किया जा सकता है और प्रत्येक डिवाइस अपनी प्रीप्रोकैसिंग सिस्टम (फ़िल्टर) और अन्य विशेषताओं को एम्बेड कर सकता है जो छवि को भारी रूप से बदल सकते हैं और यहां तक ​​कि शोर भी जोड़ सकते हैं। तो हर मामले को अलग-अलग इलाज किया जाना चाहिए (preprocessed) अलग-अलग।

हालांकि, वहाँ commmon संचालन कि उदाहरण के लिए खोज को सुधारने में इस्तेमाल किया जा सकता है, एक बहुत ही बुनियादी एक स्केल और छवि binarize करने के लिए एक threshold लागू करने के लिए छवि परिवर्तित करने के लिए किया जाएगा। एक और तकनीक जिसका मैंने पहले उपयोग किया है the bounding box है, जो आपको टेक्स्ट क्षेत्र का पता लगाने की अनुमति देता है। छवियों से शोर को हटाने के लिए आपको ईरोड/फैलाने के संचालन में रुचि हो सकती है। मैं इन परिचालनों में से कुछ को this post पर प्रदर्शित करता हूं।

अब, बस आप एक सरल दृष्टिकोण है कि कर सकते हैं दिखाने के लिए:

इसके अलावा, वहाँ ओसीआर और OpenCV के बारे में अन्य रोचक पोस्ट है कि आप एक बार देख लेना चाहिए अपनी नमूना छवि के साथ प्रयोग किया जाए, यह रंग बदलने और थ्रेसहोल्ड लगाने का नतीजा है:

cv::Mat new_img = cv::imread(argv[1]); 
cv::bitwise_not(new_img, new_img); 

double thres = 100; 
double color = 255; 
cv::threshold(new_img, new_img, thres, color, CV_THRESH_BINARY); 

cv::imwrite("inv_thres.png", new_img); 
+0

मुझे लगता है कि मुझे प्रत्येक छवि के लिए ईरोड/फैलाने के संचालन का सही सेट मिलना होगा। अभी, मुझे ऐसा संयोजन नहीं मिल रहा है जो सभी छवियों के लिए उचित रूप से अच्छी तरह से काम करता है। वाटरशेड उदाहरण सबसे अच्छा काम करता है, यद्यपि। – Osiris

+0

क्या छवियों में टेक्स्ट का पता लगाने के कोई अन्य तरीके हैं? – Maystro

+1

दूसरा ओपनसीवी लिंक मर चुका है, यहां एक विकल्प है: https://github.com/damiles/basicOCR – yurez

2

morphological छवि प्रसंस्करण का प्रयास करें। this पर एक नज़र डालें। हालांकि, यह केवल बाइनरी छवियों पर काम करता है - इसलिए आपको छवि (थ्रेसहोल्ड?) को बिनरिज करना होगा। हालांकि, यह आसान है, यह फ़ॉन्ट आकार पर निर्भर है, इसलिए एक संरचना तत्व सभी फ़ॉन्ट आकारों के लिए काम नहीं करेगा। यदि आप एक सामान्य समाधान चाहते हैं, तो छवियों में टेक्स्ट पहचान के लिए कई कागजात हैं - Google विद्वान में इस शब्द की खोज आपको कुछ उपयोगी प्रकाशन प्रदान करनी चाहिए।

+0

धन्यवाद देता है, वह पेपर वास्तव में उपयोगी होगा। मैंने morphological संचालन देखा, लेकिन, जैसा कि आपने कहा, वे पाठ आकार पर निर्भर हैं। – Osiris

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