18 #ifndef __itkContourMeanDistanceImageFilter_txx
19 #define __itkContourMeanDistanceImageFilter_txx
24 #include "itkNumericTraits.h"
31 template<
class TInputImage1,
class TInputImage2>
37 this->SetNumberOfRequiredInputs( 2 );
43 template<
class TInputImage1,
class TInputImage2>
48 this->SetNthInput(1, const_cast<TInputImage2 *>( image ) );
52 template<
class TInputImage1,
class TInputImage2>
58 return static_cast< const TInputImage2 *
>
62 template<
class TInputImage1,
class TInputImage2>
67 Superclass::GenerateInputRequestedRegion();
72 if ( this->GetInput1() )
76 image1->SetRequestedRegionToLargestPossibleRegion();
78 if ( this->GetInput2() )
82 image2->SetRequestedRegion(
83 this->GetInput1()->GetRequestedRegion() );
90 template<
class TInputImage1,
class TInputImage2>
95 Superclass::EnlargeOutputRequestedRegion(data);
100 template<
class TInputImage1,
class TInputImage2>
108 const_cast< TInputImage1 *
>( this->GetInput1() );
109 this->GraftOutput( image );
115 progress->SetMiniPipelineFilter(
this);
120 typename Filter12Type::Pointer filter12 = Filter12Type::New();
122 filter12->SetInput1( this->GetInput1() );
123 filter12->SetInput2( this->GetInput2() );
128 typename Filter21Type::Pointer filter21 = Filter21Type::New();
130 filter21->SetInput1( this->GetInput2() );
131 filter21->SetInput2( this->GetInput1() );
135 progress->RegisterInternalFilter(filter12,.5f);
136 progress->RegisterInternalFilter(filter21,.5f);
139 distance12 = filter12->GetContourDirectedMeanDistance();
141 distance21 = filter21->GetContourDirectedMeanDistance();
143 if ( distance12 > distance21 )
145 m_MeanDistance = distance12;
149 m_MeanDistance = distance21;
154 template<
class TInputImage1,
class TInputImage2>
159 Superclass::PrintSelf(os,indent);
161 os << indent <<
"MeanDistance: "
162 << m_MeanDistance << std::endl;