diff --git a/Applications/Radiometry/CMakeLists.txt b/Applications/Radiometry/CMakeLists.txt index 509ea66d8d1fabbf8d272b68e467b5569b415491..634a077287f37ada642d8950b31a0e296c4611f4 100644 --- a/Applications/Radiometry/CMakeLists.txt +++ b/Applications/Radiometry/CMakeLists.txt @@ -2,3 +2,7 @@ OTB_CREATE_APPLICATION(NAME OpticalCalibration SOURCES otbOpticalCalibration.cxx LINK_LIBRARIES OTBIO;OTBRadiometry) + +OTB_CREATE_APPLICATION(NAME SarRadiometricCalibration + SOURCES otbSarRadiometricCalibration.cxx + LINK_LIBRARIES OTBIO;OTBRadiometry) diff --git a/Applications/Radiometry/otbSarRadiometricCalibration.cxx b/Applications/Radiometry/otbSarRadiometricCalibration.cxx new file mode 100644 index 0000000000000000000000000000000000000000..cf9ad890b3fb38193ceb01d6785265ce1363fd9b --- /dev/null +++ b/Applications/Radiometry/otbSarRadiometricCalibration.cxx @@ -0,0 +1,90 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + + =========================================================================*/ +#include "otbWrapperApplication.h" +#include "otbWrapperApplicationFactory.h" + +#include "otbSarRadiometricCalibrationToImageFilter.h" + +namespace otb +{ +namespace Wrapper +{ + +class SarRadiometricCalibration : public Application +{ +public: + /** Standard class typedefs. */ + typedef SarRadiometricCalibration Self; + typedef Application Superclass; + typedef itk::SmartPointer<Self> Pointer; + typedef itk::SmartPointer<const Self> ConstPointer; + + /** Standard macro */ + itkNewMacro(Self); + + itkTypeMacro(SarRadiometricCalibration, otb::Application); + + typedef otb::SarRadiometricCalibrationToImageFilter<ComplexFloatImageType, + ComplexFloatImageType> CalibrationFilterType; + +private: + SarRadiometricCalibration() + { + SetName("SarRadiometricCalibration"); + SetDescription("Perform SAR calibration on input complex images"); + } + + virtual ~SarRadiometricCalibration() + { + } + + void DoCreateParameters() + { + AddParameter(ParameterType_ComplexInputImage, "cin", "Input Complex Image"); + AddParameter(ParameterType_ComplexOutputImage, "out", "Output Image"); + AddParameter(ParameterType_Empty, "noise", "Disable Noise"); + MandatoryOff("noise"); + } + + void DoUpdateParameters() + { } + + void DoExecute() + { + // Get the input complex image + ComplexFloatImageType* floatComplexImage = GetParameterComplexFloatImage("cin"); + + // Set the filer input + m_CalibrationFilter = CalibrationFilterType::New(); + m_CalibrationFilter->SetInput(floatComplexImage); + + if (IsParameterEnabled("noise")) + { + m_CalibrationFilter->SetEnableNoise(false); + } + + // Set the output image + SetParameterComplexOutputImage("out", m_CalibrationFilter->GetOutput()); + } + + CalibrationFilterType::Pointer m_CalibrationFilter; +}; +} +} + +OTB_APPLICATION_EXPORT(otb::Wrapper::SarRadiometricCalibration)