【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】图像分类——非监督分类相关推荐

  1. ROBOT STUDIO 学习笔记

    ROBOT STUDIO 学习笔记 机器人行业四大家族:库卡.ABB.安川.发那科 1.新建工作站 1.模型的插入 机器人 控制柜 末端执行器 工作台的插入 显示机器人的工作区域 将工作台移动到机器人 ...

  2. JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  3. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  4. JavaScript学习笔记05【高级——DOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  5. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  6. Android Studio --- [学习笔记]TCP(第2弹)、GridView、ScrollView

    说明 这篇主要接上一篇Android Studio - > [学习笔记]RadioButton.CheckBox.ImageView.ListView.TCP的三次握手 对上面回答的细解,并用J ...

  7. Android Studio --- [学习笔记]RadioButton、CheckBox、ImageView、ListView、TCP的三次握手

    说明 源代码 在2.x里有TCP的三次挥手与四次握手,先对它进行简单的回答(百度).预计在下一篇里,会继续说明TCP 接上一篇: Android Studio - > [学习笔记]Button. ...

  8. opencv学习笔记05

    原创:opencv学习笔记05 OpenCV-Python教程:40.ORB https://www.jianshu.com/p/49a84ddef11d ORB最重要的事情是它是OpenCV实验室出 ...

  9. 【JVM 学习笔记 05】:JVM性能调优工具的使用和优化案例

    [JVM 学习笔记 05]:JVM性能调优工具的使用 1. 使用 jstat(命令行工具) 查看线上系统的JVM运行状况 1.1 常用命令 1.2 使用技巧 1.2.1 随着系统运行,每秒钟会在年轻代 ...

最新文章

  1. 小猿圈Python之实现京东秒杀功能代码
  2. Next-best-action marketing简介
  3. postgresql 修改字段名称
  4. Centos7安装部署Zabbix3.4
  5. sicily 1012. Stacking Cylinders
  6. jquery兄弟标签_js jquery获取当前元素的兄弟级 上一个 下一个元素
  7. HTML 表格的样式属性
  8. 性能测试之JMeter配置元件【HTTP信息头管理器】
  9. 在shell脚本中使用*正则的问题
  10. Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法...
  11. GDP代码学习——GUX
  12. ADB 操作命令详解及用法大全
  13. 您的计算机究竟如何像美味的Reuben三明治
  14. 如何应对美国对开源项目的出口管制?这是Linux基金会的建议
  15. 文件关联修复工具(用文本文档保存后后缀修改为bat)
  16. 江阴:智慧融入城市血液,打造创新发展新名片
  17. 2cm有多长实物图_两厘米(2cm有多长实物图)
  18. python flag用法_Python之FLAGS用法
  19. 11月第5周业务风控关注|重磅!瓜子二手车“遥遥领先”被罚天价1250万
  20. 网络共享计算机怎么连接,电脑共享网络怎么连接

热门文章

  1. 利用SQL语句计算库存
  2. I2C协议详解 (Based Philips I2C spec)
  3. 关于前端架构师的二三事
  4. 【系统集成项目管理刷题专题】第12章—项目沟通管理和干系人管理
  5. 交换机-Smart Link AND Monitor Link的配置
  6. 数据库和计算机实验小结,计算机——数据库实验报告.doc
  7. 机密,爬虫技术挣钱方法来了
  8. IPSec的三个协议和两种模式详解
  9. 基于halcon的焊点定位实例
  10. 重入锁-ReentrantLock