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_