20.1. Orfeo工具箱#

OTB 作为基于Insight Toolkit(ITK)库的图像处理算法开源库。 它提供遥感功能,特别是对于高空间分辨率图像。 OTB 采用自由软件许可证(OTB6.0以来的Apache2.0许可证,早期版本的CecILL v2)下分发。 该许可证允许任何人随时检查和修改软件的源代码, 并在另一个软件中使用OTB的原始或修改版本(新的Apache2.0许可证允许我们不受限制地这样做)。 该免费许可证鼓励用户贡献并促进可重复搜索。

20.1.1. 历史#

OTB 的开发始于2006年,作为ORFEO计划的方法学一部分, 旨在准备、支持和促进对来自昂宿星(PHR)和CSK卫星的图像的使用和利用。 它是一组算法组件,使我们能够利用方法论知识并从研发结果中受益。

该工具箱在多个平台上进行了广泛测试。 大多数功能还适合尽可能多地使用并行化机制处理大型图像。

OTB 被越来越多的用户使用,并提供了广泛的基本算法、最先进的技术和图像分析和地理信息生成的高级功能。

基于OTB 开发了其他项目并满足非开发者的其他需求:

  • 2009年:“Monteverdi”,这是一个用于可视化和与数据交互的软件;

  • 2011年:OTB应用程序,一组提供更高级功能的实用程序库(分类、分割、基元提取等)。 这些应用程序可用于在命令行或通过专用图形界面。这些应用程序适用于以下目的对处理管道进行原型设计,并允许处理大量数据。 这些应用程序的架构基于插件机制,这有助于它们在其他处理平台中的使用。

自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产品。

20.1.2. 应用特点#

OTB 应用程序功能来自C++库类。它们通过简化的访问和数据处理中的分解需求来满足用户的需求。 除其他外,它们允许我们执行以下操作:

  • 数据访问:读取/写入大多数卫星图像格式,访问元数据,读/写矢量格式(shp、kml等)、数字地形模型、激光雷达数据;

  • 基本图像处理:提取,像素到像素计算;

  • 滤波:光学和雷达成像的信号处理;

  • 特征提取:纹理(Haralick,结构特征集[SFS]),边缘检测,兴趣点、对齐、线条、描述符(比例不变特征变换 [SIFT], 加速稳健功能[SURF])

  • 图像分割:区域生长、分水岭、水平集、均值漂移;

  • 分类:K-means,支持向量机,随机森林,以及最新的机器学习算法;

  • 检测图像之间的变化;

  • 正射纠正、制图投影;

  • 辐射指数的计算:植被、水、土壤等。

此外,自2015年以来,社区开发的新应用程序因外部模块而可用。有关这些新应用程序的更多详细信息请参阅第5.1.4节。

20.1.3. 治理和社区#

围绕OTB、学术研究以及将其集成到运营开发中的行业人士有一个庞大的用户和开发者社区。 对于用户来说,有一个专门的论坛 [OTB17a] 以非常被动的方式提供支持和沟通。 该项目的博客发布新闻 [OTB17b] ,而官方网站包含大部分文档, 例如非常有用的文档 [OTB17c] ,汇编了各种使用OTB 应用程序的文档。

对于开发人员来说,OTB 通过外部模块功能促进了新功能的集成和部署。 这种机制使得标准化库外部组件的开发成为可能,例如新的OTB应用程序。 现在有许多外部模块,主要基于机构组织所做的研究。其中包括:

  • 通用区域合并:实现Baatz和Schäpe标准的多尺度分割;

  • 马赛克:协调图像马赛克 [CRE15]

  • Sertit Object:面向对象分析;

  • 时间间隙填充:时间序列插值;

  • 生物变量:生物物理变量的估计(叶面积指数(LAI),从光学图像中提取吸收的光合活性辐射分数(fCover);

  • FFSForGMM:用于大数据分类的大规模属性选择 [LAG17]

  • Pheno-tb:从时间剖面中提取物候信息。

OTB 网站上提供了外部模块的非详尽列表 [OTB17d]

应该注意的是,外部模块的许可证可能与OTB许可证不同。在项目指导委员会(PSC)成员审查其源代码后, 可以将外部模块正式添加到OTB中然后分发viaainstallers。 然而,任何外部模块仍然可以通过手动编译OTB 来使用:该库可以从其源代码编译,这对开发人员特别有用。 事实上,后者更喜欢生成库和可执行文件,而不是直接使用Windows、Mac和Linux安装程序提供的二进制文件。 SuperBuild极大地促进了OTB 的编译,SuperBuild是一个脚本,可以自动执行其编译和安装所需的所有操作, 特别是所有依赖项的下载、配置和编译。OTB 食谱中提供了更多信息,包括编译外部模块的过程。

最后,开放治理确保了高水平的项目管理。CSC负责路线图、沟通和规划。 目前,该委员会不是法人实体,也没有自己的资源。它现在由五名成员组成,属于三个不同的实体。 太平洋安全委员会席位不会到期,太平洋安全委员会成员可以辞职或被要求腾出席位。 适用于类库的任何变更均由CSC成员投票决定,每个成员的权重相同,并由多数通过。

20.1.4. C++库#

OTB 的一个重要组成部分是ITK [Yoo02] 。 ITK是美国国家医学图书馆的创始机构。它是医学图像处理领域的参考,可以与运算算法的百科全书 [Yoo02] 进行比较。 ITK包含用于图像配准、滤波和分割的算法,如 图 20.1 所示。 旨在分析任何类型的图像。ITK是由大学和私营公司联盟以及来自世界各地的大量贡献者开发的。

image158_x90

图 20.1 ITK#

选择在此库上构建OTB 的动机是现有组件的价值化,特别是:

  • 开放和多功能的建筑;

  • 来自医学领域的尖端算法,可用于卫星图像,如 图 20.2

  • 一个活跃且经验丰富的国际开发者社区。

image159_xji

图 20.2 医学领域的尖端算法用于卫星图像#

使用OTB 对遥感图像进行分割(来源:Cookbook),如 图 20.3 。 有关该图形的彩色版本,请访问见 www.iste.co.uk/baghdadi/qgis1.zip

image160_xm8

图 20.3 遥感图像分割#

在OTB 中,空间数据的读写由地理空间数据抽象库(GDAL )确保,这是一个用于读写大量地理格式的免费库。 GDAL是开源地理空间信息系统的关键,因为它确保与许多基于专有格式和开放地理空间联盟标准的商业系统的兼容性。 其他库也参与OTB 的核心,例如开源软件图像地图(OSSSIM),它允许对传感器模型和各种地图投影系统进行操作。

20.1.5. 内部机制#

大多数OTB 功能可以处理非常大量的数据,即使是在硬件非常有限的计算机上也是如此。 这是通过使用流机制实现的,该机制逐区域执行整个图像的处理。 另一方面,绝大多数组件都具有多核实现的优势,即在算法执行过程中使用多个中央处理单元(中央处理单元), 这减少了计算的持续时间。

流媒体机制#

流媒体机制允许在不同区域多次处理图像。因此,不是复制整个数据(输入和输出),而是逐个处理小块, 直到产生输出数据,如 图 20.4 。 该机制节省了内存,并能够在不限制像素数量的情况下处理图像。 OTB 中实现的大多数算法都支持这种机制。 当无法使用这种块处理机制实现算法时,整个输入和输出数据在执行时被复制到内存中。

image161_xyk

图 20.4 中位数过滤器机制的描述#

输出图像逐区域生成(右),每个图像都是从输入图像的子区域(左)中获得的, 该子区域适应于过滤器的核大小(半径为2像素)(来源:[MBE 16])

有效使用处理器#

最近的计算机通常包括多个中央处理器。如果实现允许,减少计算时间的一种可能性是使用机器上可提供的最大数量的CPU(多线程)。

算法支持流媒体的能力与其支持多线程的能力相似。事实上,这两个属性都是基于“分而治之”策略的。 两者都包括细分图像以独立处理子区域。在流媒体的情况下,子区域是逐个处理的,而在多线程中,子区域是并行处理的, 具有两个中央处理器(中央处理器1、中央处理器2)的区域(区域2)上的多线程示例(来源:[MBE 16] ,由作者改编)。 如 图 20.5 。 一个显着的区别是,在多线程中,所有输入数据都对每个中央处理器可见。 因此,ITK的应用程序编程接口独立管理这两种模式,同时根据要使用的内存量调整子区域分区, 并根据机器上可用的中央处理器数量调整子区域分区。 大多数OTB 应用程序支持多线程。

image162_xg1

图 20.5 两个中央处理器#

高性能计算#

多线程并不是加速算法的唯一范式。InOTB 是来自高性能计算的另一种技术,使用消息传递接口(MPI)支持。 MPI是在分布式内存系统上运行并行程序的机器的通信标准。 OTB 应用程序可以在任何由共享并行文件系统的多个节点组成的集群上运行。 加速(即节省时间)通常与分配的节点数量呈线性关系 [CRE16] 。支持大多数OTB 应用程序。 当常规应用程序无法在合理时间内执行时,使用这种高性能计算框架可能是相关的。

下载和安装#

有适用于Windows、Linux和Mac OS X的OTB 安装程序,可以访问所有功能,而无需编译软件。

食谱中详细介绍了在这些系统上安装OTB 的说明, 安装程序可在官方网站的“下载”部分找到 [OTB17e].根据操作系统和版本的不同, 可能有几种方法可以在机器上安装和配置OTB 。 其目的是为用户社区提供快速部署软件(客户端、服务器、集群等)的有效手段。

20.1.6. 参考文献#

[OTB17d]

OTB TEAM, “Remote modules and external projects”, available at: https://www.orfeo-toolbox.org/external-projects/, 2017.

[LAG17]

LAGRANGE A., FAUVEL M., GRIZONNET M., “Large-scale featureselection with Gaussian mixture models for the classification of highdimensional remote sensing images”, IEEE Transactions on ComputationalImaging, vol. 3, no. 2, pp. 230-242, 2017.

[CRE15]

CRESSON R., SAINT-GEOURS N., “Natural Color Satellite ImageMosaicking Using Quadratic Programming in Decorrelated Color Space”,*IEEE Journal of Selected Topics in Applied Earth Observations andRemote Sensing*, vol. 8, no. 8, pp. 4151–4162, 2015.

[OTB17a]

OTB TEAM, otb-users, available at: https://groups.google.com/forum/#!forum/otb-users, 2017.

[OTB17b]

OTB TEAM, OTB BLOG, available at:https://www.orfeo-toolbox.org/blog/, 2017.

[OTB17c]

OTB TEAM, Cookbook, available at: https://www.orfeo-toolbox.org/CookBook/, 2017.

[Yoo02] (1,2)

YOO T.S., ACKERMAN M.J., LORENSEN W.E., et al. “Engineeringand Algorithm Design for an Image Processing API: A Technical Report on ITK–theInsight Toolkit”, in WESTWOOD J. (ed.), Proceedings of Medicine MeetsVirtual Reality, IOS Press, Amsterdam, 2002.

[CRE16]

CRESSON R., HAUTREUX G., “A generic framework for thedevelopment of geospatial processing pipelines on clusters”, IEEEGeoscience and Remote Sensing Letters, vol. 13, no. 11, 1706–1710,2016.

[OTB17e]

OTB TEAM, “Download”, available at: https://www.orfeo-toolbox.org/download/, 2017.