1 #include <itkCommand.h>
3 #include <itkImageFileReader.h>
4 #include <itkImageFileWriter.h>
6 #include <fpa/Image/RegionGrow.h>
7 #include <fpa/Image/Functors/RegionGrow/BinaryThreshold.h>
9 // -------------------------------------------------------------------------
10 typedef unsigned char TPixel;
11 typedef itk::Image< TPixel, 2 > TImage;
12 typedef itk::ImageFileReader< TImage > TReader;
13 typedef itk::ImageFileWriter< TImage > TWriter;
15 typedef fpa::Image::RegionGrow< TImage, TImage > TFilter;
16 typedef fpa::Image::Functors::RegionGrow::BinaryThreshold< TPixel > TPredicate;
18 // -------------------------------------------------------------------------
19 int main( int argc, char* argv[] )
25 << "Usage: " << argv[ 0 ]
26 << " input_image output_image lower upper s0x s0y s1x s1y ..."
31 std::string input_image_filename = argv[ 1 ];
32 std::string output_image_filename = argv[ 2 ];
33 TPixel lower = std::atof( argv[ 3 ] );
34 TPixel upper = std::atof( argv[ 4 ] );
36 TReader::Pointer reader = TReader::New( );
37 reader->SetFileName( input_image_filename );
39 TPredicate::Pointer predicate = TPredicate::New( );
40 predicate->SetLower( lower );
41 predicate->SetUpper( upper );
43 TFilter::Pointer filter = TFilter::New( );
44 filter->SetInput( reader->GetOutput( ) );
45 filter->SetPredicate( predicate );
46 for( int i = 5; i < argc; i += 2 )
50 TImage::IndexType seed;
51 seed[ 0 ] = std::atoi( argv[ i ] );
52 seed[ 1 ] = std::atoi( argv[ i + 1 ] );
53 filter->AddSeed( seed );
58 filter->SetInsideValue( 255 );
59 filter->SetOutsideValue( 0 );
61 TWriter::Pointer writer = TWriter::New( );
62 writer->SetInput( filter->GetOutput( ) );
63 writer->SetFileName( output_image_filename );
68 catch( std::exception& err )
70 std::cerr << "ERROR: " << err.what( ) << std::endl;