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