मीडियन फ़िल्टर

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

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

काम किया एक आयामी उदाहरण
प्रदर्शित करने के लिए, प्रत्येक प्रविष्टि के तुरंत पहले और बाद में एक प्रविष्टि के साथ तीन के विंडो आकार का उपयोग करके, एक औसत फ़िल्टर निम्नलिखित सरल एक-आयामी सिग्नल पर लागू किया जाएगा:


 * x = (2, 3, 80, 6, 2, 3)।

तो, औसत फ़िल्टर आउटपुट सिग्नल y होगा:


 * वाई1 = मेड(2, 3, 80) = 3, (पहले से ही 2, 3, और 80 बढ़ते क्रम में हैं इसलिए उन्हें व्यवस्थित करने की कोई आवश्यकता नहीं है)
 * वाई2 = मेड(3, 80, 6) = मेड(3, 6, 80) = 6, (3, 80, और 6 को माध्यिका खोजने के लिए पुनर्व्यवस्थित किया जाता है)
 * वाई3 = मेड (80, 6, 2) = मेड (2, 6, 80) = 6,
 * वाई4 = मेड (6, 2, 3) = मेड (2, 3, 6) = 3,

अर्थात। वाई = (3, 6, 6, 3)।

सीमा मुद्दे
उपरोक्त उदाहरण में, क्योंकि पहले मान से पहले कोई प्रविष्टि नहीं है, पहला मान दोहराया जाता है, जैसा कि अंतिम मान के साथ, विंडो को भरने के लिए पर्याप्त प्रविष्टियाँ प्राप्त करने के लिए। यह सिग्नल की सीमाओं पर लापता विंडो प्रविष्टियों को संभालने का एक तरीका है, लेकिन ऐसी अन्य योजनाएँ हैं जिनमें अलग-अलग गुण हैं जिन्हें विशेष परिस्थितियों में पसंद किया जा सकता है:


 * बाद में सिग्नल या इमेज बाउंड्री को क्रॉप करके या उसके बिना, बाउंड्री को प्रोसेस करने से बचें,
 * सिग्नल में अन्य स्थानों से प्रविष्टियां प्राप्त करना। उदाहरण के लिए छवियों के साथ, दूर क्षैतिज या लंबवत सीमा से प्रविष्टियों का चयन किया जा सकता है,
 * खिड़की को सीमाओं के पास सिकोड़ना, ताकि हर खिड़की भरी रहे।

द्वि-आयामी माध्य फ़िल्टर छद्म कोड
एक साधारण द्वि-आयामी माध्यिका फ़िल्टर एल्गोरिथम के लिए कोड इस तरह दिख सकता है:

1. आवंटित करें OutputPixelValue[image width][image height] 2. विंडो आवंटित करें [विंडो चौड़ाई × विंडो ऊंचाई] 3. edgex := (खिड़की की चौड़ाई / 2) गोल नीचे 4. नुकीला := (खिड़की की ऊंचाई / 2) नीचे गोल x के लिए edgex से छवि चौड़ाई - edgex do    y के लिए edgey से छवि ऊंचाई तक - edgey do         मैं = 0 fx के लिए 0 से विंडो चौड़ाई तक करें fy के लिए 0 से विंडो ऊंचाई तक करें विंडो [i] := inputPixelValue[x + fx - edgex][y + fy - edgey] मैं: = मैं + 1 विंडो में प्रविष्टियों को क्रमबद्ध करें [] OutputPixelValue[x][y] := window[window width * window height / 2]

यह एल्गोरिदम:
 * केवल एक कलर चैनल को प्रोसेस करता है,
 * गैर प्रसंस्करण सीमाओं के दृष्टिकोण को अपनाता है (सीमा मुद्दों के बारे में ऊपर की चर्चा देखें)।



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

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

यह भी देखें

 * एज-संरक्षण फ़िल्टरिंग
 * छवि शोर
 * भारित माध्यिका
 * स्यूडोमेडियन|स्यूडो-माध्यिका फिल्टर
 * लुलु चौरसाई
 * द्विपक्षीय फिल्टर
 * सीमित डेटा वैधता के साथ औसत
 * चौरसाई

बाहरी संबंध

 * Fast MATLAB one-dimensional median filter implementation
 * Mathematica MedianFilter function
 * Median filter
 * Fast two-dimensional median filter
 * Implementation of two-dimensional median filter in constant time (GPL license) – the running time per pixel of this algorithm is proportional to the number of elements in a histogram (typically this is $$2^n$$, where n is the number of bits per channel), even though this in turn is a constant.
 * Implementation written in different programming languages (on Rosetta Code)
 * Dr Dobbs article
 * 100+ Times Faster Weighted Median Filter
 * Circle median filter Median filter for circle-valued data such as phase or orientation images (C++/Matlab)