next_inactive up previous


ORFEO Toolbox (OTB) Frequently Asked Questions (FAQ).

OTB Development Team


Contents

Introduction

What is OTB?

OTB, the ORFEO Toolbox is a library of image processing algorithms developed by CNES in the frame of the ORFEO Accompaniment Program. OTB is based on the medical image processing library ITK, http://www.itk.org, and offers particular functionalities for remote sensing image processing in general and for high spatial resolution images in particular.

OTB provides:

Many of these functionalities are provided by ITK and have been tested and documented for the use with remote sensing data.

What is ORFEO?

ORFEO stands for Optical and Radar Federated Earth Observation. In 2001 a cooperation program was set between France and Italy to develop ORFEO, an Earth observation dual system with metric resolution: Italy is in charge of COSMO-Skymed the radar component development, and France of PLEIADES the optic component.

The PLEIADES optic component is composed of two "small satellites" (mass of one ton) offering a spatial resolution at nadir of 0.7 m and a field of view of 20 km. Their great agility enables a daily access all over the world, essentially for defense and civil security applications, and a coverage capacity necessary for the cartography kind of applications at scales better than those accessible to SPOT family satellites. Moreover, PLEIADES will have stereoscopic acquisition capacity to meet the fine cartography needs, notably in urban regions, and to bring more information when used with aerial photography.

The ORFEO "targeted" acquisition capacities made it a system particularly adapted to defense or civil security missions, as well as critical geophysical phenomena survey such as volcanic eruptions, which require a priority use of the system resources.

With respect to the constraints of the franco-italian agreement, cooperations have been set up for the PLEIADES optical component with Sweden, Belgium, Spain and Austria.

Where can I get more information about ORFEO?

At the PLEIADES HR web site: http://smsc.cnes.fr/PLEIADES/.

What is the ORFEO Accompaniment Program?

Beside the Pleiades (PHR) and Cosmo-Skymed (CSK) systems developments forming ORFEO, the dual and bilateral system (France - Italy) for Earth Observation, the ORFEO Accompaniment Program was set up, to prepare, accompany and promote the use and the exploitation of the images derived from these sensors.

The creation of a preparatory program is needed because of :

This program was initiated by CNES mid-2003 and will last until 2009. It consists in two parts, between which it is necessary to keep a strong interaction:

This Accompaniment Program uses simulated data (acquired during airborne campaigns) and satellite images quite similar to Pleiades (as QuickBird and Ikonos), used in a communal way on a set of special sites. The validation of specified products and services will be realized with those simulated data

Apart from the initial cooperation with Italy, the ORFEO Accompaniment Program enlarged to Belgium, with integration of Belgian experts in the different WG as well as a participation to the methodological part.

Where can I get more information about the ORFEO Accompaniment Program?

Go to the following web site: http://smsc.cnes.fr/PLEIADES/A_prog_accomp.htm.

Who is responsible for the OTB development?

The French Centre National d'Études Spatiales, CNES, initiated the ORFEO Toolbox and is responsible for the specification of the library. CNES funds the industrial development contracts and research contracts needed for the evolution of OTB.

Licence

Which is the OTB licence?

OTB is distributed under a free software licence:
http://www.cecill.info/licences/Licence_CeCILL_V2-en.html.

If I write an application using OTB am I forced to distribute that application?

No. The license gives you the option to distribute your application if you want to. You do not have to exercise this option in the license.

If I wanted to distribute an application using OTB what license would I need to use?

The CeCILL licence.

I am a commercial user. Is there any restriction on the use of OTB?

OTB can be used internally ("in-house") without restriction, but only redistributed in other software that is under the CeCILL licence.

Getting OTB

Who can download the OTB?

Anybody can download the OTB at no cost.

Where can I download the OTB?

Go to http://otb.cnes.fr and follow the "download OTB" link. You will have access to the OTB source code and to the Software User's Guide.


Installing OTB

Which platforms are supported

OTB is a multi-platform library. It has successfully been installed on the following platforms:

Support for the following platforms is planned:

Which libraries/packages are needed before installing OTB?

Main steps

In order to install OTB on your system follow these steps (in the given order):
  1. Install CMake.
  2. Install GDAL.
  3. Install Fltk using the CMake scripts. Do not use the configure approach or the project files for Microsoft Visual Studio shipped with Fltk.
  4. Install OTB using CMake for the configuration.

We assume that you will install everything on a directory called INSTALL_DIR, which usually is /usr/local, /home/jordi/local or whatever you want. Make sure that you have downloaded the source code for:

Unix/Linux Platforms

Important note: on some Linux distributions (eg. Debian, Ubuntu, Fedora), you may use the official packages for CMake, GDAL and Fltk. Once you have installed these packages, you can skip to step 4.

  1. Install GDAL
          cd INSTALL_DIR
          gunzip gdal.1.4.2.tar.gz
          tar xvf gdal.1.4.2.tar
          cd gdal.1.4.2
          ./configure --prefix=INSTALL_DIR
          make
          make install
    

    It seems to be a bug in the GDAL install procedure: if you are installing it without root privileges, even if your INSTALL_DIR is a directory for which you have the write permissions, GDAL tries to copy the python bindings together with the Python site packages, which are usually somewhere in /usr/lib.

    Actually, since this is the last step in the GDAL install procedure, when you get the error message, the GDAL libs and header files are already installed, so you can safely ignore the error.

    The -without-python option passed to the configure step avoids this. However, some users may want to have Python bindings, so recommending this option for the install may not be OK for everybody.

  2. Install CMake
          cd INSTALL_DIR
          gunzip cmake-2.4.7.tar.gz
          tar xvf cmake-2.4.7.tar
          cd cmake-2.4.7
          ./configure --prefix=INSTALL_DIR
          make
          make install
    
    In order to properly use cmake, add INSTALL_DIR/bin to your path with export PATH=$PATH:INSTALL_DIR/bin or something similar.

  3. Install Fltk (optional) using CMake (do not use the configure script)
          cd INSTALL_DIR
          bunzip2 fltk-1.1.7-source.tar.bz2 OR
          gunzip fltk-1.1.7-source.tar.gz
          tar xvf fltk-1.1.7-source.tar
          mkdir Fltk-binary
          cd Fltk-binary
          ccmake ../fltk-1.1.7
          --> follow the CMake instructions, in particular:
              --> set CMAKE_INSTALL_PREFIX to INSTALL_DIR within CMake
    	  --> set BUILD_EXAMPLES to ON within CMake
    	  --> generate the configuration with 'g'
          make
          make install
          --> check that the examples located in
          INSTALL_DIR/Fltk-binary/bin work, in particular, the fractals
          example which makes use of the OpenGL library needed by OTB.
    

    You can choose not to install Fltk but in this case, you will not be able to compile the visualization features of OTB.

  4. Install OTB
          cd INSTALL_DIR
          gunzip OrfeoToolbox-2.0.0.tgz
          tar xvf OrfeoToolbox-2.0.0.tar
          mkdir OTB-Binary
          cd OTB-Binary
          ccmake ../OrfeoToolbox-2.0.0
          --> follow the CMake instructions, in particular:
    	  --> set BUILD_EXAMPLES to ON within CMake
    	  --> set BUILD_SHARED_LIBS to ON within CMake
    	  --> set BUILD_TESTING to OFF within CMake
    	  --> set CMAKE_INSTALL_PREFIX to INSTALL_DIR within CMake
    	  --> set GDAL_INCLUDE_DIRS to INSTALL_DIR/include within CMake
    	  --> set GDAL_LIBRARY_DIRS to INSTALL_DIR/lib within CMake
    	  --> set OTB_USE_EXTERNAL_ITK to OFF within CMake
    	  --> set FLTK_DIR to INSTALL_DIR/Fltk-Binary within CMake OR
    	      if you do not have FLTK press 't' to change to advanced
                  mode and set OTB_USE_VISU to OFF 
    	  --> generate the configuration with 'g'
           make
    

    If you want a faster compilation and don't want the compilation of the examples, you can set BUILD_EXAMPLES to OFF. Some plateforms apparently have more difficulties with shared libraries, if you experience any problem with that, you can set BUILD_SHARED_LIBS to OFF but the built size might reach 1 GB.

    After these steps, you have the source of OTB in INSTALL_DIR/OrfeoToolbox-2.0.0 and the compiled binaries and libraries in INSTALL_DIR/OTB-Binary. Keeping the sources is important as most programs you will designed will need an access to the txx files during compilation. However, the binaries directory knows were its sources are and you will need to point only to the INSTALL_DIR/OTB-Binary when the cmake for your program will ask you where the OTB is.

    If you want to put OTB in a standard location, you can proceed with:

          make install
    

    but this is only optional.

Microsoft Visual Studio C++ 7.1

  1. Install GDAL

    MSVC++ 7.1 project files are needed to compile GDAL.

    These files can be downloaded at http://vterrain.org/dist/gdal132_vc71.zip.

    Then, unzip it to your GDAL folder, and it will create a folder (named "VisualStudio").

    Load the solution (.sln file) and build the gdal project.

    More details can be found at http://vterrain.org/Distrib/gdal.html.

  2. Install Fltk

    Use CMake on Windows to generate MSVC++ 7.1 project files from fltk sources.

    Open the solution and build the fltk project.

  3. Install OTB

    Use CMake on Windows to generate MSVC++ 7.1 project files from otb sources.

    Open the solution and build the otb project.

Microsoft Visual Studio C++ 8.0

  1. Install GDAL

    Open a MS-DOS prompt.

    Run the VCVARS32.bat script that comes with the compiler (it can be found in Microsoft Visual Studio 8/VC/bin).

    Then, go to the GDAL root directory, and tape :

                    nmake /f makefile.vc
    

    Once the build is successful, tape this line to install GDAL :

                    nmake /f makefile.vc install
    

    More details about this install can be found at http://www.gdal.org/gdal_building.html.

  2. Install Fltk

    Use CMake on Windows to generate MSVC++ 8.0 project files from fltk sources.

    Open the solution and build the fltk project.

  3. Install OTB

    Use CMake on Windows to generate MSVC++ 8.0 project files from otb sources.

    Open the solution and build the otb project.

MinGW on Windows platform

  1. Download the lastest version of mingw and msys at http://www.mingw.org and install those two programs.

    Then, launch MinGW : a prompt appears (similar to Linux one).

  2. Install GDAL

    To compile GDAL, at configure step, use these options :

    	./configure -prefix=INSTALL_DIR --host=mingw32 --without-libtool 
    	--without-python --with-png=internal --with-libtiff=internal
    	--with-jpeg=internal
    
    Then the usual make and make install.

  3. Install Fltk

    Generate MSYS Makefiles with CMake (Windows version) from fltk sources.

    Then, under prompt, tape make and make install where you have generated Makefiles with CMake.

  4. Install OTB

    Similar to fltk install.

Cygwin

  1. Download the lastest version at http://www.cygwin.com and install it. Then, launch it, a prompt appears (similar to Linux one).

  2. Install GDAL

    To compile GDAL, at configure step, use these options :

    	./configure --prefix=INSTALL_DIR --with-png=internal --with-libtiff=internal
    	--with-jpeg=internal
    
    Then the usual make and make install.

  3. Install Fltk

    See Linux part for details (same procedure).

  4. Install OTB

    See Linux part for details (same procedure).

That should be all! Otherwise, subscribe to otb-users@googlegroups.com and you will get some help.

Specific platform issues

SunOS/HP UX

Due to a bug in the tar command shipped with some versions of SunOS, problems may appear when configuring, compiling or installing OTB.

See http://www.gnu.org/software/tar/manual/tar.html#Checksumming for details on the bug characterization.

The solution is to use the GNU tar command if it is available on your system (gtar).

Linux Debian/Ubuntu

If you used the official gdal package version 1.4.0, the library is named libgdal1.4.0.so so you have to create a simlink named libgdal.so: ln -s /usr/lib/libgdal1.4.0.so /usr/lib/libgdal.so.

Cygwin

Due to an unknown bug, Fltk can't compile on some versions of Cygwin (OpenGL problems).

Put OTB_USE_VISU to OFF to avoid these problems.

Some bugs can appear while compiling GDAL with JPEG2000 files : disable this format to solve the problem.

MSVC++ 8.0

Execution errors can appear on some platforms, using GDAL compiled with MSVC++ 8.0.

This problem can be solved by downloading GDAL binaries for Windows at http://vterrain.org/Distrib/gdal.html.

Using OTB

Where to start ?

OTB presents a large set of features and it is not always easy to start using it. After the installation, you can proceed to the tutorials (in the Software Guide). This should give you a quick overview of the possibilities of OTB and will teach you how to build your own programs.

What is the image size limitation of OTB ?

The maximum physical space a user can allocate depends on her platform. Therefore, image allocation in OTB is restricted by image dimension, size, pixel type and number of bands.

Fortunately, thanks to the streaming mechanism implemented within OTB's pipeline (actually ITK's), this limitation can be bypassed. The use of the otb::StreamingImageFileWriter at the end of the pipeline, or the itk::StreamingImageFilter at any point of the pipeline will seamlessly break the large, problematic data into small pieces whose allocation is possible. These pieces are processed one afther the other, so that there is not allocation problem anymore. We are often working with images of $ 25000 \times 25000$ pixels.

For the streaming to work, all the filters in the pipeline must be streaming capable (this is the case for most of the filters in OTB). The output image format also need to be streamable (not PNG or JPEG, but TIFF or ENVI, for instance).

To tune the size of the streaming pieces, the OTB has two CMake variables. The first is named OTB_STREAM_IMAGE_SIZE_TO_ACTIVATE_STREAMING. It represents the minimum size of the image in bytes for which streaming may be helpful. The second, OTB_STREAM_MAX_SIZE_BUFFER_FOR_STREAMING, specifies the maximum size in bytes a streaming piece should have. It can be used to compute the optimal number of pieces to break the input data into.

These two parameters have been used in the OTB-Applications/Utils/ applications. Take this as an example of how they can be used. They can also be tuned by the user to match her specific needs.

Getting help

Is there any mailing list?

Yes. There is a discussion group at http://groups.google.com/group/otb-users/ where you can get help on the set up and the use of OTB.

Which is the main source of documentation?

The main source of documentation is the OTB Software Guide which can be downloaded at http://orfeo-toolbox.sourceforge.net/Docs/OTBSoftwareGuide.pdf. It contains tenths of commented examples and a tutorial which should be a good starting point for any new OTB user. The code source for these examples is distributed with the toolbox. Another information source is the on-line API documentation which is available at http://orfeo-toolbox.sourceforge.net/Doxygen.

Contributing to OTB

I want to contribute to OTB, where to begin?

First, you can send an email to otb@cnes.fr to let us know what functionality you would like to introduce in OTB. If the functionality seems important for the OTB users, we will then discuss on how to send your code, make the necessary adaptions, check with you that the results are correct and finally include it in the next release.

What are the benefits of contributing to OTB?

Besides the satisfaction of contributing to an open source project, we will include the references to relevant papers in the software guide. Having algorithms published in the form of reproducible research helps science move faster and encourages people who needs your algorithms to use them.

You will also benefit from the strengths of OTB: multiplatform, streaming and threading, etc.

What functionality can I contribute?

All functionalities which are useful for remote sensing data are of interest. As OTB is a library, it should be generic algorithms: change, detection, fusion, object detection, segmentation, interpolation, etc.

More specific applications can be contributed to the OTB-Applications package.

OTB's Roadmap

Which will be the next version of OTB?

OTB's version numbers have 3 digits. The first one is for major versions, the second one is for minor versions and the last one is for bugfixes.

The first version was 1.0.0 in July 2006. Version 1.2.0, 1.4.0 and 1.6.0 were released in between and the current one 2.0.0 was released in December 2007. The next one will probably be 2.2.0.

What is a major version?

A major version of the library implies the addition of high-level functionalities as for instance image registration, object recognition, etc.

What is a minor version?

A minor version is released when low-level functionalities are available within one major functionality, as for instance a new change detector, a new feature extractor, etc.

What is a bugfix version?

A bugfix version is released when significant bugs are identified and fixed.

When will the next version of OTB be available?

We plan to release major new OTB version once a year, that is, version 2.0.0 was available at the end of 2007, version 3.0.0 should be released by the end of 2008, and so on.

What features will the OTB include and when?

There is no detailed plan about the availability of OTB new features, since OTB's content depends on ongoing research work and on feedback from thematic users of the ORFEO Accompaniment Program.

Nevertheless, the main milestones for the OTB development are the following:


next_inactive up previous
Jordi Inglada 2007-12-17