加权中值滤波matlab
时间: 2023-09-09 13:13:13 浏览: 159
使用matlab进行中值滤波
加权中值滤波是一种对图像进行噪声处理的方法,它可以有效地去除椒盐噪声和高斯噪声等。在Matlab中可以使用medfilt2函数来实现加权中值滤波。
medfilt2函数的语法如下:
```matlab
B = medfilt2(A,[m n],'indexed',p)
```
其中,A为待滤波的图像,[m n]为滤波器的大小,'indexed'表示输入图像A是索引图像,p为加权参数。如果A是灰度图像,则可以省略'indexed'参数。加权参数p的取值范围为[0,1],当p=0时,加权中值滤波器就是中值滤波器,当p=1时,加权中值滤波器就是均值滤波器。
下面是一个示例代码:
```matlab
% 读取图像
I = imread('lena.png');
% 添加椒盐噪声
J = imnoise(I,'salt & pepper',0.02);
% 加权中值滤波
K = medfilt2(J,[3 3],'indexed',0.5);
% 显示结果
subplot(131), imshow(I), title('原图');
subplot(132), imshow(J), title('添加噪声后的图像');
subplot(133), imshow(K), title('加权中值滤波后的图像');
```
这段代码中,首先读取了一张图像,然后添加了椒盐噪声。接着使用medfilt2函数进行加权中值滤波,滤波器大小为3×3,加权参数为0.5。最后将原图、添加噪声后的图像和加权中值滤波后的图像分别显示在三个子图中。
阅读全文