1 #include <itkCommand.h>
3 #include <itkImageFileWriter.h>
5 #include <fpa/Image/RegionGrow.h>
6 #include <fpa/Image/Functors/RegionGrow/Tautology.h>
8 // -------------------------------------------------------------------------
9 typedef unsigned char TPixel;
10 typedef itk::Image< TPixel, 2 > TImage;
11 typedef itk::ImageFileWriter< TImage > TWriter;
13 typedef fpa::Image::RegionGrow< TImage, TImage > TFilter;
14 typedef fpa::Image::Functors::RegionGrow::Tautology< TPixel > TPredicate;
16 // -------------------------------------------------------------------------
17 int main( int argc, char* argv[] )
23 << "Usage: " << argv[ 0 ]
24 << " output_image width height s0x s0y s1x s1y ..."
29 std::string output_image_filename = argv[ 1 ];
30 TImage::SizeType size;
31 size[ 0 ] = std::atoi( argv[ 2 ] );
32 size[ 1 ] = std::atoi( argv[ 3 ] );
34 TImage::Pointer input = TImage::New( );
35 input->SetRegions( size );
37 input->FillBuffer( 0 );
39 TPredicate::Pointer predicate = TPredicate::New( );
41 TFilter::Pointer filter = TFilter::New( );
42 filter->SetInput( input );
43 filter->SetPredicate( predicate );
44 for( int i = 4; i < argc; i += 2 )
48 TImage::IndexType seed;
49 seed[ 0 ] = std::atoi( argv[ i ] );
50 seed[ 1 ] = std::atoi( argv[ i + 1 ] );
51 filter->AddSeed( seed );
56 filter->SetInsideValue( 255 );
57 filter->SetOutsideValue( 0 );
59 TWriter::Pointer writer = TWriter::New( );
60 writer->SetInput( filter->GetOutput( ) );
61 writer->SetFileName( output_image_filename );
66 catch( std::exception& err )
68 std::cerr << "ERROR: " << err.what( ) << std::endl;