Perform P+XS pansharpening


This application performs P+XS pansharpening. The default mode use Pan and XS sensor models to estimate the transformation to superimpose XS over Pan before the fusion (“default mode”). The application provides also a PHR mode for Pleiades images which does not use sensor models as Pan and XS products are already coregistered but only estimate an affine transformation to superimpose XS over the Pan.Note that this option is automatically activated in case Pleiades images are detected as input.


Input PAN Image -inp image Mandatory
Input panchromatic image.

Input XS Image -inxs image Mandatory
Input XS image.

Output image -out image [dtype] Mandatory
Output image.

Elevation management

This group of parameters allows managing elevation values.

DEM directory -elev.dem directory
This parameter allows selecting a directory containing Digital Elevation Model files. Note that this directory should contain only DEM files. Unexpected behaviour might occurs if other images are found in this directory. Input DEM tiles should be in a raster format supported by GDAL.

Geoid File -elev.geoid filename [dtype]
Use a geoid grid to get the height above the ellipsoid in case there is no DEM available, no coverage for some points or pixels with no_data in the DEM tiles. A version of the geoid can be found on the OTB website (egm96.grd and egm96.grd.hdr at https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/tree/master/Data/Input/DEM).

Default elevation -elev.default float Default value: 0
This parameter allows setting the default height above ellipsoid when there is no DEM available, no coverage for some points or pixels with no_data in the DEM tiles, and no geoid file has been set. This is also used by some application as an average elevation value.

Mode -mode [default|phr] Default value: default
Superimposition mode

  • Default mode
    Default superimposition mode : uses any projection reference or sensor model found in the images

  • Pleiades mode
    Pleiades superimposition mode, designed for the case of a P+XS bundle in SENSOR geometry. It uses a simple transform on the XS image : a scaling and a residual translation.

Algorithm -method [rcs|lmvm|bayes] Default value: rcs
Selection of the pan-sharpening method.

  • RCS
    Simple RCS Pan sharpening operation.

  • LMVM
    Local Mean and Variance Matching (LMVM) Pan sharpening.

  • Bayesian
    Bayesian fusion.

RCS options

X radius -method.rcs.radiusx int Default value: 9
Set the x radius of the sliding window.

Y radius -method.rcs.radiusy int Default value: 9
Set the y radius of the sliding window.

LMVM options

X radius -method.lmvm.radiusx int Default value: 3
Set the x radius of the sliding window.

Y radius -method.lmvm.radiusy int Default value: 3
Set the y radius of the sliding window.

Bayesian options

Weight -method.bayes.lambda float Default value: 0.9999
Set the weighting value.

S coefficient -method.bayes.s float Default value: 1
Set the S coefficient.

Spacing of the deformation field -lms float Default value: 4
Spacing of the deformation field. Default is 10 times the PAN image spacing.

Interpolation -interpolator [bco|nn|linear] Default value: bco
This group of parameters allows defining how the input image will be interpolated during resampling.

  • Bicubic interpolation
    Bicubic interpolation leads to very good image quality but is slow.

  • Nearest Neighbor interpolation
    Nearest neighbor interpolation leads to poor image quality, but it is very fast.

  • Linear interpolation
    Linear interpolation leads to average image quality but is quite fast

Bicubic interpolation options

Radius for bicubic interpolation -interpolator.bco.radius int Default value: 2
This parameter allows controlling the size of the bicubic interpolation filter. If the target pixel size is higher than the input pixel size, increasing this parameter will reduce aliasing artifacts.

Fill Value -fv float Default value: 0
Fill value for area outside the reprojected image

Available RAM (MB) -ram int Default value: 256
Available memory for processing (in MB).


From the command-line:

otbcli_BundleToPerfectSensor -inp QB_Toulouse_Ortho_PAN.tif -inxs QB_Toulouse_Ortho_XS.tif -out BundleToPerfectSensor.png uchar

From Python:

import otbApplication

app = otbApplication.Registry.CreateApplication("BundleToPerfectSensor")

app.SetParameterString("inp", "QB_Toulouse_Ortho_PAN.tif")
app.SetParameterString("inxs", "QB_Toulouse_Ortho_XS.tif")
app.SetParameterString("out", "BundleToPerfectSensor.png")
app.SetParameterOutputImagePixelType("out", 1)