From 94e710eeca13454493eac56596b632804244a9bc Mon Sep 17 00:00:00 2001
From: Christophe Palmann <christophe.palmann@c-s.fr>
Date: Tue, 29 Sep 2015 15:51:34 +0200
Subject: [PATCH] TEST:more suitable test for haa decom

---
 .../Filtering/Polarimetry/test/CMakeLists.txt |  5 +-
 .../test/otbReciprocalHAlphaImageFilter.cxx   | 81 ++++++++++++++-----
 2 files changed, 67 insertions(+), 19 deletions(-)

diff --git a/Modules/Filtering/Polarimetry/test/CMakeLists.txt b/Modules/Filtering/Polarimetry/test/CMakeLists.txt
index c382540397..8be083e99a 100644
--- a/Modules/Filtering/Polarimetry/test/CMakeLists.txt
+++ b/Modules/Filtering/Polarimetry/test/CMakeLists.txt
@@ -63,7 +63,10 @@ otb_add_test(NAME saTvReciprocalHAlphaImageFilter COMMAND otbPolarimetryTestDriv
   --compare-image ${EPSILON_12}   ${BASELINE}/saTvReciprocalHAlphaImageFilter.tif
   ${TEMP}/saTvReciprocalHAlphaImageFilter.tif
   otbReciprocalHAlphaImageFilter
-  ${BASELINE}/saTvSinclairImageFilter_SinclairToReciprocalCoherency.tif
+  ${INPUTDATA}/RSAT_imagery_HH.tif
+  ${INPUTDATA}/RSAT_imagery_HV.tif
+  ${INPUTDATA}/RSAT_imagery_VV.tif
+  5
   ${TEMP}/saTvReciprocalHAlphaImageFilter.tif
   )
 
diff --git a/Modules/Filtering/Polarimetry/test/otbReciprocalHAlphaImageFilter.cxx b/Modules/Filtering/Polarimetry/test/otbReciprocalHAlphaImageFilter.cxx
index 702a2dab4d..8855b9d3c0 100644
--- a/Modules/Filtering/Polarimetry/test/otbReciprocalHAlphaImageFilter.cxx
+++ b/Modules/Filtering/Polarimetry/test/otbReciprocalHAlphaImageFilter.cxx
@@ -24,35 +24,80 @@
 #include "otbImageFileReader.h"
 #include "otbImageFileWriter.h"
 #include "otbReciprocalHAlphaImageFilter.h"
+#include "itkMeanImageFilter.h"
+#include "otbPerBandVectorImageFilter.h"
+#include "otbSinclairReciprocalImageFilter.h"
+#include "otbSinclairToReciprocalCoherencyMatrixFunctor.h"
+
 
 int otbReciprocalHAlphaImageFilter(int itkNotUsed(argc), char * argv[])
 {
-  const char * inputFilename  = argv[1];
-  const char * outputFilename = argv[2];
-
-  typedef double                   PixelType;
-  typedef std::complex<PixelType>  InputPixelType;
-  const unsigned int Dimension = 2;
+  const char * inputFilenameHH = argv[1];
+  const char * inputFilenameHV = argv[2];
+  const char * inputFilenameVV = argv[3];
+  int size = atoi(argv[4]);
+  const char * outputFilename = argv[5];
 
 
-  typedef otb::VectorImage<InputPixelType, Dimension>  ImageType;
-  typedef otb::VectorImage<PixelType, Dimension>       RealImageType;
-
-  typedef otb::ReciprocalHAlphaImageFilter<ImageType, RealImageType> FilterType;
+  typedef std::complex<double>  ComplexPixelType;
+  const unsigned int Dimension = 2;
 
-  typedef otb::ImageFileReader<ImageType>  ReaderType;
-  typedef otb::ImageFileWriter<RealImageType> WriterType;
 
-  ReaderType::Pointer reader = ReaderType::New();
+  typedef otb::Image<ComplexPixelType, Dimension>  	   ComplexImageType;
+  typedef otb::VectorImage<ComplexPixelType, Dimension>  ComplexVectorImageType;
+  typedef otb::VectorImage<double, Dimension>          RealVectorImageType;
+
+
+
+  typedef otb::ImageFileReader<ComplexImageType>  ReaderType;
+  typedef otb::ImageFileWriter<RealVectorImageType> WriterType;
+  
+  
+  typedef otb::SinclairReciprocalImageFilter<ComplexImageType, ComplexImageType, ComplexImageType, ComplexVectorImageType, 
+  otb::Functor::SinclairToReciprocalCovarianceMatrixFunctor<ComplexImageType::PixelType,
+                                    ComplexImageType::PixelType,
+                                    ComplexImageType::PixelType,
+                                    ComplexVectorImageType::PixelType> > SinclaireToC3FilterType;
+  
+  
+  typedef itk::MeanImageFilter<ComplexImageType, ComplexImageType>         MeanFilterType;
+  typedef otb::PerBandVectorImageFilter<ComplexVectorImageType, ComplexVectorImageType, MeanFilterType> PerBandMeanFilterType;
+  
+  
+  typedef otb::ReciprocalHAlphaImageFilter<ComplexVectorImageType, RealVectorImageType> HAlphaFilterType;
+  
+  
+
+  ReaderType::Pointer readerHH = ReaderType::New();
+  ReaderType::Pointer readerHV = ReaderType::New();
+  ReaderType::Pointer readerVV = ReaderType::New();
+  
   WriterType::Pointer writer = WriterType::New();
 
-  reader->SetFileName(inputFilename);
-
-  FilterType::Pointer filter = FilterType::New();
-  filter->SetInput(reader->GetOutput());
+  SinclaireToC3FilterType::Pointer sinclairtoc3 = SinclaireToC3FilterType::New();
+  PerBandMeanFilterType::Pointer perBand = PerBandMeanFilterType::New();
+  HAlphaFilterType::Pointer haafilter = HAlphaFilterType::New();
+        
+  
+  MeanFilterType::InputSizeType radius;
+  radius.Fill( size );
+  perBand->GetFilter()->SetRadius(radius);
+ 
+ 
+  readerHH->SetFileName(inputFilenameHH);
+  readerHV->SetFileName(inputFilenameHV);
+  readerVV->SetFileName(inputFilenameVV);
+  
+  sinclairtoc3->SetInputHH(readerHH->GetOutput());
+  sinclairtoc3->SetInputHV_VH(readerHV->GetOutput());
+  sinclairtoc3->SetInputVV(readerVV->GetOutput());
+ 
+  perBand->SetInput(sinclairtoc3->GetOutput());
+  
+  haafilter->SetInput(perBand->GetOutput());
 
   writer->SetFileName(outputFilename);
-  writer->SetInput(filter->GetOutput());
+  writer->SetInput(haafilter->GetOutput());
   writer->Update();
 
   return EXIT_SUCCESS;
-- 
GitLab