3BandFilter.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _ThreeBandFilter_
00025 #define _ThreeBandFilter_
00026
00027 #include "InPort.hxx"
00028 #include "OutPort.hxx"
00029 #include "InControl.hxx"
00030 #include "Frame.hxx"
00031 #include "FrameTransformation.hxx"
00032 #include "FrameTransformationConfig.hxx"
00033
00034 namespace CLAM{
00035
00036 class ThreeBandFilter: public FrameTransformationTmpl<Spectrum>
00037 {
00038 InPort<Spectrum> mIn;
00039 OutPort<Spectrum> mOut;
00040
00041 InControl mLowCutoffFreqCtl;
00042 InControl mHighCutoffFreqCtl;
00043 InControl mLowGainCtl;
00044 InControl mMidGainCtl;
00045 InControl mHighGainCtl;
00046 public:
00047 const char* GetClassName() const
00048 {
00049 return "ThreeBandFilter";
00050 }
00051
00052 ThreeBandFilter()
00053 :
00054 mIn("In Spectrum", this),
00055 mOut("Out Spectrum", this) ,
00056 mLowCutoffFreqCtl("LowCutoff", this),
00057 mHighCutoffFreqCtl("HighCutoff", this),
00058 mLowGainCtl("LowGain", this),
00059 mMidGainCtl("MidGain", this),
00060 mHighGainCtl("HighGain", this)
00061 {
00062 Configure( FrameTransformationConfig() );
00063 }
00064
00065 ~ThreeBandFilter() {}
00066
00067 bool ConcreteConfigure( const ProcessingConfig& config )
00068 {
00069 mLowCutoffFreqCtl.SetBounds(0.,1000000.);
00070 mLowCutoffFreqCtl.DoControl(1000.);
00071
00072 mHighCutoffFreqCtl.SetBounds(0.,1000000.);
00073 mHighCutoffFreqCtl.DoControl(5000.);
00074
00075 mLowGainCtl.SetBounds(0,100);
00076 mLowGainCtl.DoControl(0);
00077
00078 mMidGainCtl.SetBounds(0,100);
00079 mMidGainCtl.DoControl(0);
00080
00081 mHighGainCtl.SetBounds(0,100);
00082 mHighGainCtl.DoControl(0);
00083 return true;
00084 }
00085
00086 bool Do(const Frame& in, Frame& out)
00087 {
00088 return Do(in.GetSpectrum(),
00089 out.GetSpectrum());
00090 }
00091
00092 bool Do(const Spectrum& in, Spectrum& out);
00093
00094 bool Do()
00095 {
00096 bool result = Do(mIn.GetData(), mOut.GetData());
00097 mIn.Consume();
00098 mOut.Produce();
00099 return result;
00100 }
00101 };
00102 };
00103
00104 #endif // _ThreeBandFilter_