17.8. 使用OTB 应用程序¶
OTB 应用程序旨在为用户提供许多实现的流程。 这些应用程序可以直接通过多接口(命令行、图形界面、Python语言等)使用。 目前,有100多个按不同类别组织的应用程序。
17.8.1. 接口¶
原则¶
每个OTB 应用程序都包含一个流程,为其参数化和执行提供一组功能。 OTB 应用程序中使用的所有参数都经过标准化和类型化(图像、载体、文件夹、integer、floating等)。 这种形式主义使得任何OTB 应用程序都可以通过各种接口操作。
参数¶
OTB 应用程序参数由键(参数的名称)和值标识。有多种类型的参数可用。 表5.1显示了参数可以采用的不同类型的值。
Type |
Designation |
---|---|
<int32> |
32 bits signed integer (from ÿ2,147,483,648 to 2,147,483,647) |
<float> |
Simple precision floating point (32 bits) |
<string> |
String |
<string list> |
List of strings |
<boolean> |
Boolean |
表5.1.参数值的类型
表5.2总结了参数类型及其值类型。
Type |
Value |
Description |
---|---|---|
Integer |
<int32> |
32 bits signed integer. Example: maximum iterations number. |
Real |
<float> |
Single pecision floating point. Example: distance in cartographic units. |
String |
<string> |
String. Example: field name. |
Strings list |
<string list> |
Multiple strings. |
Input file |
<string> |
A file of any kind, as input to an algorithm. For example: a classification rule contained in a text file. |
Input files list |
<string list> |
Multiple input files. |
Output file |
<string> |
A file of any kind, at the output of an algorithm. For example: a text file containing statistics. |
Folder |
<string> |
A folder accessible on the file system of the machine. |
Choice |
<int32>, <float> or <string> |
An entry among the elements of a list of values. For example: in the list {manual; Automatic}, a possible choice is “automatic” |
Input image |
<string> |
An input image, in a format supported by GDAL |
List of input images |
<string list> |
Multiple input images |
Input vector data |
<string> |
An input vector data, in a format supported by GDAL |
List of input vector data |
<string list> |
Multiple vector data |
Output image [Pixel type] |
<string> [<string>] |
This parameter includes a string for the path to the output file and a pixel type for setting the pixel encoding of the output image. We will return to this parameter in section 5.2.2 of this chapter. |
Output vector data |
<string> |
An output vector data, in a format supported by GDAL/OGR. |
Radius |
<int32> |
The radius of a pixel neighborhood, in pixels per column and per line. For example: a square structuring element with a radius of 2 × 3 pixels defines a centered neighborhood of 5 × 7 pixels. |
Parameters group |
Multiple parameters |
|
Complex input image |
<string> |
A complex input image (with a real part and an imaginary part), in a format supported by GDAL. For example: Synthetic Aperture Radar (SAR) imagery |
Complex output image |
<string> |
Complex output image (e.g. SAR image) |
RAM |
<int32> |
Amount of RAM that can be used by the algorithms (in megabytes) |
I nputProcessXML |
<string> |
Extensible Markup Language (XML) file to load the parameters of an execution of the application |
Ou tputProcessXML |
<string> |
XML file to save the parameters of an execution of the application |
表5.2.类型的参数
在OTB 应用程序中,任何参数都可能是强制性的。在这种情况下,如果未输入参数的值,则算法将不会执行, 并且错误将报告丢失的参数。某些参数扫描具有预定义的默认值。 还可以为数字值(整数和真实数字)输入最小值和最大值。
描述¶
OTB 应用程序还集成了所实现的处理及其参数的文档。还输入应用程序作者和实现算法的限制。 一个或多个标签可以与应用程序关联,例如:
Image Analysis;
Calibration;
Change Detection;
Coordinates;
Dimensionality Reduction;
Feature Extraction;
Image Filtering;
Geometry;
Hyperspectral;
Learning;
Image Manipulation;
Image MetaData;
Image MultiResolution;
Pansharpening;
Raster; – SAR;
Stereo;
Segmentation;
Vector Data Manipulation.
17.8.2. 命令行界面¶
该界面在UNIX(Linux、Mac OS X)上称为“终端”,在Windows(cmd)中称为“DOS命令提示符”, 使其可以通过图形界面调用程序并输出。一开始对用户不太友好,该界面有很多优点, 包括执行批处理的可能性,或自动化多个应用程序的序列。 命令行上使用OTB 应用程序的可执行文件集以“otbcli”为开头。
要在命令行中使用OTB 应用程序,首先可以从应用程序获取帮助。 让我们以 Convert 应用程序为例,它将一张图像转换为另一张图像。 在命令提示符(在Windows上)或终端(Linux或Mac OS X)中,我们输入以下命令以获取帮助:
otbcli_Convert
与:
otbcli_Convert -help
此命令返回应用程序的描述、预期作为输入的参数以及命令行示例:
This is the Convert application, version 5.11.0
Convert an image to a different format, eventually rescaling the data
and/or changing the pixel type.
Complete documentation: http://www.orfeo-toolbox.org/Applications/Convert.html
Parameters:
-progress <boolean> Report progress
MISSING -in <string> Input image (mandatory)
-type <string> Rescale type
[none/linear/log2] (mandatory, default value is none)
-type.linear.gamma <float> Gamma correction factor
(optional, on by default, default value is 1)
-mask <string> Input mask (optional, off by
default)
-hcp.high <float> High Cut Quantile (optional,
off by default, default value is 2)
-hcp.low <float> Low Cut Quantile (optional,
off by default, default value is 2)
MISSING -out <string> [pixel] Output Image
[pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is
float) (mandatory)
-ram <int32> Available RAM (Mb) (optional,
off by default, default value is 128)
-inxml <string> Load otb application from xml
file (optional, off by default)
Examples:
otbcli_Convert -in QB_Toulouse_Ortho_XS.tif -out
otbConvertWithScalingOutput.png uint8 -typ
从命令行 otbSYS_Convert
获得的 Convert 应用程序参数概述:
Name |
Type |
Value |
Mandatory |
Default value |
---|---|---|---|---|
Progress |
Boolean4 |
<boolean> |
||
In |
Input image |
<string5 > |
Yes |
|
Type |
Choice |
<string> |
“None” |
|
type.linear.gamma |
Floating point number |
<float> |
1 |
|
Mask |
Input image |
<string> |
||
hcp.high |
Floating point number |
<float> |
2 |
|
hcp.low |
Floating point number |
<float> |
2 |
|
Out |
Output image |
<string>[<string>] |
Yes |
pixel=float |
Ram |
Integer |
<int32> |
128 |
|
Xml |
InputProcessXML |
<string> |
表5.3.转换应用程序参数
“out”参数用于指示输出图像的路径。可选地,可以对outputpixel施加编码。 此编码可以按照文件的路径定义,并用空白分隔。正如应用程序所说,编码是一种选择。 表5.4显示了可能的编码选择。
Name |
Designation |
---|---|
uint8 |
8 bits unsigned integer. Values range: [0; 255] |
int16 |
16 bits signed integer. Values range: [–32 768; 32 767] |
uint16 |
16 bits unsigned integer. Values range: [0; 65 535] |
int32 |
32 bits signed integer. Values range: [–2 147 483 648; 2 147 483 647] |
uint32 |
32 bits unsigned integer. Values range: [0; 4 294 967 295] |
Float |
Single precision floating point (32 bits) |
Double |
Double precision floating point (64 bits) |
表5.4.编码
备注:
Some image formats do not allow all encodings (for example, some JPEG2000 drivers do not support floating point encoding).
When the range of values of the pixels does not correspond to the encoding, a loss of information can occur on the output image.
在下面的示例中,指定了路径(“outputImage.tif”)和输出图像的编码(“uint8”)。 输出图像将为TIFF格式(扩展名 .tif ),其像素的编码将为8带符号位(值在0到255之间)。
otbcli_Convert -in inputImage.tif -out outputImage.tif uint8
17.8.3. 图形用户界面¶
每个OTB 应用程序还可以通过图形用户界面(图形用户界面)使用。 该图形用户界面可以通过与按钮、可编辑字段和各种其他对话框交互来选择应用程序的参数。 允许我们通过图形界面使用OTB 应用程序的一组可执行文件以“otbgui”为开头。 当使用这些可执行文件时,会自动生成一个窗口并适应OTB 应用程序的内容。 在第一个选项卡中,可以访问应用程序的参数(图5.5)。 以下面板允许您关注应用程序的进度(“日志”和“进度”选项卡)。 界面的最后一个选项卡提供了应用程序及其参数的描述(图5.6)。

图5.5.“Convert”应用程序的图形用户界面。当前选项卡允许我们编辑应用程序参数

图5.6.“Convert”应用程序的图形用户界面。当前选项卡提供应用程序描述(红色)、 有关其参数的信息(绿色)和使用示例(蓝色)。有关该图形的彩色版本, 请访问 www.iste.co.uk/baghdadi/qgis1.zip
17.8.4. 来自QGIS的使用¶
QGIS是一个免费的、开源的、多平台地理信息系统(地理信息系统),根据通用公共许可证发布, 它提供了大量功能:管理大量的载体数据或数据库格式、 基于Python的引擎脚本以及允许我们使用QGIS社区开发的模块的插件机制。
OTB 应用程序可以直接从QGIS调用。与上一节中介绍的图形用户界面类似,QIIS动态创建一个窗口, 以启用OTB 应用程序参数化。
17.8.5. Python绑定¶
由于绑定机制,可以使用Python编写的代码来使用OTB 应用程序。 OTB 应用程序可以与Python模块结合用于地理空间目的。还有将OTB 图像转换为NumPy数组的机制, 使OTB 应用程序与Python集成变得更加容易。
17.8.6. Monteverdi¶
最后,OTB 包括一个名为Monteverdi的可视化软件。 该软件使我们能够以快速且用户友好的方式浏览图像集(例如系列或马赛克)。 它基于GL着色语言技术来提供实时动态显示功能,并基于OTB 功能来实时配准图像[MIC15]。 Monteverdi还允许完全访问应用程序的图形界面。加载到Monteverdi的图像可以拖放到应用程序中, 执行后生成的图像会自动加载到Monteverdi。Monteverdi的图形界面如图5.7所示。

图5.7. Monteverdi软件的屏幕截图。加载两个上沉积图像层并使用局部透明度工具。 有关该图的彩色版本,请参阅www.iste.co.uk/baghdadi/qgis1.zip
值得注意的是,Monteverdi并不是像QGIS那样的完整地理信息系统软件, 并且仅限于图像可视化和应用程序的简化集成。对于几何特征编辑或属性表操作等高级地理信息系统操作, 建议结合使用Monteverdi和QGIS软件。