diff --git a/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.h b/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.h index 9a2923f7e21575da3ef4483d0612ce53de768af1..56ec38934fc40b3123ad12c60a0e15c5679653c9 100644 --- a/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.h +++ b/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.h @@ -195,6 +195,7 @@ protected: NormalizeVectorImageFilter (); virtual ~NormalizeVectorImageFilter() { } + void GenerateOutputInformation(); void BeforeThreadedGenerateData(); private: diff --git a/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.txx b/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.txx index ba395638cd0cbd36b7cf0ebf5136206df63ad657..c91a9df6bf1c889a412522ffd581a7c994d2db2d 100644 --- a/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.txx +++ b/Modules/Filtering/Statistics/include/otbNormalizeVectorImageFilter.txx @@ -35,6 +35,22 @@ NormalizeVectorImageFilter< TInputImage, TOutputImage > m_CovarianceEstimator = CovarianceEstimatorFilterType::New(); } + +template < class TInputImage, class TOutputImage > +void +NormalizeVectorImageFilter< TInputImage, TOutputImage > +::GenerateOutputInformation() +{ + // Call superclass implementation + Superclass::GenerateOutputInformation(); + + if( (m_UseMean && !m_IsGivenMean) || (m_UseStdDev && !m_IsGivenStdDev)) + { + m_CovarianceEstimator->SetInput( const_cast<InputImageType*>( this->GetInput() ) ); + m_CovarianceEstimator->Update(); + } +} + template < class TInputImage, class TOutputImage > void NormalizeVectorImageFilter< TInputImage, TOutputImage > @@ -56,9 +72,6 @@ NormalizeVectorImageFilter< TInputImage, TOutputImage > if ( !m_IsGivenMean ) { - m_CovarianceEstimator->SetInput( const_cast<InputImageType*>( this->GetInput() ) ); - m_CovarianceEstimator->Update(); - this->GetFunctor().SetMean( m_CovarianceEstimator->GetMean() ); if ( !m_IsGivenStdDev && m_UseStdDev )