A new module for vector to image registration

A lot of geospatial applications need to work both with high resolution imagery and with large georeferenced vector datasets (e.g. Open Street Map). Very often, it can be a hard task to register these data properly and correct the misalignments. These misalignments can be due to a poor georeferencing accuracy of the sensor (e.g. sometimes the case for UAV), or to some digitalization problem in the input database.

Database (from a LIDAR image) projected on a WV3 image (from IARPA 3D reconstruction challenge dataset)

OTB now provides a new remote module to efficiently achieve vector to image registration. This remote module can work on georeferenced data or in a raw geometry (sensor). Once the registration had been processed, it can evaluate results (precision / robustness of the registration).

Our method needs few prior-knowledge on the features to match : it will try to match some lines (segments) contained in a vector-database with some corresponding segments detected in the target image.

The method first detect segmentsin the target image, whether with OTB line segment detection application, or from another remote module : “fast line segment detection”

Segments detected with the fast line segment detection algorithm

Then, the main step on the algorithm consists in filtering relevant segments from the detected segments. To do so, we apply successive filters that implement different criteria (length, perpendicularity, proximity to another segment, etc.) and select pairs of segments that are close enough and form a right angle (with respect to a certain threshold).

After the filtering steps, only some segments are kept (eg : building corners)

Then, we try to find the best match between the two sets of segments, by minimizing the sum of distances between the segments from the database and their counterparts from the image. The translation is then applied to the database (or could be applied to the image)

The translation is the best compromise that aligns database with detected segments in the target image

The remote module can be checked out from https://gitlab.orfeo-toolbox.org/remote_modules/image-to-db-registration

Different applications are available :

  • otbLSDtoDBRegistration is the main application that takes as input a vector dataset of “line segments” and a vector dataset to register (polygon or line geometries)
  • otbVectorDataEvaluation is used to evaluate the accuracy of the registration, by matching database segments with initial detected segments from the image
  • otbCropAroundDB is used to extract a part of the image around the projected database before calling the segments detection algorithm

A python script (ImageToDBRegistration) can chain all the different steps : segments detection, projection of the datasets in a common geometry, segments filtering and matching, evaluation.

If you also install the fast line segment detection algorithm (https://gitlab.orfeo-toolbox.org/remote_modules/lsd-cmla), you will benefit from a more efficient segment detection step.

This method has also been tested to register two images, by first detecting segments then applying the registration algorithm on the two vector datasets. This will soon be implemented. A new mask based filter will also be implemented, for example to exclude some areas from segment matching (eg : vegetated areas).

Image to image registration, between a WV3 image and a LIDAR image.

More information on the method can be obtained from here.

The fast line segment detection method is described here.