]> Creatis software - clitk.git/blob - tools/clitkSignalApparentMotionTrackingFilter.h
- add clitkSignalApparentMotionTracking
[clitk.git] / tools / clitkSignalApparentMotionTrackingFilter.h
1 /*=========================================================================
2                                                                                 
3   Program:   clitk
4   Module:    $RCSfile: clitkSignalApparentMotionTrackingFilter.h,v $
5   Language:  C++
6   Date:      $Date: 2010/03/03 12:41:27 $
7   Version:   $Revision: 1.1 $
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 SIGNALAPPARENTMOTIONTRACKINGFILTER_H
20 #define SIGNALAPPARENTMOTIONTRACKINGFILTER_H
21
22 #include "clitkSignalApparentMotionTracking_ggo.h"
23 #include "clitkSignal.h"
24 #include "clitkEllipse.h"
25 #include "clitkTrajectory2D.h"
26 #include "itkVector.h"
27 #include <math.h>
28
29 namespace clitk {
30
31   //---------------------------------------------------------------------
32   class SignalApparentMotionTrackingFilter {
33   public:
34     typedef itk::Vector<double,2> Vector2d;
35
36     void SetParameters(args_info_clitkSignalApparentMotionTracking & args_info);
37     void Update();
38     
39   protected:    
40     args_info_clitkSignalApparentMotionTracking args_info;
41     clitk::Signal mRefU;
42     clitk::Signal mRefV;
43     clitk::Signal mRefPhase;
44     clitk::Signal mInputU;
45     clitk::Signal mInputV;
46     clitk::Signal mMeanU;
47     clitk::Signal mMeanV;
48     clitk::Signal mIsoPhaseU;
49     clitk::Signal mIsoPhaseV;
50     double mRefSampling;
51
52     std::vector<Trajectory2D> mReferenceTrajectoriesBD;
53     clitk::Signal mReferencePhase;
54     clitk::Trajectory2D mInput;
55     clitk::Trajectory2D mInputRelative;
56     clitk::Trajectory2D mInputMean;
57     std::vector<Vector2d> mReferenceMean;
58
59     void ComputeMeanAndIsoPhase(clitk::Signal & s, int delay, int L, int nbIso,
60                                 clitk::Signal & mean, clitk::Signal & isoPhase);
61     void ComputeMeanAndIsoPhase(clitk::Trajectory2D & s, int delay, int L,
62                                 int nbIsoPhase, clitk::Trajectory2D & mean, 
63                                 std::vector<int> & isoPhase);
64     void EstimatePhase(const clitk::Trajectory2D & input, 
65                        const int begin, const int end, 
66                        const clitk::Trajectory2D & ref, 
67                        const clitk::Signal & phaseref, 
68                        clitk::Signal & phase);
69     int FindPhaseDelta(const clitk::Trajectory2D & A, const clitk::Trajectory2D & B) const;
70     int FindClosestTrajectory(const std::vector<Vector2d> & meanlist, const Vector2d & mean);
71     void ReadDB(std::string filename, std::vector<Trajectory2D> & bd);
72   };
73   //---------------------------------------------------------------------
74   
75 } // end namespace
76
77 #endif