]> Creatis software - clitk.git/blob - tools/clitkSignalMeanPositionFilter.h
980c0a5278a4a5f5ff78fcf34b2e6f6301a2f2da
[clitk.git] / tools / clitkSignalMeanPositionFilter.h
1 /*=========================================================================
2                                                                                 
3   Program:   clitk
4   Module:    $RCSfile: clitkSignalMeanPositionFilter.h,v $
5   Language:  C++
6   Date:      $Date: 2010/02/10 14:55:00 $
7   Version:   $Revision: 1.4 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                              
17 =========================================================================*/
18
19 #ifndef CLITKSIGNALMEANPOSITIONFILTER_H
20 #define CLITKSIGNALMEANPOSITIONFILTER_H
21
22 #include "clitkSignalMeanPositionTracking_ggo.h"
23 #include "clitkSignal.h"
24 #include "clitkEllipse.h"
25 #include "itkVector.h"
26 #include <math.h>
27
28 namespace clitk {
29
30   //---------------------------------------------------------------------
31   class SignalMeanPositionFilter {
32   public:
33     typedef itk::Vector<double,2> Vector2d;
34
35     void SetParameters(args_info_clitkSignalMeanPositionTracking & args_info);
36     void Update();
37     
38   protected:    
39     args_info_clitkSignalMeanPositionTracking args_info;
40     clitk::Signal mInput;
41     clitk::Signal mAugmentedInputX;
42     clitk::Signal mAugmentedInputY;
43     int mAugmentationDelay;
44     int mMaxIteration;
45     double mEta;
46     bool mEtaIsSet;
47     bool mOutputFilenameIsSet;
48     bool mOutputResidualFilenameIsSet;
49     bool mOutputAugmentedFilenameIsSet;
50     std::string mOutputFilename;
51     std::string mOutputResidualFilename;
52     std::string mOutputAugmentedFilename;
53     bool mVerbose;
54     bool mVerboseIteration;
55     bool mIsAdaptiveMethod;
56     std::vector<double> mCurrentResidual;
57     int mWindowLength;
58     std::vector<clitk::Ellipse*> mListOfEllipses;
59     
60     bool mValidationWithRealPhase;
61     std::string mInputPhaseFilename;
62     clitk::Signal mInputPhase;
63     std::vector<int> mCycles;
64
65     std::vector<int> mIsoPhaseIndex;
66     std::vector<double> mIsoPhaseDelta;
67     std::vector<int> mIsoPhaseDeltaNb;
68     std::vector<double> mIsoPhaseRefAngle;
69
70     bool mUseLearnedDeltaPhase;
71     clitk::Signal mLearnIsoPhaseDelta;
72     int mNumberOfIsoPhase;
73
74     void FitEllipse(clitk::Ellipse & An);
75     void AdaptiveFitEllipse(clitk::Ellipse & An);
76
77     void ComputeIsoPhase(std::vector<clitk::Ellipse*> & l, 
78                          std::vector<double> & phase,
79                          std::vector<int> & cycles);
80   };
81   //---------------------------------------------------------------------
82   
83 } // end namespace
84
85 #endif