PIE SDK图像裁剪

 

1.算法功能简介

    图像裁剪的目的是获取选定的影像范围区域。图像裁切工具提供像素范围裁切、矢量裁切、栅格图像裁切和几何图元裁切四种方式。 像素范围裁切是基于像素坐标获取矩形裁切区域的裁切方式;矢量裁切是基于矢量地理坐标获取任意形状裁切区域的裁切方式; 栅格图像裁剪是基于栅格文件的坐标获取裁剪区域的裁剪方式; 几何图元裁切是基于交互方式在主视图上绘制多边形来获取裁切范围的裁切方式。

    PIE支持算法功能的执行,下面对图像裁剪算法功能进行介绍。

2.算法功能实现说明

2.1. 实现步骤

第一步

算法参数设置

第二步

算法执行

2.2.  算法参数

算法名称

图像裁剪

C#算法DLL

PIE.CommonAlgo.dll

C#算法名称

PIE.CommonAlgo.ImageClipAlgo

参数结构体

DataPreImgClip_Exchange_Info

参数说明

InputFilePath

String

输入文件

(*.tif;*.tiff;*.bmp;*.img;*.jpg;*.ldf)

Type

Int

裁剪类型

小于等于0为以栅格来裁剪,等于1为用shp文件或者几何范围来裁剪

ShpFilePath

String

如果以shp文件裁剪,需要输入的shp文件路径

OutputFilePath

String

输出文件路径

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

FileType

String

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

.tif/.tiff——GTiff

.img—————HFA

其他—————ENVI

XStart

Int

裁剪范围起始X

XEnd

Int

裁剪范围终点X

YStart

Int

裁剪范围起始Y

YEnd

Int

裁剪范围终点Y

bInvalidValue

bool

是否设置无效值

InvalidValue

double

无效值

FuncName

String

功能名称

ListBands

IList<Int>

输出裁剪影像的波段

Geometry

IGeometry

裁剪几何形状

2.3. 示例代码

项目路径

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

数据路径

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

百度云盘地址下/PIE示例数据/ 矢量数据/Shape/省级行政区.shp

视频路径

百度云盘地址下/PIE视频教程/10.算法调用/图像预处理/图像裁剪算法.avi

示例代码

  1         //(一)通过栅格范围裁剪
  2         /// <summary>
  3         ///图像裁剪算法测试,本算法实现了将World.tif根据起始点(0,0)到终止点(500,500)的矩形范围裁剪生成clip_xy.tif文件
  4         /// </summary>
  5         private void button_xy_Click ()
  6         {
  7             #region 1、参数设置
  8             //Clip裁剪
  9             PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
 10 
 11             info.InputFilePath = @"D:\Data\World.tif";  //待裁剪影像
 12             PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
 13             if (rDataset == null) return;
 14             int count=rDataset.GetBandCount();
 15             List<int> list = new List<int> { };
 16             for (int i = 0; i < count; i++) {
 17                 list.Add(i);
 18             }
 19             info.listBands = list;
 20             info.XFactor = 1;
 21             info.YFactor = 1;
 22             info.bInvalidValue = false;
 23             info.OutputFilePath = @"D:\Data\clip_xy.tif";  //裁剪保存结果
 24             info.Type = 0;  // (等于0表示通过栅格范围裁剪)
 25             info.XStart = 0;
 26             info.XEnd = 500;
 27             info.YStart = 0;
 28             info.YEnd = 500;
 29             info.FileType = "GTiff";  //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
 30 
 31             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
 32             if (algo == null) return;
 33 #endregion
 34             //2、算法执行
 35             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
 36             algo.Name = "影像裁剪";
 37             algo.Params = info;
 38             //PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
 39             //bool OK = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
 40             bool OK = algo.Execute();
 41             MessageBox.Show("裁剪成功!");          
 42                     }
 43         //(二)使用shape文件裁剪
 44         /// <summary>
 45         ///图像裁剪算法测试,本算法实现了将World.tif根据省级行政区.shp文件裁剪生成clip_shp.tif文件
 46         /// </summary>
 47         private void button_shp_Click ()
 48         {
 49             #region 1、参数设置
 50             //Clip裁剪
 51             PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
 52             //参数设置
 53             string featurePath = @"D:\Data\省级行政区.shp"; //裁剪的几何要素
 54             info.InputFilePath = @"D:\Data\World.tif";  //待裁剪影像
 55             PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
 56             if (rDataset == null) return;
 57             int count = rDataset.GetBandCount();
 58             List<int> list = new List<int> { };
 59             for (int i = 0; i < count; i++)
 60             {
 61                 list.Add(i);
 62             }
 63             info.listBands = list;
 64             info.bInvalidValue = false;
 65             info.OutputFilePath = @"D:\Data\clip_shp.tif";  //裁剪保存结果
 66             info.ShpFilePath = featurePath;
 67             info.Type = 1;  // (等于1表示使用shape文件裁剪)
 68             info.FileType = "GTiff";  //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
 69             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
 70             if (algo == null) return;
 71 #endregion
 72             //2、算法执行
 73             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
 74             algo.Name = "影像裁剪";
 75             algo.Params = info;
 76             PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
 77             //bool OK = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
 78             //bool OK = algo.Execute();
 79             MessageBox.Show("裁剪成功!");          
 80                     }
 81 //(三)使用几何范围裁剪
 82         /// <summary>
 83         ///图像裁剪算法测试,本算法实现了将World.tif根据省级行政区.shp文件中索引为0的geometry裁剪生成clip_shp.tif文件
 84         /// </summary>
 85         private void button_geometry_Click ()
 86         {
 87             #region 1、参数设置
 88             //Clip裁剪
 89             PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info();
 90             //参数设置
 91             string featurePath = @"D:\Data\省级行政区.shp"; //裁剪的几何要素
 92             PIE.DataSource.IFeatureDataset fDataset = PIE.DataSource.DatasetFactory.OpenFeatureDataset(featurePath);
 93             PIE.DataSource.IFeature feature = fDataset.GetNextFeature();
 94             fDataset.ResetReading();
 95             PIE.Geometry.IGeometry geometryClip = null;
 96             while (feature != null)
 97             {
 98                 geometryClip = feature.Geometry;
 99                 feature = fDataset.GetNextFeature();
100                 break;
101             }
102             info.InputFilePath = @"D:\Data\World.tif";  //待裁剪影像
103             PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);
104             if (rDataset == null) return;
105             int count = rDataset.GetBandCount();
106             List<int> list = new List<int> { };
107             for (int i = 0; i < count; i++)
108             {
109                 list.Add(i);
110             }
111             info.listBands = list;
112             info.bInvalidValue = false;
113             info.OutputFilePath = @"D:\Data\clip_geometry.tif";  //裁剪保存结果
114             info.Type = 2;  // (等于2表示使用几何范围裁剪)
115             info.Geometry = geometryClip;
116             info.FileType = "GTiff";  //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
117             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
118             if (algo == null) return;
119 #endregion
120             //2、算法执行
121             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
122             algo.Name = "影像裁剪";
123             algo.Params = info;           PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);
124             //bool OK = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
125             //bool OK = algo.Execute();
126             MessageBox.Show("裁剪成功!");          
127                     }
View Code

2.4. 示例截图

(一)通过栅格范围裁剪

(二)使用shape文件裁剪

(三)使用几何范围裁剪

 

转载于:https://www.cnblogs.com/PIESat/p/10186014.html

新的nRF52832提供了-96dBm的灵敏度,这个数据非常接近于TI的-97dBm,更高的灵敏度意味着更远的传输距离。   另外一项改进就是内置了Balun芯片。在之前的nRF51822设计中,必须加入Balun匹配电路,或者分立的或者Balun芯片,来匹配天线的50欧姆阻抗。现在nRF52832集成了这个功能,既节省了空间又节约了成本。并不适合只有Nordic一家这么干,Dialog和TI都一样,都把能够集成进来的全部弄进来。   外部只需要一个额外的电感和一个电容,用来微调这些参数。总之,内置Balun大概能节约5-6个外部阻容器件。   多协议支持和NFC   现在很多的这类芯片都能提供多协议的支持,比如BLE, ANT, Zigbee这些协议。目前在物联网领域还没有绝对的王者,因为每种无线协议都有自己的优势。现在看来实际的应用中更加趋向于不同的应用场景使用不同的技术,多协议支持就解决了这个问题。因为无线的硬件是一样的,只需要更换协议栈就行了,或者把多个协议集成进一个协议栈,对用户来说就像是同时运行这几个无线协议一样。   nRF52832支持Bluetooth Smart (Low Energy), ANT/ANT+ and proprietary 2.4GHz多种协议,这样就可以连接 nRF51, nRF24AP and nRF24L之类的产品。不过,它不支持Zigbee or Thread ,这两个协议在长距离传输上有更大的优势。Google正在力推Thread技术,Thread也慢慢的在智能家居的应用场景下变成BLE的对手之一。不过也许Bluetooth的Mesh网络技术能够解决这个问题。   Nordic同时引进了NFC技术,它支持NFC-A,也就是可以作为“标签”(Tag)来使用。配合智能手机可以用于近距离的安全连接工作,毕竟有一些应用中需要这种安全的方法,集成进来之后对整体成本和体积都有好处。不过新的Bluetooth 4.2协议中已经有了新的安全规范。   nRF52832适合我们的产品吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值