去除镶嵌数据集中影像的黑边或白边
http://zhihu.geoscene.cn/article/4067
文章目录
- [list] [list]
- 栅格数据集中的黑边
- 镶嵌数据集中影像产生黑边的原因
- 去除镶嵌数据集中影像的黑边 [list]
- 方法一:构建轮廓线和边界(推荐)
- 方法二:定义Nodata
- 方法三:同时使用以上两种方法
[*]参考[/*]
[/list]
[/list]
[/list]
栅格数据集中的黑边
NoData 是指数据文件或地理区域中不存在有效数据(数据缺失)的像素或区域。有时会显示为黑色,这就是我们常说的“黑边”。
镶嵌数据集中影像产生黑边的原因
在使用镶嵌数据集管理影像数据的过程中,添加影像时选择影像传感器对应的栅格类型(Raster Type)。
添加Landsat8时,选择对应的栅格类型。
点击绿色框(轮廓线内的某一点),显示是Nodata。
把数据框的底色换成蓝色,显示如下:
对于原始影像管理,可以实现栅格类型对影像关键元数据的抓取(四角点坐标)。因此在影像添加时,会根据角点坐标计算得到正确的影像轮廓线,就不会有黑边产生。也就是说,如果你管理的是原始影像,选择正确的栅格类型,是不会有黑边困扰的。
但对于Level2或其它级别的影像产品而言,在影像产品生产过程中影像关键元数据信息发生了改变,因此在影像添加过程中,利用栅格产品抓取到的元数据的影像空间信息与影像产品的空间位置信息有出入,也就是说影像在添加过程中会产生空间位置的畸变,即生成无效区域,也就是黑边。
简而言之,如果管理的是原始影像,一般情况不会存在影像黑边,但对于其它级别的影像产品而言,这种现象是普遍存在的。
去除镶嵌数据集中影像的黑边
有三种方法可用于处理黑边,采用哪种方法取决于数据的复杂性。
- 构建轮廓线和边界 可以将轮廓线和边界作为掩膜,系统将这个范围以外的任何数据都视为Nodata。
- 使用工具【定义Nodata】 对于只限于几个数值的 NoData,可将镶嵌数据集配置为识别 NoData(如 -99999),然后忽略任何含有此值的像素。
- 同时使用以上两种方法 -适用于含有复杂边界的数据集,且影像内部包含 NoData 值。
方法一:构建轮廓线和边界(推荐)
通常情况下,建议使用这种方法,因为速度快。如果影像存在重叠,还只想处理影像边界的黑边,这种方法再合适不过了。
下图镶嵌数据集中影像是有黑边的。
打开GP工具【构建轮廓线】,计算方法使用默认的【RADIOMETRY】,其他参数也都默认。
一般情况下,黑边就会被消除掉。但是这个数据去除了一点点黑边,大部分黑边还是存在。
再次打开GP工具【构建轮廓】,修改参数【收缩距离】。这个参数的单位和单签镶嵌数据集的单位是一致的。如果镶嵌数据集的坐标系是地理坐标系,那单位就是度,如果是投影坐标系,单位一般都是米。
使用工具条上【量测】工具,量下黑边的最大距离。
我这里改为60米。
结果如下:
这里还有个重要的设置,使镶嵌数据集同轮廓线的范围一同变化。
在目录中,镶嵌数据集右键属性,设置裁剪至轮廓及边界,都选择【是】。
方法二:定义Nodata
指定要不显示表示 NoData 的一个或多个值。这个方法会为镶嵌数据集内的各个栅格项插入函数链中的掩膜函数。所以当有大量,重叠的影像,使用此方法,会降低显示效率。
还是用这个数据,先恢复黑边(我是有多闲o(╥﹏╥)o)。构建轮廓线工具,计算方法中设置【Geometry】,就恢复了。
然后打开GP工具【定义镶嵌数据集Nodata】。先查下黑边的值是多少,用查询工具的话值有时会指向另一个地方。
所以要用像素检查器。在菜单上【自定义】,【自定义模式】,输入像素两个字,英文版软件的话搜 Pixel Inspector。
拖拽到工具条上,不用了再拖拽到自定义窗口这个界面中。
查看黑边的渲染值,会发现有不同的值,并不都是0。所以如果是采用这种方法,可能要定义很多次。
这里只是为了演示这种方法,这个数据不推荐采用方法二。
打开工具【定义Nodata】。在Nodata值的波段,选择第一波段,赋值20,再选择第二波段,赋值20……
对比一下,发现有两个区域的黑边不见了。
这里,定义黑边的过程就是给每景影像(也称镶嵌数据集的Item)加了个函数。
可以打开轮廓线的属性表,点击每行中的栅格。
会发现,多了掩膜函数,每个Item都有。
批量移除的话,采用工具【编辑栅格函数】。
方法三:同时使用以上两种方法
对于边界和内部均有黑边的数据,可以同时使用以上两种方法,但是会影响显示效率。
如果数据有更复杂的 NoData 配置(例如数据内部有多个 NoData
值并有复杂边界),最终办法是将栅格掩膜定义为附加影像图层,然后通过创建自定义函数将此图层用作 NoData 掩膜。例如,创建一张 0 表示
NoData、1 表示有效数据的影像,然后使用算术函数并将镶嵌数据集与此掩膜影像相乘。
可以使用工具【为空】,创建NoData 为 0、有效数据为 1 的栅格。
以上!