#include #include #include #include #include #include // ------------------------------------------------------------------------- typedef itk::Image< double, 2 > TImage; typedef itk::ImageFileReader< TImage > TReader; typedef itk::SignedMaurerDistanceMapImageFilter< TImage, TImage > TDMap; typedef itk::MinimumMaximumImageCalculator< TImage > TMinMax; typedef fpa::Image::SkeletonFilter< TImage > TFilter; typedef TFilter::TSkeleton TSkeleton; typedef cpExtensions::Algorithms::SkeletonWriter< TSkeleton > TWriter; // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { if( argc < 3 ) { std::cerr << "Usage: " << argv[ 0 ] << " input_filename output_filename" << std::endl; return( 1 ); } // fi std::string in_fname = argv[ 1 ]; std::string out_fname = argv[ 2 ]; TReader::Pointer reader = TReader::New( ); reader->SetFileName( in_fname ); TDMap::Pointer dmap = TDMap::New( ); dmap->SetInput( reader->GetOutput( ) ); dmap->InsideIsPositiveOn( ); dmap->SquaredDistanceOff( ); dmap->UseImageSpacingOn( ); dmap->Update( ); TMinMax::Pointer minmax = TMinMax::New( ); minmax->SetImage( dmap->GetOutput( ) ); minmax->Compute( ); TFilter::Pointer filter = TFilter::New( ); filter->SetInput( dmap->GetOutput( ) ); filter->AddSeed( minmax->GetIndexOfMaximum( ), 0 ); filter->Update( ); TWriter::Pointer writer = TWriter::New( ); writer->SetInput( filter->GetSkeleton( ) ); writer->SetFileName( out_fname ); writer->Update( ); return( 0 ); } // eof - $RCSfile$