基于 R 对卫星图像进行无监督 kMeans 分类

一、前言

        本文将向您展示如何使用 R 对卫星图像执行非常基本的 kMeans 无监督分类。我们将在 Sentinel-2 图像的一小部分上执行此操作。

        Sentinel-2 是由欧洲航天局发射的一颗卫星,其数据可在此处免费访问。

        我要使用的图像显示了 Neusiedl 湖的北部(奥地利维也纳以东)。 该地区以销售、优质葡萄酒和美丽的自然风光(芦苇和受拉姆萨尔公约保护的湿地)而闻名。 我将使用波段 2 - 蓝色、波段 3 - 绿色、波段 4 - 红色和波段 8 - 近红外线进行分类。 图像的外观如下 - 在左侧您可以看到真彩色合成 (432),在右侧可以看到假彩色近红外合成 (843):

        Sentinel-2 看到的 Neusiedl 湖。 湖泊周围环绕着芦苇带和密集的农业活动。 在图像的西北部可以看到一片落叶林。

        请注意,您可以使用您选择的任何其他图像来执行分类。 代码将保持不变!

二、代码实现

(1)将图像加载到 R 中

        要执行无监督图像分类,我们首先需要将图像加载到 R 中。这就像这两行一样简单:        

library(raster) #load raster package
image <- stack("path/To/YourImage/stack.tif)

        如果您没有安装光栅包,请先执行“install.packages(“raster”)”。

(2)分类

        如果您以前从未对图像进行过分类或者您是机器学习的新手,那么 kMeans 无监督分类听起来可能会非常混乱和困难。 不用担心! 您实际上只需要大约 3-4 行代码就完成了 🙂 我们只需要“kMeans”函数。 我们需要指定我们想要在图像中“检测”的类的数量,该函数将处理其余部分。 它迭代地浏览图像并寻找所谓的集群(=构成土地覆盖类别的光谱相似区域)。 在我的例子中,我想检测六个类别,让我们看看无监督分类的表现如何:

#execute the kMeans function on the image values (indicated by the squared bracket) 
#and search for 6 clusters (centers = 6)
kMeansResult <- kmeans(image[], centers=6)#create a dummy raster using the first layer of our image 
#and replace the values of the dummy raster with the clusters (classes) of the kMeans classification
result <- raster(image[[1]])
result <- setValues(result, kMeansResult$cluster)#plot the result
plot(result)

结果是这样的:

        默认的可视化效果不是我见过的最好的,但是好吧……这是一个好的开始。 您可以看到六种不同的颜色,每种颜色对应一个光谱相似的区域。

        无监督 kMeans 分类之后的第一步也是必要的一步是通过算法将类名分配给检测到的集群。 让我们看看我们的分类图像并将其与上面的卫星场景进行比较,这将帮助我们为检测到的集群/类分配名称:

  • 1和2表示芦苇或森林
  • 水被分类为3
  • 农业大致由 4,5 和 6 描述。

        让我们改变绘图的颜色,看看它看起来像什么:

plot(result, col=c("darkgreen", "darkgreen","blue","orange", "orange","orange"))

         具有类别着色的无监督 kMeans 分类。 深绿色表示芦苇和森林,橙色表示农业,蓝色表水。

三、结论

        我们可以看到,水被分类器很好地捕捉到了,农业也被很好地检测到了。 然而,芦苇(湖周围)和森林(湖西北部)似乎混合在一起,我们可以看到这两个类别之间存在很大的混淆。 无监督 kMeans 分类器是检测图像内部模式的一种快速简便的方法,通常用于进行第一个原始分类。 它因其良好的性能而广受欢迎,并且由于其应用不需要样本点(与监督分类相反)而被广泛使用。 然而,我的意图是检测六个不同的类别,而该算法只能大致区分三个。 通过增加“中心”参数,可能会检测到更多类别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9693.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab用histfit画直方图+拟合曲线

matlab画直方图拟合曲线 成图效果1 数据格式2 绘制步骤3 后话 成图效果 1 数据格式 应该准备一个double的数组&#xff0c;如果是csv或者xlsx直接拖进matlab是table型&#xff0c;这是无法作为绘图参数的 如果是table型&#xff0c;可以使用table2array(data)进行转换 2 绘制…

【MySQL】在Linux下删除和安装MySQL

文章目录 一、前言二、检查、卸载内置环境三、获取mysql官方yum源四、正式安装MySQL服务五、登录MySQL配置my.cnf设置开机启动 一、前言 大家好久不见&#xff0c;今天开始分享关系型数据库Mysql的一些知识。 二、检查、卸载内置环境 2.1 首先使用命令查询当前mysql的运行状…

[Qt 教程之Widgets模块] —— QFontComboBox 字体选择器

Qt系列教程总目录 文章目录 3.2.1 创建 QFontComboBox3.2.2 成员函数1. 书写系统2. 字体过滤器3. 当前字体4. 信号 该控件用于选择字体&#xff0c;在一些软件中经常有类似控件&#xff0c;如下&#xff1a; Microsoft Office&#xff1a; Photoshop&#xff1a; QFontComboB…

聚观早报 | 字节跳动要造机器人;苹果已开发悬空虚拟键盘

今日要闻&#xff1a;字节跳动要造机器人&#xff1b;苹果已开发悬空虚拟键盘&#xff1b;苹果汽车或售价9万美元&#xff1b;全球首例猪心脏移植患者仅存活60天&#xff1b;首款搭载ChatGPT的自行车问世 字节跳动要造机器人 7 月 3 日消息&#xff0c;「机器人」作为未来科技…

【IT服务管理】MITRE :IT服务管理

定义&#xff1a; 信息技术 (IT) 服务管理 (ITSM) 是解决管理、支持和交付 IT 服务的最佳实践的框架、流程和模型的通用保护伞。IT 服务可能包括&#xff08;由 NIST 为云计算定义&#xff09;&#xff1a;软件即服务 (SaaS)、平台即服务 (PaaS) 和基础设施即服务 (IaaS)。 关键…

单片机-矩阵键盘密码锁

89C52RC芯片 1.矩阵按键输入正确密码&#xff0c;LCD1602右上角显示ok&#xff0c;错误显示Err。 涉及文件&#xff1a; 1.main.c (#include<regx52.h>) 2.lcd1602.c lcd1602.h 3.Delay.c Delay.h 4.MatrixKey.c MetrixKey.h 共7项 代码 main.c #…

【EasyX】使用C/C++实现 流星雨效果(配上详细注释解释)

&#x1f38a;专栏【​​​​​​​EasyX】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Love Story】 &#x1f970;大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;效果&#x…

Webots介绍

Webots介绍 1 介绍1.1 概述1.2 应用1.3 入门要求1.4 技术支持1.5 仿真步骤世界&#xff08;webots定义&#xff09;控制器超级控制器 1.6 平台能力三维建模能力物理引擎外设支持 2 软件使用启动webots用户界面文件菜单编辑菜单查看菜单模拟菜单构建菜单叠加菜单工具菜单帮助菜单…

机器学习洞察 | JAX,机器学习领域的“新面孔”

在之前的《机器学习洞察》系列文章中&#xff0c;我们分别针对于多模态机器学习和分布式训练、无服务器推理进行了解读&#xff0c;本文将为您重点介绍 JAX 的发展并剖析其演变和动机。下面&#xff0c;就让我们来认识一下 JAX 这一新崛起的深度学习框架—— 亚马逊云科技开发…

react生命周期

react生命周期 16.3版本之前 挂载阶段&#xff1a; constructor&#xff1a;组件的构造函数&#xff08;constuctor&#xff09;部分&#xff0c;继承React Component&#xff0c;在constructor中通过super(props)调用父类React Component的构造函数&#xff0c;才拥有了之后的…

C语言程序环境和预处理

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码 2. 详解编译…

python 中禁用 SettingWithCopyWarning

最近代码中出现了这个warn&#xff0c;但是我确信我已经把所有的df赋值都改成loc了&#xff0c;依旧会出现&#xff0c;只有把这个warn禁了。 import pandas as pd import warnings# 禁用 SettingWithCopyWarning 警告 warnings.filterwarnings("ignore", categorypd…