00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SPECTRALODF_H
00020 #define SPECTRALODF_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00025 #include "SpectralODFBase.h"
00026
00068 class SpectralODF : SpectralODFBase {
00069 public:
00076 enum ODFMethod {
00077 FLUX = 0 ,
00078 HIGH_FREQUENCY_CONTENT = 1 ,
00079 PHASE_DEVIATION = 2 ,
00080 WEIGHTED_PHASE_DEVIATION = 3 ,
00081 NORM_WEIGHTED_PHASE_DEVIATION = 4 ,
00082 MODIFIED_KULLBACK_LIEBLER = 5 ,
00083 COMPLEX_DOMAIN = 6 ,
00084 RECTIFIED_COMPLEX_DOMAIN = 7 ,
00085 CENTER_OF_GRAVITY = 8
00086 };
00087
00088 protected:
00089
00090 ODFMethod _odfMethod;
00091
00092
00093 SpectralODFBase* _odf;
00094
00095 public:
00104 SpectralODF(int fftSize = 1024, ODFMethod odfMethod = COMPLEX_DOMAIN);
00105
00109 ~SpectralODF();
00110
00111 void setup();
00112 void reset();
00113
00130 void process(const MatrixXC& ffts, MatrixXR* odfs);
00131
00137 ODFMethod odfMethod() const;
00138
00157 void setOdfMethod( ODFMethod method, bool callSetup = true );
00158
00159 };
00160
00161 #endif