基于K-means与CNN的遥感影像分类方法

news2024/11/18 13:25:15

基于K-means与CNN的遥感影像分类
一、引言
1.研究背景
航天遥感技术是一种通过卫星对地观测获取遥感图像信息数据的技术,这些图像数据在各领域都发挥着不可或缺的作用。遥感图像分类主要是根据地面物体电磁波辐射在遥感图像上的特征,判断识别地面物体的属性,进而为目标检测与识别等其他应用提供辅助信息,也可以作为最终结果提供基础地理信息用于地图绘测、抢险救灾、军事侦察等领域。遥感影像分类是遥感技术应用的一个重要环节。
遥感影像分类就是利用计算机通过对遥感图像中各类地物的光谱信息和空间信息进行分析,选择特征,将图像中各个像元按照某种规则或算法划分不同的类别,然后获得遥感图像中与实际地物的对应信息,从而实现图像的分类。遥感图像计算机分类的依据是遥感图像像素的相似度。常使用距离和相关系数来衡量相似度。常见的分类方法有:监督分类、非监督分类法
2.研究内容
各方面学者对遥感图像的分类有着诸多研究,提出了许多分类方法,按是否需要选取标记样本可将分类方法分为监督分类和非监督分类。根据最小分类单元可将分类方法分为基于像元的分类、基于对象的分类,以及基于混合像元分解的分类。此外,不同类型的遥感图像(多光谱遥感图像、高光谱遥感图像、合成孔径雷达图像) 分类方法也不尽相同。由于目标分类通常是在特征空间中进行的,因此特征的表达与学习是实现目标分类的关键。根据表达和学习特征的方式,可将现有的遥感图像分类方法大致分为三类: 基于人工特征描述的分类方法、基于机器学习的分类方法和基于深度学习的分类方法。需要注意的是,这三类方法并没有严格的区分界线,相互之间互有重叠和借鉴。本次研究分别使用了一种机器学习和一种深度学习方法进行模型的构建。

二、分类方法

  1. K-means算法
    K-means算法是一种较典型的逐点修改迭代的动态聚类算法,也是一种普遍采用的方法,其要点是以误差平方和为准则函数。一般的作法是先按某些原则选择一些代表点作为聚类的核心,然后把其余的待分点按某种方法(判据准则)分到各类中去,完成初始分类。初始分类完成以后,重新计算各聚类中心,完成了第一次迭代。然后修改聚类中心,以便进行下一次迭代。这种修改有两种方案,即逐点修改和逐批修改。逐点修改类中心就是一个像元样本按某一原则归属于某一组类后,就要重新计算这个组类的均值,并且以新的均值作为凝聚中心点进行下一次像元聚类。逐批修改类中心就是在全部像元样本按某一组的类中心分类之后,再计算修改各类的均值,作为下一次分类的凝聚中心点。
    代码展示:
rs_data_trans = rs_data.transpose(1,2,0) 
rs_data.shape, rs_data_trans.shape 
rs_data_1d = rs_data_trans.reshape(-1, rs_data_trans.shape[2]) 
rs_data_1d.shape
cl = cluster.KMeans(n_clusters=4) # create an object of the classifier 
param = cl.fit(rs_data_1d) # train it 
img_cl = cl.labels
img_cl = img_cl.reshape(rs_data_trans[:,:,0].shape) 
prof = rs.profile 
prof.update(count=1) 
with rio.open('result.tif','w',**prof) as dst:
     dst.write(img_cl, 1)
fig, (ax1,ax2) = plt.subplots(figsize=[15,15], nrows=1,ncols=2) 
show(rs, cmap='gray', vmin=vmin, vmax=vmax, ax=ax1) 
show(img_cl, ax=ax2) 
ax1.set_axis_off() 
ax2.set_axis_off() 
fig.savefig("pred.png", bbox_inches='tight') 
plt.show()

K-means分类结果(红色:耕地,绿色:森林,蓝色:水体),如图所示:
在这里插入图片描述

  1. CNN算法
    CNN卷积网络采用“端对端”的特征学习,通过多层处理机制揭示隐藏于数据中的非线性特征,能够从大量训练集中自动学习全局特征(这种特征被称为“学习特征”),是其在遥感影像自动目标识别取得成功的重要原因,也标志特征模型从手工特征向学习特征转变。本次实验CNN网络架构中设计了四层卷积+池化,然后使用Relu激活函数,最后采用Softmax进行归一化处理计算每个目标类别在所有可能的目标类中的概率,即可对输入的图片进行分类。
    代码展示:
# 设计模型: CNN + maxpool 
model = tf.keras.models.Sequential([     
# 我们的数据是150x150而且是三通道的,所以我们的输入应该设置为这样的格式。     

tf.keras.layers.Conv2D(32, (3, 3), 
activation='relu', 
input_shape=(256, 256, 3)),     
tf.keras.layers.MaxPooling2D(2, 2),     
tf.keras.layers.Conv2D(64, (3, 3), 
activation='relu'),     
tf.keras.layers.MaxPooling2D(3, 3),    
tf.keras.layers.Conv2D(128, (3, 3), 
activation='relu'),     
tf.keras.layers.MaxPooling2D(2, 2),     
tf.keras.layers.Conv2D(128, (3, 3), 
activation='relu'),     
tf.keras.layers.MaxPooling2D(2, 2),     
tf.keras.layers.Flatten(),     # 512 neuron hidden layer     
tf.keras.layers.Dense(512, activation='relu'),     
tf.keras.layers.Dense(21, activation='softmax') #'sigmoid' ])

对以下图进行识别,输出为森林类别(It is forest),如图所示:
在这里插入图片描述

三、总结
深度学习在计算机视觉领域的巨大成功,遥感智能分析提供了重要机遇;机器学习创新,也为遥感影像分类带来更多思路。近年来这些算法被广泛应用在遥感领域,在大范围目标自动快速检测、复杂场景精细分类、地表参数快速识别等方面展示了巨大优势和发展潜力,不断提升智能影像分类效率与质量,为遥感大数据的智能信息提取带来发展契机。
遥感大数据是时空科技发展的新阶段,遥感图像分类、量化、预测,已经由传统的统计数学分析、定量遥感建模分析逐渐向数据驱动的智能分析转变。以智能分析为标志的遥感大数据时代已经到来,如何广泛、深化其应用,还值得产业界、学术界不断探索。但其无疑将在空天产业、智慧城市、政企数字化各领域带来一场深刻变革。

代码:
CNN:
https://gitee.com/A-xinss/cnn-to-remote-sensing-image-classification
CNN-进阶版
K-Means:
https://gitee.com/A-xinss/k-means-to-remote-sensing-image-classification

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BUUCTF pwn rip WriteUp

文件分析 下载附件,分析文件 可以看到是64位ELF文件,elf可以理解为Linux中的可执行文件,就像Windows中的exe文件 用ida打开文件 查看main函数的伪代码,可以看到有一个15位的字符数组,该数组通过gets函数传值 还有一…

Jupyter notebook修改背景主题

打开Anaconda Prompt,输入以下内容 1. pip install --upgrade jupyterthemes 下载对应背景主题包 出现Successfully installed jupyterthemes-0.20.0 lesscpy-0.15.1时,说明已经下载安装完成 2. jt -l 查看背景主题列表 3. jt -t 主题名称(…

AI:92-基于深度学习的红外图像人体检测

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的核心代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新…

SQL命令---修改字段的数据类型

介绍 使用sql语句修改字段的数据类型。 命令 alter table 表明 modify 字段名 数据类型;例子 有一张a表,表里有一个id字段,长度为11。使用命令将长度修改为12 下面使用命令进行修改: alter table a modify id int(12) NOT NULL;下面使修…

【Dubbo3云原生微服务开发实战】「Dubbo前奏导学」 RPC服务的底层原理和实现

RPC服务 RPC服务介绍RPC通信模式RPC架构组成RPC技术要点RPC通信技术选项分析RPC实战开发6大基础组件基础组件之Guava基础组件之Hutools基础组件之ReflectionASM基础组件之FastJSON/FastJSON2基础组件之FST相比FastJSON的优势 基础组件之Commons-Codec RPC框架层面选项分析RPC组…

STM32-TIM定时器中断

目录 一、TIM(Timer)定时器简介 二、定时器类型 2.1基本定时器结构 2.2通用定时器结构 2.3高级定时器结构 三、定时中断基本结构 四、时序图分析 4.1 预分频器时序 4.2 计数器时序 4.3 计数器无预装时序(无影子寄存器) …

LVGL_V8.3入门二---实时时钟(模仿华为watch-UI)

系列文章目录 文章目录 系列文章目录前言一、实现效果二、代码解析 前言 在这个博客中,我们将深入探讨LVGL(Light and Versatile Graphics Library)版本8.3的实时时钟应用,以模仿华为 Watch UI 为例。LVGL是一款专为嵌入式系统和…

Jenkins简单介绍

学习目标 知道jenkins应用场景能够安装部署jenkins服务器能够实现gitgithubjenkins手动构建能够实现gitgitlabjenkins自动发布系统 认识jenkins Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软…

Kafka集成springboot

安装kafka,直接到官网下载bin文件,本文使用windows进行使用kafka。 下载之后,第一步,启动zookeeper: zookeeper-server-start.bat ..\..\config\zookeeper.properties 第二步,启动kafka: kafka…

oops-framework框架 之 多语言设置文本、精灵和骨骼动画

引擎: CocosCreator 3.8.0 环境: Mac Gitee: oops-plugin-excel-to-json 注: 作者dgflash的oops-framework框架QQ群: 628575875 简介 作者dgflash在oops-framework的框架中提供了多语言,主要用于对文本、图片、骨骼动…

Verilog基础:寄存器输出的两种风格

相关文章 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 Verilog中的寄存器操作一般指的是那些对时钟沿敏感而且使用非阻塞赋值的操作。例如状态机中的状态转移,实际上就是一种寄存器操作,因为这相…

【docker 】centOS 安装docker

官网 docker官网 github源码 卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 安装软件包 yum install -y yum-utils \device-mapper-persistent-data…

自下而上-存储全栈(TiDB/RockDB/SPDK/fuse/ceph/NVMe/ext4)存储技术专家成长路线

数字化时代的到来带来了大规模数据的产生,各行各业都面临着数据爆炸的挑战。 随着云计算、物联网、人工智能等新兴技术的发展,对存储技术的需求也越来越多样化。不同应用场景对存储的容量、性能、可靠性和成本等方面都有不同的要求。具备存储技术知识和技…

基于 Gin 的 HTTP 中间人代理 Demo

前面实现的代理对于 HTTPS 流量是进行盲转的,也就是说直接在 TCP 连接上传输 TLS 流量,但是我们无法查看或者修改它的内容。当然了,通常来说这也是不必要的。不过对于某些场景下还是有必要的,例如使用 Fiddler 进行抓包或者监控其…

Flink 本地单机/Standalone集群/YARN模式集群搭建

准备工作 本文简述Flink在Linux中安装步骤,和示例程序的运行。需要安装JDK1.8及以上版本。 下载地址:下载Flink的二进制包 点进去后,选择如下链接: 解压flink-1.10.1-bin-scala_2.12.tgz,我这里解压到soft目录 [ro…

redis之缓存穿透,击透,雪崩~

以下为一个我们正常的缓存流程: 缓存雪崩: 在双十一的时候,淘宝的首页访问量是非常大的,所以它的很多数据是放在redis缓存里面,对应redis中的key,假设设置了缓存失效的时间为3小时,超过这三个小…

视觉学习笔记12——百度飞浆框架的PaddleOCR 安装、标注、训练以及测试

系列文章目录 虚拟环境部署 参考博客1 参考博客2 参考博客3 参考博客4 文章目录 系列文章目录一、简单介绍1.OCR介绍2.PaddleOCR介绍 二、安装1.anaconda基础环境1)anaconda的基本操作2)搭建飞浆的基础环境 2.安装paddlepaddle-gpu版本1)安装…

区块链实验室(29) - 关闭或删除FISCO日志

1. FISCO日志 缺省情况下,FISCO启动日志模块,日志记录的位置在节点目录中。以FISCO自带案例为例,4节点的FISCO网络,24个区块产生的日志大小,见下图所示。 2.关闭日志模块 当节点数量增大,区块高度增大时&…

利用Wix打包安装包

利用Wix打包安装包 背景具体步骤1、安装 WiX Toolset 工具集2、安装 WiX Toolset 系列 Visual Studio 插件3、创建Wix工程4、添加工程文件5、修改Product元素6、修改Package元素7、修改MajorUpgrade元素8、修改Media属性9、设置安装引导界面10、添加WPF项目文件11、添加桌面快捷…

资源三号卫星数字表面模型库

资源三号卫星数字表面模型库(简称ChinaDSM-China Digital Surface Model)是以资源三号卫星立体影像为数据源,采用自主知识产权的基于多基线、多匹配特征的地形信息自动提取技术,快速处理和生产提取的高精度、高保真15米格网数字表…