请写一段matlab均值滤波函数
时间: 2023-09-13 22:05:43 浏览: 90
好的,以下是一段matlab均值滤波函数的代码:
```matlab
function output = mean_filter(input, kernel_size)
% input: 输入图像
% kernel_size: 滤波器大小
% output: 经过均值滤波后的图像
% 获取输入图像的大小
[M, N] = size(input);
% 创建一个空的输出图像
output = zeros(M, N);
% 计算滤波器的中心点位置
center = floor(kernel_size/2);
% 对每个像素进行滤波
for i = 1:M
for j = 1:N
% 计算滤波器的坐标范围
row_min = max(i-center, 1);
row_max = min(i+center, M);
col_min = max(j-center, 1);
col_max = min(j+center, N);
% 获取滤波器内的像素值
window = input(row_min:row_max, col_min:col_max);
% 计算均值
output(i,j) = mean(window(:));
end
end
% 将输出图像转换为uint8类型
output = uint8(output);
end
```
这段代码实现了一个基本的均值滤波器,输入为一个灰度图像,kernel_size为滤波器大小。对于每个像素,计算它周围kernel_size大小的像素的均值,然后将该均值赋给输出图像的对应像素。最后,将输出图像转换为uint8类型并返回。
阅读全文