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;