17 #ifndef __itkCurvatureFlowImageFilter_txx
18 #define __itkCurvatureFlowImageFilter_txx
29 template <
class TInputImage,
class TOutputImage>
34 this->SetNumberOfIterations(0);
38 cffp = CurvatureFlowFunctionType::New();
40 this->SetDifferenceFunction( static_cast<FiniteDifferenceFunctionType *>(
49 template <
class TInputImage,
class TOutputImage>
54 Superclass::PrintSelf(os, indent);
55 os << indent <<
"Time step: " << m_TimeStep;
63 template <
class TInputImage,
class TOutputImage>
72 (this->GetDifferenceFunction().GetPointer());
76 itkExceptionMacro(<<
"DifferenceFunction not of type CurvatureFlowFunction");
82 this->Superclass::InitializeIteration();
85 if ( this->GetNumberOfIterations() != 0 )
87 this->UpdateProgress(((
float)(this->GetElapsedIterations()))
88 /((
float)(this->GetNumberOfIterations())));
97 template <
class TInputImage,
class TOutputImage>
103 Superclass::GenerateInputRequestedRegion();
110 if ( !inputPtr || !outputPtr )
117 inputPtr->SetRequestedRegion(
118 outputPtr->GetRequestedRegion() );
126 template <
class TInputImage,
class TOutputImage>
140 if ( !inputPtr || !outputPtr )
148 = this->GetDifferenceFunction()->GetRadius();
150 for(
unsigned int j = 0; j < ImageDimension; j++ )
152 radius[j] *= this->GetNumberOfIterations();
159 typename OutputImageType::RegionType outputRequestedRegion =
160 outputPtr->GetRequestedRegion();
162 outputRequestedRegion.PadByRadius( radius );
163 outputRequestedRegion.Crop( outputPtr->GetLargestPossibleRegion() );
165 outputPtr->SetRequestedRegion( outputRequestedRegion );