OscillatingSpectralNotch.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 _OscillatingSpectralNotch_
00025 #define _OscillatingSpectralNotch_
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 #include "SimpleOscillator.hxx"
00034
00035 namespace CLAM{
00036
00037 class OscillatingSpectralNotch: public FrameTransformationTmpl<Spectrum>
00038 {
00039 InPort<Spectrum> mIn;
00040 OutPort<Spectrum> mOut;
00041
00042 FloatInControl mFreqCtl;
00043 FloatInControl mBandwidthCtl;
00044 FloatInControl mGainCtl;
00045 FloatInControl mOscFreqCtl;
00046 FloatInControl mOscWidthCtl;
00047
00048 public:
00049 const char* GetClassName() const
00050 {
00051 return "OscillatingSpectralNotch";
00052 }
00053
00054 OscillatingSpectralNotch()
00055 :
00056 mIn("In Spectrum", this),
00057 mOut("Out Spectrum", this),
00058 mFreqCtl("Freq", this),
00059 mBandwidthCtl("Bandwidth", this),
00060 mGainCtl("Gain",this),
00061 mOscFreqCtl("OscFreq", this),
00062 mOscWidthCtl("OscWidth",this)
00063 {
00064 Configure( FrameTransformationConfig() );
00065 }
00066
00067 ~OscillatingSpectralNotch() {}
00068 bool ConcreteConfigure( const ProcessingConfig& config )
00069 {
00070 mFreqCtl.SetBounds(80,15000);
00071 mFreqCtl.DoControl(1000);
00072
00073 mBandwidthCtl.SetBounds(1,1000);
00074 mBandwidthCtl.DoControl(100);
00075
00076 mGainCtl.SetBounds(-60,60);
00077 mGainCtl.DoControl(0);
00078
00079 mOscFreqCtl.SetBounds(0.1,5);
00080 mOscFreqCtl.DoControl(1);
00081
00082 mOscWidthCtl.SetBounds(5,200);
00083 mOscWidthCtl.DoControl(50);
00084 return true;
00085 }
00086
00087
00088
00089
00090
00091
00092 bool Do(const Frame& in, Frame& out)
00093 {
00094 return Do(in.GetSpectrum(),
00095 out.GetSpectrum());
00096 }
00097
00098 bool Do(const Spectrum& in, Spectrum& out);
00099
00100 bool Do()
00101 {
00102 bool result = Do(mIn.GetData(), mOut.GetData());
00103 mIn.Consume();
00104 mOut.Produce();
00105 return result;
00106 }
00107 private:
00108 SimpleOscillator mOscillator;
00109
00110 };
00111 };
00112
00113 #endif // _OscillatingSpectralNotch_