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

这篇具有很好参考价值的文章主要介绍了基于 R 对卫星图像进行无监督 kMeans 分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

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

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

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

基于 R 对卫星图像进行无监督 kMeans 分类,kmeans,算法,机器学习,R

        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)

结果是这样的:

基于 R 对卫星图像进行无监督 kMeans 分类,kmeans,算法,机器学习,R

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

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

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

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

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

基于 R 对卫星图像进行无监督 kMeans 分类,kmeans,算法,机器学习,R

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

三、结论

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

到了这里,关于基于 R 对卫星图像进行无监督 kMeans 分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 聚类算法:Kmeans和Kmeans++算法精讲

    其实Kmeans聚类算法在YOLOv2(【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记))中我们就见到了,那时候只是简单地了解了一下。后来在这学期的数据挖掘课程的期末汇报中,我又抽中了这个算法,于是又重新学习了一遍。另外最近在看一些改进的论文,很多摘要中也都

    2024年02月05日
    浏览(20)
  • 【MATLAB第58期】基于MATLAB的PCA-Kmeans、PCA-LVQ与BP神经网络分类预测模型对比

    基于UCI葡萄酒数据集进行葡萄酒分类及产地预测 共包含178组样本数据,来源于三个葡萄酒产地,每组数据包含产地标签及13种化学元素含量,即已知类别标签。 把样本集随机分为训练集和测试集(70%训练,30%测试),根据已有数据集训练一个能进行葡萄酒产地预测的模型,以

    2024年02月16日
    浏览(18)
  • 使用 pyspark 进行 Clustering 的简单例子 -- KMeans

    K-means算法适合于简单的聚类问题,但可能不适用于复杂的聚类问题。此外,在使用K-means算法之前,需要对数据进行预处理和缩放,以避免偏差。 K-means是一种聚类算法,它将数据点分为不同的簇或组。Pyspark实现的K-means算法基本遵循以下步骤: 随机选择K个点作为初始质心。

    2024年02月06日
    浏览(18)
  • 机器学习---kMeans算法

    1. Load dataset 鸢(yuan1)尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类, 每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属 性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

    2024年01月16日
    浏览(23)
  • Kmeans算法及简单案例

    选择聚类的个数k. 任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心。 对每个点确定其聚类中心点。 再计算其聚类新中心。 重复以上步骤直到满足收敛要求。(通常就是确定的中心点不再改变。) Kmeans算法流程案例 将下列数据点用K-means方法进行聚类(这里使用

    2024年02月07日
    浏览(13)
  • 机器学习——Kmeans算法

    一、实验目的 学习 sklearn 模块中的 KMeans 算法 二、实验内容 学习 KMeans 算法,了解模型创建、使用模型及模型评价等操作 三、实验原理或流程 实验原理: K-means 算法是将样本聚类成 k 个簇 (cluster) ,具体算法描述如下 : 1 、随机选取 k 个聚类质心点 (cluster centroids) 为 2 、重复

    2024年02月11日
    浏览(19)
  • Kmeans算法(附代码)

    Kmeans算法是一个无监督机器学习算法。其基本作用就是将一堆杂乱、无序的数据归成类,是用户给定的数,它表示用户需要将数据分成个类。 首先将总的数据集中随机挑选出个数据,作为将来个类对应的质心(相当于每个类对应的老大,将来每个类的所有点都将其包围)。 从头

    2024年02月05日
    浏览(15)
  • Matlab实现Kmeans聚类算法

    kmeans聚类算法是一种迭代求解的聚类分析算法。其实现步骤如下: (1) 随机选取K个对象作为初始的聚类中心 (2) 计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。 (3) 聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚

    2024年02月02日
    浏览(20)
  • Spark实现KMeans算法代码示例

    Spark实现K-Means算法代码示例-K-Means算法是一种基于距离的聚类算法,采用迭代的方法,计算出K个聚类中心,把若干个点聚成K类。MLlib实现K-Means算法的原理 K-Means算法是一种基于距离的聚类算法,采用迭代的方法,计算出K个聚类中心,把若干个点聚成K类。 MLlib实现K-Means算法的

    2024年02月12日
    浏览(16)
  • KMeans算法全面解析与应用案例

    本文深入探讨了KMeans聚类算法的核心原理、实际应用、优缺点以及在文本聚类中的特殊用途,为您在聚类分析和自然语言处理方面提供有价值的见解和指导。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦

    2024年02月05日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包