ग्राफिक्स और ऑडियो संपादन और प्रसंस्करण सॉफ्टवेयर में अक्सर "हाई-पास फ़िल्टर" और "लो-पास फ़िल्टर" नामक फ़ंक्शंस होते हैं। वास्तव में ये क्या करते हैं, और उन्हें लागू करने के लिए एल्गोरिदम क्या हैं?हाई-पास और लो-पास फ़िल्टर क्या हैं?
उत्तर
विकिपीडिया:
ये "उच्च", "कम", और "बैंड" मामले आवृत्तियों को देखें। उच्च-पास में, आप निम्न आवृत्तियों को हटाने का प्रयास करते हैं। कम-पास में, आप उच्च को हटाने का प्रयास करते हैं। बैंड पास में, आप केवल एक सतत आवृत्ति रेंज रहने की अनुमति देते हैं।
कट ऑफ आवृत्ति का चयन आपके आवेदन पर निर्भर करता है। इन फिल्टर को कोडिंग या तो आरसी सर्किट को अनुकरण करके या अपने समय-आधारित डेटा के फूरियर ट्रांसफॉर्म के साथ खेलकर किया जा सकता है। कोड उदाहरणों के लिए विकिपीडिया लेख देखें।
वे आम तौर पर विद्युत सर्किट होते हैं जो एनालॉग सिग्नल के हिस्सों को पार करते हैं। उच्च पास उच्च आवृत्ति भागों में से अधिक संचारित करता है और कम पास कम आवृत्ति भागों को पारित करता है।
उन्हें सॉफ़्टवेयर में अनुकरण किया जा सकता है। एक चलने वाला औसत उदाहरण के लिए कम पास फ़िल्टर के रूप में कार्य कर सकता है और चलने वाले औसत और उसके इनपुट के बीच का अंतर उच्च पास फ़िल्टर के रूप में काम कर सकता है।
उच्च पास फिल्टर उच्च आवृत्ति (विस्तृत/स्थानीय जानकारी) पास सुविधा देता है।
कम-पास फिल्टर कम आवृत्ति (मोटे/किसी न किसी तरह/वैश्विक सूचना) पास सुविधा देता है।
का तरीका यहां बताया घुमाव का उपयोग कर एक कम पास फिल्टर लागू है:
double[] signal = (some 1d signal);
double[] filter = [0.25 0.25 0.25 0.25]; // box-car filter
double[] result = new double[signal.Length + filter.Length + 1];
// Set result to zero:
for (int i=0; i < result.Length; i++) result[i] = 0;
// Do convolution:
for (int i=0; i < signal.Length; i++)
for (int j=0; j < filter.Length; j++)
result[i+j] = result[i+j] + signal[i] * filter[j];
ध्यान दें कि उदाहरण के अत्यंत सरल है। यह रेंज चेक नहीं करता है और किनारों को ठीक से संभाल नहीं करता है। इस्तेमाल किया गया फ़िल्टर (बॉक्स-कार) एक विशेष रूप से खराब लोपास फ़िल्टर है, क्योंकि इससे कई कलाकृतियों (बजने) का कारण बनता है। फ़िल्टर डिजाइन पर पढ़ें।
आप आवृत्ति डोमेन में फ़िल्टर भी कार्यान्वित कर सकते हैं। यहाँ कैसे आप एक उच्च पास फिल्टर FFT का उपयोग कर लागू है:
double[] signal = (some 1d signal);
// Do FFT:
double[] real;
double[] imag;
[real, imag] = fft(signal)
// Set the first quarter of the real part to zero to attenuate the low frequencies
for (int i=0; i < real.Length/4; i++)
real[i] = 0;
// Do inverse FFT:
double[] highfrequencysignal = inversefft(real, imag);
फिर, यह सरल है, लेकिन आप विचार मिलता है। कोड गणित के रूप में जटिल नहीं दिखता है।
फ़िल्टरिंग डेटा को प्रोसेस करने के कार्य का वर्णन इस तरीके से करता है जो डेटा के भीतर विभिन्न आवृत्तियों के क्षीणन के विभिन्न स्तरों को लागू करता है।
एक उच्च पास फ़िल्टर उच्च आवृत्तियों के लिए न्यूनतम वांछित (यानी छोड़ने के स्तर अपरिवर्तित) लागू करेगा, लेकिन कम आवृत्तियों के लिए अधिकतम क्षीणन लागू होता है।
एक कम पास फ़िल्टर रिवर्स है - यह उच्च आवृत्तियों पर क्षीणन लागू होने पर कम आवृत्तियों के लिए कोई क्षीणन लागू नहीं करेगा।
उपयोग किए जाने वाले कई अलग-अलग फ़िल्टरिंग एल्गोरिदम हैं। दो सबसे सरल संभवतः परिमित इंपल्स प्रतिक्रिया फ़िल्टर (उर्फ एफआईआर फ़िल्टर) और अनंत इंपल्स प्रतिक्रिया फ़िल्टर (उर्फ आईआईआर फ़िल्टर) हैं।
एफआईआर फ़िल्टर नमूनों की एक श्रृंखला को रखकर और उनमें से प्रत्येक नमूने को एक निश्चित गुणांक (जो श्रृंखला में स्थिति पर आधारित है) द्वारा गुणा करके काम करता है। इनमें से प्रत्येक गुणा के परिणाम जमा किए गए हैं और उस नमूने के लिए आउटपुट है। इसे मल्टीप्ली-संचय के रूप में जाना जाता है - और समर्पित डीएसपी हार्डवेयर में बस ऐसा करने के लिए एक विशिष्ट मैक निर्देश है।
जब अगला नमूना लिया जाता है तो इसे श्रृंखला की शुरुआत में जोड़ा जाता है, और श्रृंखला में सबसे पुराना नमूना हटा दिया जाता है, और प्रक्रिया दोहराई जाती है।
फिल्टर गुणांक फ़िल्टर चयनकर्ताओं के चयन द्वारा तय किया जाता है।
छवि प्रोसेसिंग सॉफ़्टवेयर द्वारा अक्सर प्रदान किए जाने वाले सबसे सरल फ़िल्टरों में से एक औसत फ़िल्टर है। यह सभी फ़िल्टर गुणांक को एक ही मूल्य पर सेट करके एफआईआर फ़िल्टर द्वारा कार्यान्वित किया जा सकता है।
यहाँ सी में एक कम पास फिल्टर ++ कि एक समय में संकेत एक नमूना प्रक्रियाओं का एक सुपर सरल उदाहरण है:
float lopass(float input, float cutoff) {
lo_pass_output= outputs[0]+ (cutoff*(input-outputs[0]));
outputs[0]= lo_pass_output;
return(lo_pass_output);
}
यहाँ है काफी एक ही बात है, सिवाय इसके कि यह उच्च मार्ग है:
float hipass(float input, float cutoff) {
hi_pass_output=input-(outputs[0] + cutoff*(input-outputs[0]));
outputs[0]=hi_pass_output;
return(hi_pass_output);
}
मैं कोशिश कर रहा हूं कि आप कोड हैं, लेकिन मुझे समझ में नहीं आता कि "कटऑफ" क्या प्रतीक है। यह हर्टज़ में कटऑफ आवृत्ति नहीं है? –
उत्तर लगभग एक दशक पुराना है, हालांकि मुझे अभी भी विश्वास है कि यह "आउटपुट [0]" नहीं है जिसे गणना में लिया जाना चाहिए, लेकिन पिछले फ़िल्टर किए गए नमूना मूल्य। – Mike
संबंधित: https://dsp.stackexchange.com/questions/39063/simple-software-low-pass-filter –
- 1. लोपास फ़िल्टर को कैसे कार्यान्वित करें?
- 2. आईफोन एक्सेलेरोमीटर के लिए हाईपास फ़िल्टर कैसे कार्यान्वित करते हैं?
- 3. क्या न्यूटिट में कस्टम फ़िल्टर हैं?
- 4. jQuery फ़िल्टर और रिवर्स फ़िल्टर
- 5. लुसेन: क्वेरी और फ़िल्टर
- 6. इंडेक्स-फ़िल्टर और सह
- 7. सर्वलेट/सर्वलेट-मैपिंग और फ़िल्टर/फ़िल्टर-मैपिंग के बीच अंतर?
- 8. क्या हम LINQ के साथ डेटाटेबल फ़िल्टर कर सकते हैं?
- 9. गैबर फ़िल्टर और गैबर ट्रांसफॉर्म
- 10. फ़िल्टर बाध्यकारी फ़िल्टर
- 11. आप फ़िल्टर स्थितियों को कैसे जोड़ते हैं
- 12. Backbone.js संग्रह और Tastypie फ़िल्टर
- 13. जर्सी और फ़िल्टर अपवाद हैंडलिंग
- 14. एपेंगिन फ़िल्टर असमानता और ऑर्डरिंग
- 15. इंटरसेप्टर और फ़िल्टर के बीच अंतर - क्या यह सही है?
- 16. फ़िल्टर फ़िल्टर/iwarp
- 17. jQuery खोज और फ़िल्टर तालिका
- 18. एमवीसी इंडेक्स पेज और फ़िल्टर
- 19. फ़िल्टर
- 20. काल्मन फ़िल्टर बनाम घातीय फ़िल्टर
- 21. प्राधिकरण फ़िल्टर बनाम एक्शन फ़िल्टर
- 22. फ़िल्टर
- 23. फ़िल्टर
- 24. Django: chaining 'startwith' और 'iexact' क्वेरी फ़िल्टर?
- 25. _Unwind_SjLj_Unregister और _Unwind_SjLj_Register क्या हैं?
- 26. प्रक्षेपण और चयन क्या हैं?
- 27. "सीर" और "stderr" क्या हैं?
- 28. सिग्नल और स्लॉट क्या हैं?
- 29. ReservedCodeCacheSize और InitialCodeCacheSize क्या हैं?
- 30. क्या कलमैन फ़िल्टर की आवश्यकता है
कोड नमूने के लिए बहुत अच्छा है। दूसरे मामले में एक मामले और एफएफटी में क्यों विश्वास? – dfrankow
@dfrankow कोई विशेष कारण नहीं है। यह दिखाने के लिए कि यह विभिन्न डोमेन में कैसा दिखता है। इसे प्रतिबिंबित करने के लिए पाठ को अपडेट किया गया। धन्यवाद। – Hallgrim
क्या आप सुनिश्चित हैं कि आपके उत्तर का पहला भाग सही है, जहां आप एक आयत समारोह का उपयोग कर समय डोमेन में रूपांतरण लागू करते हैं? मैंने सोचा था कि समय डोमेन में एक कम-पास फ़िल्टर को sinc फ़ंक्शन के रूपांतरण की आवश्यकता होती है? – stackoverflowuser2010