From d788da715466115294b9f39471a6ca66dca5dfc1 Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@c-s.fr> Date: Thu, 21 Dec 2006 08:47:38 +0000 Subject: [PATCH] Premier commit pour les transfoms LogPolaire. Le dernier test est en erreur. (OUBLI). --- .../otbLogPolarTransformResample.cxx | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Testing/Code/BasicFilters/otbLogPolarTransformResample.cxx diff --git a/Testing/Code/BasicFilters/otbLogPolarTransformResample.cxx b/Testing/Code/BasicFilters/otbLogPolarTransformResample.cxx new file mode 100644 index 0000000000..e451549c15 --- /dev/null +++ b/Testing/Code/BasicFilters/otbLogPolarTransformResample.cxx @@ -0,0 +1,107 @@ +/*========================================================================= + + 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 "otbLogPolarTransform.h" +#include "otbImage.h" +#include "itkLinearInterpolateImageFunction.h" +#include "itkResampleImageFilter.h" +#include "itkPoint.h" +#include "otbMacro.h" +#include "otbImageFileReader.h" +#include "otbImageFileWriter.h" + +int otbLogPolarTransformResample(int argc, char* argv[]) +{ +try + { + char * inputFileName = argv[1]; + char * outputFileName = argv[2]; + double radialStep = atof(argv[3]); + double angularStep = atof(argv[4]); + + const unsigned int Dimension = 2; + typedef double PrecisionType; + typedef unsigned char PixelType; + typedef otb::Image<PixelType,Dimension> ImageType; + typedef otb::LogPolarTransform<PrecisionType> LogPolarTransformType; + typedef itk::LinearInterpolateImageFunction<ImageType,PrecisionType> InterpolatorType; + typedef otb::ImageFileReader<ImageType> ReaderType; + typedef otb::ImageFileWriter<ImageType> WriterType; + typedef itk::ResampleImageFilter<ImageType,ImageType,PrecisionType> ResampleFilterType; + + + ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(inputFileName); + reader->Update(); + + InterpolatorType::Pointer interpolator = InterpolatorType::New(); + LogPolarTransformType::Pointer transform = LogPolarTransformType::New(); + + LogPolarTransformType::ParametersType params(4); + // Center the transform + params[0]=0.5*static_cast<double>(reader->GetOutput()->GetLargestPossibleRegion().GetSize()[0]); + params[1]=0.5*static_cast<double>(reader->GetOutput()->GetLargestPossibleRegion().GetSize()[1]); + params[2]=radialStep; + params[3]=angularStep; + transform->SetParameters(params); + + ImageType::SizeType size; + size[0]=512; + size[1]=1024; + + ImageType::SpacingType spacing; + spacing.Fill(1.0); + + ResampleFilterType::Pointer resampler = ResampleFilterType::New(); + resampler->SetInput(reader->GetOutput()); + resampler->SetTransform(transform); + resampler->SetInterpolator(interpolator); + resampler->SetDefaultPixelValue(0); + resampler->SetSize(size); + + WriterType::Pointer writer = WriterType::New(); + writer->SetFileName(outputFileName); + writer->SetInput(resampler->GetOutput()); + writer->Update(); + + } +catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject thrown !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } +catch( ... ) + { + std::cout << "Unknown exception thrown !" << std::endl; + return EXIT_FAILURE; + } + return EXIT_SUCCESS; + + + + + + + + + + + + + +} -- GitLab