]> Creatis software - cpPlugins.git/blobdiff - plugins/cpExtensions/DiscontinuityMapImageFilter.cxx
Discontinuity map (Wan Yu) filter added.
[cpPlugins.git] / plugins / cpExtensions / DiscontinuityMapImageFilter.cxx
diff --git a/plugins/cpExtensions/DiscontinuityMapImageFilter.cxx b/plugins/cpExtensions/DiscontinuityMapImageFilter.cxx
new file mode 100644 (file)
index 0000000..6d64365
--- /dev/null
@@ -0,0 +1,49 @@
+#include "DiscontinuityMapImageFilter.h"
+#include <cpInstances/DataObjects/Image.h>
+
+#include <cpExtensions/Algorithms/DiscontinuityMapImageFilter.h>
+
+// -------------------------------------------------------------------------
+cpPluginscpExtensions::DiscontinuityMapImageFilter::
+DiscontinuityMapImageFilter( )
+  : Superclass( )
+{
+  typedef cpInstances::DataObjects::Image _TImage;
+
+  this->_ConfigureInput< _TImage >( "Input", true, false );
+  this->_ConfigureOutput< _TImage >( "Output" );
+  this->m_Parameters.ConfigureAsInt( "Radius", 1 );
+  this->m_Parameters.ConfigureAsBool( "UseSquareRoot", false );
+}
+
+// -------------------------------------------------------------------------
+cpPluginscpExtensions::DiscontinuityMapImageFilter::
+~DiscontinuityMapImageFilter( )
+{
+}
+
+// -------------------------------------------------------------------------
+void cpPluginscpExtensions::DiscontinuityMapImageFilter::
+_GenerateData( )
+{
+  auto o = this->GetInputData( "Input" );
+  cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 )
+    this->_Error( "Invalid input image pixel type." );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage >
+void cpPluginscpExtensions::DiscontinuityMapImageFilter::
+_GD0( _TInputImage* input )
+{
+  typedef cpExtensions::Algorithms::DiscontinuityMapImageFilter< _TInputImage > _TFilter;
+
+  auto filter = this->_CreateITK< _TFilter >( );
+  filter->SetInput( input );
+  filter->SetRadius( this->m_Parameters.GetInt( "Radius" ) );
+  filter->SetUseSquareRoot( this->m_Parameters.GetBool( "UseSquareRoot" ) );
+  filter->Update( );
+  this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
+}
+
+// eof - $RCSfile$