What's new about OTB? Rotating Header Image

Monteverdi

From applications to THE application

The OTB-Applications package makes available a set of simple software tools which were designed to demonstrates what can be done with OTB. Many users started using these applications for real processing tasks, so we tried to make them more generic, more robust and easy to use. OTB users have been asking for an integrated application for a while, since using several applications for a complete processing (ortho-rectification, segmentation, classification, etc.) can be a burden. Recently, the OTB team received a request from CNES’ Strategy and Programs Office in order to provide an integrated application for capacity building activities (teaching, simple image manipulation, etc.). The specifications included ease of integration of new processing modules.

Monteverdi is born

The OTB team came up with a smart software architecture which allows building processing chains by selecting modules from a set of menus. It supports raster and vector data and integrates most of the already existing OTB applications. The architechture takes advantage of the streaming and multi-threading capabilities of the OTB pipeline. It also uses cool features as processing on demand and automagic file format I/O. The application is called Monteverdi, since this is the name of the Orfeo composer.This is also in remebering of the great (and once open source) Khoros/Cantata software.

Anatomy of an application

So what does Monteverdi look like?

Main screen

Main window

This is Monteverdi’s main window where the menus are available and where you can see the different modules which have been set up for the processing. Input data are obtained by readers. When you choose to use a new module, you select its input data, and therefore, you build a processing pipeline sequentially. Let’s have a look at the different menus. The first one is of course the “File” menu. This menu allows you to open a data set, to save it and to cache it. The “data set” concept is interesting, since you don’t need to define by hand if you are looking for an image or a vector file. Of course, you don’t need to do anything special for any particular file format. So opening a data set will create a “reader” which will appear in the main window. At any time, you can use the “save data set” option in order to store to a file the result of any processing module. The “cache data set” is a very interesting thing. As you know, OTB implements processing on demand, so when you build a processing pipeline, no processing takes place unless you ask for it explicitly. That means that you can plug together the opening of a data set, an orthorectification and a spleckle filter, for example, but nothing will really be computed until you trigger the pipeline execution. This is very convenient, since you can quicly build a processing pipeline and let it execute afterwards while you have a coffee. In Monteverdi, you execute the processing by saving the result of the last module of a pipeline. However, sometimes, you may want to execute a part of the pipeline without wanting to give a name to the obtained result. You can do this by caching a data set. That is, the result will be stored in a temporary file which will be created in the “Caching’ directory created by the application. Another situation in which you may need to cache a data set is when you need the input of a module to exist when you set its parameters. This is nor a real requirement, since Monteverdi will generate the needed data by streaming it, but this can be inefficient. This for instance about visualization of the result of a complex processing. Using streaming for brwsing through the result image means processing the visible part every time you move inside the image. Caching the data before visualization generated the whole data set in advance allowing for a more swift display. All modules allow you to cache their input data sets. The “File” menu gives you 2 other useful modules: one for concatenating images into one single multi-band image (they need to have the same size) and another one for extracting regions of interest (ROI) from an image. The following figure shows the concatenation module parameter window.

Concatenate images

Concatenate images

The pink button to the right of the image selection menu indicates that the image has not been generated (streamed). If you push the button, the image will be cached.

Image geometry

Another interesting menu is the “Geometry” one. It provides modules for ortho-rectification of images using the available sensor models, it allows for changing the projection of an image and also allows to project one image into the geometry of another one. Finally it provides a module for homologous point extration and image resmpling in order to manually co-register 2 images. Here you have a snapshot of this module. hpe You can select among several geometrical transforms and the module will give you estimates of the errors. A similar module, allows you to create a RPC sensor model for an image by manually choosing ground control points.

Image filetring and feature extraction

The “Filtering” module provides useful modules for image processing. You have access to the classical “Feature Extraction” application: fex You can apply a mean shift filtering and clustering: ms You can perform pansharpening if you have a panchromatic and a zoomed and registered multispectral image (you can generated them by ortho-rectifying the panchromatic and superimposing the multispectral on top of it). You can also use the “Band math” module to perform simple arithmetic operations on images:

bm

You can also perform general thresholding: ths The “Learning” menu gives you access to SVM supervised classification (this is exactly the existing OTB application) and also to unsupervised K-means clustering.

More to come

Monteverdi is designed to host virtually an infinite number of modules, so the examples given above are just that: examples.