00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SPECTRALODFCOMPLEX_H
00020 #define SPECTRALODFCOMPLEX_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00025 #include "SpectralODFBase.h"
00026 #include "Unwrap.h"
00027
00028 class SpectralODFComplex : public SpectralODFBase {
00029 protected:
00030
00031 int _fftSize;
00032 int _halfSize;
00033 bool _rectified;
00034
00035
00036 Unwrap _unwrap;
00037
00038 MatrixXC _unwrappedSpectrum;
00039 MatrixXR _unwrappedAngle;
00040 MatrixXC _spectrumPredict;
00041 MatrixXR _predictionError;
00042
00043 void spectralDistanceEuclidean(const MatrixXC& spectrum, const MatrixXR& spectrumAbs, const MatrixXR& spectrumArg, MatrixXR* odfValues);
00044
00045 public:
00046 SpectralODFComplex(int fftSize, bool rectified = false);
00047
00048 ~SpectralODFComplex();
00049
00050 void setup();
00051 void reset();
00052
00053 void process(const MatrixXC& fft, MatrixXR* odfValue);
00054
00055
00056 };
00057
00058 #endif