diff --git a/Code/FeatureExtraction/otbContrastTextureFunctor.h b/Code/FeatureExtraction/otbContrastTextureFunctor.h index ca9003288c52438fbef8a6d9e8ee9a1c503407e4..91117edc258b396a1fd5384386e685d97bd18b61 100644 --- a/Code/FeatureExtraction/otbContrastTextureFunctor.h +++ b/Code/FeatureExtraction/otbContrastTextureFunctor.h @@ -121,7 +121,7 @@ public: double rVal = (static_cast<double>(r)+0.5)*binsLength[1]; for (unsigned s = 0; s<histo[r].size(); s++) { - if( vcl_abs( rVal - (static_cast<double>(s)+0.5)*binsLength[0]) < nCeil ) + if( vcl_abs( rVal - (static_cast<double>(s)+0.5)*binsLength[0]) == nCeil ) { double p = static_cast<double>(histo[r][s])*areaInv; out += nCeilSquare * p; diff --git a/Code/FeatureExtraction/otbSumAverageTextureFunctor.h b/Code/FeatureExtraction/otbSumAverageTextureFunctor.h new file mode 100644 index 0000000000000000000000000000000000000000..6b5a46a4a72e6625abd7fdc964b79ce25ce6854e --- /dev/null +++ b/Code/FeatureExtraction/otbSumAverageTextureFunctor.h @@ -0,0 +1,148 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef __otbSumAverageTextureFunctor_h +#define __otbSumAverageTextureFunctor_h + +#include "otbEntropyTextureFunctor.h" + +namespace otb +{ +namespace Functor +{ +/** \class SumAverageTextureFunctor + * \brief This functor calculates the inverse difference moment of an image + * + * Computes joint histogram (neighborhood and offset neighborhood) + * which bins are computing using Scott formula. + * Computes the probabiltiy p for each pair of pixel. + * InverseDifferenceMoment is the sum 1/(1+(pi-poff)²)*p over the neighborhood. + * TIterInput is an ietrator, TOutput is a PixelType. + * + * \ingroup Functor + * \ingroup + * \ingroup Statistics + */ +template <class TIterInput1, class TIterInput2, class TOutput> +class ITK_EXPORT SumAverageTextureFunctor : +public EntropyTextureFunctor<TIterInput1, TIterInput2, TOutput> +{ +public: + SumAverageTextureFunctor(){}; + ~SumAverageTextureFunctor(){}; + + typedef TIterInput1 IterType1; + typedef TIterInput2 IterType2; + typedef TOutput OutputType; + typedef typename IterType1::OffsetType OffsetType; + typedef typename IterType1::RadiusType RadiusType; + typedef typename IterType1::InternalPixelType InternalPixelType; + typedef typename IterType1::ImageType ImageType; + typedef itk::Neighborhood<InternalPixelType,::itk::GetImageDimension<ImageType>::ImageDimension> NeighborhoodType; + typedef std::vector<double> DoubleVectorType; + typedef std::vector<int> IntVectorType; + typedef std::vector<IntVectorType> IntVectorVectorType; + typedef EntropyTextureFunctor<TIterInput1, TIterInput2, TOutput> Superclass; + + + virtual double ComputeOverSingleChannel(const NeighborhoodType &neigh, const NeighborhoodType &neighOff) + { + DoubleVectorType binsLength = Superclass::StatComputation(neigh, neighOff); + + RadiusType radius = neigh.GetRadius(); + double area = static_cast<double>(neigh.GetSize()[0]*neigh.GetSize()[1]); + double areaInv = 1/area; + OffsetType offset; + offset.Fill(0); + OffsetType offsetOff; + OffsetType offsetOffInit; + + offsetOffInit[0] = -radius[0]+this->GetOffset()[0]-1; + offsetOffInit[1] = -radius[1]+this->GetOffset()[1]-1; + + int histoIdX = 0; + int histoIdY = 0; + double out = 0.; + + IntVectorType histoTemp; + IntVectorVectorType histo; + if (binsLength[0] != 0) + histoTemp = IntVectorType( vcl_floor( static_cast<double>(this->GetMaxi()-this->GetMini())/binsLength[0])+1., 0); + else + histoTemp = IntVectorType( 1, 0 ); + + if (binsLength[1] != 0) + histo = IntVectorVectorType( vcl_floor(static_cast<double>(this->GetMaxiOff()-this->GetMiniOff())/binsLength[1])+1., histoTemp ); + else + histo = IntVectorVectorType( 1, histoTemp ); + + offsetOff = offsetOffInit; + for ( int l = -static_cast<int>(radius[0]); l <= static_cast<int>(radius[0]); l++ ) + { + offsetOff[0]++; + offsetOff[1] = offsetOffInit[1]; + offset[0] = l; + for ( int k = -static_cast<int>(radius[1]); k <= static_cast<int>(radius[1]); k++) + { + offsetOff[1]++; + offset[1] = k; + histoIdX = 0; + histoIdY = 0; + if ( binsLength[1] != 0) + histoIdX = static_cast<int>(vcl_floor( (static_cast<double>(neighOff[offsetOff])-this->GetMiniOff()) / static_cast<double>(binsLength[1]) )); + if ( binsLength[0] !=0 ) + histoIdY = static_cast<int>(vcl_floor( (static_cast<double>(neigh[offset])-this->GetMini()) /static_cast<double>( binsLength[0]) )); + + histo[histoIdX][histoIdY]++; + + } + } + // loop over bin neighborhood values + for (unsigned sB = 0; sB<histo[0].size(); sB++) + { + double nCeil = (static_cast<double>(sB)+0.5)*binsLength[0]; + for (unsigned r = 0; r<histo.size(); r++) + { + double rVal = (static_cast<double>(r)+0.5)*binsLength[1]; + for (unsigned s = 0; s<histo[r].size(); s++) + { + double sVal = (static_cast<double>(s)+0.5)*binsLength[0]; + // In theory don't have the abs but will deals with neighborhood and offset without the same histo + // thus loop over 2*Ng don't have sense + if( vcl_abs(rVal + sVal - nCeil)<binsLength[1] || vcl_abs(rVal + sVal - 2*nCeil)<binsLength[1] ) + { + double p = static_cast<double>(histo[r][s])*areaInv; + out += sVal * p; + } + } + } + } + + + return out; + } + +}; + + + + +} // namespace Functor +} // namespace otb + +#endif + diff --git a/Testing/Code/FeatureExtraction/CMakeLists.txt b/Testing/Code/FeatureExtraction/CMakeLists.txt index f2153df55aa5db0de6927066e22aad78acccb813..842602fa25eba4bb3dc2fe43b23323491d42c7a8 100644 --- a/Testing/Code/FeatureExtraction/CMakeLists.txt +++ b/Testing/Code/FeatureExtraction/CMakeLists.txt @@ -28,6 +28,7 @@ SET(FEATUREEXTRACTION_TESTS9 ${CXX_TEST_PATH}/otbFeatureExtractionTests9) SET(FEATUREEXTRACTION_TESTS10 ${CXX_TEST_PATH}/otbFeatureExtractionTests10) SET(FEATUREEXTRACTION_TESTS11 ${CXX_TEST_PATH}/otbFeatureExtractionTests11) SET(FEATUREEXTRACTION_TESTS12 ${CXX_TEST_PATH}/otbFeatureExtractionTests12) +SET(FEATUREEXTRACTION_TESTS13 ${CXX_TEST_PATH}/otbFeatureExtractionTests13) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbFeatureExtractionTests1 ~~~~~~~~~~~~~~~~~~~~~ @@ -977,7 +978,7 @@ ADD_TEST(feTuLandmarkNew ${FEATUREEXTRACTION_TESTS10} # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbFeatureExtractionTests11 ~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbFeatureExtractionTests11 ~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1040,8 +1041,13 @@ ADD_TEST(feTpSimplifyManyPathListFilter ${FEATUREEXTRACTION_TESTS11} 1.0 ) + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbFeatureExtractionTests11 ~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # ------- otb::TextureFunctorBase ------------- -ADD_TEST(feTvTextureFunctorBase ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvTextureFunctorBase ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${INPUTDATA}/poupees_sub.png ${TEMP}/feTvTextureFunctorBase.tif @@ -1055,7 +1061,7 @@ ADD_TEST(feTvTextureFunctorBase ${FEATUREEXTRACTION_TESTS11} # ------- otb::EnergyTextureFunctor ------------- -ADD_TEST(feTvEnergyTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvEnergyTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvEnergyTextureFunctor.tif ${TEMP}/feTvEnergyTextureFunctor.tif @@ -1069,7 +1075,7 @@ ADD_TEST(feTvEnergyTextureFunctor ${FEATUREEXTRACTION_TESTS11} ) # ------- otb::EntropyTextureFunctor ------------- -ADD_TEST(feTvEntropyTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvEntropyTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvEntropyTextureFunctor.tif ${TEMP}/feTvEntropyTextureFunctor.tif @@ -1083,7 +1089,7 @@ ADD_TEST(feTvEntropyTextureFunctor ${FEATUREEXTRACTION_TESTS11} ) # ------- otb::InverseDifferenceMomentTextureFunctor ------------- -ADD_TEST(feTvInverseDifferenceMomentTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvInverseDifferenceMomentTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvInverseDifferenceMomentTextureFunctor.tif ${TEMP}/feTvInverseDifferenceMomentTextureFunctor.tif @@ -1097,7 +1103,7 @@ ADD_TEST(feTvInverseDifferenceMomentTextureFunctor ${FEATUREEXTRACTION_TESTS11} ) # ------- otb::AngularSecondMomentumTextureFunctor ------------- -ADD_TEST(feTvAngularSecondMomentumTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvAngularSecondMomentumTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvAngularSecondMomentumTextureFunctor.tif ${TEMP}/feTvAngularSecondMomentumTextureFunctor.tif @@ -1111,7 +1117,7 @@ ADD_TEST(feTvAngularSecondMomentumTextureFunctor ${FEATUREEXTRACTION_TESTS11} ) # ------- otb::VarianceTextureFunctor ------------- -ADD_TEST(feTvVarianceTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvVarianceTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvVarianceTextureFunctor.tif ${TEMP}/feTvVarianceTextureFunctor.tif @@ -1125,7 +1131,7 @@ ADD_TEST(feTvVarianceTextureFunctor ${FEATUREEXTRACTION_TESTS11} ) # ------- otb::CorrelationTextureFunctor ------------- -ADD_TEST(feTvCorrelationTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvCorrelationTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvCorrelationTextureFunctor.tif ${TEMP}/feTvCorrelationTextureFunctor.tif @@ -1139,7 +1145,7 @@ ADD_TEST(feTvCorrelationTextureFunctor ${FEATUREEXTRACTION_TESTS11} ) # ------- otb::ContrastTextureFunctor ------------- -ADD_TEST(feTvContrastTextureFunctor ${FEATUREEXTRACTION_TESTS11} +ADD_TEST(feTvContrastTextureFunctor ${FEATUREEXTRACTION_TESTS12} --compare-image ${EPS} ${BASELINE}/feTvContrastTextureFunctor.tif ${TEMP}/feTvContrastTextureFunctor.tif @@ -1152,8 +1158,27 @@ ADD_TEST(feTvContrastTextureFunctor ${FEATUREEXTRACTION_TESTS11} 2 # offset[1] ) + +# ------- otb::SumAverageTextureFunctor ------------- +ADD_TEST(feTvSumAverageTextureFunctor ${FEATUREEXTRACTION_TESTS12} +--compare-image ${EPS} + ${BASELINE}/feTvSumAverageTexture.tif + ${TEMP}/feTvSumAverageTextureFunctor.tif + otbTextureFunctor + SAV #sum average + ${INPUTDATA}/poupees_sub.png + ${TEMP}/feTvSumAverageTextureFunctor.tif + 5 # radius + -2 # offset[0] + 2 # offset[1] +) + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbFeatureExtractionTests13 ~~~~~~~~~~~~~~~~~~~~~ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # ------- otb::EnergyTextureImageFunction ------------- -ADD_TEST(feTvEnergyTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvEnergyTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvEnergyTextureImageFunction.tif ${TEMP}/feTvEnergyTextureImageFunction.tif @@ -1169,7 +1194,7 @@ ADD_TEST(feTvEnergyTextureImageFunction ${FEATUREEXTRACTION_TESTS12} # ------- otb::EntropyTextureImageFunction ------------- -ADD_TEST(feTvEntropyTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvEntropyTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvEntropyTextureImageFunction.tif ${TEMP}/feTvEntropyTextureImageFunction.tif @@ -1185,7 +1210,7 @@ ADD_TEST(feTvEntropyTextureImageFunction ${FEATUREEXTRACTION_TESTS12} # ------- otb::InverseDifferenceMomentTextureImageFunction ------------- -ADD_TEST(feTvInverseDifferenceMomentTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvInverseDifferenceMomentTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvInverseDifferenceMomentTextureImageFunction.tif ${TEMP}/feTvInverseDifferenceMomentTextureImageFunction.tif @@ -1200,7 +1225,7 @@ ADD_TEST(feTvInverseDifferenceMomentTextureImageFunction ${FEATUREEXTRACTION_TES ) # ------- otb::AngularSecondMomentumTextureImageFunction ------------- -ADD_TEST(feTvAngularSecondMomentumTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvAngularSecondMomentumTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvAngularSecondMomentumTextureImageFunction.tif ${TEMP}/feTvAngularSecondMomentumTextureImageFunction.tif @@ -1215,7 +1240,7 @@ ADD_TEST(feTvAngularSecondMomentumTextureImageFunction ${FEATUREEXTRACTION_TESTS ) # ------- otb::VarianceTextureImageFunction ------------- -ADD_TEST(feTvVarianceTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvVarianceTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvVarianceTextureImageFunction.tif ${TEMP}/feTvVarianceTextureImageFunction.tif @@ -1230,7 +1255,7 @@ ADD_TEST(feTvVarianceTextureImageFunction ${FEATUREEXTRACTION_TESTS12} ) # ------- otb::CorrelationTextureImageFunction ------------- -ADD_TEST(feTvCorrelationTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvCorrelationTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvCorrelationTextureImageFunction.tif ${TEMP}/feTvCorrelationTextureImageFunction.tif @@ -1245,7 +1270,7 @@ ADD_TEST(feTvCorrelationTextureImageFunction ${FEATUREEXTRACTION_TESTS12} ) # ------- otb::ContrastTextureImageFunction ------------- -ADD_TEST(feTvContrastTextureImageFunction ${FEATUREEXTRACTION_TESTS12} +ADD_TEST(feTvContrastTextureImageFunction ${FEATUREEXTRACTION_TESTS13} --compare-image ${EPS} ${BASELINE}/feTvContrastTextureImageFunction.tif ${TEMP}/feTvContrastTextureImageFunction.tif @@ -1259,6 +1284,20 @@ ADD_TEST(feTvContrastTextureImageFunction ${FEATUREEXTRACTION_TESTS12} 2 # offset[1] ) +# ------- otb::SumAverageTextureImageFunction ------------- +ADD_TEST(feTvSumAverageTextureImageFunction ${FEATUREEXTRACTION_TESTS13} +--compare-image ${EPS} + ${BASELINE}/feTvSumAverageTextureImageFunction.tif + ${TEMP}/feTvSumAverageTextureImageFunction.tif + otbTextureImageFunction + SAV #sum average + ${INPUTDATA}/poupees_sub_c1.png + ${TEMP}/feTvSumAverageTextureImageFunction.tif + 5 # radius[0] + 5 # radius[1] + -2 # offset[0] + 2 # offset[1] +) # A enrichir SET(BasicFeatureExtraction_SRCS1 @@ -1390,11 +1429,13 @@ otbCloudEstimatorFilter.cxx otbCloudDetectionFilterNew.cxx otbCloudDetectionFilter.cxx otbSimplifyManyPathListFilter.cxx +) +SET(BasicFeatureExtraction_SRCS12 otbTextureFunctorBase.cxx otbTextureFunctor.cxx ) -SET(BasicFeatureExtraction_SRCS12 +SET(BasicFeatureExtraction_SRCS13 otbTextureImageFunction.cxx ) @@ -1424,6 +1465,8 @@ ADD_EXECUTABLE(otbFeatureExtractionTests11 otbFeatureExtractionTests11.cxx ${Bas TARGET_LINK_LIBRARIES(otbFeatureExtractionTests11 OTBFeatureExtraction OTBIO) ADD_EXECUTABLE(otbFeatureExtractionTests12 otbFeatureExtractionTests12.cxx ${BasicFeatureExtraction_SRCS12}) TARGET_LINK_LIBRARIES(otbFeatureExtractionTests12 OTBFeatureExtraction OTBIO) +ADD_EXECUTABLE(otbFeatureExtractionTests13 otbFeatureExtractionTests13.cxx ${BasicFeatureExtraction_SRCS13}) +TARGET_LINK_LIBRARIES(otbFeatureExtractionTests13 OTBFeatureExtraction OTBIO) # ADD_EXECUTABLE(roadDetect roadDetect.cxx) # TARGET_LINK_LIBRARIES(roadDetect OTBFeatureExtraction OTBIO) diff --git a/Testing/Code/FeatureExtraction/otbFeatureExtractionTests11.cxx b/Testing/Code/FeatureExtraction/otbFeatureExtractionTests11.cxx index edc5f7bd1235c97e31572d3bd3e094d798fbeb06..5f27e08348fdbb46b481d073c530e9200e4c7348 100644 --- a/Testing/Code/FeatureExtraction/otbFeatureExtractionTests11.cxx +++ b/Testing/Code/FeatureExtraction/otbFeatureExtractionTests11.cxx @@ -33,6 +33,4 @@ REGISTER_TEST(otbCloudEstimatorFilter); REGISTER_TEST(otbCloudDetectionFilterNew); REGISTER_TEST(otbCloudDetectionFilter); REGISTER_TEST(otbSimplifyManyPathListFilter); -REGISTER_TEST(otbTextureFunctorBase); -REGISTER_TEST(otbTextureFunctor); } diff --git a/Testing/Code/FeatureExtraction/otbFeatureExtractionTests12.cxx b/Testing/Code/FeatureExtraction/otbFeatureExtractionTests12.cxx index 3203b9172a9996bd74a3f85e3502785275610f93..d8fd6fd81868f7ecfb488b9964c516773ec5bc20 100644 --- a/Testing/Code/FeatureExtraction/otbFeatureExtractionTests12.cxx +++ b/Testing/Code/FeatureExtraction/otbFeatureExtractionTests12.cxx @@ -27,5 +27,6 @@ void RegisterTests() { -REGISTER_TEST(otbTextureImageFunction); +REGISTER_TEST(otbTextureFunctorBase); +REGISTER_TEST(otbTextureFunctor); } diff --git a/Testing/Code/FeatureExtraction/otbFeatureExtractionTests13.cxx b/Testing/Code/FeatureExtraction/otbFeatureExtractionTests13.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3203b9172a9996bd74a3f85e3502785275610f93 --- /dev/null +++ b/Testing/Code/FeatureExtraction/otbFeatureExtractionTests13.cxx @@ -0,0 +1,31 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +// this file defines the otbCommonTest for the test driver +// and all it expects is that you have a function called RegisterTests +#if defined(_MSC_VER) +#pragma warning ( disable : 4786 ) +#endif + +#include <iostream> +#include "otbTestMain.h" + +void RegisterTests() +{ +REGISTER_TEST(otbTextureImageFunction); +} diff --git a/Testing/Code/FeatureExtraction/otbTextureFunctor.cxx b/Testing/Code/FeatureExtraction/otbTextureFunctor.cxx index 9c56c64a0bd4772788700832384725a65dfc7598..f2b44e6d430ea9ad670c5cd2e31c287e14ba1bc6 100644 --- a/Testing/Code/FeatureExtraction/otbTextureFunctor.cxx +++ b/Testing/Code/FeatureExtraction/otbTextureFunctor.cxx @@ -31,6 +31,7 @@ #include "otbVarianceTextureFunctor.h" #include "otbCorrelationTextureFunctor.h" #include "otbContrastTextureFunctor.h" +#include "otbSumAverageTextureFunctor.h" template<class TInputImage, class TOutputImage, class TFunctor> @@ -114,6 +115,11 @@ int otbTextureFunctor(int argc, char * argv[]) typedef otb::Functor::ContrastTextureFunctor<IteratorType, IteratorType, PixelType> FunctorType; return( generic_TextureFunctor<ImageType, ImageType, FunctorType>(argc,argv) ); } + else if ( strArgv == "SAV" ) + { + typedef otb::Functor::SumAverageTextureFunctor<IteratorType, IteratorType, PixelType> FunctorType; + return( generic_TextureFunctor<ImageType, ImageType, FunctorType>(argc,argv) ); + } else { return EXIT_FAILURE; diff --git a/Testing/Code/FeatureExtraction/otbTextureImageFunction.cxx b/Testing/Code/FeatureExtraction/otbTextureImageFunction.cxx index 88e581770454c2f1ed648d465cb70c990c489114..b83c21258ae5a2e0246f78231f3a509778613c2e 100644 --- a/Testing/Code/FeatureExtraction/otbTextureImageFunction.cxx +++ b/Testing/Code/FeatureExtraction/otbTextureImageFunction.cxx @@ -34,6 +34,7 @@ #include "otbVarianceTextureFunctor.h" #include "otbCorrelationTextureFunctor.h" #include "otbContrastTextureFunctor.h" +#include "otbSumAverageTextureFunctor.h" template<class TInputImage, class TOutputImage, class TFunctor> @@ -130,6 +131,11 @@ int otbTextureImageFunction(int argc, char * argv[]) typedef otb::Functor::ContrastTextureFunctor<IteratorType, IteratorType, VectorType> FunctorType; return( generic_TextureImageFunction<ImageType, ImageType, FunctorType>(argc,argv) ); } + else if ( strArgv == "SAV" ) + { + typedef otb::Functor::SumAverageTextureFunctor<IteratorType, IteratorType, VectorType> FunctorType; + return( generic_TextureImageFunction<ImageType, ImageType, FunctorType>(argc,argv) ); + } else { return EXIT_FAILURE;