摘要
使用支持矢量计算机 (SVM) 分类定义生成 Esri 分类程序定义 (.ecd) 文件。
用法
SVM 分类器提供一种可用于处理分割栅格输入或标准影像的功能强大的现代化监督分类方法。这是一种被研究人员广泛采用的相对较新的分类方法。
对于标准影像输入,工具接受具有任意位深度的多波段影像,它还会基于输入训练要素文件基于像素执行 SVM 分类。
对于关键属性设置为分割的分割栅格,此工具将计算 RGB 分割栅格中的索引影像及相关的分割属性。计算的属性将用于生成要在独立分类工具中使用的分类器定义文件。可根据任意 Esri 支持的影像计算每个分割影像的属性。
与传统分类方法相比,SVM 分类器工具存在以下几个优势:
- SVM 分类器可处理非常大的分割影像(它们的属性表将变得很大),这对于高分辨率影像尤其有帮助。
- 它更不容易被噪音、关联波段以及每个类中不平衡的训练站点数量或大小所影响。
任何 Esri 支持的栅格都可用作输入,包括栅格产品、分割栅格、镶嵌、影像服务或通用栅格数据集。分割栅格必须为 8 位 3 波段栅格。
仅在其中一个栅格图层输入为分割影像的情况下启用分割属性。
语法
TrainSupportVectorMachineClassifier (in_raster, in_training_features, out_classifier_definition, {in_additional_raster}, {max_samples_per_class}, {used_attributes})
参数 | 说明 | 数据类型 |
in_raster | 选择要分类的栅格数据集。 首选输入项为 8 位 3 波段分割栅格数据集,其中所有位于同一分割的像素具有相同的颜色。输入也可以是 8 位单波段灰度分割栅格。如果没有可用的分割栅格,可使用任何 Esri 支持的栅格数据集。 | Raster Dataset | Mosaic Dataset | Raster Layer | Mosaic Layer | Image Service Layer |
in_training_features | 必须已在 ArcMap 中创建了训练样本要素类。它们无法在 Python 中创建。 | Feature Layer | Raster Catalog Layer |
out_classifier_definition | 这是包含属性信息、统计数据、超平面矢量和分类程序所需的其他信息的 JSON 文件。将创建扩展名为 .ecd 的文件。 | File |
in_additional_raster (可选) | 也可以整合辅助栅格数据集(如分段影像、多光谱影像或 DEM),从而为分类生成属性和其他所需信息。 | Raster Dataset | Mosaic Dataset | Raster Layer | Mosaic Layer | Image Service Layer |
max_samples_per_class (可选) | 用于定义每个类的样本的最大数量。 如果输入为非分割栅格,建议使用默认值 100。值小于或等于 0 表示系统将使用训练站点中的所有样本来训练分类器。 | Long |
used_attributes used_attributes;used_attributes (可选) | 指定要包括在与输出栅格相关联的属性表中的属性。 只有在输入栅格上将 SEGMENTED 关键属性设置为 true 时,才会启用此参数。如果仅对此工具输入分段影像,默认属性则为 COLOR、COUNT、COMPACTNESS 和 RECTANGULARITY。如果还将 in_additional_raster 作为输入与分段影像一起添加进来,则 MEAN 和 STD 选项也将可用。
| String |
代码示例
TrainSupportVectorClassifier 示例 1(Python 窗口)
此 Python 示例使用 SVM 分类器对分割栅格进行分类。
import arcpy
from arcpy.sa import *
arcpy.gp.TrainSupportVectorMachineClassifier(
"c:/test/moncton_seg.tif", "c:/test/train.gdb/train_features",
"c:/output/moncton_sig_SVM.ecd", "c:/test/moncton.tif", "10",
"COLOR;MEAN;STD;COUNT;COMPACTNESS;RECTANGULARITY")
TrainSupportVectorClassifier 示例 2(独立脚本)
此 Python 脚本使用 SVM 分类器对分割栅格进行分类。
# Import system modules
import arcpy
from arcpy.sa import *
# Set local variables
inSegRaster = "c:/test/moncton_seg.tif"
train_features = "c:/test/train.gdb/train_features"
out_definition = "c:/output/moncton_sig.ecd"
in_additional_raster = "c:/moncton.tif"
maxNumSamples = "10"
attributes = "COLOR;MEAN;STD;COUNT;COMPACTNESS;RECTANGULARITY"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
#Execute
arcpy.gp.TrainSupportVectorMachineClassifier(
inSegRaster, train_features, out_definition,
in_additional_raster, maxNumSamples, attributes)
环境
许可信息
- ArcGIS for Desktop Basic: 需要 Spatial Analyst
- ArcGIS for Desktop Standard: 需要 Spatial Analyst
- ArcGIS for Desktop Advanced: 需要 Spatial Analyst