Local displacements estimation between two images is a common task in many remote sensing applications : DEM extraction, clouds detection … In Orfeo ToolBox, some filters are already available to perform this kind of task, like the otb::NCCRegistrationFilter based on a finite differences method or the otb::DisparityMapEstimationMethod which allows to apply ITK registration framework locally on an irregular grid. Yet, an efficient implementation of the classical block matching algorithm was still missing. Starting next release and already available for our early users (see how to get the latest source code), the otb::FineRegistrationImageFilter along with the Fine Correlation Monteverdi module intend to fill the gap.
The new otb::FineRegistrationImageFilter uses the full range of image-to-image metrics available in ITK (see the available metrics here) to perform block matching on a given neighborhood at each location of the reference image. The filter has two outputs, the optimum metric field and the deformation field (i.e. displacement in each image direction for which the optimum has been found), and both outputs support streaming. The filter performs dichotomic sub-pixel refinement up to a user defined accuracy, allows to generate coarser result with respect to a given grid step and can take into account an initial offset between the two images. It can also process reference and moving images with different sizes, origins and spacings. Here are some results of applying this filter to a pair of small stereo patches with two different metrics: the correlation and the mean reciprocal square difference (MRSD).
This new filter can be accessed through Monteverdi using the new Fine Correlation module. This module allow to perform displacement estimation using the standard correlation metric. It also includes an optional gaussian smoothing of the input images, an optional resampling of the second image and allows to tune all the parameters in a clear and compact way. Here is what it looks like.
Here is an example of application of this new feature. Using Monteverdi, we produce two patches of ortho-image from a Quickbird bundle product over a cloudy part of the scene. The panchromatic image has a ground sampling distance of 0.7 meters, whereas the multispectral one has 2.8 meters.
Due to the space between the panchromatic and multispectral detectors, there is a small stereo effect between the two images. This space also induces a small time delay between the two images, that is why some moving objects (such as cars) show a small displacement. These two effects are well known (see this paper for instance).
Using the new Fine Correlation module, it is possible to estimate displacements between the intensity of the multispectral image and a gaussian-smoothed version of the panchromatic image. In the below image of the estimated displacement amplitude, we can clearly see that the cloud, being a lot higher than surrounding ground, shows a noticeable displacement due to the stereo effect.
Please feel free to give a try to the new filter and module, and do not hesitate to send your feedback!