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