What is a major version? Generally is means a significant jump in functionality. With the next version OTB 4.0 will imply the addition of new high level functionality bringing the compatibility with ITKv4.
There was 3 major releases in the history of OTB:
- Version 1.0 (Fri Jun 30 14:10:37 2006) : core system, I/O and basic filtering
- Version 2.0 (Fri Dec 14 15:48:40 2007) : geometric and radiometric corrections
- Version 3.0 (Fri May 15 17:40:44 2009) : supervised learning, change detection
Almost five years later (and lots of other releases!) let us now introduce the new OTB version 4.0.
3bf0dfa82e3e (and a few commits later…)
Here we are, the new major version of OTB (called 4.0) is out!
3bf0dfa82e3e: this number is the result of months of hard work for the OTB development team, it is the changeset which sums up a part of this work and merge a bunch of patches which makes OTB compatible with the last major version of ITK (called ITKv4).
As you know OTB is mainly based on ITK(Insight Toolkit), as ITK is used as the core element of OTB and most of OTB classes inherit from ITK classes. Moreover the software development procedure of OTB is strongly inspired from ITK’s (Extreme Programming, test-based coding, Generic Programming, documentation generation, etc.).
When ITK moved to a new major version in 2012 it was obvious that OTB should catch up with this new version at some point.
The new ITK: prepare the next 10 years
The Insight Toolkit (ITK) is an open-source, cross-platform system that provides an extensive suite of software tools for image analysis. ITK went through a refactoring process in 2011 with major changes to software organization. The main goals of the refactoring process were:
- Improve DICOM support
This is a major version which improve the library in all parts:
Moreover ITK developers took into account the importance of helping people during this transition and set up lot of great tools to help people mitigate the effect of the migration (Gerrit, dynamic migration guide, starter kit,etc):
All this tools really helped the OTB team to make this transition smoother and we want to thank Insight ToolKit developers for that.
Since the first 4.0 version in late 2011, ITK went through regular releases which continuously improved the library. The project is still really active and the last stable version of ITK, with which OTB is now compatible, is the 4.5.0 released in December 2013. The ITK source code is now available on GitHub:
If you want to learn more about the power of ITK, go check the wiki which provides lots of useful resources and documentation about the project:
What’s new in OTB 4.0 ?
Compatibility with ITKv4 (a better compatibility)
As said, the main goal of this release is to make OTB compatible with the new generation of ITK, which implied changes in OTB classes. Moreover OTB was previously using an internal patched version of ITK 3.20 which would have make the migration to new version of ITK painful and uncertain. This is not the case anymore, as OTB 4.0 can be built using an external, un-patched version of ITK. While this is now the default behaviour on most systems, we maintained the internal version of ITK in OTB (CMake option OTB_USE_EXTERNAL_ITK=OFF) which allows you to compile OTB without having to install or build ITK on you own.
We took advantage of this major change in OTB to make some code clean up. Our main objective was to reduce the number of dependencies of the library and focus on functions which make OTB a useful library for remote sensing image processing. What was done:
- Remove PQXX dependency and related classes,
- Remove LibLAS dependency and related classes,
- Remove FLTK dependency in OTB and move all visualization classes related to FLTK in Monteverdi, where they are available for client code,
- Remove GETTEXT dependency and related classes,
- Remove codes related to ITK Insight Journal.
Why switching to OTB 4.0 ?
Because you must switch to ITKv4 🙂
If you’re asking yourself why switching to ITKv4 API is a good idea, have a look to this page which list all the major new features included in this version:
Even if there are some major changes in the library, this migration should not imply a lot of modifications to OTB users as :
- Many deprecated classes are still available,
- Their are few changes regarding OTB API as most changes have been made inside OTB filters,
- It does not impact OTB applications or Monteverdi.
Where to start?
We tried our best to mitigate the impact of this migration and we are sure that this new version will help to work with a larger community for OTB and make the library more useful and powerful for many different applications.
To help OTB users during this transition, we set up a page on the wiki which is a complete list of all modifications of API related to this migration:
It should help you migrate your code from OTB 3.X to OTB 4.0.
We are looking forward for your feedback. Don’t hesitate to contact us on the mailing list if you’re facing issue regarding this migration.
We are currently working on a new version of Monteverdi2 which will include a new and fast visualization framework based on the OpenGl rendering API ice.
OTB development team