matlab中值滤波程序
时间: 2023-05-26 10:07:07 浏览: 276
中值滤波matlab代码
以下是一个简单的 MATLAB 中的值滤波程序:
```Matlab
function img_filtered = my_median_filter(img, mask_size)
% img: 输入图像
% mask_size: 模板尺寸
% img_filtered: 经过中值滤波后的图像
% 转换为灰度图像
if size(img, 3) == 3
img = rgb2gray(img);
end
% 补零操作
border_size = floor(mask_size / 2);
img = padarray(img, [border_size border_size], 'symmetric');
% 初始化输出图像
img_filtered = zeros(size(img));
% 遍历图像
for y = 1 + border_size : size(img, 1) - border_size
for x = 1 + border_size : size(img, 2) - border_size
% 提取当前像素的局部区域
local_region = img(y - border_size : y + border_size, x - border_size : x + border_size);
% 对局部区域进行排序,并取其中位数作为当前像素的输出值
img_filtered(y, x) = median(local_region(:));
end
end
% 去除补零操作产生的边缘效应
img_filtered = img_filtered(1 + border_size : end - border_size, 1 + border_size : end - border_size);
end
```
调用方式:
```Matlab
img = imread('lena.png');
img_filtered = my_median_filter(img, 3);
```
其中, `img` 是需要滤波的图像,`mask_size` 是模板大小(必须是奇数)。函数返回经过中值滤波后的图像 `img_filtered`。
阅读全文