MATLAB手写均值滤波代码,设定多个不同的窗口大小,并可视化,不要调库
时间: 2023-07-10 09:37:17 浏览: 49
好的,下面是MATLAB手写均值滤波代码:
```matlab
% 读取原图像
img = imread('lena.png');
% 将图片转换为灰度图
gray_img = rgb2gray(img);
% 显示原图像
subplot(2, 3, 1);
imshow(gray_img);
title('Original Image');
% 定义不同的窗口大小
window_sizes = [3, 5, 7, 9, 11];
% 对不同窗口大小进行均值滤波
for i = 1:length(window_sizes)
% 获取当前窗口大小
window_size = window_sizes(i);
% 计算窗口大小的一半
half_size = floor(window_size / 2);
% 初始化输出图像
out_img = zeros(size(gray_img));
% 对每个像素进行均值滤波
for x = half_size+1:size(gray_img, 1)-half_size
for y = half_size+1:size(gray_img, 2)-half_size
% 获取当前像素的窗口
window = gray_img(x-half_size:x+half_size, y-half_size:y+half_size);
% 计算窗口内像素的均值
avg_value = mean(window(:));
% 将均值赋值给输出图像的当前像素
out_img(x, y) = avg_value;
end
end
% 在subplot中显示输出图像
subplot(2, 3, i+1);
imshow(uint8(out_img));
title(sprintf('Window Size %d', window_size));
end
```
这段代码会读取名为"lena.png"的图像文件,将其转换为灰度图并显示出来。然后,它会定义不同的窗口大小,并对每个窗口大小进行均值滤波。最后,它会在subplot中显示每个输出图像。