diff --git a/Modules/Applications/AppFusion/app/otbBundleToPerfectSensor.cxx b/Modules/Applications/AppFusion/app/otbBundleToPerfectSensor.cxx index 51b77af1428dbeeedb344806a190d797bb9db7ab..8fe879ccf4efc16b3658e07ab5330833f326cf14 100644 --- a/Modules/Applications/AppFusion/app/otbBundleToPerfectSensor.cxx +++ b/Modules/Applications/AppFusion/app/otbBundleToPerfectSensor.cxx @@ -19,6 +19,7 @@ #include "otbMultiToMonoChannelExtractROI.h" #include "otbGenericRSResampleImageFilter.h" +#include "otbGridResampleImageFilter.h" #include "otbImportGeoInformationImageFilter.h" #include "otbBCOInterpolateImageFunction.h" #include "otbSimpleRcsPanSharpeningFusionImageFilter.h" @@ -133,7 +134,7 @@ private: typedef otb::BCOInterpolateImageFunction<FloatVectorImageType> InterpolatorType; typedef otb::GenericRSResampleImageFilter<FloatVectorImageType, FloatVectorImageType> ResamplerType; - typedef otb::StreamingResampleImageFilter<FloatVectorImageType, FloatVectorImageType> BasicResamplerType; + typedef otb::GridResampleImageFilter<FloatVectorImageType, FloatVectorImageType> BasicResamplerType; typedef otb::ImportGeoInformationImageFilter<FloatVectorImageType,InternalImageType> ImportGeoInformationFilterType; typedef otb::SimpleRcsPanSharpeningFusionImageFilter<InternalImageType, FloatVectorImageType, FloatVectorImageType> FusionFilterType; @@ -204,13 +205,22 @@ private: { otbAppLogINFO("Using the PHR mode"); - otb::PleiadesPToXSAffineTransformCalculator::TransformType::Pointer transform - = otb::PleiadesPToXSAffineTransformCalculator::Compute(panchro, xs); + otb::PleiadesPToXSAffineTransformCalculator::TransformType::OffsetType offset + = otb::PleiadesPToXSAffineTransformCalculator::ComputeOffset(GetParameterImage("inp"), + GetParameterImage("inxs")); + origin+=offset; + origin[0]=origin[0]/4; + origin[1]=origin[1]/4; + + basicResampler->SetOutputOrigin(origin); basicResampler->SetInput(xs); - basicResampler->SetTransform(transform); basicResampler->SetOutputOrigin(origin); - basicResampler->SetOutputSpacing(spacing); + + FloatVectorImageType::SpacingType xsSpacing = GetParameterImage("inxs")->GetSpacing(); + xsSpacing*=0.25; + + basicResampler->SetOutputSpacing(xsSpacing); basicResampler->SetOutputSize(size); basicResampler->SetOutputStartIndex(start); basicResampler->SetEdgePaddingValue(defaultValue); diff --git a/Modules/Applications/AppProjection/app/otbSuperimpose.cxx b/Modules/Applications/AppProjection/app/otbSuperimpose.cxx index 8063257976315560454934c47448e29372f8bece..dc8661fd039630f48cee4aa10a9884d3833ff631 100644 --- a/Modules/Applications/AppProjection/app/otbSuperimpose.cxx +++ b/Modules/Applications/AppProjection/app/otbSuperimpose.cxx @@ -18,6 +18,7 @@ #include "otbWrapperApplicationFactory.h" #include "otbGenericRSResampleImageFilter.h" +#include "otbGridResampleImageFilter.h" #include "otbImportGeoInformationImageFilter.h" #include "otbBCOInterpolateImageFunction.h" @@ -72,7 +73,7 @@ public: typedef itk::ScalableAffineTransform<double, 2> TransformType; - typedef otb::StreamingResampleImageFilter + typedef otb::GridResampleImageFilter <FloatVectorImageType, FloatVectorImageType> BasicResamplerType; @@ -251,19 +252,23 @@ private: { otbAppLogINFO("Using the PHR mode"); - otb::PleiadesPToXSAffineTransformCalculator::TransformType::Pointer transform - = otb::PleiadesPToXSAffineTransformCalculator::Compute(GetParameterImage("inr"), - GetParameterImage("inm")); - - m_BasicResampler->SetTransform(transform); + otb::PleiadesPToXSAffineTransformCalculator::TransformType::OffsetType offset + = otb::PleiadesPToXSAffineTransformCalculator::ComputeOffset(GetParameterImage("inr"), + GetParameterImage("inm")); m_BasicResampler->SetInput(movingImage); + origin+=offset; + origin[0]=origin[0]/4; + origin[1]=origin[1]/4; m_BasicResampler->SetOutputOrigin(origin); - m_BasicResampler->SetOutputSpacing(spacing); - m_BasicResampler->SetOutputSize(size); - m_BasicResampler->SetOutputStartIndex(start); + + FloatVectorImageType::SpacingType xsSpacing = GetParameterImage("inm")->GetSpacing(); + xsSpacing*=0.25; + m_BasicResampler->SetOutputSpacing(xsSpacing); + m_BasicResampler->SetOutputSize(size); + m_Resampler->SetOutputStartIndex(start); m_BasicResampler->SetEdgePaddingValue(defaultValue); m_GeoImport->SetInput(m_BasicResampler->GetOutput());