diff --git a/Examples/DataRepresentation/Image/CMakeLists.txt b/Examples/DataRepresentation/Image/CMakeLists.txt
index b1ea1bf164c3664ed3f0ffaecf202b556f8bf4e2..6a6d5a85bf105a23bba70bfaa65ee09fe1777770 100644
--- a/Examples/DataRepresentation/Image/CMakeLists.txt
+++ b/Examples/DataRepresentation/Image/CMakeLists.txt
@@ -6,14 +6,14 @@ SET(TEMP ${ITK_BINARY_DIR}/Testing/Temporary)
 ADD_EXECUTABLE(Image1 Image1.cxx )
 TARGET_LINK_LIBRARIES(Image1 ITKCommon)
 
-#ADD_EXECUTABLE(Image2 Image2.cxx )
-#TARGET_LINK_LIBRARIES(Image2 ITKCommon ITKIO)
+ADD_EXECUTABLE(Image2 Image2.cxx )
+TARGET_LINK_LIBRARIES(Image2 OTBCommon ITKCommon OTBIO ITKIO)
 
-#ADD_EXECUTABLE(Image3 Image3.cxx )
-#TARGET_LINK_LIBRARIES(Image3 ITKCommon)
+ADD_EXECUTABLE(Image3 Image3.cxx )
+TARGET_LINK_LIBRARIES(Image3 OTBCommon ITKCommon)
 
-#ADD_EXECUTABLE(Image4 Image4.cxx )
-#TARGET_LINK_LIBRARIES(Image4 ITKCommon)
+ADD_EXECUTABLE(Image4 Image4.cxx )
+TARGET_LINK_LIBRARIES(Image4 OTBCommon ITKCommon)
 
 #ADD_EXECUTABLE(Image5 Image5.cxx )
 #TARGET_LINK_LIBRARIES(Image5 ITKCommon ITKIO)
diff --git a/Examples/DataRepresentation/Image/Image1.cxx b/Examples/DataRepresentation/Image/Image1.cxx
index bc0e3494805c64426d6675ad441a6bded5874642..8a53f77ff604958e3c2f507089c5975385335b46 100644
--- a/Examples/DataRepresentation/Image/Image1.cxx
+++ b/Examples/DataRepresentation/Image/Image1.cxx
@@ -24,8 +24,8 @@
 // class.  The following is the minimal code needed to instantiate, declare
 // and create the image class.
 //
-// \index{itk::Image!Instantiation}
-// \index{itk::Image!Header}
+// \index{Image!Instantiation}
+// \index{Image!Header}
 //
 // First, the header file of the Image class must be included.
 //
@@ -45,12 +45,13 @@ int main(int, char *[])
   // Then we must decide with what type to represent the pixels
   // and what the dimension of the image will be. With these two 
   // parameters we can instantiate the image class. Here we create
-  // a 3D image with \code{unsigned short} pixel data.
+  // a 2D image, which is what we often use in remote sensing
+  // applications, anyway, with \code{unsigned short} pixel data.
   //
   // Software Guide : EndLatex 
   //
   // Software Guide : BeginCodeSnippet 
-  typedef itk::Image< unsigned short, 3 > ImageType;
+  typedef itk::Image< unsigned short, 2 > ImageType;
   // Software Guide : EndCodeSnippet 
 
   
@@ -60,8 +61,8 @@ int main(int, char *[])
   // from the corresponding image type and assigning the result
   // to a \doxygen{SmartPointer}. 
   //
-  // \index{itk::Image!Pointer}
-  // \index{itk::Image!New()}
+  // \index{Image!Pointer}
+  // \index{Image!New()}
   // 
   // Software Guide : EndLatex 
   //
@@ -72,18 +73,18 @@ int main(int, char *[])
 
   // Software Guide : BeginLatex
   //
-  // In ITK, images exist in combination with one or more
+  // In OTB, images exist in combination with one or more
   // \emph{regions}. A region is a subset of the image and indicates a
   // portion of the image that may be processed by other classes in
   // the system. One of the most common regions is the
   // \emph{LargestPossibleRegion}, which defines the image in its
-  // entirety. Other important regions found in ITK are the
+  // entirety. Other important regions found in OTB are the
   // \emph{BufferedRegion}, which is the portion of the image actually
   // maintained in memory, and the \emph{RequestedRegion}, which is
   // the region requested by a filter or other class when operating on
   // the image.
   //
-  // In ITK, manually creating an image requires that the image is
+  // In OTB, manually creating an image requires that the image is
   // instantiated as previously shown, and that regions describing the image are
   // then associated with it.
   //
@@ -102,8 +103,8 @@ int main(int, char *[])
   // that is an n-dimensional array where each component is an integer
   // indicating the grid coordinates of the initial pixel of the image.
   //
-  // \index{itk::Image!Size}
-  // \index{itk::Image!SizeType}
+  // \index{Image!Size}
+  // \index{Image!SizeType}
   //
   // Software Guide : EndLatex 
   //
@@ -112,7 +113,6 @@ int main(int, char *[])
 
   start[0] =   0;  // first index on X
   start[1] =   0;  // first index on Y
-  start[2] =   0;  // first index on Z
   // Software Guide : EndCodeSnippet 
 
   // Software Guide : BeginLatex
@@ -122,8 +122,8 @@ int main(int, char *[])
   // unsigned integers indicating the extent in pixels of the image along
   // every dimension.
   //
-  // \index{itk::Image!Index}
-  // \index{itk::Image!IndexType}
+  // \index{Image!Index}
+  // \index{Image!IndexType}
   //
   // Software Guide : EndLatex 
   // 
@@ -132,7 +132,6 @@ int main(int, char *[])
 
   size[0]  = 200;  // size along X
   size[1]  = 200;  // size along Y
-  size[2]  = 200;  // size along Z
   // Software Guide : EndCodeSnippet 
 
   // Software Guide : BeginLatex
@@ -142,8 +141,8 @@ int main(int, char *[])
   // encapsulates both concepts. The region is initialized with the
   // starting index and size of the image.
   //
-  // \index{itk::Image!itk::ImageRegion}
-  // \index{itk::Image!RegionType}
+  // \index{Image!itk::ImageRegion}
+  // \index{Image!RegionType}
   //
   // Software Guide : EndLatex 
 
@@ -156,17 +155,18 @@ int main(int, char *[])
 
   // Software Guide : BeginLatex
   //
-  // Finally, the region is passed to the \code{Image} object in order to define its
-  // extent and origin. The \code{SetRegions} method sets the
-  // LargestPossibleRegion, BufferedRegion, and RequestedRegion
-  // simultaneously. Note that none of the operations performed to this point
-  // have allocated memory for the image pixel data. It is necessary to
-  // invoke the \code{Allocate()} method to do this. Allocate does not
-  // require any arguments since all the information needed for memory
-  // allocation has already been provided by the region.
-  //
-  // \index{itk::Image!Allocate()}
-  // \index{itk::Image!SetRegions()}
+  // Finally, the region is passed to the \code{Image} object in
+  // order to define its extent and origin. The \code{SetRegions}
+  // method sets the LargestPossibleRegion, BufferedRegion, and
+  // RequestedRegion simultaneously. Note that none of the operations
+  // performed to this point have allocated memory for the image pixel
+  // data. It is necessary to invoke the \code{Allocate()} method to
+  // do this. Allocate does not require any arguments since all the
+  // information needed for memory allocation has already been
+  // provided by the region.
+  //
+  // \index{Image!Allocate()}
+  // \index{Image!SetRegions()}
   //
   // Software Guide : EndLatex 
 
diff --git a/Examples/DataRepresentation/Image/Image2.cxx b/Examples/DataRepresentation/Image/Image2.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..9db67acabf824286c3d444f56ab15a5d99c78215
--- /dev/null
+++ b/Examples/DataRepresentation/Image/Image2.cxx
@@ -0,0 +1,160 @@
+/*=========================================================================
+
+  Program:   Insight Segmentation & Registration Toolkit
+  Module:    $RCSfile: Image2.cxx,v $
+  Language:  C++
+  Date:      $Date: 2005/02/08 03:51:52 $
+  Version:   $Revision: 1.19 $
+
+  Copyright (c) Insight Software Consortium. All rights reserved.
+  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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 "itkImage.h"
+
+//  Software Guide : BeginLatex
+//
+//  The first thing required to read an image from a file is to include
+//  the header file of the \doxygen{otb::ImageFileReader} class.
+//
+//  Software Guide : EndLatex 
+
+// Software Guide : BeginCodeSnippet
+#include "otbImageFileReader.h"
+// Software Guide : EndCodeSnippet
+
+int main( int , char * argv[])
+{
+  // Software Guide : BeginLatex
+  //
+  // Then, the image type should be defined by specifying the
+  // type used to represent pixels and the dimensions of the image.
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  typedef unsigned char          PixelType;
+  const unsigned int             Dimension = 2;
+
+  typedef itk::Image< PixelType, Dimension >   ImageType;
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // Using the image type, it is now possible to instantiate the image reader
+  // class. The image type is used as a template parameter to define how the
+  // data will be represented once it is loaded into memory. This type does
+  // not have to correspond exactly to the type stored in the file. However,
+  // a conversion based on C-style type casting is used, so the type chosen
+  // to represent the data on disk must be sufficient to characterize it
+  // accurately. Readers do not apply any transformation to the pixel data
+  // other than casting from the pixel type of the file to the pixel type of
+  // the ImageFileReader. The following illustrates a typical
+  // instantiation of the ImageFileReader type.
+  //
+  // \index{otb::ImageFileReader!Instantiation}
+  // \index{otb::Image!read}
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  typedef otb::ImageFileReader< ImageType >  ReaderType;
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // The reader type can now be used to create one reader object.  A
+  // \doxygen{SmartPointer} (defined by the \code{::Pointer}
+  // notation) is used to receive the reference to the newly created
+  // reader.  The \code{New()} 
+  // method is invoked to create an instance of the image reader.
+  //
+  // \index{otb::ImageFileReader!New()}
+  // \index{otb::ImageFileReader!Pointer}
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  ReaderType::Pointer reader = ReaderType::New();
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // The minimum information required by the reader is the filename
+  // of the image to be loaded in memory. This is provided through
+  // the \code{SetFileName()} method. The file format here is inferred
+  // from the filename extension. The user may also explicitly specify the
+  // data format explicitly using the \doxygen{ImageIO} (See
+  // Chapter~\ref{sec:ImagReadWrite} \pageref{sec:ImagReadWrite} for more
+  // information
+  //
+  // \index{otb::ImageFileReader!SetFileName()}
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  const char * filename = argv[1];
+  reader->SetFileName( filename );
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // Reader objects are referred to as pipeline source objects; they
+  // respond to pipeline update requests and initiate the data flow in the
+  // pipeline. The pipeline update mechanism ensures that the reader only
+  // executes when a data request is made to the reader and the reader has
+  // not read any data.  In the current example we explicitly invoke the
+  // \code{Update()} method because the output of the reader is not connected
+  // to other filters. In normal application the reader's output is connected
+  // to the input of an image filter and the update invocation on the filter
+  // triggers an update of the reader. The following line illustrates how an
+  // explicit update is invoked on the reader.
+  //
+  // \index{otb::ImageFileReader!Update()}
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  reader->Update();
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // Access to the newly read image can be gained by calling the
+  // \code{GetOutput()} method on the reader. This method can also be called
+  // before the update request is sent to the reader.  The reference to the
+  // image will be valid even though the image will be empty until the reader
+  // actually executes.
+  //
+  // \index{otb::ImageFileReader!GetOutput()}
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  ImageType::Pointer image = reader->GetOutput();
+  // Software Guide : EndCodeSnippet
+
+  // Software Guide : BeginLatex
+  //
+  // Any attempt to access image data before the reader executes will yield
+  // an image with no pixel data. It is likely that a program crash will 
+  // result since the image will not have been properly initialized.
+  //
+  // Software Guide : EndLatex 
+
+  return 0;
+}
+
diff --git a/Examples/DataRepresentation/Image/Image3.cxx b/Examples/DataRepresentation/Image/Image3.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..911eb614f18f4ef3e0b39a1ed317ae6e98ab9371
--- /dev/null
+++ b/Examples/DataRepresentation/Image/Image3.cxx
@@ -0,0 +1,144 @@
+/*=========================================================================
+
+  Program:   Insight Segmentation & Registration Toolkit
+  Module:    $RCSfile: Image3.cxx,v $
+  Language:  C++
+  Date:      $Date: 2005/02/08 03:51:52 $
+  Version:   $Revision: 1.19 $
+
+  Copyright (c) Insight Software Consortium. All rights reserved.
+  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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
+
+// Software Guide : BeginLatex
+//
+// This example illustrates the use of the \code{SetPixel()} and
+// \code{GetPixel()} methods.  These two methods provide direct access to the
+// pixel data contained in the image. Note that these two methods are
+// relatively slow and should not be used in situations where
+// high-performance access is required. Image iterators are the appropriate
+// mechanism to efficiently access image pixel data. (See
+// Chapter~\ref{sec:ImageIteratorsChapter} on page
+// \pageref{sec:ImageIteratorsChapter} for information about image
+// iterators.)
+//
+// Software Guide : EndLatex 
+
+
+#include "itkImage.h"
+
+int main(int, char *[])
+{
+  // First the image type should be declared
+  typedef itk::Image< unsigned short, 2 > ImageType;
+
+  // Then the image object can be created
+  ImageType::Pointer image = ImageType::New();
+
+  // The image region should be initialized
+  ImageType::IndexType start;
+  ImageType::SizeType  size;
+
+  size[0]  = 200;  // size along X
+  size[1]  = 200;  // size along Y
+
+  start[0] =   0;  // first index on X
+  start[1] =   0;  // first index on Y
+
+  ImageType::RegionType region;
+  region.SetSize( size );
+  region.SetIndex( start );
+  
+  // Pixel data is allocated
+  image->SetRegions( region );
+  image->Allocate();
+
+  // The image buffer is initialized to a particular value
+  ImageType::PixelType  initialValue = 0;
+  image->FillBuffer( initialValue );
+
+
+  // Software Guide : BeginLatex
+  //
+  // The individual position of a pixel inside the image is identified by a
+  // unique index. An index is an array of integers that defines the position
+  // of the pixel along each coordinate dimension of the image. The IndexType
+  // is automatically defined by the image and can be accessed using the
+  // scope operator like \doxygen{Index}. The length of the array will match
+  // the dimensions of the associated image.
+  //
+  // The following code illustrates the declaration of an index variable and
+  // the assignment of values to each of its components.  Please note that
+  // \code{Index} does not use SmartPointers to access it. This is because
+  // \code{Index} is a light-weight object that is not intended to be shared
+  // between objects. It is more efficient to produce multiple copies of
+  // these small objects than to share them using the SmartPointer
+  // mechanism.
+  // 
+  // The following lines declare an instance of the index type and initialize
+  // its content in order to associate it with a pixel position in the image.
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  ImageType::IndexType pixelIndex;
+ 
+  pixelIndex[0] = 27;   // x position
+  pixelIndex[1] = 29;   // y position
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // Having defined a pixel position with an index, it is then possible to
+  // access the content of the pixel in the image.  The \code{GetPixel()}
+  // method allows us to get the value of the pixels.
+  //
+  // \index{otb::Image!GetPixel()}
+  // 
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  ImageType::PixelType   pixelValue = image->GetPixel( pixelIndex );
+
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // The \code{SetPixel()} method allows us to set the value of the pixel.
+  //
+  // \index{otb::Image!SetPixel()}
+  //
+  // Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  image->SetPixel(   pixelIndex,   pixelValue+1  );
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // Please note that \code{GetPixel()} returns the pixel value using copy
+  // and not reference semantics. Hence, the method cannot be used to
+  // modify image data values.
+  //
+  // Remember that both \code{SetPixel()} and \code{GetPixel()} are inefficient
+  // and should only be used for debugging or for supporting interactions like
+  // querying pixel values by clicking with the mouse.
+  //
+  // Software Guide : EndLatex 
+
+
+  return 0;
+
+}
+
diff --git a/Examples/DataRepresentation/Image/Image4.cxx b/Examples/DataRepresentation/Image/Image4.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..35bda4d33928386be6299b7c478bda6ef1ec9a37
--- /dev/null
+++ b/Examples/DataRepresentation/Image/Image4.cxx
@@ -0,0 +1,294 @@
+/*=========================================================================
+
+  Program:   Insight Segmentation & Registration Toolkit
+  Module:    $RCSfile: Image4.cxx,v $
+  Language:  C++
+  Date:      $Date: 2005/02/08 03:51:53 $
+  Version:   $Revision: 1.30 $
+
+  Copyright (c) Insight Software Consortium. All rights reserved.
+  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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
+// Software Guide : BeginLatex
+//
+// Even though OTB can be used to perform
+// general image processing tasks, the primary purpose of the toolkit is the
+// processing of remote sensing image data.  In that respect, additional
+// information about the images is considered mandatory. In particular the
+// information associated with the physical spacing between pixels and the
+// position of the image in space with respect to some world coordinate
+// system are extremely important.
+//
+// Image origin and spacing are fundamental to many
+// applications. Registration, for example, is performed in physical
+// coordinates. Improperly defined spacing and origins will result in
+// inconsistent results in such processes. Remote sensing images with no spatial
+// information should not be used for image analysis,
+// feature extraction, GIS input, etc. In
+// other words, remote sensing images lacking spatial information are not only
+// useless but also hazardous.
+//
+// \begin{figure} \center
+// \includegraphics[width=\textwidth]{ImageOriginAndSpacing.eps}
+// \itkcaption[ITK Image Geometrical Concepts]{Geometrical concepts associated
+// with the OTB image.}
+// \label{fig:ImageOriginAndSpacing}
+// \end{figure}
+//
+// Figure \ref{fig:ImageOriginAndSpacing}\textbf{FIXME: update for OTB
+// images}illustrates the main geometrical
+// concepts associated with the \doxygen{otb::Image}. In this figure,
+// circles are 
+// used to represent the center of pixels. The value of the pixel is assumed
+// to exist as a Dirac Delta Function located at the pixel center. Pixel
+// spacing is measured between the pixel centers and can be different along
+// each dimension. The image origin is associated with the coordinates of the
+// first pixel in the image. A \emph{pixel} is considered to be the
+// rectangular region surrounding the pixel center holding the data
+// value. This can be viewed as the Voronoi region of the image grid, as
+// illustrated in the right side of the figure.  Linear interpolation of
+// image values is performed inside the Delaunay region whose corners
+// are pixel centers.
+//
+// Software Guide : EndLatex 
+
+
+#include "itkImage.h"
+#include "itkPoint.h"
+
+int main(int, char *[])
+{
+  typedef itk::Image< unsigned short, 2 > ImageType;
+
+  ImageType::Pointer image = ImageType::New();
+
+  ImageType::IndexType start;
+  ImageType::SizeType  size;
+
+  size[0]  = 200;  // size along X
+  size[1]  = 200;  // size along Y
+
+  start[0] =   0;  // first index on X
+  start[1] =   0;  // first index on Y
+
+  ImageType::RegionType region;
+  region.SetSize( size );
+  region.SetIndex( start );
+  
+  image->SetRegions( region );
+  image->Allocate();
+
+  image->FillBuffer( 0 );
+
+  // Software Guide : BeginLatex
+  //
+  // Image spacing is represented in a \code{FixedArray} 
+  // whose size matches the dimension of the image. In order to manually set
+  // the spacing of the image, an array of the corresponding type must be
+  // created.  The elements of the array should then be initialized with the
+  // spacing between the centers of adjacent pixels. The following code
+  // illustrates the methods available in the Image class for dealing with
+  // spacing and origin.
+  //
+  // \index{otb::Image!Spacing}
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet 
+  ImageType::SpacingType spacing;
+
+  // Note: measurement units (e.g., meters, feet, etc.) are defined by the application.
+  spacing[0] = 0.70; // spacing along X
+  spacing[1] = 0.70; // spacing along Y
+  // Software Guide : EndCodeSnippet 
+
+
+  // Software Guide : BeginLatex
+  //
+  // The array can be assigned to the image using 
+  // the \code{SetSpacing()} method.
+  //
+  // \index{otb::Image!SetSpacing()}
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet 
+  image->SetSpacing( spacing );
+  // Software Guide : EndCodeSnippet 
+
+
+  //  Software Guide : BeginLatex
+  //
+  // The spacing information can be retrieved from an image by using the
+  // \code{GetSpacing()} method. This method returns a reference to a 
+  // \code{FixedArray}. The returned object can then be used to read the
+  // contents of the array. Note the use of the \code{const} keyword to indicate
+  // that the array will not be modified. 
+  //
+  //  Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  const ImageType::SpacingType& sp = image->GetSpacing();  
+
+  std::cout << "Spacing = ";
+  std::cout << sp[0] << ", " << sp[1] << std::endl;
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // The image origin is managed in a similar way to the spacing.  A
+  // \code{Point} of the appropriate dimension must first be
+  // allocated.  The coordinates of the origin can then be assigned to
+  // every component.  These coordinates correspond to the position of
+  // the first pixel of the image with respect to an arbitrary
+  // reference system in physical space. It is the user's
+  // responsibility to make sure that multiple images used in the same
+  // application are using a consistent reference system. This is
+  // extremely important in image registration applications.
+  // 
+  // The following code illustrates the creation and assignment of a variable
+  // suitable for initializing the image origin.
+  //  
+  // \index{otb::Image!origin}
+  // \index{otb::Image!SetOrigin()}
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet
+  ImageType::PointType origin;
+
+  origin[0] = 0.0;  // coordinates of the 
+  origin[1] = 0.0;  // first pixel in 2-D
+
+
+  image->SetOrigin( origin );
+  // Software Guide : EndCodeSnippet 
+
+
+  //  Software Guide : BeginLatex
+  //
+  //  The origin can also be retrieved from an image by using the
+  //  \code{GetOrigin()} method. This will return a reference to a
+  //  \code{Point}. The reference can be used to read the contents of
+  //  the array. Note again the use of the \code{const} keyword to indicate
+  //  that the array contents will not be modified.
+  //
+  //  Software Guide : EndLatex 
+
+  // Software Guide : BeginCodeSnippet
+  const ImageType::PointType& orgn = image->GetOrigin();
+
+  std::cout << "Origin = ";
+  std::cout << orgn[0] << ", " << orgn[1] << std::endl;
+  // Software Guide : EndCodeSnippet
+
+
+  // Software Guide : BeginLatex
+  //
+  // Once the spacing and origin of the image have been initialized, the image
+  // will correctly map pixel indices to and from physical space
+  // coordinates. The following code illustrates how a point in physical
+  // space can be mapped into an image index for the purpose of reading the
+  // content of the closest pixel.
+  //
+  // First, a \doxygen{Point} type must be declared. The point type is
+  // templated over the type used to represent coordinates and over the
+  // dimension of the space. In this particular case, the dimension of the
+  // point must match the dimension of the image. 
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet 
+  typedef itk::Point< double, ImageType::ImageDimension > PointType;
+  // Software Guide : EndCodeSnippet 
+
+
+  // Software Guide : BeginLatex
+  //
+  // The Point class, like an \doxygen{itk::Index}, is a relatively small and
+  // simple object.  For this reason, it is not reference-counted like the
+  // large data objects in OTB.  Consequently, it is also not manipulated
+  // with \doxygen{itk::SmartPointer}s.  Point objects are simply declared as
+  // instances of any other C++ class.  Once the point is declared, its
+  // components can be accessed using traditional array notation. In
+  // particular, the \code{[]} operator is available. For efficiency reasons,
+  // no bounds checking is performed on the index used to access a particular
+  // point component. It is the user's responsibility to make sure that the
+  // index is in the range $\{0,Dimension-1\}$.
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet 
+  PointType point;
+
+  point[0] = 1.45;    // x coordinate
+  point[1] = 7.21;    // y coordinate
+  // Software Guide : EndCodeSnippet 
+
+
+  // Software Guide : BeginLatex
+  // 
+  // The image will map the point to an index using the values of the
+  // current spacing and origin. An index object must be provided to
+  // receive the results of the mapping. The index object can be 
+  // instantiated by using the \code{IndexType} defined in the Image
+  // type.
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet 
+  ImageType::IndexType pixelIndex;
+  // Software Guide : EndCodeSnippet 
+
+
+  // Software Guide : BeginLatex
+  // 
+  // The \code{TransformPhysicalPointToIndex()} method of the image class
+  // will compute the pixel index closest to the point provided. The method
+  // checks for this index to be contained inside the current buffered pixel
+  // data. The method returns a boolean indicating whether the resulting
+  // index falls inside the buffered region or not. The output index should
+  // not be used when the returned value of the method is \code{false}.
+  //
+  // The following lines illustrate the point to index mapping and the
+  // subsequent use of the pixel index for accessing pixel data from the
+  // image.
+  //
+  // \index{otb::Image!TransformPhysicalPointToIndex()}
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet 
+  bool isInside = image->TransformPhysicalPointToIndex( point, pixelIndex ); 
+
+  if ( isInside )
+    {
+    ImageType::PixelType pixelValue = image->GetPixel( pixelIndex );
+
+    pixelValue += 5;
+
+    image->SetPixel( pixelIndex, pixelValue );
+    }
+  // Software Guide : EndCodeSnippet 
+
+
+  // Software Guide : BeginLatex
+  // 
+  // Remember that \code{GetPixel()} and \code{SetPixel()} are very
+  // inefficient methods for accessing pixel data. Image iterators should be
+  // used when massive access to pixel data is required.
+  //
+  // Software Guide : EndLatex
+
+  return 0;
+}
+