PRO ApplySoftmaxTrainedClassifier
COMPILE_OPT IDL2
e = ENVI()

;获取数据所在路径,与pro源码同路径的data文件夹内
dataPath = FILE_DIRNAME(ROUTINE_FILEPATH())+$
PATH_SEP()+‘data’+PATH_SEP()

;设置输出路径,保存了分类结果和分类器
outPath = FILE_DIRNAME(ROUTINE_FILEPATH())+$
PATH_SEP()+‘output’+PATH_SEP()

;打开第2景数据,使用训练好的分类器进行分类
file = dataPath+‘AttributeImage2.dat’
raster = e.OpenRaster(file)

;导入之前保存的gain和offset变量
gainoffsetFile = outPath+‘gain_offset.txt’
OPENR, lun, gainoffsetFile, /get_lun
tmpStrings = STRARR(2)
READF, lun, tmpStrings
FREE_LUN, lun
gain = DOUBLE(STRSPLIT(tmpstrings[0], ’ ', /extract))
offset = DOUBLE(STRSPLIT(tmpstrings[1], ’ ', /extract))

;对栅格数据进行归一化处理
normalizedRaster = ENVIGainOffsetRaster(raster, gain, offset)

;获取训练好的分类器路径,并将其加载进来
trainedClassifierURI = outPath+‘TrainedSoftmaxClassifier.epo’
trainedClassifier = ENVIRestoreObject(trainedClassifierURI)

;利用此分类器对新的数据进行分类
outClassFile = outPath+‘AttributeImage2_SoftmaxClassifier_class.dat’
FILE_DELETE, outClassFile, /quiet, /allow_nonexistent
classRaster = ENVIClassifyRaster(normalizedRaster, trainedClassifier, $
OUTPUT_FILENAME = outClassFile)

;评估分类精度–start-----------------------------------------------
;打开训练样本
ROIfile = dataPath + ‘TrainingDataROIs.xml’
rois = e.OpenROI(ROIfile)

;精度评价
confusionMatrix = ENVICalculateConfusionMatrixFromRaster( $
classRaster, rois)

;打印混淆矩阵
Print, confusionMatrix.Confusion_Matrix

;获取类别数和类别名
numClasses = classRaster.Metadata[‘CLASSES’]
classNames = classRaster.Metadata[‘CLASS NAMES’]

;打印各种精度评价结果
columnTotals = confusionMatrix.ColumnTotals()
FOR i=0, (numClasses)-1 DO $
Print, 'Ground truth total for ‘, $
classNames[i],’: ', $
columnTotals[i]

rowTotals = confusionMatrix.RowTotals()
FOR i=0, (numClasses)-1 DO $
Print, 'Predicted total for ‘, $
classNames[i],’: ', $
rowTotals[i]

accuracy = confusionMatrix.Accuracy()
Print, 'Overall accuracy: ', accuracy
kappa = confusionMatrix.KappaCoefficient()
Print, 'Kappa coefficient: ', kappa
commissionError = confusionMatrix.CommissionError()
Print, 'Error of commission: ', commissionError
omissionError = confusionMatrix.OmissionError()
Print, 'Error of omission: ', omissionError
F1 = confusionMatrix.F1()
Print, 'F1 value: ', F1
precision = confusionMatrix.Precision()
Print, 'Precision: ', precision
producerAccuracy = confusionMatrix.ProducerAccuracy()
Print, 'Producer accuracy: ', producerAccuracy
recall = confusionMatrix.Recall()
Print, 'Recall: ', recall
userAccuracy = confusionMatrix.UserAccuracy()
Print, 'User accuracy: ', userAccuracy
;评估分类精度–end-------------------------------------------------

;显示结果
view = e.GetView()
layer = view.CreateLayer(raster)
layer2 = view.CreateLayer(classRaster)
view.Zoom, /FULL_EXTENT
END


来源:esri

ENVI5.4 新增图像分类介绍相关推荐

  1. AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码

    AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...

  2. ABP Framework 5.2 RC 版本发布及新增功能介绍

    本文将介绍 ABP Framework 5.2 RC 版新增的主要功能: •单层解决方案模板•API 版本控制•源代码控制移除libs文件夹•对 Swagger UI 隐藏 ABP 默认端点•CMS ...

  3. java math mod_java8 Math新增方法介绍

    通常都认为java8新功能主要包括函数式编程及lambda表达式.然而,除了那些大的特点之外,还有其他的,影响力小却很有趣,大多时候不为人所知,甚至不太被人评论. 本文我们列举java.lang.Ma ...

  4. Zabbix6.0使用教程 (一)—zabbix新增功能介绍1

    使用zabbix的小伙伴应该都有关注到目前zabbix的大版本已经更新到了6.0,后面乐乐将会对如何使用zabbix6.0做一个使用教程的系列,大家可以持续关注,这篇我们主要聊聊zabbix6.0新增 ...

  5. Fl Studio 20.8英文切换中文正式版下载及新增功能介绍说明

    水果做电子音乐,可以说是非常牛逼的,但是唯一的缺点就是只有英文版,对于那些想用水果编曲的音乐人们来说,可以说是一个硬伤,没有中文版,因此也可以说是流失了一批潜在的客户. 随着最近两年的版本升级,Cub ...

  6. 会声会影Video Studio 2023 旗舰版新增功能介绍

    会声会影2023旗舰版(Corel VideoStudio Ultimate 2023)(亦称绘声绘影)是一款功能强大的视频编辑软件,入手非常简单,可以帮助用户制作优秀的视频内容,支持视频编辑和视频特 ...

  7. 解神者神迹PHP奥义高阶,解神者新增神迹介绍 神迹效果调整介绍

    解神者新增神迹介绍,神迹效果调整介绍.解神者在9月10日对于神迹效果进行了功能优化,一起来看看吧. 解神者是一款Roguelite游戏,我们非常希望能在减轻死亡惩罚的机制下,给解神者大人带来更多样新鲜 ...

  8. MicroProfile 1.2新增功能介绍

    Eclipse Foundation最近发布了MicroProfile 1.2版,该版本提供了下列新增API: \\ Health Check 1.0\\ Health Metrics 1.0\\ F ...

  9. 网站外链优化布局和新增技巧介绍!

    众所周知,当网站优化到一定程度时,网站排名和权重也会达到一个稳定期,但网站为了能够获得更多的流量,也会想办法给网站做好外链建设来为网站带来更多的用户浏览,那么对于网站外链的优化布局和新增都有哪些技巧呢 ...

  10. [Android] DownloadManager下载管理类2.3新增API介绍

    从Android 2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到.下载管理类可以长期处理多个HTTP下载任务,客户端只需要给出请 ...

最新文章

  1. GDB 程序调试简单实践
  2. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
  3. php xml 格式化,PHP实现浏览器格式化显示XML的方法示例
  4. 【Leaflet】鼠标提取坐标
  5. SAP Fiori应用里一些OData错误排查的最佳实践
  6. leetcode 207课程表
  7. MicroRNA Ranking(Tehran2016)
  8. linux中cv调用摄像头,ubuntu中opencv调用摄像头
  9. 大鱼风控笔记 3:量化风控政策的关注点
  10. pat1070. Mooncake (25)
  11. matlab 数字基带,基于MATLAB的数字基带传输的 FIR滤波器的设计
  12. FdfsConnectException:无法获取服务端资源:cant creat connection to /ip timeout
  13. 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
  14. 解决wordpress用户注册时,点击邮件中的重置密码链接提示“您的密码重设链接无效”
  15. matlab南方平差易,测量平差实习心得多篇
  16. java中getBytes()方法的使用
  17. 会议选座位php,会议室座次(会议座位怎么排位)
  18. 芯宇宙通用仓库管理系统V1.0说明书
  19. python已知两条直角边求斜边,Python实现“已知三角形两个直角边,求斜边”
  20. 说企业自研应用是误区的,非蠢即坏

热门文章

  1. dsh linux,通过dsh批量管理Linux服务器(一)【感谢作者的无私分享】
  2. cad2014打开文件崩溃_CAD加载自定义文件失败的拯救
  3. vue中的静态资源打包
  4. python字符串方法总结_python字符串函数总结
  5. oracle 字符串等于,ORACLE in (字符串,字符串,字符串)
  6. 论文笔记_S2D.40_2017_CVPR_半监督深度学习的单目深度图预测
  7. 矩阵运算_Eigen使用_基本数据类型
  8. 关于AfxMessageBox没有重载函数
  9. 安装vs2008之后系统好像变慢了?
  10. 寒假作业1 打印沙漏