]> Creatis software - cpPlugins.git/blob - appli/examples/example_1DImageGradient.cxx
...
[cpPlugins.git] / appli / examples / example_1DImageGradient.cxx
1 #include <cstdlib>
2 #include <iostream>
3 #include <string>
4
5 #include <itkImage.h>
6 #include <itkImageFileReader.h>
7 #include <itkImageFileWriter.h>
8 #include <itkSimpleFilterWatcher.h>
9
10 #include <cpPlugins/Extensions/Algorithms/MultiScaleGaussianImageFilter.h>
11
12 // -------------------------------------------------------------------------
13 typedef short        TPixel;
14 typedef float        TScalar;
15 const   unsigned int Dimension = 2;
16
17 typedef itk::CovariantVector< TScalar, Dimension  > TVector;
18 typedef itk::Image< TPixel,  Dimension >            TImage;
19 typedef itk::Image< TVector, Dimension >            TGradient;
20
21 // -------------------------------------------------------------------------
22 int main( int argc, char* argv[] )
23 {
24   if( argc < 4 )
25   {
26     std::cout
27       << "Usage: " << argv[ 0 ]
28       << " input_image output_gradient s0 s1 ..."
29       << std::endl;
30     return( 1 );
31
32   } // fi
33   std::string image_fn = argv[ 1 ];
34   std::string gradient_fn = argv[ 2 ];
35
36   // Read image
37   itk::ImageFileReader< TImage >::Pointer image_reader =
38     itk::ImageFileReader< TImage >::New( );
39   image_reader->SetFileName( image_fn );
40   try
41   {
42     image_reader->Update( );
43   }
44   catch( itk::ExceptionObject& err )
45   {
46     std::cerr << err << std::endl;
47     return( 1 );
48
49   } // yrt
50
51   // Prepare filter
52   typedef cpPlugins::Extensions::Algorithms::
53     MultiScaleGaussianImageFilter< TImage, TGradient > TFilter;
54
55   TFilter::Pointer filter = TFilter::New( );
56   filter->SetFilterToGradient( );
57   filter->SetInput( image_reader->GetOutput( ) );
58   for( int i = 3; i < argc; ++i )
59     filter->AddScale( std::atof( argv[ i ] ) );
60
61   // Execute filter
62   itk::SimpleFilterWatcher filter_watcher( filter, "Gradient" );
63   filter->Update( );
64
65   // Read image
66   itk::ImageFileWriter< TGradient >::Pointer gradient_writer =
67     itk::ImageFileWriter< TGradient >::New( );
68   gradient_writer->SetInput( filter->GetOutput( ) );
69   gradient_writer->SetFileName( gradient_fn );
70   try
71   {
72     gradient_writer->Update( );
73   }
74   catch( itk::ExceptionObject& err )
75   {
76     std::cerr << err << std::endl;
77     return( 1 );
78
79   } // yrt
80
81   return( 0 );
82 }
83
84 // eof - $RCSfile$