用matlab实现中值滤波器
时间: 2023-08-26 14:22:43 浏览: 102
median_block.rar_中值滤波器
可以使用以下代码实现中值滤波器:
```matlab
function output = median_filter(input, mask_size)
% input: 输入图像
% mask_size: 滤波器大小
% output: 输出图像
[row, col] = size(input);
pad_size = floor(mask_size / 2);
% 对输入图像进行边缘填充
padded_input = padarray(input, [pad_size pad_size], 'replicate');
% 初始化输出图像
output = zeros(row, col);
for i = 1:row
for j = 1:col
% 获取当前滤波器的区域
current_mask = padded_input(i:i+2*pad_size, j:j+2*pad_size);
% 对当前区域进行中值滤波
output(i, j) = median(current_mask(:));
end
end
% 将输出图像限制在0-255范围内
output(output < 0) = 0;
output(output > 255) = 255;
% 将输出图像转换为8位整型
output = uint8(output);
end
```
使用方法:
```matlab
input = imread('input.png');
output = median_filter(input, 3);
imshow(output);
```
其中,`input.png`是待处理的图像,`3`是滤波器大小,可以根据需要调整。
阅读全文