From: Leonardo Flórez-Valencia Date: Wed, 23 Nov 2016 16:19:12 +0000 (-0500) Subject: .. X-Git-Tag: v0.1~37 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=cpPlugins.git;a=commitdiff_plain;h=24d5c00294fc95f6f0d858a35799b77d97055745 .. --- diff --git a/appli/PipelineEditor/PipelineEditor.cxx b/appli/PipelineEditor/PipelineEditor.cxx index f0b8616..5751a90 100644 --- a/appli/PipelineEditor/PipelineEditor.cxx +++ b/appli/PipelineEditor/PipelineEditor.cxx @@ -92,7 +92,10 @@ _slotView( const std::string& name, bool show ) } else if( mesh != NULL ) { - // TODO + viewer = + this->_configureViewer< cpExtensions::QT::SimpleMPRWidget >( + this->m_UI->Viewer + ); } // fi if( diff --git a/lib/cpBaseQtApplication/MainWindow.cxx b/lib/cpBaseQtApplication/MainWindow.cxx index 37b18aa..9b16236 100644 --- a/lib/cpBaseQtApplication/MainWindow.cxx +++ b/lib/cpBaseQtApplication/MainWindow.cxx @@ -133,6 +133,14 @@ void cpBaseQtApplication::MainWindow:: setViewer( cpExtensions::QT::ActorsWidgetInterface* v ) { this->m_Viewer = v; + if( this->m_Viewer != NULL ) + { + auto interactors = this->m_Viewer->GetInteractors( ); + for( auto wIt : this->m_Workspaces ) + for( auto i : interactors ) + wIt.second->AddInteractor( i ); + + } // fi } // ------------------------------------------------------------------------- @@ -227,6 +235,14 @@ _addWorkspace( const std::string& name ) this->m_Workspaces[ name ] = TWorkspace::New( ); if( this->m_Canvas != NULL ) this->m_Canvas->setWorkspace( this->m_Workspaces[ name ] ); + if( this->m_Viewer != NULL ) + { + auto interactors = this->m_Viewer->GetInteractors( ); + auto wIt = this->m_Workspaces.find( name ); + for( auto i : interactors ) + wIt->second->AddInteractor( i ); + + } // fi this->setWindowTitle( ( this->m_BaseWindowTitle + name ).c_str( ) ); } // fi diff --git a/lib/cpInstances/CMakeLists.txt b/lib/cpInstances/CMakeLists.txt index 4b0e9ad..c9f77b8 100644 --- a/lib/cpInstances/CMakeLists.txt +++ b/lib/cpInstances/CMakeLists.txt @@ -165,6 +165,7 @@ TARGET_LINK_LIBRARIES( TARGET_LINK_LIBRARIES( ${_pfx}ITKLevelSetFilters ${_pfx}ITKAnisotropicSmoothing + ${_pfx}UnaryFunctorFilters ${_pfx}Image ${_pfx}ImageIterators ${_pfx}NeighborhoodImageIterators diff --git a/lib/cpInstances/ITKLevelSetFilters.i b/lib/cpInstances/ITKLevelSetFilters.i index 1031051..afed5fe 100644 --- a/lib/cpInstances/ITKLevelSetFilters.i +++ b/lib/cpInstances/ITKLevelSetFilters.i @@ -1,9 +1,9 @@ header #define ITK_MANUAL_INSTANTIATION define base=ZeroCrossingImageFilter;SparseFieldLevelSetImageFilter -define filters=SegmentationLevelSetImageFilter;ThresholdSegmentationLevelSetImageFilter +define filters=SegmentationLevelSetImageFilter;ThresholdSegmentationLevelSetImageFilter;LaplacianSegmentationLevelSetImageFilter define functions=LevelSetFunction -define ls_functions=SegmentationLevelSetFunction;ThresholdSegmentationLevelSetFunction +define ls_functions=SegmentationLevelSetFunction;ThresholdSegmentationLevelSetFunction;LaplacianSegmentationLevelSetFunction define i_reals=#real_types# define o_reals=#real_types# diff --git a/plugins/ITKLevelSetFilters/LaplacianSegmentationLevelSetImageFilter.cxx b/plugins/ITKLevelSetFilters/LaplacianSegmentationLevelSetImageFilter.cxx new file mode 100644 index 0000000..a5fe1f9 --- /dev/null +++ b/plugins/ITKLevelSetFilters/LaplacianSegmentationLevelSetImageFilter.cxx @@ -0,0 +1,72 @@ +#include +#include + +#include + +// ------------------------------------------------------------------------- +cpPluginsITKLevelSetFilters::LaplacianSegmentationLevelSetImageFilter:: +LaplacianSegmentationLevelSetImageFilter( ) + : Superclass( ) +{ + this->_ConfigureInput< cpInstances::Image >( "Input", true, false ); + this->_ConfigureInput< cpInstances::Image >( "Feature", true, false ); + this->_ConfigureOutput< cpInstances::Image >( "Output" ); + + this->m_Parameters.ConfigureAsReal( "PropagationScaling", 1 ); + this->m_Parameters.ConfigureAsReal( "CurvatureScaling", 1 ); + this->m_Parameters.ConfigureAsReal( "MaximumRMSError", 0.02 ); + this->m_Parameters.ConfigureAsReal( "IsoSurfaceValue", 0 ); + this->m_Parameters.ConfigureAsUint( "NumberOfIterations", 100 ); +} + +// ------------------------------------------------------------------------- +cpPluginsITKLevelSetFilters::LaplacianSegmentationLevelSetImageFilter:: +~LaplacianSegmentationLevelSetImageFilter( ) +{ +} + +// ------------------------------------------------------------------------- +void cpPluginsITKLevelSetFilters::LaplacianSegmentationLevelSetImageFilter:: +_GenerateData( ) +{ + auto o = this->GetInputData( "Input" ); + cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 ) + this->_Error( "Invalid input image dimension." ); +} + +// ------------------------------------------------------------------------- +template< class _TImage > +void cpPluginsITKLevelSetFilters::LaplacianSegmentationLevelSetImageFilter:: +_GD0( _TImage* image ) +{ + auto f = this->GetInputData( "Feature" ); + cpPlugins_Demangle_Image_RealPixels_2( f, _GD1, _TImage::ImageDimension, image ) + this->_Error( "Invalid feature image." ); +} + +// ------------------------------------------------------------------------- +template< class _TFeature, class _TImage > +void cpPluginsITKLevelSetFilters::LaplacianSegmentationLevelSetImageFilter:: +_GD1( _TFeature* feature, _TImage* image ) +{ + typedef typename _TFeature::PixelType _TScalar; + typedef + itk::LaplacianSegmentationLevelSetImageFilter< _TImage, _TFeature, _TScalar > + _TFilter; + + // Configure filter + _TFilter* filter = this->_CreateITK< _TFilter >( ); + filter->SetInput( image ); + filter->SetFeatureImage( feature ); + filter->SetPropagationScaling( this->m_Parameters.GetReal( "PropagationScaling" ) ); + filter->SetCurvatureScaling( this->m_Parameters.GetReal( "CurvatureScaling" ) ); + filter->SetMaximumRMSError( this->m_Parameters.GetReal( "MaximumRMSError" ) ); + filter->SetIsoSurfaceValue( this->m_Parameters.GetReal( "IsoSurfaceValue" ) ); + filter->SetNumberOfIterations( this->m_Parameters.GetUint( "NumberOfIterations" ) ); + filter->Update( ); + + // Connect output + this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) ); +} + +// eof - $RCSfile$ diff --git a/plugins/ITKLevelSetFilters/LaplacianSegmentationLevelSetImageFilter.h b/plugins/ITKLevelSetFilters/LaplacianSegmentationLevelSetImageFilter.h new file mode 100644 index 0000000..0d4a131 --- /dev/null +++ b/plugins/ITKLevelSetFilters/LaplacianSegmentationLevelSetImageFilter.h @@ -0,0 +1,32 @@ +#ifndef __cpPluginsITKLevelSetFilters__LaplacianSegmentationLevelSetImageFilter__h__ +#define __cpPluginsITKLevelSetFilters__LaplacianSegmentationLevelSetImageFilter__h__ + +#include +#include + +namespace cpPluginsITKLevelSetFilters +{ + /** + */ + class cpPluginsITKLevelSetFilters_EXPORT LaplacianSegmentationLevelSetImageFilter + : public cpPlugins::BaseObjects::ProcessObject + { + cpPluginsObject( + LaplacianSegmentationLevelSetImageFilter, + cpPlugins::BaseObjects::ProcessObject, + ImageLevelSetFilters + ); + + protected: + template< class _TImage > + inline void _GD0( _TImage* image ); + + template< class _TFeature, class _TImage > + inline void _GD1( _TFeature* feature, _TImage* image ); + }; + +} // ecapseman + +#endif // __cpPluginsITKLevelSetFilters__LaplacianSegmentationLevelSetImageFilter__h__ + +// eof - $RCSfile$