diff --git a/Modules/Filtering/Polarimetry/test/CMakeLists.txt b/Modules/Filtering/Polarimetry/test/CMakeLists.txt index c3825403977252f806d4e27ec4fa085eefcdbb5e..8be083e99ad91fd63dcbbc8508137c62afb64f3c 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 702a2dab4d74aab3d005d39f3f60996cf48e20d5..8855b9d3c022c750079f67820a67df0bbfb5002e 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;