X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2FImageAlgorithms%2FMoriRegionGrow.cxx;h=f8e323c1509b5b437d479af86af7559975f4ef9c;hb=cf298be2de026712c5ab3487978e3a6954a809cd;hp=4d23ecfd51bec979e51729eebaf8547d9516eece;hpb=6c7ab02952ea388e7c6c82abee00eb8753836c24;p=FrontAlgorithms.git diff --git a/plugins/ImageAlgorithms/MoriRegionGrow.cxx b/plugins/ImageAlgorithms/MoriRegionGrow.cxx index 4d23ecf..f8e323c 100644 --- a/plugins/ImageAlgorithms/MoriRegionGrow.cxx +++ b/plugins/ImageAlgorithms/MoriRegionGrow.cxx @@ -9,13 +9,18 @@ MoriRegionGrow( ) : Superclass( ) { typedef cpPlugins::Pipeline::DataObject _TData; + typedef cpInstances::DataObjects::Image _TImage; + + this->_ConfigureInput< _TImage >( "Input", true, false ); + this->_ConfigureInput< _TData >( "Seed", true, false ); + this->_ConfigureOutput< _TImage >( "Output" ); + this->_ConfigureOutput< _TImage >( "AuxiliaryOutput" ); this->m_Parameters.ConfigureAsInt( "InsideValue", 1 ); this->m_Parameters.ConfigureAsInt( "OutsideValue", 0 ); this->m_Parameters.ConfigureAsReal( "Step", 1 ); this->m_Parameters.ConfigureAsReal( "Lower", 0 ); this->m_Parameters.ConfigureAsReal( "Upper", 1 ); - this->m_Parameters.ConfigureAsReal( "Sensitivity", 1 ); this->m_Parameters.ConfigureAsIntTypesChoices( "ResultType" ); } @@ -62,15 +67,41 @@ _GD1( _TInputImage* image ) typedef fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage > _TFilter; auto filter = this->_CreateITK< _TFilter >( ); - this->_ConfigureFilter( filter, image ); + filter->SetInput( image ); filter->SetInsideValue( this->m_Parameters.GetInt( "InsideValue" ) ); filter->SetOutsideValue( this->m_Parameters.GetInt( "OutsideValue" ) ); filter->SetStep( this->m_Parameters.GetReal( "Step" ) ); filter->SetLower( this->m_Parameters.GetReal( "Lower" ) ); filter->SetUpper( this->m_Parameters.GetReal( "Upper" ) ); - filter->SetSensitivity( this->m_Parameters.GetReal( "Sensitivity" ) ); + + // Assign seed + auto seeds = this->GetInputData< vtkPolyData >( "Seed" ); + if( seeds != NULL ) + { + typename _TInputImage::PointType pnt; + typename _TInputImage::IndexType idx; + unsigned int dim = + ( _TInputImage::ImageDimension < 3 )? _TInputImage::ImageDimension: 3; + if( seeds->GetNumberOfPoints( ) > 0 ) + { + double buf[ 3 ]; + seeds->GetPoint( 0, buf ); + pnt.Fill( 0 ); + for( unsigned int d = 0; d < dim; ++d ) + pnt[ d ] = buf[ d ]; + + if( image->TransformPhysicalPointToIndex( pnt, idx ) ) + filter->SetSeed( idx ); + } + else + this->_Error( "No given seeds." ); + } + else + this->_Error( "No given seeds." ); + filter->Update( ); this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) ); + this->GetOutput( "AuxiliaryOutput" )->SetITK( filter->GetAuxiliaryImage( ) ); } // eof - $RCSfile$