用Matlab写一个邻域平均法
时间: 2024-03-23 13:37:20 浏览: 17
以下是使用 Matlab 实现邻域平均法的代码:
```matlab
function output_image = neighborhood_average(image, kernel_size)
% 对图像进行邻域平均滤波
% image: 原始图像,灰度图像
% kernel_size: 滤波器大小,一个正奇数
% output_image: 滤波后的图像
% 获取图像的高度和宽度
[height, width] = size(image);
% 计算滤波器的半径
radius = floor(kernel_size / 2);
% 定义输出图像
output_image = zeros(height, width);
% 对每个像素进行滤波
for i = 1:height
for j = 1:width
% 计算当前像素的邻域
neighborhood = image(max(1, i - radius):min(height, i + radius), ...
max(1, j - radius):min(width, j + radius));
% 对邻域内的像素求平均值
output_image(i, j) = mean(neighborhood(:));
end
end
end
```
使用方法:
```matlab
% 读取图像
image = imread('lena.png');
% 转换为灰度图像
image = rgb2gray(image);
% 对图像进行邻域平均滤波
output_image = neighborhood_average(image, 5);
% 显示滤波前后的图像
imshow(image);
title('Original Image');
figure;
imshow(output_image);
title('Filtered Image');
```
其中 `image` 为原始图像,`kernel_size` 为滤波器大小。函数返回滤波后的图像。