r.mfilter 是 GRASS GIS 提供的一个强大的栅格滤波工具,允许用户通过自定义的矩阵(核)对栅格数据进行平滑、边缘检测或特征增强。
本文借助 r.mfilter 工具,讲解 GIS 中常用的栅格滤波算法。
在 QGIS 工具箱中,搜索并打开 r.mfilter 工具,如下图所示。

过滤文件
过滤文件是一个文本文件,定义滤波矩阵。示例如下:
TITLE 您的滤波器描述(单行)
MATRIX 3
1 1 1
1 1 1
1 1 1
DIVISOR 9
TYPE P
参数讲解:
- TITLE:滤波器的描述(可选)。
- MATRIX n:声明一个 n x n 的矩阵,n 必须是 >=3 的奇数。接下来 n 行,每行包含 n 个用空格分隔的权重值。
- DIVISOR d:除数 d 是一个标量值,用于在滤波计算完成后,将结果除以该数值。其核心作用是归一化或缩放滤波后的像素值。默认为1。如果设为0,则对每个像元,d 等于其邻域内非空像元所对应的矩阵权重值之和。
- TYPE S/P:滤波器类型,S 为顺序,P 为并行。如果省略,默认为 S。
点击访问官网
常用滤波器
3x3均值滤波器
TITLE 3x3 Average Filter
MATRIX 3
1 1 1
1 1 1
1 1 1
DIVISOR 9
TYPE P
多步滤波
TITLE Two-step averaging
MATRIX 3
1 1 1
1 1 1
1 1 1
DIVISOR 0
TYPE P
MATRIX 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
DIVISOR 25
TYPE P
高斯模糊 - 3x3
MATRIX 3
1 2 1
2 4 2
1 2 1
高斯模糊 - 5x5
MATRIX 5
1 4 6 4 1
4 16 24 16 4
6 24 36 24 6
4 16 24 16 4
1 4 6 4 1
DIVISOR 1
Sobel 算子 - 水平边缘检测
MATRIX 3
-1 -2 -1
0 0 0
1 2 1
Sobel 算子 - 垂直边缘检测
MATRIX 3
-1 0 1
-2 0 2
-1 0 1
锐化
MATRIX 3
-1 -1 -1
-1 9 -1
-1 -1 -1
中值滤波替代方案 (近似)
虽然 r.mfilter 是线性滤波,不能直接做中值滤波,但可以使用以下十字形矩阵进行简单的方向性平滑:
MATRIX 3
0 1 0
1 1 1
0 1 0
注意事项
执行 r.mfilter 后栅格数值范围发生明显变化是正常现象,因为滤波器的本质就是通过数学运算重新计算每个像素的值。
如果你希望保持原始数据的数值范围或统计特征,可以采取以下解决方案:
在工具箱找到 重缩放栅格值域(native:rescaleraster),设置栅格的最大值和最小值,使数值分布到你期望的区间内。
更多栅格算法问题,欢迎留言或联系我们。转载须注明出处。