diff --git a/Code/DisparityMap/otbFineRegistrationImageFilter.h b/Code/DisparityMap/otbFineRegistrationImageFilter.h
index a433c112d9210b8fd3a37d5d654199b84cba1ff9..7212c975062d5c884211c3568961192697f462b5 100644
--- a/Code/DisparityMap/otbFineRegistrationImageFilter.h
+++ b/Code/DisparityMap/otbFineRegistrationImageFilter.h
@@ -22,6 +22,7 @@
 #include "itkInterpolateImageFunction.h"
 #include "itkContinuousIndex.h"
 
+#include "itkTransform.h"
 #include "itkTranslationTransform.h"
 #include "itkImageToImageMetric.txx"
 
@@ -51,8 +52,8 @@ namespace otb
  * This filter accepts fixed and moving images with different sizes and spacing. Metric and search windows radius
  * are expressed in terms of number of pixels in the fixed image.
  *
- * An initial offset can be used to reduce computation time in case of input and moving images with a significant
- * offset. This offset is taken into account in the output deformation field.
+ * An initial transform can be used to reduce computation time in case of input and moving images with a significant
+ * offset. This transform is taken into account in the output deformation field.
  *
  * It is possible to generate an output metric map and deformation field at a coarser resolution by setting
  * grid step to value higher than 1 (grid step is expressed in terms of number of fixed image pixels).
@@ -98,8 +99,9 @@ public:
   typedef typename itk::ImageToImageMetric<TInputImage,
                                            TInputImage>           MetricType;
   typedef typename MetricType::Pointer                            MetricPointerType;
-  typedef typename itk::TranslationTransform<double,2>            TranslationType;
-  typedef typename TranslationType::Pointer                       TranslationPointerType;
+  typedef typename itk::Transform<double,2,2>                     TransformType;
+  typedef typename TransformType::Pointer                         TransformPointerType;
+  typedef typename itk::TranslationTransform<double,2>            TranslationTransformType;
 
   /** Set/Get the Metric used to compare images */
   itkSetObjectMacro(Metric,MetricType);
@@ -142,6 +144,10 @@ public:
   itkSetMacro(UseSpacing,bool);
   itkBooleanMacro(UseSpacing);
 
+  /** Set default transform between the two images */
+  itkSetObjectMacro(Transform, TransformType);
+  itkGetConstObjectMacro(Transform, TransformType);
+
   /** Set default offset between the two images */
   itkSetMacro(InitialOffset,SpacingType);
   itkGetConstReferenceMacro(InitialOffset,SpacingType);
@@ -209,7 +215,7 @@ private:
   MetricPointerType             m_Metric;
 
   /** The translation */
-  TranslationPointerType        m_Translation;
+  TransformPointerType          m_Transform;
 
   /** Default offset */
   SpacingType                   m_InitialOffset;
diff --git a/Code/DisparityMap/otbFineRegistrationImageFilter.txx b/Code/DisparityMap/otbFineRegistrationImageFilter.txx
index c02f405246a4752bdc6ef97f6f52c6ac80208800..0b4629b70820c4f4ccd06f8f29d37b57dcf826ce 100644
--- a/Code/DisparityMap/otbFineRegistrationImageFilter.txx
+++ b/Code/DisparityMap/otbFineRegistrationImageFilter.txx
@@ -57,8 +57,8 @@ FineRegistrationImageFilter<TInputImage,T0utputCorrelation,TOutputDeformationFie
   // Default interpolator
   m_Interpolator = itk::LinearInterpolateImageFunction<TInputImage,double>::New();
 
-  // Translation
-  m_Translation = TranslationType::New();
+  // Transform: default on a translation
+  m_Transform = TranslationTransformType::New();
 
   // Grid Step
   m_GridStep.Fill(1);
@@ -297,7 +297,7 @@ FineRegistrationImageFilter<TInputImage,TOutputCorrelation,TOutputDeformationFie
 
   // Wire currentMetric
   m_Interpolator->SetInputImage(this->GetMovingInput());
-  m_Metric->SetTransform(m_Translation);
+  m_Metric->SetTransform(m_Transform);
   m_Metric->SetInterpolator(m_Interpolator);
   m_Metric->SetFixedImage(fixedPtr);
   m_Metric->SetMovingImage(movingPtr);
@@ -320,7 +320,7 @@ FineRegistrationImageFilter<TInputImage,TOutputCorrelation,TOutputDeformationFie
   double currentMetric, optMetric;
 
   // Optimal translation parameters
-  typename TranslationType::ParametersType params(2), optParams(2), tmpOptParams(2);
+  typename TransformType::ParametersType params(2), optParams(2), tmpOptParams(2);
 
   // Final deformation value
   DeformationValueType deformationValue;