]> Creatis software - clitk.git/blob - tools/clitkSignalFilter.cxx
0a833f3133e8263216024bcb63f31cbcac847c90
[clitk.git] / tools / clitkSignalFilter.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   clitk
4   Language:  C++
5                                                                                 
6   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
7   l'Image). All rights reserved. See Doc/License.txt or
8   http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
9                                                                                 
10      This software is distributed WITHOUT ANY WARRANTY; without even
11      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12      PURPOSE.  See the above copyright notices for more information.
13                                                                              
14 =========================================================================*/
15
16 #ifndef CLITKSIGNALFILTER_CXX
17 #define CLITKSIGNALFILTER_CXX
18 /**
19    =================================================
20    * @file   clitkSignalFilter.cxx
21    * @author Jef Vandemeulebroucke <jefvdmb@gmail.com>
22    * @date   23 April 2008
23    * 
24    * @brief  "Apply a filter to the signal"                  
25    =================================================*/
26
27 // clitk include
28 #include "clitkSignalFilter_ggo.h"
29 #include "clitkSignal.h"
30 #include "clitkIO.h"
31 #include "clitkImageCommon.h"
32
33 int main(int argc, char * argv[]) {
34
35   // Init command line
36   GGO(clitkSignalFilter, args_info);
37   CLITK_INIT;
38
39   //input
40   clitk::Signal input;
41   input.Read (args_info.input_arg);
42   clitk::Signal input2;
43   if (args_info.input2_given) input2.Read(args_info.input2_arg);
44
45   double p1 = args_info.p1_arg;
46   double p2 = args_info.p2_arg;
47
48   //process
49
50   if( args_info.multiply_flag) input*=input2;
51   if( args_info.divide_flag) input/=input2;
52   if( args_info.norm_flag) input=input.Normalize (p1, p2);
53   if( args_info.highPass_flag) input=input.HighPassFilter(p1,p2);
54   if( args_info.lowPass_flag) input=input.LowPassFilter(p1,p2);
55   if( args_info.detect_flag) input=input.DetectLocalExtrema(static_cast<unsigned int >(p1));
56   if( args_info.limPhase_flag) input=input.LimPhase();
57   if( args_info.monPhase_flag) input=input.MonPhase();
58   if( args_info.monPhaseDE_flag) input=input.MonPhaseDE(p1,p2);
59   if( args_info.average_flag) input=input.MovingAverageFilter(static_cast<unsigned int> (p1));
60   if( args_info.ssd_flag) std::cout<<"The sqrt of the mean SSD is "<< input.SSD(input2)<<std::endl;
61   if (args_info.gauss_flag)input=input.GaussLikeFilter();
62   if (args_info.rescale_flag)input=input.NormalizeMeanStdDev(p1, p2);
63   if (args_info.interp_flag)input=input.LinearlyInterpolateScatteredValues();
64   // if( args_info.approx_flag) input=input.ApproximateScatteredValuesWithBSplines(static_cast<unsigned int>(p1),static_cast<unsigned int>(p2));
65   if( args_info.limit_flag) input=input.LimitSignalRange();
66 //   if( args_info._flag) input=input;
67 //   if( args_info._flag) input=input;
68 //   if( args_info._flag) input=input;
69 //   if( args_info._flag) input=input;
70   // if( args_info._flag) input=input;
71   // if( args_info._flag) input=input;
72   // if( args_info._flag) input=input;
73
74   if (args_info.output_given) input.Write(args_info.output_arg);
75
76   return EXIT_SUCCESS;
77   
78 }
79
80 #endif