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 InControl mFreqCtl;
00043 InControl mBandwidthCtl;
00044 InControl mGainCtl;
00045 InControl mOscFreqCtl;
00046 InControl 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_