Co-registration of a time series on a reference VHSR image
In the perspective of integrating the MORINGA workflow (code source of the prototype available here: https://gitlab.irstea.fr/raffaele.gaetano/moringa.git) in the iota2 platform, me and Raffaele have started to think of some features related to coupling HR time series with VHR imagery. The first contribution we thought about is dedicated module to improve the co-registration between different optical image sources. This need comes from the fact that, in our experience, it is common to observe of a georeference gap between the VHR image and the HR time series, and even between two HR acquisitions (which can be significant for S2 imagery).
For this purpose, we are currently developing a feature for iota2 that should be composed of:
- a generic OTB application to find sift points between an input image and a reference image and create a new RPC sensor model for the input image.
- a python script to use the application and to perform the orthorectification on one or several images
The OTB application should be a adaptation of two OTB application (HomologousPointExtraction, GenerateRPCSensorModel). It inherits of some parameters of HomologousPointExtraction, fixing some others to default values for computational efficiency, such as the geobins mode. Since tie points must be output in pixel coordinates for the coregistering image, we have to slightly modify the HomologousPointExtraction application, preventing us from relying on a completely composite application solution. Several additional improvements are to be made: (1) including an option for iterative tie point search (reduces the geobins step if the number of tie points is insufficient for RPC problem solving), (2) including a resampling option if the input and the reference images have significantly different spatial resolutions (geobins at highest resolution will always be resampled to the lowest one, no matter the direction).
The python script could be made on the GenerateFeatures.py model. Like this it will be possible to launch it in different ways :
- co-registration with the OTB application between an input image and a reference image and directly apply the model to orthorectify the input image;
- co-registration with the OTB application between one image of the time series and the reference to apply the same model over the whole time series;
- separate co-registration between the reference and each image of the time series
This latter case is intended to optimize the processing of whole time series when a independent gap is observed among acquisitions at different dates. So far, in Moringa we co-locate each image of the time series separately to the VHR reference, but this approach can give problems especially when strong seasonal changes take place, which is typical on tropical agro-systems (lots of tie-points for HR images closer in time to the VHR scene, fewer and fewer when the time delay increases). To this end, we are currently investigating a cascade coregistration approach, in which only the HR image closest in date is coregistered to the VHR image, and other dates are processed in cascade using each time the already co-registered, closest HR image as the new reference.
We have already started some local developments and will soon propose some code, but any prior exchange with iota2 developers' will be welcome!