#include <fpa/Common/OriginalRandomWalker.h>
// -------------------------------------------------------------------------
-const unsigned int Dim = 3;
+const unsigned int Dim = 2;
typedef unsigned char TPixel;
typedef unsigned char TLabel;
// -------------------------------------------------------------------------
int main( int argc, char* argv[] )
{
- // Get arguments
- if( argc < 4 )
+ // Get input arguments
+ if( argc < 8 )
{
std::cerr
<< "Usage: " << argv[ 0 ]
- << " input_image output_labels output_probabilities"
+ << " input_image input_labels output_labels output_probabilities"
+ << " beta eps normalize"
<< std::endl;
return( 1 );
} // fi
- std::string input_image_filename = argv[ 1 ];
- std::string output_labels_filename = argv[ 2 ];
- std::string output_probabilities_filename = argv[ 3 ];
- double beta = 90;
- double eps = 1e-5;
-
- TImage::IndexType s1, s2;
- s1.Fill( 0 );
- s2.Fill( 0 );
- s1[ 0 ] = 131;
- s1[ 1 ] = 150;
- s2[ 0 ] = 200;
- s2[ 1 ] = 200;
+ std::string input_image_filename, input_labels_filename;
+ std::string output_labels_filename, output_probabilities_filename;
+ double beta, eps;
+ bool normalize;
+ input_image_filename = argv[ 1 ];
+ input_labels_filename = argv[ 2 ];
+ output_labels_filename = argv[ 3 ];
+ output_probabilities_filename = argv[ 4 ];
+ beta = std::atof( argv[ 5 ] );
+ eps = std::atof( argv[ 6 ] );
+ normalize = ( argv[ 7 ][ 0 ] == '1' );
// Read image
- TImage::Pointer input;
typedef itk::ImageFileReader< TImage > TImageReader;
TImageReader::Pointer input_image_reader = TImageReader::New( );
input_image_reader->SetFileName( input_image_filename );
+ // Read labels
+ typedef itk::ImageFileReader< TLabels > TLabelsReader;
+ TLabelsReader::Pointer input_labels_reader = TLabelsReader::New( );
+ input_labels_reader->SetFileName( input_labels_filename );
+
// Random walker
typedef fpa::Common::OriginalRandomWalker< TImage, TLabels > TFilter;
TFilter::Pointer rw = TFilter::New( );
rw->SetInput( input_image_reader->GetOutput( ) );
+ rw->SetInputLabels( input_labels_reader->GetOutput( ) );
rw->SetBeta( beta );
rw->SetEpsilon( eps );
- rw->AddSeed( s1, 100 );
- rw->AddSeed( s2, 150 );
- rw->NormalizeWeightsOn( );
+ rw->SetNormalizeWeights( normalize );
// Save labels
typedef itk::ImageFileWriter< TFilter::TLabels > TLabelsWriter;