X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FImage%2FRegionGrowWithMultipleThresholds.hxx;h=2e8c995c20d26ece1a8992b09c2c703f0d604a9c;hb=b63dc485b7255d1ab70ff72096beafe13a71f1be;hp=387a833bcab9bda89bba8d05e36eb9ec76fdeeae;hpb=c9880eac7f555da20538eb0eb95aa7e31fab3d51;p=FrontAlgorithms.git diff --git a/lib/fpa/Image/RegionGrowWithMultipleThresholds.hxx b/lib/fpa/Image/RegionGrowWithMultipleThresholds.hxx index 387a833..2e8c995 100644 --- a/lib/fpa/Image/RegionGrowWithMultipleThresholds.hxx +++ b/lib/fpa/Image/RegionGrowWithMultipleThresholds.hxx @@ -2,6 +2,7 @@ #define __FPA__IMAGE__REGIONGROWWITHMULTIPLETHRESHOLDS__HXX__ #include +#include #include // ------------------------------------------------------------------------- @@ -27,6 +28,8 @@ template< class I > fpa::Image::RegionGrowWithMultipleThresholds< I >:: RegionGrowWithMultipleThresholds( ) : Superclass( ), + m_InsideValue( TPixel( 1 ) ), + m_OutsideValue( TPixel( 0 ) ), m_DifferenceThreshold( double( 3 ) ), m_TotalCount( 0 ), m_LastDiff( double( 0 ) ), @@ -90,6 +93,7 @@ _BeforeMainLoop( ) if( it.GetPixel( i ) < min_value ) { seed.Vertex = it.GetIndex( i ); + seed.Parent = seed.Vertex; min_value = it.GetPixel( i ); } // fi @@ -108,6 +112,26 @@ template< class I > void fpa::Image::RegionGrowWithMultipleThresholds< I >:: _AfterMainLoop( ) { + typedef itk::BinaryThresholdImageFilter< I, I > _TBinFilter; + + // Binarize, inplace, the grown region + if( this->m_Histogram.size( ) > 1 ) + { + typename _TBinFilter::Pointer bin = _TBinFilter::New( ); + bin->SetInput( this->GetOutput( ) ); + bin->SetInsideValue( this->m_InsideValue ); + bin->SetOutsideValue( this->m_OutsideValue ); + bin->InPlaceOn( ); + if( this->m_StopForced ) + bin->SetUpperThreshold( this->m_StopThreshold ); + else + bin->SetUpperThreshold( this->m_Histogram.rbegin( )->first ); + bin->GraftOutput( this->GetOutput( ) ); + bin->Update( ); + this->GraftOutput( bin->GetOutput( ) ); + + } // fi + this->Superclass::_AfterMainLoop( ); }