मीडियन फ़िल्टर: Difference between revisions
No edit summary |
No edit summary |
||
Line 27: | Line 27: | ||
== द्वि-आयामी मीडियन फ़िल्टर छद्म कोड == | == द्वि-आयामी मीडियन फ़िल्टर छद्म कोड == | ||
एक साधारण द्वि-आयामी मीडियनिका फ़िल्टर एल्गोरिथम के लिए कोड इस प्रकार दिख सकता है: | एक साधारण द्वि-आयामी मीडियनिका फ़िल्टर एल्गोरिथम के लिए कोड इस प्रकार दिख सकता है:<syntaxhighlight lang="d"> | ||
1. allocate outputPixelValue[image width][image height] | |||
यह एल्गोरिदम: | 2. allocate window[window width × window height] | ||
3. edgex := (window width / 2) rounded down | |||
4. edgey := (window height / 2) rounded down | |||
for x from edgex to image width - edgex do | |||
for y from edgey to image height - edgey do | |||
i = 0 | |||
for fx from 0 to window width do | |||
for fy from 0 to window height do | |||
window[i] := inputPixelValue[x + fx - edgex][y + fy - edgey] | |||
i := i + 1 | |||
sort entries in window[] | |||
outputPixelValue[x][y] := window[window width * window height / 2] | |||
</syntaxhighlight>यह एल्गोरिदम: | |||
* केवल एक कलर चैनल को प्रोसेस करता है, | * केवल एक कलर चैनल को प्रोसेस करता है, | ||
* गैर प्रसंस्करण सीमाओं के दृष्टिकोण को अपनाता है (सीमा मुद्दों के बारे में ऊपर की चर्चा देखें)। | * गैर प्रसंस्करण सीमाओं के दृष्टिकोण को अपनाता है (सीमा मुद्दों के बारे में ऊपर की चर्चा देखें)। |
Revision as of 06:05, 29 March 2023
मीडियन फ़िल्टर एक गैर-रेखीय डिजिटल फिल्टर विधि है, जिसका उपयोग अधिकांश किसी छवि या संकेत ध्वनि संकेत ध्वनि को दूर करने के लिए किया जाता है। इस प्रकार के ध्वनि में कमी बाद के प्रसंस्करण के परिणामों को उत्तम बनाने के लिए एक विशिष्ट पूर्व-प्रसंस्करण (उदाहरण के लिए, एक छवि पर किनारे का पता लगाना) कदम है। मिडियन फ़िल्टरिंग का डिजिटल छवि प्रोसेसिंग में बहुत व्यापक रूप से उपयोग किया जाता है, क्योंकि कुछ शर्तों के अनुसार, यह ध्वनि को दूर करते हुए किनारों को संरक्षित (किन्तु नीचे की चर्चा देखें) करता है, संकेत प्रोसेसिंग में भी इसका उपयोग होता है।
एल्गोरिथम विवरण
मध्य फ़िल्टर का मुख्य विचार प्रत्येक प्रविष्टि को पड़ोसी प्रविष्टियों के मध्य के साथ बदलकर प्रविष्टि द्वारा संकेत प्रविष्टि के माध्यम से चलाना है। पड़ोसियों के पैटर्न को विंडो कहा जाता है, जो पूरे संकेत पर स्लाइड करता है, प्रवेश द्वारा प्रवेश करता है। एक-आयामी संकेतों के लिए, सबसे स्पष्ट विंडो केवल पहले कुछ पूर्ववर्ती और बाद की प्रविष्टियाँ हैं, जबकि द्वि-आयामी (या उच्च-आयामी) डेटा के लिए विंडो में दी गई त्रिज्या या दीर्घवृत्ताकार क्षेत्र (अर्थात माध्य फ़िल्टर एक वियोज्य फ़िल्टर नहीं है) के भीतर सभी प्रविष्टियाँ शामिल होनी चाहिए।
काम किया एक आयामी उदाहरण
प्रदर्शित करने के लिए, प्रत्येक प्रविष्टि के तुरंत पहले और बाद में एक प्रविष्टि के साथ तीन के विंडो आकार का उपयोग करके, एक औसत फ़िल्टर निम्नलिखित सरल एक-आयामी संकेत पर प्रायुक्त किया जाएगा:
- x = (2, 3, 80, 6, 2, 3)।
तो, औसत फ़िल्टर आउटपुट संकेत y होगा:
- y1 = मेड(2, 3, 80) = 3, (पहले से ही 2, 3, और 80 बढ़ते क्रम में हैं इसलिए उन्हें व्यवस्थित करने की कोई आवश्यकता नहीं है)
- y2 = मेड(3, 80, 6) = मेड(3, 6, 80) = 6, (3, 80, और 6 को मीडियनिका खोजने के लिए पुनर्व्यवस्थित किया जाता है)
- y3 = मेड (80, 6, 2) = मेड (2, 6, 80) = 6,
- y4 = मेड (6, 2, 3) = मेड (2, 3, 6) = 3,
अर्थात। y = (3, 6, 6, 3)।
सीमा विवाद
ऊपर दिए गए उदाहरण में, क्योंकि पहले मान से पहले कोई प्रविष्टि नहीं है, पहला मान दोहराया जाता है, जैसा कि अंतिम मान के साथ विंडो को भरने के लिए पर्याप्त प्रविष्टियाँ प्राप्त करने के लिए होता है। यह सिग्नल की सीमाओं पर लापता विंडो प्रविष्टियों को संभालने का एक तरीका है, किन्तु ऐसी अन्य योजनाएँ हैं जिनमें अलग-अलग गुण हैं जिन्हें विशेष परिस्थितियों में पसंद किया जा सकता है:
- बाद में संकेत या छवि सीमा को क्रॉप करके या उसके बिना, सीमा को प्रोसेस करने से बचें,
- संकेत में अन्य स्थानों से प्रविष्टियां प्राप्त करना। उदाहरण के लिए छवियों के साथ, दूर क्षैतिज या लंबवत सीमा से प्रविष्टियों का चयन किया जा सकता है,
- विंडो को सीमाओं के पास सिकोड़ना, जिससे हर विंडो भरी रहे।
द्वि-आयामी मीडियन फ़िल्टर छद्म कोड
एक साधारण द्वि-आयामी मीडियनिका फ़िल्टर एल्गोरिथम के लिए कोड इस प्रकार दिख सकता है:
1. allocate outputPixelValue[image width][image height]
2. allocate window[window width × window height]
3. edgex := (window width / 2) rounded down
4. edgey := (window height / 2) rounded down
for x from edgex to image width - edgex do
for y from edgey to image height - edgey do
i = 0
for fx from 0 to window width do
for fy from 0 to window height do
window[i] := inputPixelValue[x + fx - edgex][y + fy - edgey]
i := i + 1
sort entries in window[]
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)