1.算法功能简介

  单波段阈值法是通过选择某单一波段为判识参数,这一波段往往是水体特征最明显而其它地物相对不太突出的波段(如近红外波段和中红外波段),然后再划定阈值来确定水体信息。该方法主要是利用水体在近红外和中红外波段的强吸收特性,以及植被和土壤在这两个波段较高的反射特性。

  对于GF1、环境星、资源3、资源1-02C,可选近红外波段T4(第四波段)公式为T4<α(阈值);对于TM影像,选择近红外(T4)或短波红外(T5) 。公式为:T4<α或T5<α(阈值)

  谱间关系法是通过利用不同地物的感光特性不同,在不同光谱之间建立的一系列组合运算关系来以突出目标地物、剔除非目标地物的算法。其提取水体的基本原理是利用水体在可见光和近红外波段吸收较强而植被、土壤等地物在该波段范围内反射极强的特点所产生的反射率差异来实现的,不同的数据源、不同的地物谱间关系式不同。

  对于GF1、环境星、资源3、资源1-02C影像,可用以下公式提取:(T2+T3)-(T1+T4)>α

式中T1、T2、T3、T4为第一、二、三、四波段的灰度值,α为阈值;

  对于TM影像,可用以下判别公式:

   (T2+T3)-(T4+T5)>α  ;

     T4/T2 < β

式中T2、T3、T4、T5为TM影像第二、三、四、五波段的灰度值,α、β为阈值。

  水体指数法,目前,对水体指数构建形式有很多,但基本原理都是采用波段比值运算的方法达到突出水体、削弱非水体的目的,对于只有蓝、绿、红、近红波段的高分1号、环境星1A/1B、资源3号、资源1号02C等,可用归一化差异水体指数(NDWI),利用水体在绿波段和近红波段吸收和反射的反差进行水体自动提取,公式如下:

    NDWI=(T2–T4)/( T2+T4)

    NDWI >α

式中T2、T4为第二、四波段灰度值,α为阈值;

  对于高分一号数据,还可用高分1号水体指数(GF1_WI),利用蓝波段和近红波段吸收和反射的反差突出水体,计算公式如下:

    GF1_WI=(T1–T4)/(T1+T4)

    GF1_WI >α

式中T2、T4为高分1号第一、四波段灰度值,α为阈值;

  对于有中红外波段的TM数据,可用修正的归一化差异水体指数(MNDWI)进行水体提取,用中红外波段代替NDWI中的近红外波段,进一步加大水体与其他地物分类的差距。计算公式如下:

    MNDWI=(T2–T5)/( T2+T5)

    MNDWI >α

式中T2、T5为TM影像的第二、五波段灰度值,α为阈值。

  PIE支持这3个算法的执行,下面对算法功能进行介绍。

2.算法功能实现说明

2.1 实现步骤

第一步

算法参数设置

第二步

算法执行

第三步

结果显示

2.2 算法参数

算法名称

水体指数法&单波段阈值法&谱间关系法

C#算法DLL

PIE.CommonAlgo.dll

C#算法名称

PIE.CommonAlgo.ParaInvThresholdAlgo

参数结构体

ParaInvThreshold_Exchange_Info

参数说明

InputFilePath

String

输入文件路径

ListBands

IList<int>

波段集合   单波段阈值法集合是{4} 谱间关系集合{2,3,1,4} 水体指数{2,4}

OutputFilePath

string

输出文件路径

Threshold

double

阈值

Type

Int

类型 0:单波段阈值法 1:谱间关系法 2:水体指数法

2.3 示例代码

数据路径

百度云盘地址下/ PIE示例数据/栅格数据/01.GF1/洞庭湖水体/ IMG_FE233_20171219_636493846049962321.tif

SHP_FE233_20171219_636493846049962321.shp

视频路径

百度云盘地址下/PIE视频教程/10.算法调用/实用工具/缓冲区分析算法.avi

示例代码

 /// <summary>
/// 水体指数法、谱间关系法、单波段阈值法
/// </summary>
public void WaterExtract_NDWI()
{
PIE.CommonAlgo.ParaInvThreshold_Exchange_Info info = new ParaInvThreshold_Exchange_Info();
info.InputFilePath = @"D:\MapData\Raster\水体提取数据\WR_20171219_A0303_636493863981864520\IMG_FE233_20171219_636493846049962321.tif";
info.OutputFilePath = @"D:\MapData\Raster\水体提取数据\temp\水体指数-阈值法.shp";//输出文件路径
info.ListBands = new List<int> {};//单波段阈值法集合是{4} 谱间关系集合{2,3,1,4} 水体指数{2,4}
info.Threshold = ;//阈值 根据实际算法结果来设置 水体指数法一般在0左右徘徊
info.Type = ;//提取算法类型 0、单波段阈值法 1、谱间关系法 2、水体指数法 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ParaInvThresholdAlgo");
if (algo == null) return; algo.Name = "单波段阈值法";
algo.Params = info; bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
if (result)
{
MessageBox.Show("水体指数法执行成功");
ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputFilePath);
if (layer == null) return;
m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
}

2.4 示例截图

图1:单波段阈值法结果

图2:谱间关系法图

图3:水体指数法(阈值为0.5的情况)

PIE SDK水体指数法的更多相关文章

  1. PIE SDK归一化水体指数法

    1.算法功能简介 归一化指数法(NDWI(Normalized Difference Water Index,归一化水指数)),用遥感影像的特定波段进行归一化差值处理,以凸显影像中的水体信息. 其表达 ...

  2. PIE SDK Command&&Tool工具命令一览表

    PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...

  3. PIE SDK水深提取算法

    1.算法功能简介 水深提取算法就是根据输入的水位设为d,dem设为h 这两个数据做一个差值运算,则水深计算公式为d-h;本示例中的是基于洞庭湖提取的水体矢量文件的范围来计算dem和水位25米的差值. ...

  4. PIE SDK 距离分类和最大似然分类

       1.算法功能简介 监督分类,也叫训练场地法.训练分类法,是遥感图像分类的一种,用被确认类别的样本像元去识别其他未知类别像元的过程.监督分类算法有平行算法.平行六面体法.最小距离法.最大似然法.马 ...

  5. PIE SDK波段运算

    1.算法功能简介 波段运算(Band Math)工具能够方便的执行图像中的各个波段的加减乘除.三角函数.指数.对数等数学函数计算,也可以使用IDL编写的函数. 由于每个用户都有独特的需求,利用此工具用 ...

  6. PIE SDK频率域滤波

    1.算法功能简介 频率域滤波的基本工作流程为:空间域图像的傅里叶变换→频率域图像→设计滤波器→傅里叶逆变换→其他应用. 低通滤波,对频率域的图像通过滤波器削弱或抑制高频部分而保留低频部分的滤波方法,可 ...

  7. PIE SDK同态滤波

    1.算法功能简介 同态滤波是减少低频增加高频,从而减少光照变化并锐化边缘或细节的图像滤波方法. 同态滤波的流程为:空间域图像→对数运算→傅里叶正变换→同态滤波――傅里叶逆变换→指数运算→同态滤波结果. ...

  8. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  9. PIE SDK与OpenCV结合说明文档

    1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...

随机推荐

  1. TCP三次握手四次分手—简单详解

    关于TCP三次握手四次分手,之前看资料解释的都很笼统,很多地方都不是很明白,所以很难记,前几天看的一个博客豁然开朗,可惜现在找不到了.现在把之前的疑惑总结起来,方便一下大家. 疑问一,上图传递过程中出 ...

  2. 【面试突击】-RabbitMQ常见面试题(三)

    1.什么是RabbitMQ?为什么使用RabbitMQ? 答:RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件: 可以用它来:解耦.异步.削峰. 2.RabbitMQ有 ...

  3. 专访腾讯方亮:WeTest品牌全面升级,“好的产品一定深谙人性”

    工欲善其事,必先利其器.在当下竞争激烈的市场环境中,精品,已经成为所有游戏厂商安身立命之本.但如何提升品质,使产品成为精品,行业内却长期缺乏公开.透明,以及具备实际参考.实操价值的标准. 制定一项标准 ...

  4. Java 包的使用

    Java 包 Java面向对象的核心的概念:类.接口.抽象类.对象:[主体] 包的定义: 指的是一个程序的目录,在最早的时候,如果要开发一个程序,只需要定义一个Java文件,而后在这个文件中编写所需要 ...

  5. SAP系统玩阴的?

    SAP系统玩阴的? 近日和项目上的ABAP开发顾问一起弄一个自开发的报表.其中某个栏位的取值需要从批次主数据里抓取到供应商代码,然后根据供应商代码取到供应商名称等.为此笔者需要备功能说明书.在说明书里 ...

  6. Fiddler使用技巧:强大的数据文本编解码功能

    - 总览 打开Fiddler后,使用快捷键Ctrl+e或者点击菜单Tools-->TextWizard...即可进入TextWizard界面. 界面上方为输入框,用来输入需要编码或解码的数据. ...

  7. HttpClient忽略SSL证书

    今天公司项目请求一个接口地址是ip格式的,如:https://120.20.xx.xxx/xx/xx,报一个SSL的错: 由于之前请求的接口地址都是域名地址,如:https://www.xxx.com ...

  8. Oracle Merge Into 使用注意事项

    我们操作数据库的时候,有时候会遇到insertOrUpdate这种需求.如果数据库中存在数据就update,如果不存在就insert.Orcale数据库都提供了 MERGE  INTO 方法来处理这种 ...

  9. 源码编译Kubeadm二进制文件

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  10. Vue 动态粒子特效(vue-particles)

    图上那些类似于星座图的点和线 是由vue-particles生成的,不仅自己动,而且能与用户鼠标事件产生互动. 是非常炫的一种动态特效 可以在Vue项目中使用,需要安装第三方依赖 使用步骤 1. 安装 ...