17 #ifndef __itkVotingBinaryIterativeHoleFillingImageFilter_txx
18 #define __itkVotingBinaryIterativeHoleFillingImageFilter_txx
35 template <
class TInputImage >
40 m_ForegroundValue = NumericTraits<InputPixelType>::max();
41 m_BackgroundValue = NumericTraits<InputPixelType>::Zero;
42 m_MaximumNumberOfIterations = 10;
43 m_CurrentNumberOfIterations = 0;
44 m_MajorityThreshold = 1;
45 m_NumberOfPixelsChanged = 0;
49 template<
class TInputImage >
55 typename InputImageType::ConstPointer input = this->GetInput();
57 m_NumberOfPixelsChanged = 0;
62 filter->SetRadius( this->GetRadius() );
63 filter->SetBackgroundValue( this->GetBackgroundValue() );
64 filter->SetForegroundValue( this->GetForegroundValue() );
65 filter->SetMajorityThreshold( this->GetMajorityThreshold() );
67 m_CurrentNumberOfIterations = 0;
69 typename OutputImageType::Pointer output;
73 while ( m_CurrentNumberOfIterations < m_MaximumNumberOfIterations )
75 filter->SetInput( input );
78 m_CurrentNumberOfIterations++;
82 const unsigned int numberOfPixelsChangedInThisIteration =
83 filter->GetNumberOfPixelsChanged();
84 m_NumberOfPixelsChanged += numberOfPixelsChangedInThisIteration;
86 output = filter->GetOutput();
87 output->DisconnectPipeline();
89 if( numberOfPixelsChangedInThisIteration == 0 )
94 this->GraftOutput( output );
100 template <
class TInputImage >
107 Superclass::PrintSelf( os, indent );
108 os << indent <<
"Radius: " << m_Radius << std::endl;
109 os << indent <<
"Foreground value : "
110 <<
static_cast<typename NumericTraits<InputPixelType>::PrintType
>( m_ForegroundValue )<< std::endl;
111 os << indent <<
"Background value : "
112 <<
static_cast<typename NumericTraits<InputPixelType>::PrintType
>( m_BackgroundValue ) << std::endl;
113 os << indent <<
"Maximum Number of Iterations : " << m_MaximumNumberOfIterations << std::endl;
114 os << indent <<
"Current Number of Iterations : " << m_CurrentNumberOfIterations << std::endl;
115 os << indent <<
"Majority Threshold : " << m_MajorityThreshold << std::endl;
116 os << indent <<
"Number of Pixels Changed : " << m_NumberOfPixelsChanged << std::endl;