【PIE-Engine Studio学习笔记05】图像分类——非监督分类
【PIE-Engine Studio学习笔记05】图像分类——非监督分类
一、图像分类含义
图像分类是将图像中每个像元根据其在不同波段的光谱亮度、空间结构特征或者其他信息,按照某种规则或算法划分为不同的类别。
基于光谱特征的遥感影像分类方法主要包括:
- 非监督分类
- 监督分类
二、非监督分类含义
非监督分类(unsupervised),也称为聚类分析或点群分析。即在多光谱图像中搜寻、定义其自然相似光谱集群组的过程。非监督分类不需要人工选择训练样本,仅需极少的人工初始输入,计算机按一定规则自动地根据像元光谱或空间等特征组成集群组,然后分析者将每个组和参考数据比较,将其划分到某一类别中去。
非监督分类算法有多种:
- K均值(K-means Clustering Algorithm)
- 最大期望(Expectation-Maximization)
- ISODATA分类算法(Iterative Self-Organizing Data Analysis Technipue)
- BP神经网络分类算法
三、PIE-Engine Studio 实现非监督分类
PIE-Engine Studio 支持一下两种非监督分类算法:
K均值(K-means Clustering Algorithm)
- 是一种迭代求解的聚类分析算法,易于描述、时间效率高且适于处理大规模数据,核心对象为pie.Clusterer.kMeans。
最大期望(Expectation-Maximization)
- 是一种通过迭代进行极大似然估计的优化算法,通常作为牛顿迭代法(Newton-Rapson method)的替代,用于含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计,核心对象为pie.Clusterer.em。
1.获取采样区域范围
//这里以获取河北省邯郸市矢量边界为例
var geometry = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY").filter(pie.Filter.eq("name", "邯郸市")).first().geometry();
//矢量边界居中显示
Map.centerObject(geometry, 6);
//添加图层
Map.addLayer(geometry, {color: 'FF0000', fillColor: '00000000', width: 1}, "邯郸");
2.调用Landsat8 TOA数据集
//调用Landsat8 TOA数据集,设定筛选条件:日期、区域、云量,并进行镶嵌,裁剪
var img = pie.ImageCollection("LC08/01/T1").filterBounds(geometry).filterDate("2020-05-01", "2020-10-01").filter(pie.Filter.lte("cloudCover", 2)).select(["B2", "B3", "B4", "B5"]).max().clip(geometry);//添加影像并波段组合进行真彩色加载显示
Map.addLayer(img, {min: 0, max: 3000, bands: ["B4", "B3", "B2"]}, "img", false);
3.采样
//设置采样参数
var training = img.sample(geometry,30,"","",200);
查阅帮助文档可以看到sample的参数说明。
4.非监督分类训练
//分为5类
//(1)kMeans算法
var cluster = pie.Clusterer.kMeans(5).train(training).getInfo();
//(2)em算法
//var cluster = pie.Clusterer.em(5).train(training).getInfo();
5.分类结果渲染显示
//分类结果
var resultImage = img.cluster(cluster,"clusterA");// 结果显示渲染
var visParam = {opacity:1,classify:'0,1,2,3,4',palette: 'FF0000,00FFFF,00FF00,FF00FF,0000FF,FFFF00'
};
Map.addLayer(resultImage,visParam,'邯郸非监督分类');
kMeans结果
em结果
6.完整代码
// //1、获取采样区域范围
var geometry = pie.FeatureCollection("NGCC/CHINA_CITY_BOUNDARY").filter(pie.Filter.eq("name", "邯郸市")).first().geometry();
Map.centerObject(geometry, 6);
Map.addLayer(geometry, {color: 'FF0000', fillColor: '00000000', width: 1}, "邯郸");//2.调用Landsat8 TOA数据集,设定筛选条件:日期、区域、云量,并进行镶嵌,裁剪
var img = pie.ImageCollection("LC08/01/T1").filterBounds(geometry).filterDate("2020-05-01", "2020-10-01").filter(pie.Filter.lte("cloudCover", 2)).select(["B2", "B3", "B4", "B5"]).max().clip(geometry);//设置影像参数与波段组合并加载
Map.addLayer(img, {min: 0, max: 3000, bands: ["B4", "B3", "B2"]}, "img", false);//3、采样
var training = img.sample(geometry,30,"","",200);//4、非监督分类训练1-kMeans算法
// var cluster = pie.Clusterer.kMeans(5).train(training).getInfo();//4、非监督分类训练2-em算法
var cluster = pie.Clusterer.em(5).train(training).getInfo();//5、分类结果
var resultImage = img.cluster(cluster,"clusterA");// 结果显示渲染
var visParam = {opacity:1,classify:'0,1,2,3,4',palette: 'FF0000,00FFFF,00FF00,FF00FF,0000FF,FFFF00'
};
Map.addLayer(resultImage,visParam,'邯郸非监督分类');
print(img)
总结
本节主要学习了基于PIE-Engine Studio 进行非监督分类。欢迎大家批评指正,探讨交流!!!
参考:
《遥感应用分析原理与方法》赵英时
《遥感导论》梅安新
【PIE-Engine Studio学习笔记05】图像分类——非监督分类相关推荐
- ROBOT STUDIO 学习笔记
ROBOT STUDIO 学习笔记 机器人行业四大家族:库卡.ABB.安川.发那科 1.新建工作站 1.模型的插入 机器人 控制柜 末端执行器 工作台的插入 显示机器人的工作区域 将工作台移动到机器人 ...
- JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...
- JavaScript学习笔记05【高级——DOM对象】
w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...
- MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- Android Studio --- [学习笔记]TCP(第2弹)、GridView、ScrollView
说明 这篇主要接上一篇Android Studio - > [学习笔记]RadioButton.CheckBox.ImageView.ListView.TCP的三次握手 对上面回答的细解,并用J ...
- Android Studio --- [学习笔记]RadioButton、CheckBox、ImageView、ListView、TCP的三次握手
说明 源代码 在2.x里有TCP的三次挥手与四次握手,先对它进行简单的回答(百度).预计在下一篇里,会继续说明TCP 接上一篇: Android Studio - > [学习笔记]Button. ...
- opencv学习笔记05
原创:opencv学习笔记05 OpenCV-Python教程:40.ORB https://www.jianshu.com/p/49a84ddef11d ORB最重要的事情是它是OpenCV实验室出 ...
- 【JVM 学习笔记 05】:JVM性能调优工具的使用和优化案例
[JVM 学习笔记 05]:JVM性能调优工具的使用 1. 使用 jstat(命令行工具) 查看线上系统的JVM运行状况 1.1 常用命令 1.2 使用技巧 1.2.1 随着系统运行,每秒钟会在年轻代 ...
最新文章
- 小猿圈Python之实现京东秒杀功能代码
- Next-best-action marketing简介
- postgresql 修改字段名称
- Centos7安装部署Zabbix3.4
- sicily 1012. Stacking Cylinders
- jquery兄弟标签_js jquery获取当前元素的兄弟级 上一个 下一个元素
- HTML 表格的样式属性
- 性能测试之JMeter配置元件【HTTP信息头管理器】
- 在shell脚本中使用*正则的问题
- Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法...
- GDP代码学习——GUX
- ADB 操作命令详解及用法大全
- 您的计算机究竟如何像美味的Reuben三明治
- 如何应对美国对开源项目的出口管制?这是Linux基金会的建议
- 文件关联修复工具(用文本文档保存后后缀修改为bat)
- 江阴:智慧融入城市血液,打造创新发展新名片
- 2cm有多长实物图_两厘米(2cm有多长实物图)
- python flag用法_Python之FLAGS用法
- 11月第5周业务风控关注|重磅!瓜子二手车“遥遥领先”被罚天价1250万
- 网络共享计算机怎么连接,电脑共享网络怎么连接