diff --git a/Code/Common/otbVariableLengthVectorConverter.h b/Code/Common/otbVariableLengthVectorConverter.h index fac00cf55ed0b8705217681a2e26394c81a94e13..f1a0c43f5146ceff922f35bf2fb6382a811e9b75 100644 --- a/Code/Common/otbVariableLengthVectorConverter.h +++ b/Code/Common/otbVariableLengthVectorConverter.h @@ -24,6 +24,7 @@ #include "itkExceptionObject.h" #include "itkFixedArray.h" #include "itkHistogram.h" +#include "itkSmartPointer.h" namespace otb @@ -207,9 +208,9 @@ private: //Histogram template< class TMeasurement, unsigned int VMeasurementVectorSize, class TFrequencyContainer, class TPrecisionType > -class ITK_EXPORT VariableLengthVectorConverter<itk::Statistics::Histogram<TMeasurement, - VMeasurementVectorSize, - TFrequencyContainer>, +class ITK_EXPORT VariableLengthVectorConverter<typename itk::SmartPointer< const itk::Statistics::Histogram<TMeasurement, + VMeasurementVectorSize, + TFrequencyContainer> >, TPrecisionType> : public itk::ProcessObject { @@ -228,9 +229,9 @@ public: typedef TPrecisionType OutputPrecisionType; typedef typename itk::VariableLengthVector<OutputPrecisionType> OutputType; - typedef typename itk::Statistics::Histogram<TMeasurement, - VMeasurementVectorSize, - TFrequencyContainer> InputType; + typedef typename itk::SmartPointer< const itk::Statistics::Histogram<TMeasurement, + VMeasurementVectorSize, + TFrequencyContainer> > InputType; OutputType Convert(InputType input); diff --git a/Code/Common/otbVariableLengthVectorConverter.txx b/Code/Common/otbVariableLengthVectorConverter.txx index 16a84fd82a5fa6aedf4cb6100ddb4bd03ee1c7a4..42931131a5789729f74a6344066f237bb336d95a 100644 --- a/Code/Common/otbVariableLengthVectorConverter.txx +++ b/Code/Common/otbVariableLengthVectorConverter.txx @@ -107,21 +107,28 @@ VariableLengthVectorConverter< itk::FixedArray<TInternalInputType, VArrayDimensi // Histogram template< class TMeasurement, unsigned int VMeasurementVectorSize, class TFrequencyContainer, class TPrecisionType > -typename VariableLengthVectorConverter< itk::Statistics::Histogram<TMeasurement, VMeasurementVectorSize, TFrequencyContainer>, TPrecisionType> +typename VariableLengthVectorConverter< itk::SmartPointer< const itk::Statistics::Histogram<TMeasurement, + VMeasurementVectorSize, + TFrequencyContainer> >, + TPrecisionType> ::OutputType -VariableLengthVectorConverter< itk::Statistics::Histogram<TMeasurement, VMeasurementVectorSize, TFrequencyContainer>, TPrecisionType> +VariableLengthVectorConverter< itk::SmartPointer<const itk::Statistics::Histogram<TMeasurement, + VMeasurementVectorSize, + TFrequencyContainer> >, + TPrecisionType> ::Convert(InputType input) { - unsigned int nbBins, rsltIdx = 0; + unsigned int rsltIdx = 0; + itk::Size<1> nbBins; OutputType result; - nbBins = input.GetSize(); - - result.SetSize(nbBins); + nbBins[0] = input->GetSize()[0]; + + result.SetSize(nbBins[0]); - for (unsigned int i=0; i<nbBins; i++) + for (unsigned int i=0; i<nbBins[0]; i++) { - result[rsltIdx] = static_cast<OutputPrecisionType>(input.GetFrequency(i)); + result[rsltIdx] = static_cast<OutputPrecisionType>(input->GetFrequency(i)); rsltIdx ++; } diff --git a/Testing/Code/FeatureExtraction/otbImageFunctionAdaptor.cxx b/Testing/Code/FeatureExtraction/otbImageFunctionAdaptor.cxx index 2169f78968f557389212666a4ffd0fa46c57033f..2f7fc61774aaa657d4f2f5a7d969a92d3ffb8d3d 100644 --- a/Testing/Code/FeatureExtraction/otbImageFunctionAdaptor.cxx +++ b/Testing/Code/FeatureExtraction/otbImageFunctionAdaptor.cxx @@ -266,7 +266,7 @@ int otbImageFunctionAdaptor(int argc, char * argv[]) << "\t - resultRaM : " << resultRaM[i] << std::endl; rsltIdx ++; } -/* + LHFunction->SetInputImage(reader->GetOutput()); LHFunction->SetNeighborhoodRadius(5); LHFunction->SetNumberOfHistogramBins(64); @@ -290,7 +290,7 @@ int otbImageFunctionAdaptor(int argc, char * argv[]) << "\t - resultLH : " << resultLH->GetFrequency(i) << std::endl; rsltIdx ++; } - */ + error = vcl_sqrt(error); std::cout << std::endl << "Error : " << error << std::endl << std::endl;