2010-02-17 8 views
5

मैंने कुछ अनुकूली बिनराइजेशन विधियों को लागू किया, वे एक छोटी विंडो का उपयोग करते हैं और प्रत्येक पिक्सेल पर थ्रेसहोल्ड मान की गणना की जाती है। वहाँ इन तरीकों के साथ समस्याएं हैं: हम खिड़की का आकार बहुत छोटा हम इस प्रभाव को प्राप्त होगा चयन करते हैं (मुझे लगता है कि कारण विंडो का आकार छोटा है की वजह से है) alt text http://i.piccy.info/i4/3d/bc/773b7df74ff7dadfd11c09372b7e.jpegअनुकूली दहलीज बिनराइजेशन के खराब प्रभाव

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

उत्तर

2

इस क्षेत्र में काफी सारे शोध चल रहे हैं, लेकिन दुर्भाग्यवश मेरे पास देने के लिए कोई अच्छा लिंक नहीं है।

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

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

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

संपादित करें: त्वरित परीक्षण के बाद, ऐसा लगता है कि मेरा "त्वरित हैक" वास्तव में काम नहीं करेगा। इस बारे में सोच करने के बाद मुझे नहीं बहुत हैरान हूं या तो :)

I = someImage 
Ib = blur(I, 'a lot!') 
Idiff = I - Idiff 
It = threshold(Idiff, 'some global threshold') 

संपादित 2 गॉट एक अन्य विचार जो आपकी छवियों उत्पन्न कर रहे हैं पर निर्भर करता है काम कर सकता था। छवि की पहली कुछ पंक्तियों से प्रकाश मॉडल का आकलन का प्रयास करें:

  1. छवि
  2. में पहली एन पंक्तियों ले लो एक मतलब पंक्ति बनाएँ से एन पंक्तियों एकत्र। आप जानते हैं कि आपके पृष्ठभूमि मॉडल के रूप में एक पंक्ति है।
  3. छवि में प्रत्येक पंक्ति पृष्ठभूमि मॉडल पंक्ति (माध्य पंक्ति) घटाएं।
  4. परिणामस्वरूप छवि थ्रेसहोल्ड।

दुर्भाग्यवश मैं इसका परीक्षण करने के लिए बिना किसी अच्छे उपकरण के घर पर हूं।

+0

क्या आप अधिक जानकारी में कृपया समझा सकते हैं! "थ्रेसहोल्डिंग से पहले इसे हटाएं" का क्या अर्थ है? कैसे निकालें? फिर एक और बात: बहुत अधिक धुंधला करना और अंतर लेना और फिर वैश्विक दहलीज के साथ दहलीज - यह अच्छी छवियों के लिए क्या प्रभाव पैदा करेगा? मेरा मतलब उन छवियों के लिए है जो अनुकूली थ्रेसहोल्ड विधि के बाद क्षतिग्रस्त नहीं हुए हैं? – maximus

+0

अद्यतन देखें: मुझे नहीं लगता कि मेरी विधि कभी भी काम कर सकती है। मुझे लगता है कि आपको कुछ और उन्नत विधि का सहारा लेना होगा। –

+0

वैसे भी, आपके उत्तर के लिए धन्यवाद! आशा है कि यहां अधिक जवाब होंगे! – maximus

2

ऐसा लगता है कि आप अनुकूल थ्रेसहोल्डिंग गलत कर रहे हैं। आपकी छवियां इस तरह दिखती हैं कि आपने अपनी छवि को छोटे ब्लॉक में विभाजित किया है, प्रत्येक ब्लॉक के लिए एक थ्रेसहोल्ड की गणना की है और पूरे ब्लॉक पर थ्रेसहोल्ड लागू किया है। वह "बॉक्स" कलाकृतियों को समझाएगा। आम तौर पर, अनुकूली थ्रेसहोल्डिंग का मतलब पिक्सेल के चारों ओर केंद्रित एक अलग खिड़की के साथ अलग-अलग पिक्सेल के लिए एक थ्रेसहोल्ड ढूंढना है।

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

वास्तविक वस्तुओं के आधार पर विभाजित करने की कोशिश "पतली" कर रहे हैं (एक टिप्पणी में बारकोड के बारे में कुछ कहा), तो आपको एक सरल खोलने/संचालन मॉडल एक प्रकाश मिल को बंद करने की कोशिश कर सकते। (यानी अग्रभूमि पिक्सल को हटाने के लिए छवि को बंद करें, फिर [बंद छवि + एक्स] थ्रेसहोल्ड के रूप में उपयोग करें)।

या, आप एक ही चमक को अग्रभूमि और पृष्ठभूमि पिक्सल प्राप्त करने के लिए मतलब अस्थायी छानने की कोशिश कर सकते। (व्यक्तिगत रूप से, मैं इसे पहले कोशिश करता हूं)

1

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

आप निब्लाक बिनराइजेशन का प्रयास करना चाहते हैं। मैटलैब कोड यहां उपलब्ध है http://www.uio.no/studier/emner/matnat/ifi/INF3300/h06/undervisningsmateriale/week-36-2006-solution.pdf (पेज 4)। दो पैरामीटर हैं जिन्हें आपको हाथ से ट्यून करना होगा: विंडो आकार (उपरोक्त कोड में एन) और वजन।

1

कोशिश एक स्थानीय अनुकूली दहलीज इस प्रक्रिया का उपयोग कर लागू करने के लिए: convolved एक

  • सीमा से

    1. convolve एक मतलब या मंझला फिल्टर
    2. के साथ छवि मूल छवि घटाना अंतर छवि

    स्थानीय अनुकूली दहलीज विधि प्रत्येक पिक्सेल के लिए एक व्यक्ति सीमा चयन करता है।

    मैं बड़े पैमाने पर इस दृष्टिकोण का उपयोग कर रहा है और यह छवियों गैर वर्दी पृष्ठभूमि होने के साथ ठीक काम कर रहा है।