Skip to content

Co-Register service specifications


Service Description

The Co-Registered Stacking (Co-Register) service performs the co-registration of "secondary" images to a "reference" image.

The service employs the GeFolki1,2 coregistration software3,4 developed at ONERA in the Multidate Earth observation Datamass for Urban Sprawl Aftercase (MEDUSA) project. GeFolki allows heterogeneous image co-registration and is working in the image domain. Thus, the service can co-register intra- and inter-sensors images with different spatial resolutions.

The coregistration of two assets from calibrated datasets from Optical and Radar Products Calibration services does not require having the assets in the same map projection and spatial resolution. When reference and secondary images have different spatial resolutions, a co-location step is necessary to have both images at the same spatial resolution.


The AOI shall be wide enough to not only cover the area of change but also surrounding stable features. Having stable areas far away from where a change occurred let the algorithm to define the GCP to be used in the co-registration. Taking an earthquake as an example, to ensure a good quality co-registration, the AOI must not only contain damaged built up areas but also surrounding undamaged urban areas.


The role of topography must be considered when co-registering images. The co-registration of not ORTHO images over mountain areas cannot be of good quality, especially if images are acquired with different looking angles. In these areas the co-registration is advisable only using images orthorectified with a good quality DEM. Differences in looking angles could also affect the quality of co-registration in case of tall building if images are orthorectified with a good quality DEM.

Several downstream on-demand processing services can take advantage of co-registered assets, such as those devoted to visualizing inter-sensors images or the ones to perform change detection.


The service implements the workflow depicted below.

graph TB c(cos2) --> dn[Dataset n] c --> d3[Dataset ...] c --> d2[Dataset 2] c --> d1[Dataset 1] d1 --> b((SAR or opt<br>calibration)) d2 --> b((SAR or opt<br>calibration)) d3 --> b((SAR or opt<br>calibration)) dn --> b((SAR or opt<br>calibration)) b --> an[input n] b --> a3[input ...] b --> a2[input 2] b --> a1[input 1] subgraph Inputs a1[Dataset 1] a2[Dataset 2] a3[Dataset ...] an[Dataset n] ba1[List of assets from<br>input Dataset 1,2,...,n] ba2[Reference asset <br> in list of assets] ba3[S-expression/s] end subgraph Co-registered stacking ba1 --> stack ba3 --> stack a1 --> stack((Co-location<br>stacking<br>and<br>Band<br>arithmetic)) a2 --> stack((Co-location<br>stacking<br>and<br>Band<br>arithmetic)) a3 --> stack((Co-location<br>stacking<br>and<br>Band<br>arithmetic)) an --> stack((Co-location<br>stacking<br>and<br>Band<br>arithmetic)) stack --> co-register((Co-registration)) ba2 --> co-register((Co-registration)) co-register --> csn[Co-registered<br>asset n] co-register --> cs3[Co-registered<br>asset ...] co-register --> cs2[Co-registered<br>asset 2] co-register --> cs1[Co-registered<br>asset 1] co-register --> cs_new[Co-registered<br>new asset/s from s-expression/s] end subgraph Outputs cs1 --> o2[Co-registered<br>asset 1] cs2 --> o3[Co-registered<br>asset 2] cs3 --> o4[Co-registered<br>asset ...] csn --> on[Co-registered<br>asset n] cs_new --> o1[New asset/s from <br> Co-registered stack] end


Inputs of the Co-Registered Stacking service are geophysical single-band assets in Datasets derived systematically in the calibration processing from supported SAR and Optical sensors. Co-registration is also possible if input assets are a mix from SAR and Optical EO data2.


This service does not support SAR complex data (e.g. S1 SLC, Saocom-1 L1A products).


The Co-Register service requires a specified number of mandatory and optional parameters. Table 1 lists all service parameters.

Parameter Description Required Default value
Input product reference(s) Input Dataset(s) including assets to be co-registered YES
List(s) of comma-separated assets List of single-band assets from input datasets as comma-separeted items (reference plus secondary(ies) assets) YES
Reference asset in the list The asset to be used as reference in the list of comma-separeted assets YES
Area of Interest Area of interest expressed in WKT NO
S-expression/s S-expression(s) defined as 'new_asset_name:expression' to generate new asset(s) from the stack (e.g. average) NO

Table 1 - Service parameters for the Co-Register processor.

Below are given more information about the service parameters.


This first mandatory parameter is the list of input Dataset(s) that are used to create the co-registered stack.

The input products can be:

  • Optical calibrated datasets
  • SAR calibrated datasets


The specified input-product reference must include at least one geophysical single-band asset. Only single-band geophysical assets can be used in the co-registration.


This second mandatory parameter is a list of bands expressed as a comma separated list of common band names. It defines, for each input-reference product, the list of common band names to extract. There's a one-to-one mapping between the input-reference and the bands parameters. The list of single-band geophysical assets to be used for the co-registration shall be given as a list of comma separated items following the following convention:



To build a co-registered stack using 5 geophysical single-band assets (e.g. coastal, blue, green, red, and nir reflectance assets) from a single Calibrated Dataset (e.g. by specifying only 1 input product reference) the users shall define the input assets in Co-Register as following:



To build a multitemporal co-registered stack using 2 geophysical single-band assets (e.g. s0_db_c_vv, and s0_db_c_vh sigma nought assets) from multiple Calibrated Datasets (e.g. by specifying three different Optical Calibrated Datasets given as input product references 1, 2, and 3) the users shall define the 6 input assets in Co-Register as following:



Use comma separated reference.asset and avoid spaces between assets.


All CBNs available in the ESA Charter Mapper can be found here.

Reference asset in the list

The third mandatory parameter defines the reference asset in the list-of-comma-separated-assets. This asset shall be specified using the same convention used in the definition of the list of assets:


This single-band geophysical asset will be the reference in the co-registration. The other assets in the list will be co-registered to this asset.

AOI (optional)

This forth parameter (optional) may define the area of interest expressed as a Well-Known Text value.


If set, it overrides the automatic determination of the maximum common area between the input-reference products geometry.


In the definition of “Area of interest as Well Known Text” it is possible to apply as AOI the drawn polygon defined with the area filter. To do so, click on the Magic tool wizard :fontawesome-solid-magic: button in the left side of the "Area of interest expressed as Well-known text" box and select the option AOI from the list. The platform will automatically fill the parameter value with the rectangular bounding box taken from current search area in WKT format.

S-expression (optional)

This last optional parameter allows generating new asset(s) derived from the co-registered input assets.

To generate a new item in the co-registered stack, the expression to be defined in this parameter is composed by the name of the new asset and the s-expression to be used for generating it separated by a colon : .



The s-expressions inserted by the user must be given within brackets.

As an example, to derive a new asset representing the average between red assets from a pair of input-reference products ( and the expression to be inserted shall be:

average:(/ (+ 2)

This will add a new asset called average in the co-registered stack with average values derived from and

S-expressions in the ESA Charter Mapper supports arithmetic (* + / -) and logical (< <= == != >= > & |) operators plus some pre-defined functions.

More information about supported functions can be found in Table 2.

Function Description Syntax
asarray convert the input (list, tuples, etc.) to an array (asarray x)
interp returns the one-dimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x (interp x xp fp)
mean returns the mean value (scalar) from the given input array x (mean x)
norm_diff returns the mormalized difference between A and B as per ((x - y) / (x + y)) (norm_diff x y)
where return elements chosen from x or y depending on condition (where (condition) x y)

Table 2 - Supported functions that can be used in s-expressions.


The current list of functions can be further expanded in the future based on the user needs.

Examples of s-expresions which can be used to generate new bands from the STACK are listed in the below sections.


The following s-expression:

sum:(+ 1.pan 2.pan)

can be used to generate a band as the sum of 1.pan and 2.pan.


The following s-expression:

difference:(- 1.pan 2.pan)

can be used to generate a band as the difference of 1.pan and 2.pan.


The following s-expression:

average:(/ (+ 1.pan 2.pan) 2)

can be used to generate a band as the average between the values of 1.pan and 2.pan.

Difference from average

The following s-expression:

diff_from_avg:(- 1.pan (mean 1.pan))

can be used to estimate a band of difference from the average value of 1.pan.

Normalized difference

The following s-expression:

ndvi:(norm_diff 1.nir

can be used to derive multiple spectral indexes defined as normalized difference (e.g. NDVI, NDWI, NDBI, etc.).

Interpolate or rescale

The following s-expression:

rescaled:(interp (asarray 0 10000) (asarray 0 1))

can be used to interpolate the resclaed TOA reflectance into its original [0,1] range. Here (asarray 0 10000) returns [0, 10000] and is used to specify input range to be used for the interpolation.


The following s-expression:

opt_water_mask:(where (>= (norm_diff 1.nir) 0.3) 1 0)

can be used to derive water mask from binarization. Here (norm_diff 1.nir) is used to derive the NDWI index. The value 0.3 represents the threshold as TOA reflectance. Similar s-expressions can be made also for SAR such as:

sar_water_mask:(where (<= 1.s0_db_c_hh -23) 1 0)

in which 1.s0_db_c_hh is the asset and the value -23 represents the threshold as Sigma Nought in dB.


The output of this service is a multi-mission and multitemporal co-registered stack. The output STAC item includes as many assets as provided in the input. Assets are given as single band GeoTIFF in COG format.

The below table provides product specifications for the Co-Register service.

Attribute Value / description
Long Name Geometric Co-registered stack from Optical or SAR EO data
Short Name source_reference_number.source_asset (e.g. 1.nir)
Description Multiband co-registered stack of N images from optical and radar sensors
Processing level L1 / L2 (according to input)
Data Type Float32
Band N single-band
Format COG
Projection According to input
Fill Value According to input

  1. Plyer, A., et al. (2015), "A New Coregistration Algorithm for Recent Applications on Urban SAR Images", Geoscience and Remote Sensing Letters, IEEE, 12(11), 2198-2202. DOI: 10.1109/LGRS.2015.2455071

  2. Brigot, G., et al. (2016), "Adaptation and Evaluation of an optical flow method applied to co-registration of forest remote sensing images", accepted with modifications in IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, Volume: 9, Issue7, July 2016. DOI: 10.1109/JSTARS.2016.2578362

  3. GeFolki GitHub page, available at:

  4. GeFolki User manual, available at: