From 1767c40011d67aa9bff37ce22d32aa2dee86f5b2 Mon Sep 17 00:00:00 2001 From: Antoine Regimbeau <antoine.regimbeau@c-s.fr> Date: Wed, 13 Dec 2017 12:05:05 +0100 Subject: [PATCH] ENH: add cint16 and cint32 pixel type + REFAX :InputParameterType.h and macros --- .../include/otbWrapperInputImageParameter.h | 10 +++- .../include/otbWrapperInputImageParameter.txx | 36 +++++++++---- .../include/otbWrapperTypes.h | 12 ++++- .../ApplicationEngine/src/CMakeLists.txt | 19 +++---- .../src/otbWrapperInputImageParameterMacros.h | 5 ++ .../src/otbWrapperInputImageParameterType.cxx | 52 +++++++++++++++++++ 6 files changed, 113 insertions(+), 21 deletions(-) create mode 100644 Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterType.cxx diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.h index d51438cf16..2a36842218 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.h +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.h @@ -80,10 +80,14 @@ public: UInt8RGBImageType* GetUInt8RGBImage(); UInt8RGBAImageType* GetUInt8RGBAImage(); - // Complex image + // Complex image + ComplexInt16ImageType* GetComplexInt16Image(); + ComplexInt32ImageType* GetComplexInt32Image(); ComplexFloatImageType* GetComplexFloatImage(); ComplexDoubleImageType* GetComplexDoubleImage(); + ComplexInt16VectorImageType* GetComplexInt16VectorImage(); + ComplexInt32VectorImageType* GetComplexInt32VectorImage(); ComplexFloatVectorImageType* GetComplexFloatVectorImage(); ComplexDoubleVectorImageType* GetComplexDoubleVectorImage(); @@ -152,9 +156,13 @@ protected: typedef otb::ImageFileReader<UInt8RGBAImageType> UInt8RGBAReaderType; // Complex + typedef otb::ImageFileReader<ComplexInt16ImageType> ComplexInt16ReaderType; + typedef otb::ImageFileReader<ComplexInt32ImageType> ComplexInt32ReaderType; typedef otb::ImageFileReader<ComplexFloatImageType> ComplexFloatReaderType; typedef otb::ImageFileReader<ComplexDoubleImageType> ComplexDoubleReaderType; + typedef otb::ImageFileReader<ComplexInt16VectorImageType> ComplexInt16VectorReaderType; + typedef otb::ImageFileReader<ComplexInt32VectorImageType> ComplexInt32VectorReaderType; typedef otb::ImageFileReader<ComplexFloatVectorImageType> ComplexFloatVectorReaderType; typedef otb::ImageFileReader<ComplexDoubleVectorImageType> ComplexDoubleVectorReaderType; diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx index b2371466a5..0ead9125d1 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx @@ -24,8 +24,8 @@ #include "otbWrapperInputImageParameter.h" #include "itkUnaryFunctorImageFilter.h" -#include "itkCastImageFilter.h" -#include "otbImageToVectorImageCastFilter.h" +// #include "itkCastImageFilter.h" +// #include "otbImageToVectorImageCastFilter.h" #include "otbClampImageFilter.h" namespace otb @@ -139,6 +139,22 @@ InputImageParameter::GetImage() { return CastImage<DoubleImageType, TImageType> (); } + else if (dynamic_cast<ComplexInt16ImageType*>(m_Image.GetPointer())) + { + return CastImage<ComplexInt16ImageType, TImageType>(); + } + else if (dynamic_cast<ComplexInt32ImageType*>(m_Image.GetPointer())) + { + return CastImage<ComplexInt32ImageType, TImageType>(); + } + else if (dynamic_cast<ComplexFloatImageType*>(m_Image.GetPointer())) + { + return CastImage<ComplexFloatImageType, TImageType>(); + } + else if (dynamic_cast<ComplexDoubleImageType*>(m_Image.GetPointer())) + { + return CastImage<ComplexDoubleImageType, TImageType>(); + } else if (dynamic_cast<UInt8VectorImageType*> (m_Image.GetPointer())) { return CastImage<UInt8VectorImageType, TImageType> (); @@ -175,21 +191,21 @@ InputImageParameter::GetImage() { return CastImage<UInt8RGBImageType, TImageType> (); } - else if (dynamic_cast<ComplexFloatVectorImageType*>(m_Image.GetPointer())) + else if (dynamic_cast<ComplexInt16VectorImageType*>(m_Image.GetPointer())) { - return CastImage<ComplexFloatVectorImageType, TImageType>(); + return CastImage<ComplexInt16VectorImageType, TImageType>(); } - else if (dynamic_cast<ComplexDoubleVectorImageType*>(m_Image.GetPointer())) + else if (dynamic_cast<ComplexInt32VectorImageType*>(m_Image.GetPointer())) { - return CastImage<ComplexDoubleVectorImageType, TImageType>(); + return CastImage<ComplexInt32VectorImageType, TImageType>(); } - else if (dynamic_cast<ComplexFloatImageType*>(m_Image.GetPointer())) + else if (dynamic_cast<ComplexFloatVectorImageType*>(m_Image.GetPointer())) { - return CastImage<ComplexFloatImageType, TImageType>(); + return CastImage<ComplexFloatVectorImageType, TImageType>(); } - else if (dynamic_cast<ComplexDoubleImageType*>(m_Image.GetPointer())) + else if (dynamic_cast<ComplexDoubleVectorImageType*>(m_Image.GetPointer())) { - return CastImage<ComplexDoubleImageType, TImageType>(); + return CastImage<ComplexDoubleVectorImageType, TImageType>(); } else { diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h index f78fb1f7e0..8a31e1f2c4 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperTypes.h @@ -77,12 +77,16 @@ typedef enum ImagePixelType_uint32, ImagePixelType_float, ImagePixelType_double, + ImagePixelType_cint16, + ImagePixelType_cint32, ImagePixelType_cfloat, ImagePixelType_cdouble, } ImagePixelType; typedef enum { + ComplexImagePixelType_int16, + ComplexImagePixelType_int32, ComplexImagePixelType_float, ComplexImagePixelType_double, } ComplexImagePixelType; @@ -121,13 +125,19 @@ typedef otb::VectorImage<double> DoubleVectorImageType; typedef otb::Image< itk::RGBPixel<unsigned char> > UInt8RGBImageType; typedef otb::Image< itk::RGBAPixel<unsigned char> > UInt8RGBAImageType; +typedef std::complex<short> Int16ComplexPixelType; +typedef std::complex<int> Int32ComplexPixelType; typedef std::complex<float> FloatComplexPixelType; typedef std::complex<double> DoubleComplexPixelType; -// Complex Image Type (first : double and float) +// Complex Image Type +typedef otb::Image< Int16ComplexPixelType, 2 > ComplexInt16ImageType; +typedef otb::Image< Int32ComplexPixelType, 2 > ComplexInt32ImageType; typedef otb::Image< FloatComplexPixelType, 2 > ComplexFloatImageType; typedef otb::Image< DoubleComplexPixelType, 2 > ComplexDoubleImageType; +typedef otb::VectorImage< Int16ComplexPixelType, 2 > ComplexInt16VectorImageType; +typedef otb::VectorImage< Int32ComplexPixelType, 2 > ComplexInt32VectorImageType; typedef otb::VectorImage<FloatComplexPixelType, 2 > ComplexFloatVectorImageType; typedef otb::VectorImage< DoubleComplexPixelType, 2 > ComplexDoubleVectorImageType; diff --git a/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt b/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt index cd0be0bd4b..671b314aab 100644 --- a/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt +++ b/Modules/Wrappers/ApplicationEngine/src/CMakeLists.txt @@ -31,15 +31,16 @@ set( OTBApplicationEngine_SRC otbWrapperInputFilenameListParameter.cxx otbWrapperOutputImageParameter.cxx otbWrapperInputImageParameter.cxx - otbWrapperInputImageParameterUInt8.cxx - otbWrapperInputImageParameterInt16.cxx - otbWrapperInputImageParameterUInt16.cxx - otbWrapperInputImageParameterInt32.cxx - otbWrapperInputImageParameterUInt32.cxx - otbWrapperInputImageParameterFloat.cxx - otbWrapperInputImageParameterDouble.cxx - otbWrapperInputImageParameterCFloat.cxx - otbWrapperInputImageParameterCDouble.cxx + otbWrapperInputImageParameterType.cxx + #otbWrapperInputImageParameterUInt8.cxx + #otbWrapperInputImageParameterInt16.cxx + #otbWrapperInputImageParameterUInt16.cxx + #otbWrapperInputImageParameterInt32.cxx + #otbWrapperInputImageParameterUInt32.cxx + #otbWrapperInputImageParameterFloat.cxx + #otbWrapperInputImageParameterDouble.cxx + #otbWrapperInputImageParameterCFloat.cxx + #otbWrapperInputImageParameterCDouble.cxx otbWrapperParameterKey.cxx otbWrapperDocExampleStructure.cxx otbWrapperInputVectorDataParameter.cxx diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterMacros.h b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterMacros.h index 42f88dfbea..3f3525af7a 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterMacros.h +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterMacros.h @@ -28,6 +28,11 @@ return this->GetImage< image##Type > (); \ } +#define otbGetImageAndVectorImageMacro(type) \ + otbGetImageMacro(type##Image); \ + otbGetImageMacro(type##VectorImage); + + /* #define otbCastImageMacro(InputImageType, OutputImageType, theMethod) \ template<> OutputImageType * \ diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterType.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterType.cxx new file mode 100644 index 0000000000..da88c171dc --- /dev/null +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageParameterType.cxx @@ -0,0 +1,52 @@ +/* + * 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 "otbWrapperInputImageParameter.h" +#include "otbWrapperTypes.h" +#include "otbWrapperInputImageParameterMacros.h" + +namespace otb +{ +namespace Wrapper +{ +otbGetImageAndVectorImageMacro(UInt8); +// otbGetImageMacro(UInt8VectorImage); +otbGetImageAndVectorImageMacro(UInt16); +// otbGetImageMacro(UInt16VectorImage); +otbGetImageAndVectorImageMacro(UInt32); +// otbGetImageMacro(UInt32VectorImage); +otbGetImageAndVectorImageMacro(Int16); +// otbGetImageMacro(Int16VectorImage); +otbGetImageAndVectorImageMacro(Int32); +// otbGetImageMacro(Int32VectorImage); +otbGetImageAndVectorImageMacro(Float); +// otbGetImageMacro(FloatVectorImage); +otbGetImageAndVectorImageMacro(Double); +// otbGetImageMacro(DoubleVectorImage); +otbGetImageAndVectorImageMacro(ComplexInt16); +// otbGetImageMacro(ComplexInt16VectorImage); +otbGetImageAndVectorImageMacro(ComplexInt32); +// otbGetImageMacro(ComplexInt32VectorImage); +otbGetImageAndVectorImageMacro(ComplexFloat); +// otbGetImageMacro(ComplexFloatVectorImage); +otbGetImageAndVectorImageMacro(ComplexDouble); +// otbGetImageMacro(ComplexDoubleVectorImage); +} // end namespace wrapper +} // end namespace otb -- GitLab