From 2542a476682acf810652e66c74e7f74751547c9f Mon Sep 17 00:00:00 2001 From: Victor Poughon <victor.poughon@cnes.fr> Date: Fri, 3 Feb 2017 17:18:18 +0100 Subject: [PATCH] BUG: DomainTransform: fix unclear parameter label and order --- .../app/otbDomainTransform.cxx | 55 ++++++++++--------- .../AppDomainTransform/test/CMakeLists.txt | 12 ++-- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx b/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx index dbd0d7759d..417861fa8d 100644 --- a/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx +++ b/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx @@ -92,7 +92,7 @@ private: } void DoInit() ITK_OVERRIDE - { + { SetName("DomainTransform"); SetDescription("Domain Transform application for wavelet and fourier"); @@ -104,25 +104,35 @@ private: SetDocSeeAlso("otbWaveletImageFilter, otbWaveletInverseImageFilter, otbWaveletTransform"); AddDocTag(Tags::Filter); + // Parameters AddParameter(ParameterType_InputImage, "in", "Input Image"); SetParameterDescription("in", "This will take an input image to be transformed" " image. For FFT inverse transform, it expects a complex image as two-band" " image in which first band represent real part and second band represent" " imaginary part."); - AddRAMParameter(); + AddParameter(ParameterType_OutputImage, "out", "Output Image"); + SetParameterDescription("out", "This parameter holds the output file name to" + " which transformed image will be written. This has a slightly different" + " behaviour depending on transform type. \n For Wavelet, output is a" + " single band image for both forward and inverse transform. \n For FFT" + " forward transform, output is two band image where first band represents" + " real part and second band represents imaginary part of a complex image."); - AddParameter(ParameterType_Choice, "mode", "mode"); + AddParameter(ParameterType_Choice, "mode", "Mode"); SetParameterDescription("mode", "This parameter allows one to select between" " fft(fourier) and wavelet"); + AddChoice("mode.fft", "FFT transform"); SetParameterDescription("mode.fft", "FFT transform"); - AddParameter(ParameterType_Empty, "mode.fft.shift", "false"); + + AddParameter(ParameterType_Empty, "mode.fft.shift", "Shift fft transform"); SetParameterDescription("mode.fft.shift", "Shift transform of fft filter"); - AddChoice("mode.wavelet", "wavelet"); + + AddChoice("mode.wavelet", "Wavelet"); SetParameterDescription("mode.wavelet", "Wavelet transform"); - AddParameter(ParameterType_Choice, "mode.wavelet.form", "Select wavelet form"); + AddParameter(ParameterType_Choice, "mode.wavelet.form", "Select wavelet form"); AddChoice("mode.wavelet.form.haar", "HAAR"); AddChoice("mode.wavelet.form.db4", "DAUBECHIES4"); AddChoice("mode.wavelet.form.db6", "DAUBECHIES6"); @@ -133,32 +143,25 @@ private: AddChoice("mode.wavelet.form.sb44", "SPLINE_BIORTHOGONAL_4_4"); AddChoice("mode.wavelet.form.sym8", "SYMLET8"); - //Default value + // Default values for mode SetParameterString("mode", "wavelet", false); SetParameterString("mode.wavelet.form", "haar", false); + AddParameter(ParameterType_Choice,"direction", "Direction"); + AddChoice("direction.forward", "Forward"); + AddChoice("direction.inverse", "Inverse"); + AddParameter(ParameterType_Int,"mode.wavelet.nlevels","Number of decomposition levels"); SetParameterDescription("mode.wavelet.nlevels","Number of decomposition levels"); SetDefaultParameterInt("mode.wavelet.nlevels",2); SetMinimumParameterIntValue("mode.wavelet.nlevels",2); - AddParameter(ParameterType_Choice,"dir", "Direction"); - - AddChoice("dir.fwd", "Forward"); - AddChoice("dir.inv", "Inverse"); - - AddParameter(ParameterType_OutputImage, "out", "Output Image"); - SetParameterDescription("out", "This parameter holds the output file name to" - " which transformed image will be written. This has a slightly different" - " behaviour depending on transform type. \n For Wavelet, output is a" - " single band image for both forward and inverse transform. \n For FFT" - " forward transform, output is two band image where first band represents" - " real part and second band represents imaginary part of a complex image."); + AddRAMParameter(); SetDocExampleParameterValue("in", "input.tif"); SetDocExampleParameterValue("mode.wavelet.form", "haar"); SetDocExampleParameterValue("out", "output_wavelet_haar.tif"); - } + } void DoUpdateParameters() ITK_OVERRIDE { @@ -167,14 +170,14 @@ private: void DoExecute() ITK_OVERRIDE { - int dir = GetParameterInt("dir"); + int dir = GetParameterInt("direction"); int mode = GetParameterInt("mode"); if( dir != 0 && dir != 1) { itkExceptionMacro(<< "-dir is '" << dir << "'." - << "It must be either 'fwd' or 'inv'"); + << "It must be either 'forward' or 'inverse'"); } if( mode != 0 && mode != 1) @@ -252,7 +255,7 @@ private: // fft ttransform bool shift = IsParameterEnabled( "mode.fft.shift"); typedef otb::Image< std::complex<OutputPixelType> > ComplexOutputImageType; - + if (dir == 0 ) { //forward fft @@ -268,7 +271,7 @@ private: FFTFilter::Pointer fwdFilter = FFTFilter::New(); fwdFilter->SetInput( inImage ); - + //typedef VectorImage for output of UnaryFunctorImageFilter typedef otb::VectorImage<OutputPixelType> TOutputImage; @@ -276,7 +279,7 @@ private: ComplexOutputImageType, TOutputImage > ComplexToVectorImageCastFilter; ComplexToVectorImageCastFilter::Pointer unaryFunctorImageFilter = ComplexToVectorImageCastFilter::New(); - + if( shift) { otbAppLogINFO( << "Applying Shift image filter" ); @@ -316,7 +319,7 @@ private: std::complex<InputPixelType>, 2 > TComplexImage; //typedef TOutputImage for InverseFFTImageFilter output typedef otb::Image< OutputPixelType > TOutputImage; - + // a unary functor to convert vectorimage to complex image typedef itk::UnaryFunctorImageFilter <TInputImage, diff --git a/Modules/Applications/AppDomainTransform/test/CMakeLists.txt b/Modules/Applications/AppDomainTransform/test/CMakeLists.txt index e397c71378..593cf6f458 100644 --- a/Modules/Applications/AppDomainTransform/test/CMakeLists.txt +++ b/Modules/Applications/AppDomainTransform/test/CMakeLists.txt @@ -5,7 +5,7 @@ otb_test_application(NAME apTvDomainTransform_wav_db20_fwd -mode wavelet -mode.wavelet.form db20 -mode.wavelet.nlevels 2 - -dir fwd + -direction forward -out ${TEMP}/apTvDomainTransform_wav_db20_fwd.tif ) @@ -14,7 +14,7 @@ otb_test_application(NAME apTvDomainTransform_wav_haar_inv OPTIONS -in ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif -mode wavelet -mode.wavelet.form haar - -dir inv + -direction inverse -out ${TEMP}/apTvDomainTransform_wav_haar_inv.tif ) @@ -23,16 +23,16 @@ otb_test_application(NAME apTvDomainTransform_fft_shift_fwd OPTIONS -in ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif -mode fft -mode.fft.shift true - -dir fwd + -direction forward -out ${TEMP}/apTvDomainTransform_fft_shift_fwd.tif ) - + otb_test_application(NAME apTvDomainTransform_fft_inv APP DomainTransform OPTIONS -in ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif -mode fft - -dir inv + -direction inverse -out ${TEMP}/apTvDomainTransform_fft_shift_inv.tif ) - + -- GitLab