用matlab,采用3x3模板,自定义函数实现对图像进行均值滤波和中值滤波,边界采用复制的方法进行填充
时间: 2023-12-03 10:05:24 浏览: 195
利用MATLAB对图像进行均值滤波
好的,以下是用MATLAB实现3x3模板进行均值滤波和中值滤波的示例代码,并采用复制的边界填充方法:
```matlab
% 读入待处理的图像
img = imread('test.jpg');
% 将图像从uint8类型转换为double类型
img = im2double(img);
% 获取图像的尺寸
[row, col] = size(img);
% 定义3x3模板
template = ones(3, 3) / 9;
% 复制边界填充
pad_img = padarray(img, [1, 1], 'replicate');
% 均值滤波
mean_img = zeros(row, col);
for i = 1:row
for j = 1:col
mean_img(i, j) = sum(sum(template .* pad_img(i:i+2, j:j+2)));
end
end
% 中值滤波
median_img = zeros(row, col);
for i = 1:row
for j = 1:col
median_img(i, j) = median(reshape(pad_img(i:i+2, j:j+2), 1, []));
end
end
% 显示原图和滤波后的图像
figure;
subplot(1, 3, 1); imshow(img); title('原图');
subplot(1, 3, 2); imshow(mean_img); title('均值滤波');
subplot(1, 3, 3); imshow(median_img); title('中值滤波');
```
上述代码中,首先读入待处理的图像,并将其从uint8类型转换为double类型。然后,定义3x3的均值滤波模板,将图像采用复制的方法进行边界填充。接着,分别对图像进行均值滤波和中值滤波的操作,并将结果分别存储在mean_img和median_img中。最后,用subplot函数分别显示原图和滤波后的图像。
阅读全文