1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __CTBronchi__RandomWalker__h__
6 #define __CTBronchi__RandomWalker__h__
9 #include <CTBronchi/Functions.h>
10 #include <fpa/Filters/Image/RandomWalker.h>
11 #include <fpa/Functors/Dijkstra/Image/Gaussian.h>
15 // -----------------------------------------------------------------------
16 template< class _TInputPtr, class _TLabelPtr >
19 const _TInputPtr& input, const _TLabelPtr& labels,
20 std::map< std::string, std::string >& args
23 typedef typename _TInputPtr::ObjectType _TInput;
24 typedef typename _TLabelPtr::ObjectType _TLabel;
25 typedef float _TScalar;
26 typedef fpa::Filters::Image::RandomWalker< _TInput, _TLabel, _TScalar > _TRandomWalker;
27 typedef fpa::Functors::Dijkstra::Image::Gaussian< _TInput, _TScalar > _TWeight;
29 typename _TWeight::Pointer weight = _TWeight::New( );
30 weight->SetAlpha( std::atof( args[ "random_walker_alpha" ].c_str( ) ) );
31 weight->SetBeta( std::atof( args[ "random_walker_beta" ].c_str( ) ) );
33 typename _TRandomWalker::Pointer rw = _TRandomWalker::New( );
34 rw->SetInputImage( input );
35 rw->SetInputLabels( labels );
36 rw->SetWeightFunction( weight );
37 double t = CTBronchi::MeasureTime( rw );
38 std::cout << "RandomWalker executed in " << t << " s" << std::endl;
39 output = rw->GetOutputLabels( );
40 output->DisconnectPipeline( );
45 #endif // __CTBronchi__Functions__h__