MATLAB实现3*3中值滤波
时间: 2023-06-16 08:03:33 浏览: 195
下面是MATLAB实现3*3中值滤波的代码:
```matlab
% 读取原始图像
img = imread('lena.png');
% 显示原始图像
subplot(1,2,1);
imshow(img);
title('Original Image');
% 中值滤波
img_med = medfilt2(img,[3 3]);
% 显示中值滤波后的图像
subplot(1,2,2);
imshow(img_med);
title('Median Filtered Image');
```
其中,`medfilt2`函数用于进行中值滤波,第一个参数为原始图像,第二个参数为滤波器大小。在本例中,滤波器大小为`[3 3]`,表示使用一个3*3的滤波器进行中值滤波。
相关问题
MATLAB3*3中值滤波去噪
中值滤波是一种常用的图像去噪技术,它可以有效地去除图像中的噪声,同时保留图像中的边缘信息。在MATLAB中,可以使用medfilt2函数进行3*3中值滤波去噪。
具体步骤如下:
1. 读取原始图像,将其转换为灰度图像。
2. 使用medfilt2函数进行3*3中值滤波处理,得到去噪后的图像。
3. 将去噪后的图像显示出来,比较与原始图像的差异。
下面是MATLAB代码示例:
% 读取原始图像
img = imread('lena.jpg');
% 转换为灰度图像
img_gray = rgb2gray(img);
% 进行3*3中值滤波
img_medfilt = medfilt2(img_gray, [3 3]);
% 显示去噪后的图像
imshow(img_medfilt);
% 显示原始图像
figure;
imshow(img_gray);
可以看到,经过中值滤波去噪后,图像中的噪点已经被去除,同时保留了图像的细节和边缘信息。
用MATLAB自己写函数实现3*3中值滤波
可以使用MATLAB内置函数`medfilt2`来实现3*3中值滤波,示例代码如下:
```matlab
% 读取图像
img = imread('your_image.jpg');
% 实现3*3中值滤波
img_filtered = medfilt2(img, [3,3]);
% 显示原图和滤波后的图像
subplot(1,2,1);
imshow(img);
title('原图');
subplot(1,2,2);
imshow(img_filtered);
title('中值滤波后的图像');
```
其中,`medfilt2`函数的第一个参数为待滤波的图像,第二个参数为滤波窗口的大小,这里我们设置为3*3。运行后会显示原图和滤波后的图像,效果如下:
![3*3中值滤波示例](https://img-blog.csdn.net/20180607170613831?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zsb3JhX2Rlc2lnbl9pbWFnZS5wbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)