利用matlab编写中值滤波函数
时间: 2024-03-24 12:41:20 浏览: 125
好的,下面是中值滤波函数的matlab代码:
```matlab
function img_out = median_filter(img_in, ksize)
% 中值滤波函数
% img_in:待处理图像
% ksize:模板大小,一般取奇数
% 获取模板大小
kr = floor(ksize/2);
% 获取图像大小
[h, w] = size(img_in);
% 复制边缘像素
img_pad = padarray(img_in, [kr, kr], 'replicate');
% 初始化输出图像
img_out = zeros(h, w);
% 中值滤波
for i = 1:h
for j = 1:w
% 获取当前像素的模板
temp = img_pad(i:i+2*kr, j:j+2*kr);
% 对模板中的像素排序
temp_sort = sort(temp(:));
% 取中间值作为输出像素
img_out(i, j) = temp_sort(ksize*ksize/2+1);
end
end
% 转换数据类型
img_out = uint8(img_out);
end
```
使用方法:
```matlab
img_in = imread('input.jpg');
img_out = median_filter(img_in, 3);
imshow(img_out);
```
其中,`img_in`为待处理的图像,`ksize`为模板大小,一般取奇数。`img_out`为输出的图像。
阅读全文