Today we are releasing a new major version: Orfeo ToolBox 6.0! We’ve got some pretty exciting new features to show. As usual, ready-to-use binary packages are available for Windows, Linux and Mac:
You can also checkout the source directly with git:
git clone https://email@example.com/git/otb.git OTB -b release-6.0
New license: Apache v2.0
OTB used to be released under CeCILL v2, a GPL-like, strong copyleft license. Copyleft is a very good protection for open-source software in general, as it ensures that it will remain open. But in the current context where OTB can be useful, copyleft may also restrict the use of the library. With hindsight, we observed that OTB was considered by many institutions and companies, who would prefer to integrate OTB under different terms. From a practical standpoint, we think that a more permissive license will improve OTB and its community. This licensing change also means better management of contributors with the implementation of specific documents to respect the rights of the latter (see the RFC for details).
Note that moving to the Apache license has no impact on users which contributes code as remote modules : they will not have to relicense or follow the new OTB license. Indeed the modular architecture of OTB allows to integrate external modules with different (open-source) licenses as OTB core (GPL for instance). Also note that it is already the case for the OTB standalone binary package distributed on www.orfeo-toolbox.org, since it includes the GPL FFTW module in ITK: as a consequence the full OTB standalone binary package license is GPL and not CeCILL V2.
Unsupervised learning framework
While OTB has had a collection of supervised machine learning algorithms for a while, 6.0 brings the foundation for unsupervised methods. At the core of the framework is otb::MachineLearningModel, from which all learning algorithms are derived. This collection of changes adds support for fitting a model without training data (labeled samples), and any unsupervised learning method we can add in the future. OTB 6.0 also updates the TrainImagesClassifier and TrainVectorClassifier applications to support KMeans models (implemented in Shark). Finally, the confusion matrix application now supports computing its unsupervised cousin: contingency tables.
Sentinel-1 IW SLC deburst filter
IW is the routine acquisition mode mostly used for Sentinel-1. For this mode, SLC images are composed of several bursts, separated by black lines. Burst are overlapping in azimuth time (and thus in lines), which means that the last lines of a burst correspond to the first lines of next bursts. Bursts lines are synchronized in azimuth time. This image construction makes the processing of off-the-shelf IW product difficult. If ossimSarSensorModel can handle bursts perfectly, the inverse sensor model is discontinuous which may cause artifacts during orthorectification resampling. Other neighborhood based processing techniques such as speckle filtering will also react poorly near bursts limits. The implemented deburst operation consists in removing black and burst overlapping lines so as to get a continuous, regularly azimuth time sampled image. Sensor model parameters are updated accordingly, which means that ortho-rectification can still be performed after deburst (and it is actually advised to do it that way). OTB now comes with a deburst filter working for Sentinel-1 IW products, as well as an application to use the filter.
New applications, or The Hunt for Lost Treasures
OTB is full of lost treasures: the tragedy of great features buried deep within the layers of the sandwich. Although plastic keyboards have replaced rusty swords as our weapons, we hunt to expose them. We are knights sworn to GUI, god of the mythical friendly user interface. Our honor will not rest until the evils of incompatible C++ syntax parsers are condemned to oblivion and guarded by well designed, cross-platform abstractions. For the git log is Dark and full of Terrors.
New “bands” extended filename option
Following user requests, we have add a new extended filename to OTB. This means that any time you give a path to a file, you can use the new “bands” arguments to specify and subset of spectral bands to be used as input. For example:
otbcli_Quicklook -in "landsat8.tif?bands=2,3,4" -out quicklook.tif
Will generate a Quicklook image with only the three bands with numbers 2, 3 and 4.
Note that this also works the other way around: for outputs! If you are writing an image output, but only want to save a subset of bands, you can now do the following, with any OTB application:
otbcli_Quicklook -in landsat8.tif -out "quicklook.tif?bands=2,3,4"
A new major release is a great opportunity to remove deprecated code. Old implementations, obsolete examples, duplicated methods with typos, and other relics from the past that have been marked deprecated were removed in a series of epic commits where the amount of code added is negative.
Other spring cleaning activities included support for OpenCV3 (long overdue), and many bugfixes. You can see the full list of changes in the Release Notes.
Happy remote sensing!