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