1 #include "BaseFunctions.h"
3 #include <fpa/Image/SkeletonFilter.h>
4 #include <fpa/Image/SkeletonWriter.h>
6 // -------------------------------------------------------------------------
7 const unsigned int Dim = 3;
10 typedef itk::Image< TPixel, Dim > TInputImage;
11 typedef fpa::Image::SkeletonFilter< TInputImage > TFilter;
13 // -------------------------------------------------------------------------
14 int main( int argc, char* argv[] )
20 << "Usage: " << argv[ 0 ]
21 << " input_image output_skeleton ..."
26 std::string input_image_filename = argv[ 1 ];
27 std::string output_skeleton_filename = argv[ 2 ];
30 TInputImage::Pointer image;
31 std::string err1 = fpa::tests::image::Read( image, input_image_filename );
34 std::cerr << "Error caught: " << err1 << std::endl;
40 TFilter::Pointer filter = TFilter::New( );
41 filter->SetInput( image );
46 TInputImage::PointType pnt;
47 pnt[ 0 ] = std::atof( argv[ 3 ] );
48 pnt[ 1 ] = std::atof( argv[ 4 ] );
49 pnt[ 2 ] = std::atof( argv[ 5 ] );
51 TInputImage::IndexType seed;
52 image->TransformPhysicalPointToIndex( pnt, seed );
54 filter->SeedFromMaximumDistanceOff( );
55 filter->SetSeed( seed );
58 filter->SeedFromMaximumDistanceOn( );
60 // Configure distance map
61 filter->GetDistanceMap( )->InsideIsPositiveOn( );
62 filter->GetDistanceMap( )->SquaredDistanceOff( );
63 filter->GetDistanceMap( )->UseImageSpacingOn( );
69 fpa::Image::SkeletonWriter< TFilter::TSkeleton >::Pointer writer =
70 fpa::Image::SkeletonWriter< TFilter::TSkeleton >::New( );
71 writer->SetInput( filter->GetOutput( ) );
72 writer->SetFileName( output_skeleton_filename );
77 catch( std::exception& err )
79 std::cerr << "Error caught: " << err.what( ) << std::endl;