diff --git a/Examples/DimensionReduction/CMakeLists.txt b/Examples/DimensionReduction/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..88b4c3b6085b510cb05e5c3cb62636d2665c3111
--- /dev/null
+++ b/Examples/DimensionReduction/CMakeLists.txt
@@ -0,0 +1,16 @@
+PROJECT(ChangeDetectionExamples)
+INCLUDE_REGULAR_EXPRESSION("^.*$")
+
+# Adjust the compiler flags to avoid problems with multiline comment.
+IF(CMAKE_COMPILER_IS_GNUCXX)
+  SET_SOURCE_FILES_PROPERTIES(
+        KullbackLeiblerDistanceChDet.cxx
+        PROPERTIES COMPILE_FLAGS -Wno-comment
+  )
+ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+
+ADD_EXECUTABLE(PCAExample PCAExample.cxx )
+TARGET_LINK_LIBRARIES(PCAExample OTBCommon OTBIO OTBBasicFilters)
+
+ADD_EXECUTABLE(MaximumAutocorrelationFactor MaximumAutocorrelationFactor.cxx)
+TARGET_LINK_LIBRARIES(MaximumAutocorrelationFactor OTBIO OTBCommon OTBBasicFilters)
diff --git a/Examples/DimensionReduction/MaximumAutocorrelationFactor.cxx b/Examples/DimensionReduction/MaximumAutocorrelationFactor.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..6de7f77a1b8184be42c85665b6c85809baf33c76
--- /dev/null
+++ b/Examples/DimensionReduction/MaximumAutocorrelationFactor.cxx
@@ -0,0 +1,174 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+#include "otbVectorImage.h"
+#include "otbImageFileReader.h"
+#include "otbStreamingImageFileWriter.h"
+#include "otbPrintableImageFilter.h"
+
+//  Software Guide : BeginCommandLineArgs
+//    INPUTS: {wv2_cannes_8bands.tif}
+//    OUTPUTS: {MAFOutput.tif}, {maf-input.png}, {maf-output.png}
+//
+//  Software Guide : EndCommandLineArgs
+
+//  Software Guide : BeginLatex 
+// This example illustrates the class
+// \doxygen{otb}{MaximumAutocorrelationFactorImageFilter} ...
+//
+// We start by including the corresponding header file.
+//
+//  Software Guide : EndLatex
+
+//  Software Guide : BeginCodeSnippet
+#include "otbMaximumAutocorrelationFactorImageFilter.h"
+//  Software Guide : EndCodeSnippet
+
+int main(int argc, char* argv[])
+{
+  char * infname   = argv[1];
+  char * outfname  = argv[2];
+  char * inpretty  = argv[3];
+  char * outpretty = argv[4];
+  
+  //  Software Guide : BeginLatex
+  //  We then define the types for the input image and the
+  //  output image.
+  //  Software Guide : EndLatex
+  
+  //  Software Guide : BeginCodeSnippet
+  typedef otb::VectorImage<unsigned short, 2> InputImageType;
+  typedef otb::VectorImage<double, 2>         OutputImageType;
+  //  Software Guide : EndCodeSnippet
+
+
+  //  Software Guide : BeginLatex
+  //
+  //  We can now declare the types for the reader. Since the images
+  //  can be vey large, we will force the pipeline to use
+  //  streaming. For this purpose, the file writer will be
+  //  streamed. This is achieved by using the
+  //  \doxygen{otb}{StreamingImageFileWriter} class.
+  //
+  //  Software Guide : EndLatex
+
+  //  Software Guide : BeginCodeSnippet
+  typedef otb::ImageFileReader<InputImageType>    ReaderType;
+  typedef otb::StreamingImageFileWriter<OutputImageType> WriterType;
+  //  Software Guide : EndCodeSnippet
+
+  // SoftwareGuide : BeginLatex
+  //  The \doxygen{otb}{MultivariateAlterationDetectorImageFilter} is templated over
+  //  the type of the input images and the type of the generated change
+  //  image.
+  //
+  //  Software Guide : EndLatex
+
+  //  Software Guide : BeginCodeSnippet
+  typedef otb::MaximumAutocorrelationFactorImageFilter<InputImageType,
+                                          OutputImageType> FilterType;
+  //  Software Guide : EndCodeSnippet
+
+
+  //  Software Guide : BeginLatex
+  //
+  //  The different elements of the pipeline can now be instantiated.
+  //
+  //  Software Guide : EndLatex
+
+  //  Software Guide : BeginCodeSnippet
+  ReaderType::Pointer reader = ReaderType::New();
+  WriterType::Pointer writer = WriterType::New();
+  FilterType::Pointer filter = FilterType::New();
+  //  Software Guide : EndCodeSnippet
+
+  //  Software Guide : BeginLatex
+  //
+  //  We set the parameters of the different elements of the pipeline.
+  //
+  //  Software Guide : EndLatex
+
+  //  Software Guide : BeginCodeSnippet
+  reader->SetFileName(infname);
+  writer->SetFileName(outfname);
+  //  Software Guide : EndCodeSnippet
+
+  //  Software Guide : BeginLatex
+  //
+  //  We build the pipeline by plugging all the elements together.
+  //
+  //  Software Guide : EndLatex
+
+  //  Software Guide : BeginCodeSnippet
+  filter->SetInput(reader->GetOutput());
+  writer->SetInput(filter->GetOutput());
+  //  Software Guide : EndCodeSnippet
+
+  //  Software Guide : BeginLatex
+  //
+  //  And then we can trigger the pipeline update, as usual.
+  //
+  //  Software Guide : EndLatex
+    
+  //  Software Guide : BeginCodeSnippet
+  writer->Update();
+  //  Software Guide : EndCodeSnippet
+
+  // This is for rendering in software guide
+  typedef otb::PrintableImageFilter<InputImageType,InputImageType>   InputPrintFilterType;
+  typedef otb::PrintableImageFilter<OutputImageType,OutputImageType> OutputPrintFilterType;
+  typedef InputPrintFilterType::OutputImageType                      VisuImageType;
+  typedef otb::StreamingImageFileWriter<VisuImageType>               VisuWriterType;
+
+  InputPrintFilterType::Pointer inputPrintFilter = InputPrintFilterType::New();
+  OutputPrintFilterType::Pointer outputPrintFilter = OutputPrintFilterType::New();
+  VisuWriterType::Pointer inputVisuWriter = VisuWriterType::New();
+  VisuWriterType::Pointer outputVisuWriter = VisuWriterType::New();
+
+  inputPrintFilter->SetInput(reader->GetOutput());
+  inputPrintFilter->SetChannel(5);
+  inputPrintFilter->SetChannel(3);
+  inputPrintFilter->SetChannel(2);
+  outputPrintFilter->SetInput(filter->GetOutput());
+  outputPrintFilter->SetChannel(1);
+  outputPrintFilter->SetChannel(2);
+  outputPrintFilter->SetChannel(3);
+
+  inputVisuWriter->SetInput(inputPrintFilter->GetOutput());
+  outputVisuWriter->SetInput(outputPrintFilter->GetOutput());
+
+  inputVisuWriter->SetFileName(inpretty);
+  outputVisuWriter->SetFileName(outpretty);
+
+  inputVisuWriter->Update();
+  outputVisuWriter->Update();
+
+  //  Software Guide : BeginLatex 
+  // Figure \ref{fig:MAFFIG} shows the
+  // results of Maximum Autocorrelation Factor applied to an 8 bands
+  // Worldview2 image. 
+  // \begin{figure}
+  // \center \includegraphics[width=0.4\textwidth]{maf-input.eps}
+  // \includegraphics[width=0.4\textwidth]{maf-output.eps}
+  // \itkcaption[Maximum Autocorrelation Factor results]{Results of the
+  // Maximum Autocorrelation Factor algorithm applied to a 8 bands
+  // Worldview2 image (3 first components).}  \label{fig:MAFFIG}
+  // \end{figure} 
+  // Software Guide : EndLatex
+
+  return EXIT_SUCCESS;
+}