]> Creatis software - FrontAlgorithms.git/blob - examples/Skeleton_00.cxx
5ddb5e48919cc4442f40458d009ccf579c933df7
[FrontAlgorithms.git] / examples / Skeleton_00.cxx
1 #include <itkImage.h>
2 #include <itkImageFileReader.h>
3 #include <itkSignedMaurerDistanceMapImageFilter.h>
4 #include <itkMinimumMaximumImageCalculator.h>
5 #include <fpa/Image/SkeletonFilter.h>
6
7 // -------------------------------------------------------------------------
8 typedef itk::Image< double, 2 >                                   TImage;
9 typedef itk::ImageFileReader< TImage >                            TReader;
10 typedef itk::SignedMaurerDistanceMapImageFilter< TImage, TImage > TDMap;
11 typedef itk::MinimumMaximumImageCalculator< TImage >              TMinMax;
12 typedef fpa::Image::SkeletonFilter< TImage >                      TFilter;
13
14 // -------------------------------------------------------------------------
15 int main( int argc, char* argv[] )
16 {
17   if( argc < 2 )
18   {
19     std::cerr
20       << "Usage: " << argv[ 0 ]
21       << " input_filename" << std::endl;
22     return( 1 );
23
24   } // fi
25   std::string in_fname = argv[ 1 ];
26
27   TReader::Pointer reader = TReader::New( );
28   reader->SetFileName( in_fname );
29
30   TDMap::Pointer dmap = TDMap::New( );
31   dmap->SetInput( reader->GetOutput( ) );
32   dmap->InsideIsPositiveOn( );
33   dmap->SquaredDistanceOff( );
34   dmap->UseImageSpacingOn( );
35   dmap->Update( );
36
37   TMinMax::Pointer minmax = TMinMax::New( );
38   minmax->SetImage( dmap->GetOutput( ) );
39   minmax->Compute( );
40
41   TFilter::Pointer filter = TFilter::New( );
42   filter->SetInput( dmap->GetOutput( ) );
43   filter->AddSeed( minmax->GetIndexOfMaximum( ), 0 );
44   filter->Update( );
45
46   return( 0 );
47 }
48
49 // eof - $RCSfile$