diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx
index ccec52397e7d4fc3e6ff6c7b9cf17c41bbce798f..8a385e0c1f87d77ff05ffa9cf3454ca3bd9e08da 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx
@@ -183,18 +183,25 @@ template <class TInputImage, class TOutputImage>
 TOutputImage*
 InputImageParameter::SimpleCastImage()
 {
-  TInputImage* realInputImage = dynamic_cast<TInputImage*>(m_Image.GetPointer());
+  if ( dynamic_cast<TOutputImage*> (m_Image.GetPointer()) )
+    {
+    return dynamic_cast<TOutputImage*> (m_Image.GetPointer());
+    }
+  else
+    {
+    TInputImage* realInputImage = dynamic_cast<TInputImage*>(m_Image.GetPointer());
 
-  typedef itk::CastImageFilter<TInputImage, TOutputImage> CasterType;
-  typename CasterType::Pointer caster = CasterType::New();
+    typedef itk::CastImageFilter<TInputImage, TOutputImage> CasterType;
+    typename CasterType::Pointer caster = CasterType::New();
 
-  caster->SetInput(realInputImage);
-  caster->UpdateOutputInformation();
+    caster->SetInput(realInputImage);
+    caster->UpdateOutputInformation();
 
-  m_Image = caster->GetOutput();
-  m_Caster = caster;
+    m_Image = caster->GetOutput();
+    m_Caster = caster;
 
-  return caster->GetOutput();
+    return caster->GetOutput();
+    }
 }