分享

[ENVI APP] 新版随机森林图像分类工具包

 风声之家 2022-07-15 发布于江苏

原创 杜会建 ENVI技术殿堂 2022-07-15 17:00 发表于北京

收录于合集#ENVI APP19个

本文内容大多来自旧版工具介绍:https://www.cnblogs.com/enviidl/p/16393215.html


1
工具说明

基于随机森林算法实现影像监督分类。源码来源于 ENMAP-BOX v2.1.1 并对其进行封装,方便在ENVI下使用。

ENMAP-BOX网站链接:http://www./enmapbox.html

基于此工具进行科学研究,请引用:

van der Linden, S.; Rabe, A.; Held, M.; Jakimow, B.; Leitão, P.J.; Okujeni, A.; Schwieder, M.; Suess, S.; Hostert, P. The EnMAP-Box—A Toolbox and Application Programming Interface for EnMAP Data Processing. Remote Sens. 2015, 7, 11249-11266.

作为新兴起的、高度灵活的一种机器学习算法,随机森林(Random Forest,RF)拥有广泛的应用前景。随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支—集成学习(Ensemble Learning)方法。从直观角度来解释,每棵决策树都是一个分类器,那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出。

随机森林是一种很灵活实用的方法,具有如下几个特点:

  • 在当前所有算法中,具有极好的准确率

  • 能够有效地运行在大数据集上

  • 能够处理具有高维特征的输入样本,而且不需要降维

  • 能够评估各个特征在分类问题上的重要性

  • 在生成过程中,能够获取到内部生成误差的一种无偏估计

  • 对于缺省值问题也能够获得很好得结果

实际上,随机森林的特点不只有这六点,它就相当于机器学习领域的Leatherman(多面手),你几乎可以把任何东西扔进去,它基本上都是可供使用的。在估计推断映射方面特别好用,以致都不需要像SVM那样做很多参数的调试。

具体的随机森林介绍可以参见随机森林主页:

https://www.stat./~breiman/RandomForests/cc_home.htm#inter

以上内容摘自:http://www.cnblogs.com/maybe2030/p/4585705.html


2
安装方法

方法1:使用 ENVI App Store 进行 ENVI 扩展工具的安装与管理。

App Store 下载地址:envi./appstore

方法2:手动下载 https://envi./appstore/ranftscnew

下载 zip 压缩包并解压,将得到的 extensions 和 custom_code 文件夹拷贝到如下 ENVI 安装路径,覆盖同名文件夹即可:

  • ENVI 5.3 - C:\Program Files\Exelis\ENVI53\

  • ENVI 5.4 及以上 - C:\Program Files\Harris\ENVI5x\

重启 ENVI 即可使用。


3
使用说明

本工具包提供3个工具,均位于Toolbox/Extensions/Random Forest/…,如下所示:

图片

Train Random Forest Model

本工具提供模型训练图像分类功能(可选)

1) 在Toolbox中,双击/Extensions/Random Forest/Train Random Forest Model,工具界面如下图所示。

图片

2) 参数设置:

Input Raster:输入影像。必须为ENVI标准格式数据(二进制文件+hdr头文件)。选择图像时不能进行空间、光谱裁剪或掩膜(ENVI 5.5及以上版本已经禁止显示这些按钮),如下图所示。

图片

Input Training ROIs:输入训练样本,即ENVI感兴趣区域。对于ENVI 5.3版本,需预先在ENVI中打开ROI,再打开此工具。

Number of Trees:随机森林树的数量,值越大,构建耗时越长,反之用时越少。默认为100。

Impurity Function:Impurity function to determine the impurity。可选项为 Gini Index、Entropy。默认为 Gini Index。

Minimum Number of Samples:Minimum number of samples to stop splitting(……翻译不到位,请自行理解吧)

Minimum Impurity Threshold:Minimum impurity to stop splitting(……翻译不到位,请自行理解吧)

Output Model File:必选项。设置训练模型输出文件路径,文件后缀为rfc(会自行添加)。

Output Classification Raster:可选项。若设置分类图像输出路径,则在模型训练完毕后,自动将模型应用于输入图像,得到分类结果。

Random Forest Classify Raster


本工具提供随机森林图像分类功能,可以将上述工具训练的模型用于其他图像。

1) 在Toolbox中,双击/Extensions/Random Forest/Random Forest Classify Raster,工具界面如下图所示。

图片

2) 参数设置:

Input Raster:输入影像。必须为ENVI标准格式数据(二进制文件+hdr头文件)。选择图像时不能进行空间、光谱裁剪或掩膜(ENVI 5.5及以上版本已经禁止显示这些按钮)。

Input Trained Model File:输入训练好的随机森林模型文件(rfc后缀)。

Output Classification Raster:设置分类图像输出文件路径。

Random Forest Classify Raster Batch

本工具提供随机森林图像分类批处理功能,方便将同一模型用于多个图像。

1) 在Toolbox中,双击/Extensions/Random Forest/Random Forest Classify Raster Batch,工具界面如下图所示。

图片

2) 参数设置:

Input Rasters:输入多个待分类影像。必须为ENVI标准格式数据(二进制文件+hdr头文件)。

Input Trained Model File:输入训练好的随机森林模型文件(rfc后缀)。

Output Postfix:设置输出文件名后缀,默认为_rfc.dat。

Display Results:是否自动加载显示结果。默认为是。

Output Directory:输出目录。ENVI 5.5及以上版本会弹出选择目录的界面;而低版本将弹出选择文件的界面,此时随意定义输出文件名即可,程序将只使用所在目录作为输出目录。


4
接口调用
Train Random Forest Model

接口调用格式如下:

e = ENVI()

raster = e.OpenRaster(file)

rois = e.OpenROI(roifile)

Task = ENVITask('TrainRandomForestModelTask')

Task.INPUT_RASTER = raster

Task.INPUT_ROIS = rois

Task.NUMBER_OF_TREES = 100

Task.IMPURITY_FUNCTION ='Gini Index'

Task.MIN_NUMBER_OF_SAMPLES= 1

Task.IMPURITY_THRESHOLD= 0

Task.OUTPUT_MODEL_URI = 'C:\temp\model.rfc'

Task.OUTPUT_RASTER_URI ='C:\temp\class.dat'

Task.Execute

output_raster = Task.OUTPUT_RASTER

Random Forest Classify Raster


接口调用格式如下:

e = ENVI()

raster = e.OpenRaster(file)

Task = ENVITask('RandomForestClassifyRasterTask')

Task.INPUT_RASTER = raster

Task.MODEL_FILE = 'C:\temp\model.rfc'

Task.OUTPUT_RASTER_URI ='C:\temp\class.dat'

Task.Execute

output_raster = Task.OUTPUT_RASTER

Random Forest Classify Raster Batch

接口调用格式如下:

其中,OUTPUT_RASTER_URI参数较为特殊,可随便指定为一个不存在的文件路径即可,如下所示,将自动使用 C:\temp\ 作为输出路径。

e = ENVI()

raster1 = e.OpenRaster(file1)

raster2 = e.OpenRaster(file2)

Task = ENVITask('RandomForestClassifyRasterBatch')

Task.INPUT_RASTERS = [raster1, raster2]

Task.MODEL_FILE = 'C:\temp\model.rfc'

Task.OUTPUT_POSTFIX = '_classrfc.dat'

Task.DISPLAY_RESULTS = 0

Task.OUTPUT_RASTER_URI ='C:\temp\uselessname'

Task.Execute

output_files = Task.OUTPUT_FILES

收录于合集 #ENVI APP

 19

下一篇[ENVI APP] MODIS劈窗算法地表温度反演工具

确定

  • 不看此公众号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多