diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt index 27591828d0c22a2a4831429d09da9d883328d65d..c591bafa550b3635eea6e1066dcb211e5a91c668 100644 --- a/Testing/Code/IO/CMakeLists.txt +++ b/Testing/Code/IO/CMakeLists.txt @@ -1139,16 +1139,26 @@ ENDIF(OTB_DATA_USE_LARGEINPUT) ADD_TEST(ioTuVectorImageComplexNew ${IO_TESTS9} otbVectorImageComplexNew) -ADD_TEST(ioTuVectorImageComplexFloatTest ${IO_TESTS9} +ADD_TEST(ioTvVectorImageComplexFloatTest ${IO_TESTS9} otbVectorImageComplexFloatTest ${INPUTDATA}/multibandComplexFloat.hdr ) -ADD_TEST(ioTuVectorImageComplexDoubleTest ${IO_TESTS9} +ADD_TEST(ioTvVectorImageComplexDoubleTest ${IO_TESTS9} otbVectorImageComplexDoubleTest ${INPUTDATA}/multibandComplexDouble.hdr ) +ADD_TEST(ioTvImageComplexFloatTest ${IO_TESTS9} + otbImageComplexFloatTest + ${INPUTDATA}/multibandComplexFloat.hdr +) + +ADD_TEST(ioTvImageComplexDoubleTest ${IO_TESTS9} + otbImageComplexDoubleTest + ${INPUTDATA}/multibandComplexDouble.hdr +) + # --- otb::VectorImageReadWriteTest --- ADD_TEST(ioTvVectorImageFileReaderWriterTest ${IO_TESTS9} --compare-image ${EPSILON_9} @@ -2758,6 +2768,7 @@ otbVectorImageTest.cxx otbStreamingImageFilterTest.cxx otbVectorImageFileReaderWriterTest.cxx otbStreamingShortImageFileWriterTest.cxx +otbComplexImageTests.cxx ) SET(BasicIO_SRCS10 otbIOTests10.cxx diff --git a/Testing/Code/IO/otbComplexImageTests.cxx b/Testing/Code/IO/otbComplexImageTests.cxx new file mode 100644 index 0000000000000000000000000000000000000000..51e9cb4c9a54048226f767367ac5f46add525658 --- /dev/null +++ b/Testing/Code/IO/otbComplexImageTests.cxx @@ -0,0 +1,136 @@ +/*========================================================================= + + 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. + +=========================================================================*/ + +#if defined(_MSC_VER) +#pragma warning ( disable : 4786 ) +#endif + +#include "itkExceptionObject.h" +#include <iostream> +#include <fstream> +#include <string> + +#include "otbImage.h" +#include "otbVectorImage.h" +#include "otbImageFileReader.h" + +int otbVectorImageComplexNew(int argc, char* argv[]) +{ + typedef std::complex<float> PixelType; + typedef otb::VectorImage<PixelType, 2> ImageType; + ImageType::Pointer image = ImageType::New(); + image->Initialize(); + + return EXIT_SUCCESS; +} + + +template<class InternalType> +int otbVectorImageComplexGenericTest(int argc, char* argv[]) +{ + typedef std::complex<InternalType> PixelType; + typedef otb::VectorImage<PixelType, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typename ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(argv[1]); + reader->UpdateOutputInformation(); + std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl; + itk::ImageIOBase::Pointer io = reader->GetImageIO(); + std::cout << io << std::endl; + reader->Update(); + typename ImageType::IndexType index; + index[0]=0; + index[1]=0; + + typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index); + std::cout << pixel << std::endl; + + //Test value + if ((pixel[0] != PixelType(0,1)) + || (pixel[1] != PixelType(20000, 20001))) + { + std::cout << "Found " << pixel[0] << " should be " << PixelType(0,1) << std::endl; + std::cout << "Found " << pixel[1] << " should be " << PixelType(20000,20001) << std::endl; + return EXIT_FAILURE; + } + return EXIT_SUCCESS; +} + +int otbVectorImageComplexFloatTest(int argc, char* argv[]) +{ + return otbVectorImageComplexGenericTest<float>(argc, argv); +} + +int otbVectorImageComplexDoubleTest(int argc, char* argv[]) +{ + return otbVectorImageComplexGenericTest<double>(argc, argv); +} + +template<class InternalType> +int otbImageComplexGenericTest(int argc, char* argv[]) +{ + typedef std::complex<InternalType> PixelType; + typedef otb::Image<PixelType, 2> ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typename ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(argv[1]); + reader->UpdateOutputInformation(); + std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl; + itk::ImageIOBase::Pointer io = reader->GetImageIO(); + std::cout << io << std::endl; + reader->Update(); + typename ImageType::IndexType index; + index[0]=0; + index[1]=0; + + typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index); + std::cout << pixel << std::endl; + + //Test value + if (pixel != PixelType(0,1)) + { + std::cout << "Found " << pixel << " should be " << PixelType(0,1) << std::endl; + return EXIT_FAILURE; + } + + //Test other pixel + index[0]=10; + index[1]=10; + + pixel = reader->GetOutput()->GetPixel(index); + std::cout << pixel << std::endl; + + if (pixel != PixelType(4040,4041)) + { + std::cout << "Found " << pixel << " should be " << PixelType(2020,2021) << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} + +int otbImageComplexFloatTest(int argc, char* argv[]) +{ + return otbImageComplexGenericTest<float>(argc, argv); +} + +int otbImageComplexDoubleTest(int argc, char* argv[]) +{ + return otbImageComplexGenericTest<double>(argc, argv); +} diff --git a/Testing/Code/IO/otbIOTests9.cxx b/Testing/Code/IO/otbIOTests9.cxx index 23f030309c0b46abd866399c502781c9ff616113..78ce58e98c2a6f2d15e39df96723e25f58c0700a 100644 --- a/Testing/Code/IO/otbIOTests9.cxx +++ b/Testing/Code/IO/otbIOTests9.cxx @@ -31,6 +31,8 @@ void RegisterTests() REGISTER_TEST(otbVectorImageComplexNew); REGISTER_TEST(otbVectorImageComplexFloatTest); REGISTER_TEST(otbVectorImageComplexDoubleTest); + REGISTER_TEST(otbImageComplexFloatTest); + REGISTER_TEST(otbImageComplexDoubleTest); REGISTER_TEST(otbStreamingImageFilterTest); REGISTER_TEST(otbVectorImageFileReaderWriterTest); REGISTER_TEST(otbStreamingShortImageFileWriterTest); diff --git a/Testing/Code/IO/otbVectorImageTest.cxx b/Testing/Code/IO/otbVectorImageTest.cxx index 72962ebcbbf4c96597f4833b1c18a525883ef993..828e905c2b5715563b7425a66d2681755006d1e4 100644 --- a/Testing/Code/IO/otbVectorImageTest.cxx +++ b/Testing/Code/IO/otbVectorImageTest.cxx @@ -126,53 +126,3 @@ int otbVectorImageTest(int argc, char* argv[]) return EXIT_SUCCESS; } - -int otbVectorImageComplexNew(int argc, char* argv[]) -{ - typedef std::complex<float> PixelType; - typedef otb::VectorImage<PixelType, 2> ImageType; - ImageType::Pointer image = ImageType::New(); - image->Initialize(); - - return EXIT_SUCCESS; -} - - -template<class InternalType> -int otbVectorImageComplexGenericTest(int argc, char* argv[]) -{ - typedef std::complex<InternalType> PixelType; - typedef otb::VectorImage<PixelType, 2> ImageType; - typedef otb::ImageFileReader<ImageType> ReaderType; - typename ReaderType::Pointer reader = ReaderType::New(); - reader->SetFileName(argv[1]); - reader->UpdateOutputInformation(); - std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl; - itk::ImageIOBase::Pointer io = reader->GetImageIO(); - std::cout << io << std::endl; - reader->Update(); - typename ImageType::IndexType index; - index[0]=0; - index[1]=0; - - typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index); - std::cout << pixel << std::endl; - - //Test value - if ((pixel[0] != PixelType(0,1)) - || (pixel[1] != PixelType(20000, 20001))) - { - return EXIT_FAILURE; - } - return EXIT_SUCCESS; -} - -int otbVectorImageComplexFloatTest(int argc, char* argv[]) -{ - return otbVectorImageComplexGenericTest<float>(argc, argv); -} - -int otbVectorImageComplexDoubleTest(int argc, char* argv[]) -{ - return otbVectorImageComplexGenericTest<double>(argc, argv); -}