滤波器的工作原理

滤波器工具可用于消除虚假数据或增强数据中不明显的要素。 滤波器通过一个移动的重叠 3x3 像元邻域窗口在输入栅格上进行扫描,从而创建输出值。 当滤波器经过每个输入像元时,使用该像元及其 8 个相邻像元的值来计算输出值。

工具中提供了两种可用的滤波器类型:低通滤波器和高通滤波器。

滤波器类型

低通滤波器采用低通(或平均)滤波器对输入栅格进行平滑处理,从而平滑数据。 高通滤波器则使用高通滤波器来增强栅格中表示的要素之间的边缘和边界。

低通滤波器

低通滤波器通过减少局部变化和去除噪声来平滑数据。 它用于计算每个 3 x 3 邻域的平均值。 它本质上等同于使用平均统计选项的焦点统计工具。 其效果就是对每个邻域内的高数值和低数值进行平均处理,以减少数据中的极值。

示例 1

以下是一个处理像元的输入邻域值的示例,其中心像元的值为 8。

7 5 2 4 8 3 3 1 5

对于处理像元(其中心像元的值为 8),计算方法是找到输入像元的平均值。 即邻域内所有输入值的总和,除以邻域中的像元数(3 x 3 = 9)。

值 = ((7 + 5 + 2) + (4 + 8 + 3) + (3 + 1 + 5)) / 9 = 38 / 9 = 4.222

处理像元位置的输出值将为 4.22。

由于均值是从所有输入值计算的,因此列表中的最高值(即处理像元的值 8)在平均过程中被移除了。

示例 2

此示例显示了在一个小型 5 x 5 像元栅格上使用低通选项进行滤波的结果栅格。

为了说明如何处理 NoData 像元,下面提供了在计算中忽略 NoData 参数在选中(在 Python 中设置为 DATA)和取消选中(在 Python 中设置为 NODATA)情况下的输出值:

  • 输入像元值:
    2.000 3.000 4.000 5.000 6.000 2.000 3.000 4.000 NoData 6.000 2.000 3.000 4.000 5.000 6.000 2.000 30.000 4.000 5.000 NoData 1.000 2.000 2.000 3.000 NoData
  • 选中在计算中忽略 NoData 参数的输出像元值(滤波窗口中的 NoData 像元将在计算中被忽略):
    2.500 3.000 3.800 5.000 5.667 2.500 3.000 3.875 5.000 5.600 7.000 6.000 7.250 4.857 5.500 6.667 5.556 6.444 4.143 4.750 8.750 6.833 7.667 3.500 4.000
  • 取消选中在计算中忽略 NoData 参数的输出像元值(如果滤波窗口中的任何像元为 NoData,则输出将为 NoData):
    NoData NoData NoData NoData NoData NoData 3.000 NoData NoData NoData NoData 6.000 NoData NoData NoData NoData 5.556 6.444 NoData NoData NoData NoData NoData NoData NoData

示例 3

在以下示例中,输入栅格存在由数据采集错误引起的异常数据点。 低通选项的平均特性平滑了异常数据点。

使用低通选项的滤波器
低通选项的滤波器输出示例

高通滤波器

高通滤波器强调了像元值与其邻近像元之间的比较差异。 它可以突出显示要素之间的边界(例如,水域与森林的交界处),从而增强对象之间的边缘。 它通常被称为边缘增强滤波器。

高通选项下,将使用一种加权方式对九个输入 z 值进行加权,以消除低频变化,并突出不同区域之间的边界。

该选项的 3 x 3 滤波器如下:

-0.7 -1.0 -0.7 -1.0 6.8 -1.0 -0.7 -1.0 -0.7

请注意,核中的值总和为 0,因为对它们进行了归一化处理。

高通滤波器本质上等同于使用求和统计选项和特定加权核的焦点统计工具。

输出 z 值表示表面的平滑程度,但它们与原始 z 值无关。 Z 值大致围绕零分布,边缘的上侧为正值,下侧为负值。 接近零的区域表示斜率几乎恒定的区域。 接近 z 最小值和 z 最大值的区域表示斜率变化迅速的区域。

示例 1

以下是一个处理像元的计算示例(其中心像元的值为 8):

7 5 2 4 8 3 3 1 5

处理像元(其中心像元的值为 8)的计算如下:

值 = ((7*-0.7) + (5*-1.0) + (2*-0.7) + (4*-1.0) + (8*6.8) + (3*-1.0) + (3*-0.7) + (1*-1.0) + (5*-0.7)) = ((-4.9 + -5.0 + -1.4) + (-4.0 + 54.4 + -3.0) + (-2.1 + -1.0 + -3.5) = -11.3 + 47.4 + -6.6 = 29.5

处理像元的输出值将为 29.5。

滤波器通过给邻近像元分配负权重,突出差异或对象之间的边界,从而强调局部细节。

示例 2

在以下示例中,输入栅格在值为 5.0 到 9.0 的区域存在明显的边缘。 选项的边缘增强特性检测到了这个边缘。

使用高选项的滤波器

待处理的 NoData 像元

在计算中忽略 NoData 选项可控制邻域窗口内 NoData 像元的处理方式。 选中此选项时(在 Python 中设置为 DATA 选项),输出像元值的计算将会忽略邻域中的所有 NoData 像元。 取消选中此选项时(NODATA 选项),如果邻域中存在任何 NoData 像元,则输出像元将为 NoData。

如果待处理的像元本身是 NoData,则在选中在计算中忽略 NoData 选项后,将根据邻域中有效的其他像元来计算像元的输出值。 当然,如果邻域中的所有该像元均为 NoData,则无论如何设置此参数,输出都将为 NoData。

参考

Gonzalez, R. C., and P. Wintz. 1977. Digital Image Processing. Massachusetts: Addison–Wesley.

Hord, R. M. 1982. Digital Image Processing of Remotely Sensed Data. New York: Academic.

Moik, J. G. 1980. Digital Processing of Remotely Sensed Images. New York: Academic.

Richards, J. A. 1986. Remote Sensing Digital Image Analysis: An Introduction. Berlin: Springer-Verlag.

Rosenfeld, A. 1978. Image Processing and Recognition, Technical Report 664. University of Maryland Computer Vision Laboratory.