]> Creatis software - FrontAlgorithms.git/blob - lib/fpaPlugins/ThresholdImageGrowFunctionSource.cxx
cebd4a261caad4f388e4788b06521f6b326761e4
[FrontAlgorithms.git] / lib / fpaPlugins / ThresholdImageGrowFunctionSource.cxx
1 #include "ThresholdImageGrowFunctionSource.h"
2
3 #include <cpPlugins/Interface/BaseProcessObjects.h>
4 #include <cpPlugins/Interface/Image.h>
5 #include <fpaPlugins/GrowFunction.h>
6 #include <fpa/Image/Functors/RegionGrowThresholdFunction.h>
7
8 // -------------------------------------------------------------------------
9 fpaPlugins::ThresholdImageGrowFunctionSource::
10 ThresholdImageGrowFunctionSource( )
11   : Superclass( )
12 {
13   this->_AddInput( "ReferenceImage" );
14   this->_AddOutput< GrowFunction >( "Output" );
15
16   this->m_Parameters->ConfigureAsReal( "LowerThreshold" );
17   this->m_Parameters->ConfigureAsReal( "UpperThreshold" );
18
19   this->m_Parameters->SetReal( "LowerThreshold", 0 );
20   this->m_Parameters->SetReal( "UpperThreshold", 1 );
21 }
22
23 // -------------------------------------------------------------------------
24 fpaPlugins::ThresholdImageGrowFunctionSource::
25 ~ThresholdImageGrowFunctionSource( )
26 {
27 }
28
29 // -------------------------------------------------------------------------
30 std::string fpaPlugins::ThresholdImageGrowFunctionSource::
31 _GenerateData( )
32 {
33   auto image =
34     this->GetInputData< cpPlugins::Interface::DataObject >( "ReferenceImage" );
35   itk::DataObject* itk_image = NULL;
36   std::string r = "";
37   cpPlugins_Image_Demangle_AllScalarTypes( 2, image, itk_image, r, _GD0 );
38   else cpPlugins_Image_Demangle_AllScalarTypes( 3, image, itk_image, r, _GD0 );
39   else r = "fpaPlugins::ThresholdImageGrowFunctionSource: no valid reference image.";
40   return( r );
41 }
42
43 // -------------------------------------------------------------------------
44 template< class I >
45 std::string fpaPlugins::ThresholdImageGrowFunctionSource::
46 _GD0( itk::DataObject* data )
47 {
48   typedef fpa::Image::Functors::RegionGrowThresholdFunction< I > _F;
49
50   auto out = this->GetOutputData< GrowFunction >( "Output" );
51   auto f = out->GetITK< _F >( );
52   if( f == NULL )
53   {
54     typename _F::Pointer ptr_f = _F::New( );
55     f = ptr_f.GetPointer( );
56     out->SetITK( f );
57
58   } // fi
59   f->SetLowerThreshold( this->m_Parameters->GetReal( "LowerThreshold" ) );
60   f->SetUpperThreshold( this->m_Parameters->GetReal( "UpperThreshold" ) );
61   return( "" );
62 }
63
64 // eof - $RCSfile$