原创 杜会建 ENVI技术殿堂 2022-07-15 17:00 发表于北京 收录于合集#ENVI APP19个
基于随机森林算法实现影像监督分类。源码来源于 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 方法1:使用 ENVI App Store 进行 ENVI 扩展工具的安装与管理。 App Store 下载地址:envi./appstore 方法2:手动下载 https://envi./appstore/ranftscnew 下载 zip 压缩包并解压,将得到的 extensions 和 custom_code 文件夹拷贝到如下 ENVI 安装路径,覆盖同名文件夹即可:
重启 ENVI 即可使用。 本工具包提供3个工具,均位于Toolbox/Extensions/Random Forest/…,如下所示: 本工具提供模型训练和图像分类功能(可选)。 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:可选项。若设置分类图像输出路径,则在模型训练完毕后,自动将模型应用于输入图像,得到分类结果。 本工具提供随机森林图像分类功能,可以将上述工具训练的模型用于其他图像。 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:设置分类图像输出文件路径。 本工具提供随机森林图像分类批处理功能,方便将同一模型用于多个图像。 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及以上版本会弹出选择目录的界面;而低版本将弹出选择文件的界面,此时随意定义输出文件名即可,程序将只使用所在目录作为输出目录。 接口调用格式如下: 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 接口调用格式如下: 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 接口调用格式如下: 其中,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 确定 |
|