#include #include #include #include #include #include #include // ------------------------------------------------------------------------- const unsigned int Dim = 3; typedef unsigned short TPixel; typedef float TScalar; typedef itk::Image< TPixel, Dim > TImage; typedef itk::ImageFileReader< TImage > TImageReader; typedef itk::HausdorffDistanceImageFilter< TImage, TImage > TDistance; // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { if( argc < 3 ) { std::cerr << "Usage: " << argv[ 0 ] << " first_image second_image" << std::endl; return( 1 ); } // fi std::string first_image_fn = argv[ 1 ]; std::string second_image_fn = argv[ 2 ]; // Read image TImageReader::Pointer first_image_reader = TImageReader::New( ); TImageReader::Pointer second_image_reader = TImageReader::New( ); first_image_reader->SetFileName( first_image_fn ); second_image_reader->SetFileName( second_image_fn ); try { first_image_reader->Update( ); second_image_reader->Update( ); } catch( itk::ExceptionObject& err ) { std::cerr << "Error caught: " << err << std::endl; return( 1 ); } // yrt TDistance::Pointer distance = TDistance::New( ); distance->SetInput1( first_image_reader->GetOutput( ) ); distance->SetInput2( second_image_reader->GetOutput( ) ); distance->Update( ); std::cout << "Hausdorff distance = " << distance->GetHausdorffDistance( ) << std::endl; return( 0 ); } // eof - $RCSfile$