面向对象的高分辨率遥感影像分类实例

article/2025/8/19 4:45:59

一、为什么要使用面向对象

传统的基于像素的遥感影像处理方法都是基于遥感影像光谱信息极其丰富,地物间光谱差异较为明显的基础上进行的。对于只含有较少波段的高分辨率遥感影像,传统的分类方法,就会造成分类精度降低,空间数据的大量冗余,并且其分类结果常常是椒盐图像,不利于进行空间分析。

影像中地物类别特征不仅由光谱信息来刻画的,很多情况下(高分辨率或纹理影像数据)通过纹理特征来表示。此外背景信息在影像分析中很重要,举例来说,城市绿地与某些湿地在光谱信息上十分相似,在面向对象的影像分析中只要明确城市绿地的背景为城市地区,就可以轻松地区分绿地与湿地,而在基于像元的分类中这种背景信息几乎不可利用。面向对象的影像分析技术是在空间信息技术长期发展的过程中产生的,在遥感影像分析中具有巨大的潜力,要建立与现实世界真正相匹配的地表模型,面向对象的方法是目前为止较为理想的方法。面向对象的处理方法中最重要的一部分是图像分割。

二、图像对象与地理对象关系

在分类之前,必须根据需要提取的地物类别,选择合适的尺度和合适的特征,然后根据地物类别的性质,设计好分类策略和步骤。

图像对象 < 地理对象:根据像素间邻接关系创建和使用图像对象

图像对象 ≈ 地理对象:对象间拓扑关系(相对距离、方位关系、相关等GIS空间分析功能)

图像对象 > 地理对象: 利用地理对象间聚集(共生)关系

三 案例展示(SLIC算法分割图像)

3.1 需要的python模块

from skimage.segmentation import slic    #SCLI算法包
from skimage.segmentation import mark_boundaries  #根据SLIC分割结果生成边界
from skimage.util import img_as_float    #读取影像数据为float型
from skimage import io,color      #颜色库
import matplotlib.pyplot as plt   #绘图制图
import argparse
import skimage.io as SKimg   #读取多种栅格图

3.2 SLIC算法原理

整个算法的输入只有一个,即超像素的个数K。

图片原有N个像素,要分割成K个像素,那么每个像素的大小是N/K。超像素之间的距离(即规则情况下超像素的边长)就是S=sqrt(N/K)。

我们的目标是使代价函数(cost function)最小。具体到本算法中,就是每个像素到所属的中心点的距离之和最小。

首先,将K个超像素种子(也叫做聚类,即超像素的中心),均匀撒到图像的像素点上。

一次迭代的第一步,对每个超像素的中心,2S范围内的所有像素点,判断他们是否属于这个超像素。这样之后,就缩短了像素点到超像素中心的距离。

一次迭代的第二步,对每个超像素,将它的超像素中心移动到这个超像素的中点上。这样也缩短了像素点到超像素中心的距离。

一般来说,迭代10是聚类效果和计算成本折中的次数。

3.3 SLIC具体实现步骤

1.初始化种子点(聚类中心):按照设定的超像素个数,在图像内均匀的分配种子点。假设图片总共有 N 个像素点, 预分割为 K 个相同尺寸的超像素,那么每个超像素的大小为N/ K ,则相邻种子点的距离(步长)近似为S=sqrt(N/K)。

2.在种子点的n*n邻域内重新选择种子点(一般取n=3)。具体方法为:计算该邻域内所有像素点的梯度值,将种子点移到 该邻域内梯度最小的地方。这样做的目的是为了避免种子点落在梯度较大的轮廓边界上,以免影响后续聚类效果。

3.在每个种子点周围的邻域内为每个像素点分配类标签(即属于哪个聚类中心)。和标准的k-means在整张图中搜索不同, SLIC的搜索范围限制为2S x 2S,可以加速算法收敛,如下图。在此注意一点:期望的超像素尺寸为S x S,但是搜索的范围是2S x 2S。

4.距离度量。包括颜色距离和空间距离。对于每个搜索到的像素点,分别计算它和该种子点的距离。距离计算方法如下:

其中,dc代表颜色距离,ds代表空间距离,Ns是类内最大空间距离,定义为Ns=S=sqrt(N/K),适用于每个聚类。 最大的颜色距离Nc既随图片不同而不同,也随聚类不同而不同,所以我们取一个固定常数m(取值范围[1,40],一般取10)代替。 最终的距离度量D’如下:

由于每个像素点都会被多个种子点搜索到,所以每个像素点都会有一个与周围种子点的距离,取最小值对应的种子点作为该像素点的聚类中心。

5.迭代优化。理论上上述步骤不断迭代直到误差收敛(可以理解为每个像素点聚类中心不再发生变化为止),实践发现10次迭代对绝大部分 图片都可以得到较理想效果,所以一般迭代次数取10。

6.增强连通性。经过上述迭代优化可能出现以下瑕疵:出现多连通情况、超像素尺寸过小,单个超像素被切割成多个不连续超像素等, 这些情况可以通过增强连通性解决。主要思路是:新建一张标记表,表内元素均为-1,按照“Z”型走向(从左到右,从上到下顺序) 将不连续的超像素、尺寸过小超像素重新分配给邻近的超像素,遍历过的像素点分配给相应的标签,直到所有点遍历完毕为止。

3.4 python关键代码

Tpan =SKimg.imread(“F:/pythontestdata/MyTiff/tianhui1200pan.tif”); 读取全色影像数据(格式为TIFF)
TpanRGB=img_as_float(color.gray2rgb(Tpan)); 将灰度图像转为RGB图像
segments = slic(TpanRGB, n_segments =100, sigma = 5); 设置分割数量为100
plt.imshow(mark_boundaries(TpanRGB, segments,color=(1, 1, 0), mode=’outer’, background_label=0)); 显示分割后的边界线条
plt.savefig(‘name’,dpi=2000); 分割效果保存出去

3.5 分割效果展示

分别设置分割体的数量为 100,200,500,1000,比较分割效果的差异。

从上图可以看出,分割体数量越大,对图像分割得越细致,同类地物分割得也就越破碎。在实际运用,可根据不同的需求,设置不同的分割体数量, 从而达到比较理想的分割效果。


http://chatgpt.dhexx.cn/article/JUbl5HJj.shtml

相关文章

segment anything进行高分辨率遥感影像分割及效果对比

一、SAM模型介绍 Segement Anything Model&#xff0c;简称SAM&#xff0c;是4月初Meta 发布的史上首个图像分割基础模型。它是通过将三个相互关联的元素&#xff1a;Task、Model和Data结合&#xff0c;来构建形成的一个大模型。Task的构成如下图所示&#xff0c;通过输入分割…

高分辨率遥感图像目标检测和场景分类研究进展

本文按照西北工业大学程塨老师的高分辨率遥感图像目标检测和场景分类研究进展汇报进行整理&#xff0c;需要的同学可借此了解遥感图像相关知识~ 高分辨率遥感图像目标检测和场景分类 一、背景介绍1.时间轴2.应用3.图像智能 二、高分辨率遥感图像目标检测研究进展1.任务定义2.难…

深度学习高分辨率遥感影像语义分割

深度学习大家都知道&#xff0c;在计算机视觉领域取得了很大的成功&#xff0c;在遥感影像自动解译方面&#xff0c;同样带来了快速的发展&#xff0c;我在遥感影像自动解译领域&#xff0c;也做了一些微薄的工作&#xff0c;发表几篇论文&#xff0c;我一直关注遥感影像自动解…

FCN全卷积网络模型——高分辨率遥感影像地物识别

FCN全卷积网络模型——高分辨率遥感影像地物识别 这是一篇操作日记 win10与ubuntu的caffe安装过程独立&#xff0c;只是两次不同系统下的演习&#xff0c;真正实验在ubuntu下完成。 操作空间 win10 1:Anaconda 2.0 2:Visual Studio 2013 3:caffe 4:python2.7 Ubuntu 16.04 …

高分辨率遥感影像融合技巧

软件下载地址&#xff1a; https://pan.baidu.com/s/1dt0yDUsAork9LnLnZTwCgw 需要百度网盘下载密码&#xff0c;留言邮箱地址。 或联系联系 QQ&#xff1a;1257396288​ 该软件包含高分辨率遥感影像融合功能&#xff08;pansharp2&#xff09;&#xff0c;融合效果好&#…

【GIS】高分辨率遥感影像智能解译

1 绪论 随着航空科技工业的不断成熟与发展&#xff0c;我国遥感卫星研制能力不断攀升&#xff0c;发射数量逐年提高&#xff0c;在轨运行的遥感卫星为社会生产及居民日常生活提供了巨大的支持与便利。我国目前同时在轨运行的遥感卫星数量已超过60颗&#xff0c;每天获取并传回…

数据结构学习笔记(四)—— 树

树 文章目录 树一.树的基本概念二.树的遍历1.先序遍历2.后序遍历3.中序遍历4.层序遍历 三.树的存储表示和操作实现1.双亲表示法2.孩子表示法3.双亲孩子表示法4.孩子兄弟表示法 四.树的性质五.二叉树基本概念与定义二叉树的特殊形态——斜树二叉树的特殊形态——满二叉树二叉树的…

sklearn学习(集成算法:随机森林)

随机森林树 一.概述【1】集成算法概述1.概念与应用2.集成算法的目标3.其他定义 【2】sklearn中的集成算法1.sklearn中的集成算法模块ensemble&#xff08;1&#xff09;类与类的功能 2.复习&#xff1a;sklearn中的决策树3.sklearn的基本建模流程 二.RandomForestClassifier【1…

数据结构与算法之树(三)AVL树

数据结构与算法之树 数据结构与算法之树&#xff08;一&#xff09;二叉树概念及遍历方式&#xff08;图文并茂&#xff09; 数据结构与算法之树&#xff08;二&#xff09;二叉查找树 数据结构与算法之树&#xff08;三&#xff09;AVL树 数据结构与算法之树&#xff08;四…

C语言数据结构总结:树

树 一&#xff0c;树的定义二&#xff0c;树的基本术语三&#xff0c;二叉树的定义四&#xff0c;二叉树的性质和存储结构五&#xff0c;关于二叉树的算法 一&#xff0c;树的定义 树是n&#xff08;n>0&#xff09;个结点的有限集合。 若n0&#xff0c;称为空树。 若n>…

【C++从入门到入土】第二十一篇:二叉搜索树之AVL树

AVL树 文章目录 AVL树一、AVL树1.特点2.操作旋转插入删除查找 一、AVL树 在计算机科学中&#xff0c;AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1&#xff0c;所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平…

数据结构--二叉搜索树

二叉搜索树 一丶概念以及特点二丶相关操作定义TreeMap类put()操作--插入节点get()操作--得到key对应的value值getOrDefault()操作containsKey()操作--检查key是否存在containsValue()操作--检查value是否存在remove()操作--删除操作思路&#xff08;1&#xff09;叶子结点&…

Java数据结构--树2

Java数据结构--树 一、平衡树1.1 2-3 查找树1.1.1 2-3查找树的定义1.1.2 查找1.1.3 插入1.1.3.1 向2-结点中插入新键1.1.3.2 向一棵只含有一个3-结点的树中插入新键1.1.3.3 向一个父结点为2-结点的3-结点中插入新键1.3.1.4 向一个父结点为3-结点的3-结点中插入新键1.3.1.5 分解…

数据结构之多路查找树

多路查找树 一、2-3树1.1 查找1.2 2-3树的插入实现1.3 2-3树的删除节点 二、2-3-4树三、总结 二叉排序树简单的实现在多数情况能够达到预期的查找效率&#xff0c;但是每个节点只能存储一个元素和只能有两个孩子&#xff0c;使得在大量数据下会造成二叉排序树的深度特别大&…

【数据结构 7】二叉查找树及其Java实现

【数据结构 1】顺序表及其Java实现 【数据结构 2】单向链表及其Java实现 【数据结构 3】双向链表及其Java实现 【数据结构 4】栈及其Java实现 【数据结构 5】队列及其Java实现 【数据结构 6】符号表及其Java实现&#xff08;使用链表实现&#xff09; 【数据结构 7】二叉查找树…

C++从入门到精通(第十篇) :二叉搜索树

二叉搜索树 一&#xff1a;二叉搜索树概念二&#xff1a; 二叉搜索树实现节点的定义二叉搜索树实现 三&#xff1a;二叉搜索树的应用四&#xff1a;二叉树有关面试题ps 很多小伙伴为了刷题发愁 今天为大家推荐一款刷题神奇哦&#xff1a;刷题面试神器牛客 各大互联网大厂面试真…

数据结构与算法之树(二)二叉查找树

数据结构与算法之树 数据结构与算法之树&#xff08;一&#xff09;二叉树概念及遍历方式&#xff08;图文并茂&#xff09; 数据结构与算法之树&#xff08;二&#xff09;二叉查找树 数据结构与算法之树&#xff08;三&#xff09;AVL树 数据结构与算法之树&#xff08;四…

【算法修炼】二叉搜索树

学习自&#xff1a;https://labuladong.gitee.io/algo/2/19/26/ 二叉搜索树 一、BST的中序遍历230、二叉搜索树中第k小的元素&#xff08;中等&#xff09;1038、从二叉搜索树到更大和树&#xff08;中等&#xff09; 二、判断BST的合法性※98、验证二叉搜索树&#xff08;中等…

数据结构(C语言)-树

树 一、树1、树的定义2、树的基本术语3、树结构和线性结构的比较 二、二叉树1、二叉树的定义2、二叉树的形态与树的形态3、二叉树的性质4 、二叉树的存储结构5、遍历二叉树6、二叉树的其他操作7、线索二叉树 三、树与二叉树的转换1、树转换成二叉树2、二叉树变树 四、哈夫曼树1…

【数据结构与算法】程序内功篇六--树

程序内功篇六--树 一、树1、树的含义2、树的特点(选看)3、树的逻辑结构 二、二叉树1、二叉树的含义2、二叉树性质3、二叉树-顺序存储4、二叉树-链式存储5、二叉树的遍历6、二叉树创建与遍历C程序的实现&#xff08;1&#xff09;二叉树的创建&#xff08;2&#xff09;前序遍历…