मीडियन फ़िल्टर: Difference between revisions
m (Abhishek moved page मध्य फ़िल्टर to मीडियन फ़िल्टर without leaving a redirect) |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Non-linear digital filtering technique to remove noise}} | {{short description|Non-linear digital filtering technique to remove noise}} | ||
[[Image:Median filter example.jpg|thumb|right|200px|एक ही शोर वाले फोटोग्राफ पर अलग-अलग त्रिज्या के 3 | [[Image:Median filter example.jpg|thumb|right|200px|एक ही शोर वाले फोटोग्राफ पर अलग-अलग त्रिज्या के 3 मीडियन फिल्टर का उदाहरण।]]मीडियन फ़िल्टर एक गैर-रेखीय [[डिजिटल फिल्टर]] तकनीक है, जिसका उपयोग अक्सर किसी छवि या [[संकेत शोर]] सिग्नल शोर को दूर करने के लिए किया जाता है। इस तरह के [[शोर में कमी]] बाद के प्रसंस्करण के परिणामों को बेहतर बनाने के लिए एक विशिष्ट पूर्व-प्रसंस्करण कदम है (उदाहरण के लिए, एक छवि पर [[किनारे का पता लगाना]])। डिजिटल [[ मूर्ति प्रोद्योगिकी ]] में मेडियन फ़िल्टरिंग का बहुत व्यापक रूप से उपयोग किया जाता है, क्योंकि कुछ शर्तों के तहत, यह शोर को दूर करते हुए किनारों को संरक्षित करता है (लेकिन नीचे की चर्चा देखें), [[ संकेत आगे बढ़ाना ]] में भी इसका उपयोग होता है। | ||
== एल्गोरिथम विवरण == | == एल्गोरिथम विवरण == | ||
मध्य फ़िल्टर का मुख्य विचार प्रविष्टि द्वारा सिग्नल एंट्री के | मध्य फ़िल्टर का मुख्य विचार प्रविष्टि द्वारा सिग्नल एंट्री के मीडियनम से चलाना है, प्रत्येक प्रविष्टि को पड़ोसी प्रविष्टियों के मध्य के साथ बदलना। पड़ोसियों के पैटर्न को विंडो कहा जाता है, जो पूरे सिग्नल पर स्लाइड करता है, प्रवेश द्वारा प्रवेश करता है। एक-आयामी संकेतों के लिए, सबसे स्पष्ट विंडो केवल पहले कुछ पूर्ववर्ती और बाद की प्रविष्टियाँ हैं, जबकि द्वि-आयामी (या उच्च-आयामी) डेटा के लिए विंडो में दी गई त्रिज्या या दीर्घवृत्ताकार क्षेत्र (यानी मीडियनिका फ़िल्टर) के भीतर सभी प्रविष्टियाँ शामिल होनी चाहिए एक वियोज्य फ़िल्टर नहीं है)। | ||
== काम किया एक आयामी उदाहरण == | == काम किया एक आयामी उदाहरण == | ||
Line 13: | Line 13: | ||
: वाई<sub>1</sub> = मेड(2, 3, 80) = 3, (पहले से ही 2, 3, और 80 बढ़ते क्रम में हैं इसलिए उन्हें व्यवस्थित करने की कोई आवश्यकता नहीं है) | : वाई<sub>1</sub> = मेड(2, 3, 80) = 3, (पहले से ही 2, 3, और 80 बढ़ते क्रम में हैं इसलिए उन्हें व्यवस्थित करने की कोई आवश्यकता नहीं है) | ||
: वाई<sub>2</sub> = मेड(3, 80, 6) = मेड(3, 6, 80) = 6, (3, 80, और 6 को | : वाई<sub>2</sub> = मेड(3, 80, 6) = मेड(3, 6, 80) = 6, (3, 80, और 6 को मीडियनिका खोजने के लिए पुनर्व्यवस्थित किया जाता है) | ||
: वाई<sub>3</sub> = मेड (80, 6, 2) = मेड (2, 6, 80) = 6, | : वाई<sub>3</sub> = मेड (80, 6, 2) = मेड (2, 6, 80) = 6, | ||
: वाई<sub>4</sub> = मेड (6, 2, 3) = मेड (2, 3, 6) = 3, | : वाई<sub>4</sub> = मेड (6, 2, 3) = मेड (2, 3, 6) = 3, | ||
Line 26: | Line 26: | ||
* खिड़की को सीमाओं के पास सिकोड़ना, ताकि हर खिड़की भरी रहे। | * खिड़की को सीमाओं के पास सिकोड़ना, ताकि हर खिड़की भरी रहे। | ||
== द्वि-आयामी | == द्वि-आयामी मीडियन फ़िल्टर छद्म कोड == | ||
एक साधारण द्वि-आयामी | एक साधारण द्वि-आयामी मीडियनिका फ़िल्टर एल्गोरिथम के लिए कोड इस तरह दिख सकता है: | ||
1. आवंटित करें OutputPixelValue[image width][image height] | 1. आवंटित करें OutputPixelValue[image width][image height] | ||
Line 47: | Line 47: | ||
* गैर प्रसंस्करण सीमाओं के दृष्टिकोण को अपनाता है (सीमा मुद्दों के बारे में ऊपर की चर्चा देखें)। | * गैर प्रसंस्करण सीमाओं के दृष्टिकोण को अपनाता है (सीमा मुद्दों के बारे में ऊपर की चर्चा देखें)। | ||
[[Image:Medianfilterp.png|thumb|[[दोषपूर्ण पिक्सेल]] द्वारा गंभीर रूप से दूषित छवि को बेहतर बनाने के लिए | [[Image:Medianfilterp.png|thumb|[[दोषपूर्ण पिक्सेल]] द्वारा गंभीर रूप से दूषित छवि को बेहतर बनाने के लिए मीडियन फ़िल्टर का उपयोग]] | ||
== एल्गोरिथम कार्यान्वयन मुद्दे == | == एल्गोरिथम कार्यान्वयन मुद्दे == | ||
आमतौर पर, अब तक अधिकांश कम्प्यूटेशनल प्रयास और समय प्रत्येक विंडो के | आमतौर पर, अब तक अधिकांश कम्प्यूटेशनल प्रयास और समय प्रत्येक विंडो के मीडियनिका की गणना करने में व्यतीत होता है। चूंकि फ़िल्टर को सिग्नल में प्रत्येक प्रविष्टि को संसाधित करना चाहिए, छवियों जैसे बड़े सिग्नल के लिए, इस औसत गणना की दक्षता यह निर्धारित करने में एक महत्वपूर्ण कारक है कि एल्गोरिदम कितनी तेजी से चल सकता है। ऊपर वर्णित भोले-भाले कार्यान्वयन, मीडियनिका को खोजने के लिए विंडो में प्रत्येक प्रविष्टि को सॉर्ट करते हैं; हालाँकि, चूंकि संख्याओं की सूची में केवल मध्य मान की आवश्यकता होती है, चयन एल्गोरिदम अधिक कुशल हो सकते हैं। इसके अलावा, कुछ प्रकार के संकेत (अक्सर छवियों के मामले में) पूर्ण संख्या के प्रतिनिधित्व का उपयोग करते हैं: इन मामलों में, [[हिस्टोग्राम]] मीडियनिकाएँ कहीं अधिक कुशल हो सकती हैं क्योंकि हिस्टोग्राम को विंडो से विंडो में अपडेट करना और हिस्टोग्राम के मीडियनिका को खोजना आसान है। विशेष रूप से कठिन नहीं है।<ref name="huang79">{{cite journal | ||
|first1=Thomas S. |last=Huang |first2=George J. |last2=Yang |first3=Gregory Y. |last3=Tang | |first1=Thomas S. |last=Huang |first2=George J. |last2=Yang |first3=Gregory Y. |last3=Tang | ||
|title=A fast two-dimensional median filtering algorithm | |title=A fast two-dimensional median filtering algorithm | ||
Line 76: | Line 76: | ||
* एज-संरक्षण फ़िल्टरिंग | * एज-संरक्षण फ़िल्टरिंग | ||
* [[छवि शोर]] | * [[छवि शोर]] | ||
* [[भारित माध्यिका]] | * [[भारित माध्यिका|भारित मीडियनिका]] | ||
* [[स्यूडोमेडियन]]|स्यूडो- | * [[स्यूडोमेडियन]]|स्यूडो-मीडियनिका फिल्टर | ||
* लुलु [[चौरसाई]] | * लुलु [[चौरसाई]] | ||
* [[द्विपक्षीय फिल्टर]] | * [[द्विपक्षीय फिल्टर]] |
Revision as of 05:46, 29 March 2023
मीडियन फ़िल्टर एक गैर-रेखीय डिजिटल फिल्टर तकनीक है, जिसका उपयोग अक्सर किसी छवि या संकेत शोर सिग्नल शोर को दूर करने के लिए किया जाता है। इस तरह के शोर में कमी बाद के प्रसंस्करण के परिणामों को बेहतर बनाने के लिए एक विशिष्ट पूर्व-प्रसंस्करण कदम है (उदाहरण के लिए, एक छवि पर किनारे का पता लगाना)। डिजिटल मूर्ति प्रोद्योगिकी में मेडियन फ़िल्टरिंग का बहुत व्यापक रूप से उपयोग किया जाता है, क्योंकि कुछ शर्तों के तहत, यह शोर को दूर करते हुए किनारों को संरक्षित करता है (लेकिन नीचे की चर्चा देखें), संकेत आगे बढ़ाना में भी इसका उपयोग होता है।
एल्गोरिथम विवरण
मध्य फ़िल्टर का मुख्य विचार प्रविष्टि द्वारा सिग्नल एंट्री के मीडियनम से चलाना है, प्रत्येक प्रविष्टि को पड़ोसी प्रविष्टियों के मध्य के साथ बदलना। पड़ोसियों के पैटर्न को विंडो कहा जाता है, जो पूरे सिग्नल पर स्लाइड करता है, प्रवेश द्वारा प्रवेश करता है। एक-आयामी संकेतों के लिए, सबसे स्पष्ट विंडो केवल पहले कुछ पूर्ववर्ती और बाद की प्रविष्टियाँ हैं, जबकि द्वि-आयामी (या उच्च-आयामी) डेटा के लिए विंडो में दी गई त्रिज्या या दीर्घवृत्ताकार क्षेत्र (यानी मीडियनिका फ़िल्टर) के भीतर सभी प्रविष्टियाँ शामिल होनी चाहिए एक वियोज्य फ़िल्टर नहीं है)।
काम किया एक आयामी उदाहरण
प्रदर्शित करने के लिए, प्रत्येक प्रविष्टि के तुरंत पहले और बाद में एक प्रविष्टि के साथ तीन के विंडो आकार का उपयोग करके, एक औसत फ़िल्टर निम्नलिखित सरल एक-आयामी सिग्नल पर लागू किया जाएगा:
- 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]
यह एल्गोरिदम:
- केवल एक कलर चैनल को प्रोसेस करता है,
- गैर प्रसंस्करण सीमाओं के दृष्टिकोण को अपनाता है (सीमा मुद्दों के बारे में ऊपर की चर्चा देखें)।
एल्गोरिथम कार्यान्वयन मुद्दे
आमतौर पर, अब तक अधिकांश कम्प्यूटेशनल प्रयास और समय प्रत्येक विंडो के मीडियनिका की गणना करने में व्यतीत होता है। चूंकि फ़िल्टर को सिग्नल में प्रत्येक प्रविष्टि को संसाधित करना चाहिए, छवियों जैसे बड़े सिग्नल के लिए, इस औसत गणना की दक्षता यह निर्धारित करने में एक महत्वपूर्ण कारक है कि एल्गोरिदम कितनी तेजी से चल सकता है। ऊपर वर्णित भोले-भाले कार्यान्वयन, मीडियनिका को खोजने के लिए विंडो में प्रत्येक प्रविष्टि को सॉर्ट करते हैं; हालाँकि, चूंकि संख्याओं की सूची में केवल मध्य मान की आवश्यकता होती है, चयन एल्गोरिदम अधिक कुशल हो सकते हैं। इसके अलावा, कुछ प्रकार के संकेत (अक्सर छवियों के मामले में) पूर्ण संख्या के प्रतिनिधित्व का उपयोग करते हैं: इन मामलों में, हिस्टोग्राम मीडियनिकाएँ कहीं अधिक कुशल हो सकती हैं क्योंकि हिस्टोग्राम को विंडो से विंडो में अपडेट करना और हिस्टोग्राम के मीडियनिका को खोजना आसान है। विशेष रूप से कठिन नहीं है।[1]
धार संरक्षण गुण
मेडियन फ़िल्टरिंग एक प्रकार की स्मूथिंग तकनीक है, जैसा कि गौस्सियन धुंधलापन है। चिकने पैच या सिग्नल के चिकने क्षेत्रों में शोर को दूर करने के लिए सभी चौरसाई तकनीकें प्रभावी हैं, लेकिन किनारों पर प्रतिकूल प्रभाव डालती हैं। अक्सर हालांकि, सिग्नल में शोर को कम करने के साथ-साथ किनारों को संरक्षित करना महत्वपूर्ण होता है। उदाहरण के लिए, छवियों के दृश्य स्वरूप के लिए किनारों का महत्वपूर्ण महत्व है। गौसियन शोर के छोटे से मध्यम स्तर के लिए, एक निश्चित, निश्चित विंडो आकार के लिए किनारों को संरक्षित करते हुए शोर को दूर करने के लिए औसत दर्जे का फिल्टर गॉसियन ब्लर की तुलना में स्पष्ट रूप से बेहतर है।[2] हालांकि, इसका प्रदर्शन शोर के उच्च स्तर के लिए गॉसियन ब्लर से ज्यादा बेहतर नहीं है, जबकि धब्बेदार शोर और नमक और काली मिर्च शोर (आवेगपूर्ण शोर) के लिए यह विशेष रूप से प्रभावी है।[3] इस वजह से, डिजिटल इमेज प्रोसेसिंग में मीडियन फ़िल्टरिंग का बहुत व्यापक रूप से उपयोग किया जाता है।
यह भी देखें
- एज-संरक्षण फ़िल्टरिंग
- छवि शोर
- भारित मीडियनिका
- स्यूडोमेडियन|स्यूडो-मीडियनिका फिल्टर
- लुलु चौरसाई
- द्विपक्षीय फिल्टर
- सीमित डेटा वैधता के साथ औसत
- चौरसाई
संदर्भ
- ↑ Huang, Thomas S.; Yang, George J.; Tang, Gregory Y. (February 1979). "A fast two-dimensional median filtering algorithm" (PDF). IEEE Transactions on Acoustics, Speech, and Signal Processing. 27 (1): 13–18. doi:10.1109/TASSP.1979.1163188.
- ↑ Arias-Castro, Ery; Donoho, David L. (June 2009). "Does median filtering truly preserve edges better than linear filtering?". Annals of Statistics. 37 (3): 1172–2009. arXiv:math/0612422. Bibcode:2006math.....12422A. doi:10.1214/08-AOS604. MR 2509071. Zbl 1160.62086.
- ↑ Arce, Gonzalo R. (2005). Nonlinear Signal Processing: A Statistical Approach. New Jersey, USA: Wiley. ISBN 0-471-67624-1.
बाहरी संबंध
- 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 , 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)