arcgis遥感图像去黑边林林种种(至少7种方法)

70 篇文章 49 订阅



当我们在ArcGIS中打开一景遥感影像时,是不是总是在我们的研究区周围出现我们并不希望看见的黑边,这种黑边在我们做图像分析或排版出图时总是个累赘,今天就教给大家在ArcGIS中轻松去除黑边。

     影像产生黑边的原因无外乎在设置无效值时,将无效值设成了0,而影像在导入软件进行渲染时,并没有进行黑边的预处理,导致展示时有黑边出现。

    在ArcMap中打开地图,我们会发现,黑边区域像元的DN值为0。我们的第一反应就是将影像中像元DN值为0的部分抹掉。不错,软件就是应用这个原理来工作的。以下提供至少7种方法用于去黑边,因为有的方法里面还有好几种。

一、单个或多个图像导入软件时属性中设置去除黑边

1、 单个图像属性设置去除   

在ArcMap中,每个图层都可以在其属性中进行符号化设置,黑边是图像中的背景,因此,去除黑边也是在对图层进行符号化时设置。具体步骤如下:

    (1)右键单击图层,在下拉菜单中选择Properties;

    (2)在打开的图层属性(Layer Properties)对话框中,选择Symbology选项卡;

    (3)在此选项卡中找到DisplayBackground Value:(R,G,B)可选框,这里勾选上,然后,设置RGB的值均为0,设置颜色显示为Nocolor。

2、多个图像属性设置

或者在影像导入之前,设置ArcMap地图属性。操作过程为,arcmap 菜单 自定义-arcmap选项-栅格-栅格图层-去除背景值,勾选0-0-0.

 

    但是,用这种方式去除黑边只是会改变背景的显示状态,并没有对数据本身做任何改变,重新将图层加载进来时,仍会显示黑边。

二、应用setnull工具去除黑边

    该工具的原理是将某一数值设置为Nodata(这里我们把值为0的像元设置为Nodata,其它像元数值保持不变)。该工具只能是对单波段数据进行操作,如果我们得到的数据是单波段的,那这种方法再合适不过了。

    工具位置:ArcToolbox—Spatial Analyst Tools—Conditional—Set Null

    参数设置如下:

 

        Inputconditional raster:这里选择的样例数据为Landsat5数据的第5波段;

        Expression(optional):写入SQL查询语句,这里将值为零的像元设为Nodata。

        Input falseraster or constant value:值不为零的像元数值保持不变,仍为原始像元值。

        Output raster:设置输出影像位置。

三、应用copyraster工具去除黑边

    Copy Raster工具可以对多波段和单波段数据进行操作,当然,该工具不仅仅是用来去影像黑边的,它的功能很强大,这里不做过多赘述。我们来看他是如何去除影像黑边的。

    工具位置:ArcToolbox—Data Management Tools—Raster—Raster Dataset—CopyRaster。

    参数设置如下:

 

        Input Raster:输入需要去黑边的影像;

        Output RasterDataset:设置去黑边后影像的位置;

        IgnoreBackground Value:设置要忽略的像元值,这里将像元值为0的抹掉。

        其他参数选择默认。

 

如果你的研究数据中也有0,也就是说部分0值像元为有效像元,不用担心,Copy Raster工具只会处理周边0值。

四,软件不兼容产生的黑边去除    

如果是两种不同软件产生的影像金字塔也有可能出现黑边,比如,使用erdas生成了边缘为0值影像的金字塔,那么该影像在导入arcgis 中展示时也一定会有黑边现象。这种情况是由于两款软件不兼容产生的,解决办法是将原有金字塔全部删掉,使用arcgis金字塔工具全部重新创建金字塔,就不会出现黑边了。

五、 栅格计算器/Raster Calculator 去除黑边

单波段数据处理起来常常相对容易些,最常用的工具就是 栅格计算器/Raster Calculator 了。Raster Calculator 可以通过输入的Python语法的表达式,对当前数据框内的栅格图层进运算。它是个非常实用的栅格数据处理工具,如果你想 Dive In ,点 这里了解 Raster Calculator 的工作原理。

例如这个需求中仅需要一个简单表达式,使用到SetNull函数,如下所示:

其中,表达式是 SetNull("RasterLayer" == 0 , "RasterLayer" )

这样执行工具之后,所有的 0 值变成了 Nodata,彻底去了黑边。

六、影像分析去除黑边

多波段数据同样会受到黑边的困扰,而且现实情况往往没有单波段数据那么理想,仅通过一个表达式就可以搞定。例如,我们常用的影像底图数据,通常有三个波段,通过包含RGB三个波段的一组值来表示像元值,例如 (0,255,129)。我一般会根据需要处理的数据量的多少给出不同的处理方法建议:

同样第一步需要确认黑边值是什么?本例中是 (0,0,0)

ArcMap的 Windows 菜单中有 Image Analysis 。在 Image Analysis 窗口中的 Processing 部分可以对当前数据框中的图层赋予函数或函数链,从而对栅格数据实时处理。

在弹出的窗口中,在 fx行右键插入函数,例如这个需求中会使用到 Mask Function。

设置 Mask Function,(0,0,0) 组合是无效值。为什么选择 All 而不是 Any? 这个答案很显见,同时都为0的像元值才是无效值,否则不是,例如(1,255,0)是有效的。或者说各个波段的0值是and关系,而不是or。

这样带有函数的新栅格图层会自动加入 ArcMap 的 TOC,看起来万事大吉,然而这里需要说明下,这个图层需要Export到硬盘上的某个位置,它目前还是个临时数据,当layer被移除掉,这个结果就不复存在。

所以,最后重要的一步,导出数据。

 这种方法,还适用于具有多种无效值的情况。例如,除了(0,0,0) 还包含 (255,255,255) :

我们需要做的仅是继续增加栅格函数。在 Function Template Editor 中函数们顺序相接,像个环环相接的链条,所以称为 ”函数链/ Function Chain“,咦,好像跑题了。请继续看如何设置无效值:

这样就实现了去掉两组无效值。

七、镶嵌数据集去除黑边

那么摆在你面前的数据不是一个,而是“很多”呢?凡事保证质量之后,重复工作多了之后就同时需要保证效率,那么这种方法适用于“很多”、“大量”……

ArcGIS 的镶嵌数据集是个理想与实用兼备的影像数据管理模型,我们用它来“处理”大量栅格数据也是个不错的选择。

在地理数据库中创建镶嵌数据集,并将数据添加到镶嵌数据集中,之后:

在镶嵌数据集中可以使用工具 Define Mosaic Dataset Nodata 工具,对数据的无效值进行定义。

从而批量去除了无效值。

镶嵌数据集本身也支持栅格函数,类似影像数据窗口中函数模板的设置,同样可以设置函数链来实现一些复杂的要求。

当然,我们在使用镶嵌数据集的时候,也可以在重建footprint的时候去除无效值。但它只适用于影像边缘值一样的情况下。

      使用 Build Footprint 工具执行系统计算得到新的轮廓线。
      重新定义轮廓线的方法有:
        RADIOMETRY:根据像素值范围来重新定义轮廓线的形状,从而排除无效数据(*辐射法重新计算轮廓线这个小专题可以展开,以后有时间可以详细整理。)
       GEOMETRY:将轮廓线的形状重新定义为其原始几何形状
       COPY_FROM_SIBLING:在使用全色锐化的栅格类型时,轮廓线将被替换为多光谱项的轮廓线。

      设置有效值区域,比如,影像位深是8位,那么设置为将像素值设置为1-255,0黑边自动去除。
 

  • 23
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值