]> Creatis software - FrontAlgorithms.git/blob - tests/image/SkeletonFilter.cxx
...
[FrontAlgorithms.git] / tests / image / SkeletonFilter.cxx
1 #include "BaseFunctions.h"
2 #include <itkImage.h>
3 #include <fpa/Image/SkeletonFilter.h>
4
5 // -------------------------------------------------------------------------
6 const unsigned int Dim = 3;
7 typedef short TPixel;
8
9 typedef itk::Image< TPixel, Dim >                 TInputImage;
10 typedef fpa::Image::SkeletonFilter< TInputImage > TFilter;
11
12 // -------------------------------------------------------------------------
13 int main( int argc, char* argv[] )
14 {
15   // Get arguments
16   if( argc < 3 )
17   {
18     std::cerr
19       << "Usage: " << argv[ 0 ]
20       << " input_image output_skeleton ..."
21       << std::endl;
22     return( 1 );
23
24   } // fi
25   std::string input_image_filename = argv[ 1 ];
26   std::string output_skeleton_filename = argv[ 2 ];
27
28   // Read image
29   TInputImage::Pointer image;
30   std::string err1 = fpa::tests::image::Read( image, input_image_filename );
31   if( err1 != "" )
32   {
33     std::cerr << "Error caught: " << err1 << std::endl;
34     return( 1 );
35
36   } // fi
37
38   // Prepare filter
39   TFilter::Pointer filter = TFilter::New( );
40   filter->SetInput( image );
41
42   // Configure seed
43   if( argc == 6 )
44   {
45     TInputImage::PointType pnt;
46     pnt[ 0 ] = std::atof( argv[ 3 ] );
47     pnt[ 1 ] = std::atof( argv[ 4 ] );
48     pnt[ 2 ] = std::atof( argv[ 5 ] );
49
50     TInputImage::IndexType seed;
51     image->TransformPhysicalPointToIndex( pnt, seed );
52
53     filter->SeedFromMaximumDistanceOff( );
54     filter->SetSeed( seed );
55   }
56   else
57     filter->SeedFromMaximumDistanceOn( );
58
59   // Update
60   filter->Update( );
61
62   // Save results
63   /* TODO
64      std::string err1 =
65      fpa::tests::image::Write( filter->GetOutput( ), output_image_filename );
66      std::string err2 =
67      fpa::tests::image::Write( filter->GetMarks( ), output_marks_filename );
68      if( err1 != "" ) std::cerr << err1 << std::endl;
69      if( err2 != "" ) std::cerr << err2 << std::endl;
70   */
71   return( 0 );
72 }
73
74 // eof - $RCSfile$