MATLAB读取图像并进行5*5均值滤波代码
时间: 2024-05-03 16:23:17 浏览: 70
下面是MATLAB读取图像并进行5*5均值滤波的代码:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 定义5*5均值滤波器
filter = ones(5, 5) / 25;
% 进行均值滤波
filtered_img = conv2(gray_img, filter, 'same');
% 显示原始图像和滤波后的图像
subplot(1, 2, 1);
imshow(gray_img);
title('Original Image');
subplot(1, 2, 2);
imshow(filtered_img);
title('Filtered Image');
```
其中,`imread`函数用于读取图像,`rgb2gray`函数用于将图像转换为灰度图像,`ones`函数用于创建一个5*5的矩阵,`conv2`函数用于进行卷积操作,`'same'`参数表示输出的图像大小与输入的图像大小相同。最后,使用`subplot`函数将原始图像和滤波后的图像显示在同一张图中。
相关问题
MATLAB读取图像并进行9*9均值滤波代码
以下是MATLAB读取图像并进行9*9均值滤波的代码:
```matlab
% 读取图像
img = imread('test.jpg');
% 转换为灰度图像
gray_img = rgb2gray(img);
% 定义均值滤波核
kernel = ones(9) / 81;
% 进行均值滤波
filtered_img = conv2(gray_img, kernel, 'same');
% 显示原图和滤波后的图像
subplot(1, 2, 1);
imshow(gray_img);
title('原图');
subplot(1, 2, 2);
imshow(filtered_img);
title('均值滤波后');
```
对于给定图像lena.bmp,首先调用matlab的图像工具箱函数实现5*5的均值滤波,然后在不调用图像工具箱函数的情况下实现该图像的3*3均值滤波,最后将两个滤波结果相减,可以对比两种滤波图像的差别。请写出matlab程序。
好的,以下是matlab代码实现:
```matlab
% 读取图像lena.bmp
img = imread('lena.bmp');
% 使用matlab的图像工具箱实现5*5的均值滤波
img1 = imfilter(img, fspecial('average', [5 5]));
% 自己实现3*3均值滤波
h = ones(3) / 9;
img2 = conv2(img, h, 'same');
% 将两个滤波结果相减
img_diff = img1 - img2;
% 显示三张图像
subplot(1, 3, 1), imshow(img1), title('5*5均值滤波');
subplot(1, 3, 2), imshow(img2), title('3*3均值滤波');
subplot(1, 3, 3), imshow(img_diff), title('两者差别');
```
上述代码中,`imread` 函数用于读取图像,`imfilter` 函数用于实现5*5的均值滤波,`fspecial` 函数生成指定大小的特殊滤波器,`ones` 函数生成全部为1的矩阵,`conv2` 函数用于实现2D卷积运算,`same` 参数表示输出与原图像相同大小的图像。最后使用 `imshow` 函数显示图像。
阅读全文