基于ArcGIS的栅格图像平滑处理

栅格数据获取的途径多种多样,造成了栅格数据质量的很大差异,一些质量较差的栅格数据存在大量“噪音”象元,即在表达同类型的地理要素时,出现个别像元值与周边像元不一致的情况,数据中噪音栅格象元的存在为数据的使用和分析带来了极大的不便,因此经常需要对栅格进行平滑的预处理操作。

在ArcGIS软件的空间分析工具箱中,提供了大量的栅格数据处理工具,其中对栅格数据进行平滑处理的工具在去除图像上的椒盐噪音的处理中有非常重要的作用

1. 主滤波工具

1.1 主滤波工具原理

主滤波工具的原理是根据像元邻域内的众数值来替换像元。主滤波需要满足两个条件才能发生替换。首先,相同值的邻近像元的数量必须多到可以成为众数值,或者至少一半的像元必须具有相同值。即,如果指定的是众数参数,则四分之三或八分之五的已连接像元必须具有相同的值;如果指定的是半数参数,则需要四分之二或八分之四的已连接像元具有相同的值。其次,那些像元必须与指定的滤波器的中心相邻(例如,四分之三的像元必须相同)。第二个条件与像元的空间连通性有关,目的是将像元的空间模式的破坏程度降到最低。如果不满足这些条件,将不会进行替换,像元的值也将保持不变。

在下图中,主滤波应用于输入栅格,使用最近的四个像元(四个正交的相邻像元)作为滤波器,并要求众数(四分之三的像元)值是相同的,才能更改相应像元的值。仅更改那些被三个或三个以上值相同的(正交)像元包围的像元。

输入栅格输出栅格

在下图中,应用了主滤波,使用最近的八个像元作为滤波器,并要求至少一半的值(八分之四的像元)相同,才能更改像元的值,此时的平滑效果更佳。

输入栅格输出栅格

1.2 主滤波工具应用

在“ArcToolbox工具箱——空间分析工具——栅格综合——众数滤波”路径下找到工具双击打开,工具界面如下图所示:

要使用的相邻要素数:

确定在滤波器核中使用的相邻像元数。

FOUR — 滤波器内核将是与当前像元直接相邻(正交)的四个像元。这是默认设置。

EIGHT — 过滤器内核将是距当前像元最近的八个相邻像元(3 × 3 窗口)。

替换阈值

在进行替换之前指定必须具有相同值的相邻(空间连接)像元数。

MAJORITY — 多数像元必须具有相同值并且相邻。四分之三或八分之五的连接像元必须具有相同值。

HALF — 半数像元必须具有相同值并且相邻。四分之二或八分之四的连接像元必须具有相同值。使用 HALF 选项可获得更平滑的效果。

为加强栅格处理效果,可反复调用滤波工具,并将上一次输出作为下一次输入,反复处理后,栅格图像的效果会有很大改善。

2. 焦点统计工具

2.1 焦点统计工具原理

焦点统计工具也可以实现对栅格数据进行平滑的效果,且效果优于主滤波工具。该工具用于计算输出栅格数据的邻域运算,各输出像元的值是其周围指定邻域内所有输入像元值的函数。对输入数据执行的函数可得出统计数据,例如最大值、平均值或者邻域内遇到的所有值的总和。

工具在执行过程中,算法将访问栅格中的每个像元,并且根据识别出的邻域范围计算出指定的统计数据。要计算统计数据的像元称为处理像元。处理像元的值以及所识别出的邻域中的所有像元值都将包含在邻域统计数据计算中。各邻域可以重叠,因此一个邻域中的像元也可以包含在其他处理像元的邻域中。

通过下图中值为 5 的处理像元可演示出焦点统计的邻域处理过程。指定一个 3 x 3 的矩形像元邻域形状。邻域像元值的总和 (3 + 2 + 3 + 4 + 2 + 1 + 4 = 19) 与处理像元的值 (5) 相加等于 24 (19 + 5 = 24)。因此将在输出栅格中与输入栅格中该处理像元位置相同的位置指定值 24。

输入栅格输出栅格

上图演示了如何对输入栅格中单个像元执行计算。而在下图中,将显示出所有输入像元的计算结果。以黄色高亮显示的是上例中所述处理像元及其邻域。

输入栅格输出栅格

2.2 焦点统计工具应用

在“ArcToolbox——空间分析——邻域分析——焦点统计分析”路径下找到工具并双击打开,工具界面如下图所示“

邻域分析

邻域的形状可以是环形(圆环)、圆形、矩形或楔形。通过使用核文件,也可定义自定义邻域形状,以及在计算统计数据之前将不同的权重分配给领域中的各个特定像元。

统计类型

可用的焦点统计统计数据包括众数、最大值、平均值、中值、最小值、少数、范围、标准差和总和。默认统计类型为平均值。

处理结果对比图:

原始栅格

主滤波工具处理后的栅格

焦点统计工具处理后的栅格

(作者:赵立超)

来自:http://www.higis.cn/Tech/tech/tId/33

基于ArcGIS的栅格图像平滑处理(转)的更多相关文章

  1. 基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序

    特点: 1.基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序: -(IBAction) showTOC:(id)sender { if (_tocViewController ...

  2. 基于ArcGIS JS API的在线专题地图实现

    0 引言     专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...

  3. 基于 ArcGIS Silverlight API开发的WebGIS应用程序的部署

    部署流程概述 在微软的iis服务器上部署基于ArcGIS  Silverlight API的应用程序,主要包括以下几个步骤: 1)(可选)部署GIS服务 如果需要将GIS服务也部署在Web服务器上,则 ...

  4. 点聚合功能---基于ARCGIS RUNTIME SDK FOR ANDROID

    一直不更新博客的原因,如果一定要找一个,那就是忙,或者说懒癌犯了. 基于ArcGIS RunTime SDK for Android的点聚合功能,本来是我之前做过的一个系统里面的一个小部分,今天抽出一 ...

  5. 基于ArcGIS for Server的服务部署分析 分类: ArcGIS for server 云计算 2015-07-26 21:28 11人阅读 评论(0) 收藏

    谨以此纪念去年在学海争锋上的演讲. ---------------------------------------------------- 基于ArcGIS for Server的服务部署分析 -- ...

  6. 基于ArcGIS的CAD数据向GIS数据转换方法(转)

    基于ArcGIS的CAD数据向GIS数据转换方法 1 CAD数据与ArcGIS数据介绍 地图数据来源多种多样,大多数使用的是计算机辅助设计软件(CAD)制作的数据,CAD软件制图自动化程度高,操作简单 ...

  7. 基于GDAL的栅格图像空间插值预处理

    转自 基于GDAL的栅格图像空间插值预处理——C语言版 基于GDAL的栅格图像预处理 前言 栅格数据和矢量数据构成空间数据的主要来源,怎样以开源方式读取并处理这些空间数据?目前有多种开源支持包,这里只 ...

  8. (转) 基于Arcgis for Js的web GIS数据在线采集简介

    http://blog.csdn.net/gisshixisheng/article/details/44310765 在前一篇博文“Arcgis for js之WKT和geometry转换”中实现了 ...

  9. 基于ArcGIS Flex API实现动态标绘(1.0)

    标绘作为一种数据展示形式,在多个行业都有需求. 基于ArcGIS Flex API(3.6)实现标绘API,当前版本号1.0 alpha,支持经常使用几种标绘符号,包含: 圆弧.曲线.圆形.椭圆.弓形 ...

随机推荐

  1. C# 有关文件路径的操作

    1. 由文件全路径,获取文件扩展名.文件名等信息 string fullPath = @"\WebSite1\Default.aspx"; string filename = Sy ...

  2. VS2010 Chromium编译

    推荐使用Windows 7及以后系统,最少8G内存,预留出50G磁盘空间 搭建Visual Studio 2010开发环境 1.安装Visual Studio 2010专业版或者旗舰版 2.安装VS2 ...

  3. 用pip爽久了,竟然完了easy install安装过程了

    新换了mac,装python环境时才发现,一直用pip,反而忘了easy_install的安装方法了.这里记录一下: 1.下载ez_install.py文件:https://bootstrap.pyp ...

  4. iOS 之NSJSONReadingOptions说明【转】

    首先用代码来说明NSJSONReadingMutableContainers的作用: NSString *str = @"{\"name\":\"kaixuan ...

  5. Log Explorer使用说明

    一.介绍 Log Explorer主要用于对MSSQLServer的事物分析和数据恢复.你可以浏览日志.导出数据.恢复被修改或者删除的数据(包括执行过update,delete,drop和trunca ...

  6. 【整理】C++虚函数及其继承、虚继承类大小

    参考文章: http://blog.chinaunix.net/uid-25132162-id-1564955.html http://blog.csdn.net/haoel/article/deta ...

  7. python网络编程(六)---web客户端访问

    1.获取web页面 urllib2 支持任何协议的工作---不仅仅是http,还包括FTP,Gopher. import urllib2 req=urllib2.Request('http://www ...

  8. HDU2015校赛 The Country List

    今天手感真差..各种读错题意.水题... 就是说,给你几个串.如果长度一样并且相同位置字符相同(不分大小写)的个数大于两个就是不同串. #include<iostream> #includ ...

  9. Python读取文件内容的三种方式并比较

    本次实验的文件是一个60M的文件,共计392660行内容. 程序一: def one(): start = time.clock() fo = open(file,'r') fc = fo.readl ...

  10. leetcode@ [97] Interleaving Strings

    https://leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 is formed by th ...