From a446849d62347e0401f681748ca13289091ac3b9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leonardo=20Fl=C3=B3rez-Valencia?= Date: Mon, 6 Feb 2017 17:47:37 -0500 Subject: [PATCH] ... --- data/test_mori_2D.png | Bin 0 -> 69669 bytes examples/CMakeLists.txt | 1 + examples/MoriRegionGrow_00.cxx | 110 ++++++++++++++++++++++ lib/fpa/Base/MoriRegionGrow.h | 61 ------------ lib/fpa/Base/MoriRegionGrow.hxx | 33 ------- lib/fpa/Image/MoriRegionGrow.h | 54 ++++++++--- lib/fpa/Image/MoriRegionGrow.hxx | 98 ++++++++++++++++++- lib/fpa/Image/RegionGrow.hxx | 2 +- plugins/ImageAlgorithms/ImageAlgorithms.i | 1 - 9 files changed, 246 insertions(+), 114 deletions(-) create mode 100644 data/test_mori_2D.png create mode 100644 examples/MoriRegionGrow_00.cxx delete mode 100644 lib/fpa/Base/MoriRegionGrow.h delete mode 100644 lib/fpa/Base/MoriRegionGrow.hxx diff --git a/data/test_mori_2D.png b/data/test_mori_2D.png new file mode 100644 index 0000000000000000000000000000000000000000..943e9f0f12a63150cc03a836d7738ae017670fcc GIT binary patch literal 69669 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

)-uEh$K3! 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%0AtAM0UI34k8fKr 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 qLS#{q +#include +#include +#include +#include + +// ------------------------------------------------------------------------- +typedef itk::Image< unsigned char, 2 > TImage; +typedef itk::ImageFileReader< TImage > TReader; +typedef itk::ImageFileWriter< TImage > TWriter; +typedef fpa::Image::MoriRegionGrow< TImage, TImage > TFilter; + +// ------------------------------------------------------------------------- +/** + */ +class MyObserver + : public itk::Command +{ +public: + typedef TFilter::TStartEvent TStartEvent; + typedef TFilter::TEndEvent TEndEvent; + typedef TFilter::TStartLoopEvent TStartLoopEvent; + typedef TFilter::TEndLoopEvent TEndLoopEvent; + typedef TFilter::TPushEvent TPushEvent; + typedef TFilter::TPopEvent TPopEvent; + typedef TFilter::TMarkEvent TMarkEvent; + +public: + itkNewMacro( MyObserver ); + +public: + virtual void Execute( + itk::Object* caller, const itk::EventObject& event + ) override + { + this->Execute( const_cast< const itk::Object* >( caller ), event ); + } + virtual void Execute( + const itk::Object* object, const itk::EventObject& event + ) override + { + /* TODO + if( TStartEvent( ).CheckEvent( &event ) ) + std::cout << "Start" << std::endl; + else if( TEndEvent( ).CheckEvent( &event ) ) + std::cout << "End" << std::endl; + else if( TStartLoopEvent( ).CheckEvent( &event ) ) + std::cout << "StartLoop" << std::endl; + else if( TEndLoopEvent( ).CheckEvent( &event ) ) + std::cout << "EndLoop" << std::endl; + else if( TMarkEvent( ).CheckEvent( &event ) ) + { + const TMarkEvent* mark = dynamic_cast< const TMarkEvent* >( &event ); + std::cout << "Mark: " << mark->Vertex << std::endl; + + } // fi + */ + /* TODO + TPushEvent; + TPopEvent; + */ + } +}; + +// ------------------------------------------------------------------------- +int main( int argc, char* argv[] ) +{ + if( argc < 3 ) + { + std::cerr + << "Usage: " << argv[ 0 ] + << " input_filename output_filename" << std::endl; + return( 1 ); + + } // fi + std::string in_fname = argv[ 1 ]; + std::string out_fname = argv[ 2 ]; + int seed_x = 111; + int seed_y = 91; + + TReader::Pointer reader = TReader::New( ); + reader->SetFileName( in_fname ); + + TImage::IndexType seed; + seed[ 0 ] = seed_x; + seed[ 1 ] = seed_y; + + TFilter::Pointer filter = TFilter::New( ); + filter->SetInput( reader->GetOutput( ) ); + filter->SetLower( 0 ); + filter->SetUpper( 255 ); + filter->SetStep( 1 ); + filter->SetInsideValue( 255 ); + filter->SetOutsideValue( 0 ); + filter->AddSeed( seed, filter->GetInsideValue( ) ); + + /* TODO + MyObserver::Pointer obs = MyObserver::New( ); + filter->AddObserver( itk::AnyEvent( ), obs ); + */ + + TWriter::Pointer writer = TWriter::New( ); + writer->SetInput( filter->GetOutput( ) ); + writer->SetFileName( out_fname ); + writer->Update( ); + + return( 0 ); +} + +// eof - $RCSfile$ diff --git a/lib/fpa/Base/MoriRegionGrow.h b/lib/fpa/Base/MoriRegionGrow.h deleted file mode 100644 index 40f59cd..0000000 --- a/lib/fpa/Base/MoriRegionGrow.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef __fpa__Base__MoriRegionGrow__h__ -#define __fpa__Base__MoriRegionGrow__h__ - -#include -#include -#include - -namespace fpa -{ - namespace Base - { - /** - */ - template< class _TSuperclass > - class MoriRegionGrow - : public fpa::Base::RegionGrow< _TSuperclass > - { - public: - typedef MoriRegionGrow Self; - typedef fpa::Base::RegionGrow< _TSuperclass > Superclass; - typedef itk::SmartPointer< Self > Pointer; - typedef itk::SmartPointer< const Self > ConstPointer; - - typedef typename Superclass::TOutput TOutput; - typedef typename Superclass::TVertex TVertex; - - protected: - typedef typename Superclass::_TQueueNode _TQueueNode; - typedef typename Superclass::_TQueue _TQueue; - - public: - itkTypeMacro( MoriRegionGrow, Algorithm ); - - protected: - MoriRegionGrow( ); - virtual ~MoriRegionGrow( ); - - virtual bool _UpdateValue( - _TQueueNode& v, const _TQueueNode& p - ) override; - - private: - // Purposely not defined - MoriRegionGrow( const Self& other ); - Self& operator=( const Self& other ); - - protected: - _TQueue m_AuxilaryQueue; - }; - - } // ecapseman - -} // ecapseman - -#ifndef ITK_MANUAL_INSTANTIATION -# include -#endif // ITK_MANUAL_INSTANTIATION - -#endif // __fpa__Base__MoriRegionGrow__h__ - -// eof - $RCSfile$ diff --git a/lib/fpa/Base/MoriRegionGrow.hxx b/lib/fpa/Base/MoriRegionGrow.hxx deleted file mode 100644 index 9e1c300..0000000 --- a/lib/fpa/Base/MoriRegionGrow.hxx +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef __fpa__Base__MoriRegionGrow__hxx__ -#define __fpa__Base__MoriRegionGrow__hxx__ - -// ------------------------------------------------------------------------- -template< class _TSuperclass > -fpa::Base::MoriRegionGrow< _TSuperclass >:: -MoriRegionGrow( ) - : Superclass( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TSuperclass > -fpa::Base::MoriRegionGrow< _TSuperclass >:: -~MoriRegionGrow( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TSuperclass > -bool fpa::Base::MoriRegionGrow< _TSuperclass >:: -_UpdateValue( _TQueueNode& v, const _TQueueNode& p ) -{ - bool ret = this->Superclass::_UpdateValue( v, p ); - if( !ret ) - this->m_AuxilaryQueue.push( v ); - return( ret ); -} - - -#endif // __fpa__Base__MoriRegionGrow__hxx__ - -// eof - $RCSfile$ diff --git a/lib/fpa/Image/MoriRegionGrow.h b/lib/fpa/Image/MoriRegionGrow.h index 5708582..50e8bb1 100644 --- a/lib/fpa/Image/MoriRegionGrow.h +++ b/lib/fpa/Image/MoriRegionGrow.h @@ -1,8 +1,8 @@ #ifndef __fpa__Image__MoriRegionGrow__h__ #define __fpa__Image__MoriRegionGrow__h__ -#include -#include +#include +#include namespace fpa { @@ -12,34 +12,62 @@ namespace fpa */ template< class _TInputImage, class _TOutputImage > class MoriRegionGrow - : public fpa::Base::MoriRegionGrow< fpa::Image::Algorithm< _TInputImage, _TOutputImage > > + : public fpa::Image::RegionGrow< _TInputImage, _TOutputImage > { public: - typedef fpa::Image::Algorithm< _TInputImage, _TOutputImage > TAlgorithm; - typedef MoriRegionGrow Self; - typedef fpa::Base::MoriRegionGrow< TAlgorithm > Superclass; - typedef itk::SmartPointer< Self > Pointer; - typedef itk::SmartPointer< const Self > ConstPointer; + typedef MoriRegionGrow Self; + typedef fpa::Image::RegionGrow< _TInputImage, _TOutputImage > Superclass; + typedef itk::SmartPointer< Self > Pointer; + typedef itk::SmartPointer< const Self > ConstPointer; - typedef typename Superclass::TOutput TOutput; - typedef typename Superclass::TVertex TVertex; + typedef typename Superclass::TOutput TOutput; + typedef typename Superclass::TVertex TVertex; + typedef typename Superclass::TGrowFunction TGrowFunction; + typedef + fpa::Image::Functors::RegionGrow::BinaryThreshold< _TInputImage > + TBinThresholdFunction; + typedef typename _TInputImage::PixelType TPixel; - typedef fpa::Image::Functors::Base< _TInputImage, typename Superclass::TGrowFunction > TGrowFunction; + protected: + typedef typename Superclass::_TQueueNode _TQueueNode; + typedef typename Superclass::_TQueue _TQueue; public: itkNewMacro( Self ); - itkTypeMacro( fpa::Image::MoriRegionGrow, fpa::Base::MoriRegionGrow ); + itkTypeMacro( fpa::Image::MoriRegionGrow, fpa::Image::RegionGrow ); + + itkGetConstMacro( Lower, TPixel ); + itkGetConstMacro( Upper, TPixel ); + itkGetConstMacro( Step, TPixel ); + + itkSetMacro( Lower, TPixel ); + itkSetMacro( Upper, TPixel ); + itkSetMacro( Step, TPixel ); protected: MoriRegionGrow( ); virtual ~MoriRegionGrow( ); - virtual void _BeforeGenerateData( ) fpa_OVERRIDE; + virtual bool _ContinueGenerateData( ) override; + virtual void _BeforeGenerateData( ) override; + virtual void _AfterGenerateData( ) override; + virtual void _BeforeLoop( ) override; + virtual void _AfterLoop( ) override; + virtual bool _UpdateValue( _TQueueNode& v, const _TQueueNode& p ) override; + virtual void _UpdateResult( const _TQueueNode& n ) override; private: // Purposely not defined MoriRegionGrow( const Self& other ); Self& operator=( const Self& other ); + + protected: + TPixel m_Lower; + TPixel m_Upper; + TPixel m_Step; + + _TQueue m_NextQueue; + unsigned long m_ActualCount; }; } // ecapseman diff --git a/lib/fpa/Image/MoriRegionGrow.hxx b/lib/fpa/Image/MoriRegionGrow.hxx index 29f46ac..3b06e41 100644 --- a/lib/fpa/Image/MoriRegionGrow.hxx +++ b/lib/fpa/Image/MoriRegionGrow.hxx @@ -5,8 +5,17 @@ template< class _TInputImage, class _TOutputImage > fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: MoriRegionGrow( ) - : Superclass( ) + : Superclass( ), + m_Step( TPixel( 1 ) ) { + this->m_Upper = std::numeric_limits< TPixel >::max( ); + if( std::numeric_limits< TPixel >::is_integer ) + this->m_Lower = std::numeric_limits< TPixel >::min( ); + else + this->m_Lower = -this->m_Upper; + typename TBinThresholdFunction::Pointer functor = + TBinThresholdFunction::New( ); + this->SetGrowFunction( functor ); } // ------------------------------------------------------------------------- @@ -16,6 +25,32 @@ fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: { } +// ------------------------------------------------------------------------- +template< class _TInputImage, class _TOutputImage > +bool fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: +_ContinueGenerateData( ) +{ + TBinThresholdFunction* functor = + dynamic_cast< TBinThresholdFunction* >( this->GetGrowFunction( ) ); + TPixel u = functor->GetUpper( ); + + std::cout << long( u ) << " " << this->m_ActualCount << std::endl; + + if( u < this->m_Upper ) + { + u += this->m_Step; + if( u > this->m_Upper ) + u = this->m_Upper; + functor->SetUpper( u ); + this->m_Queue = this->m_NextQueue; + while( this->m_NextQueue.size( ) > 0 ) + this->m_NextQueue.pop( ); + return( true ); + } + else + return( false ); +} + // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > void fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: @@ -23,10 +58,63 @@ _BeforeGenerateData( ) { this->Superclass::_BeforeGenerateData( ); - TGrowFunction* grow = - dynamic_cast< TGrowFunction* >( this->GetGrowFunction( ) ); - if( grow != NULL ) - grow->SetImage( this->GetInput( ) ); + while( this->m_NextQueue.size( ) > 0 ) + this->m_NextQueue.pop( ); + this->m_ActualCount = 0; + TBinThresholdFunction* functor = + dynamic_cast< TBinThresholdFunction* >( this->GetGrowFunction( ) ); + functor->SetLower( this->m_Lower ); + functor->SetUpper( this->m_Lower + this->m_Step ); +} + +// ------------------------------------------------------------------------- +template< class _TInputImage, class _TOutputImage > +void fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: +_AfterGenerateData( ) +{ + this->Superclass::_AfterGenerateData( ); + while( this->m_NextQueue.size( ) > 0 ) + this->m_NextQueue.pop( ); +} + +// ------------------------------------------------------------------------- +template< class _TInputImage, class _TOutputImage > +void fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: +_BeforeLoop( ) +{ + this->Superclass::_BeforeLoop( ); +} + +// ------------------------------------------------------------------------- +template< class _TInputImage, class _TOutputImage > +void fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: +_AfterLoop( ) +{ + this->Superclass::_AfterLoop( ); +} + +// ------------------------------------------------------------------------- +template< class _TInputImage, class _TOutputImage > +bool fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: +_UpdateValue( _TQueueNode& v, const _TQueueNode& p ) +{ + bool ret = this->Superclass::_UpdateValue( v, p ); + if( !ret ) + { + v.Result = this->m_InsideValue; + this->m_NextQueue.push( v ); + + } // fi + return( ret ); +} + +// ------------------------------------------------------------------------- +template< class _TInputImage, class _TOutputImage > +void fpa::Image::MoriRegionGrow< _TInputImage, _TOutputImage >:: +_UpdateResult( const _TQueueNode& n ) +{ + this->Superclass::_UpdateResult( n ); + this->m_ActualCount += 1; } #endif // __fpa__Image__MoriRegionGrow__hxx__ diff --git a/lib/fpa/Image/RegionGrow.hxx b/lib/fpa/Image/RegionGrow.hxx index b1f5da0..5c8b76e 100644 --- a/lib/fpa/Image/RegionGrow.hxx +++ b/lib/fpa/Image/RegionGrow.hxx @@ -21,8 +21,8 @@ template< class _TInputImage, class _TOutputImage > void fpa::Image::RegionGrow< _TInputImage, _TOutputImage >:: _BeforeGenerateData( ) { + this->m_InitResult = this->m_OutsideValue; this->Superclass::_BeforeGenerateData( ); - TGrowFunction* grow = dynamic_cast< TGrowFunction* >( this->GetGrowFunction( ) ); if( grow != NULL ) diff --git a/plugins/ImageAlgorithms/ImageAlgorithms.i b/plugins/ImageAlgorithms/ImageAlgorithms.i index 9f44dd1..41cd37c 100644 --- a/plugins/ImageAlgorithms/ImageAlgorithms.i +++ b/plugins/ImageAlgorithms/ImageAlgorithms.i @@ -4,7 +4,6 @@ tinclude fpa/Image/Functors/SimpleNeighborhood:h|hxx instances fpa::Image::Functors::SimpleNeighborhood< itk::Image< #scalar_types#, #pdims# > > cinclude fpa/Base/RegionGrow.hxx -cinclude fpa/Base/MoriRegionGrow.hxx define all_int_types=#int_types#;#uint_types# tinclude fpa/Image/RegionGrow:h|hxx tinclude fpa/Image/MoriRegionGrow:h|hxx -- 2.49.0