17.1. Orfeo工具箱¶
OTB 作为基于Insight Toolkit(ITK)库的图像处理算法开源库。 它提供遥感功能,特别是对于高空间分辨率图像。 OTB 采用自由软件许可证(OTB 6.0以来的Apache 2.0许可证,早期版本的CecILL v2)下分发。 该许可证允许任何人随时检查和修改软件的源代码, 并在另一个软件中使用OTB 的原始或修改版本(新的Apache 2.0许可证允许我们不受限制地这样做)。 该免费许可证鼓励用户贡献并促进可重复搜索。
17.2. 历史¶
OTB 的开发始于2006年,作为ORFEO计划的方法学一部分, 旨在准备、支持和促进对来自昂宿星(PHR)和CSK卫星的图像的使用和利用。 它是一组算法组件,使我们能够利用方法论知识并从研发结果中受益。
该工具箱在多个平台上进行了广泛测试。大多数功能还适合尽可能多地使用并行化机制处理大型图像。
OTB 被越来越多的用户使用,并提供了广泛的基本算法、最先进的技术和图像分析和地理信息生成的高级功能。
基于OTB 开发了其他项目并满足非开发者的其他需求:
in 2009:
Monteverdi
, which is a software for visualization and interaction with data;in 2011: OTB applications, a set of utilities offering higher level functions from the library (classification, segmentation, extraction of primitives, etc.). These applications can be used to process the image on the command line or via a dedicated graphical interface. The applications are adapted for the purpose of prototyping processing pipelines and allowing a large volume of data to be processed. The architecture of these applications is based on a plug-in mechanism, which facilitates their use in other processing platforms, including Monteverdi, Quantum GIS and ESA SNAP ToolBox.
自ORFEO计划结束以来,OTB 的使用范围不断扩大,并且该套件已在各种环境中使用, 这说明了该软件的多功能性。 如今,OTB 的使用正在从ESA图像处理设施Sentinel-2等运营生产中心的开发转向Terr'Image等教育软件的集成, 允许教师使用卫星图像来创建教学序列。
在过去的十年里,OTB 有了很大的发展。 OTB 最初被认为是一个专为开发人员提供高分辨率空间图像(更具体地说是昂宿星)的C++库, 现在被认为是遥感图像处理的一把真正的“瑞士军刀”。 OTB 既面向终端用户,使用图形工具(Monteverdi,QGIS处理)、 批处理(命令行、python脚本)和部署在高性能计算基础设施上的数据中心, 因此促进了从教育和科学研究到大规模处理的处理链的扩展。 这种多功能性是由对有限资源运行的持续关注来解释的,这导致了解决方案, 如用于大规模分割的流机制或方法。OTB 的另一个显著特点是所提出的方法的通用性: 除了与辐射和几何校准有关的方面外,OTB 中开发的算法几乎从来没有专门针对给定的传感器或任务。 此外,OTB 非常注意方法的功能划分,以最大限度地结合不同算法的潜力。 因此,OTB 可以被视为一大批建筑砖,可以随意组合在一起,形成加工链。 OTB 拥有庞大的用户社区和稳固的治理,目前是大规模处理卫星数据链的关键组成部分, 例如IOTA-2制作大陆尺度的土壤占领地图,或MARA连续在法国上空制作Sentinel-2 2A产品。
17.3. 应用特点¶
OTB 应用程序功能来自C++库类。它们通过简化的访问和数据处理中的分解需求来满足用户的需求。 除其他外,它们允许我们执行以下操作:
access to data: read/write most satellite image formats, access metadata, read/write vector formats (shp, kml, etc.), digital terrain models, lidar data;
basic image manipulation: extraction, pixel-to-pixel calculations;
filtering: signal processing for optical and radar imaging;
feature extraction: textures (Haralick, Structural Feature Set [SFS]), edge detection, points of interest, alignments, lines, descriptors (Scale-Invariant Feature
变换 [SIFT], Speeded Up Robust Features [SURF]) ;
image segmentation: region growing, watershed, level set, mean-shift;
classification: K-means, support vector machine, random forests, as well as most recent machine learning algorithms;
detection of changes between images;
orthorectification, cartographic projections;
calculation of radiometric indices: vegetation, water, soil, etc.
此外,自2015年以来,社区开发的新应用程序因外部模块而可用。 有关这些新应用程序的更多详细信息请参阅第5.1.4节。
17.4. 治理和社区¶
围绕OTB 、学术研究以及将其集成到运营开发中的行业人士有一个庞大的用户和开发者社区。 对于用户来说,有一个专门的论坛[OTB 17 a]以非常被动的方式提供支持和沟通。 该项目的博客发布新闻[OTB 17 b],而官方网站包含大部分文档,例如非常有用的文档[OTB 17 c], 汇编了各种使用OTB 应用程序的文档。
对于开发人员来说,OTB 通过外部模块功能促进了新功能的集成和部署。 这种机制使得标准化库外部组件的开发成为可能,例如新的OTB 应用程序。 现在有许多外部模块,主要基于机构组织所做的研究。其中包括:
Generic Region Merging: multiscale segmentation implementing the Baatz and Schäpe criterion;
Mosaic: harmonized image mosaic [CRE 15];
Sertit Object: object-oriented analysis;
Temporal Gap Filling: interpolation of time series;
Bio Vars: estimation of biophysical variables (Leaf Area Index (LAI), Fraction of Absorbed Photosynthetically Active Radiation, fCover) from optical images;
FFSForGMM: large-scale selection of attributes for large data classification [LAG 17];
Pheno-tb: extraction of phenological information from temporal profiles.
OTB 网站上提供了外部模块的非详尽列表 [OTB 17 d].
One should note that the license of an externalmodule can differ from the OTB license. An external module can beofficially added to OTB after a review of its source code by members ofthe Project Steering Committee (PSC) ,然后分发viaainstallers。 然而,任何外部模块仍然可以通过手动编译OTB 来使用:该库可以从其源代码编译,这对开发人员特别有用。 事实上,后者更喜欢生成库和可执行文件,而不是直接使用Windows、Mac和Linux安装程序提供的二进制文件。 SuperBuild极大地促进了OTB 的编译,SuperBuild是一个脚本,可以自动执行其编译和安装所需的所有操作, 特别是所有依赖项的下载、配置和编译。OTB 食谱中提供了更多信息,包括编译外部模块的过程。
最后,开放治理确保了高水平的项目管理。CSC负责路线图、沟通和规划。 目前,该委员会不是法人实体,也没有自己的资源。它现在由五名成员组成,属于三个不同的实体。 太平洋安全委员会席位不会到期,太平洋安全委员会成员可以辞职或被要求腾出席位。 适用于类库的任何变更均由CSC成员投票决定,每个成员的权重相同,并由多数通过。
17.5. C++库¶
OTB 的一个重要组成部分是ITK [Yoo 02].
ITK is aninitiative of the US National Library of Medicine. It is a reference inthe field of medical image processing, and it can be compared to anencyclopedia of operational algorithms [YOO 02]. ITK contains algorithmsfor image registration, filtering and segmentation (Figure 5.1) , 旨在分析任何类型的图像。ITK是由大学和私营公司联盟以及来自世界各地的大量贡献者开发的。
选择在此库上构建OTB 的动机是现有组件的价值化,特别是:
an open and versatile architecture;
cutting edge algorithms coming from the medical field, which can be used in the context of satellite imagery (Figure 5.2);
an active and experienced international community of developers.
www.iste.co.uk/baghdadi/qgis1.zip

图5.2.使用OTB 对遥感图像进行分割(来源:Cookbook)。 有关该图形的彩色版本,请访问见 www.iste.co.uk/baghdadi/qgis1.zip
在OTB 中,空间数据的读写由地理空间数据抽象库(GDAL )确保,这是一个用于读写大量地理格式的免费库。 GDAL是开源地理空间信息系统的关键, 因为它确保与许多基于专有格式和开放地理空间联盟标准的商业系统的兼容性。 其他库也参与OTB 的核心,例如开源软件图像地图(OSSSIM), 它允许对传感器模型和各种地图投影系统进行操作。
17.6. 内部机制¶
大多数OTB 功能可以处理非常大量的数据,即使是在硬件非常有限的计算机上也是如此。 这是通过使用流机制实现的,该机制逐区域执行整个图像的处理。 另一方面,绝大多数组件都具有多核实现的优势,即在算法执行过程中使用多个中央处理单元(中央处理单元), 这减少了计算的持续时间。
17.6.1. 流媒体机制¶
流媒体机制允许在不同区域多次处理图像。因此,不是复制整个数据(输入和输出),而是逐个处理小块, 直到产生输出数据(图5.3)。该机制节省了内存,并能够在不限制像素数量的情况下处理图像。 OTB 中实现的大多数算法都支持这种机制。 当无法使用这种块处理机制实现算法时,整个输入和输出数据在执行时被复制到内存中。

图5.3.中位数过滤器机制的描述:输出图像逐区域生成(右), 每个图像都是从输入图像的子区域(左)中获得的,该子区域适应于过滤器的核大小(半径为2像素) (来源: [MBE 16])
17.6.2. 有效使用处理器¶
最近的计算机通常包括多个中央处理器。 如果实现允许,减少计算时间的一种可能性是使用机器上可提供的最大数量的CPU(多线程)。
算法支持流媒体的能力与其支持多线程的能力相似。事实上,这两个属性都是基于“分而治之”策略的。 两者都包括细分图像以独立处理子区域。在流媒体的情况下,子区域是逐个处理的,而在多线程中, 子区域是并行处理的(图5.4)。一个显着的区别是,在多线程中,所有输入数据都对每个中央处理器可见。 因此,ITK的应用程序编程接口独立管理这两种模式,同时根据要使用的内存量调整子区域分区, 并根据机器上可用的中央处理器数量调整子区域分区。大多数OTB 应用程序支持多线程。

图5.4.具有两个中央处理器(中央处理器1、中央处理器2)的区域(区域2)上的多线程示例 (来源: [MBE 16], 由作者改编)
17.6.3. 高性能计算¶
多线程并不是加速算法的唯一范式。InOTB 是来自高性能计算的另一种技术,使用消息传递接口(MPI)支持。 MPI是在分布式内存系统上运行并行程序的机器的通信标准。 OTB 应用程序可以在任何由共享并行文件系统的多个节点组成的集群上运行。 加速(即节省时间)通常与分配的节点数量呈线性关系[CRE 16]。支持大多数OTB 应用程序。 当常规应用程序无法在合理时间内执行时,使用这种高性能计算框架可能是相关的。
17.7. 下载和安装¶
有适用于Windows、Linux和Mac OS X的OTB 安装程序,可以访问所有功能,而无需编译软件。
食谱中详细介绍了在这些系统上安装OTB 的说明,安装程序可在官方网站的“下载”部分找到 [OTB 17 e]. 根据操作系统和版本的不同,可能有几种方法可以在机器上安装和配置OTB 。 其目的是为用户社区提供快速部署软件(客户端、服务器、集群等)的有效手段。