diff --git a/Data/Baseline/OTB-Applications/Files/apTvTestApplicationOutputXML_All.xml b/Data/Baseline/OTB-Applications/Files/apTvTestApplicationOutputXML_All.xml
index 54ffc7630043b60e7fa81520e337aad0ec2f55d1..1c1803f11a3e483a5a25f2ef137c8cfca743b4b0 100644
--- a/Data/Baseline/OTB-Applications/Files/apTvTestApplicationOutputXML_All.xml
+++ b/Data/Baseline/OTB-Applications/Files/apTvTestApplicationOutputXML_All.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" ?>
 <OTB>
-    <version>5.11.0</version>
+    <version>6.7.0</version>
     <application>
         <name>TestApplication</name>
         <descr>This application helps developers to test parameters types</descr>
@@ -42,19 +42,19 @@
             <key>filename</key>
             <type>InputFilename</type>
             <name>File name</name>
-            <value>/home/michelj/dev/src/otb-data/Input/letter.scale</value>
+            <value>Data/Input/letter.scale</value>
         </parameter>
         <parameter mandatory="true">
             <key>outfilename</key>
             <type>OutputFilename</type>
             <name>Output Filename</name>
-            <value>/home/michelj/dev/build/otb/Testing/Temporary/foo.txt</value>
+            <value>Testing/Temporary/foo.txt</value>
         </parameter>
         <parameter mandatory="true">
             <key>directory</key>
             <type>Directory</type>
             <name>Directory name</name>
-            <value>/home/michelj/dev/src/otb-data/Input/world_boundaries</value>
+            <value>Input/world_boundaries</value>
         </parameter>
         <parameter mandatory="true">
             <key>choice.choice1.floatchoice1</key>
@@ -73,15 +73,15 @@
             <type>OutputImage</type>
             <name>Output Image</name>
             <pixtype>double</pixtype>
-            <value>/home/michelj/dev/build/otb/Testing/Temporary/foo.tif</value>
+            <value>Testing/Temporary/foo.tif</value>
         </parameter>
         <parameter mandatory="false">
             <key>il</key>
             <type>InputImageList</type>
             <name>Input image list</name>
             <values>
-                <value>/home/michelj/dev/src/otb-data/Input/anaglyphInput1.tif</value>
-                <value>/home/michelj/dev/src/otb-data/Input/anaglyphInput2.tif</value>
+                <value>Input/anaglyphInput1.tif</value>
+                <value>Input/anaglyphInput2.tif</value>
             </values>
         </parameter>
         <parameter mandatory="false">
@@ -92,18 +92,5 @@
                 <value>Choice2</value>
             </values>
         </parameter>
-        <parameter mandatory="true">
-            <key>cin</key>
-            <type>ComplexInputImage</type>
-            <name>Input Complex Image</name>
-            <value>/home/michelj/dev/src/otb-data/Input/RADARSAT2_ALTONA_300_300_VV.tif</value>
-        </parameter>
-        <parameter mandatory="true">
-            <key>cout</key>
-            <type>ComplexOutputImage</type>
-            <name>Output Complex Image</name>
-            <pixtype />
-            <value />
-        </parameter>
     </application>
 </OTB>
diff --git a/Documentation/Cookbook/Scripts/otbGenerateWrappersRstDoc.py b/Documentation/Cookbook/Scripts/otbGenerateWrappersRstDoc.py
index 6af59db0d2192a28c61aa51559d76003c87af94b..1fdf53d44841712fcb7f221dfc5618bd4c6cc47c 100755
--- a/Documentation/Cookbook/Scripts/otbGenerateWrappersRstDoc.py
+++ b/Documentation/Cookbook/Scripts/otbGenerateWrappersRstDoc.py
@@ -25,7 +25,7 @@ import argparse
 import re
 
 import otbApplication
-from otbApplication import ParameterType_Bool, ParameterType_Int, ParameterType_Radius, ParameterType_RAM, ParameterType_Float, ParameterType_String, ParameterType_StringList, ParameterType_InputFilename, ParameterType_OutputFilename, ParameterType_InputImage, ParameterType_ComplexInputImage, ParameterType_OutputImage, ParameterType_ComplexOutputImage, ParameterType_InputVectorData, ParameterType_OutputVectorData, ParameterType_Directory, ParameterType_Choice, ParameterType_InputImageList, ParameterType_InputVectorDataList, ParameterType_InputFilenameList, ParameterType_InputProcessXML, ParameterType_OutputProcessXML, ParameterType_ListView, ParameterType_Group
+from otbApplication import ParameterType_Bool, ParameterType_Int, ParameterType_Radius, ParameterType_RAM, ParameterType_Float, ParameterType_String, ParameterType_StringList, ParameterType_InputFilename, ParameterType_OutputFilename, ParameterType_InputImage, ParameterType_OutputImage, ParameterType_InputVectorData, ParameterType_OutputVectorData, ParameterType_Directory, ParameterType_Choice, ParameterType_InputImageList, ParameterType_InputVectorDataList, ParameterType_InputFilenameList, ParameterType_InputProcessXML, ParameterType_OutputProcessXML, ParameterType_ListView, ParameterType_Group
 
 from otb_warnings import application_documentation_warnings
 
@@ -118,9 +118,6 @@ def GetApplicationExamplePythonSnippet(app,idx,expand = False, inputpath="",outp
         if paramtype == ParameterType_InputImage :
             # app.SetParameterString(param,EncloseString(ExpandPath(value,inputpath,expand)))
             output += "\t" + appname + ".SetParameterString("+EncloseString(param)+", "+EncloseString(ExpandPath(value,inputpath,expand))+")"
-        if paramtype == ParameterType_ComplexInputImage:
-            # app.SetParameterString(param,EncloseString(ExpandPath(value,inputpath,expand)))
-            output += "\t" + appname + ".SetParameterString("+EncloseString(param)+", "+EncloseString(ExpandPath(value,inputpath,expand))+")"
         if paramtype == ParameterType_InputVectorData:
             # app.SetParameterString(param,EncloseString(ExpandPath(value,inputpath,expand)))
             output += "\t" + appname + ".SetParameterString("+EncloseString(param)+", "+EncloseString(ExpandPath(value,inputpath,expand))+")"
@@ -132,10 +129,6 @@ def GetApplicationExamplePythonSnippet(app,idx,expand = False, inputpath="",outp
                 output += "\t" + appname + ".SetParameterOutputImagePixelType("+EncloseString(param)+", "+str(foundcode)+")"
             else:
                 output += "\t" + appname +".SetParameterString("+EncloseString(param)+", "+ EncloseString(ExpandPath(value,outputpath,expand)) + ")"
-        if paramtype == ParameterType_ComplexOutputImage :
-            # TODO: handle complex type properly
-            # app.SetParameterString(param,EncloseString(ExpandPath(value,outputpath,expand)))
-            output += "\t" + appname +".SetParameterString("+EncloseString(param)+", "+ EncloseString(ExpandPath(value,outputpath,expand)) + ")"
         if paramtype == ParameterType_OutputVectorData:
             # app.SetParameterString(param,EncloseString(ExpandPath(value,outputpath,expand)))
             output += "\t" + appname +".SetParameterString("+EncloseString(param)+", "+ EncloseString(ExpandPath(value,outputpath,expand)) + ")"
@@ -201,8 +194,8 @@ def rst_parameter_value(app, key):
     values.update({ParameterType_String: "string"})
     values.update({ParameterType_StringList: "string1 string2..."})
     values.update(dict.fromkeys([ParameterType_InputFilename, ParameterType_OutputFilename], "filename [dtype]"))
-    values.update(dict.fromkeys([ParameterType_InputImage, ParameterType_ComplexInputImage], "image"))
-    values.update(dict.fromkeys([ParameterType_OutputImage, ParameterType_ComplexOutputImage], "image [dtype]"))
+    values.update({ParameterType_InputImage: "image"})
+    values.update({ParameterType_OutputImage: "image [dtype]"})
     values.update(dict.fromkeys([ParameterType_InputVectorData, ParameterType_OutputVectorData], "vectorfile"))
     values.update({ParameterType_Directory: "directory"})
     values.update({ParameterType_Choice: "choice"})
diff --git a/Documentation/Cookbook/rst/C++/WriteAnApplication.rst b/Documentation/Cookbook/rst/C++/WriteAnApplication.rst
index 7bf160f4e8a3eb751e0a0131b7337f7f64b9d7df..412a789d70bf9190b51272653ff0458ae1b4e7c4 100644
--- a/Documentation/Cookbook/rst/C++/WriteAnApplication.rst
+++ b/Documentation/Cookbook/rst/C++/WriteAnApplication.rst
@@ -101,9 +101,6 @@ Similar methods exist for binding a data object to an output parameter:
 -  ``SetParameterOutputImage(key,data)`` : link the image object to the
    given output parameter
 
--  ``SetParameterComplexOutputImage(key,data)`` : link the complex image
-   object to the given output parameter
-
 -  ``SetParameterOutputVectorData(key,data)`` : link the vector data
    object to the given output parameter
 
@@ -155,9 +152,6 @@ parameters:
 -  ``ParameterType_InputImageList`` : parameter storing a list of input
    image.
 
--  ``ParameterType_ComplexInputImage`` : parameter storing a complex
-   input image.
-
 -  ``ParameterType_InputVectorData`` : parameter storing input vector
    data.
 
@@ -172,9 +166,6 @@ parameters:
 
 -  ``ParameterType_OutputImage`` : parameter storing an output image.
 
--  ``ParameterType_ComplexOutputImage`` : parameter storing a complex
-   output image.
-
 -  ``ParameterType_OutputVectorData`` : parameter storing an output
    vector data.
 
@@ -205,11 +196,11 @@ you can use a numeric parameter and change its role by calling
 ``SetParameterRole(key,Role_Output)``.
 
 The input types ``InputImage``, ``InputImageList``,
-``ComplexInputImage``, ``InputVectorData`` and ``InputVectorDataList``
-store the name of the files to load, but they also encapsulate the
+``InputVectorData`` and ``InputVectorDataList`` store
+the name of the files to load, but they also encapsulate the
 readers needed to produce the input data.
 
-The output types ``OutputImage``, ``ComplexOutputImage`` and
+The output types ``OutputImage`` and
 ``OutputVectorData`` store the name of the files to write, but they also
 encapsulate the corresponding writers.
 
diff --git a/Examples/Application/ApplicationExample.cxx b/Examples/Application/ApplicationExample.cxx
index 4e402f001eb79ba17ec86d83d9be65ff29e0441b..ee411135078349841cf6619fb8c486d23cd942d4 100644
--- a/Examples/Application/ApplicationExample.cxx
+++ b/Examples/Application/ApplicationExample.cxx
@@ -167,11 +167,6 @@ private:
     SetDefaultParameterInt("ram", 256);
     MandatoryOff("ram");
 
-    AddParameter(ParameterType_ComplexInputImage, "cin", "Input complex image");
-    AddParameter(ParameterType_ComplexOutputImage, "cout", "Output complex image");
-    MandatoryOff("cin");
-    MandatoryOff("cout");
-
     // An example of command-line is automatically generated. Method \code{SetDocExampleParameterValue()} is
     // used to set parameters. Dataset should be located in  \code{OTB-Data/Examples} directory.
 
diff --git a/Modules/Applications/AppTest/app/otbTestApplication.cxx b/Modules/Applications/AppTest/app/otbTestApplication.cxx
index 5b5854a18e44e3e403dd681510dd4ef4148bfd99..60fff26221848c208c765326036987f3b32f37d6 100644
--- a/Modules/Applications/AppTest/app/otbTestApplication.cxx
+++ b/Modules/Applications/AppTest/app/otbTestApplication.cxx
@@ -102,9 +102,6 @@ private:
     AddChoice("cl.choice2", "Choice2");
     MandatoryOff("cl");
 
-    AddParameter(ParameterType_ComplexInputImage,  "cin", "Input Complex Image");
-    AddParameter(ParameterType_ComplexOutputImage,  "cout", "Output Complex Image");
-
     // Doc example parameter settings
     SetDocExampleParameterValue("boolean", "true");
     SetDocExampleParameterValue("filename", "myFilename.foo");
@@ -135,11 +132,6 @@ private:
       otbAppLogFATAL("Waiting at least one input image");
       }
 
-    SetParameterComplexOutputImage(
-      "cout",
-      GetParameterComplexImage( "cin" )
-    );
-
     PrintStrings( "fl" );
   }
 
diff --git a/Modules/Applications/AppTest/test/CMakeLists.txt b/Modules/Applications/AppTest/test/CMakeLists.txt
index b86af3124903da5efb63c3bf6bcf1e333cef4f83..0da6397d890e5f61313ef074d6b19cff5ca00caa 100644
--- a/Modules/Applications/AppTest/test/CMakeLists.txt
+++ b/Modules/Applications/AppTest/test/CMakeLists.txt
@@ -47,8 +47,6 @@ otb_test_application(NAME apTvTestApplicationOutputXML_All
           -outgroup.outputimage ${TEMP}/foo.tif double
           -il ${INPUTDATA}/anaglyphInput1.tif ${INPUTDATA}/anaglyphInput2.tif
           -cl Choice2
-          -cin ${INPUTDATA}/RADARSAT2_ALTONA_300_300_VV.tif
-          -cout ${TEMP}/fooCplx.tif
           -outxml ${TEMP}/apTvTestApplicationOutputXML_All.xml
   VALID --compare-ascii ${NOTOL}
     ${OTBAPP_BASELINE_FILES}/apTvTestApplicationOutputXML_All.xml
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h b/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h
index be6e85a9db0e8309eece5e59e0dd7a8afe4eab9a..313f8f1537af75ef500d0bff91a93d1b94bd204f 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetParameterInitializers.h
@@ -56,8 +56,6 @@
 #include "otbWrapperQtWidgetOutputImageParameter.h"
 #include "otbWrapperQtWidgetOutputProcessXMLParameter.h"
 #include "otbWrapperQtWidgetOutputVectorDataParameter.h"
-#include "otbWrapperQtWidgetComplexInputImageParameter.h"
-#include "otbWrapperQtWidgetComplexOutputImageParameter.h"
 #include "otbWrapperQtWidgetParameterFactory.h"
 #include "otbWrapperQtWidgetListEditWidget.h"
 
@@ -167,22 +165,6 @@ public:
   inline result_type operator () ( argument_type widget ) const;
 };
 
-/**
- * \class ComplexInputImageInitializer
- *
- * \ingroup OTBMonteverdiGUI
- *
- * \brief WIP.
- */
-class ComplexInputImageInitializer : public std::unary_function<
-  otb::Wrapper::QtWidgetComplexInputImageParameter*,
-  void
-  >
-{
-public:
-  inline result_type operator () ( argument_type widget ) const;
-};
-
 /**
  * \class InputVectorDataInitializer
  *
@@ -279,26 +261,6 @@ private:
   QString m_Prefix;
 };
 
-/**
- * \class ComplexOutputImageInitializer
- *
- * \ingroup OTBMonteverdiGUI
- *
- * \brief WIP.
- */
-class ComplexOutputImageInitializer : public std::unary_function<
-  otb::Wrapper::QtWidgetComplexOutputImageParameter*,
-  void
-  >
-{
-public:
-  inline ComplexOutputImageInitializer( const QString & prefix );
-  inline result_type operator () ( argument_type widget ) const;
-
-private:
-  QString m_Prefix;
-};
-
 /**
  * \class OutputVectorDataInitializer
  *
@@ -439,17 +401,6 @@ InputImageListInitializer
   // Drop support is done by ParameterListInitializer
 }
 
-/*****************************************************************************/
-inline
-ComplexInputImageInitializer::result_type
-ComplexInputImageInitializer
-::operator () ( argument_type widget ) const
-{
-  assert( widget!=NULL );
-
-  SetupForFilenameDrop( widget, "You can drop filename here." );
-}
-
 /*****************************************************************************/
 inline
 InputFilenameInitializer::result_type
@@ -559,41 +510,6 @@ OutputImageInitializer
     );
 }
 
-/*****************************************************************************/
-inline
-ComplexOutputImageInitializer
-::ComplexOutputImageInitializer( const QString& prefix) :
-  m_Prefix( prefix )
-{
-}
-
-/*****************************************************************************/
-inline
-ComplexOutputImageInitializer::result_type
-ComplexOutputImageInitializer
-::operator () ( argument_type widget ) const
-{
-  assert( widget!=NULL );
-  assert( I18nCoreApplication::ConstInstance()!=NULL );
-
-  if( m_Prefix.isEmpty() )
-    {
-    SetupForFilenameDrop( widget, "You can drop filename here." );
-
-    assert( qApp!=NULL );
-    assert( !qApp->arguments().empty() );
-
-    SetupOutputFilename( widget );
-    }
-  else
-    SetupOutputFilename(
-      widget,
-      I18nCoreApplication::ConstInstance()->GetResultsDir(),
-      m_Prefix,
-      ".tif"
-    );
-}
-
 /*****************************************************************************/
 inline
 OutputVectorDataInitializer::result_type
diff --git a/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx b/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx
index 4b32915f6bc77b610d515611f87c741ede99fe91..53c723bc811bc7fba33e89e8d032f9c74df110bc 100644
--- a/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx
+++ b/Modules/Visualization/MonteverdiGui/src/mvdQtWidgetView.cxx
@@ -177,7 +177,6 @@ QtWidgetView
   //SetupWidget( widget, InputFilenameListInitializer() );
   SetupWidget( widget, InputImageInitializer() );
   //SetupWidget( widget, InputImageListInitializer() );
-  SetupWidget( widget, ComplexInputImageInitializer() );
   SetupWidget( widget, InputProcessXMLInitializer() );
   SetupWidget( widget, InputVectorDataInitializer() );
   //SetupWidget( widget, InputVectorDataListInitializer() );
@@ -193,10 +192,6 @@ QtWidgetView
     widget,
     OutputImageInitializer( GetModel()->GetApplication()->GetName() )
   );
-  SetupWidget(
-    widget,
-    ComplexOutputImageInitializer( GetModel()->GetApplication()->GetName() )
-  );
 
   SetupWidget( widget, OutputVectorDataInitializer() );
 }
@@ -286,13 +281,6 @@ QtWidgetView
         ->GetFileName();
       break;
     //
-    // COMPLEX IMAGE.
-    case otb::Wrapper::ParameterType_ComplexOutputImage:
-      filename =
-        otb::DynamicCast< otb::Wrapper::ComplexOutputImageParameter >( param )
-        ->GetFileName();
-      break;
-    //
     // NONE.
     default:
       break;
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
index 89d89cb94b65cbf7624dc79e09c730aa2d318d4e..d53f70c266f4b9e8f59aa68ee033ba2fd384dfb8 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
@@ -33,8 +33,6 @@
 #include "otbWrapperInputImageParameter.h"
 #include "otbWrapperInputImageListParameter.h"
 #include "otbWrapperOutputImageParameter.h"
-#include "otbWrapperComplexInputImageParameter.h"
-#include "otbWrapperComplexOutputImageParameter.h"
 #include "otbWrapperDocExampleStructure.h"
 #include "itkMersenneTwisterRandomVariateGenerator.h"
 #include "OTBApplicationEngineExport.h"
@@ -261,7 +259,6 @@ public:
    * \li ParameterType_Int
    * \li ParameterType_Radius
    * \li ParameterType_InputImageParameter
-   * \li ParameterType_ComplexInputImageParameter
    * \li ParameterType_InputVectorDataParameter
    * \li ParameterType_OutputImageParameter
    * \li ParameterType_OutputVectorDataParameter
@@ -397,13 +394,6 @@ public:
    */
   void SetParameterOutputImage(std::string parameter, FloatVectorImageType* value);
 
-  /* Set a complex output image value
-   *
-   * Can be called for types :
-   * \li ParameterType_ComplexOutputImage
-   */
-  void SetParameterComplexOutputImage(std::string parameter, ComplexFloatVectorImageType* value);
-
   /* Set the pixel type in which the image will be saved
    *
    * Can be called for types :
@@ -411,13 +401,6 @@ public:
    */
   void SetParameterOutputImagePixelType(std::string parameter, ImagePixelType pixelType);
 
-  /* Set the complex pixel type in which the image will be saved
-   *
-   * Can be called for types :
-   * \li ParameterType_ComplexOutputImage
-   */
-  void SetParameterComplexOutputImagePixelType(std::string parameter, ComplexImagePixelType cpixelType);
-
   /* Set an output vector data value
    *
    * Can be called for types :
@@ -451,7 +434,6 @@ public:
    * \li ParameterType_OutputFilename
    * \li ParameterType_Directory
    * \li ParameterType_InputImage
-   * \li ParameterType_ComplexInputImage
    * \li ParameterType_InputVectorData
    * \li ParameterType_OutputImage
    * \li ParameterType_OutputVectorData
@@ -498,28 +480,6 @@ public:
    */
   ImageBaseType * GetParameterOutputImage(std::string parameter);
 
-  /**
-   * Set the input complex image parameter as an ImageBase * instead
-   * of filename. Useful to connect pipelines between different
-   * application instances.
-   * \in parameter The parameter key
-   * \in inputImage ImageBase pointer to use as input
-   * \throw itk::Exception if parameter is not found or not an
-   * ComplexInputImageParameter
-   */
-  void SetParameterComplexInputImage(std::string parameter, ImageBaseType * inputImage);
-
-  /**
-   * Get the complex output image parameter as an ImageBase * instead
-   * of writing to disk. Useful to connect pipelines between different
-   * application instances.
-   * \in parameter The parameter key
-   * \return The ImageBase * pointer to the output image
-   * \throw itk::Exception if parameter is not found or not an
-   * ComplexOutputImageParameter
-   */
-  ImageBaseType * GetParameterComplexOutputImage(std::string parameter);
-
   /**
    * Add an image to an InputImageList parameter as an ImageBase
    * pointer instead of reading from file. Useful to connect pipelines
@@ -633,13 +593,6 @@ public:
    */
   FloatVectorImageListType* GetParameterImageList(std::string parameter);
 
-  /* Get a complex image value
-   *
-   * Can be called for types :
-   * \li ParameterType_ComplexInputImage
-   */
-  ComplexFloatVectorImageType* GetParameterComplexImage(std::string parameter);
-
   /* GetParameterVectorData
    *
    * Can be called for types :
@@ -668,7 +621,6 @@ public:
    * \li ParameterType_OutputFilename
    * \li ParameterType_Directory
    * \li ParameterType_InputImage
-   * \li ParameterType_ComplexInputImage
    * \li ParameterType_InputVectorData
    * \li ParameterType_OutputImage
    * \li ParameterType_OutputVectorData
@@ -691,13 +643,6 @@ public:
     m_ParameterList = paramGroup;
   }
 
-  /* Get the pixel type in which the complex image will be saved
-   *
-   * Can be called for types :
-   * \li ParameterType_ComplexOutputImage
-   */
-  ComplexImagePixelType GetParameterComplexOutputImagePixelType(std::string parameter);
-
   otb::Logger* GetLogger() const;
 
   /** Sets the logger instance of the application (use with caution) */
@@ -807,8 +752,6 @@ public:
    *  \li ParameterType_InputImage
    *  \li ParameterType_InputImageList
    *  \li ParameterType_OutputImage
-   *  \li ParameterType_ComplexInputImage
-   *  \li ParameterType_ComplexOutputImage
    */
   ImageBaseType* GetParameterImageBase(const std::string & key, unsigned int idx = 0);
 
@@ -818,7 +761,6 @@ public:
    *  Works on parameters:
    *  \li ParameterType_InputImage
    *  \li ParameterType_InputImageList
-   *  \li ParameterType_ComplexInputImage
    */
   void SetParameterImageBase(const std::string & key, ImageBaseType* img, unsigned int idx = 0);
 
@@ -947,23 +889,6 @@ protected:
       }
   }
 
-    /* Set a complex output image value
-   *
-   * Can be called for types :
-   * \li ParameterType_ComplexOutputImage
-   */
-  template <class TImageType>
-    void SetParameterComplexOutputImage(std::string parameter, TImageType* value)
-  {
-    Parameter* param = GetParameterByKey(parameter);
-
-    if (dynamic_cast<ComplexOutputImageParameter*>(param))
-      {
-      ComplexOutputImageParameter* paramDown = dynamic_cast<ComplexOutputImageParameter*>(param);
-      paramDown->SetValue(value);
-      }
-  }
-
 private:
   /* Implement this method to add parameters */
   virtual void DoInit() = 0;
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexInputImageParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexInputImageParameter.h
deleted file mode 100644
index f3ea009fa8bb8e0dc58b0dcd43a53b80eab85d31..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexInputImageParameter.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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 otbWrapperComplexInputImageParameter_h
-#define otbWrapperComplexInputImageParameter_h
-
-#include "otbImageFileReader.h"
-#include "itkImageBase.h"
-#include "otbWrapperParameter.h"
-#include <string>
-
-namespace otb
-{
-namespace Wrapper
-{
-/** \class ComplexInputImageParameter
- *  \brief This class represents a ComplexInputImage parameter
- *
- * \ingroup OTBApplicationEngine
- */
-
-class OTBApplicationEngine_EXPORT ComplexInputImageParameter : public Parameter
-{
-public:
-  /** Standard class typedef */
-  typedef ComplexInputImageParameter    Self;
-  typedef Parameter                     Superclass;
-  typedef itk::SmartPointer<Self>       Pointer;
-  typedef itk::SmartPointer<const Self> ConstPointer;
-
-  /** Defining ::New() static method */
-  itkNewMacro(Self);
-
-  /** RTTI support */
-  itkTypeMacro(ComplexInputImageParameter, Parameter);
-
-  /** Set value from filename */
-  bool SetFromFileName(const std::string& filename);
-  itkGetConstMacro(FileName, std::string);
-
-  /** Get the input image as CFloatVectorImageType. */
-  ComplexFloatVectorImageType* GetImage();
-
-  /** Get the input image as XXXImageType */
-  ComplexInt16ImageType* GetComplexInt16Image();
-  ComplexInt32ImageType* GetComplexInt32Image();
-  ComplexFloatImageType*  GetComplexFloatImage();
-  ComplexDoubleImageType* GetComplexDoubleImage();
-
-  ComplexInt16VectorImageType* GetComplexInt16VectorImage();
-  ComplexInt32VectorImageType* GetComplexInt32VectorImage();
-  ComplexFloatVectorImageType*  GetComplexFloatVectorImage();
-  ComplexDoubleVectorImageType* GetComplexDoubleVectorImage();
-
-/* Support for ComplexInputImageParameter. This has been done to support 
-the macro otbGetParameterImageMacro of otbWrapperApplication.h */
-  UInt8ImageType* GetUInt8Image();
-  UInt16ImageType* GetUInt16Image();
-  Int16ImageType* GetInt16Image();
-  UInt32ImageType* GetUInt32Image();
-  Int32ImageType* GetInt32Image();
-  FloatImageType* GetFloatImage();
-  DoubleImageType* GetDoubleImage();
-
-  UInt8VectorImageType* GetUInt8VectorImage();
-  UInt16VectorImageType* GetUInt16VectorImage();
-  Int16VectorImageType* GetInt16VectorImage();
-  UInt32VectorImageType* GetUInt32VectorImage();
-  Int32VectorImageType* GetInt32VectorImage();
-  FloatVectorImageType* GetFloatVectorImage();
-  DoubleVectorImageType* GetDoubleVectorImage();
-
-  UInt8RGBImageType* GetUInt8RGBImage();
-  UInt8RGBAImageType* GetUInt8RGBAImage();
-
-  /** Get the input image as templated image type. */
-  template <class TImageType>
-    TImageType* GetImage();
-
-  /** Set a FloatVectorImageType image.*/
-  void SetImage(ComplexFloatVectorImageType* image);
-
-  /** Set a templated image.*/
-  template <class TImageType>
-    void SetImage(TImageType* image);
-
-  /** Generic cast method that will be specified for each image type. */
-  template <class TComplexInputImage, class TOutputImage>
-    TOutputImage* CastImage();
-
-  bool HasValue() const override;
-  void ClearValue() override;
-
-  ParameterType GetType() const override;
-  std::string   ToString() const override;
-  void          FromString(const std::string& value) override;
-
-protected:
-  /** Constructor */
-  ComplexInputImageParameter();
-
-  /** Destructor */
-  ~ComplexInputImageParameter() override;
-
-  ImageBaseType::Pointer m_Image;
-  std::string m_FileName;
-
-
-  /** Readers typedefs */
-  typedef otb::ImageFileReader<ComplexFloatVectorImageType> ComplexFloatVectorReaderType;
-  typedef otb::ImageFileReader<ComplexDoubleVectorImageType> ComplexDoubleVectorReaderType;
-
-  itk::ProcessObject::Pointer m_Reader;
-  itk::ProcessObject::Pointer m_Caster;
-
-private:
-  ComplexInputImageParameter(const Parameter &) = delete;
-  void operator =(const Parameter&) = delete;
-
-  /** Store the loaded image filename */
-  std::string m_PreviousFileName;
-
-  /** flag : are we using a filename or an image pointer as an input */
-  bool m_UseFilename;
-
-}; // End class ComplexInputImage Parameter
-
-} // End namespace Wrapper
-} // End namespace otb
-
-#ifndef OTB_MANUAL_INSTANTIATION
-#include "otbWrapperComplexInputImageParameter.hxx"
-#endif
-
-#endif
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexInputImageParameter.hxx b/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexInputImageParameter.hxx
deleted file mode 100644
index 4fe0399d2a75cd1380e3aee2e8f44762e53e22c2..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexInputImageParameter.hxx
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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 otbWrapperComplexInputImageParameter_hxx
-#define otbWrapperComplexInputImageParameter_hxx
-
-#include "otbWrapperComplexInputImageParameter.h"
-#include "otbClampImageFilter.h"
-
-namespace otb
-{
-namespace Wrapper
-{
-
-
-template <class TOutputImage>
-TOutputImage *
-ComplexInputImageParameter::GetImage()
-{
-  // Used m_PreviousFileName because if not, when the user call twice GetImage,
-  // it without changing the filename, it returns 2 different
-  // image pointers
-  // Only one image type can be used
-
-  // 2 cases : the user set a filename vs. the user set an image
-  if (m_UseFilename)
-    {
-    if( m_PreviousFileName!=m_FileName && !m_FileName.empty() )
-      {
-      //////////////////////// Filename case:
-      // A new valid filename has been given : a reader is created
-      typedef otb::ImageFileReader<TOutputImage> ReaderType;
-      typename ReaderType::Pointer reader = ReaderType::New();
-      reader->SetFileName(m_FileName);
-      reader->UpdateOutputInformation();
-
-      m_Image = reader->GetOutput();
-      m_Reader = reader;
-      m_PreviousFileName = m_FileName;
-
-      // Pay attention, don't return m_Image because it is a ImageBase...
-      return reader->GetOutput();
-      }
-    else
-      {
-      // In this case, the reader and the image should already be there
-      if (m_Image.IsNull())
-        {
-        itkExceptionMacro("No input image or filename detected...");
-        }
-      else
-        {
-        // Check if the image type asked here is the same as the one used for the reader
-        if (dynamic_cast<TOutputImage*> (m_Image.GetPointer()))
-          {
-          return dynamic_cast<TOutputImage*> (m_Image.GetPointer());
-          }
-        else
-          {
-          itkExceptionMacro("Cannot ask a different image type");
-          }
-        }
-      }
-    }
-  else
-    {
-    //////////////////////// Image case:
-    if( m_Image.IsNull() )
-      {
-      itkExceptionMacro("No input image or filename detected...");
-      }
-    else
-      {
-      if (dynamic_cast<ComplexInt16VectorImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexInt16VectorImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexInt32VectorImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexInt32VectorImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexFloatVectorImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexFloatVectorImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexDoubleVectorImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexDoubleVectorImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexInt16ImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexInt16ImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexInt32ImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexInt32ImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexFloatImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexFloatImageType, TOutputImage>();
-        }
-      else if (dynamic_cast<ComplexDoubleImageType*>(m_Image.GetPointer()))
-        {
-        return CastImage<ComplexDoubleImageType, TOutputImage>();
-        }
-      else
-        {
-        itkExceptionMacro("Unknown image type");
-        }
-      }
-    }
-}
-
-/** declare a specialization for ImageBaseType */
-template <>
-ImageBaseType*
-ComplexInputImageParameter::GetImage();
-
-template <class TComplexInputImage, class TOutputImage>
-TOutputImage*
-ComplexInputImageParameter::CastImage()
-{
-  TComplexInputImage* realComplexInputImage = dynamic_cast<TComplexInputImage*>(m_Image.GetPointer());
-
-  typedef ClampImageFilter<TComplexInputImage, TOutputImage> CasterType;
-  typename CasterType::Pointer caster = CasterType::New();
-
-  caster->SetInput(realComplexInputImage);
-  caster->UpdateOutputInformation();
-
-  m_Image = caster->GetOutput();
-  m_Caster = caster;
-
-  return caster->GetOutput();
-  // itkExceptionMacro("Cast from "<<typeid(TComplexInputImage).name()
-  //                   <<" to "<<typeid(TOutputImage).name()<<" not authorized.");
-}
-
-template <class TComplexInputImage>
-void
-ComplexInputImageParameter::SetImage(TComplexInputImage* image)
-{
-  m_UseFilename = false;
-  m_Image = image;
-}
-
-
-
-} // End namespace Wrapper
-} // End namespace otb
-
-#endif
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexOutputImageParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexOutputImageParameter.h
deleted file mode 100644
index 2e527855aaf2670928cc61e8725641cbb61a915a..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperComplexOutputImageParameter.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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 otbWrapperComplexOutputImageParameter_h
-#define otbWrapperComplexOutputImageParameter_h
-
-#include "itkImageBase.h"
-#include "otbWrapperParameter.h"
-#include "otbImageFileWriter.h"
-#include <string>
-
-namespace otb
-{
-namespace Wrapper
-{
-/** \class ComplexOutputImageParameter
- *  \brief This class represents a ComplexOutputImage parameter
- *
- * \ingroup OTBApplicationEngine
- */
-
-class OTBApplicationEngine_EXPORT ComplexOutputImageParameter : public Parameter
-{
-public:
-  /** Standard class typedef */
-  typedef ComplexOutputImageParameter   Self;
-  typedef Parameter                     Superclass;
-  typedef itk::SmartPointer<Self>       Pointer;
-  typedef itk::SmartPointer<const Self> ConstPointer;
-
-  /** Defining ::New() static method */
-  itkNewMacro(Self);
-
-  /** RTTI support */
-  itkTypeMacro(ComplexOutputImageParameter, Parameter);
-
-  /** Set the value */
-  itkSetObjectMacro(Image, ImageBaseType);
-
-  /** Get the value */
-  itkGetObjectMacro(Image, ImageBaseType);
-
-  /** Return any value */
-  void SetValue(ImageBaseType* image);
-
-  /** Return any value */
-  ImageBaseType* GetValue( void );
-
-  /** Set/Get m_ComplexPixelType to be used when saving */
-  itkSetMacro(ComplexPixelType, ComplexImagePixelType);
-  itkGetMacro(ComplexPixelType, ComplexImagePixelType);
-
-  /** Set/Get m_DefaultComplexPixelType*/
-  itkSetMacro(DefaultComplexPixelType, ComplexImagePixelType);
-  itkGetMacro(DefaultComplexPixelType, ComplexImagePixelType);
-
-  /** Set/Get available RAM value */
-  itkSetMacro(RAMValue, unsigned int);
-  itkGetMacro(RAMValue, unsigned int);
-
-  /** Implement the reset method (replace pixel type by default type) */
-  void Reset() override
-  {
-    m_ComplexPixelType = m_DefaultComplexPixelType;
-  }
-
-  /** Static method to convert pixel type into string */
-  static std::string ConvertPixelTypeToString(ComplexImagePixelType type);
-
-  /** Convert a string into a ComplexImagePixelType (returns false if the
-   *  conversion fails) */
-  static bool ConvertStringToPixelType(const std::string &value, ComplexImagePixelType &type);
-
-  /** Return true if a filename is set */
-  bool HasValue() const override;
-
-  void SetFileName (const char* filename);
-  void SetFileName (const std::string& filename);
-
-  itkGetStringMacro(FileName);
-
-  void Write();
-
-  itk::ProcessObject* GetWriter();
-
-  void InitializeWriters();
-
-  ParameterType GetType() const override;
-  std::string   ToString() const override;
-  void          FromString(const std::string& value) override;
-
-protected:
-  /** Constructor */
-  ComplexOutputImageParameter();
-  /** Destructor */
-  ~ComplexOutputImageParameter() override;
-
-  template <class TInputImageType>
-    void SwitchImageWrite();
-
-  template <class TInputVectorImageType>
-    void SwitchVectorImageWrite();
-
-  ImageBaseType::Pointer m_Image;
-  std::string            m_FileName;
-  ComplexImagePixelType         m_ComplexPixelType;
-  ComplexImagePixelType         m_DefaultComplexPixelType;
-
-  typedef otb::ImageFileWriter<ComplexInt16VectorImageType>  ComplexVectorInt16WriterType;
-  typedef otb::ImageFileWriter<ComplexInt32VectorImageType>  ComplexVectorInt32WriterType;
-  typedef otb::ImageFileWriter<ComplexFloatVectorImageType>  ComplexVectorFloatWriterType;
-  typedef otb::ImageFileWriter<ComplexDoubleVectorImageType> ComplexVectorDoubleWriterType;
-
-  ComplexVectorInt16WriterType::Pointer  m_ComplexVectorInt16Writer;
-  ComplexVectorInt32WriterType::Pointer  m_ComplexVectorInt32Writer;
-  ComplexVectorFloatWriterType::Pointer  m_ComplexVectorFloatWriter;
-  ComplexVectorDoubleWriterType::Pointer m_ComplexVectorDoubleWriter;
-
-
-private:
-  ComplexOutputImageParameter(const Parameter &) = delete;
-  void operator =(const Parameter&) = delete;
-
-  unsigned int                  m_RAMValue;
-
-}; // End class OutputImage Parameter
-
-} // End namespace Wrapper
-} // End namespace otb
-
-#endif
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h
index 8418f0fb2f36fc1c9aa33f49142d4cb7dc9bf5f9..206eb0716d4b3ed018ac34d07fad8fcc249bb40b 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h
@@ -54,8 +54,6 @@ typedef enum
   ParameterType_Radius,
   ParameterType_Group,
   ParameterType_ListView,
-  ParameterType_ComplexInputImage,
-  ParameterType_ComplexOutputImage,
   ParameterType_RAM,
   ParameterType_OutputProcessXML,
   ParameterType_InputProcessXML,
@@ -84,8 +82,6 @@ constexpr char const* parameterTypesStrings [] = {
   "Radius",
   "Group",
   "ListView",
-  "ComplexInputImage",
-  "ComplexOutputImage",
   "RAM",
   "OutputProcessXML",
   "InputProcessXML",
diff --git a/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt b/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt
index e6a62d4f078425b5ae8cedffc890bbffd68647f2..6f0b8809cb026b1b4143277ac45e41c4d9d62529 100644
--- a/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt
+++ b/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt
@@ -19,10 +19,8 @@
 #
 
 set( OTBApplicationEngine_SRC
-  otbWrapperComplexOutputImageParameter.cxx
   otbWrapperInputVectorDataListParameter.cxx
   otbWrapperListViewParameter.cxx
-  otbWrapperComplexInputImageParameter.cxx
   otbWrapperParameterGroup.cxx
   otbWrapperOutputProcessXMLParameter.cxx
   otbWrapperInputImageListParameter.cxx
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx
index 7287782f61799abbb330a48f8275fc93d850ebde..8c0d624ae5e2f79bf323b3c41d3821d0ad38a5b3 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx
@@ -790,25 +790,6 @@ int Application::ExecuteAndWriteOutput()
             outputParam->Write();
             }
           }
-        else if (GetParameterType(key) == ParameterType_ComplexOutputImage
-                 && IsParameterEnabled(key) && HasValue(key) )
-          {
-          Parameter* param = GetParameterByKey(key);
-          ComplexOutputImageParameter* outputParam = dynamic_cast<ComplexOutputImageParameter*>(param);
-
-          if(outputParam!=nullptr)
-            {
-            outputParam->InitializeWriters();
-            if (useRAM)
-              {
-              outputParam->SetRAMValue(ram);
-              }
-            std::ostringstream progressId;
-            progressId << "Writing " << outputParam->GetFileName() << "...";
-            AddProcess(outputParam->GetWriter(), progressId.str());
-            outputParam->Write();
-            }
-          }
         //xml writer parameter
         else if (m_HaveOutXML && GetParameterType(key) == ParameterType_OutputProcessXML
                  && IsParameterEnabled(key) && HasValue(key) )
@@ -1055,13 +1036,6 @@ void Application::SetDefaultOutputPixelType(std::string key, ImagePixelType type
   param->SetPixelType(type);
 }
 
-void Application::SetDefaultOutputComplexPixelType(std::string key, ComplexImagePixelType type)
-{
-  auto param = downcast_check<ComplexOutputImageParameter>(GetParameterByKey(key));
-  param->SetDefaultComplexPixelType(type);
-  param->SetComplexPixelType(type);
-}
-
 void Application::SetMinimumParameterIntValue(std::string key, int value)
 {
   auto param = downcast_check<IntParameter>(GetParameterByKey(key));
@@ -1104,24 +1078,12 @@ void Application::SetParameterOutputImage(std::string key, FloatVectorImageType*
   param->SetValue(value);
 }
 
-void Application::SetParameterComplexOutputImage(std::string key, ComplexFloatVectorImageType* value)
-{
-  auto param = downcast_check<ComplexOutputImageParameter>(GetParameterByKey(key));
-  param->SetValue(value);
-}
-
 void Application::SetParameterOutputImagePixelType(std::string key, ImagePixelType pixelType)
 {
   auto param = downcast_check<OutputImageParameter>(GetParameterByKey(key));
   param->SetPixelType(pixelType);
 }
 
-void Application::SetParameterComplexOutputImagePixelType(std::string key, ComplexImagePixelType cpixelType)
-{
-  auto param = downcast_check<ComplexOutputImageParameter>(GetParameterByKey(key));
-  param->SetComplexPixelType(cpixelType);
-}
-
 void Application::SetParameterOutputVectorData(std::string key, VectorDataType* value)
 {
   auto param = downcast_check<OutputVectorDataParameter>(GetParameterByKey(key));
@@ -1181,18 +1143,6 @@ ImageBaseType* Application::GetParameterOutputImage(std::string key)
   return param->GetValue();
 }
 
-void Application::SetParameterComplexInputImage(std::string key, ImageBaseType* inputImage)
-{
-  auto param = downcast_check<ComplexInputImageParameter>(GetParameterByKey(key));
-  param->SetImage(inputImage);
-}
-
-ImageBaseType* Application::GetParameterComplexOutputImage(std::string key)
-{
-  auto param = downcast_check<ComplexOutputImageParameter>(GetParameterByKey(key));
-  return param->GetValue();
-}
-
 void Application::AddImageToParameterInputImageList(std::string key, ImageBaseType* img)
 {
   auto param = downcast_check<InputImageListParameter>(GetParameterByKey(key));
@@ -1240,12 +1190,6 @@ FloatVectorImageListType* Application::GetParameterImageList(std::string key)
   return param->GetImageList();
 }
 
-ComplexFloatVectorImageType* Application::GetParameterComplexImage(std::string key)
-{
-  auto param = downcast_check<ComplexInputImageParameter>(GetParameterByKey(key));
-  return param->GetImage();
-}
-
 VectorDataType* Application::GetParameterVectorData(std::string key)
 {
   auto param = downcast_check<InputVectorDataParameter>(GetParameterByKey(key));
@@ -1269,12 +1213,6 @@ ImagePixelType Application::GetParameterOutputImagePixelType(std::string key)
   return param->GetPixelType();
 }
 
-ComplexImagePixelType Application::GetParameterComplexOutputImagePixelType(std::string key)
-{
-  auto param = downcast_check<ComplexOutputImageParameter>(GetParameterByKey(key));
-  return param->GetComplexPixelType();
-}
-
 void
 Application::AddChoice(std::string paramKey, std::string paramName)
 {
@@ -1555,26 +1493,15 @@ Application::GetParameterImageBase(const std::string & key, unsigned int idx)
     InputImageListParameter* paramDown = dynamic_cast<InputImageListParameter*>(param);
     return paramDown->GetNthImage(idx);
     }
-  else if (dynamic_cast<ComplexInputImageParameter*>(param))
-    {
-    ComplexInputImageParameter* paramDown = dynamic_cast<ComplexInputImageParameter*>(param);
-    return paramDown->GetImage<ImageBaseType>();
-    }
   else if (dynamic_cast<OutputImageParameter*>(param))
     {
     OutputImageParameter* paramDown = dynamic_cast<OutputImageParameter*>(param);
     return paramDown->GetValue();
     }
-  else if (dynamic_cast<ComplexOutputImageParameter*>(param))
-    {
-    ComplexOutputImageParameter* paramDown = dynamic_cast<ComplexOutputImageParameter*>(param);
-    return paramDown->GetValue();
-    }
   else
     {
     itkExceptionMacro("Wrong parameter type, expect InputImageParameter, "
-      "InputImageListParameter, ComplexInputImageParameter, "
-      "OutputImageParameter, ComplexOutputImageParameter");
+      "InputImageListParameter or OutputImageParameter");
     }
   return nullptr;
 }
@@ -1600,14 +1527,9 @@ Application::SetParameterImageBase(const std::string & key, ImageBaseType* img,
       paramDown->SetNthImage(idx, img);
       }
     }
-  else if (dynamic_cast<ComplexInputImageParameter*>(param))
-    {
-    ComplexInputImageParameter* paramDown = dynamic_cast<ComplexInputImageParameter*>(param);
-    paramDown->SetImage<ImageBaseType>(img);
-    }
   else
     {
-    itkExceptionMacro("Wrong parameter type, expect InputImageParameter, InputImageListParameter or ComplexInputImageParameter");
+    itkExceptionMacro("Wrong parameter type, expect InputImageParameter or InputImageListParameter");
     }
 }
 
@@ -1674,11 +1596,6 @@ Application::GetImageBasePixelType(const std::string & key, unsigned int idx)
       {                                                                 \
       return paramDown->Get##Image();                                   \
       }                                                                 \
-    ComplexInputImageParameter* paramDownC = dynamic_cast<ComplexInputImageParameter*>(param); \
-    if ( paramDownC )                                                   \
-      {                                                                 \
-      return paramDownC->Get##Image();                                  \
-      }                                                                 \
     return Image##Type::Pointer();                                      \
     }
 
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexInputImageParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexInputImageParameter.cxx
deleted file mode 100644
index e118b270b71b1e1ab2bf15d3152167e80211502e..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexInputImageParameter.cxx
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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.
- */
-
-#include "otbWrapperComplexInputImageParameter.h"
-#include "itksys/SystemTools.hxx"
-#include "otbWrapperTypes.h"
-
-
-namespace otb
-{
-namespace Wrapper
-{
-
-ComplexInputImageParameter::ComplexInputImageParameter()
-{
-  this->SetName("Complex Input Image");
-  this->SetKey("cin");
-  m_FileName="";
-  m_PreviousFileName="";
-  m_UseFilename = true;
-  this->ClearValue();
-}
-
-ComplexInputImageParameter::~ComplexInputImageParameter()
-{
-}
-
-bool
-ComplexInputImageParameter::SetFromFileName(const std::string& filename)
-{
-  // First clear previous file chosen
-  this->ClearValue();
-
-  // No file existence is done here :
-  //  - Done in the reader
-  //  - allow appending additional information to the filename
-  // myfile.tif:2 for example, or myfile.tif:nocarto
-  m_FileName = filename;
-  m_UseFilename = true;
-  SetActive(true);
-  return true;
-}
-
-
-ComplexFloatVectorImageType*
-ComplexInputImageParameter::GetImage()
-{
-  return this->GetImage<ComplexFloatVectorImageType>();
-}
-
-template <>
-ImageBaseType*
-ComplexInputImageParameter::GetImage()
-{
-  if (m_Image.IsNull())
-    return this->GetImage<ComplexFloatVectorImageType>();
-
-  return m_Image;
-}
-
-#define otbGetImageMacro(image)                       \
-  image##Type *                                       \
-  ComplexInputImageParameter::Get##image ()           \
-  {                                                   \
-    return this->GetImage< image##Type > ();          \
-  }
-
-otbGetImageMacro(ComplexInt16Image);
-otbGetImageMacro(ComplexInt32Image);
-otbGetImageMacro(ComplexFloatImage);
-otbGetImageMacro(ComplexDoubleImage);
-
-otbGetImageMacro(ComplexInt16VectorImage);
-otbGetImageMacro(ComplexInt32VectorImage);
-otbGetImageMacro(ComplexFloatVectorImage);
-otbGetImageMacro(ComplexDoubleVectorImage);
-
-
-/*#define otbCastImageMacro(ComplexInputImageType, OutputImageType, theMethod)   \
-  template<> OutputImageType *                                          \
-  ComplexInputImageParameter::CastImage<ComplexInputImageType , OutputImageType>()    \
-  {                                                                     \
-    return this->theMethod<ComplexInputImageType , OutputImageType>();         \
-  }
-
-#define otbGenericCastImageMacro(ComplexInputImageType, theMethod, prefix)     \
-  otbCastImageMacro(ComplexInputImageType, ComplexFloat##prefix##ImageType, theMethod) \
-  otbCastImageMacro(ComplexInputImageType, ComplexDouble##prefix##ImageType, theMethod)*/
-
-
-/********************************************************************
-********************** Image -> Image
-*********************************************************************/
-
-//   otbGenericCastImageMacro(ComplexFloatImageType, SimpleCastImage, )
-//   otbGenericCastImageMacro(ComplexDoubleImageType, SimpleCastImage, )
-
-
-/*********************************************************************
-********************** VectorImage -> VectorImage
-**********************************************************************/
-//   otbGenericCastImageMacro(ComplexFloatVectorImageType, SimpleCastImage, Vector)
-//   otbGenericCastImageMacro(ComplexDoubleVectorImageType, SimpleCastImage, Vector)
-
-  void
-ComplexInputImageParameter::SetImage(ComplexFloatVectorImageType* image)
-{
-  m_UseFilename = false;
-  this->SetImage<ComplexFloatVectorImageType>( image );
-}
-
-bool
-ComplexInputImageParameter::HasValue() const
-{
-  if( m_FileName.empty() && m_Image.IsNull() )
-    return false;
-  else
-    return true;
-}
-
-void
-ComplexInputImageParameter::ClearValue()
-{
-  m_Image   = nullptr;
-  m_Reader = nullptr;
-  m_Caster = nullptr;
-  m_FileName = "";
-  m_PreviousFileName="";
-  m_UseFilename = true;
-}
-
-ParameterType ComplexInputImageParameter::GetType() const
-{
-  return ParameterType_ComplexInputImage;
-}
-
-std::string ComplexInputImageParameter::ToString() const
-{
-  return GetFileName();
-}
-
-void ComplexInputImageParameter::FromString(const std::string& value)
-{
-  SetFromFileName(value);
-}
-
-/* Support for ComplexInputImageParameter. This has been done to support 
-the macro otbGetParameterImageMacro of otbWrapperApplication.h */
-#define otbGetFalseImageMacro(image)                  \
-  image##Type *                                       \
-  ComplexInputImageParameter::Get##image ()           \
-  {                                                   \
-    return nullptr;                                   \
-  }
-
-otbGetFalseImageMacro(DoubleImage);
-otbGetFalseImageMacro(DoubleVectorImage);
-
-otbGetFalseImageMacro(FloatImage);
-otbGetFalseImageMacro(FloatVectorImage);
-
-otbGetFalseImageMacro(Int16Image);
-otbGetFalseImageMacro(Int16VectorImage);
-
-otbGetFalseImageMacro(UInt16Image);
-otbGetFalseImageMacro(UInt16VectorImage);
-
-otbGetFalseImageMacro(Int32Image);
-otbGetFalseImageMacro(Int32VectorImage);
-
-otbGetFalseImageMacro(UInt32Image);
-otbGetFalseImageMacro(UInt32VectorImage);
-
-otbGetFalseImageMacro(UInt8Image);
-otbGetFalseImageMacro(UInt8VectorImage);
-
-otbGetFalseImageMacro(UInt8RGBImage);
-otbGetFalseImageMacro(UInt8RGBAImage);
-
-}
-}
-
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx
deleted file mode 100644
index 35ea2a050a04a9c6ecfdfc7750392e3a7babc260..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperComplexOutputImageParameter.cxx
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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.
- */
-
-#include "otbWrapperComplexOutputImageParameter.h"
-#include "otbClampImageFilter.h"
-
-#ifdef OTB_USE_MPI
-
-#include "otbMPIConfig.h"
-#include "otbMPIVrtWriter.h"
-
-#ifdef OTB_USE_SPTW
-#include "otbSimpleParallelTiffWriter.h"
-#endif
-
-#endif
-
-
-namespace otb
-{
-namespace Wrapper
-{
-
-ComplexOutputImageParameter::ComplexOutputImageParameter()
-  : m_ComplexPixelType(ComplexImagePixelType_float),
-    m_DefaultComplexPixelType(ComplexImagePixelType_float),
-    m_RAMValue(0)
-{
-  this->SetName("Complex Output Image");
-  this->SetKey("cout");
-}
-
-ComplexOutputImageParameter::~ComplexOutputImageParameter()
-{
-}
-
-std::string
-ComplexOutputImageParameter::ConvertPixelTypeToString(ComplexImagePixelType type)
-{
-  std::string ret;
-  switch(type)
-    {
-    case ComplexImagePixelType_int16:
-      {
-      ret = "cint16";
-      break;
-      }
-    case ComplexImagePixelType_int32:
-      {
-      ret = "cint32";
-      break;
-      }
-    case ComplexImagePixelType_float:
-      {
-      ret = "cfloat";
-      break;
-      }
-    case ComplexImagePixelType_double:
-      {
-      ret = "cdouble";
-      break;
-      }
-    }
-  return ret;
-}
-
-bool
-ComplexOutputImageParameter::ConvertStringToPixelType(const std::string &value, ComplexImagePixelType &type)
-{
-  if (value == "cint16")
-    type = ComplexImagePixelType_int16;
-  if (value == "cint32")
-    type = ComplexImagePixelType_int32;
-  else if (value == "cfloat")
-    type = ComplexImagePixelType_float;
-  else if (value == "cdouble")
-    type = ComplexImagePixelType_double;
-  else
-    return false;
-  return true;
-}
-
-void ComplexOutputImageParameter::InitializeWriters()
-{
-  m_ComplexVectorInt16Writer = ComplexVectorInt16WriterType::New();
-  m_ComplexVectorInt32Writer = ComplexVectorInt32WriterType::New();
-  m_ComplexVectorFloatWriter = ComplexVectorFloatWriterType::New();
-  m_ComplexVectorDoubleWriter = ComplexVectorDoubleWriterType::New();
-}
-
-template <typename TInput, typename TOutput> void CastAndWriteImage(itk::ImageBase<2> * in, otb::ImageFileWriter<TOutput> * writer, const std::string & filename, const unsigned int & ramValue)
-{
-  typedef ClampImageFilter<TInput, TOutput> ClampFilterType; 
-  typename ClampFilterType::Pointer clampFilter = ClampFilterType::New();         
-  clampFilter->SetInput( dynamic_cast<TInput*>(in));
-  
-  bool useStandardWriter = true;
-
-  #ifdef OTB_USE_MPI
-
-  otb::MPIConfig::Pointer mpiConfig = otb::MPIConfig::Instance();
-
-  if (mpiConfig->GetNbProcs() > 1)
-    {
-    useStandardWriter = false;
-
-    // Get file extension
-    std::string extension = itksys::SystemTools::GetFilenameExtension(filename);
-
-    if(extension == ".vrt")
-      {
-      // Use the WriteMPI function
-      WriteMPI(clampFilter->GetOutput(),filename,ramValue);      
-      }
-    #ifdef OTB_USE_SPTW
-    else if (extension == ".tif")
-      {
-      // Use simple parallel tiff writer
-      typedef otb::SimpleParallelTiffWriter<TOutput> SPTWriterType;
-
-      typename SPTWriterType::Pointer sptWriter = SPTWriterType::New();
-      sptWriter->SetFileName(filename);
-      sptWriter->SetInput(clampFilter->GetOutput());
-      sptWriter->SetAutomaticAdaptativeStreaming(ramValue);
-      sptWriter->Update();
-      }
-    
-    #endif
-    else
-      {
-      itkGenericExceptionMacro("File format "<<extension<<" not supported for parallel writing with MPI. Supported formats are .vrt and .tif. Extended filenames are not supported.");
-      }
-  
-    }
-  
-  #endif
-  
-  if(useStandardWriter)
-    {
-    
-    writer->SetFileName( filename );                                     
-    writer->SetInput(clampFilter->GetOutput());                                     
-    writer->SetAutomaticAdaptativeStreaming(ramValue);
-    writer->Update();
-    }
-}
-
-template <class TInputImageType>
-void
-ComplexOutputImageParameter::SwitchImageWrite()
-{
-  switch(m_ComplexPixelType )
-    {
-    case ComplexImagePixelType_int16:
-    {
-    CastAndWriteImage<TInputImageType,ComplexInt16VectorImageType>(
-      m_Image ,
-      m_ComplexVectorInt16Writer ,
-      m_FileName ,
-      m_RAMValue );
-    break;
-    }
-    case ComplexImagePixelType_int32:
-    {
-    CastAndWriteImage<TInputImageType,ComplexInt32VectorImageType>(
-      m_Image ,
-      m_ComplexVectorInt32Writer ,
-      m_FileName ,
-      m_RAMValue );
-    break;
-    }
-    case ComplexImagePixelType_float:
-    {
-    CastAndWriteImage<TInputImageType,ComplexFloatVectorImageType>(
-      m_Image ,
-      m_ComplexVectorFloatWriter ,
-      m_FileName ,
-      m_RAMValue );
-    break;
-    }
-    case ComplexImagePixelType_double:
-    {
-    CastAndWriteImage<TInputImageType,ComplexDoubleVectorImageType>(
-      m_Image ,
-      m_ComplexVectorDoubleWriter ,
-      m_FileName ,
-      m_RAMValue );
-    break;
-    }
-    }
-}
-
-void
-ComplexOutputImageParameter::Write()
-{
-  m_Image->UpdateOutputInformation();
-  if (dynamic_cast<ComplexInt16ImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexInt16ImageType>();
-    }
-  else if (dynamic_cast<ComplexInt16ImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexInt16ImageType>();
-    }
-  else if (dynamic_cast<ComplexFloatImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexFloatImageType>();
-    }
-  else if (dynamic_cast<ComplexDoubleImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexDoubleImageType>();
-    }
-  else if (dynamic_cast<ComplexInt16VectorImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexInt16VectorImageType>();
-    }
-  else if (dynamic_cast<ComplexInt32VectorImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexInt32VectorImageType>();
-    }
-  else if (dynamic_cast<ComplexFloatVectorImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexFloatVectorImageType>();
-    }
-  else if (dynamic_cast<ComplexDoubleVectorImageType*>(m_Image.GetPointer()))
-    {
-    SwitchImageWrite<ComplexDoubleVectorImageType>();
-    }
-  else
-    {
-    itkExceptionMacro("Unknown complex image type");
-    }
-  }
-
-itk::ProcessObject*
-ComplexOutputImageParameter::GetWriter()
-{
-  itk::ProcessObject* writer = nullptr;
-  switch ( GetComplexPixelType() )
-    {
-    case ComplexImagePixelType_int16:
-    {
-      writer = m_ComplexVectorInt16Writer;
-      break;
-    }
-    case ComplexImagePixelType_int32:
-    {
-      writer = m_ComplexVectorInt32Writer;
-      break;
-    }
-    case ComplexImagePixelType_float:
-    {
-      writer = m_ComplexVectorFloatWriter;
-      break;
-    }
-    case ComplexImagePixelType_double:
-    {
-      writer = m_ComplexVectorDoubleWriter;
-      break;
-    }
-    }
-  return writer;
-}
-
-ImageBaseType*
-ComplexOutputImageParameter::GetValue( )
-{
-  return m_Image;
-}
-
-void
-ComplexOutputImageParameter::SetValue(ImageBaseType* image)
-{
-  m_Image = image;
-  SetActive(true);
-}
-
-bool
-ComplexOutputImageParameter::HasValue() const
-{
-  std::string filename(this->GetFileName());
-  return !filename.empty();
-}
-
-void ComplexOutputImageParameter::SetFileName (const char* filename)
-{
-  this->SetFileName(std::string(filename));
-}
-
-void ComplexOutputImageParameter::SetFileName (const std::string& filename)
-{
-  m_FileName = filename;
-  SetActive(true);
-}
-
-ParameterType ComplexOutputImageParameter::GetType() const
-{
-  return ParameterType_ComplexOutputImage;
-}
-
-std::string ComplexOutputImageParameter::ToString() const
-{
-  return GetFileName();
-}
-
-void ComplexOutputImageParameter::FromString(const std::string& value)
-{
-  SetFileName(value);
-}
-}
-}
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx
index cae44be16bbdc4c53bb0465c40bd2d18e3b50175..44b76c6540c673a1680f9612973cd028a8220aef 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx
@@ -33,9 +33,7 @@
 #include "otbWrapperStringListParameter.h"
 #include "otbWrapperInputImageParameter.h"
 #include "otbWrapperInputImageListParameter.h"
-#include "otbWrapperComplexInputImageParameter.h"
 #include "otbWrapperOutputImageParameter.h"
-#include "otbWrapperComplexOutputImageParameter.h"
 #include "itksys/SystemTools.hxx"
 #include "otbMacro.h"
 
@@ -332,12 +330,6 @@ InputProcessXMLParameter::Read(Application::Pointer this_)
 	GetPixelTypeFromString( pixelType )
       );
       }
-    else if (type == ParameterType_ComplexOutputImage)
-      {
-      ComplexOutputImageParameter* paramDown = dynamic_cast<ComplexOutputImageParameter*>(param);
-      if(paramDown!=nullptr)
-	paramDown->SetFileName(value);
-      }
     else if (type == ParameterType_Directory)
       {
       DirectoryParameter* paramDown = dynamic_cast<DirectoryParameter*>(param);
@@ -369,15 +361,6 @@ InputProcessXMLParameter::Read(Application::Pointer this_)
 	otbMsgDevMacro( << "InputImageFile saved in InputXML does not exists" );
 	}
       }
-    else if (type == ParameterType_ComplexInputImage)
-      {
-      if(itksys::SystemTools::FileExists(value))
-	{
-	ComplexInputImageParameter* paramDown = dynamic_cast<ComplexInputImageParameter*>(param);
-	if(paramDown!=nullptr)
-	  paramDown->SetFromFileName(value);
-	}
-      }
     else if (dynamic_cast<InputVectorDataParameter*>(param))
       {
       if(itksys::SystemTools::FileExists(value))
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperOutputProcessXMLParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperOutputProcessXMLParameter.cxx
index 0cc21cebf0c450edce9050a29c34fe85d65e6c2b..eaaf8c7c302f9085282eaa1169465477d8a50bbd 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperOutputProcessXMLParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperOutputProcessXMLParameter.cxx
@@ -33,9 +33,7 @@
 #include "otbWrapperStringListParameter.h"
 #include "otbWrapperInputImageParameter.h"
 #include "otbWrapperInputImageListParameter.h"
-#include "otbWrapperComplexInputImageParameter.h"
 #include "otbWrapperOutputImageParameter.h"
-#include "otbWrapperComplexOutputImageParameter.h"
 #include "itksys/SystemTools.hxx"
 
 namespace otb
@@ -283,9 +281,9 @@ OutputProcessXMLParameter::ParseGroup(const std::string& group)
            }
          else if ( type == ParameterType_String || type == ParameterType_InputFilename ||
                    type == ParameterType_Directory || type == ParameterType_InputImage ||
-                   type == ParameterType_ComplexInputImage || type == ParameterType_InputVectorData ||
-                   type == ParameterType_Choice || type == ParameterType_OutputVectorData ||
-                   type == ParameterType_OutputFilename || type == ParameterType_Bool)
+                   type == ParameterType_InputVectorData || type == ParameterType_Choice ||
+                   type == ParameterType_OutputVectorData || type == ParameterType_OutputFilename ||
+                   type == ParameterType_Bool)
            {
            value = m_Appli->GetParameterString(key);
            }
@@ -302,7 +300,7 @@ OutputProcessXMLParameter::ParseGroup(const std::string& group)
          //get only file name
     /*
       if(type == ParameterType_InputFilename || type == ParameterType_InputImage ||
-      type == ParameterType_ComplexInputImage || type == ParameterType_InputVectorData ||
+      type == ParameterType_InputVectorData ||
       type == ParameterType_OutputVectorData || type == ParameterType_OutputFilename)
            {
            unsigned found = value.find_last_of("/\\");
@@ -337,7 +335,7 @@ OutputProcessXMLParameter::ParseGroup(const std::string& group)
          AddChildNodeTo(n_Parameter, "type", typeAsString);
          AddChildNodeTo(n_Parameter, "name", paramName);
 
-         if(type == ParameterType_OutputImage || type == ParameterType_ComplexOutputImage)
+         if(type == ParameterType_OutputImage)
            {
            AddChildNodeTo(n_Parameter, "pixtype", pixelTypeAsString);
            }
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperParameterGroup.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperParameterGroup.cxx
index 0d312035ae1b4a21be175eef9f50c677246af771..3a8ec354b5328750e5dfaa7381002ddabe23cab6 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperParameterGroup.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperParameterGroup.cxx
@@ -26,11 +26,9 @@
 #include "otbWrapperInputFilenameListParameter.h"
 #include "otbWrapperOutputFilenameParameter.h"
 #include "otbWrapperOutputProcessXMLParameter.h"
-#include "otbWrapperComplexInputImageParameter.h"
 #include "otbWrapperInputImageParameter.h"
 #include "otbWrapperInputVectorDataParameter.h"
 #include "otbWrapperOutputImageParameter.h"
-#include "otbWrapperComplexOutputImageParameter.h"
 #include "otbWrapperOutputVectorDataParameter.h"
 #include "otbWrapperNumericalParameter.h"
 #include "otbWrapperStringListParameter.h"
@@ -366,16 +364,6 @@ ParameterGroup::AddParameter(ParameterType type, std::string paramKey, std::stri
         newParam = ListViewParameter::New();
         }
         break;
-      case ParameterType_ComplexInputImage:
-        {
-        newParam = ComplexInputImageParameter::New();
-        }
-        break;
-      case ParameterType_ComplexOutputImage:
-        {
-        newParam = ComplexOutputImageParameter::New();
-        }
-        break;
       case ParameterType_RAM:
         {
         newParam = RAMParameter::New();
diff --git a/Modules/Wrappers/CommandLine/src/otbWrapperCommandLineLauncher.cxx b/Modules/Wrappers/CommandLine/src/otbWrapperCommandLineLauncher.cxx
index ea33c006db2beaba7b731b7f0675b28138e0f281..b5ef08d6acaf9814579046f6a50a0db917dac063 100644
--- a/Modules/Wrappers/CommandLine/src/otbWrapperCommandLineLauncher.cxx
+++ b/Modules/Wrappers/CommandLine/src/otbWrapperCommandLineLauncher.cxx
@@ -437,10 +437,8 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
                  type == ParameterType_String ||
                  type == ParameterType_InputFilename ||
                  type == ParameterType_OutputFilename ||
-                 type == ParameterType_ComplexInputImage ||
                  type == ParameterType_InputImage ||
                  type == ParameterType_OutputImage ||
-                 type == ParameterType_ComplexOutputImage ||
                  type == ParameterType_InputVectorData ||
                  type == ParameterType_OutputVectorData ||
                  type == ParameterType_RAM ||
@@ -472,27 +470,6 @@ CommandLineLauncher::ParamResultType CommandLineLauncher::LoadParameters()
               return INVALIDNUMBEROFVALUE;
               }
             }
-          else if (type == ParameterType_ComplexOutputImage)
-            {
-            // Check if pixel type is given
-            if (values.size() == 2)
-              {
-              ComplexImagePixelType cpixType = ComplexImagePixelType_float;
-              if ( !ComplexOutputImageParameter::ConvertStringToPixelType(values[1],cpixType) )
-                {
-                std::cerr << "ERROR: Invalid output type for parameter -" <<
-                  paramKey << ": " << values[1] << "." << std::endl;
-                return WRONGPARAMETERVALUE;
-                }
-              m_Application->SetParameterComplexOutputImagePixelType(paramKey, cpixType);
-              }
-            else if (values.size() > 2)
-              {
-              std::cerr << "ERROR: Too many values for parameter: -" << paramKey
-                        << " (expected 2 or 1, got " << values.size() << ")." <<std::endl;
-              return INVALIDNUMBEROFVALUE;
-              }
-            }
           }
         // Call the DoUpdateParameter to update dependent params
         m_Application->UpdateParameters();
@@ -742,12 +719,12 @@ std::string CommandLineLauncher::DisplayParameterHelp(const Parameter::Pointer &
     oss << "<float>         ";
     }
   else if (type == ParameterType_InputFilename || type == ParameterType_OutputFilename ||type == ParameterType_Directory || type == ParameterType_InputImage || type == ParameterType_OutputProcessXML || type == ParameterType_InputProcessXML ||
-           type == ParameterType_ComplexInputImage || type == ParameterType_InputVectorData || type == ParameterType_OutputVectorData ||
-           type == ParameterType_String || type == ParameterType_Choice || (type == ParameterType_ListView && singleSelectionForListView))
+          type == ParameterType_InputVectorData || type == ParameterType_OutputVectorData || type == ParameterType_String || 
+          type == ParameterType_Choice || (type == ParameterType_ListView && singleSelectionForListView))
     {
     oss << "<string>        ";
     }
-  else if (type == ParameterType_OutputImage || type == ParameterType_ComplexOutputImage)
+  else if (type == ParameterType_OutputImage)
     {
     oss << "<string> [pixel]";
     }
@@ -779,19 +756,6 @@ std::string CommandLineLauncher::DisplayParameterHelp(const Parameter::Pointer &
     oss << " (default value is " << defPixType <<")";
     }
 
-  if (type == ParameterType_ComplexOutputImage)
-    {
-    ComplexOutputImageParameter* paramDown = dynamic_cast<ComplexOutputImageParameter*>(param.GetPointer());
-    std::string defPixType("cfloat");
-    if (paramDown)
-      {
-      defPixType = ComplexOutputImageParameter::ConvertPixelTypeToString(paramDown->GetDefaultComplexPixelType());
-      }
-    oss << " [pixel=cfloat/cdouble]";
-    oss << " (default value is "<< defPixType <<")";
-    }
-
-
   if (type == ParameterType_Choice)
     {
     ChoiceParameter* paramDown = dynamic_cast<ChoiceParameter*>(param.GetPointer());
diff --git a/Modules/Wrappers/QGIS/src/otbQgisDescriptor.cxx b/Modules/Wrappers/QGIS/src/otbQgisDescriptor.cxx
index 8381e51da9733bfed4827b7bda8af2a6f6e6d745..6d757472971fe66922b22cc70c550dc4f6bc764a 100644
--- a/Modules/Wrappers/QGIS/src/otbQgisDescriptor.cxx
+++ b/Modules/Wrappers/QGIS/src/otbQgisDescriptor.cxx
@@ -71,8 +71,6 @@ int main(int argc, char* argv[])
   parameterTypeToString[ParameterType_OutputVectorData] = "QgsProcessingParameterVectorDestination";
   parameterTypeToString[ParameterType_OutputFilename] = "QgsProcessingParameterFileDestination";
   parameterTypeToString[ParameterType_Directory] = "QgsProcessingParameterFile";
-  parameterTypeToString[ParameterType_ComplexInputImage] = "QgsProcessingParameterRasterLayer";
-  parameterTypeToString[ParameterType_ComplexOutputImage] = "QgsProcessingParameterRasterDestination";
   // TODO
   parameterTypeToString[ParameterType_StringList] = "QgsProcessingParameterString";
   // ListView parameters are treated as plain string (QLineEdit) in qgis processing ui.
@@ -258,8 +256,7 @@ int main(int argc, char* argv[])
       // setting default_value this way is an exception for ParameterType_StringList and ParameterType_String
       default_value = "None|True";
       }
-    else if (type == ParameterType_InputImage ||
-             type == ParameterType_ComplexInputImage)
+    else if (type == ParameterType_InputImage)
       {
       // default is None and nothing to add to dFile
       }
@@ -285,8 +282,7 @@ int main(int argc, char* argv[])
       }
     else if(type == ParameterType_OutputVectorData ||
 	          type == ParameterType_OutputImage ||
-	          type == ParameterType_OutputFilename ||
-	          type == ParameterType_ComplexOutputImage)
+	          type == ParameterType_OutputFilename)
       {
       // No need for default_value, optional and extra fields in dFile.
       // If parameter is a destination type. qgis_type|name|description is enough.
diff --git a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h
deleted file mode 100644
index 28ace14696dbaf28189e0ce8841336225dc599dc..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexInputImageParameter.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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 otbWrapperQtWidgetComplexInputImageParameter_h
-#define otbWrapperQtWidgetComplexInputImageParameter_h
-
-#include <QtWidgets>
-#include "otbWrapperComplexInputImageParameter.h"
-#include "otbWrapperQtWidgetParameterBase.h"
-
-
-namespace otb
-{
-namespace Wrapper
-{
-
-/** \class QtWidgetComplexInputImageParameter
- * \brief
- *
- * \ingroup OTBQtWidget
- */
-class OTBQtWidget_EXPORT QtWidgetComplexInputImageParameter : public QtWidgetParameterBase
-{
-  Q_OBJECT
-public:
-  QtWidgetComplexInputImageParameter(ComplexInputImageParameter*, QtWidgetModel*, QWidget*);
-  ~QtWidgetComplexInputImageParameter() override;
-
-  const QLineEdit* GetInput() const;
-  QLineEdit* GetInput();
-
-protected slots:
-  bool SetFileName( const QString& value );
-  void SelectFile();
-
-private:
-  QtWidgetComplexInputImageParameter(const QtWidgetComplexInputImageParameter&) = delete;
-  void operator=(const QtWidgetComplexInputImageParameter&) = delete;
-
-  void DoCreateWidget() override;
-
-  void DoUpdateGUI() override;
-
-
-  ComplexInputImageParameter::Pointer m_ComplexInputImageParam;
-
-  QHBoxLayout * m_HLayout;
-  QLineEdit*    m_Input;
-  QPushButton * m_Button;
-};
-
-}
-}
-
-#endif
diff --git a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h b/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h
deleted file mode 100644
index 9814f170279a27e408012e8aa38bc1e39dc0cc5c..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/QtWidget/include/otbWrapperQtWidgetComplexOutputImageParameter.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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 otbWrapperQtWidgetComplexOutputImageParameter_h
-#define otbWrapperQtWidgetComplexOutputImageParameter_h
-
-#include <QtWidgets>
-#include "otbWrapperComplexOutputImageParameter.h"
-#include "otbWrapperQtWidgetParameterBase.h"
-#include <string>
-
-
-namespace otb
-{
-namespace Wrapper
-{
-
-/** \class QtWidgetComplexOutputImageParameter
- * \brief
- *
- * \ingroup OTBQtWidget
- */
-class OTBQtWidget_EXPORT QtWidgetComplexOutputImageParameter : public QtWidgetParameterBase
-{
-  Q_OBJECT
-public:
-  QtWidgetComplexOutputImageParameter(ComplexOutputImageParameter*, QtWidgetModel*, QWidget*);
-  ~QtWidgetComplexOutputImageParameter() override;
-
-  const QLineEdit* GetInput() const;
-  QLineEdit* GetInput();
-
-  /** Get the PixelType*/
-  //itkGetMacro(PixelType, int);
-
-public slots:
-  void SetFileName( const QString& value );
-
-protected slots:
-  void SelectFile();
-  void SetPixelType(int pixelType);
-
-private:
-  QtWidgetComplexOutputImageParameter(const QtWidgetComplexOutputImageParameter&) = delete;
-  void operator=(const QtWidgetComplexOutputImageParameter&) = delete;
-
-  void DoCreateWidget() override;
-
-  void DoUpdateGUI() override;
-
-  std::string m_FileName;
-  ComplexOutputImageParameter::Pointer m_OutputImageParam;
-
-  QHBoxLayout * m_HLayout;
-  QLineEdit*    m_Input;
-  QPushButton * m_Button;
-  QComboBox*    m_ComboBox;
-  int           m_ComplexPixelType;
-
-};
-
-}
-}
-
-#endif
diff --git a/Modules/Wrappers/QtWidget/src/CMakeLists.txt b/Modules/Wrappers/QtWidget/src/CMakeLists.txt
index 727f90cdf56b89b6949c55b8128ffbe58e122750..94c61a93f8d95baa51b31df9fb62679260197c3d 100644
--- a/Modules/Wrappers/QtWidget/src/CMakeLists.txt
+++ b/Modules/Wrappers/QtWidget/src/CMakeLists.txt
@@ -30,7 +30,6 @@ set(OTBQtWidget_SRC
   otbWrapperQtWidgetSimpleProgressReport.cxx
   otbWrapperQtWidgetFloatParameter.cxx
   otbWrapperQtWidgetChoiceParameter.cxx
-  otbWrapperQtWidgetComplexOutputImageParameter.cxx
   otbWrapperQtWidgetOutputFilenameParameter.cxx
   otbQtStringSelectionWidget.cxx
   itkQtProgressBar.cxx
@@ -44,7 +43,6 @@ set(OTBQtWidget_SRC
   otbQtFileSelectionWidget.cxx
   otbWrapperQtWidgetParameterGroup.cxx
   otbWrapperQtWidgetInputFilenameListParameter.cxx
-  otbWrapperQtWidgetComplexInputImageParameter.cxx
   otbWrapperQtWidgetRAMParameter.cxx
   otbWrapperQtWidgetProgressReport.cxx
   otbWrapperQtWidgetOutputProcessXMLParameter.cxx
@@ -68,8 +66,6 @@ set(OTBQtWidget_MOC_HDR
   ../include/otbWrapperQtWidgetStringListParameter.h
   ../include/otbWrapperQtWidgetChoiceParameter.h
   ../include/otbWrapperQtWidgetInputImageParameter.h
-  ../include/otbWrapperQtWidgetComplexInputImageParameter.h
-  ../include/otbWrapperQtWidgetComplexOutputImageParameter.h
   ../include/otbWrapperQtWidgetInputImageListParameter.h
   ../include/otbWrapperQtWidgetInputVectorDataListParameter.h
   ../include/otbWrapperQtWidgetInputVectorDataParameter.h
diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetComplexInputImageParameter.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetComplexInputImageParameter.cxx
deleted file mode 100644
index 57799f52bf6d09dea2729e1a3c9175031ae2a47d..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetComplexInputImageParameter.cxx
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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.
- */
-
-#include "otbWrapperQtWidgetComplexInputImageParameter.h"
-
-#include <otbQtAdapters.h>
-
-namespace otb
-{
-namespace Wrapper
-{
-
-QtWidgetComplexInputImageParameter::QtWidgetComplexInputImageParameter(ComplexInputImageParameter* param, QtWidgetModel* m, QWidget * parent)
-: QtWidgetParameterBase(param, m, parent),
-  m_ComplexInputImageParam(param)
-{
-}
-
-QtWidgetComplexInputImageParameter::~QtWidgetComplexInputImageParameter()
-{
-}
-const QLineEdit*
-QtWidgetComplexInputImageParameter
-::GetInput() const
-{
-  return m_Input;
-}
-
-QLineEdit*
-QtWidgetComplexInputImageParameter
-::GetInput()
-{
-  return m_Input;
-}
-
-void QtWidgetComplexInputImageParameter::DoUpdateGUI()
-{
-  //update lineedit if HasUserValue flag is set(from xml)
-  if(m_ComplexInputImageParam->HasUserValue())
-    {
-    QString text(
-      QFile::decodeName(
-        m_ComplexInputImageParam->GetFileName().c_str()
-      )
-    );
-
-    if (text != m_Input->text())
-      m_Input->setText(text);
-    }
-}
-
-void QtWidgetComplexInputImageParameter::DoCreateWidget()
-{
-  // Set up input text edit
-  m_HLayout = new QHBoxLayout;
-  m_HLayout->setSpacing(0);
-  m_HLayout->setContentsMargins(0, 0, 0, 0);
-  m_Input = new QLineEdit;
-  m_Input->setToolTip(
-    QString::fromStdString( m_ComplexInputImageParam->GetDescription() )
-  );
-  connect( m_Input, &QLineEdit::textChanged, this, &QtWidgetComplexInputImageParameter::SetFileName );
-  connect( m_Input, &QLineEdit::textChanged, GetModel(), &QtWidgetModel::NotifyUpdate );
-
-  m_HLayout->addWidget(m_Input);
-
-  // Set up input text edit
-  m_Button = new QPushButton;
-  m_Button->setText("...");
-  m_Button->setToolTip("Select file...");
-  m_Button->setMaximumWidth(m_Button->width());
-  connect( m_Button, &QPushButton::clicked, this, &QtWidgetComplexInputImageParameter::SelectFile );
-  m_HLayout->addWidget(m_Button);
-
-  this->setLayout(m_HLayout);
-}
-
-void
-QtWidgetComplexInputImageParameter
-::SelectFile()
-{
-  assert( m_Input!=NULL );
-
-  QString filename(
-    otb::GetOpenFilename(
-      this,
-      QString(),
-      m_Input->text(),
-      tr( "Raster files (*)" ),
-      NULL,
-      QFileDialog::ReadOnly
-    )
-  );
-
-  if( filename.isEmpty() )
-    return;
-
-  if( !SetFileName( filename ) )
-    {
-    std::ostringstream oss;
-
-    oss << "Invalid filename: '"
-	<< QFile::encodeName( filename ).constData()
-	<< "'";
-
-    assert( GetModel()!=NULL );
-
-    GetModel()->SendLogWARNING( oss.str() );
-
-    return;
-    }
-
-  m_Input->setText( filename  );
-}
-
-bool QtWidgetComplexInputImageParameter::SetFileName(const QString& value)
-{
-  bool res = false;
-  // save value
-  if( m_ComplexInputImageParam->SetFromFileName(
-    QFile::encodeName( value ).constData()) == true)
-    {
-    res = true;
-    // notify of value change
-    QString key( m_ComplexInputImageParam->GetKey() );
-    emit ParameterChanged(key);
-    }
-
-  return res;
-}
-
-}
-}
diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetComplexOutputImageParameter.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetComplexOutputImageParameter.cxx
deleted file mode 100644
index a473e583fc141f4b2e4ef8cf09287e89ab7ab85b..0000000000000000000000000000000000000000
--- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetComplexOutputImageParameter.cxx
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2005-2019 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.
- */
-
-#include "otbWrapperQtWidgetComplexOutputImageParameter.h"
-
-
-#include <otbQtAdapters.h>
-#include <otbWrapperTypes.h>
-
-namespace otb
-{
-namespace Wrapper
-{
-
-QtWidgetComplexOutputImageParameter::QtWidgetComplexOutputImageParameter(ComplexOutputImageParameter* param, QtWidgetModel* m, QWidget * parent)
-: QtWidgetParameterBase(param, m, parent),
-  m_OutputImageParam(param)
-{
-}
-
-QtWidgetComplexOutputImageParameter::~QtWidgetComplexOutputImageParameter()
-{
-}
-
-const QLineEdit*
-QtWidgetComplexOutputImageParameter
-::GetInput() const
-{
-  return m_Input;
-}
-
-QLineEdit*
-QtWidgetComplexOutputImageParameter
-::GetInput()
-{
-  return m_Input;
-}
-
-void QtWidgetComplexOutputImageParameter::DoUpdateGUI()
-{
-  // Update the lineEdit
-  QString text(
-    QFile::decodeName( m_OutputImageParam->GetFileName() )
-  );
-
-  if (text != m_Input->text())
-    m_Input->setText(text);
-}
-
-void QtWidgetComplexOutputImageParameter::DoCreateWidget()
-{
-  // Set up input text edit
-  m_HLayout = new QHBoxLayout;
-  m_HLayout->setSpacing(0);
-  m_HLayout->setContentsMargins(0, 0, 0, 0);
-  m_Input = new QLineEdit(this);
-  m_Input->setToolTip(
-    QString::fromStdString( m_OutputImageParam->GetDescription() )
-  );
-  connect( m_Input, &QLineEdit::textChanged, this, &QtWidgetComplexOutputImageParameter::SetFileName );
-  connect( m_Input, &QLineEdit::textChanged, GetModel(), &QtWidgetModel::NotifyUpdate );
-  m_HLayout->addWidget(m_Input);
-
-  // Set the Output PixelType choice Combobox
-  m_ComboBox = new QComboBox(this);
-  m_ComboBox->setToolTip("Complex Output Pixel Type");
-  m_ComboBox->addItem( "cint16");
-  m_ComboBox->addItem( "cint32");
-  m_ComboBox->addItem( "cfloat");
-  m_ComboBox->addItem( "cdouble");
-  m_ComboBox->setCurrentIndex(m_OutputImageParam->GetComplexPixelType());
-  connect( m_ComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &QtWidgetComplexOutputImageParameter::SetPixelType );
-  connect( m_ComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), GetModel(), &QtWidgetModel::NotifyUpdate );
-  m_HLayout->addWidget(m_ComboBox);
-
-  // Set up input text edit
-  m_Button = new QPushButton(this);
-  m_Button->setText("...");
-  m_Button->setToolTip("Select output filename...");
-  m_Button->setMaximumWidth(m_Button->width());
-  connect( m_Button, &QPushButton::clicked, this, &QtWidgetComplexOutputImageParameter::SelectFile );
-  m_HLayout->addWidget(m_Button);
-
-  this->setLayout(m_HLayout);
-}
-
-
-void
-QtWidgetComplexOutputImageParameter
-::SelectFile()
-{
-  assert( m_Input!=NULL );
-
-  QString filename(
-    otb::GetSaveFilename(
-      this,
-      QString(),
-      m_Input->text(),
-      tr( "Raster files (*)" ),
-      NULL
-    )
-  );
-
-  if( filename.isEmpty() )
-    return;
-
-  SetFileName( filename );
-
-  m_Input->setText( filename  );
-}
-
-
-void QtWidgetComplexOutputImageParameter::SetFileName(const QString& value)
-{
-  // save value
-  m_FileName = QFile::encodeName( value ).constData();
-
-  m_OutputImageParam->SetFileName(m_FileName);
-
-  // notify of value change
-  QString key( m_OutputImageParam->GetKey() );
-  emit ParameterChanged(key);
-}
-
-void QtWidgetComplexOutputImageParameter::SetPixelType(int  pixelType)
-{
-  m_OutputImageParam->SetComplexPixelType(static_cast< ComplexImagePixelType >(pixelType));
-  m_ComplexPixelType = pixelType;
-}
-
-}
-}
diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetParameterFactory.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetParameterFactory.cxx
index cf66ebe0e43b28d7bb4af6b622a508fa2baf1017..2f382da98d8ba177b763b3264fae37c5a239f378 100644
--- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetParameterFactory.cxx
+++ b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetParameterFactory.cxx
@@ -26,8 +26,6 @@
 #include "otbWrapperStringListParameter.h"
 
 #include "otbWrapperQtWidgetChoiceParameter.h"
-#include "otbWrapperQtWidgetComplexInputImageParameter.h"
-#include "otbWrapperQtWidgetComplexOutputImageParameter.h"
 #include "otbWrapperQtWidgetDirectoryParameter.h"
 #include "otbWrapperQtWidgetFloatParameter.h"
 #include "otbWrapperQtWidgetIntParameter.h"
@@ -114,8 +112,6 @@ QtWidgetParameterFactory::CreateQtWidget( Parameter* param, QtWidgetModel* model
   CREATEWIDGET(ChoiceParameter,         QtWidgetChoiceParameter)
   CREATEWIDGET(ListViewParameter,       QtWidgetListViewParameter)
   CREATEWIDGET(InputImageParameter,     QtWidgetInputImageParameter)
-  CREATEWIDGET(ComplexInputImageParameter,     QtWidgetComplexInputImageParameter)
-  CREATEWIDGET(ComplexOutputImageParameter,     QtWidgetComplexOutputImageParameter)
   CREATEWIDGET(InputImageListParameter, QtWidgetInputImageListParameter)
   CREATEWIDGET(InputFilenameListParameter, QtWidgetInputFilenameListParameter)
   CREATEWIDGET(InputVectorDataListParameter, QtWidgetInputVectorDataListParameter)
diff --git a/Modules/Wrappers/SWIG/src/otbApplication.i b/Modules/Wrappers/SWIG/src/otbApplication.i
index 7a260b2fd6ba52779c63af5bd77462db88eba126..896016f85cd3f57816980e21b683ee351abf3cc2 100644
--- a/Modules/Wrappers/SWIG/src/otbApplication.i
+++ b/Modules/Wrappers/SWIG/src/otbApplication.i
@@ -94,8 +94,6 @@ namespace Wrapper
     ParameterType_Radius,
     ParameterType_Group,
     ParameterType_ListView,
-    ParameterType_ComplexInputImage,
-    ParameterType_ComplexOutputImage,
     ParameterType_RAM,
     ParameterType_OutputProcessXML,
     ParameterType_InputProcessXML,
@@ -277,10 +275,8 @@ public:
   void SetParameterStringList(std::string parameter, std::vector<std::string> values, bool hasUserValueFlag = true);
 
   void SetParameterOutputImagePixelType(std::string parameter, otb::Wrapper::ImagePixelType pixelType);
-  void SetParameterComplexOutputImagePixelType(std::string parameter, otb::Wrapper::ComplexImagePixelType cpixelType);
 
   otb::Wrapper::ImagePixelType GetParameterOutputImagePixelType(std::string parameter);
-  otb::Wrapper::ComplexImagePixelType GetParameterComplexOutputImagePixelType(std::string parameter);
 
   int GetParameterInt(std::string parameter);
   float GetParameterFloat(std::string parameter);
@@ -292,8 +288,6 @@ public:
 
   ImageBaseType * GetParameterOutputImage(std::string parameter);
   void SetParameterInputImage(std::string parameter, ImageBaseType * inputImage);
-  ImageBaseType * GetParameterComplexOutputImage(std::string parameter);
-  void SetParameterComplexInputImage(std::string parameter, ImageBaseType * inputImage);
   void AddImageToParameterInputImageList(std::string parameter,ImageBaseType * img);
   void AddParameterStringList(std::string parameter,const std::string & str);
   void SetNthParameterInputImageList(std::string parameter, const unsigned int &id, ImageBaseType * img);
@@ -594,7 +588,6 @@ class ApplicationProxy(object):
 				ParameterType_OutputFilename : 'ParameterType_OutputFilename',
 				ParameterType_Directory : 'ParameterType_Directory',
 				ParameterType_InputImage : 'ParameterType_InputImage',
-				ParameterType_ComplexInputImage : 'ParameterType_ComplexInputImage',
 				ParameterType_InputVectorData : 'ParameterType_InputVectorData',
 				ParameterType_InputImageList : 'ParameterType_InputImageList',
 				ParameterType_InputVectorDataList : 'ParameterType_InputImageList',
@@ -627,7 +620,7 @@ class ApplicationProxy(object):
 											 ParameterType_OutputImage, ParameterType_OutputVectorData,
 											 ParameterType_OutputProcessXML, ParameterType_OutputFilename,
 											 ParameterType_Directory, ParameterType_InputImage,
-											 ParameterType_ComplexInputImage, ParameterType_InputVectorData]:
+											 ParameterType_InputVectorData]:
 			  return self.SetParameterString(paramKey, value)
 			elif paramType in [ParameterType_InputImageList, ParameterType_InputVectorDataList,
 												 ParameterType_InputFilenameList, ParameterType_StringList,
@@ -661,7 +654,7 @@ class ApplicationProxy(object):
 											 ParameterType_OutputImage, ParameterType_OutputVectorData,
 											 ParameterType_OutputProcessXML, ParameterType_OutputFilename,
 											 ParameterType_Directory, ParameterType_InputImage,
-											 ParameterType_ComplexInputImage, ParameterType_InputVectorData]:
+											 ParameterType_InputVectorData]:
 			  return self.GetParameterString(paramKey)
 			elif paramType in [ParameterType_InputImageList, ParameterType_InputVectorDataList,
 												 ParameterType_InputFilenameList, ParameterType_StringList,
diff --git a/Modules/Wrappers/SWIG/src/otbWrapperSWIGIncludes.h b/Modules/Wrappers/SWIG/src/otbWrapperSWIGIncludes.h
index 603910cc06fbbbcd359580d744d7de7618ca2ce5..6712dfe994173600441460c5a89ba10958394dcd 100644
--- a/Modules/Wrappers/SWIG/src/otbWrapperSWIGIncludes.h
+++ b/Modules/Wrappers/SWIG/src/otbWrapperSWIGIncludes.h
@@ -34,8 +34,6 @@ typedef otb::Wrapper::DocExampleStructure                DocExampleStructure;
 typedef otb::Wrapper::Parameter                          Parameter;
 typedef otb::Wrapper::OutputImageParameter               OutputImageParameter;
 typedef otb::Wrapper::InputImageParameter                InputImageParameter;
-typedef otb::Wrapper::ComplexOutputImageParameter        ComplexOutputImageParameter;
-typedef otb::Wrapper::ComplexInputImageParameter         ComplexInputImageParameter;
 
 typedef otb::Wrapper::ImageBaseType                      ImageBaseType;