From 5d1cd018c98055f327f159a87169c1a8738b8239 Mon Sep 17 00:00:00 2001
From: Cyrille Valladeau <cyrille.valladeau@c-s.fr>
Date: Mon, 28 Feb 2011 19:13:33 +0100
Subject: [PATCH] SARPol : latex description, small correction, warning
 correction and add missing tests

---
 Code/SARPolarimetry/CMakeLists.txt            |  0
 .../otbHermitianEigenAnalysis.h               | 17 +++---
 .../otbHermitianEigenAnalysis.txx             |  0
 ...bMLCToCircularCoherencyDegreeImageFilter.h | 38 +++++++------
 .../otbMLCToCoherencyDegreeImageFilter.h      | 21 ++++---
 .../otbMLCToCoherencyImageFilter.h            | 27 +++++----
 ...MuellerToCircularPolarisationImageFilter.h | 15 +++--
 .../otbMuellerToMLCImageFilter.h              | 54 ++++++++++--------
 ...rToPolarisationDegreeAndPowerImageFilter.h |  8 ++-
 ...MultiChannelsPolarimetricSynthesisFilter.h |  0
 ...ltiChannelsPolarimetricSynthesisFilter.txx |  0
 Code/SARPolarimetry/otbPolarimetricData.cxx   |  0
 Code/SARPolarimetry/otbPolarimetricData.h     |  7 ++-
 .../otbPolarimetricSynthesisFilter.h          |  4 ++
 .../otbPolarimetricSynthesisFilter.txx        |  0
 .../otbPolarimetricSynthesisFunctor.h         |  3 +-
 ...bReciprocalCoherencyToMuellerImageFilter.h |  3 +-
 .../otbReciprocalHAlphaImageFilter.h          | 31 ++++++-----
 Code/SARPolarimetry/otbSinclairImageFilter.h  | 10 ++++
 .../SARPolarimetry/otbSinclairImageFilter.txx |  0
 ...inclairToCircularCovarianceMatrixFunctor.h | 33 +++++++----
 .../otbSinclairToCoherencyFunctor.h           | 17 ++++--
 .../otbSinclairToCovarianceFunctor.h          | 15 ++++-
 .../otbSinclairToMuellerFunctor.h             | 51 ++++++++++++++---
 ...eciprocalCircularCovarianceMatrixFunctor.h | 23 +++++---
 .../otbSinclairToReciprocalCoherencyFunctor.h | 17 +++++-
 ...otbSinclairToReciprocalCovarianceFunctor.h |  9 +++
 Testing/Code/SARPolarimetry/CMakeLists.txt    |  8 ++-
 .../otbHHnHVPolarimetricSynthesisFilter.cxx   |  0
 ...otbHHnHVnVVPolarimetricSynthesisFilter.cxx |  0
 .../otbHermitianEigenAnalysisTest.cxx         | 40 ++++++++++++++
 ...LCToCircularCoherencyDegreeImageFilter.cxx |  0
 ...oCircularCoherencyDegreeImageFilterNew.cxx |  2 -
 .../otbMLCToCoherencyDegreeImageFilter.cxx    |  0
 .../otbMLCToCoherencyDegreeImageFilterNew.cxx |  2 -
 .../otbMLCToCoherencyImageFilter.cxx          |  0
 .../otbMLCToCoherencyImageFilterNew.cxx       |  2 -
 ...ellerToCircularPolarisationImageFilter.cxx |  0
 ...erToCircularPolarisationImageFilterNew.cxx |  2 -
 .../otbMuellerToMLCImageFilter.cxx            |  0
 .../otbMuellerToMLCImageFilterNew.cxx         |  2 -
 ...oPolarisationDegreeAndPowerImageFilter.cxx |  0
 ...larisationDegreeAndPowerImageFilterNew.cxx |  2 -
 ...ltiChannelsPolarimetricSynthesisFilter.cxx |  0
 ...ChannelsPolarimetricSynthesisFilterNew.cxx |  2 -
 .../otbPolarimetricSynthesisFilter.cxx        |  0
 .../otbPolarimetricSynthesisFilterNew.cxx     |  2 -
 ...eciprocalCoherencyToMuellerImageFilter.cxx |  0
 ...procalCoherencyToMuellerImageFilterNew.cxx |  2 -
 .../otbReciprocalHAlphaImageFilter.cxx        |  0
 .../otbReciprocalHAlphaImageFilterNew.cxx     |  2 -
 .../otbSARPolarimetryTests1.cxx               |  2 +
 .../SARPolarimetry/otbSinclairImageFilter.cxx |  0
 .../otbSinclairToCovarianceFunctor.cxx        | 24 +++++---
 ...bSinclairToReciprocalCovarianceFunctor.cxx | 55 +++++++++++++++++++
 .../otbVHnVVPolarimetricSynthesisFilter.cxx   |  0
 ...ltiChannelsPolarimetricSynthesisFilter.cxx |  0
 57 files changed, 395 insertions(+), 157 deletions(-)
 mode change 100644 => 100755 Code/SARPolarimetry/CMakeLists.txt
 mode change 100644 => 100755 Code/SARPolarimetry/otbHermitianEigenAnalysis.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbHermitianEigenAnalysis.txx
 mode change 100644 => 100755 Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMLCToCoherencyImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMuellerToMLCImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx
 mode change 100644 => 100755 Code/SARPolarimetry/otbPolarimetricData.cxx
 mode change 100644 => 100755 Code/SARPolarimetry/otbPolarimetricData.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbPolarimetricSynthesisFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbPolarimetricSynthesisFilter.txx
 mode change 100644 => 100755 Code/SARPolarimetry/otbPolarimetricSynthesisFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairImageFilter.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairImageFilter.txx
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToCircularCovarianceMatrixFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToCoherencyFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToCovarianceFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToMuellerFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToReciprocalCircularCovarianceMatrixFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToReciprocalCoherencyFunctor.h
 mode change 100644 => 100755 Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.h
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/CMakeLists.txt
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbHHnHVPolarimetricSynthesisFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbHHnHVnVVPolarimetricSynthesisFilter.cxx
 create mode 100755 Testing/Code/SARPolarimetry/otbHermitianEigenAnalysisTest.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilterNew.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbSARPolarimetryTests1.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbSinclairImageFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.cxx
 create mode 100755 Testing/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbVHnVVPolarimetricSynthesisFilter.cxx
 mode change 100644 => 100755 Testing/Code/SARPolarimetry/otbVectorMultiChannelsPolarimetricSynthesisFilter.cxx

diff --git a/Code/SARPolarimetry/CMakeLists.txt b/Code/SARPolarimetry/CMakeLists.txt
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbHermitianEigenAnalysis.h b/Code/SARPolarimetry/otbHermitianEigenAnalysis.h
old mode 100644
new mode 100755
index fdc417d5bb..16001824ae
--- a/Code/SARPolarimetry/otbHermitianEigenAnalysis.h
+++ b/Code/SARPolarimetry/otbHermitianEigenAnalysis.h
@@ -1,13 +1,14 @@
 /*=========================================================================
 
-  Program:   Insight Segmentation & Registration Toolkit
-  Module:    $RCSfile: otbHermitianEigenAnalysis.h, v $
+  Program:   ORFEO Toolbox
   Language:  C++
-  Date:      $Date: 2005/07/09 22:43:35 $
-  Version:   $Revision: 1.5 $
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
 
-  Copyright (c) Insight Software Consortium. All rights reserved.
-  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
 
      This software is distributed WITHOUT ANY WARRANTY; without even
      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
@@ -56,6 +57,8 @@ namespace otb
  *     num. math. 11, 293-306(1968) by bowdler, martin, reinsch, and
  *     wilkinson.
  *     handbook for auto. comp., vol.ii-linear algebra, 227-240(1971).
+ *
+ * \ingroup SARPolarimetry
  */
 
 template < typename TMatrix, typename TVector, typename TEigenMatrix=TMatrix >
@@ -85,7 +88,7 @@ public:
       m_OrderEigenValues(OrderByValue)
     {};
 
-  ~HermitianEigenAnalysis() {};
+  virtual ~HermitianEigenAnalysis() {};
 
   typedef TMatrix      MatrixType;
   typedef TEigenMatrix EigenMatrixType;
diff --git a/Code/SARPolarimetry/otbHermitianEigenAnalysis.txx b/Code/SARPolarimetry/otbHermitianEigenAnalysis.txx
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.h b/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.h
old mode 100644
new mode 100755
index 61ca413afb..937b08dc15
--- a/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.h
+++ b/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.h
@@ -45,6 +45,12 @@ namespace Functor {
  *   \f$ S_{ll} = S_{ll}^{*} = 1/2 * ( -S_{xx} - j*2*S_{xy} + S_{yy})  \f$
  *   \f$ S_{lr} = S_{rl}     = 1/2 * ( -S_{xx} - S_{yy})  \f$
  *
+ * \infgroup Functor
+ * \ingroup SARPolarimetry
+ *
+ * \sa MLCToCoherencyDegreeImageFilter
+ * \sa MLCToCoherencyImageFilter
+ *
  */
 template< class TInput, class TOutput>
 class MLCToCircularCoherencyDegreeFunctor
@@ -60,24 +66,24 @@ public:
     result.SetSize(m_NumberOfComponentsPerPixel);
     result.Fill(0.0);
 
-    RealType C1 =  static_cast<RealType>(Covariance[0].real()); // C1  <hh.hh*>
-    RealType C2 =  static_cast<RealType>(Covariance[3].real()); // C2  <hv.hv*>
-    RealType C3 =  static_cast<RealType>(Covariance[5].real()); // C3  <vv.vv*>
-    RealType C4 =  static_cast<RealType>(Covariance[1].real()); // C4  Re<hh.hv*>
-    RealType C5 =  static_cast<RealType>(Covariance[1].imag()); // C5  Im<hh.hv*>
-    RealType C6 =  static_cast<RealType>(Covariance[2].real()); // C6  Re<hh.vv*>
-    RealType C7 =  static_cast<RealType>(Covariance[2].imag()); // C7  Im<hh.vv*>
-    RealType C8 =  static_cast<RealType>(Covariance[4].real()); // C8  Re<hv.vv*>
-    RealType C9 =  static_cast<RealType>(Covariance[4].imag()); // C9  Im<hv.vv*>
+    const RealType C1 =  static_cast<RealType>(Covariance[0].real()); // C1  <hh.hh*>
+    const RealType C2 =  static_cast<RealType>(Covariance[3].real()); // C2  <hv.hv*>
+    const RealType C3 =  static_cast<RealType>(Covariance[5].real()); // C3  <vv.vv*>
+    const RealType C4 =  static_cast<RealType>(Covariance[1].real()); // C4  Re<hh.hv*>
+    const RealType C5 =  static_cast<RealType>(Covariance[1].imag()); // C5  Im<hh.hv*>
+    const RealType C6 =  static_cast<RealType>(Covariance[2].real()); // C6  Re<hh.vv*>
+    const RealType C7 =  static_cast<RealType>(Covariance[2].imag()); // C7  Im<hh.vv*>
+    const RealType C8 =  static_cast<RealType>(Covariance[4].real()); // C8  Re<hv.vv*>
+    const RealType C9 =  static_cast<RealType>(Covariance[4].imag()); // C9  Im<hv.vv*>
 
-    RealType llrrReal = 0.25 * ( C1 + C3 -4*C2 -2*C6);
-    RealType llrrImag = -(C4 + C8);
+    const RealType llrrReal = 0.25 * ( C1 + C3 -4*C2 -2*C6);
+    const RealType llrrImag = -(C4 + C8);
 
-    RealType lllrReal = 0.25 * ( C1 - C3 - 2*C5 + 2*C9);
-    RealType lllrImag = -0.5*(C7+C4+C8);
+    const RealType lllrReal = 0.25 * ( C1 - C3 - 2*C5 + 2*C9);
+    const RealType lllrImag = -0.5*(C7+C4+C8);
 
-    RealType rrlrReal = 0.25 * ( C1 -C3 + 2*C5 - 2*C9);
-    RealType rrlrImag = 0.5 * (C4+C8-C7);
+    const RealType rrlrReal = 0.25 * ( C1 -C3 + 2*C5 - 2*C9);
+    const RealType rrlrImag = 0.5 * (C4+C8-C7);
 
     RealType ll2    = 0.25 * ( C1 + C3 + 4*C2 - 2*C6 - 4*C5 - 4*C9);
     RealType rr2    = 0.25 * ( C1 + C3 + 4*C2 - 2*C6 + 4*C5 + 4*C9);
@@ -114,7 +120,7 @@ public:
    MLCToCircularCoherencyDegreeFunctor() : m_NumberOfComponentsPerPixel(3)  {}
 
    /** Destructor */
-   ~MLCToCircularCoherencyDegreeFunctor() {}
+   virtual ~MLCToCircularCoherencyDegreeFunctor() {}
 
 private:
     unsigned int m_NumberOfComponentsPerPixel;
diff --git a/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.h b/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.h
old mode 100644
new mode 100755
index fa19f292e4..a9edf7d9fb
--- a/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.h
+++ b/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.h
@@ -29,11 +29,16 @@ namespace Functor {
 /** \class otbMLCToCoherencyDegreeFunctor
  * \brief Evaluate the Coherency Degree coefficient from from the MLC image
  *
- * *  Output value are:
+ *   Output value are:
  *   channel #0 : \f$ abs(S_{hh}*S_{vv}}^{*}) / sqrt(S_{hh}*S_{hh}}^{*}) / sqrt(S_{vv}*S_{vv}}^{*})\f$
  *   channel #1 : \f$ abs(S_{hv}*S_{vv}}^{*}) / sqrt(S_{hv}*S_{hv}}^{*}) / sqrt(S_{vv}*S_{vv}}^{*}) \f$
  *   channel #2 : \f$ abs(S_{hh}*S_{hv}}^{*}) / sqrt(S_{hh}*S_{hh}}^{*}) / sqrt(S_{hv}*S_{hv}}^{*}) \f$
  *
+ * \infgroup Functor
+ * \ingroup SARPolarimetry
+ *
+ * \sa MLCToCircularCoherencyDegreeImageFilter
+ * \sa MLCToCoherencyImageFilter
  */
 template< class TInput, class TOutput>
 class MLCToCoherencyDegreeFunctor
@@ -49,12 +54,12 @@ public:
     result.SetSize(m_NumberOfComponentsPerPixel);
     result.Fill(0.0);
 
-    RealType C11 =  static_cast<RealType>(Covariance[0].real());
-    ComplexType C12 =  static_cast<ComplexType>(Covariance[1]);
-    ComplexType C13 =  static_cast<ComplexType>(Covariance[2]);
-    RealType C22 =  static_cast<RealType>(Covariance[3].real());
-    ComplexType C23 =  static_cast<ComplexType>(Covariance[4]);
-    RealType C33 =  static_cast<RealType>(Covariance[5].real());
+    const RealType C11 =  static_cast<RealType>(Covariance[0].real());
+    const ComplexType C12 =  static_cast<ComplexType>(Covariance[1]);
+    const ComplexType C13 =  static_cast<ComplexType>(Covariance[2]);
+    const RealType C22 =  static_cast<RealType>(Covariance[3].real());
+    const ComplexType C23 =  static_cast<ComplexType>(Covariance[4]);
+    const RealType C33 =  static_cast<RealType>(Covariance[5].real());
 
     if ((C11 >0.00001) && (C33 > 0.0001))
       {
@@ -83,7 +88,7 @@ public:
    MLCToCoherencyDegreeFunctor() : m_NumberOfComponentsPerPixel(3)  {}
 
    /** Destructor */
-   ~MLCToCoherencyDegreeFunctor() {}
+   virtual ~MLCToCoherencyDegreeFunctor() {}
 
 private:
     unsigned int m_NumberOfComponentsPerPixel;
diff --git a/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.h b/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.h
old mode 100644
new mode 100755
index a8b2511b42..0dbc3a4728
--- a/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.h
+++ b/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.h
@@ -29,7 +29,7 @@ namespace Functor {
 /** \class otbMLCToCoherencyFunctor
  * \brief Evaluate the Coherency matrix from from the MLC image
  *
- * *  Output value are:
+ *   Output value are:
  *   channel #0 : \f$ 0.5 * (S_{hh}+S_{vv}.(S_{hh}+S_{vv})^{*} \f$
  *   channel #1 : \f$ 0.5 * (S_{hh}+S_{vv}.(S_{hh}-S_{vv})^{*} \f$
  *   channel #2 : \f$ (S_{hh}+S_{vv}.(S_{hv})^{*} \f$
@@ -37,6 +37,11 @@ namespace Functor {
  *   channel #4 : \f$ (S_{hh}-S_{vv}.(S_{hv})^{*}  \f$
  *   channel #5 : \f$ 2.0*S_{hv}.S_{hv}^{*} \f$
  *
+ * \infgroup Functor
+ * \ingroup SARPolarimetry
+ *
+ * \sa MLCToCircularCoherencyDegreeImageFilter
+ * \sa MLCToCoherencyDegreeImageFilter
  */
 template< class TInput, class TOutput>
 class MLCToCoherencyFunctor
@@ -50,16 +55,16 @@ public:
     TOutput result;
     result.SetSize(m_NumberOfComponentsPerPixel);
 
-    ComplexType C11 =  static_cast<ComplexType>(Covariance[0]);
-    ComplexType C12 =  static_cast<ComplexType>(Covariance[1]);
-    ComplexType C13 =  static_cast<ComplexType>(Covariance[2]);
-    ComplexType C22 =  static_cast<ComplexType>(Covariance[3]);
-    ComplexType C23 =  static_cast<ComplexType>(Covariance[4]);
-    ComplexType C33 =  static_cast<ComplexType>(Covariance[5]);
+    const ComplexType C11 =  static_cast<ComplexType>(Covariance[0]);
+    const ComplexType C12 =  static_cast<ComplexType>(Covariance[1]);
+    const ComplexType C13 =  static_cast<ComplexType>(Covariance[2]);
+    const ComplexType C22 =  static_cast<ComplexType>(Covariance[3]);
+    const ComplexType C23 =  static_cast<ComplexType>(Covariance[4]);
+    const ComplexType C33 =  static_cast<ComplexType>(Covariance[5]);
 
-    ComplexType C21 =  vcl_conj(C12);
-    ComplexType C31 =  vcl_conj(C13);
-    ComplexType C32 =  vcl_conj(C23);
+    const ComplexType C21 =  vcl_conj(C12);
+    const ComplexType C31 =  vcl_conj(C13);
+    const ComplexType C32 =  vcl_conj(C23);
 
     result[0] = static_cast<OutputValueType>( 0.5*(C11 + C13 + C31 + C33) );
     result[1] = static_cast<OutputValueType>( 0.5*(C11 - C13 + C31 - C33) );
@@ -80,7 +85,7 @@ public:
    MLCToCoherencyFunctor() : m_NumberOfComponentsPerPixel(6)  {}
 
    /** Destructor */
-   ~MLCToCoherencyFunctor() {}
+   virtual ~MLCToCoherencyFunctor() {}
 
 private:
     unsigned int m_NumberOfComponentsPerPixel;
diff --git a/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.h b/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.h
old mode 100644
new mode 100755
index f64c066363..c35a491191
--- a/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.h
+++ b/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.h
@@ -30,6 +30,11 @@ namespace Functor {
  * \brief Evaluate the  Circular Polarisation image
  * (3 channels : LL, RR and LR)  from the Mueller image
  *
+ * \ingroup Functor
+ * \ingroup SARPolarimetry
+ *
+ * \sa MuellerToMLCImageFilter 
+ * \sa MuellerToPolarisationDegreeAndPowerImageFilter
  *
  */
 template< class TInput, class TOutput>
@@ -44,10 +49,10 @@ public:
     TOutput result;
     result.SetSize(m_NumberOfComponentsPerPixel);
 
-    RealType M11 =  static_cast<RealType>(Mueller[0]);
-    RealType M14 =  static_cast<RealType>(Mueller[3]);
-    RealType M41 =  static_cast<RealType>(Mueller[12]);
-    RealType M44 =  static_cast<RealType>(Mueller[15]);
+    const RealType M11 =  static_cast<RealType>(Mueller[0]);
+    const RealType M14 =  static_cast<RealType>(Mueller[3]);
+    const RealType M41 =  static_cast<RealType>(Mueller[12]);
+    const RealType M44 =  static_cast<RealType>(Mueller[15]);
 
     result[0] = static_cast<OutputValueType>( M11 + M14 + M41 + M44 ); // LL
     result[1] = static_cast<OutputValueType>( M11 - M14 - M41 + M44 ); // RR
@@ -65,7 +70,7 @@ public:
    MuellerToCircularPolarisationFunctor() : m_NumberOfComponentsPerPixel(3)  {}
 
    /** Destructor */
-   ~MuellerToCircularPolarisationFunctor() {}
+   virtual ~MuellerToCircularPolarisationFunctor() {}
 
 private:
     unsigned int m_NumberOfComponentsPerPixel;
diff --git a/Code/SARPolarimetry/otbMuellerToMLCImageFilter.h b/Code/SARPolarimetry/otbMuellerToMLCImageFilter.h
old mode 100644
new mode 100755
index 90c0563e8f..97a45886f0
--- a/Code/SARPolarimetry/otbMuellerToMLCImageFilter.h
+++ b/Code/SARPolarimetry/otbMuellerToMLCImageFilter.h
@@ -29,6 +29,12 @@ namespace Functor {
 /** \class otbMuellerToMLCFunctor
  * \brief Evaluate the  MLC image from the Mueller image
  *
+ * \ingroup Functor
+ * \ingroup SARPolarimetry
+ *
+ * \sa MuellerToCircularPolarisationImageFilter
+ * \sa MuellerToPolarisationDegreeAndPowerImageFilter
+ *
  */
 template< class TInput, class TOutput>
 class MuellerToMLCFunctor
@@ -44,29 +50,29 @@ public:
     TOutput result;
     result.SetSize(m_NumberOfComponentsPerPixel);
 
-    RealType M11 =  static_cast<RealType>(Mueller[0]);
-    RealType M12 =  static_cast<RealType>(Mueller[1]);
-    RealType M13 =  static_cast<RealType>(Mueller[2]);
-    RealType M14 =  static_cast<RealType>(Mueller[3]);
-    RealType M21 =  static_cast<RealType>(Mueller[4]);
-    RealType M22 =  static_cast<RealType>(Mueller[5]);
-    RealType M23 =  static_cast<RealType>(Mueller[6]);
-    RealType M24 =  static_cast<RealType>(Mueller[7]);
-    RealType M31 =  static_cast<RealType>(Mueller[8]);
-    RealType M32 =  static_cast<RealType>(Mueller[9]);
-    RealType M33 =  static_cast<RealType>(Mueller[10]);
-    RealType M34 =  static_cast<RealType>(Mueller[11]);
-    RealType M41 =  static_cast<RealType>(Mueller[12]);
-    RealType M42 =  static_cast<RealType>(Mueller[13]);
-    RealType M43 =  static_cast<RealType>(Mueller[14]);
-    RealType M44 =  static_cast<RealType>(Mueller[15]);
-
-    ComplexType hhhh(M11+M22+2.*M12, 0.0);
-    ComplexType hvhv(M11-M22, 0.0);
-    ComplexType vvvv(M11+M22-2.*M12, 0.0);
-    ComplexType hhhv(M13+M23, -1.*(M14+M24));
-    ComplexType hhvv(M33-M44, -2.*M34);
-    ComplexType hvvv(M13-M23, -1.*(M14-M24));
+    const RealType M11 =  static_cast<RealType>(Mueller[0]);
+    const RealType M12 =  static_cast<RealType>(Mueller[1]);
+    const RealType M13 =  static_cast<RealType>(Mueller[2]);
+    const RealType M14 =  static_cast<RealType>(Mueller[3]);
+    const RealType M21 =  static_cast<RealType>(Mueller[4]);
+    const RealType M22 =  static_cast<RealType>(Mueller[5]);
+    const RealType M23 =  static_cast<RealType>(Mueller[6]);
+    const RealType M24 =  static_cast<RealType>(Mueller[7]);
+    const RealType M31 =  static_cast<RealType>(Mueller[8]);
+    const RealType M32 =  static_cast<RealType>(Mueller[9]);
+    const RealType M33 =  static_cast<RealType>(Mueller[10]);
+    const RealType M34 =  static_cast<RealType>(Mueller[11]);
+    const RealType M41 =  static_cast<RealType>(Mueller[12]);
+    const RealType M42 =  static_cast<RealType>(Mueller[13]);
+    const RealType M43 =  static_cast<RealType>(Mueller[14]);
+    const RealType M44 =  static_cast<RealType>(Mueller[15]);
+
+    const ComplexType hhhh(M11+M22+2.*M12, 0.0);
+    const ComplexType hvhv(M11-M22, 0.0);
+    const ComplexType vvvv(M11+M22-2.*M12, 0.0);
+    const ComplexType hhhv(M13+M23, -1.*(M14+M24));
+    const ComplexType hhvv(M33-M44, -2.*M34);
+    const ComplexType hvvv(M13-M23, -1.*(M14-M24));
 
     result[0] = static_cast<OutputValueType>( hhhh );
     result[1] = static_cast<OutputValueType>( 2.* hhhv );
@@ -87,7 +93,7 @@ public:
    MuellerToMLCFunctor() : m_NumberOfComponentsPerPixel(6)  {}
 
    /** Destructor */
-   ~MuellerToMLCFunctor() {}
+   virtual ~MuellerToMLCFunctor() {}
 
 private:
     unsigned int m_NumberOfComponentsPerPixel;
diff --git a/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.h b/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.h
old mode 100644
new mode 100755
index 6182990e21..cf103ab1e5
--- a/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.h
+++ b/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.h
@@ -34,6 +34,12 @@ namespace Functor {
  * \brief Evaluate the  min and max polarisation degree and min and max power
  *   from the Mueller image
  *
+ * \ingroup Functor
+ * \ingroup SARPolarimetry
+ *
+ * \sa MuellerToCircularPolarisationImageFilter
+ * \sa MuellerToMLCImageFilter 
+ *
  */
 template< class TInput, class TOutput>
 class MuellerToPolarisationDegreeAndPowerFunctor
@@ -151,7 +157,7 @@ public:
    MuellerToPolarisationDegreeAndPowerFunctor() : m_NumberOfComponentsPerPixel(4) {}
 
    /** Destructor */
-   ~MuellerToPolarisationDegreeAndPowerFunctor() {}
+   virtual ~MuellerToPolarisationDegreeAndPowerFunctor() {}
 
 private:
     unsigned int m_NumberOfComponentsPerPixel;
diff --git a/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.h b/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.h
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx b/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.txx
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbPolarimetricData.cxx b/Code/SARPolarimetry/otbPolarimetricData.cxx
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbPolarimetricData.h b/Code/SARPolarimetry/otbPolarimetricData.h
old mode 100644
new mode 100755
index 6a230fbc14..81037e26e3
--- a/Code/SARPolarimetry/otbPolarimetricData.h
+++ b/Code/SARPolarimetry/otbPolarimetricData.h
@@ -40,9 +40,10 @@ typedef enum
 
 /** \class PolarimetricData
 *  \brief This class allows to determine the type of architecture we get.
+* 
+*  HH_HV_VH_VV (0), HH_HV_VV (1), HH_VH_VV (2), HH_HV(3), VH_VV (4), HH_VV (5).
 *
-*
-* \sa
+* \ingroup SARPolarimetry
 */
 
 class ITK_EXPORT PolarimetricData : public itk::DataObject
@@ -73,7 +74,7 @@ protected:
   /** Constructor */
   PolarimetricData();
   /** Destructor */
-  ~PolarimetricData() {}
+  virtual ~PolarimetricData() {}
   /**PrintSelf method */
   void PrintSelf(std::ostream& os, itk::Indent indent) const;
 
diff --git a/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.h b/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.h
old mode 100644
new mode 100755
index b6c6255632..53551f4eef
--- a/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.h
+++ b/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.h
@@ -54,6 +54,10 @@ namespace otb
  * the type of the output image.  It is also parameterized by the
  * operation to be applied, using a Functor style.
  *
+ *
+ * \ingroup SARPolarimetry
+ * \sa PolarimetricSynthesisFunctor
+ *
  */
 
 template <class TInputImageHH, class TInputImageHV, class TInputImageVH, class TInputImageVV, class TOutputImage,
diff --git a/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.txx b/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.txx
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbPolarimetricSynthesisFunctor.h b/Code/SARPolarimetry/otbPolarimetricSynthesisFunctor.h
old mode 100644
new mode 100755
index 8f6cd87b03..0f23625cfb
--- a/Code/SARPolarimetry/otbPolarimetricSynthesisFunctor.h
+++ b/Code/SARPolarimetry/otbPolarimetricSynthesisFunctor.h
@@ -32,6 +32,7 @@ namespace Functor
                    \vec(E_{r})\cdot\left[ S \right] \vec(E_{i}) \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
  */
 template <class TInput1, class TInput2, class TInput3, class TInput4, class TOutput>
 class PolarimetricSynthesisFunctor
@@ -69,7 +70,7 @@ public:
     tmp =   vcl_conj(m_Er[0]) * (m_Ei[0] * static_cast<ComplexType>(Shh) + m_Ei[1] * static_cast<ComplexType>(Shv))
           + vcl_conj(m_Er[1]) * (m_Ei[0] * static_cast<ComplexType>(Svh) + m_Ei[1] * static_cast<ComplexType>(Svv));
 
-    scalar = (double) (vcl_pow(vcl_abs(tmp), 2));
+    scalar = static_cast<double>(vcl_abs(tmp)) * static_cast<double>(vcl_abs(tmp));
 
     return (static_cast<TOutput>(scalar));
   }
diff --git a/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.h b/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.h
old mode 100644
new mode 100755
index 38cbede26a..c7412fd8b2
--- a/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.h
+++ b/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.h
@@ -29,6 +29,7 @@ namespace Functor {
 /** \class otbCoherencyToMuellerFunctor
  * \brief Evaluate the Mueller matrix from the reciprocal coherency matrix image
  *
+ * \ingroup SARPolarimetry
  */
 template< class TInput, class TOutput>
 class ReciprocalCoherencyToMuellerFunctor
@@ -76,7 +77,7 @@ public:
    ReciprocalCoherencyToMuellerFunctor() {}
 
    /** Destructor */
-   ~ReciprocalCoherencyToMuellerFunctor() {}
+   virtual ~ReciprocalCoherencyToMuellerFunctor() {}
 
 private:
    itkStaticConstMacro(NumberOfComponentsPerPixel, unsigned int, 10);
diff --git a/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.h b/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.h
old mode 100644
new mode 100755
index 760a203ca9..0cdb0ff672
--- a/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.h
+++ b/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.h
@@ -32,11 +32,13 @@ namespace Functor {
 /** \class otbHAlphaFunctor
  * \brief Evaluate the H-Alpha parameters from the reciprocal coherency matrix image
  *
- * *  Output value are:
+ *   Output value are:
  *   channel #0 : entropy
  *   channel #1 : \f$ \alpha \f$ parameter
  *   channel #2 : anisotropy
  *
+ * \ingroup SARPolarimetry
+ *
  */
 template< class TInput, class TOutput>
 class ReciprocalHAlphaFunctor
@@ -71,7 +73,7 @@ public:
   inline TOutput operator()( const TInput & Coherency ) const
     {
     TOutput result;
-    result.SetSize(NumberOfComponentsPerPixel);
+    result.SetSize(m_NumberOfComponentsPerPixel);
  
     CoherencyMatrixType T;
     EigenvalueType eigenValues;
@@ -95,7 +97,7 @@ public:
     RealType entropy;
     RealType alpha;
     RealType anisotropy;
-    const RealType epsilon = 1.0E-4;
+    //const RealType epsilon = 1.0E-4;
 
 
     totalEigenValues = static_cast<RealType>( eigenValues[0] + eigenValues[1] + eigenValues[2]);
@@ -110,7 +112,7 @@ public:
         p[k] = static_cast<RealType>(eigenValues[k]) / totalEigenValues;
       }
 
-    if ( (p[0] < epsilon) || (p[1] < epsilon) || (p[2] < epsilon) )
+    if ( (p[0] < m_Epsilon) || (p[1] < m_Epsilon) || (p[2] < m_Epsilon) )
       {
       entropy =0.0;
       }
@@ -131,14 +133,14 @@ public:
          if (p[k] > 1.) p[k] = 1.;
       }
 
-    val0=sqrt(eigenVectors[0][0]*eigenVectors[0][0] + eigenVectors[0][1]*eigenVectors[0][1]);
-    a0=acos(abs(val0)) * CONST_180_PI;
+    val0=sqrt(static_cast<double>(eigenVectors[0][0]*eigenVectors[0][0]) + static_cast<double>(eigenVectors[0][1]*eigenVectors[0][1]));
+    a0=acos(vcl_abs(val0)) * CONST_180_PI;
 
-    val1=sqrt(eigenVectors[0][2]*eigenVectors[0][2] + eigenVectors[0][3]*eigenVectors[0][3]);
-    a1=acos(abs(val1)) * CONST_180_PI;
+    val1=sqrt(static_cast<double>(eigenVectors[0][2]*eigenVectors[0][2]) + static_cast<double>(eigenVectors[0][3]*eigenVectors[0][3]));
+    a1=acos(vcl_abs(val1)) * CONST_180_PI;
 
-    val2=sqrt(eigenVectors[0][4]*eigenVectors[0][4] + eigenVectors[0][5]*eigenVectors[0][5]);
-    a2=acos(abs(val2)) * CONST_180_PI;
+    val2=sqrt(static_cast<double>(eigenVectors[0][4]*eigenVectors[0][4]) + static_cast<double>(eigenVectors[0][5]*eigenVectors[0][5]));
+    a2=acos(vcl_abs(val2)) * CONST_180_PI;
 
     alpha=p[0]*a0 + p[1]*a1 + p[2]*a2;
 
@@ -156,17 +158,18 @@ public:
 
    unsigned int GetOutputSize()
    {
-     return NumberOfComponentsPerPixel;
+     return m_NumberOfComponentsPerPixel;
    }
 
    /** Constructor */
-   ReciprocalHAlphaFunctor()  {}
+   ReciprocalHAlphaFunctor() : m_Epsilon(1e-4) {}
 
    /** Destructor */
-   ~ReciprocalHAlphaFunctor() {}
+   virtual ~ReciprocalHAlphaFunctor() {}
 
 private:
-   itkStaticConstMacro(NumberOfComponentsPerPixel, unsigned int, 3);
+   itkStaticConstMacro(m_NumberOfComponentsPerPixel, unsigned int, 3);
+   const double m_Epsilon;
 };
 }
 
diff --git a/Code/SARPolarimetry/otbSinclairImageFilter.h b/Code/SARPolarimetry/otbSinclairImageFilter.h
old mode 100644
new mode 100755
index 707f0184bf..6e10c46a37
--- a/Code/SARPolarimetry/otbSinclairImageFilter.h
+++ b/Code/SARPolarimetry/otbSinclairImageFilter.h
@@ -33,6 +33,16 @@ namespace otb
  * the type of the output image.  It is also parameterized by the
  * operation to be applied, using a Functor style.
  *
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCircularCovarianceMatrixFunctor
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 
 template <class TInputImageHH, class TInputImageHV,
diff --git a/Code/SARPolarimetry/otbSinclairImageFilter.txx b/Code/SARPolarimetry/otbSinclairImageFilter.txx
old mode 100644
new mode 100755
diff --git a/Code/SARPolarimetry/otbSinclairToCircularCovarianceMatrixFunctor.h b/Code/SARPolarimetry/otbSinclairToCircularCovarianceMatrixFunctor.h
old mode 100644
new mode 100755
index 194f74e145..5640fc6bff
--- a/Code/SARPolarimetry/otbSinclairToCircularCovarianceMatrixFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToCircularCovarianceMatrixFunctor.h
@@ -41,6 +41,15 @@ namespace Functor
  *   channel #9 : \f$ S_{rr}.S_{rr}^{*} \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
@@ -57,18 +66,18 @@ public:
     TOutput result;
 
     result.SetSize(m_NumberOfComponentsPerPixel);
-    ComplexType jShv = static_cast<ComplexType>(Shv) * vcl_complex<RealType>(0.0, 1.0);
-    ComplexType jSvh = static_cast<ComplexType>(Svh) * vcl_complex<RealType>(0.0, 1.0);
-
-    ComplexType Sll = static_cast<ComplexType>( 0.5 * (-Shh-jShv-jSvh+Svv) );
-    ComplexType Slr = static_cast<ComplexType>( 0.5 * (-Shh+jShv-jSvh+Svv) );
-    ComplexType Srl = static_cast<ComplexType>( 0.5 * (-Shh-jShv+jSvh-Svv) );
-    ComplexType Srr = static_cast<ComplexType>( 0.5 * (-Shh+jShv+jSvh+Svv) );
-
-    ComplexType conjSll = vcl_conj(Sll);
-    ComplexType conjSlr = vcl_conj(Slr);
-    ComplexType conjSrl = vcl_conj(Srl);
-    ComplexType conjSrr = vcl_conj(Srr);
+    const ComplexType jShv = static_cast<ComplexType>(Shv) * vcl_complex<RealType>(0.0, 1.0);
+    const ComplexType jSvh = static_cast<ComplexType>(Svh) * vcl_complex<RealType>(0.0, 1.0);
+
+    const ComplexType Sll = static_cast<ComplexType>( 0.5 * (-Shh-jShv-jSvh+Svv) );
+    const ComplexType Slr = static_cast<ComplexType>( 0.5 * (-Shh+jShv-jSvh+Svv) );
+    const ComplexType Srl = static_cast<ComplexType>( 0.5 * (-Shh-jShv+jSvh-Svv) );
+    const ComplexType Srr = static_cast<ComplexType>( 0.5 * (-Shh+jShv+jSvh+Svv) );
+
+    const ComplexType conjSll = vcl_conj(Sll);
+    const ComplexType conjSlr = vcl_conj(Slr);
+    const ComplexType conjSrl = vcl_conj(Srl);
+    const ComplexType conjSrr = vcl_conj(Srr);
 
     result[0]  = static_cast<OutputValueType>( Sll * conjSll  );
     result[1]  = static_cast<OutputValueType>( Sll * conjSlr  );
diff --git a/Code/SARPolarimetry/otbSinclairToCoherencyFunctor.h b/Code/SARPolarimetry/otbSinclairToCoherencyFunctor.h
old mode 100644
new mode 100755
index ea35f8717e..cfbd6ca5b4
--- a/Code/SARPolarimetry/otbSinclairToCoherencyFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToCoherencyFunctor.h
@@ -41,6 +41,15 @@ namespace Functor
  *   channel #9 : \f$ j(S_{hv}-S_{vh}).(j(S_{hv}-S_{vh}))^{*} \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCircularCovarianceMatrixFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
@@ -58,10 +67,10 @@ public:
 
     result.SetSize(NumberOfComponentsPerPixel);
 
-    ComplexType HHPlusVV = static_cast<ComplexType>(Shh + Svv);
-    ComplexType VVMinusVV = static_cast<ComplexType>(Shh - Svv);
-    ComplexType HVPlusHV     = static_cast<ComplexType>( Shv + Svh);
-    ComplexType jHVMinusHV     = static_cast<ComplexType>( Shv - Svh) * vcl_complex<RealType>(0.0, 1.0);
+    const ComplexType HHPlusVV = static_cast<ComplexType>(Shh + Svv);
+    const ComplexType VVMinusVV = static_cast<ComplexType>(Shh - Svv);
+    const ComplexType HVPlusHV     = static_cast<ComplexType>( Shv + Svh);
+    const ComplexType jHVMinusHV     = static_cast<ComplexType>( Shv - Svh) * vcl_complex<RealType>(0.0, 1.0);
 
     result[0] = static_cast<OutputValueType>( HHPlusVV * vcl_conj(HHPlusVV) );
     result[1] = static_cast<OutputValueType>( HHPlusVV * vcl_conj(VVMinusVV) );
diff --git a/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.h b/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.h
old mode 100644
new mode 100755
index ed1229bb6f..46034a4ffc
--- a/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.h
@@ -41,6 +41,15 @@ namespace Functor
  *   channel #9 : \f$ S_{vv}.S_{vv}^{*} \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCircularCovarianceMatrixFunctor
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
@@ -55,7 +64,7 @@ public:
   {
     TOutput result;
 
-    result.SetSize(NumberOfComponentsPerPixel);
+    result.SetSize(m_NumberOfComponentsPerPixel);
 
     result[0] = static_cast<OutputValueType>( static_cast<ComplexType>(Shh)*vcl_conj(static_cast<ComplexType>(Shh)) );
     result[1] = static_cast<OutputValueType>( static_cast<ComplexType>(Shh)*vcl_conj(static_cast<ComplexType>(Shv)) );
@@ -73,7 +82,7 @@ public:
 
   unsigned int GetNumberOfComponentsPerPixel()
   {
-    return NumberOfComponentsPerPixel;
+    return m_NumberOfComponentsPerPixel;
   }
 
   /** Constructor */
@@ -86,7 +95,7 @@ protected:
 
 
 private:
-    itkStaticConstMacro(NumberOfComponentsPerPixel, unsigned int, 10);
+    itkStaticConstMacro(m_NumberOfComponentsPerPixel, unsigned int, 10);
 
 };
 
diff --git a/Code/SARPolarimetry/otbSinclairToMuellerFunctor.h b/Code/SARPolarimetry/otbSinclairToMuellerFunctor.h
old mode 100644
new mode 100755
index 9bba7f5ac1..275115bb16
--- a/Code/SARPolarimetry/otbSinclairToMuellerFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToMuellerFunctor.h
@@ -29,7 +29,40 @@ namespace Functor
  *  Elements of the Mueller matrix are extract from Antennas for radar and communications
  *  Harold Mott p 503
  *
+ *  Output value are:
+ *   channel #0  : \f$ 0.5 * \mathcal{Re}( T_{xx}.T_{xx}^{*} + T_{xy}.T_{xy}^{*} + T_{yx}.T_{yx}^{*} + T_{yy}.T_{yy}^{*} ) \f$
+ *   channel #1  : \f$ 0.5 * \mathcal{Re}( T_{xx}.T_{xx}^{*} - T_{xy}.T_{xy}^{*} + T_{yx}.T_{yx}^{*} - T_{yy}.T_{yy}^{*} ) \f$
+ *   channel #2  : \f$ \mathcal{Re}( T_{xx}.T_{xy}^{*} + T_{yx}.T_{yy}^{*} ) \f$
+ *   channel #3  : \f$ \mathcal{Im}( T_{xx}.T_{xy}^{*} + T_{yx}.T_{yy}^{*} ) \f$
+ *   channel #4  : \f$ 0.5 * \mathcal{Re}( T_{xx}.T_{xx}^{*} + T_{xy}.T_{xy}^{*} - T_{yx}.T_{yx}^{*} - T_{yy}.T_{yy}^{*} ) \f$
+ *   channel #5  : \f$ 0.5 * \mathcal{Re}( T_{xx}.T_{xx}^{*} - T_{xy}.T_{xy}^{*} - T_{yx}.T_{yx}^{*} + T_{yy}.T_{yy}^{*} ) \f$
+ *   channel #6  : \f$ \mathcal{Re}( T_{xx}.T_{xy}^{*} - T_{yx}.T_{yy}^{*} ) \f$
+ *   channel #7  : \f$ \mathcal{Im}( T_{xx}.T_{xy}^{*} - T_{yx}.T_{yy}^{*} ) \f$
+ *   channel #8  : \f$ \mathcal{Re}( T_{xx}.T_{yx}^{*} + T_{xy}.T_{yy}^{*} ) \f$
+ *   channel #9  : \f$ \mathcal{Im}( T_{xx}.T_{yx}^{*} - T_{xy}.T_{yy}^{*} ) \f$
+ *   channel #10 : \f$ \mathcal{Re}( T_{xx}.T_{yy}^{*} + T_{xy}.T_{yx}^{*} ) \f$
+ *   channel #11 : \f$ \mathcal{Im}( T_{xx}.T_{yy}^{*} - T_{xy}.T_{yx}^{*} ) \f$
+ *   channel #12 : \f$ \mathcal{Re}( T_{xx}.T_{yx}^{*} + T_{xy}.T_{yy}^{*} ) \f$
+ *   channel #13 : \f$ \mathcal{Im}( T_{xx}.T_{yx}^{*} - T_{xy}.T_{yy}^{*} ) \f$
+ *   channel #14 : \f$ \mathcal{Re}( T_{xx}.T_{yy}^{*} + T_{xy}.T_{yx}^{*} ) \f$
+ *   channel #15 : \f$ \mathcal{Im}( T_{xx}.T_{yy}^{*} - T_{xy}.T_{yx}^{*} ) \f$
+ *
+ * With :
+ * \f$ T_{xx} = -S_{hh} \f$ 
+ * \f$ T_{xy} = -S_{hv} \f$
+ * \f$ T_{yx} = -S_{vh} \f$
+ * \f$ T_{yy} = -S_{vv} \f$
+ *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCircularCovarianceMatrixFunctor
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
@@ -48,15 +81,15 @@ public:
 
     result.SetSize(m_NumberOfComponentsPerPixel);
 
-    ComplexType Txx = static_cast<ComplexType>(-Shh);
-    ComplexType Txy = static_cast<ComplexType>(-Shv);
-    ComplexType Tyx = static_cast<ComplexType>(Svh);
-    ComplexType Tyy = static_cast<ComplexType>(Svv);
+    const ComplexType Txx = static_cast<ComplexType>(-Shh);
+    const ComplexType Txy = static_cast<ComplexType>(-Shv);
+    const ComplexType Tyx = static_cast<ComplexType>(Svh);
+    const ComplexType Tyy = static_cast<ComplexType>(Svv);
 
-    ComplexType conjTxx = vcl_conj(static_cast<ComplexType>(-Shh));
-    ComplexType conjTxy = vcl_conj(static_cast<ComplexType>(-Shv));
-    ComplexType conjTyx = vcl_conj(static_cast<ComplexType>(Svh));
-    ComplexType conjTyy = vcl_conj(static_cast<ComplexType>(Svv));
+    const ComplexType conjTxx = vcl_conj(static_cast<ComplexType>(-Shh));
+    const ComplexType conjTxy = vcl_conj(static_cast<ComplexType>(-Shv));
+    const ComplexType conjTyx = vcl_conj(static_cast<ComplexType>(Svh));
+    const ComplexType conjTyy = vcl_conj(static_cast<ComplexType>(Svv));
 
     result[0]  = static_cast<OutputValueType>( 0.5 * (Txx*conjTxx + Txy*conjTxy + Tyx*conjTyx + Tyy*conjTyy).real()  );
     result[1]  = static_cast<OutputValueType>( 0.5 * (Txx*conjTxx - Txy*conjTxy + Tyx*conjTyx - Tyy*conjTyy).real()  );
@@ -70,8 +103,10 @@ public:
     result[9]  = static_cast<OutputValueType>( (Txx*conjTyx - Txy*conjTyy).real()  );
     result[10] = static_cast<OutputValueType>( (Txx*conjTyy + Txy*conjTyx).real()  );
     result[11] = static_cast<OutputValueType>( (Txx*conjTyy - Txy*conjTyx).imag()  );
+
     result[12] = static_cast<OutputValueType>( (conjTxx*Tyx + conjTxy*Tyy).imag()  );
     result[13] = static_cast<OutputValueType>( (conjTxx*Tyx - conjTxy*Tyy).imag()  );
+
     result[14] = static_cast<OutputValueType>( (conjTxx*Tyy + conjTxy*Tyx).imag()  );
     result[15] = static_cast<OutputValueType>( (Txx*conjTyy - Txy*conjTyx).real()  );
 
diff --git a/Code/SARPolarimetry/otbSinclairToReciprocalCircularCovarianceMatrixFunctor.h b/Code/SARPolarimetry/otbSinclairToReciprocalCircularCovarianceMatrixFunctor.h
old mode 100644
new mode 100755
index 6221350539..8e55716a96
--- a/Code/SARPolarimetry/otbSinclairToReciprocalCircularCovarianceMatrixFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToReciprocalCircularCovarianceMatrixFunctor.h
@@ -37,6 +37,15 @@ namespace Functor
  *   channel #5 : \f$ S_{rr}.S_{rr}^{*} \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
@@ -53,15 +62,15 @@ public:
     TOutput result;
 
     result.SetSize(m_NumberOfComponentsPerPixel);
-    ComplexType j2Shv = static_cast<ComplexType>(Shv) * vcl_complex<RealType>(0.0, 2.0);
+    const ComplexType j2Shv = static_cast<ComplexType>(Shv) * vcl_complex<RealType>(0.0, 2.0);
 
-    ComplexType Sll = static_cast<ComplexType>( 0.5 * (-Shh-j2Shv+Svv) );
-    ComplexType Slr = static_cast<ComplexType>( 0.5 * (-Shh+Svv) );
-    ComplexType Srr = vcl_conj(Sll);
+    const ComplexType Sll = static_cast<ComplexType>( 0.5 * (-Shh-j2Shv+Svv) );
+    const ComplexType Slr = static_cast<ComplexType>( 0.5 * (-Shh+Svv) );
+    const ComplexType Srr = vcl_conj(Sll);
 
-    ComplexType conjSll = vcl_conj(Sll);
-    ComplexType conjSlr = vcl_conj(Slr);
-    ComplexType conjSrr = vcl_conj(Srr);
+    const ComplexType conjSll = vcl_conj(Sll);
+    const ComplexType conjSlr = vcl_conj(Slr);
+    const ComplexType conjSrr = vcl_conj(Srr);
 
     result[0]  = static_cast<OutputValueType>( Sll * conjSll  );
     result[1]  = static_cast<OutputValueType>( Sll * conjSlr  );
diff --git a/Code/SARPolarimetry/otbSinclairToReciprocalCoherencyFunctor.h b/Code/SARPolarimetry/otbSinclairToReciprocalCoherencyFunctor.h
old mode 100644
new mode 100755
index c668031a15..bee4f07fdf
--- a/Code/SARPolarimetry/otbSinclairToReciprocalCoherencyFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToReciprocalCoherencyFunctor.h
@@ -37,6 +37,17 @@ namespace Functor
  *   channel #5 : \f$ (2*S_{hv}).(2*S_{hv})^{*} \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ * 
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCircularCovarianceMatrixFunctor
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCovarianceFunctor
+
+ *  \sa SinclairToReciprocalCovarianceFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
@@ -53,9 +64,9 @@ public:
 
     result.SetSize(NumberOfComponentsPerPixel);
 
-    ComplexType HHPlusVV = static_cast<ComplexType>(Shh + Svv);
-    ComplexType VVMinusVV = static_cast<ComplexType>(Shh - Svv);
-    ComplexType twoHV     = static_cast<ComplexType>( 2.0 * Shv);
+    const ComplexType HHPlusVV = static_cast<ComplexType>(Shh + Svv);
+    const ComplexType VVMinusVV = static_cast<ComplexType>(Shh - Svv);
+    const ComplexType twoHV     = static_cast<ComplexType>( 2.0 * Shv);
 
     result[0] = static_cast<OutputValueType>( HHPlusVV * vcl_conj(HHPlusVV) );
     result[1] = static_cast<OutputValueType>( HHPlusVV * vcl_conj(VVMinusVV) );
diff --git a/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.h b/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.h
old mode 100644
new mode 100755
index 5b8d8ebd7a..3e9a1e9db6
--- a/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.h
+++ b/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.h
@@ -37,6 +37,15 @@ namespace Functor
  *   channel #5 : \f$ S_{vv}.S_{vv}^{*} \f$
  *
  *  \ingroup Functor
+ *  \ingroup SARPolarimetry
+ *
+ *  \sa SinclairImageFilter
+ *  \sa SinclairToCircularCovarianceMatrixFunctor
+ *  \sa SinclairToCoherencyFunctor
+ *  \sa SinclairToCovarianceFunctor
+ *  \sa SinclairToMuellerFunctor
+ *  \sa SinclairToReciprocalCircularCovarianceMatrixFunctor
+ *  \sa SinclairToReciprocalCoherencyFunctor
  */
 template <class TInput1, class TInput2, class TInput3,
           class TInput4, class TOutput>
diff --git a/Testing/Code/SARPolarimetry/CMakeLists.txt b/Testing/Code/SARPolarimetry/CMakeLists.txt
old mode 100644
new mode 100755
index 80ac1101c4..152de721da
--- a/Testing/Code/SARPolarimetry/CMakeLists.txt
+++ b/Testing/Code/SARPolarimetry/CMakeLists.txt
@@ -266,7 +266,7 @@ ADD_TEST(saTuReciprocalHAlphaImageFilterNew ${SARPOLARIMETRY_TESTS1}
 ADD_TEST(saTvReciprocalHAlphaImageFilter ${SARPOLARIMETRY_TESTS1}
   --compare-image ${EPSILON_12}   ${BASELINE}/saTvReciprocalHAlphaImageFilter.tif
                     ${TEMP}/saTvReciprocalHAlphaImageFilter.tif
-        otbHAlphaImageFilter
+        otbReciprocalHAlphaImageFilter
         ${INPUTDATA}/RSAT_imagery_HH.tif
         ${INPUTDATA}/RSAT_imagery_HV.tif
         ${INPUTDATA}/RSAT_imagery_HV.tif
@@ -337,6 +337,10 @@ ADD_TEST(saTvMuellerToMLCImageFilter ${SARPOLARIMETRY_TESTS1}
         ${INPUTDATA}/RSAT_imagery_VV.tif
         ${TEMP}/saTvMuellerToMLCImageFilter.tif
 	)
+# Hermitian eigen analysis class
+ADD_TEST(saTvHermitianEigenAnalysisTest ${SARPOLARIMETRY_TESTS1}
+		otbHermitianEigenAnalysisTest
+)
 
 # A enrichir
 SET(SARPOLARIMETRY_SRCS1
@@ -350,6 +354,7 @@ otbMultiChannelsPolarimetricSynthesisFilterNew.cxx
 otbMultiChannelsPolarimetricSynthesisFilter.cxx
 otbVectorMultiChannelsPolarimetricSynthesisFilter.cxx
 otbSinclairToCovarianceFunctor.cxx
+otbSinclairToReciprocalCovarianceFunctor.cxx
 otbSinclairImageFilter.cxx
 otbMLCToCoherencyImageFilterNew.cxx
 otbMLCToCoherencyImageFilter.cxx
@@ -367,6 +372,7 @@ otbMuellerToPolarisationDegreeAndPowerImageFilterNew.cxx
 otbMuellerToPolarisationDegreeAndPowerImageFilter.cxx
 otbMuellerToMLCImageFilterNew.cxx
 otbMuellerToMLCImageFilter.cxx
+otbHermitianEigenAnalysisTest.cxx
 )
 
 OTB_ADD_EXECUTABLE(otbSARPolarimetryTests1 "${SARPOLARIMETRY_SRCS1}" "OTBSARPolarimetry;OTBIO;OTBTesting")
diff --git a/Testing/Code/SARPolarimetry/otbHHnHVPolarimetricSynthesisFilter.cxx b/Testing/Code/SARPolarimetry/otbHHnHVPolarimetricSynthesisFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbHHnHVnVVPolarimetricSynthesisFilter.cxx b/Testing/Code/SARPolarimetry/otbHHnHVnVVPolarimetricSynthesisFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbHermitianEigenAnalysisTest.cxx b/Testing/Code/SARPolarimetry/otbHermitianEigenAnalysisTest.cxx
new file mode 100755
index 0000000000..3a111558ca
--- /dev/null
+++ b/Testing/Code/SARPolarimetry/otbHermitianEigenAnalysisTest.cxx
@@ -0,0 +1,40 @@
+/*=========================================================================
+
+  Program:   ORFEO Toolbox
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
+
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#if defined(_MSC_VER)
+#pragma warning ( disable : 4786 )
+#endif
+
+#include "itkExceptionObject.h"
+#include <iostream>
+
+#include "otbImage.h"
+#include "otbVectorImage.h"
+#include "otbHermitianEigenAnalysis.h"
+
+int otbHermitianEigenAnalysisTest(int argc, char * argv[])
+{
+  typedef vnl_matrix<double> MatrixType;
+  typedef std::vector<double> VectorType;
+
+
+  typedef otb::HermitianEigenAnalysis<MatrixType, VectorType> FilterType;
+
+  FilterType filter;
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.cxx b/Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilterNew.cxx
old mode 100644
new mode 100755
index c79e3ddd94..78669a68b0
--- a/Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMLCToCircularCoherencyDegreeImageFilterNew.cxx
@@ -37,7 +37,5 @@ int otbMLCToCircularCoherencyDegreeImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.cxx b/Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilterNew.cxx
old mode 100644
new mode 100755
index 496e6b2359..70cd40313a
--- a/Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMLCToCoherencyDegreeImageFilterNew.cxx
@@ -37,7 +37,5 @@ int otbMLCToCoherencyDegreeImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.cxx b/Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilterNew.cxx
old mode 100644
new mode 100755
index 9621261051..d07c6da4a8
--- a/Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMLCToCoherencyImageFilterNew.cxx
@@ -37,7 +37,5 @@ int otbMLCToCoherencyImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.cxx b/Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilterNew.cxx
old mode 100644
new mode 100755
index fa5c002d25..1b482a6bdf
--- a/Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMuellerToCircularPolarisationImageFilterNew.cxx
@@ -36,7 +36,5 @@ int otbMuellerToCircularPolarisationImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilter.cxx b/Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilterNew.cxx
old mode 100644
new mode 100755
index da3ca7f311..d533f1ed54
--- a/Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMuellerToMLCImageFilterNew.cxx
@@ -38,7 +38,5 @@ int otbMuellerToMLCImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.cxx b/Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilterNew.cxx
old mode 100644
new mode 100755
index 18d94e9028..f084149bd8
--- a/Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMuellerToPolarisationDegreeAndPowerImageFilterNew.cxx
@@ -36,7 +36,5 @@ int otbMuellerToPolarisationDegreeAndPowerImageFilterNew(int argc, char * argv[]
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.cxx b/Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilterNew.cxx b/Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilterNew.cxx
old mode 100644
new mode 100755
index 95e195e45d..16ee6ce607
--- a/Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbMultiChannelsPolarimetricSynthesisFilterNew.cxx
@@ -39,7 +39,5 @@ int otbMultiChannelsPolarimetricSynthesisFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.cxx b/Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilterNew.cxx b/Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilterNew.cxx
old mode 100644
new mode 100755
index 8db9eb8bc0..718e186083
--- a/Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbPolarimetricSynthesisFilterNew.cxx
@@ -40,7 +40,5 @@ int otbPolarimetricSynthesisFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.cxx b/Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilterNew.cxx
old mode 100644
new mode 100755
index 7dbcfcc1a8..47bef8d8d9
--- a/Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbReciprocalCoherencyToMuellerImageFilterNew.cxx
@@ -36,7 +36,5 @@ int otbReciprocalCoherencyToMuellerImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.cxx b/Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilterNew.cxx b/Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilterNew.cxx
old mode 100644
new mode 100755
index 4cb17b6f32..4f1e94be9a
--- a/Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilterNew.cxx
+++ b/Testing/Code/SARPolarimetry/otbReciprocalHAlphaImageFilterNew.cxx
@@ -36,7 +36,5 @@ int otbReciprocalHAlphaImageFilterNew(int argc, char * argv[])
 
   FilterType::Pointer filter = FilterType::New();
 
-  std::cout << filter << std::endl;
-
   return EXIT_SUCCESS;
 }
diff --git a/Testing/Code/SARPolarimetry/otbSARPolarimetryTests1.cxx b/Testing/Code/SARPolarimetry/otbSARPolarimetryTests1.cxx
old mode 100644
new mode 100755
index 7dde2e00ee..95724e8111
--- a/Testing/Code/SARPolarimetry/otbSARPolarimetryTests1.cxx
+++ b/Testing/Code/SARPolarimetry/otbSARPolarimetryTests1.cxx
@@ -35,6 +35,7 @@ void RegisterTests()
   REGISTER_TEST(otbMultiChannelsPolarimetricSynthesisFilter);
   REGISTER_TEST(otbVectorMultiChannelsPolarimetricSynthesisFilter);
   REGISTER_TEST(otbSinclairToReciprocalCovarianceFunctor);
+  REGISTER_TEST(otbSinclairToCovarianceFunctor);
   REGISTER_TEST(otbSinclairImageFilter);
   REGISTER_TEST(otbMLCToCoherencyImageFilterNew);
   REGISTER_TEST(otbMLCToCoherencyImageFilter);
@@ -52,4 +53,5 @@ void RegisterTests()
   REGISTER_TEST(otbMuellerToPolarisationDegreeAndPowerImageFilter);
   REGISTER_TEST(otbMuellerToMLCImageFilterNew);
   REGISTER_TEST(otbMuellerToMLCImageFilter);
+  REGISTER_TEST(otbHermitianEigenAnalysisTest);
 }
diff --git a/Testing/Code/SARPolarimetry/otbSinclairImageFilter.cxx b/Testing/Code/SARPolarimetry/otbSinclairImageFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.cxx b/Testing/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.cxx
old mode 100644
new mode 100755
index 830fc9aecc..db4b784403
--- a/Testing/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.cxx
+++ b/Testing/Code/SARPolarimetry/otbSinclairToCovarianceFunctor.cxx
@@ -17,27 +17,31 @@
 =========================================================================*/
 #include "itkExceptionObject.h"
 
-#include "otbSinclairToReciprocalCovarianceFunctor.h"
+#include "otbSinclairToCovarianceFunctor.h"
 #include "itkVariableLengthVector.h"
 
-int otbSinclairToReciprocalCovarianceFunctor(int argc, char * argv[])
+int otbSinclairToCovarianceFunctor(int argc, char * argv[])
 {
   typedef std::complex<double>                   ScalarType;
   typedef itk::VariableLengthVector<ScalarType>  OutputType;
 
-  typedef otb::Functor::SinclairToReciprocalCovarianceFunctor<ScalarType, ScalarType,
+  typedef otb::Functor::SinclairToCovarianceFunctor<ScalarType, ScalarType,
       ScalarType, ScalarType, OutputType >         FunctorType;
 
-  OutputType  result(6);
+  OutputType  result(10);
   FunctorType funct;
   OutputType outputFunct;
 
   result[0] = 1.0;
   result[1] = 0.0;
-  result[2] = 1.0;
-  result[3] = 0.0;
+  result[2] = 0.0;
+  result[3] = 1.0;
   result[4] = 0.0;
-  result[5] = 1.0;
+  result[5] = 0.0;
+  result[6] = 0.0;
+  result[7] = 0.0;
+  result[8] = 0.0;
+  result[9] = 1.0;
 
   outputFunct = funct.operator ()( 1.0, 0.0, 0.0, 1.0);
 
@@ -46,7 +50,11 @@ int otbSinclairToReciprocalCovarianceFunctor(int argc, char * argv[])
       vcl_abs(result[2]-outputFunct[2]) > 1e-10 ||
       vcl_abs(result[3]-outputFunct[3]) > 1e-10 ||
       vcl_abs(result[4]-outputFunct[4]) > 1e-10 ||
-      vcl_abs(result[5]-outputFunct[5]) > 1e-10)
+      vcl_abs(result[5]-outputFunct[5]) > 1e-10 ||
+      vcl_abs(result[6]-outputFunct[6]) > 1e-10 ||
+      vcl_abs(result[7]-outputFunct[7]) > 1e-10 ||
+      vcl_abs(result[8]-outputFunct[8]) > 1e-10 ||
+      vcl_abs(result[9]-outputFunct[9]) > 1e-10)
   {
     return EXIT_FAILURE;
   }
diff --git a/Testing/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.cxx b/Testing/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.cxx
new file mode 100755
index 0000000000..830fc9aecc
--- /dev/null
+++ b/Testing/Code/SARPolarimetry/otbSinclairToReciprocalCovarianceFunctor.cxx
@@ -0,0 +1,55 @@
+/*=========================================================================
+
+  Program:   ORFEO Toolbox
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
+
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#include "itkExceptionObject.h"
+
+#include "otbSinclairToReciprocalCovarianceFunctor.h"
+#include "itkVariableLengthVector.h"
+
+int otbSinclairToReciprocalCovarianceFunctor(int argc, char * argv[])
+{
+  typedef std::complex<double>                   ScalarType;
+  typedef itk::VariableLengthVector<ScalarType>  OutputType;
+
+  typedef otb::Functor::SinclairToReciprocalCovarianceFunctor<ScalarType, ScalarType,
+      ScalarType, ScalarType, OutputType >         FunctorType;
+
+  OutputType  result(6);
+  FunctorType funct;
+  OutputType outputFunct;
+
+  result[0] = 1.0;
+  result[1] = 0.0;
+  result[2] = 1.0;
+  result[3] = 0.0;
+  result[4] = 0.0;
+  result[5] = 1.0;
+
+  outputFunct = funct.operator ()( 1.0, 0.0, 0.0, 1.0);
+
+  if( vcl_abs(result[0]-outputFunct[0]) > 1e-10 ||
+      vcl_abs(result[1]-outputFunct[1]) > 1e-10 ||
+      vcl_abs(result[2]-outputFunct[2]) > 1e-10 ||
+      vcl_abs(result[3]-outputFunct[3]) > 1e-10 ||
+      vcl_abs(result[4]-outputFunct[4]) > 1e-10 ||
+      vcl_abs(result[5]-outputFunct[5]) > 1e-10)
+  {
+    return EXIT_FAILURE;
+  }
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/SARPolarimetry/otbVHnVVPolarimetricSynthesisFilter.cxx b/Testing/Code/SARPolarimetry/otbVHnVVPolarimetricSynthesisFilter.cxx
old mode 100644
new mode 100755
diff --git a/Testing/Code/SARPolarimetry/otbVectorMultiChannelsPolarimetricSynthesisFilter.cxx b/Testing/Code/SARPolarimetry/otbVectorMultiChannelsPolarimetricSynthesisFilter.cxx
old mode 100644
new mode 100755
-- 
GitLab