Commit df1a8a23 authored by Cédric Traizet's avatar Cédric Traizet

Merge branch 'develop' into update-copyright-date

parents 116fe4e6 6758821e
......@@ -114,4 +114,10 @@ set(CTEST_CUSTOM_WARNING_EXCEPTION
".*include.mpValue.h.*[Ww]arning.*\\[-Wc\\+\\+11-extensions\\]"
".*itksys.SharedForward.h.*warning.*itksys_shared_forward_to_real.*"
".*include.mpi_portable_platform.h.*warning.*invalid.suffix.on.literal.*"
# Silent latex warnings in ctest
".*LaTeX Warning:.*"
".*Package tabulary Warning:.*"
".*Package rerunfilecheck Warning:.*"
# Silent warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas] from GCC 4.9
".*warning: unknown option after \\‘\\#pragma GCC diagnostic\\’ kind \\[-Wpragmas\\]"
)
set(CTEST_PROJECT_NAME "Documentation")
set(CTEST_NIGHTLY_START_TIME "20:00:00 CEST")
set(CTEST_DROP_METHOD "https")
set(CTEST_DROP_SITE "dash.orfeo-toolbox.org")
set(CTEST_DROP_LOCATION "/submit.php?project=Documentation")
set(CTEST_DROP_SITE_CDASH TRUE)
......@@ -37,9 +37,6 @@ def application_documentation_warnings(app):
for key in app.GetParametersKeys():
parameter_warnings(warn, app, key)
if "ram" in keys and not keys[-3] == "ram":
warn("'ram' parameter is not third from last")
if "inxml" in keys and not keys[-2] == "inxml":
warn("'inxml' parameter is not second from last parameter")
......
......@@ -24,7 +24,14 @@
/*===========================================================================*/
#define BOOST_TEST_MODULE "otb::org::DataSource creation unit testing"
#define BOOST_TEST_DYN_LINK
#if defined(__GNUC__) || defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
#include <boost/test/unit_test.hpp>
#pragma GCC diagnostic pop
#else
#include <boost/test/unit_test.hpp>
#endif
#include <boost/foreach.hpp>
#include "otb_boost_string_header.h"
#include "itksys/SystemTools.hxx"
......
......@@ -96,25 +96,26 @@ private:
SetParameterDescription("ip","This group allows setting parameters for classification map regularization by Majority Voting.");
AddParameter(ParameterType_Int, "ip.radius", "Structuring element radius (in pixels)");
SetParameterDescription("ip.radius", "The radius of the ball shaped structuring element (expressed in pixels). By default, 'ip.radius = 1 pixel'.");
SetParameterDescription("ip.radius", "The radius of the ball shaped structuring element (in pixels).");
SetDefaultParameterInt("ip.radius", 1.0);
AddParameter(ParameterType_Bool, "ip.suvbool", "Multiple majority: Undecided(X)/Original");
SetParameterDescription("ip.suvbool", "Pixels with more than 1 majority class are marked as Undecided if this parameter is checked (true), or keep their Original labels otherwise (false). Please note that the Undecided value must be different from existing labels in the input labeled image. By default, 'ip.suvbool = false'.");
AddParameter(ParameterType_Bool, "ip.suvbool", "Set tie pixels to undecided");
SetParameterDescription("ip.suvbool",
"If true, set pixels with more than one majority class to an undecided value. If false, keep their original labels.");
AddParameter(ParameterType_Int, "ip.nodatalabel", "Label for the NoData class");
SetParameterDescription("ip.nodatalabel", "Label for the NoData class. Such input pixels keep their NoData label in the output image. By default, 'ip.nodatalabel = 0'.");
SetParameterDescription("ip.nodatalabel", "Label for the NoData class. Such input pixels keep their NoData label in the output image.");
SetDefaultParameterInt("ip.nodatalabel", 0.0);
AddParameter(ParameterType_Int, "ip.undecidedlabel", "Label for the Undecided class");
SetParameterDescription("ip.undecidedlabel", "Label for the Undecided class. By default, 'ip.undecidedlabel = 0'.");
SetParameterDescription("ip.undecidedlabel", "Label for the Undecided class.");
SetDefaultParameterInt("ip.undecidedlabel", 0.0);
AddParameter(ParameterType_Bool, "ip.onlyisolatedpixels", "Process isolated pixels only");
SetParameterDescription("ip.onlyisolatedpixels", "Only pixels whose label is unique in the neighbordhood will be processed. By default, 'ip.onlyisolatedpixels = false'.");
SetParameterDescription("ip.onlyisolatedpixels", "Only pixels whose label is unique in the neighbordhood will be processed.");
AddParameter(ParameterType_Int, "ip.isolatedthreshold", "Threshold for isolated pixels");
SetParameterDescription("ip.isolatedthreshold", "Maximum number of neighbours with the same label as the center pixel to consider that it is an isolated pixel. By default, 'ip.isolatedthreshold = 1'.");
SetParameterDescription("ip.isolatedthreshold", "Maximum number of neighbours with the same label as the center pixel to consider that it is an isolated pixel.");
SetDefaultParameterInt("ip.isolatedthreshold", 1);
......
......@@ -53,7 +53,7 @@ void TrainVectorBase::DoInit()
MandatoryOff( "layer" );
SetDefaultParameterInt( "layer", 0 );
AddParameter(ParameterType_ListView, "feat", "Field names for training features.");
AddParameter(ParameterType_ListView, "feat", "Field names for training features");
SetParameterDescription("feat",
"List of field names in the input vector data to be used as features for training.");
......
......@@ -328,11 +328,11 @@ private:
fftShiftFilter->Update();
toComplexFilter->SetVariadicInputs( fftShiftFilter->GetOutput() );
toComplexFilter->SetInputs( fftShiftFilter->GetOutput() );
}
else
{
toComplexFilter->SetVariadicInputs( inImage );
toComplexFilter->SetInputs( inImage );
}
toComplexFilter->Update();
......
......@@ -27,3 +27,8 @@ otb_create_application(
NAME VertexComponentAnalysis
SOURCES otbVertexComponentAnalysis.cxx
LINK_LIBRARIES ${${otb-module}_LIBRARIES})
otb_create_application(
NAME EndmemberNumberEstimation
SOURCES otbEndmemberNumberEstimation.cxx
LINK_LIBRARIES ${${otb-module}_LIBRARIES})
/*
* Copyright (C) 2005-2017 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 "otbWrapperApplication.h"
#include "otbWrapperApplicationFactory.h"
#include "otbStreamingStatisticsVectorImageFilter.h"
#include "otbEigenvalueLikelihoodMaximisation.h"
#include "otbVirtualDimensionality.h"
namespace otb
{
namespace Wrapper
{
class EndmemberNumberEstimation : public Application
{
public:
/** Standard class typedefs. */
typedef EndmemberNumberEstimation Self;
typedef Application Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Standard macro */
itkNewMacro(Self);
itkTypeMacro(EndmemberNumberEstimation, otb::Application);
typedef otb::StreamingStatisticsVectorImageFilter<FloatVectorImageType, float> StreamingStatisticsVectorImageFilterType;
typedef otb::VirtualDimensionality<float> VirtualDimensionalityType;
typedef otb::EigenvalueLikelihoodMaximisation<float> EigenvalueLikelihoodMaximisationType;
private:
void DoInit() override
{
SetName("EndmemberNumberEstimation");
SetDescription("Estimate the number of endmembers in a hyperspectral image");
// Documentation
SetDocName("Endmember Number Estimation");
SetDocLongDescription("Estimate the number of endmembers "
"in a hyperspectral image. First, compute statistics on the image and then "
"apply an endmember number estimation algorithm using these statistics. Two "
"algorithms are available:\n\n"
"1. Virtual Dimensionality (VD) [1][2]\n"
"2. Eigenvalue Likelihood Maximization (ELM) [3][4]\n\n"
"The application then returns the estimated number of endmembers.\n\n"
"[1] C.-I. Chang and Q. Du, Estimation of number of spectrally distinct signal "
"sources in hyperspectral imagery, IEEE Transactions on Geoscience and Remote "
"Sensing, vol. 43, no. 3, mar 2004.\n\n"
"[2] J. Wang and C.-I. Chang, Applications of independent component analysis "
"in endmember extraction and abundance quantification for hyperspectral imagery"
", IEEE Transactions on Geoscience and Remote Sensing, vol. 44, no. 9, pp. "
"2601-1616, sep 2006.\n\n"
"[3] Unsupervised Endmember Extraction of Martian Hyperspectral Images, B.Luo, "
"J. Chanussot, S. Dout\'e and X. Ceamanos, IEEE Whispers 2009, Grenoble France, 2009\n\n"
"[4] Unsupervised classification of hyperspectral images by using "
"linear unmixing algorithm Luo, B. and Chanussot, J., IEEE Int. Conf. On Image"
"Processing(ICIP) 2009, Cairo, Egypte, 2009"
);
SetDocLimitations("None");
SetDocAuthors("OTB-Team");
SetDocSeeAlso("VertexComponentAnalysis, HyperspectralUnmixing");
AddDocTag(Tags::Hyperspectral);
AddParameter(ParameterType_InputImage, "in", "Input Image Filename");
SetParameterDescription("in","The hyperspectral data cube input");
AddParameter(ParameterType_Int,"number","Number of endmembers");
SetParameterDescription("number", "The output estimated number of endmembers");
SetParameterRole("number", Role_Output);
AddParameter(ParameterType_Choice, "algo", "Unmixing algorithm");
SetParameterDescription("algo", "The algorithm to use for the estimation");
AddChoice("algo.elm", "Eigenvalue Likelihood Maximization");
SetParameterDescription("algo.elm", "");
AddChoice("algo.vd", "Virtual Dimensionality");
SetParameterDescription("algo.vd", "");
AddParameter( ParameterType_Float , "algo.vd.far" , "False alarm rate");
SetMinimumParameterFloatValue("algo.vd.far", 0);
SetMaximumParameterFloatValue("algo.vd.far", 1);
SetDefaultParameterFloat( "algo.vd.far" , 1.0E-3 );
SetParameterDescription( "algo.vd.far" ,
"False alarm rate for the virtual dimensionality algorithm");
AddRAMParameter();
// Doc example parameter settings
SetDocExampleParameterValue("in", "cupriteSubHsi.tif");
SetDocExampleParameterValue("algo", "vd");
SetDocExampleParameterValue("algo.vd.far", "1.0E-3");
SetOfficialDocLink();
}
void DoUpdateParameters() override
{
// Nothing to do here : all parameters are independent
}
void DoExecute() override
{
// Load input image
auto inputImage = GetParameterImage("in");
otbAppLogINFO("Computing statistics on input image...");
auto statisticsFilter = StreamingStatisticsVectorImageFilterType::New();
statisticsFilter->SetInput(inputImage);
AddProcess(statisticsFilter->GetStreamer(), "Statistic estimation step");
statisticsFilter->Update();
auto correlationMatrix = statisticsFilter->GetCorrelation().GetVnlMatrix();
auto covarianceMatrix = statisticsFilter->GetCovariance().GetVnlMatrix();
auto numberOfPixels = inputImage->GetLargestPossibleRegion().GetNumberOfPixels();
int numberOfEndmembers = 0;
const std::string algorithm = GetParameterString("algo");
if (algorithm=="elm")
{
otbAppLogINFO("Estimation algorithm: Eigenvalue Likelihood Maximization.");
auto elm = EigenvalueLikelihoodMaximisationType::New();
elm->SetCovariance(covarianceMatrix);
elm->SetCorrelation(correlationMatrix);
elm->SetNumberOfPixels(numberOfPixels);
elm->Compute();
numberOfEndmembers = elm->GetNumberOfEndmembers();
}
else if (algorithm=="vd")
{
otbAppLogINFO("Estimation algorithm: Virtual Dimensionality.");
auto vd = VirtualDimensionalityType::New();
vd->SetCovariance(covarianceMatrix);
vd->SetCorrelation(correlationMatrix);
vd->SetNumberOfPixels(numberOfPixels);
vd->SetFAR(GetParameterFloat("algo.vd.far"));
vd->Compute();
numberOfEndmembers = vd->GetNumberOfEndmembers();
}
SetParameterInt("number", numberOfEndmembers);
}
};
}
}
OTB_APPLICATION_EXPORT(otb::Wrapper::EndmemberNumberEstimation)
......@@ -95,13 +95,13 @@ private:
// Documentation
SetDocName("Hyperspectral data unmixing");
SetDocLongDescription("The application applies a linear unmixing algorithm"
"to an hyperspectral data cube. This method supposes that the mixture between"
"aterials in the scene is macroscopic and simulates a linear mixing model of"
SetDocLongDescription("The application applies a linear unmixing algorithm "
"to an hyperspectral data cube. This method supposes that the mixture between "
"aterials in the scene is macroscopic and simulates a linear mixing model of "
"spectra.\n\n"
"The Linear Mixing Model (LMM) acknowledges that reflectance"
"spectrum associated with each pixel is a linear combination of pure"
"materials in the recovery area, commonly known as endmembers. Endmembers can"
"The Linear Mixing Model (LMM) acknowledges that reflectance "
"spectrum associated with each pixel is a linear combination of pure "
"materials in the recovery area, commonly known as endmembers. Endmembers can "
"be estimated using the VertexComponentAnalysis application.\n\n"
"The application allows estimating the abundance maps with several algorithms:\n\n"
"* Unconstrained Least Square (ucls)\n"
......@@ -121,10 +121,14 @@ private:
SetParameterDescription("in","The hyperspectral data cube input");
AddParameter(ParameterType_OutputImage, "out", "Output Image");
SetParameterDescription("out","The output abundance map. The abundance fraction are stored in a multispectral image where band N corresponds to the fraction of endmembers N in each pixel.");
SetParameterDescription("out","The output abundance map. The abundance "
"fraction are stored in a multispectral image where band N corresponds "
"to the fraction of endmembers N in each pixel.");
AddParameter(ParameterType_InputImage, "ie", "Input endmembers");
SetParameterDescription("ie","The endmembers (estimated pure pixels) to use for unmixing. Must be stored as a multispectral image, where each pixel is interpreted as an endmember.");
SetParameterDescription("ie","The endmembers (estimated pure pixels) to "
"use for unmixing. Must be stored as a multispectral image, where "
"each pixel is interpreted as an endmember.");
AddParameter(ParameterType_Choice, "ua", "Unmixing algorithm");
SetParameterDescription("ua", "The algorithm to use for unmixing");
......
......@@ -50,25 +50,25 @@ private:
void DoInit() override
{
SetName("VertexComponentAnalysis");
SetDescription("Given a set of mixed spectral vectors, estimate"
"reference substances also known as endmembers using the Vertex"
SetDescription("Given a set of mixed spectral vectors, estimate "
"reference substances also known as endmembers using the Vertex "
"Component Analysis algorithm.");
// Documentation
SetDocName("Vertex Component Analysis");
SetDocLongDescription("Apply the Vertex Component Analysis [1] to"
"an hyperspectral image to extract endmembers. Given a set of mixed"
"spectral vectors (multispectral or hyperspectral), the application"
"estimates the spectral signature of reference substances also known"
SetDocLongDescription("Apply the Vertex Component Analysis [1] to "
"an hyperspectral image to extract endmembers. Given a set of mixed "
"spectral vectors (multispectral or hyperspectral), the application "
"estimates the spectral signature of reference substances also known "
"as endmembers.");
SetDocLimitations("None");
SetDocAuthors("OTB-Team");
SetDocSeeAlso("[1] J. M. P. Nascimento and J. M. B. Dias, Vertex"
"component analysis: a fast algorithm to unmix hyperspectral data,"
"in IEEE Transactions on Geoscience and Remote Sensing, vol. 43,"
"no. 4, pp. 898-910, April 2005.J. M. P. Nascimento and"
"J. M. B. Dias, Vertex component analysis: a fast algorithm to"
"unmix hyperspectral data, in IEEE Transactions on Geoscience and"
SetDocSeeAlso("[1] J. M. P. Nascimento and J. M. B. Dias, Vertex "
"component analysis: a fast algorithm to unmix hyperspectral data, "
"in IEEE Transactions on Geoscience and Remote Sensing, vol. 43, "
"no. 4, pp. 898-910, April 2005.J. M. P. Nascimento and "
"J. M. B. Dias, Vertex component analysis: a fast algorithm to "
"unmix hyperspectral data, in IEEE Transactions on Geoscience and "
"Remote Sensing, vol. 43, no. 4, pp. 898-910, April 2005.");
AddDocTag(Tags::Hyperspectral);
......@@ -78,9 +78,9 @@ private:
SetParameterDescription("in","Input hyperspectral data cube");
AddParameter(ParameterType_OutputImage, "outendm", "Output Endmembers");
SetParameterDescription("outendm","Endmembers, stored in a"
"one-line multi-spectral image.Each pixel corresponds to one"
"endmembers and each band values corresponds to the spectral"
SetParameterDescription("outendm","Endmembers, stored in a "
"one-line multi-spectral image.Each pixel corresponds to one "
"endmembers and each band values corresponds to the spectral "
"signature of the corresponding endmember.");
MandatoryOn("outendm");
......
......@@ -53,3 +53,24 @@ otb_test_application(NAME apTvHyVertexComponentAnalysis
${TEMP}/apTvHyVertexComponentAnalysis.tif
)
#----------- EndmemberNumberEstimation TESTS ----------------
otb_test_application(NAME apTvHyEndmemberNumberEstimation_vd
APP EndmemberNumberEstimation
OPTIONS -in ${OTB_DATA_ROOT}/Input/Hyperspectral/synthetic/hsi_cube.tif
-algo vd
-algo.vd.far 0.001
TESTENVOPTIONS ${TEMP}/aptTvHyEndmemberNumberEstimation_vd.txt
VALID --compare-ascii ${EPSILON_7}
${BASELINE_FILES}/aptTvHyEndmemberNumberEstimation.txt
${TEMP}/aptTvHyEndmemberNumberEstimation_vd.txt
)
otb_test_application(NAME apTvHyEndmemberNumberEstimation_elm
APP EndmemberNumberEstimation
OPTIONS -in ${OTB_DATA_ROOT}/Input/Hyperspectral/synthetic/hsi_cube.tif
-algo elm
TESTENVOPTIONS ${TEMP}/aptTvHyEndmemberNumberEstimation_elm.txt
VALID --compare-ascii ${EPSILON_7}
${BASELINE_FILES}/aptTvHyEndmemberNumberEstimation.txt
${TEMP}/aptTvHyEndmemberNumberEstimation_elm.txt
)
\ No newline at end of file
......@@ -273,7 +273,7 @@ private:
// save a reference to the functor
m_Filters.push_back(transferLogFilter.GetPointer());
transferLogFilter->SetVariadicInputs(tempImage);
transferLogFilter->SetInputs(tempImage);
transferLogFilter->UpdateOutputInformation();
shrinkFilter->SetInput(transferLogFilter->GetOutput());
......
......@@ -61,7 +61,7 @@ private:
AddParameter(ParameterType_InputImage, "in", "Input image");
SetParameterDescription("in", "Input image");
AddParameter(ParameterType_OutputFilename, "out", "Output .kmz product");
AddParameter(ParameterType_OutputFilename, "out", "Output KMZ product");
SetParameterDescription("out", "Output Kmz product directory (with .kmz extension)");
AddParameter(ParameterType_Int, "tilesize", "Tile Size");
......
......@@ -271,10 +271,10 @@ private:
classificationFilter = MultiScaleClassificationFilterType::New();
using namespace Functor::MultiScaleConvexOrConcaveDecisionRule_tags;
classificationFilter->SetVariadicNamedInput<max_opening_profile_derivative>( omsCharFilter->GetOutput() );
classificationFilter->SetVariadicNamedInput<opening_profile_characteristics>( omsCharFilter->GetOutputCharacteristics() );
classificationFilter->SetVariadicNamedInput<max_closing_profile_derivative>( cmsCharFilter->GetOutput() );
classificationFilter->SetVariadicNamedInput<closing_profile_characteristics>( cmsCharFilter->GetOutputCharacteristics() );
classificationFilter->SetInput<max_opening_profile_derivative>( omsCharFilter->GetOutput() );
classificationFilter->SetInput<opening_profile_characteristics>( omsCharFilter->GetOutputCharacteristics() );
classificationFilter->SetInput<max_closing_profile_derivative>( cmsCharFilter->GetOutput() );
classificationFilter->SetInput<closing_profile_characteristics>( cmsCharFilter->GetOutputCharacteristics() );
classificationFilter->GetModifiableFunctor().SetSigma( sigma );
classificationFilter->GetModifiableFunctor().SetLabelSeparator( static_cast<unsigned short>(initValue + profileSize * step) );
AddProcess(classificationFilter, "Classification");
......
......@@ -82,7 +82,7 @@ private:
AddRAMParameter();
// Doc example parameter settings
SetDocExampleParameterValue("in","s1_iw_slc.tif");
SetDocExampleParameterValue("insar","s1_iw_slc.tif");
SetDocExampleParameterValue("il", "Burst0.png Burst1.png");
SetDocExampleParameterValue("out", "otbConcatenateBursts.tif");
......
......@@ -179,18 +179,18 @@ private:
case 0: // H-alpha-A
if (inhv)
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
m_SRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
else if (invh)
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_SRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_SRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_SRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
radius.Fill(GetParameterInt("inco.kernelsize"));
m_MeanFilter->GetFilter()->SetRadius(radius);
m_MeanFilter->SetInput(m_SRFilter->GetOutput());
m_HAFilter->SetVariadicInput<0>(m_MeanFilter->GetOutput());
m_HAFilter->SetInput<0>(m_MeanFilter->GetOutput());
SetParameterOutputImage("out", m_HAFilter->GetOutput());
break;
......@@ -198,18 +198,18 @@ private:
case 1: // Barnes
if (inhv)
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
m_SRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
else if (invh)
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_SRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_SRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_SRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
radius.Fill(GetParameterInt("inco.kernelsize"));
m_MeanFilter->GetFilter()->SetRadius(radius);
m_MeanFilter->SetInput(m_SRFilter->GetOutput());
m_BarnesFilter->SetVariadicInput<0>(m_MeanFilter->GetOutput());
m_BarnesFilter->SetInput<0>(m_MeanFilter->GetOutput());
SetParameterOutputImage("out", m_BarnesFilter->GetOutput());
break;
......@@ -217,18 +217,18 @@ private:
case 2: // Huynen
if (inhv)
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
m_SRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
else if (invh)
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_SRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_SRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_SRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_SRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
radius.Fill(GetParameterInt("inco.kernelsize"));
m_MeanFilter->GetFilter()->SetRadius(radius);
m_MeanFilter->SetInput(m_SRFilter->GetOutput());
m_HuynenFilter->SetVariadicInput<0>(m_MeanFilter->GetOutput());
m_HuynenFilter->SetInput<0>(m_MeanFilter->GetOutput());
SetParameterOutputImage("out", m_HuynenFilter->GetOutput());
break;
......@@ -245,7 +245,7 @@ private:
m_ImageList->PushBack(GetParameterComplexDoubleImage("invv"));
m_Concatener->SetInput(m_ImageList);
m_PauliFilter->SetVariadicInput<0>(m_Concatener->GetOutput());
m_PauliFilter->SetInput<0>(m_Concatener->GetOutput());
SetParameterOutputImage("out", m_PauliFilter->GetOutput() );
......
......@@ -395,12 +395,12 @@ private:
m_RCohSRFilter = RCohSRFilterType::New();
if (inhv)
m_RCohSRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
m_RCohSRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
else if (invh)
m_RCohSRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_RCohSRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_RCohSRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_RCohSRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_RCohSRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_RCohSRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
SetParameterOutputImage("outc", m_RCohSRFilter->GetOutput()); // input: 3 x 1 complex channel | output : 6 complex channels
......@@ -412,12 +412,12 @@ private:
m_RCovSRFilter = RCovSRFilterType::New();
if (inhv)
m_RCovSRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
m_RCovSRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
else if (invh)
m_RCovSRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_RCovSRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_RCovSRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_RCovSRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_RCovSRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_RCovSRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
SetParameterOutputImage("outc", m_RCovSRFilter->GetOutput()); // input: 3 x 1 complex channel | output : 6 complex channels
......@@ -429,12 +429,12 @@ private:
m_RCCSRFilter = RCCSRFilterType::New();
if (inhv)
m_RCCSRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
m_RCCSRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("inhv"));
else if (invh)
m_RCCSRFilter->SetVariadicNamedInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_RCCSRFilter->SetInput<polarimetry_tags::hv_or_vh>(GetParameterComplexDoubleImage("invh"));
m_RCCSRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_RCCSRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_RCCSRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_RCCSRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
SetParameterOutputImage("outc", m_RCCSRFilter->GetOutput()); // input: 3 x 1 complex channel | output : 6 complex channels
......@@ -444,7 +444,7 @@ private:
case 3: // ReciprocalCoherencyToReciprocalMuellerImageFilter
m_RCRMFilter = RCRMFilterType::New();
m_RCRMFilter->SetVariadicInput<0>(GetParameterComplexDoubleVectorImage("inc"));
m_RCRMFilter->SetInput<0>(GetParameterComplexDoubleVectorImage("inc"));
SetParameterOutputImage("outf", m_RCRMFilter->GetOutput()); // input: 6 complex channels | 16 real channels
......@@ -454,7 +454,7 @@ private:
case 4: // ReciprocalCovarianceToCoherencyDegreeImageFilter
m_RCCDFilter = RCCDFilterType::New();
m_RCCDFilter->SetVariadicInput<0>(GetParameterComplexDoubleVectorImage("inc"));
m_RCCDFilter->SetInput<0>(GetParameterComplexDoubleVectorImage("inc"));
SetParameterOutputImage("outc", m_RCCDFilter->GetOutput()); // input: 6 complex channels | 3 complex channels
......@@ -464,7 +464,7 @@ private:
case 5: // ReciprocalCovarianceToReciprocalCoherencyImageFilter
m_RCRCFilter = RCRCFilterType::New();
m_RCRCFilter->SetVariadicInput<0>(GetParameterComplexDoubleVectorImage("inc"));
m_RCRCFilter->SetInput<0>(GetParameterComplexDoubleVectorImage("inc"));
SetParameterOutputImage("outc", m_RCRCFilter->GetOutput()); // input: 6 complex channels | 6 complex channels
......@@ -474,7 +474,7 @@ private:
case 6: // ReciprocalLinearCovarianceToReciprocalCircularCovarianceImageFilter
m_RLCRCCFilter = RLCRCCFilterType::New();
m_RLCRCCFilter->SetVariadicInput<0>(GetParameterComplexDoubleVectorImage("inc"));
m_RLCRCCFilter->SetInput<0>(GetParameterComplexDoubleVectorImage("inc"));
SetParameterOutputImage("outc", m_RLCRCCFilter->GetOutput()); // input: 6 complex channels | output : 6 complex channels
......@@ -485,7 +485,7 @@ private:
m_MRCFilter = MRCFilterType::New();
m_MRCFilter->SetVariadicInput<0>(GetParameterDoubleVectorImage("inf"));
m_MRCFilter->SetInput<0>(GetParameterDoubleVectorImage("inf"));
SetParameterOutputImage("outc", m_MRCFilter->GetOutput()); // input: 16 real channels | output : 6 complex channels
......@@ -499,10 +499,10 @@ private:
case 8: // SinclairToCoherency
m_CohSRFilter = CohSRFilterType::New();
m_CohSRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_CohSRFilter->SetVariadicNamedInput<polarimetry_tags::hv>(GetParameterComplexDoubleImage("inhv"));
m_CohSRFilter->SetVariadicNamedInput<polarimetry_tags::vh>(GetParameterComplexDoubleImage("invh"));
m_CohSRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_CohSRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_CohSRFilter->SetInput<polarimetry_tags::hv>(GetParameterComplexDoubleImage("inhv"));
m_CohSRFilter->SetInput<polarimetry_tags::vh>(GetParameterComplexDoubleImage("invh"));
m_CohSRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
SetParameterOutputImage("outc", m_CohSRFilter->GetOutput()); // input: 4 x 1 complex channel | 10 complex channels
......@@ -512,10 +512,10 @@ private:
case 9: // SinclairToCovariance
m_CovSRFilter = CovSRFilterType::New();
m_CovSRFilter->SetVariadicNamedInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_CovSRFilter->SetVariadicNamedInput<polarimetry_tags::hv>(GetParameterComplexDoubleImage("inhv"));
m_CovSRFilter->SetVariadicNamedInput<polarimetry_tags::vh>(GetParameterComplexDoubleImage("invh"));
m_CovSRFilter->SetVariadicNamedInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));
m_CovSRFilter->SetInput<polarimetry_tags::hh>(GetParameterComplexDoubleImage("inhh"));
m_CovSRFilter->SetInput<polarimetry_tags::hv>(GetParameterComplexDoubleImage("inhv"));
m_CovSRFilter->SetInput<polarimetry_tags::vh>(GetParameterComplexDoubleImage("invh"));
m_CovSRFilter->SetInput<polarimetry_tags::vv>(GetParameterComplexDoubleImage("invv"));