]> Creatis software - FrontAlgorithms.git/blob - examples/RegionGrow_BinaryThreshold.cxx
3e0b95a79ebce495996f7f153e0615015c6413a2
[FrontAlgorithms.git] / examples / RegionGrow_BinaryThreshold.cxx
1 #include <itkImage.h>
2 #include <itkImageFileReader.h>
3 #include <itkImageFileWriter.h>
4
5 #include <fpa/Image/RegionGrow.h>
6 #include <fpa/Image/Functors/RegionGrow/BinaryThreshold.h>
7
8 // -------------------------------------------------------------------------
9 typedef unsigned char                  TPixel;
10 typedef itk::Image< TPixel, 2 >        TImage;
11 typedef itk::ImageFileReader< TImage > TReader;
12 typedef itk::ImageFileWriter< TImage > TWriter;
13
14 typedef fpa::Image::RegionGrow< TImage, TImage > TFilter;
15 typedef fpa::Image::Functors::RegionGrow::BinaryThreshold< TPixel > TPredicate;
16
17 // -------------------------------------------------------------------------
18 int main( int argc, char* argv[] )
19 {
20   // Get arguments
21   if( argc < 7 )
22   {
23     std::cerr
24       << "Usage: " << argv[ 0 ]
25       << " input_image output_image lower upper s0x s0y s1x s1y ..."
26       << std::endl;
27     return( 1 );
28
29   } // fi
30   std::string input_image_filename = argv[ 1 ];
31   std::string output_image_filename = argv[ 2 ];
32   TPixel lower = std::atof( argv[ 3 ] );
33   TPixel upper = std::atof( argv[ 4 ] );
34
35   TReader::Pointer reader = TReader::New( );
36   reader->SetFileName( input_image_filename );
37
38   TPredicate::Pointer predicate = TPredicate::New( );
39   predicate->SetLower( lower );
40   predicate->SetUpper( upper );
41
42   TFilter::Pointer filter = TFilter::New( );
43   filter->SetInput( reader->GetOutput( ) );
44   filter->SetPredicate( predicate );
45   for( int i = 5; i < argc; i += 2 )
46   {
47     if( i + 1 < argc )
48     {
49       TImage::IndexType seed;
50       seed[ 0 ] = std::atoi( argv[ i ] );
51       seed[ 1 ] = std::atoi( argv[ i + 1 ] );
52       filter->AddSeed( seed );
53
54     } // fi
55
56   } // rof
57   filter->SetInsideValue( 255 );
58   filter->SetOutsideValue( 0 );
59
60   TWriter::Pointer writer = TWriter::New( );
61   writer->SetInput( filter->GetOutput( ) );
62   writer->SetFileName( output_image_filename );
63   try
64   {
65     writer->Update( );
66   }
67   catch( std::exception& err )
68   {
69     std::cerr << "ERROR: " << err.what( ) << std::endl;
70     return( 1 );
71
72   } // yrt
73   return( 0 );
74 }
75
76 // eof - $RCSfile$