1.算法功能简介

自定义滤波可以自由设置滤波模板,对数据进行处理,自定义滤波器的一般规则要求:

( 1) 滤波器的大小应该是奇数,这样它才有一个中心,例如 3x3, 5x5 或者 7x7。有中心了,也有了半径的称呼,例如 5x5 大小的核的半径就是 2。

( 2) 滤波器矩阵所有的元素之和应该要等于 1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。

( 3) 如果滤波器矩阵所有元素之和大于 1,那么滤波后的图像就会比原图像更亮,反之,如果小于 1,那么得到的图像就会变暗。如果和为 0,图像不会变黑,但也会非常暗。

( 4) 对于滤波后的结构,可能会出现负数或者大于 255 的数值。对这种情况,我们将他们直接截断到 0 和 255 之间即可。对于负数,也可以取绝对值。

PIE支持算法功能的执行,下面对自定义滤波算法功能进行介绍。

2.算法功能实现说明

2.1. 实现步骤

第一步

算法参数设置

第二步

算法执行

第三步

结果显示

2.2. 算法参数

算法名称

自定义滤波

C#算法DLL

PIE.CommonAlgo.dll

C#算法名称

PIE.CommonAlgo.ImgProFiltCustomAlgo

参数结构体

StImageFittleCustom

参数说明

InputFilePath

String

输入文件

(*.tif;*.tiff; *.img)

OutputFilePath

String

输出文件路径

(*.tif;*.tiff; *.img)

XMLFile

String

XML文件路径

(*.xml)

LM

Int

模板大小M(最小为3的奇数),最大为33

LN

Int

模板大小N(最小为3的奇数,和LM值一样)

FilterType

Int

滤波类型

Kernel

array<float>

自定义滤波值数组(LM* LN大小的数组)

FuncName

String

功能名称

FileTypeCode

String

根据输出类型获得文件编码类型

.tif/.tiff——GTiff

.img—————HFA

其他—————ENVI

LowBands

IList<Int>

输出影像的波段(至少选择一个波段,{ 0, 1, 2, 3 })

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/10.算法调用/图像处理/ ImageProcessing. ImgFiltCustomAlgo

数据路径

百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

视频路径

百度云盘地址下/PIE视频教程/10.算法调用/图像处理/自定义滤波算法.avi

示例代码

      /// <summary>
/// 自定义滤波算法测试,本算法实现了将World.tif进行自定义滤波,模板大小M和N均为3
/// 自定义滤波值数组为{ 1, 1, 1, 1, 1, 1, 1, 1, 1 }
/// </summary>
public override void OnClick()
{
#region 1、参数设置
PIE.CommonAlgo.StImageFittleCustom info = new PIE.CommonAlgo.StImageFittleCustom(); info.InputFilePath = @"D:\Data\World.tif";
info.OutputFilePath = @"D:\Data\ip_result18.tif";
info.LM = ;
info.LN = ;
info.FilterType = ;
info.Kernel = new float[] { , , , , , , , , };
info.FileTypeCode = "GTiff";
info.LowBands = new List<int> { , , }; PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgProFiltCustomAlgo");
if (algo == null) return;
#endregion //2、算法执行
PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
algo.Name = " 自定义滤波";
algo.Params = info;
bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo); //3、结果显示
ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\ip_result18.tif");
m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

2.4.示例截图

PIE SDK自定义滤波的更多相关文章

  1. PIE SDK常用滤波

    1. 算法功能简介 空间域滤波实在图像空间( x. y)对输入图像应用滤波函数(核.模板)来改进输出图像的处理方法,主要包括平滑和锐化处理,强调像素与其周围相邻像素的关系,常用的方法是卷积运算. 空间 ...

  2. PIE SDK定向滤波

    1. 算法功能简介 定向滤波又称为匹配滤波,是通过一定尺寸的方向模板对图像进行卷积计算,并以卷积值代替各像元点灰度值,强调的是某一些方向的地面形迹,例如水系.线性影像等. 方向模板是一个各元素大小按照 ...

  3. PIE SDK均值滤波

    1.算法功能简介 均值滤波是最常用的线性低通滤波,它均等地对待邻域中的每个像素.对于每个像素,取邻域像素值的平均作为该像素的新值.均值滤波算法简单,计算速度快,对高斯噪声比较有效.从频率域的角度看,相 ...

  4. PIE SDK矢量自定义渲染

    1. 功能简介 PIE SDK中关于矢量渲染提供了多种方案,包括简单渲染.分级渲染.唯一值渲染,这几种渲染方式具有一定的通用性,可以满足用户绝大多数的需求. 当面对复杂的业务,当前渲染方案无法满足用户 ...

  5. PIE SDK频率域滤波

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

  6. 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 ...

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

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

  8. PIE SDK与GeoServer结合说明文档

    1.  GeoServer简介 GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操 ...

  9. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

随机推荐

  1. canvas基础学习笔记

    canvas基本用法 1.什么是canvas(画布)  <canvas> 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形,例如,它可以用于绘制图形,创建动 ...

  2. SQL Server 本地时间和UTC时间的相互转换

    SET @UTCDate = DATEADD(hour, DATEDIFF(hour,GETDATE(),GETUTCDATE()), @LocalDate) SET @LocalDate2 = DA ...

  3. Jmeter接口测试-完成任务API

    完成任务 PUT /api/tasks/:task_id 可以完成id为task_id的task,如果动作成功,该接口返回的task的done字段会变成true. 完成任务的api接口测试很简单,因为 ...

  4. 【Andoid学习】GridView学习

    简介 一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联.比如实现九宫格图,用GridView是首选,也是最简单的. 属性:android:co ...

  5. SQL多行并一行统计例子之STUFF()函数+FOR XML PATH()函数应用

    SELECT * FROM tbiz_ProjectRelation 目标统计每个项目有几条申请记录 Step1 SELECT ProjectID , RelationIDs , , '') FROM ...

  6. angular 双向绑定

    <input type="text" [(ngModel)]="name"> {{name}} import { Component, OnInit ...

  7. Mybatis 的动态 SQL 语句

    <if>标签 我们根据实体类的不同取值,使用不同的 SQL 语句来进行查询. 比如在 id 如果不为空时可以根据 id 查询, 如果 username 不同空时还要加入用户名作为条件.这种 ...

  8. 杨辉三角的Python实现

      杨辉三角的Python实现 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Python生成器实现杨辉三角: # python def yanghui_tr ...

  9. luoguP2982 [USACO10FEB]慢下来Slowing down

    https://www.luogu.org/problemnew/show/P2982 这题你写个树剖当然可以做,但是我们还有一种更简单的方法,使用 dfs 序 + 树状数组即可 考虑一只牛到了自己的 ...

  10. 洛谷P4011 孤岛营救问题(状压+BFS)

    传送门 和网络流有半毛钱关系么…… 可以发现$n,m,p$都特别小,那么考虑状压,每一个状态表示位置以及钥匙的拥有情况,然后每次因为只能走一步,所以可以用bfs求出最优解 然后是某大佬说的注意点:每个 ...