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

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

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

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

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

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

图像对象 ≈ 地理对象:对象间拓扑关系(相对距离、方位关系、相关等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,比较分割效果的差异。

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

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

  1. 如何制作用于遥感影像分类的高分辨率遥感影像数据集?

    How to make high resolution remote sensing image dataset? github地址 0.引言 根据自身需要制作遥感影像数据还是很具有现实意义:   第 ...

  2. 非监督分类ecognition_什么是遥感影像分类?

    什么是遥感影像分类? 图像分类是将土地覆盖物类别分配给像素的过程.例如,类包括水,城市,森林,农业和草地. 遥感中的三种主要图像分类技术是: 无监督图像分类 监督图像分类 面向对象的图像分类 无监督和 ...

  3. 基于高分辨率影像城市绿地信息提取_基于ENVI的高分辨率遥感影像城市绿地信息提取研究_陈阳pdf.doc...

    基于ENVI的高分辨率遥感影像城市绿地信息提取研究_陈阳pdf 第卷第期测绘工程,244 Vol.24No.4年月,20154Engineering of Surveying and MappingA ...

  4. 八邻域轮廓跟踪算法_结合mRMR选择和IFCM聚类的遥感影像分类算法

    随着遥感成像技术的发展,高分遥感影像空间分辨率逐年提高,已经成为获取地物信息的主要数据来源之一.高分影像分类作为遥感影像处理的重要任务之一,在地理国情普查与监测.数字城市建设.城市规划等领域具有广阔的 ...

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

    1 绪论 随着航空科技工业的不断成熟与发展,我国遥感卫星研制能力不断攀升,发射数量逐年提高,在轨运行的遥感卫星为社会生产及居民日常生活提供了巨大的支持与便利.我国目前同时在轨运行的遥感卫星数量已超过6 ...

  6. 【论文阅读】结合空洞卷积的 FuseNet变体网络高分辨率遥感影像语义分割

    [论文阅读]结合空洞卷积的 FuseNet变体网络高分辨率遥感影像语义分割 一.论文总体框架   首先,采用 FuseNet变体网络将数字地表模型(digital surface model,DSM) ...

  7. 从实现的技术手段细数:高分辨率遥感影像+人工智能的现在和未来

    [转自]http://baijiahao.baidu.com/s?id=1601901487917871613&wfr=spider&for=pc 人工智能不可阻挡地向各行业渗透.这一 ...

  8. 高光谱遥感影像分类研究进展 --- (15年论文,方法主要是常规处理,但是写的比较细)

    论文地址 高光谱遥感影像分类研究进展 南大.矿大.河海 15年的文章比较老,科普文,但是理论总结和语言用词都比较扎实 在总结分类策略的基础上,重点从以核方法(SVM)为代表的新型分类器设计.特征挖掘. ...

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

    FCN全卷积网络模型--高分辨率遥感影像地物识别 这是一篇操作日记 win10与ubuntu的caffe安装过程独立,只是两次不同系统下的演习,真正实验在ubuntu下完成. 操作空间 win10 1 ...

最新文章

  1. 【Kali渗透全方位实战】使用Nmap进行端口探测-发现脆弱站点
  2. Python爬虫的框架有哪些?推荐这五个!
  3. Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器
  4. 关于买伞时直径的选择
  5. lightoj1060_组合数学
  6. 深度解析LSTM神经网络的设计原理
  7. ORACLE中date类型字段的处理
  8. 解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件
  9. 具有动态效果的响应式设计
  10. java 获取保存存储路径配置文件
  11. win10更新后,gambit无法使用,出现exceed安装弹窗解决方法
  12. 尚硅谷大数据技术之Hadoop(入门)
  13. 计算机桌面快捷win10,win10系统桌面计算机快捷图标不见了的修复方案
  14. android 图片 灰色,Android实现制作灰色图片
  15. Operator学习笔记
  16. 【Java网络编程】:Netty实现OIO和NIO
  17. 高内聚低耦合是什么含义,怎么实现?
  18. SCC会员北京车展围拍超跑 却火了这款华为MateRS保时捷版手机
  19. elasticsearch 关键词查询-实现like查询
  20. L2-040 哲哲打游戏 (25 分)(模拟)

热门文章

  1. VUE课堂笔记1-课前准备
  2. 看了必懂的并查集原理(转载)
  3. 大学四年,这些让我起飞的计算机必看书籍
  4. mysql 字段类型 负数_MySQL字段类型详解
  5. 从前慢-MySql高级
  6. Jenkins Pipelin扩展
  7. 茶学领域如何用的上计算机,计算机视觉图像处理技术在茶学领域应用分析
  8. C++:实现量化年环比通胀上限和下限息票测试实例
  9. python接口自动化测试 ( 第一章 )
  10. java实现word文件和xml文件互转