matlab实现邻域平均法
时间: 2023-07-13 09:30:02 浏览: 127
以下是邻域平均法的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
% 计算当前像素的邻域
row_start = max(1, i - radius);
row_end = min(height, i + radius);
col_start = max(1, j - radius);
col_end = min(width, j + radius);
neighborhood = image(row_start:row_end, col_start:col_end);
% 对邻域内的像素求平均值
output_image(i, j) = mean(neighborhood(:));
end
end
```
使用方法:
```matlab
% 读取图像
image = imread('lena.png');
image = rgb2gray(image);
% 对图像进行邻域平均滤波
output_image = neighborhood_average(image, 5);
% 显示滤波前后的图像
subplot(1, 2, 1);
imshow(image);
title('Original Image');
subplot(1, 2, 2);
imshow(output_image);
title('Filtered Image');
```
其中 `image` 为原始图像,`kernel_size` 为滤波器大小。函数返回滤波后的图像。
阅读全文