#include #include #include #include #include #include #include #include // ------------------------------------------------------------------------- typedef short TPixel; typedef float TScalar; const unsigned int Dimension = 2; typedef itk::CovariantVector< TScalar, Dimension > TVector; typedef itk::Image< TPixel, Dimension > TImage; typedef itk::Image< TVector, Dimension > TGradient; // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { if( argc < 4 ) { std::cout << "Usage: " << argv[ 0 ] << " input_image output_gradient s0 s1 ..." << std::endl; return( 1 ); } // fi std::string image_fn = argv[ 1 ]; std::string gradient_fn = argv[ 2 ]; // Read image itk::ImageFileReader< TImage >::Pointer image_reader = itk::ImageFileReader< TImage >::New( ); image_reader->SetFileName( image_fn ); try { image_reader->Update( ); } catch( itk::ExceptionObject& err ) { std::cerr << err << std::endl; return( 1 ); } // yrt // Prepare filter typedef cpPlugins::Extensions::Algorithms:: MultiScaleGaussianImageFilter< TImage, TGradient > TFilter; TFilter::Pointer filter = TFilter::New( ); filter->SetFilterToGradient( ); filter->SetInput( image_reader->GetOutput( ) ); for( int i = 3; i < argc; ++i ) filter->AddScale( std::atof( argv[ i ] ) ); // Execute filter itk::SimpleFilterWatcher filter_watcher( filter, "Gradient" ); filter->Update( ); // Read image itk::ImageFileWriter< TGradient >::Pointer gradient_writer = itk::ImageFileWriter< TGradient >::New( ); gradient_writer->SetInput( filter->GetOutput( ) ); gradient_writer->SetFileName( gradient_fn ); try { gradient_writer->Update( ); } catch( itk::ExceptionObject& err ) { std::cerr << err << std::endl; return( 1 ); } // yrt return( 0 ); } // eof - $RCSfile$