X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tests%2Fimage%2FRegionGrow_Tautology.cxx;fp=tests%2Fimage%2FRegionGrow_Tautology.cxx;h=7cdffa53628c5109e54d2303be412053adec7691;hb=3a438326c6901fafd9be8b5446a828aa5f63a1cc;hp=0000000000000000000000000000000000000000;hpb=247e634a1320371673c4b03bc94195d04fb997f5;p=FrontAlgorithms.git diff --git a/tests/image/RegionGrow_Tautology.cxx b/tests/image/RegionGrow_Tautology.cxx new file mode 100644 index 0000000..7cdffa5 --- /dev/null +++ b/tests/image/RegionGrow_Tautology.cxx @@ -0,0 +1,87 @@ +#include "BaseFunctions.h" +#include +#include +#include + +// ------------------------------------------------------------------------- +const unsigned int Dim = 2; +typedef unsigned char TPixel; + +typedef itk::Image< TPixel, Dim > TImage; +typedef fpa::Image::RegionGrow< TImage, TImage > TFilter; +typedef fpa::Base::Functors::RegionGrow::Tautology< TPixel > TPredicate; + +// ------------------------------------------------------------------------- +int main( int argc, char* argv[] ) +{ + // Get arguments + if( argc < 6 ) + { + std::cerr + << "Usage: " << argv[ 0 ] + << " output_image output_marks width height visual_debug ..." + << std::endl; + return( 1 ); + + } // fi + std::string output_image_filename = argv[ 1 ]; + std::string output_marks_filename = argv[ 2 ]; + int width = std::atoi( argv[ 3 ] ); + int height = std::atoi( argv[ 4 ] ); + bool visual_debug = ( argv[ 5 ][ 0 ] == '1' ); + + // Create image + TImage::Pointer image; + fpa::tests::image::CreateImage( image, 0, width, height, 1.0, 1.0 ); + + // Interact with image + fpa::tests::image::Viewer< TFilter > viewer( image ); + if( visual_debug ) + { + viewer.ActivateSeedWidget( ); + viewer.Show( ); + + } // fi + + // Prepare predicate + TPredicate::Pointer predicate = TPredicate::New( ); + + // Prepare filter + TFilter::Pointer filter = TFilter::New( ); + filter->SetInput( image ); + filter->SetPredicate( predicate ); + filter->SetInsideValue( 255 ); + filter->SetOutsideValue( 0 ); + + // Get all seeds + for( int i = 6; i < argc; i += 2 ) + { + if( i + 1 < argc ) + { + TImage::IndexType seed; + seed[ 0 ] = std::atoi( argv[ i ] ); + seed[ 1 ] = std::atoi( argv[ i + 1 ] ); + filter->AddSeed( seed ); + + } // fi + + } // rof + viewer.AssociateSeedsTo( filter ); + + // Prepare visual debug and update + if( visual_debug ) + viewer.ObserveFilter( filter ); + filter->Update( ); + + // Save results + std::string err1 = + fpa::tests::image::Write( filter->GetOutput( ), output_image_filename ); + std::string err2 = + fpa::tests::image::Write( filter->GetMarks( ), output_marks_filename ); + if( err1 != "" ) std::cerr << err1 << std::endl; + if( err2 != "" ) std::cerr << err2 << std::endl; + + return( 0 ); +} + +// eof - $RCSfile$