1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
7 #include <itkImageFileReader.h>
8 #include <itkImageFileWriter.h>
9 #include <fpa/Common/OriginalRandomWalker.h>
11 // -------------------------------------------------------------------------
12 const unsigned int Dim = 3;
13 typedef unsigned char TPixel;
14 typedef unsigned char TLabel;
16 typedef itk::Image< TPixel, Dim > TImage;
17 typedef itk::Image< TLabel, Dim > TLabels;
19 // -------------------------------------------------------------------------
20 int main( int argc, char* argv[] )
26 << "Usage: " << argv[ 0 ]
27 << " input_image output_labels output_probabilities"
32 std::string input_image_filename = argv[ 1 ];
33 std::string output_labels_filename = argv[ 2 ];
34 std::string output_probabilities_filename = argv[ 3 ];
38 TImage::IndexType s1, s2;
47 TImage::Pointer input;
48 typedef itk::ImageFileReader< TImage > TImageReader;
49 TImageReader::Pointer input_image_reader = TImageReader::New( );
50 input_image_reader->SetFileName( input_image_filename );
53 typedef fpa::Common::OriginalRandomWalker< TImage, TLabels > TFilter;
54 TFilter::Pointer rw = TFilter::New( );
55 rw->SetInput( input_image_reader->GetOutput( ) );
57 rw->SetEpsilon( eps );
58 rw->AddSeed( s1, 100 );
59 rw->AddSeed( s2, 150 );
60 rw->NormalizeWeightsOn( );
63 typedef itk::ImageFileWriter< TFilter::TLabels > TLabelsWriter;
64 TLabelsWriter::Pointer output_labels_writer = TLabelsWriter::New( );
65 output_labels_writer->SetFileName( output_labels_filename );
66 output_labels_writer->SetInput( rw->GetOutput( ) );
69 typedef itk::ImageFileWriter< TFilter::TScalarImage > TProbabilitesWriter;
70 TProbabilitesWriter::Pointer output_probabilities_writer =
71 TProbabilitesWriter::New( );
72 output_probabilities_writer->SetFileName( output_probabilities_filename );
73 output_probabilities_writer->SetInput( rw->GetOutputProbabilities( ) );
77 output_labels_writer->Update( );
78 output_probabilities_writer->Update( );
80 catch( std::exception& err )
82 std::cerr << "Error caught: " << err.what( ) << std::endl;