OTB Chapter 1

1.1 Organization

This software guide is divided into several parts, each of which is further divided into several chapters.Part I is a general introduction to OTB, with—in the next chapter—a description of how to install theORFEO Toolbox on your computer. Part I also introduces basic system concepts such as an overview of thesystem architecture, and how to build applications in the C++ programming language. Part II is a shortguide with gradual difficulty to get you start programming with OTB. Part III describes the system fromthe user point of view. Dozens of examples are used to illustrate important system features.Part IV is for the OTB developer. It explains how to create your own classes and extend thesystem.

 

1.2 How to Learn OTB

There are two broad categories of users of OTB. First are class developers, those who create classes in C++.The second, users, employ existing C++ classes to build applications. Class developers must be proficient inC++, and if they are extending or modifying OTB, they must also be familiar with OTB’s internal structuresand design (material covered in Part IV).

The key to learning how to use OTB is to become familiar with its palette of objects and the ways ofcombining them. We recommend that you learn the system by studying the examples and then, if you are aclass developer, study the source code. Start by the first few tutorials in Part II to get familiar with the buildprocess and the general program organization, follow by reading Chapter 3, which provides an overview ofsome of the key concepts in the system, and then review the examples in Part III. You may alsowish to compile and run the dozens of examples distributed with the source code found in thedirectory OTB/Examples. (Please see the file OTB/Examples/README.txt for a descriptionof the examples contained in the various subdirectories.) There are also several hundreds oftests found in the source distribution in OTB/Testing/Code, most of which are minimallydocumented testing code. However, they may be useful to see how classes are used together in OTB,especially since they are designed to exercise as much of the functionality of each class aspossible.

 

1.3 Software Organization

The following sections describe the directory contents, summarize the software functionality in eachdirectory, and locate the documentation and data.

 

1.3.1 Obtaining the Software

Periodic releases of the software are available on the OTB Web site. These official releases are available afew times a year and announced on the ORFEO Web pages and mailing lists.

This software guide assumes that you are working with the latest official OTB release (available on the OTBWeb site).

 

1.4 Downloading OTB

OTB can be downloaded without cost from the following web site:

In order to track the kind of applications for which OTB is being used, you will be asked to complete a formprior to downloading the software. The information you provide in this form will help developers to get abetter idea of the interests and skills of the toolkit users.

Once you fill out this form you will have access to the download page. This page can be bookmarked to facilitate subsequent visits to the download site without having to complete any formagain.

Then choose the tarball that better fits your system. The options are .zip and .tgz files. The firsttype is better suited for MS-Windows while the second one is the preferred format for UNIXsystems.

Once you unzip or untar the file, a directory called OTB will be created in your disk and you will be readyfor starting the configuration process described in Section 2.2.3 on page 31.

You can also get the current version following instructions in Section 27.3.3, on page 1138.

 

1.4.1 Join the Mailing List

It is strongly recommended that you join the users mailing list. This is one of the primary resources forguidance and help regarding the use of the toolkit. You can subscribe to the users list onlineat

The otb-users mailing list is also the best mechanism for expressing your opinions about the toolbox and tolet developers know about features that you find useful, desirable or even unnecessary. OTB developers arecommitted to creating a self-sustaining open-source OTB community. Feedback from users is fundamentalto achieving this goal.

 

1.4.2 Directory Structure

To begin your OTB odyssey, you will first need to know something about OTB’s software organization anddirectory structure. It is helpful to know enough to navigate through the code base to find examples, code,and documentation.

OTB is organized into several different modules. There are three: the OTB, OTB-Documents andOTB-Applications modules. The source code, examples and applications are found in the OTB module;documentation, tutorials, and material related to the design and marketing of OTB are found inOTB-Documents; and fairly complex applications using OTB (and other systems such as VTK and FLTK)are available from OTB-Applications. Usually you will work with the OTB module unless you are adeveloper, are teaching a course, or are looking at the details of various design documents. TheOTB-Applications module should only be downloaded and compiled once the OTB module is functioningproperly.

The OTB module contains the following subdirectories:

  • OTB/Code—the heart of the software; the location of the majority of the source code.
  • OTB/Examples—a suite of simple, well-documented examples used by this guide and to illustrate important OTB concepts.
  • OTB/Testing—a large number of small programs used to test OTB. These examples tend to be minimally documented but may be useful to demonstrate various system concepts.
  • OTB/Utilities—supporting software for the OTB source code. For example, libraries such as ITK.GDAL.

The source code directory structure—found in OTB/Code—is important to understand since otherdirectory structures (such as the Testing directory) shadow the structure of the OTB/Codedirectory.

  • OTB/Code/Common—core classes, macro definitions, typedefs, and other software constructs central to OTB.
  • OTB/Code/BasicFilters—basic image processing filters.
  • OTB/Code/IO—classes that support the reading and writing of data.
  • OTB/Code/Projections—classes allowing to deal with sensor models and cartographic projections.
  • OTB/Code/Radiometry—classes allowing to compute vegetation indices and radiometric corrections.
  • OTB/Code/Fusion—image fusion algorithms, as for instance, pansharpening.
  • OTB/Code/FeatureExtraction—the location of many feature extraction algorithms.
  • OTB/Code/ChangeDetection—a set of remote sensing image change detection algorithms.
  • OTB/Code/MultiScale—a set of functionalities for multiscale image analysis and synthesis.
  • OTB/Code/Learning—several functionnalities for supervised learning and classification.
  • OTB/Code/SpatialReasoning—several functionnalities high level image analysis using spatial reasoning techniques.
  • OTB/Code/Visualization—utilities for simple image visualization.
  • OTB/Code/Gui—very basic widgets for building graphical user interfaces, such as progress bars for filters, etc.
  • OTB/Code/DisparityMap—tools for estimating disparities – deformations – between images.
  • OTB/Code/Markov—implementation of Markov Random Fields regularization and segmentation.
  • OTB/Code/SARPolarimetry—some add-ons for SAR polarimetry synthesis and analysis.
  • OTB/Code/OBIA—tools for processing object base image analysis.
  • OTB/Code/GeospatialAnalysis—classes allowing to connect to geospatial database like PostGIS.

The OTB-Documents module contains the following subdirectories:

  • OTB-Documents/CourseWare—material related to teaching OTB.
  • OTB-Documents/LatexLATEX styles to produce this work as well as other documents.
  • OTB-Documents/SoftwareGuideLATEX files used to create this guide. (Note that the code found in OTB/Examples is used in conjunction with these LATEX files.)

The OTB-Applications module contains large, relatively complex examples of OTB usage.description.Some of

 

1.4.3 Documentation

Besides this text, there are other documentation resources that you should be aware of.

Doxygen Documentation.
The Doxygen documentation is an essential resource when working with OTB. These extensive Web pages describe in detail every class and method in the system. The documentation also contains inheritance and collaboration diagrams, listing of event invocations, and data members. The documentation is heavily hyper-linked to other classes and to the source code. The Doxygen documentation is available on-line at http://orfeo-toolbox.sourceforge.net/Doxygen/html.
Header Files.
Each OTB class is implemented with a .h and .cxx/.txx file (.txx file for templated classes). All methods found in the .h header files are documented and provide a quick way to find documentation for a particular method. (Indeed, Doxygen uses the header documentation to produces its output.)

 

1.4.4 Data

The OTB Toolkit was designed to support the ORFEO Acompaniment Program and its associated data. Thisdata is available http://smsc.cnes.fr/PLEIADES/index.htm.

 

1.5 The OTB Community and Support

OTB was created from its inception as a collaborative, community effort. Research, teaching, andcommercial uses of the toolkit are expected. If you would like to participate in the community, there are anumber of possibilities.

  • Users may actively report bugs, defects in the system API, and/or submit feature requests. Currently the best way to do this is through the OTB users mailing list.
  • Developers may contribute classes or improve existing classes. If you are a developer, you may request permission to join the OTB developers mailing list. Please do so by sending email to otb “at” cnes.fr. To become a developer you need to demonstrate both a level of competence as well as trustworthiness. You may wish to begin by submitting fixes to the OTB users mailing list.
  • Research partnerships with members of the ORFEO Acompaniment Program are encouraged. CNES will encourage the use of OTB in proposed work and research projects.
  • Educators may wish to use OTB in courses. Materials are being developed for this purpose, e.g., a one-day, conference course and semester-long graduate courses. Watch the OTB web pages or check in the OTB-Documents/CourseWare directory for more information.

1.6 A Brief History of OTB

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

The creation of a preparatory program1 is needed because of :

  • the new capabilities and performances of the ORFEO systems (optical and radar high resolution, access capability, data quality, possibility to acquire simultaneously in optic and radar),
  • the implied need of new methodological developments : new processing methods, or adaptation of existing methods,
  • the need to realise those new developments in very close cooperation with the final users for better integration of new products in their systems.

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

  • A Thematic part
  • A Methodological part.

The Thematic part covers a large range of applications (civil and defence ones), and aims at specifyingand validating value added products and services required by end users. This part includesconsideration about products integration in the operational systems or processing lines. It also includesa careful thought on intermediary structures to be developed to help non-autonomous users.Lastly, this part aims at raising future users awareness, through practical demonstrations andvalidations.

The Methodological part objective is the definition and the development of tools for the operationalexploitation of the future submetric optic and radar images (tridimensional aspects, change detection,texture analysis, pattern matching, optic radar complementarities). It is mainly based on R&D studies anddoctorate and post-doctorate research.

In this context, CNES2 decided to develop the ORFEO ToolBox (OTB), a set of algorithms encapsulated in a software library. Thegoals of the OTB is to capitalise a methological savoir faire in order to adopt an incremental developmentapproach aimin to efficiently exploit the results obtained in the frame of methodological R&Dstudies.

All the developments are based on FLOSS (Free/Libre Open Source Software) or existing CNESdevelopments.

OTB is implemented in C++ and is mainly based onITK3 (Insight Toolkit):

  • ITK is used as the core element of OTB
  • OTB classes inherit from ITK classes
  • The software development procedure of OTB is strongly inspired from ITK’s (Extreme Programming, test-based coding, Generic Programming, etc.)
  • The documentation production procedure is the same as for ITK
  • Several chapters of the Software Guide are litterally copied from ITK’s Software Guide (with permission).
  • Many examples are taken from ITK.

1.6.1 ITK’s history

In 1999 the US National Library of Medicine of the National Institutes of Health awarded six three-yearcontracts to develop an open-source registration and segmentation toolkit, that eventually came to be knownas the Insight Toolkit (ITK) and formed the basis of the Insight Software Consortium. ITK’s NIH/NLMProject Manager was Dr. Terry Yoo, who coordinated the six prime contractors composing the Insightconsortium. These consortium members included three commercial partners—GE CorporateR&D, Kitware, Inc., and MathSoft (the company name is now Insightful)—and three academicpartners—University of North Carolina (UNC), University of Tennessee (UT) (Ross Whitakersubsequently moved to University of Utah), and University of Pennsylvania (UPenn). The PrincipleInvestigators for these partners were, respectively, Bill Lorensen at GE CRD, Will Schroeder atKitware, Vikram Chalana at Insightful, Stephen Aylward with Luis Ibáñez at UNC (Luis is nowat Kitware), Ross Whitaker with Josh Cates at UT (both now at Utah), and Dimitri Metaxasat UPenn (now at Rutgers). In addition, several subcontractors rounded out the consortiumincluding Peter Raitu at Brigham & Women’s Hospital, Celina Imielinska and Pat Molholt atColumbia University, Jim Gee at UPenn’s Grasp Lab, and George Stetten at the University ofPittsburgh. 

原文地址:https://www.cnblogs.com/xiangshancuizhu/p/1917920.html