目录
[均值滤波(Mean Filter)](#均值滤波(Mean Filter))
[中值滤波(Median Filter)](#中值滤波(Median Filter))
[高斯滤波(Gaussian Filter)](#高斯滤波(Gaussian Filter))
[双边滤波(Bilateral Filter)](#双边滤波(Bilateral Filter))
[方框滤波(Box Filter)](#方框滤波(Box Filter))
图像滤波概览
|---------------------------|----------------------------|
| 线性滤波 | 非线性滤波 |
| 均值滤波(Mean Filter) | 中值滤波(Median Filter) |
| 高斯滤波(Gaussian Filter) | 双边滤波(Bilateral Filter) |
| 方框滤波(Box Filter) | Canny滤波 |
| Sobel滤波 | |
| Laplace滤波 | |
| Scharr滤波 | |
均值滤波(Mean Filter)
均值滤波是一种简单的线性滤波方法。它通过计算图像中每个像素邻域内像素值的平均值来替换该像素的值。例如,对于一个3×3的邻域,将邻域内9个像素的值相加,再除以9,得到的结果作为中心像素的新值。
KSize=3
中值滤波(Median Filter)
中值滤波是一种非线性滤波方法。它将像素邻域内的像素值进行排序,然后取中间值作为中心像素的新值。例如,对于一个3×3的邻域,将9个像素值从小到大(或从大到小)排序,取第5个像素的值作为中心像素的新值。
KSize=3
高斯滤波(Gaussian Filter)
高斯滤波基于高斯函数来确定邻域内像素的权重。离中心像素越近的像素,其权重越大;离中心像素越远的像素,权重越小。例如,对于一个5×5的高斯滤波器核,中心像素的权重最大,边缘像素的权重较小。然后将邻域内像素值与对应的权重相乘后求和,得到中心像素的新值。
SigmaX=0.3;SigmaY=0.5;KSize=3
双边滤波(Bilateral Filter)
双边滤波同时考虑了空间距离和像素值的相似性。它由两个高斯函数组成,一个基于空间距离,另一个基于像素值的差异。对于邻域内的每个像素,根据其与中心像素的空间距离和像素值的差异来确定权重,然后进行加权平均得到中心像素的新值。
SigmaX=21;SigmaY=21;Neighborhood=3
方框滤波(Box Filter)
方框滤波与均值滤波类似,也是计算邻域内像素值的平均。但它可以选择是否对结果进行归一化。如果进行归一化,就相当于均值滤波;如果不进行归一化,滤波后的图像会比原图像更亮(对于正的图像数据),因为像素值累加后没有除以邻域像素个数。
KSize=3
Sobel滤波
Sobel滤波主要用于边缘检测。它基于图像的一阶导数来计算边缘的强度和方向。Sobel算子包含两个卷积核,一个用于检测水平方向的边缘,另一个用于检测垂直方向的边缘。Sobel滤波对噪声有一定的鲁棒性,因为它是基于局部区域的加权求和(卷积)。
X方向核大小=3;Y方向核大小=3
Laplace滤波
Laplace滤波是基于图像的二阶导数进行边缘检测的方法。它通过计算图像中每个像素与其邻域像素的二阶导数关系来检测边缘。
Scale=1;BorderType=Constant;KSize=3;Delta=0
Canny滤波
Canny滤波是一种多阶段的边缘检测算法。被认为是一种较为优秀的边缘检测算法。它能够提供比较精确的边缘检测结果,有效地抑制噪声,并且能够检测到单像素宽度的边缘。
- 第一步是噪声抑制,通常采用高斯滤波来平滑图像,减少噪声对边缘检测的影响。
- 第二步是计算梯度幅值和方向,类似于Sobel滤波,通过计算一阶导数来得到图像的梯度幅值和方向。
- 第三步是非极大值抑制。在计算出梯度幅值和方向后,沿着梯度方向,将每个像素点的梯度幅值与它的邻域像素(沿着梯度方向的两个邻点)进行比较,如果该像素点的梯度幅值不是局部最大值,则将其置为零,这样可以得到更细的边缘。
- 第四步是双阈值检测和边缘连接。设置两个阈值,高阈值和低阈值。高于高阈值的像素点肯定是边缘点,低于低阈值的像素点肯定不是边缘点,而介于两个阈值之间的像素点,如果与已确定的边缘点相连,则也被认为是边缘点。
KSize=3;最大阈值=255;最小阈值=0
Scharr滤波
Scharr滤波也是一种用于边缘检测的滤波方法。它与Sobel滤波类似,也是基于一阶导数来计算边缘强度和方向。