17 #ifndef __itkVarianceImageFunction_txx
18 #define __itkVarianceImageFunction_txx
22 #include "itkNumericTraits.h"
31 template <
class TInputImage,
class TCoordRep>
35 m_NeighborhoodRadius = 1;
42 template <
class TInputImage,
class TCoordRep>
47 this->Superclass::PrintSelf(os,indent);
48 os << indent <<
"NeighborhoodRadius: " << m_NeighborhoodRadius << std::endl;
55 template <
class TInputImage,
class TCoordRep>
65 sum = NumericTraits<RealType>::Zero;
66 sumOfSquares = NumericTraits<RealType>::Zero;
68 if( !this->GetInputImage() )
70 return ( NumericTraits<RealType>::max() );
73 if ( !this->IsInsideBuffer( index ) )
75 return ( NumericTraits<RealType>::max() );
79 typename InputImageType::SizeType kernelSize;
80 kernelSize.Fill( m_NeighborhoodRadius );
83 it(kernelSize, this->GetInputImage(), this->GetInputImage()->GetBufferedRegion());
89 const unsigned int size = it.
Size();
90 for (
unsigned int i = 0; i < size; ++i)
94 sumOfSquares += value * value;
97 const double num =
static_cast<double>( size );
98 var = ( sumOfSquares - ( sum*sum / num ) ) / ( num - 1.0 );