PIE SDK影像坏线修复

1.算法功能简介

    坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用。此后Landsat 7 ETM SLC-on是指2003.5.31日Landsat 7SLC故障之前的数据产品,Landsat 7 ETMSLC-OFF则是故障之后的数据产品。

    目前我们PIE SDK支持影像坏线修复,并提供了相应的算法。

2.算法功能实现说明

2.1. 实现步骤

第一步

算法参数设置

第二步

算法执行

第三步

结果显示

2.2. 算法参数

C#算法DLL

PIE.CommonAlgo.dll

C#算法名称

PIE.CommonAlgo. BadLineFixAlgo

参数结构体

BadLineFix_Exchange_Info

参数说明

FixedOnSourceFile

bool

是否在原数据上修复

InputFilePath

String

输入文件的路径

OutputFilePath

String

输出文件的路径

InputRasterDataset

IRasterDataset

输入数据集

OutputRasterDataset

IRasterDataset

输出数据集

HorizontalBadLineIndexs

IList

水平方向数据坏线所在的行号集合

HorizontalFixedType

int

水平方向坏线修复方法:0,表示以坏线的上行正确值修复;1,以坏线的下行正确值修复;2,表示以坏线的上下行的平均值进行修复

VerticalBadLineIndexs

IList

垂直方向数据坏坏线所在的列号集合

VerticalFixedType

int

垂直方向坏线修复方法:0,表示以坏线的上列正确值修复;1,以坏线的下列正确值修复;2,表示以坏线的上下列的平均值进行修复

2.3. 示例代码

数据路径

百度云盘地址下/ PIE示例数据/栅格数据/ 07.GF4 / GF4_B1_E114.1_N20.6_20180916_L1A0310000011.tiff

视频路径

百度云盘地址下/PIE视频教程/10.算法调用/其他工具/影像坏线修复算法.avi

示例代码

 1    /// 
 2   ///坏线修复功能
 3  /// 
 4   private void Test_RepairBadLineAlgo()
 5 {
 6 string filePath1 = @"D:\MapData\Raster\坏线修复测试数据\GF4_B1_E114.1_N20.6_20180916_L1A0310000011.tiff";
 7     string outFilePath1 = @"D:\MapData\Raster\坏线修复测试数据\temp\bandLineTest2.tif";
 8     //垂直方向坏线位置
 9     IList<int> bandVerticalLineIndexs = new List<int>();          
10     bandVerticalLineIndexs.Add(1116);//1116列
11     bandVerticalLineIndexs.Add(1117);
12     //水平方向坏线位置 水平没有坏线可以不写
13     //IList bandHorizonLindIndexs=new List();
14     //bandHorizonLindIndexs.Add(329);
15     PIE.CommonAlgo.BadLineFix_Exchange_Info info = new PIE.CommonAlgo.BadLineFix_Exchange_Info();
16     info.InputFilePath = filePath1;
17     info.OutputFilePath = outFilePath1;
18 //如果设置了InputRasterDataset执行结果会输出一个栅格数据集 通过获取算法参数的OutputRasterDataset
19     //info.InputRasterDataset = DatasetFactory.OpenRasterDataset(filePath,OpenMode.ReadOnly);
20     //info.HorizontalBadLineIndexs = bandHorizonLindIndexs;
21     //info.HorizontalFixedType = 2;//水平方向修复方法
22     info.VerticalBadLineIndexs = bandVerticalLineIndexs;
23     info.VerticalFixedType = 2;//垂直方向修复方法
24     info.FixedOnSourceFile = false;//是否在原数据上修复
25 
26     PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.BadLineFixAlgo");//算法执行
27     algo.Params = info;
28     bool result1 = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
29     }
View Code

2.4. 示例截图

修复前栅格图像中第1116和1117两列有坏线:

 PIE SDK影像坏线修复_第1张图片

修复后:

PIE SDK影像坏线修复_第2张图片

 

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

你可能感兴趣的:(PIE SDK影像坏线修复)