diff --git a/Code/DisparityMap/otbBSplinesInterpolateTransformDeformationFieldGenerator.txx b/Code/DisparityMap/otbBSplinesInterpolateTransformDeformationFieldGenerator.txx
index ccc5fb7c6b046a461910430a5a7af9eedc7edcd1..de8ac1bcc5af6ab255cee2846bff3b3ab0ec72d8 100644
--- a/Code/DisparityMap/otbBSplinesInterpolateTransformDeformationFieldGenerator.txx
+++ b/Code/DisparityMap/otbBSplinesInterpolateTransformDeformationFieldGenerator.txx
@@ -35,7 +35,7 @@ BSplinesInterpolateTransformDeformationFieldGenerator<TPointSet, TDeformationFie
 {
   m_SplineOrder = 3;
   m_NumberOfControlPoints = 4;
-  m_NumberOfLevels = 10;
+  m_NumberOfLevels = 6;
 }
 
 template <class TPointSet, class TDeformationField>
@@ -67,7 +67,7 @@ BSplinesInterpolateTransformDeformationFieldGenerator<TPointSet, TDeformationFie
 
   // Initialization of the splines interpolator
   typename SPlineInterpolatorListType::Pointer splineIntList = SPlineInterpolatorListType::New();
-std::cout<<"BIG FOOOOOOOOOOOOOOOOOOOOOOOOOOOOR"<<std::endl;
+
   for (unsigned int paramIndex = 0; paramIndex < this->GetTransform()->GetNumberOfParameters(); ++paramIndex)
     {
     // Create a new interpolator
@@ -104,7 +104,7 @@ std::cout<<"BIG FOOOOOOOOOOOOOOOOOOOOOOOOOOOOR"<<std::endl;
         }
       ++pointDataCounter;
       }
-std::cout<<"CHELOU THINGSSSSSSSSSSSSSSSSSSSSs"<<std::endl;
+
     // Set the interpolator parameters
     splineIntList->Back()->SetInput(tmpPointSet);
     splineIntList->Back()->SetSplineOrder(m_SplineOrder);
@@ -125,8 +125,6 @@ std::cout<<"CHELOU THINGSSSSSSSSSSSSSSSSSSSSs"<<std::endl;
   typedef itk::ImageRegionIteratorWithIndex<DeformationFieldType> IteratorType;
   IteratorType outIt(outputPtr, outputPtr->GetRequestedRegion());
 
-  std::cout<<"MAIN LOOOOOOOOOOOOOOOOOOOOOOOOOOOP"<<std::endl;
-
   // main loop
   for (outIt.GoToBegin(); !outIt.IsAtEnd(); ++outIt)
     {
@@ -155,10 +153,8 @@ std::cout<<"CHELOU THINGSSSSSSSSSSSSSSSSSSSSs"<<std::endl;
       this->GetTransform()->SetParameters(params);
       PointType sourcePoint, targetPoint;
       outputPtr->TransformIndexToPhysicalPoint(index, sourcePoint);
- 	  std::cout<<sourcePoint<<"  "<<p<<"  "<<index<<"  "<<V<<std::endl;
       targetPoint = this->GetTransform()->TransformPoint(sourcePoint);
 
-	   std::cout<<targetPoint<<std::endl;
       // And the deformation
       PixelType pixel;
       pixel.SetSize(2);
diff --git a/Code/Learning/otbShiftScaleSampleListFilter.txx b/Code/Learning/otbShiftScaleSampleListFilter.txx
index c1bfe81463f06dc4c1c1ea9711bde864a2bdf52e..44bddb0c74913ace8ce44c75c07a79b6def05d85 100644
--- a/Code/Learning/otbShiftScaleSampleListFilter.txx
+++ b/Code/Learning/otbShiftScaleSampleListFilter.txx
@@ -41,6 +41,21 @@ ShiftScaleSampleListFilter<TInputSampleList,TOutputSampleList>
   InputSampleListConstPointer inputSampleListPtr = inputPtr->Get();
   OutputSampleListPointer outputSampleListPtr    = const_cast<OutputSampleListType *>(outputPtr->Get());
 
+  // Check if the inputSampleList is not empty
+  if(inputSampleListPtr->Size() == 0)
+    itkExceptionMacro(<< "Input Sample List is empty");
+  
+  // Check if the size of the scale and the shift measurement vectors
+  // are the same than the input vector
+  if(inputSampleListPtr->GetMeasurementVectorSize() != m_Scales.Size() 
+     || inputSampleListPtr->GetMeasurementVectorSize() != m_Shifts.Size())
+    itkExceptionMacro(<< "Inconsistent measurement vector size : Input Sample List size "
+                      << inputSampleListPtr->GetMeasurementVectorSize()
+                      << " Scale measurement vector size "
+                      <<m_Scales.Size()
+                      <<" Shift measurement vector size "
+                      <<m_Shifts.Size());
+  
   // Compute the 1/(sigma) vector
   InputMeasurementVectorType invertedScales = m_Scales;
   for(unsigned int idx = 0;idx < invertedScales.Size();++idx)
diff --git a/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.h b/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.h
index 31f333c573f2d78cfeedf32fe671287ca1c6aa98..e0c82adcd253c79d3444f299b2774ff27b2bce48 100644
--- a/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.h
+++ b/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.h
@@ -107,9 +107,9 @@ public:
   template <class TInputImage>
   void AddImage(TInputImage * image)
   {
-    typedef Image<ValueType, 2>              ImageType;
     typedef TInputImage                      InputImageType;
- 
+    typedef Image<ValueType, 2>              ImageType;
+
     //Mono-Channel Factories
     typedef LocalHistogramIFFactory<ImageType,
       CoordRepType, TPrecision>               LocalHistogramIFFactoryType;
@@ -140,26 +140,30 @@ public:
     MCFourierMellinDescriptorsIFFactoryType MCFourierMellinDescriptorsIFFactory;
     MCHaralickTexturesIFFactoryType MCHaralickTexturesIFFactory;
 
-    //MCLocalHistogramIFFactory.Create(image, 
-    //                                 m_LocalHistogramParam, 
-    //                                 m_MetaImageFunction,
-    //                                 &m_DataObjectContainer);
+    
+    MCRadiometricMomentsIFFactory.Create(image, 
+                                         this->GetRadiometricMomentsIFParameters(), 
+                                         m_MetaImageFunction,
+                                         &m_DataObjectContainer);
     MCFlusserMomentsIFFactory.Create(image, 
                                      this->GetFlusserMomentsIFParameters(), 
                                      m_MetaImageFunction,
                                      &m_DataObjectContainer);
-    MCRadiometricMomentsIFFactory.Create(image, 
-                                         m_RadiometricMomentsParam, 
-                                         m_MetaImageFunction,
-                                         &m_DataObjectContainer);
+    
     MCFourierMellinDescriptorsIFFactory.Create(image, 
-                                               m_FourierMellinDescriptorsParam, 
+                                               this->GetFourierMellinDescriptorsIFParameters(), 
                                                m_MetaImageFunction, 
                                                &m_DataObjectContainer);
-    MCHaralickTexturesIFFactory.Create(image, 
-                                       m_HaralickTexturesParam, 
-                                       m_MetaImageFunction, 
-                                       &m_DataObjectContainer);
+
+    //MCLocalHistogramIFFactory.Create(image, 
+    //                                 m_LocalHistogramParam, 
+    //                                 m_MetaImageFunction,
+    //                                 &m_DataObjectContainer);
+
+    //MCHaralickTexturesIFFactory.Create(image, 
+    //                                   m_HaralickTexturesParam, 
+    //                                   m_MetaImageFunction, 
+    //                                   &m_DataObjectContainer);
   }
 
 protected:
diff --git a/Examples/Filtering/DanielssonDistanceMapImageFilter.cxx b/Examples/Filtering/DanielssonDistanceMapImageFilter.cxx
index 641c1f13a7839d7bedebf6c8a8fdf4332c3ce5f9..0e1b0daa13adb143be282c74d77e6d4aa926da29 100644
--- a/Examples/Filtering/DanielssonDistanceMapImageFilter.cxx
+++ b/Examples/Filtering/DanielssonDistanceMapImageFilter.cxx
@@ -55,12 +55,11 @@
 
 int main(int argc, char * argv[])
 {
-  if (argc < 5)
+  if (argc < 4)
     {
     std::cerr << "Usage: " << argv[0];
     std::cerr << " inputImageFile outputDistanceMapImageFile ";
     std::cerr << " outputVoronoiMapImageFilter ";
-    std::cerr << " outputVectorMapImageFilter ";
     std::cerr << std::endl;
     return EXIT_FAILURE;
     }
diff --git a/Testing/Code/DisparityMap/otbTranslationDeformationFieldEstimation.cxx b/Testing/Code/DisparityMap/otbTranslationDeformationFieldEstimation.cxx
index c1e470cd18c1e154c14963380f66780e1e9b7b94..28f34e3c7e71290abc1be920c0d450160aac51bf 100644
--- a/Testing/Code/DisparityMap/otbTranslationDeformationFieldEstimation.cxx
+++ b/Testing/Code/DisparityMap/otbTranslationDeformationFieldEstimation.cxx
@@ -194,11 +194,6 @@ int otbTranslationDeformationFieldEstimation(int argc, char* argv[])
   win.Fill(winSize);
   explo.Fill(exploSize);
 
-	fixedReader->GenerateOutputInformation();
-    movingReader->GenerateOutputInformation();
-	std::cout<<fixedReader->GetOutput()->GetLargestPossibleRegion().GetSize()<<std::endl;
-	std::cout<<movingReader->GetOutput()->GetLargestPossibleRegion().GetSize()<<std::endl;
-
   dmestimator->SetFixedImage(fixedReader->GetOutput());
   dmestimator->SetMovingImage(movingReader->GetOutput());
   dmestimator->SetPointSet(nodes);
@@ -238,7 +233,7 @@ int otbTranslationDeformationFieldEstimation(int argc, char* argv[])
   writer->SetFileName(oss.str().c_str());
   writer->SetInput(rescaler->GetOutput());
   writer->Update();
-  
+
   //3.b NNearest points deformation field linear interpolate  generator
   writer = WriterType::New();
   dfwriter = DeformationFieldWriterType::New();
@@ -283,31 +278,25 @@ int otbTranslationDeformationFieldEstimation(int argc, char* argv[])
   generator3->SetOutputSpacing(fixedReader->GetOutput()->GetSpacing());
   generator3->SetOutputSize(fixedReader->GetOutput()->GetLargestPossibleRegion().GetSize());
   generator3->SetMetricThreshold(metricThreshold);
-  
- std::cout<<"BSPLINE GOd"<<std::endl;
-  generator3->Update();
-  std::cout<<"BSPLINE DONE"<<std::endl;
 
   warper->SetInput(movingReader->GetOutput());
   warper->SetDeformationField(generator3->GetOutput());
   rescaler->SetInput(warper->GetOutput());
   rescaler->SetOutputMaximum(255);
   rescaler->SetOutputMinimum(0);
- std::cout<<"_bs_df"<<std::endl;
+
   oss.str("");
   oss << outputFileNamePrefix << "_bs_df.hdr";
   dfwriter->SetFileName(oss.str().c_str());
   dfwriter->SetInput(generator3->GetOutput());
   dfwriter->Update();
- std::cout<<"_bs_df done"<<std::endl;
 
- std::cout<<"_bs_oi"<<std::endl;
   oss.str("");
   oss << outputFileNamePrefix << "_bs_oi.tif";
   writer->SetFileName(oss.str().c_str());
   writer->SetInput(rescaler->GetOutput());
   writer->Update();
-std::cout<<"_bs_oi done"<<std::endl;
+
   //3.d Nearest transform deformation field generator
   writer = WriterType::New();
   dfwriter = DeformationFieldWriterType::New();
@@ -327,20 +316,19 @@ std::cout<<"_bs_oi done"<<std::endl;
   rescaler->SetInput(warper->GetOutput());
   rescaler->SetOutputMaximum(255);
   rescaler->SetOutputMinimum(0);
-std::cout<<"_nt_df"<<std::endl;
+
   oss.str("");
   oss << outputFileNamePrefix << "_nt_df.hdr";
   dfwriter->SetFileName(oss.str().c_str());
   dfwriter->SetInput(generator4->GetOutput());
   dfwriter->Update();
-std::cout<<"_nt_df done"<<std::endl;
-std::cout<<"_nt_oi"<<std::endl;
+
   oss.str("");
   oss << outputFileNamePrefix << "_nt_oi.tif";
   writer->SetFileName(oss.str().c_str());
   writer->SetInput(rescaler->GetOutput());
   writer->Update();
-std::cout<<"_nt_oi done"<<std::endl;
+
   //3.e NNearest transforms deformation field linear interpolation generator
   writer = WriterType::New();
   dfwriter = DeformationFieldWriterType::New();
@@ -362,21 +350,17 @@ std::cout<<"_nt_oi done"<<std::endl;
   rescaler->SetOutputMaximum(255);
   rescaler->SetOutputMinimum(0);
 
-  std::cout<<"_nnt_df"<<std::endl;
   oss.str("");
   oss << outputFileNamePrefix << "_nnt_df.hdr";
   dfwriter->SetFileName(oss.str().c_str());
   dfwriter->SetInput(generator5->GetOutput());
   dfwriter->Update();
-std::cout<<"_nnt_df done"<<std::endl;
 
-std::cout<<"_nnt_oi"<<std::endl;
   oss.str("");
   oss << outputFileNamePrefix << "_nnt_oi.tif";
   writer->SetFileName(oss.str().c_str());
   writer->SetInput(rescaler->GetOutput());
   writer->Update();
-std::cout<<"_nnt_oi done"<<std::endl;
 
   //3.e Transforms deformation field spline interpolation generator
   writer = WriterType::New();
@@ -389,7 +373,6 @@ std::cout<<"_nnt_oi done"<<std::endl;
   generator6->SetOutputOrigin(fixedReader->GetOutput()->GetOrigin());
   generator6->SetOutputSpacing(fixedReader->GetOutput()->GetSpacing());
   generator6->SetOutputSize(fixedReader->GetOutput()->GetLargestPossibleRegion().GetSize());
-  std::cout<<fixedReader->GetOutput()->GetLargestPossibleRegion().GetSize()<<std::endl;
   generator6->SetMetricThreshold(metricThreshold);
   generator6->SetTransform(transform);
   generator6->SetSplineOrder(4);
@@ -400,20 +383,18 @@ std::cout<<"_nnt_oi done"<<std::endl;
   rescaler->SetInput(warper->GetOutput());
   rescaler->SetOutputMaximum(255);
   rescaler->SetOutputMinimum(0);
-std::cout<<"_bst_df"<<std::endl;
+
   oss.str("");
   oss << outputFileNamePrefix << "_bst_df.hdr";
   dfwriter->SetFileName(oss.str().c_str());
   dfwriter->SetInput(generator6->GetOutput());
   dfwriter->Update();
-std::cout<<"_bst_df done"<<std::endl;
 
-std::cout<<"_bst_oi"<<std::endl;
   oss.str("");
   oss << outputFileNamePrefix << "_bst_oi.tif";
   writer->SetFileName(oss.str().c_str());
   writer->SetInput(rescaler->GetOutput());
   writer->Update();
-std::cout<<"_bst_oi done"<<std::endl;
+
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index 27591828d0c22a2a4831429d09da9d883328d65d..8ccf9ab209c27f21d2436cb8ffb61334ecb651ee 100644
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -1139,16 +1139,37 @@ ENDIF(OTB_DATA_USE_LARGEINPUT)
 ADD_TEST(ioTuVectorImageComplexNew ${IO_TESTS9}
   otbVectorImageComplexNew)
 
-ADD_TEST(ioTuVectorImageComplexFloatTest ${IO_TESTS9}
+ADD_TEST(ioTvVectorImageComplexFloatTest ${IO_TESTS9}
   otbVectorImageComplexFloatTest
     ${INPUTDATA}/multibandComplexFloat.hdr
 )
 
-ADD_TEST(ioTuVectorImageComplexDoubleTest ${IO_TESTS9}
+ADD_TEST(ioTvVectorImageComplexDoubleTest ${IO_TESTS9}
   otbVectorImageComplexDoubleTest
     ${INPUTDATA}/multibandComplexDouble.hdr
 )
 
+ADD_TEST(ioTvImageComplexFloatTest ${IO_TESTS9}
+  otbImageComplexFloatTest
+    ${INPUTDATA}/multibandComplexFloat.hdr
+)
+
+ADD_TEST(ioTvImageComplexDoubleTest ${IO_TESTS9}
+  otbImageComplexDoubleTest
+    ${INPUTDATA}/multibandComplexDouble.hdr
+)
+
+ADD_TEST(ioTvVectorImageComplexIntoRealFloatTest ${IO_TESTS9}
+  otbVectorImageComplexIntoRealFloatTest
+    ${INPUTDATA}/multibandComplexFloat.hdr
+)
+
+ADD_TEST(ioTvVectorImageComplexIntoRealDoubleTest ${IO_TESTS9}
+  otbVectorImageComplexIntoRealDoubleTest
+    ${INPUTDATA}/multibandComplexDouble.hdr
+)
+
+
 # ---  otb::VectorImageReadWriteTest  ---
 ADD_TEST(ioTvVectorImageFileReaderWriterTest ${IO_TESTS9}
    --compare-image ${EPSILON_9}
@@ -2758,6 +2779,7 @@ otbVectorImageTest.cxx
 otbStreamingImageFilterTest.cxx
 otbVectorImageFileReaderWriterTest.cxx
 otbStreamingShortImageFileWriterTest.cxx
+otbComplexImageTests.cxx
 )
 SET(BasicIO_SRCS10
 otbIOTests10.cxx
diff --git a/Testing/Code/IO/otbComplexImageTests.cxx b/Testing/Code/IO/otbComplexImageTests.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..7bf945dd3e3b5d4649c9ad5a75eac85f7533e18f
--- /dev/null
+++ b/Testing/Code/IO/otbComplexImageTests.cxx
@@ -0,0 +1,184 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+
+#if defined(_MSC_VER)
+#pragma warning ( disable : 4786 )
+#endif
+
+#include "itkExceptionObject.h"
+#include <iostream>
+#include <fstream>
+#include <string>
+
+#include "otbImage.h"
+#include "otbVectorImage.h"
+#include "otbImageFileReader.h"
+
+int otbVectorImageComplexNew(int argc, char* argv[])
+{
+  typedef std::complex<float>            PixelType;
+  typedef otb::VectorImage<PixelType, 2> ImageType;
+  ImageType::Pointer image = ImageType::New();
+  image->Initialize();
+
+  return EXIT_SUCCESS;
+}
+
+
+template<class InternalType>
+int otbVectorImageComplexGenericTest(int argc, char* argv[])
+{
+  typedef std::complex<InternalType>      PixelType;
+  typedef otb::VectorImage<PixelType, 2>  ImageType;
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  typename ReaderType::Pointer reader = ReaderType::New();
+  reader->SetFileName(argv[1]);
+  reader->UpdateOutputInformation();
+  std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl;
+  itk::ImageIOBase::Pointer io = reader->GetImageIO();
+  std::cout << io << std::endl;
+  reader->Update();
+  typename ImageType::IndexType index;
+  index[0]=0;
+  index[1]=0;
+
+  typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index);
+  std::cout << pixel << std::endl;
+
+  //Test value
+  if ((pixel[0] != PixelType(0,1))
+      || (pixel[1] != PixelType(20000, 20001)))
+    {
+    std::cout << "Found " << pixel[0] << " should be " << PixelType(0,1) << std::endl;
+    std::cout << "Found " << pixel[1] << " should be " << PixelType(20000,20001) << std::endl;
+    return EXIT_FAILURE;
+    }
+  return EXIT_SUCCESS;
+}
+
+int otbVectorImageComplexFloatTest(int argc, char* argv[])
+{
+  return otbVectorImageComplexGenericTest<float>(argc, argv);
+}
+
+int otbVectorImageComplexDoubleTest(int argc, char* argv[])
+{
+  return otbVectorImageComplexGenericTest<double>(argc, argv);
+}
+
+template<class InternalType>
+int otbImageComplexGenericTest(int argc, char* argv[])
+{
+  typedef std::complex<InternalType>      PixelType;
+  typedef otb::Image<PixelType, 2>        ImageType;
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  typename ReaderType::Pointer reader = ReaderType::New();
+  reader->SetFileName(argv[1]);
+  reader->UpdateOutputInformation();
+  std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl;
+  itk::ImageIOBase::Pointer io = reader->GetImageIO();
+  std::cout << io << std::endl;
+  reader->Update();
+  typename ImageType::IndexType index;
+  index[0]=0;
+  index[1]=0;
+
+  typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index);
+  std::cout << pixel << std::endl;
+
+  //Test value
+  if (pixel != PixelType(0,1))
+    {
+    std::cout << "Found " << pixel << " should be " << PixelType(0,1) << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  //Test other pixel
+  index[0]=10;
+  index[1]=10;
+
+  pixel = reader->GetOutput()->GetPixel(index);
+  std::cout << pixel << std::endl;
+
+  if (pixel != PixelType(2020,2021))
+    {
+    std::cout << "Found " << pixel << " should be " << PixelType(2020,2021) << std::endl;
+    return EXIT_FAILURE;
+    }
+
+
+  return EXIT_SUCCESS;
+}
+
+int otbImageComplexFloatTest(int argc, char* argv[])
+{
+  return otbImageComplexGenericTest<float>(argc, argv);
+}
+
+int otbImageComplexDoubleTest(int argc, char* argv[])
+{
+  return otbImageComplexGenericTest<double>(argc, argv);
+}
+
+
+template<class InternalType>
+int otbVectorImageComplexIntoRealGenericTest(int argc, char* argv[])
+{
+  typedef InternalType                    PixelType;
+  typedef otb::VectorImage<PixelType, 2>  ImageType;
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  typename ReaderType::Pointer reader = ReaderType::New();
+  reader->SetFileName(argv[1]);
+  reader->UpdateOutputInformation();
+  std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl;
+  itk::ImageIOBase::Pointer io = reader->GetImageIO();
+  std::cout << io << std::endl;
+  reader->Update();
+  typename ImageType::IndexType index;
+  index[0]=0;
+  index[1]=0;
+
+  typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index);
+  std::cout << pixel << std::endl;
+
+  //Test value
+  if (reader->GetOutput()->GetNumberOfComponentsPerPixel() != 4)
+    {
+    std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << " bands instead of 4" << std::endl;
+    return EXIT_FAILURE;
+    }
+  if ((pixel[0] != 0) || (pixel[1] != 1) || (pixel[2] != 20000) || (pixel[3] != 20001))
+    {
+    std::cout << "Found " << pixel[0] << " should be " << 0 << std::endl;
+    std::cout << "Found " << pixel[1] << " should be " << 1 << std::endl;
+    std::cout << "Found " << pixel[2] << " should be " << 20000 << std::endl;
+    std::cout << "Found " << pixel[3] << " should be " << 20001 << std::endl;
+    return EXIT_FAILURE;
+    }
+  return EXIT_SUCCESS;
+}
+
+int otbVectorImageComplexIntoRealFloatTest(int argc, char* argv[])
+{
+  return otbVectorImageComplexIntoRealGenericTest<float>(argc, argv);
+}
+
+int otbVectorImageComplexIntoRealDoubleTest(int argc, char* argv[])
+{
+  return otbVectorImageComplexIntoRealGenericTest<double>(argc, argv);
+}
diff --git a/Testing/Code/IO/otbIOTests9.cxx b/Testing/Code/IO/otbIOTests9.cxx
index 23f030309c0b46abd866399c502781c9ff616113..8ffe676d914a0dc3eeae101d1f237243f8f2dfca 100644
--- a/Testing/Code/IO/otbIOTests9.cxx
+++ b/Testing/Code/IO/otbIOTests9.cxx
@@ -31,6 +31,10 @@ void RegisterTests()
   REGISTER_TEST(otbVectorImageComplexNew);
   REGISTER_TEST(otbVectorImageComplexFloatTest);
   REGISTER_TEST(otbVectorImageComplexDoubleTest);
+  REGISTER_TEST(otbVectorImageComplexIntoRealFloatTest);
+  REGISTER_TEST(otbVectorImageComplexIntoRealDoubleTest);
+  REGISTER_TEST(otbImageComplexFloatTest);
+  REGISTER_TEST(otbImageComplexDoubleTest);
   REGISTER_TEST(otbStreamingImageFilterTest);
   REGISTER_TEST(otbVectorImageFileReaderWriterTest);
   REGISTER_TEST(otbStreamingShortImageFileWriterTest);
diff --git a/Testing/Code/IO/otbVectorImageTest.cxx b/Testing/Code/IO/otbVectorImageTest.cxx
index 72962ebcbbf4c96597f4833b1c18a525883ef993..828e905c2b5715563b7425a66d2681755006d1e4 100644
--- a/Testing/Code/IO/otbVectorImageTest.cxx
+++ b/Testing/Code/IO/otbVectorImageTest.cxx
@@ -126,53 +126,3 @@ int otbVectorImageTest(int argc, char* argv[])
 
   return EXIT_SUCCESS;
 }
-
-int otbVectorImageComplexNew(int argc, char* argv[])
-{
-  typedef std::complex<float> PixelType;
-  typedef otb::VectorImage<PixelType, 2> ImageType;
-  ImageType::Pointer image = ImageType::New();
-  image->Initialize();
-
-  return EXIT_SUCCESS;
-}
-
-
-template<class InternalType>
-int otbVectorImageComplexGenericTest(int argc, char* argv[])
-{
-  typedef std::complex<InternalType> PixelType;
-  typedef otb::VectorImage<PixelType, 2> ImageType;
-  typedef otb::ImageFileReader<ImageType> ReaderType;
-  typename ReaderType::Pointer reader = ReaderType::New();
-  reader->SetFileName(argv[1]);
-  reader->UpdateOutputInformation();
-  std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl;
-  itk::ImageIOBase::Pointer io = reader->GetImageIO();
-  std::cout << io << std::endl;
-  reader->Update();
-  typename ImageType::IndexType index;
-  index[0]=0;
-  index[1]=0;
-
-  typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index);
-  std::cout << pixel << std::endl;
-
-  //Test value
-  if ((pixel[0] != PixelType(0,1))
-      || (pixel[1] != PixelType(20000, 20001)))
-    {
-    return EXIT_FAILURE;
-    }
-  return EXIT_SUCCESS;
-}
-
-int otbVectorImageComplexFloatTest(int argc, char* argv[])
-{
-  return otbVectorImageComplexGenericTest<float>(argc, argv);
-}
-
-int otbVectorImageComplexDoubleTest(int argc, char* argv[])
-{
-  return otbVectorImageComplexGenericTest<double>(argc, argv);
-}
diff --git a/Testing/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.cxx b/Testing/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.cxx
index 9086a6600d620b4f77a947076893264af8ccef98..4ab3a9bfd6adf89a3038e0eb7c74071325609a4b 100644
--- a/Testing/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.cxx
+++ b/Testing/Code/ObjectDetection/otbStandardMetaImageFunctionBuilder.cxx
@@ -124,30 +124,33 @@ int otbStandardMetaImageFunctionBuilder(int argc, char* argv[])
   DataObjectContainerType DOC = builder->GetDataObjectContainer();
   std::cout << "DataObjectContainer.size(): " << DOC.size() << std::endl;
 
-  std::cout << static_cast<AdaptedLocalHistogramIF *>(MIF->GetNthFunction(0))->GetInternalImageFunction()
+  std::cout << static_cast<AdaptedRadiometricMomentsIF *>(MIF->GetNthFunction(0))->GetInternalImageFunction()
             << std::endl;
-  std::cout << static_cast<AdaptedLocalHistogramIF *>(MIF->GetNthFunction(5))->GetInternalImageFunction()
+  std::cout << static_cast<AdaptedRadiometricMomentsIF *>(MIF->GetNthFunction(3))->GetInternalImageFunction()
             << std::endl;
 
+ 
   std::cout << static_cast<AdaptedFlusserMomentsIF *>(MIF->GetNthFunction(1))->GetInternalImageFunction()
             << std::endl;
-  std::cout << static_cast<AdaptedFlusserMomentsIF *>(MIF->GetNthFunction(9))->GetInternalImageFunction()
+  std::cout << static_cast<AdaptedFlusserMomentsIF *>(MIF->GetNthFunction(7))->GetInternalImageFunction()
             << std::endl;
 
-  std::cout << static_cast<AdaptedRadiometricMomentsIF *>(MIF->GetNthFunction(2))->GetInternalImageFunction()
+  std::cout << static_cast<AdaptedFourierMellinDescriptorsIF *>(MIF->GetNthFunction(2))->GetInternalImageFunction()
             << std::endl;
-  std::cout << static_cast<AdaptedRadiometricMomentsIF *>(MIF->GetNthFunction(13))->GetInternalImageFunction()
+  std::cout << static_cast<AdaptedFourierMellinDescriptorsIF *>(MIF->GetNthFunction(11))->GetInternalImageFunction()
             << std::endl;
 
-  std::cout << static_cast<AdaptedFourierMellinDescriptorsIF *>(MIF->GetNthFunction(3))->GetInternalImageFunction()
+/*
+  std::cout << static_cast<AdaptedLocalHistogramIF *>(MIF->GetNthFunction())->GetInternalImageFunction()
             << std::endl;
-  std::cout << static_cast<AdaptedFourierMellinDescriptorsIF *>(MIF->GetNthFunction(17))->GetInternalImageFunction()
+  std::cout << static_cast<AdaptedLocalHistogramIF *>(MIF->GetNthFunction(5))->GetInternalImageFunction()
             << std::endl;
 
   std::cout << static_cast<AdaptedHaralickTexturesIF *>(MIF->GetNthFunction(4))->GetInternalImageFunction()
             << std::endl;
   std::cout << static_cast<AdaptedHaralickTexturesIF *>(MIF->GetNthFunction(21))->GetInternalImageFunction()
             << std::endl;
-
+*/
+  
   return EXIT_SUCCESS;
 }
diff --git a/UseOTB.cmake.in b/UseOTB.cmake.in
index de87400c313817a90ab43ef4f93929c3d00fb26c..1b439daf8281407892cd223be3f21b30f98092dc 100644
--- a/UseOTB.cmake.in
+++ b/UseOTB.cmake.in
@@ -160,7 +160,7 @@ IF(OTB_USE_EXTERNAL_LIBLAS)
     IF (NOT LIBLAS_LIBRARY)
         MESSAGE(FATAL_ERROR
                 "Cannot find Liblas library. Please set LIBLAS_LIBRARY")
-    ENDIF (NOT PQ_LIBRARY)
+    ENDIF (NOT LIBLAS_LIBRARY)
 ENDIF(OTB_USE_EXTERNAL_LIBLAS)
 ENDIF(OTB_USE_LIBLAS)