diff --git a/Code/FeatureExtraction/otbCloudDetectionFunctor.h b/Code/FeatureExtraction/otbCloudDetectionFunctor.h index 2237335b9ae3fc78ccbd8cf6169ebe7826a069db..858fae8dc5658e8606b321c4076780e7fa7cecf1 100644 --- a/Code/FeatureExtraction/otbCloudDetectionFunctor.h +++ b/Code/FeatureExtraction/otbCloudDetectionFunctor.h @@ -37,7 +37,7 @@ class CloudDetectionFunctor CloudDetectionFunctor() { - m_MinThreshold = 1.0; + m_MinThreshold = 0.0; m_MaxThreshold = 1.0; }; diff --git a/Code/FeatureExtraction/otbCloudEstimatorFunctor.h b/Code/FeatureExtraction/otbCloudEstimatorFunctor.h index d94db3d7be8fff58c8d36da72479a283539f8dcb..23eea02280426166ee4331501a5e444ac5247390 100644 --- a/Code/FeatureExtraction/otbCloudEstimatorFunctor.h +++ b/Code/FeatureExtraction/otbCloudEstimatorFunctor.h @@ -43,7 +43,6 @@ class CloudEstimatorFunctor m_RefNorm = 2.0; m_Variance = 1.0; m_Denom = 1.0; - m_Coef = 1.0; }; ~CloudEstimatorFunctor(){}; @@ -61,7 +60,7 @@ class CloudEstimatorFunctor lCurPixNorm += inPix[i]*inPix[i]; } lCurPixNorm = vcl_sqrt(static_cast<double>(lCurPixNorm)); - lGaussianCoef = m_Coef * vcl_exp(- vcl_pow(((lCurPixNorm-m_RefNorm)/m_RefNorm),2) / m_Denom ) ; + lGaussianCoef = vcl_exp(- vcl_pow((lCurPixNorm-m_RefNorm),2) / m_Denom ) ; // Reverse the SpectralAngle values and set them between [0;1] lRes = lGaussianCoef * ((M_PI-m_SpectralAngleFunctor(inPix)) / M_PI); @@ -72,22 +71,22 @@ class CloudEstimatorFunctor } void SetReferencePixel( TInput ref ) - { + { m_ReferencePixel = ref; m_SpectralAngleFunctor.SetReferencePixel(ref); m_RefNorm = 0.0; for(unsigned int i = 0; i<ref.Size(); i++) - { - m_RefNorm += ref[i]*ref[i]; - } + { + m_RefNorm += ref[i]*ref[i]; + } m_RefNorm = vcl_sqrt(static_cast<double>(m_RefNorm)); + SetVariance(m_Variance); }; void SetVariance(double variance) { m_Variance = variance; - m_Denom = 2 * variance * variance; - m_Coef = 1/( variance * vcl_sqrt(2*M_PI) ); + m_Denom = 2 * variance * variance * m_RefNorm * m_RefNorm; } TInput GetReferencePixel(){ return m_ReferencePixel; }; @@ -99,7 +98,6 @@ class CloudEstimatorFunctor double m_RefNorm; double m_Variance; double m_Denom; - double m_Coef; }; diff --git a/Testing/Code/FeatureExtraction/CMakeLists.txt b/Testing/Code/FeatureExtraction/CMakeLists.txt index 374c6914d3dbbfada0e001ccdde38875d4b95617..7361936bf1910e7d94b8cb3db3e73b7afd24baf8 100644 --- a/Testing/Code/FeatureExtraction/CMakeLists.txt +++ b/Testing/Code/FeatureExtraction/CMakeLists.txt @@ -1008,7 +1008,7 @@ ADD_TEST(feTvCloudEstimatorFilter ${FEATUREEXTRACTION_TESTS11} 731 500 632 - 0.20 # variance + 0.25 # variance ) # ------- otb::CloudDetectionFilterNew ------------- @@ -1027,9 +1027,9 @@ ADD_TEST(feTvCloudDetectionFilter ${FEATUREEXTRACTION_TESTS11} 731 500 632 - 0.20 # variance - 1.2 # minthreshold - 2.0 # maxthreshold + 0.25 # variance + 0.95 # minthreshold + 1.0 # maxthreshold )