算术均值滤波matlab代码实现
时间: 2023-10-24 17:08:59 浏览: 105
以下是算术均值滤波的 Matlab 代码实现:
``` matlab
function filteredImage = arithmeticMeanFilter(inputImage, filterSize)
% inputImage: 输入图像
% filterSize: 滤波器大小(奇数)
% filteredImage: 经过算术均值滤波后的图像
% 处理边界,使用镜像边缘处理方式
inputImage = padarray(inputImage, [(filterSize-1)/2 (filterSize-1)/2], 'symmetric');
% 初始化滤波后的图像
filteredImage = zeros(size(inputImage));
% 算术均值滤波
for i = 1:size(inputImage,1) - filterSize + 1
for j = 1:size(inputImage,2) - filterSize + 1
filteredImage(i + (filterSize-1)/2, j + (filterSize-1)/2) = ...
mean(mean(inputImage(i:i+filterSize-1,j:j+filterSize-1)));
end
end
% 去掉边界
filteredImage = filteredImage((filterSize-1)/2+1:end-(filterSize-1)/2, ...
(filterSize-1)/2+1:end-(filterSize-1)/2);
end
```
该函数的参数有两个:输入图像和滤波器大小。输入图像为需要进行滤波处理的灰度图像。滤波器大小为奇数,例如 3、5、7 等。
该函数使用镜像边缘处理方式来避免边界像素问题。滤波后的图像使用算术均值滤波的方式实现,遍历每个像素点,并计算以此为中心的滤波器内的像素值的均值。最后,去掉边界的部分并返回滤波后的图像。