diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt
index b6902af96dc96f60d658a0f9507ad4302ee67b69..ba96a7cf7c94546d9a0e08c58353e204eb717d30 100644
--- a/Testing/Code/BasicFilters/CMakeLists.txt
+++ b/Testing/Code/BasicFilters/CMakeLists.txt
@@ -509,12 +509,8 @@ ADD_TEST(bfTvStreamingResampleImageFilterCompareWithITK ${BASICFILTERS_TESTS5}
 
 
 ADD_TEST(bfTvResampleSLCImage ${BASICFILTERS_TESTS5}
-            --compare-image ${NOTOL}
-                ${BASELINE}/bfTvResampleSLCImage.tif
-                ${TEMP}/bfTvResampleSLCImage.tif
             otbResampleSLCImage
                 ${INPUTDATA}/RSAT_imagery_HH.tif
-                ${TEMP}/bfTvResampleSLCImage.tif
 )
 
 # -------            otb::StreamingMinMaxImageFilter   ----------------------------
diff --git a/Testing/Code/BasicFilters/otbResampleSLCImage.cxx b/Testing/Code/BasicFilters/otbResampleSLCImage.cxx
index dd09b82a4da1c7f0ffc38cead5be0e56b0d7a4c7..871c5f74660d6967e710e5848a080dcfcc1c3c3b 100644
--- a/Testing/Code/BasicFilters/otbResampleSLCImage.cxx
+++ b/Testing/Code/BasicFilters/otbResampleSLCImage.cxx
@@ -23,6 +23,8 @@
 #include "otbStreamingImageFileWriter.h"
 #include "itkTranslationTransform.h"
 #include "itkResampleImageFilter.h"
+#include "otbComplexToIntensityImageFilter.h"
+#include "otbStreamingCompareImageFilter.h"
 
 int otbResampleSLCImage(int argc, char * argv[])
 {
@@ -30,35 +32,35 @@ int otbResampleSLCImage(int argc, char * argv[])
   const char* outputFilename = argv[2];
 
   const unsigned int Dimension = 2;
-  typedef std::complex<double> InputPixelType;
-  typedef std::complex<double> OutputPixelType;
-//   typedef double InterpolatorPrecisionType;
-
-  typedef otb::Image<InputPixelType, Dimension>          InputImageType;
-  typedef otb::Image<OutputPixelType, Dimension>         OutputImageType;
-  typedef otb::ImageFileReader<InputImageType>           ReaderType;
-  typedef otb::StreamingImageFileWriter<OutputImageType> WriterType;
+  typedef std::complex<double> ComplexPixelType;
+  typedef double               RealPixelType;
+
+  typedef otb::Image<ComplexPixelType, Dimension>        ComplexImageType;
+  typedef otb::Image<RealPixelType, Dimension>           RealImageType;
+  typedef otb::ImageFileReader<ComplexImageType>         ReaderType;
   typedef itk::TranslationTransform<double, Dimension>   TransformType;
-//   typedef otb::StreamingResampleImageFilter<InputImageType,OutputImageType,InterpolatorPrecisionType> StreamingResampleImageFilterType;
-  typedef itk::ResampleImageFilter<InputImageType, OutputImageType> ResampleFilterType;
+  typedef otb::ComplexToIntensityImageFilter<ComplexImageType, RealImageType> ComplexToIntensityFilterType;
+  typedef itk::ResampleImageFilter<ComplexImageType, ComplexImageType> ComplexResampleFilterType;
+  typedef itk::ResampleImageFilter<RealImageType, RealImageType> RealResampleFilterType;
 
   // Instantiating object
   ReaderType::Pointer         reader = ReaderType::New();
-  WriterType::Pointer         writer = WriterType::New();
-  ResampleFilterType::Pointer resampler = ResampleFilterType::New();
+  ComplexToIntensityFilterType::Pointer beforeResampleConversion = ComplexToIntensityFilterType::New();
+  ComplexToIntensityFilterType::Pointer afterResampleConversion = ComplexToIntensityFilterType::New();
+
+  ComplexResampleFilterType::Pointer complexResample = ComplexResampleFilterType::New();
+  RealResampleFilterType::Pointer realResample = RealResampleFilterType::New();
   TransformType::Pointer      transform = TransformType::New();
 
+  typedef otb::StreamingCompareImageFilter<RealImageType> StreamingCompareImageFilterType;
+
   // Input Image
   reader->SetFileName(inputFilename);
 
-  // Resampler connected to input image
-  resampler->SetInput(reader->GetOutput());
-
   // Size of output resampler result
-  ResampleFilterType::SizeType size;
+  ComplexResampleFilterType::SizeType size;
   size[0] = 200;
   size[1] = 200;
-  resampler->SetSize(size);
 
   // Transformation creation
   TransformType::OutputVectorType translation;
@@ -66,15 +68,28 @@ int otbResampleSLCImage(int argc, char * argv[])
   translation[1] = 20;
   transform->SetOffset(translation);
 
-  // Resampler is updated with new transformation (default is identity)
-  resampler->SetTransform(transform);
-
-  // Result of resampler is written
-  writer->SetInput(resampler->GetOutput());
-  writer->SetNumberOfStreamDivisions(1);
-  writer->SetFileName(outputFilename);
-
-  writer->Update();
+  // Image -> Resample -> Intensity image
+  complexResample->SetInput(reader->GetOutput());
+  complexResample->SetSize(size);
+  complexResample->SetTransform(transform);
+  afterResampleConversion->SetInput(complexResample->GetOutput());
+
+  // Image -> Intensity image -> Resample Image
+  beforeResampleConversion->SetInput(reader->GetOutput());
+  realResample->SetInput(beforeResampleConversion->GetOutput());
+  realResample->SetTransform(transform);
+  realResample->SetSize(size);
+
+  // Compare results
+  StreamingCompareImageFilterType::Pointer compareImage = StreamingCompareImageFilterType::New();
+  compareImage->SetInput1(afterResampleConversion->GetOutput());
+  compareImage->SetInput2(realResample->GetOutput());
+  compareImage->Update();
+
+  if( compareImage->GetMAE() )
+    {
+    return EXIT_FAILURE;
+    }
 
   return EXIT_SUCCESS;
 }