使用 Nibble、收缩和扩展功能对区域进行概化

“栅格综合”工具集中可概化区域的工具包括 Nibble收缩扩展

Nibble

通过 Nibble 工具可将最近邻域的值分配给栅格中的所选区域。这非常适用于编辑某栅格中已知数据存在错误的区域。

首先,该算法将确定掩膜栅格中具有 NoData 值的所有区域。输入栅格中的对应区域将被一点点地除去。然后执行内部欧氏分配,从而根据欧氏距离对各个被掩膜的像元进行最近邻域值的分配。

输入栅格中与掩膜栅格中 NoData 像元相对应的像元值将被一点点地除去,然后根据欧氏距离替换为最近邻域的值。

下图中,对输入栅格和掩膜栅格应用了 Nibble 操作。Nibble 仅适用于掩膜栅格中的 NoData 值。请注意,掩膜栅格中所有非 NoData 像元均会接收输入栅格中的值。这些像元的值及其位置均将被用于向掩膜栅格各 NoData 位置处分配值。NoData 位置将接收输入栅格中被识别为掩膜栅格中最近非 NoData 像元的像元值。

Nibble 图示
OutRas = Nibble(InRas1, Mask_Ras)

收缩

收缩工具可收缩指定区域,方法是用邻域中最频繁出现的像元值代替该收缩区域的值。通过收缩,各区域边界上的伪像元的值将更改为邻域中出现频率最高的像元的值。除内部像元(无法作为八个具有相同值的最邻近像元中心的像元)以外的任何像元均可替换。

此外,还可以替换区域中的小岛屿(可被视为与区域共用边界)。您可以控制要通过收缩工具进行收缩的像元数量。如果收缩一个像元,则可被保留的最小区域大小将是 3 乘 3 的像元块(如果在边上则为 3 乘 2,如果在角上则为 2 乘 2)。区域的细小部分也可被替换。

例如,宽度为 2 个像元、长度为 10 个像元的区域将被移除,因为会从两个不同的方向将该区域收缩一个像元。如果按两个像元进行收缩,则可被保留的最小区域大小为 5 乘 5 的像元块。

从概念上讲,收缩多个像元就是:需要收缩多少个像元就需要运行多少次本工具,前一次运行的结果将作为后续迭代的输入。

例如,如果收缩两个像元,则从概念上讲,就是对输入栅格运行一个像元的收缩,从而收缩识别出的区域,然后将第一次收缩的输出作为第二次收缩的输入。

在下图中,收缩被应用于输入栅格,因此区域 5 将收缩一个像元。在任何区域中,区域 5 的宽度均小于两个像元;因此,包含 5 的所有像元均将被替换为像元邻域中出现频率最高的值。NoData 覆盖了右下角的两个位置,因为对于这两个位置来说,它是出现频率最高的值。

收缩图示
OutRas = Shrink(InRas1, 1, [5])

在下图中,收缩被应用于输入栅格,因此区域 4 和区域 6 将收缩一个像元。在左上角,值 4 保留,因为它深于一个像元。

收缩图示
OutRas = Shrink(InRas1, 1, [5])

扩展

通过扩展工具,某些区域可扩展到其他区域。从概念上讲,所选值将视为前景区域,而其他值将仍保留为背景区域。前景区域可扩展到背景区域。

在下图中,扩展工具被应用于输入栅格,区域 5 扩展了一个像元。请注意,区域 5 已扩展到右下角的 NoData 值。

扩展图示
OutRas = Expand(InRas1, 1, [5])

相关主题

9/15/2013