1、中值滤波和萨维茨基-戈雷滤波简介
在MATLAB中,可以使用medfilt2函数来实现中值滤波。中值滤波是一种常见的滤波方法,用于去除图像中的椒盐噪声或者斑点噪声。该函数的语法为:
filtered_image = medfilt2(input_image, [m n]);
其中,input_image为待滤波的输入图像,[m n]为滤波窗口的大小,通常为奇数。中值滤波会将窗口中的像素值排序,然后取中间值作为中心像素的值,从而消除噪声。
而对于萨维茨基-戈雷滤波,可以使用wiener2函数来实现。这种滤波方法结合了均值滤波和中值滤波的优点,能够有效地去除噪声并保留图像的细节。wiener2函数的语法为:
filtered_image = wiener2(input_image, [m n]);
其中,input_image为待滤波的输入图像,[m n]为窗口的大小。萨维茨基-戈雷滤波会根据窗口内的像素值和像素值的方差来调整滤波权重,从而获得更好的滤波效果。
需要注意的是,在实际使用中,可以根据具体的图像和噪声情况来调整滤波的参数和方法,以获得最佳的滤波效果。
2、中值滤波:medfilt1()函数
说明:一维中值滤波
1)语法
语法1:y = medfilt1(x) 将输入向量x应用3阶一维中值滤波器。
语法2:y = medfilt1(x,n) 将一个n阶一维中值滤波器应用于x。
语法3:y = medfilt1(x,n,[],dim) 指定过滤器操作的维度dim。
2)参数说明
x:输入信号 y:输出信号 dim:筛选维度
3)NaN(信号数据缺失)处理
'includenan' :返回过滤信号,以便包含NaN的任何段的中值也是NaN。
'omitnan' 返回过滤后的信号,使得包含 NaN 的任何段的中值为非 NaN 值的中值。如果一个段的
所有元素都是 NaN,则结果为 NaN终点过滤,指定为'零填充'或'截断'。
'zeropad' 在端点之外,信号被视为零。