MATLAB 语言编程实现图像的均值滤波和中值滤波处理
时间: 2024-05-03 14:21:54 浏览: 146
均值滤波:
```matlab
% 读取图像
img = imread('lena.png');
% 转换为灰度图像
img_gray = rgb2gray(img);
% 定义均值滤波器
kernel = ones(3,3) / 9;
% 均值滤波
img_mean = conv2(img_gray, kernel, 'same');
% 显示原图和均值滤波后的图像
figure;
subplot(1,2,1);
imshow(img_gray);
title('Original Image');
subplot(1,2,2);
imshow(uint8(img_mean));
title('Mean Filtered Image');
```
中值滤波:
```matlab
% 读取图像
img = imread('lena.png');
% 转换为灰度图像
img_gray = rgb2gray(img);
% 定义中值滤波器
kernel_size = 3;
img_median = zeros(size(img_gray));
for i = 1:size(img_gray, 1)-kernel_size+1
for j = 1:size(img_gray, 2)-kernel_size+1
% 取出当前像素点的邻域
kernel = img_gray(i:i+kernel_size-1, j:j+kernel_size-1);
% 对邻域进行排序
sorted_kernel = sort(kernel(:));
% 取中间值作为当前像素点的值
img_median(i+floor(kernel_size/2), j+floor(kernel_size/2)) = sorted_kernel(floor(numel(sorted_kernel)/2)+1);
end
end
% 显示原图和中值滤波后的图像
figure;
subplot(1,2,1);
imshow(img_gray);
title('Original Image');
subplot(1,2,2);
imshow(uint8(img_median));
title('Median Filtered Image');
```
阅读全文