
इस समरेखण परिणाम आप के बाद कर रहे हैं है, तो यह एक गाऊसी कलंक, एक थ्रेशोल्डिंग द्वारा पीछा कर रही द्वारा प्राप्त किया जा सकता है। अर्थात। cvSmooth
का उपयोग CV_GAUSSIAN
के साथ पैरामीटर के रूप में करें। cvThreshold
द्वारा पीछा किया गया।
यदि आप थ्रेसहोल्डिंग (जैसे this) की तुलना में एक आसान संक्रमण चाहते हैं, तो आप इसे स्तर समायोजित करने के साथ प्राप्त कर सकते हैं (रंग सीमा को रीमेप करना ताकि आप किनारे के संक्रमण को संरक्षित कर सकें)।
अद्यतन कैसे, थ्रेशोल्डिंग पर चिकनी (विरोधी aliased) बढ़त पाने पर विचार क्या थ्रेशोल्डिंग करता है करने के लिए की व्याख्या करने के। यह मूल रूप से छवि में प्रत्येक पिक्सेल को एक समय में संसाधित करता है। यदि पिक्सेल मान थ्रेसहोल्ड से कम है, तो यह काला (0) पर सेट है, अगर यह सफेद पर सेट नहीं है (255)।
थ्रेसहोल्ड ऑपरेटर इस प्रकार बहुत सरल है, हालांकि, कोई अन्य सामान्य मैपिंग फ़ंक्शन का उपयोग किया जा सकता है। असल में यह एक फ़ंक्शन f(i)
है, जहां i
तीव्रता पिक्सेल मान (0-255 से लेकर) और f(i)
मैप किए गए मान है। सीमा के लिए इस समारोह सरल
f(i) = { 0, for i < threshold
255, for i >= threshold
है क्या आपके पास एक सरल छवि (cvSmooth द्वारा एक गाऊसी गिरी है, जो आपको, "सहज" समरेखण देता है कि अगर समझ में आता है का उपयोग) है। इस प्रकार आपके पास 0 से 255 तक के किनारों पर मूल्यों का नरम संक्रमण होता है। आप जो करना चाहते हैं वह इस संक्रमण को बहुत छोटा बना देता है, ताकि आपको एक अच्छा बढ़त मिल सके। यदि आप उस पर बैलिस्टिक जाते हैं, तो आप सीधे 0 से 255 तक जाते हैं, जो कि आपके द्वारा पहले से किए गए बाइनरी थ्रेसहोल्डिंग जैसा ही है।
अब, एक ऐसे फ़ंक्शन पर विचार करें जो नक्शा, शायद 4 तीव्रता मानों (127 + - 4) की एक श्रृंखला को 0-255 की पूरी श्रृंखला तक ले जाएं। अर्थात।
f(i) = { 0, for i < 123
255, for i >= 131
linear mapping, for 123 <= i < 131
और आपको वांछित आउटपुट मिलता है। मैं एक त्वरित रूप से देखूंगा और देख सकता हूं कि इसे ओपनसीवी में पहले से लागू किया गया है या नहीं। यद्यपि इसे स्वयं कोड करने के लिए बहुत कठिन नहीं होना चाहिए।
f(i) = { 255, for i < 122
linear mapping (255->0), for 122 <= i < 126
0, for 126 <= i < 127
linear mapping (0->255), for 127 <= i < 131
255, for 131 <= i
एक गाऊसी कर्नेल के माध्यम से पासिंग, और फिर thresholding यह किनारों बाहर smoothen चाहिए:
अपडेट 2 समोच्च संस्करण कुछ इस तरह होगा। शायद यह परिणाम आप चाहते हैं? – swalog
मैं यह धारणा बना रहा हूं कि आप जिस "शोर" के बारे में बात कर रहे हैं वह उच्च आवृत्ति घटक है जो आपने अपने दूसरे उदाहरण में हटा दिया था। क्या यह [http://i.imgur.com/33GIT.png) वांछित आउटपुट है? यदि केवल बाइनरी आउटपुट वांछित है, तो एक [हार्ड थ्रेसहोल्ड] (http://i.imgur.com/VelRg.png) निकटतम चीज़ होगी। – swalog
हां, वांछित आउटपुट शोर को हटाने के लिए जितना संभव हो उतना चिकनी रूप से निकालना है, मैंने आपके सुझाव पर गॉसियन + थ्रेसहोल्ड भी कोशिश की है लेकिन मध्यवर्ती फ़िल्टर के समान परिणाम प्राप्त कर रहे हैं। – Adrian