diff --git a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h b/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h
deleted file mode 100644
index 247153984566475a8bd09bba0c151880ff1e5fe9..0000000000000000000000000000000000000000
--- a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.h
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
- *
- * This file is part of Orfeo Toolbox
- *
- *     https://www.orfeo-toolbox.org/
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef otbWarpImageFilter_h
-#define otbWarpImageFilter_h
-#include "itkImageBase.h"
-#include "itkImageToImageFilter.h"
-#include "itkLinearInterpolateImageFunction.h"
-#include "itkPoint.h"
-
-namespace otb
-{
-
-/** \class WarpImageFilter
- * \brief Warps an image using an input deformation field.
- *
- * WarpImageFilter warps an existing image with respect to
- * a given deformation field.
- *
- * A deformation field is represented as a image whose pixel type is some
- * vector type with at least N elements, where N is the dimension of
- * the input image. The vector type must support element access via operator
- * [].
- *
- * The output image is produced by inverse mapping: the output pixels
- * are mapped back onto the input image. This scheme avoids the creation of
- * any holes and overlaps in the output image.
- *
- * Each vector in the deformation field represent the distance between
- * a geometric point in the input space and a point in the output space such
- * that:
- *
- * \f[ p_{in} = p_{out} + d \f]
- *
- * Typically the mapped position does not correspond to an integer pixel
- * position in the input image. Interpolation via an image function
- * is used to compute values at non-integer positions. The default
- * interpolation typed used is the LinearInterpolateImageFunction.
- * The user can specify a particular interpolation function via
- * SetInterpolator(). Note that the input interpolator must derive
- * from base class InterpolateImageFunction.
- *
- * Position mapped to outside of the input image buffer are assigned
- * a edge padding value.
- *
- * The LargetPossibleRegion for the output is inherited
- * from the input deformation field. The output image
- * spacing, origin and orientation may be set via
- * SetOutputSpacing, SetOutputOrigin and
- * SetOutputDirection. The default are respectively a
- * vector of 1's, a vector of 0's and an identity matrix.
- *
- * This class is templated over the type of the input image, the
- * type of the output image and the type of the deformation field.
- *
- * The input image is set via SetInput. The input deformation field
- * is set via SetDisplacementField.
- *
- * This filter is implemented as a multithreaded filter.
- *
- * \warning This filter assumes that the input type, output type
- * and deformation field type all have the same number of dimensions.
- *
- * \ingroup GeometricTransforms MultiThreaded Streamed
- *
- * \ingroup OTBITK
- */
-template <
-  class TInputImage,
-  class TOutputImage,
-  class TDisplacementField
-  >
-class ITK_EXPORT WarpImageFilter :
-    public itk::ImageToImageFilter<TInputImage, TOutputImage>
-{
-public:
-  /** Standard class typedefs. */
-  typedef WarpImageFilter                              Self;
-  typedef itk::ImageToImageFilter<TInputImage,TOutputImage> Superclass;
-  typedef itk::SmartPointer<Self>                           Pointer;
-  typedef itk::SmartPointer<const Self>                     ConstPointer;
-
-  /** Method for creation through the object factory. */
-  itkNewMacro(Self);
-
-  /** Run-time type information (and related methods) */
-  itkTypeMacro( WarpImageFilter, ImageToImageFilter );
-
-  /** Typedef to describe the output image region type. */
-  typedef typename TOutputImage::RegionType OutputImageRegionType;
-
-  /** Inherit some types from the superclass. */
-  typedef typename Superclass::InputImageType         InputImageType;
-  typedef typename Superclass::InputImagePointer      InputImagePointer;
-  typedef typename Superclass::OutputImageType        OutputImageType;
-  typedef typename Superclass::OutputImagePointer     OutputImagePointer;
-  typedef typename Superclass::InputImageConstPointer InputImageConstPointer;
-  typedef typename OutputImageType::IndexType         IndexType;
-  typedef typename OutputImageType::IndexValueType    IndexValueType;
-  typedef typename OutputImageType::SizeType          SizeType;
-  typedef typename OutputImageType::PixelType         PixelType;
-  typedef typename OutputImageType::SpacingType       SpacingType;
-
-  /** Determine the image dimension. */
-  itkStaticConstMacro(ImageDimension, unsigned int,
-                      TOutputImage::ImageDimension );
-  itkStaticConstMacro(InputImageDimension, unsigned int,
-                      TInputImage::ImageDimension );
-  itkStaticConstMacro(DisplacementFieldDimension, unsigned int,
-                      TDisplacementField::ImageDimension );
-  /** typedef for base image type at the current ImageDimension */
-  typedef itk::ImageBase<itkGetStaticConstMacro(ImageDimension)> ImageBaseType;
-
-  /** Displacement field typedef support. */
-  typedef TDisplacementField                        DisplacementFieldType;
-  typedef typename DisplacementFieldType::Pointer   DisplacementFieldPointer;
-  typedef typename DisplacementFieldType::PixelType DisplacementType;
-
-  /** Interpolator typedef support. */
-  typedef double                                                CoordRepType;
-  typedef itk::InterpolateImageFunction<InputImageType,CoordRepType> InterpolatorType;
-  typedef typename InterpolatorType::Pointer                    InterpolatorPointer;
-  typedef itk::LinearInterpolateImageFunction<InputImageType,CoordRepType>
-                                                                DefaultInterpolatorType;
-
-  /** Point type */
-  typedef itk::Point<CoordRepType,itkGetStaticConstMacro(ImageDimension)> PointType;
-
-  /** Type for representing the direction of the output image */
-  typedef typename TOutputImage::DirectionType     DirectionType;
-
-  /** Set the deformation field. */
-  void SetDisplacementField( const DisplacementFieldType * field );
-
-  /** Get a pointer the deformation field. */
-  DisplacementFieldType * GetDisplacementField(void);
-
-  /** Set the interpolator function. */
-  itkSetObjectMacro( Interpolator, InterpolatorType );
-
-  /** Get a pointer to the interpolator function. */
-  itkGetObjectMacro( Interpolator, InterpolatorType );
-
-  /** Set the output image spacing. */
-  itkSetMacro(OutputSpacing, SpacingType);
-  virtual void SetOutputSpacing( const double* values);
-
-  /** Get the output image spacing. */
-  itkGetConstReferenceMacro(OutputSpacing, SpacingType);
-
-  /** Set the output image origin. */
-  itkSetMacro(OutputOrigin, PointType);
-  virtual void SetOutputOrigin( const double* values);
-
-  /** Get the output image origin. */
-  itkGetConstReferenceMacro(OutputOrigin, PointType);
-
-  /** Set/Get the direction (orientation) of the output image */
-  itkSetMacro(OutputDirection, DirectionType );
-  itkGetConstReferenceMacro(OutputDirection, DirectionType );
-
-  /** Helper method to set the output parameters based on this image */
-  void SetOutputParametersFromImage ( const ImageBaseType *image );
-
-  /** Set the start index of the output largest possible region.
-   * The default is an index of all zeros. */
-  itkSetMacro( OutputStartIndex, IndexType );
-
-  /** Get the start index of the output largest possible region. */
-  itkGetConstReferenceMacro( OutputStartIndex, IndexType );
-
-  /** Set the size of the output image. */
-  itkSetMacro( OutputSize, SizeType );
-
-  /** Get the size of the output image. */
-  itkGetConstReferenceMacro( OutputSize, SizeType );
-
-  /** Set the edge padding value */
-  itkSetMacro( EdgePaddingValue, PixelType );
-
-  /** Get the edge padding value */
-  itkGetConstMacro( EdgePaddingValue, PixelType );
-
-  /** WarpImageFilter produces an image which is a different
-   * size than its input image. As such, it needs to provide an
-   * implementation for GenerateOutputInformation() which set
-   * the output information according the OutputSpacing, OutputOrigin
-   * and the deformation field's LargestPossibleRegion. */
-  void GenerateOutputInformation() ITK_OVERRIDE;
-
-  /** It is difficult to compute in advance the input image region
-   * required to compute the requested output region. Thus the safest
-   * thing to do is to request for the whole input image.
-   *
-   * For the deformation field, the input requested region
-   * set to be the same as that of the output requested region. */
-  void GenerateInputRequestedRegion() ITK_OVERRIDE;
-
-  /** This method is used to set the state of the filter before
-   * multi-threading. */
-  void BeforeThreadedGenerateData() ITK_OVERRIDE;
-
-  /** This method is used to set the state of the filter after
-   * multi-threading. */
-  void AfterThreadedGenerateData() ITK_OVERRIDE;
-
-#ifdef ITK_USE_CONCEPT_CHECKING
-  /** Begin concept checking */
-  itkConceptMacro(SameDimensionCheck1,
-    (itk::Concept::SameDimension<ImageDimension, InputImageDimension>));
-  itkConceptMacro(SameDimensionCheck2,
-    (itk::Concept::SameDimension<ImageDimension, DisplacementFieldDimension>));
-  /** itkConceptMacro(InputHasNumericTraitsCheck,
-    (Concept::HasNumericTraits<typename TInputImage::PixelType>)); */
-  itkConceptMacro(DisplacementFieldHasNumericTraitsCheck,
-                  (itk::Concept::HasNumericTraits<typename TDisplacementField::PixelType::ValueType>));
-  /** End concept checking */
-#endif
-
-protected:
-  WarpImageFilter();
-  ~WarpImageFilter() ITK_OVERRIDE {};
-  void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
-
-  /** WarpImageFilter is implemented as a multi-threaded filter.
-   * As such, it needs to provide and implementation for
-   * ThreadedGenerateData(). */
-  void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,
-                            itk::ThreadIdType threadId ) ITK_OVERRIDE;
-
-  /** Override VerifyInputInformation() since this filter's inputs do
-    * not need to occupy the same physical space.
-    *
-    * \sa ProcessObject::VerifyInputInformation
-    */
-   void VerifyInputInformation() ITK_OVERRIDE {}
-
-private:
-
-  WarpImageFilter(const Self&); //purposely not implemented
-  void operator=(const Self&); //purposely not implemented
-
-  /** This function should be in an interpolator but none of the ITK
-   * interpolators at this point handle edge conditions properly
-   */
-  DisplacementType EvaluateDisplacementAtPhysicalPoint(const PointType &p, const DisplacementFieldType *fieldPtr);
-
-  PixelType                  m_EdgePaddingValue;
-  SpacingType                m_OutputSpacing;
-  PointType                  m_OutputOrigin;
-  DirectionType              m_OutputDirection;
-
-  InterpolatorPointer        m_Interpolator;
-  SizeType                   m_OutputSize;        // Size of the output image
-  IndexType                  m_OutputStartIndex;  // output image start index
-  bool                       m_DefFieldSizeSame;
-  // variables for deffield interpoator
-  IndexType m_StartIndex,m_EndIndex;
-
-
-};
-
-} // end namespace otb
-
-#ifndef OTB_MANUAL_INSTANTIATION
-#include "otbWarpImageFilter.txx"
-#endif
-
-#endif
diff --git a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx b/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx
deleted file mode 100644
index 1cb3955caf61be8b735e173d12fb6ba08c988456..0000000000000000000000000000000000000000
--- a/Modules/ThirdParty/ITK/include/otbWarpImageFilter.txx
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
- *
- * This file is part of Orfeo Toolbox
- *
- *     https://www.orfeo-toolbox.org/
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef otbWarpImageFilter_txx
-#define otbWarpImageFilter_txx
-#include "otbWarpImageFilter.h"
-
-#include "itkImageRegionIterator.h"
-#include "itkImageRegionIteratorWithIndex.h"
-#include "itkProgressReporter.h"
-#include "itkContinuousIndex.h"
-#include "vnl/vnl_math.h"
-
-#include "itkVariableLengthVector.h"
-
-namespace otb
-{
-
-template <class PixelType> unsigned int PixelSizeFinder(itk::VariableLengthVector<PixelType> pix)
-{
-  return pix.Size();
-}
-template <class PixelType> unsigned int PixelSizeFinder(PixelType itkNotUsed(pix))
-{
-  return PixelType::Dimension;
-}
-
-/**
- * Default constructor.
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::WarpImageFilter()
-{
-  // Setup the number of required inputs
-  this->SetNumberOfRequiredInputs( 2 );
-
-  // Setup default values
-  m_OutputSpacing.Fill( 1.0 );
-  m_OutputOrigin.Fill( 0.0 );
-  m_OutputDirection.SetIdentity();
-  m_OutputSize.Fill(0);
-  itk::NumericTraits<PixelType>::SetLength(m_EdgePaddingValue, 1);
-  m_OutputStartIndex.Fill(0);
-  // Setup default interpolator
-  typename DefaultInterpolatorType::Pointer interp =
-    DefaultInterpolatorType::New();
-
-  m_Interpolator =
-    static_cast<InterpolatorType*>( interp.GetPointer() );
-}
-
-/**
- * Standard PrintSelf method.
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::PrintSelf(std::ostream& os, itk::Indent indent) const
-{
-
-  Superclass::PrintSelf(os, indent);
-
-  os << indent << "OutputSpacing: " << m_OutputSpacing << std::endl;
-  os << indent << "OutputOrigin: " << m_OutputOrigin << std::endl;
-  os << indent << "OutputDirection: " << m_OutputDirection << std::endl;
-  os << indent << "OutputSize: " << m_OutputSize << std::endl;
-  os << indent << "OutputStartIndex: " << m_OutputStartIndex << std::endl;
-  os << indent << "EdgePaddingValue: "
-     << static_cast<typename itk::NumericTraits<PixelType>::PrintType>(m_EdgePaddingValue)
-     << std::endl;
-  os << indent << "Interpolator: " << m_Interpolator.GetPointer() << std::endl;
-
-}
-
-
-/**
- * Set the output image spacing.
- *
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::SetOutputSpacing(
-  const double* spacing)
-{
-  SpacingType s(spacing);
-  this->SetOutputSpacing( s );
-}
-
-
-/**
- * Set the output image origin.
- *
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::SetOutputOrigin(
-  const double* origin)
-{
-  PointType p(origin);
-  this->SetOutputOrigin(p);
-}
-
-/** Helper method to set the output parameters based on this image */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::SetOutputParametersFromImage ( const ImageBaseType * image )
-{
-  this->SetOutputOrigin ( image->GetOrigin() );
-  this->SetOutputSpacing ( image->GetSpacing() );
-  this->SetOutputDirection ( image->GetDirection() );
-  this->SetOutputStartIndex ( image->GetLargestPossibleRegion().GetIndex() );
-  this->SetOutputSize ( image->GetLargestPossibleRegion().GetSize() );
-}
-
-/**
- * Set deformation field as Inputs[1] for this ProcessObject.
- *
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::SetDisplacementField(
-  const DisplacementFieldType * field )
-{
-  // const cast is needed because the pipeline is not const-correct.
-  DisplacementFieldType * input =
-       const_cast< DisplacementFieldType * >( field );
-  this->itk::ProcessObject::SetNthInput( 1, input );
-}
-
-
-/**
- * Return a pointer to the deformation field.
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-typename WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::DisplacementFieldType *
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::GetDisplacementField(void)
-{
-  return static_cast<DisplacementFieldType *>
-    ( this->itk::ProcessObject::GetInput( 1 ));
-}
-
-
-/**
- * Setup state of filter before multi-threading.
- * InterpolatorType::SetInputImage is not thread-safe and hence
- * has to be setup before ThreadedGenerateData
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::BeforeThreadedGenerateData()
-{
-
-  if( !m_Interpolator )
-    {
-    itkExceptionMacro(<< "Interpolator not set");
-    }
-  DisplacementFieldPointer fieldPtr = this->GetDisplacementField();
-
-  // Connect input image to interpolator
-  m_Interpolator->SetInputImage( this->GetInput() );
-  typename DisplacementFieldType::RegionType defRegion =
-    fieldPtr->GetLargestPossibleRegion();
-  typename OutputImageType::RegionType outRegion =
-    this->GetOutput()->GetLargestPossibleRegion();
-  m_DefFieldSizeSame = outRegion == defRegion;
-  if(!m_DefFieldSizeSame)
-    {
-    m_StartIndex = fieldPtr->GetBufferedRegion().GetIndex();
-    for(unsigned i = 0; i < ImageDimension; i++)
-      {
-      m_EndIndex[i] = m_StartIndex[i] +
-        fieldPtr->GetBufferedRegion().GetSize()[i] - 1;
-      }
-    }
-}
-
-/**
- * Setup state of filter after multi-threading.
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::AfterThreadedGenerateData()
-{
-  // Disconnect input image from interpolator
-  m_Interpolator->SetInputImage( ITK_NULLPTR );
-}
-
-
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-typename WarpImageFilter<TInputImage,
-                         TOutputImage,
-                         TDisplacementField>::DisplacementType
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::EvaluateDisplacementAtPhysicalPoint(const PointType &point, const DisplacementFieldType *fieldPtr)
-{
-  itk::ContinuousIndex<double,ImageDimension> index;
-  fieldPtr->TransformPhysicalPointToContinuousIndex(point,index);
-  unsigned int dim;  // index over dimension
-  /**
-   * Compute base index = closest index below point
-   * Compute distance from point to base index
-   */
-  IndexType baseIndex;
-  IndexType neighIndex;
-  double distance[ImageDimension];
-
-  for( dim = 0; dim < ImageDimension; dim++ )
-    {
-    baseIndex[dim] = itk::Math::Floor< IndexValueType >( index[dim] );
-
-    if( baseIndex[dim] >=  m_StartIndex[dim] )
-      {
-      if( baseIndex[dim] <  m_EndIndex[dim] )
-        {
-        distance[dim] = index[dim] - static_cast<double>( baseIndex[dim] );
-        }
-      else
-        {
-        baseIndex[dim] = m_EndIndex[dim];
-        distance[dim] = 0.0;
-        }
-      }
-    else
-      {
-      baseIndex[dim] = m_StartIndex[dim];
-      distance[dim] = 0.0;
-      }
-    }
-
-  /**
-   * Interpolated value is the weight some of each of the surrounding
-   * neighbors. The weight for each neighbour is the fraction overlap
-   * of the neighbor pixel with respect to a pixel centered on point.
-   */
-  DisplacementType output;
-  output.Fill(0);
-
-  double totalOverlap = 0.0;
-  unsigned int numNeighbors(1 << TInputImage::ImageDimension);
-
-  for( unsigned int counter = 0; counter < numNeighbors; counter++ )
-    {
-    double overlap = 1.0;          // fraction overlap
-    unsigned int upper = counter;  // each bit indicates upper/lower neighbour
-
-    // get neighbor index and overlap fraction
-    for( dim = 0; dim < ImageDimension; dim++ )
-      {
-
-      if( upper & 1 )
-        {
-        neighIndex[dim] = baseIndex[dim] + 1;
-        overlap *= distance[dim];
-        }
-      else
-        {
-        neighIndex[dim] = baseIndex[dim];
-        overlap *= 1.0 - distance[dim];
-        }
-
-      upper >>= 1;
-
-      }
-
-    // get neighbor value only if overlap is not zero
-    if( overlap )
-      {
-      const DisplacementType input =
-        fieldPtr->GetPixel( neighIndex );
-      for(unsigned int k = 0; k < otb::PixelSizeFinder(input); k++ )
-        {
-        output[k] += overlap * static_cast<double>( input[k] );
-        }
-      totalOverlap += overlap;
-      }
-
-    if( totalOverlap == 1.0 )
-      {
-      // finished
-      break;
-      }
-
-    }
-  return ( output );
-}
-
-/**
- * Compute the output for the region specified by outputRegionForThread.
- */
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::ThreadedGenerateData(
-  const OutputImageRegionType& outputRegionForThread,
-  itk::ThreadIdType threadId )
-{
-
-  InputImageConstPointer inputPtr = this->GetInput();
-  OutputImagePointer outputPtr = this->GetOutput();
-  DisplacementFieldPointer fieldPtr = this->GetDisplacementField();
-
-  // support progress methods/callbacks
-  itk::ProgressReporter progress(this, threadId, outputRegionForThread.GetNumberOfPixels());
-
-  // iterator for the output image
-  itk::ImageRegionIteratorWithIndex<OutputImageType> outputIt(
-    outputPtr, outputRegionForThread );
-  IndexType index;
-  PointType point;
-  DisplacementType displacement;
-  if(this->m_DefFieldSizeSame)
-    {
-    // iterator for the deformation field
-    itk::ImageRegionIterator<DisplacementFieldType>
-      fieldIt(fieldPtr, outputRegionForThread );
-
-    while( !outputIt.IsAtEnd() )
-      {
-      // get the output image index
-      index = outputIt.GetIndex();
-      outputPtr->TransformIndexToPhysicalPoint( index, point );
-
-      // get the required displacement
-      displacement = fieldIt.Get();
-
-      // compute the required input image point
-      for(unsigned int j = 0; j < ImageDimension; j++ )
-        {
-        point[j] += displacement[j];
-        }
-
-      // get the interpolated value
-      if( m_Interpolator->IsInsideBuffer( point ) )
-        {
-        PixelType value =
-          static_cast<PixelType>(m_Interpolator->Evaluate( point ) );
-        outputIt.Set( value );
-        }
-      else
-        {
-        outputIt.Set( m_EdgePaddingValue );
-        }
-      ++outputIt;
-      ++fieldIt;
-      progress.CompletedPixel();
-      }
-    }
-  else
-    {
-    while( !outputIt.IsAtEnd() )
-      {
-      // get the output image index
-      index = outputIt.GetIndex();
-      outputPtr->TransformIndexToPhysicalPoint( index, point );
-
-      displacement = this->EvaluateDisplacementAtPhysicalPoint( point, fieldPtr );
-      // compute the required input image point
-      for(unsigned int j = 0; j < ImageDimension; j++ )
-        {
-        point[j] += displacement[j];
-        }
-
-      // get the interpolated value
-      if( m_Interpolator->IsInsideBuffer( point ) )
-        {
-        PixelType value =
-          static_cast<PixelType>(m_Interpolator->Evaluate( point ) );
-        outputIt.Set( value );
-        }
-      else
-        {
-        outputIt.Set( m_EdgePaddingValue );
-        }
-      ++outputIt;
-      progress.CompletedPixel();
-      }
-    }
-}
-
-
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::GenerateInputRequestedRegion()
-{
-
-  // call the superclass's implementation
-  Superclass::GenerateInputRequestedRegion();
-
-  // request the largest possible region for the input image
-  InputImagePointer inputPtr =
-    const_cast< InputImageType * >( this->GetInput() );
-
-  if( inputPtr )
-    {
-    inputPtr->SetRequestedRegionToLargestPossibleRegion();
-    }
-
-  // just propagate up the output requested region for the
-  // deformation field.
-  DisplacementFieldPointer fieldPtr = this->GetDisplacementField();
-  OutputImagePointer outputPtr = this->GetOutput();
-  if(fieldPtr.IsNotNull() )
-    {
-    fieldPtr->SetRequestedRegion( outputPtr->GetRequestedRegion() );
-    if(!fieldPtr->VerifyRequestedRegion())
-      {
-      fieldPtr->SetRequestedRegion(fieldPtr->GetLargestPossibleRegion());
-      }
-    }
-}
-
-
-template <class TInputImage,class TOutputImage,class TDisplacementField>
-void
-WarpImageFilter<TInputImage,TOutputImage,TDisplacementField>
-::GenerateOutputInformation()
-{
-  // call the superclass's implementation of this method
-  Superclass::GenerateOutputInformation();
-
-  OutputImagePointer outputPtr = this->GetOutput();
-
-  outputPtr->SetSpacing( m_OutputSpacing );
-  outputPtr->SetOrigin( m_OutputOrigin );
-  outputPtr->SetDirection( m_OutputDirection );
-
-  DisplacementFieldPointer fieldPtr = this->GetDisplacementField();
-  if( this->m_OutputSize[0] == 0 &&
-      fieldPtr.IsNotNull())
-    {
-    outputPtr->SetLargestPossibleRegion( fieldPtr->
-                                         GetLargestPossibleRegion() );
-    }
-  else
-    {
-    OutputImageRegionType region;
-    region.SetSize(this->m_OutputSize);
-    region.SetIndex(this->m_OutputStartIndex);
-    outputPtr->SetLargestPossibleRegion(region);
-    }
-}
-
-
-} // end namespace otb
-
-#endif