灰度最相近的 K 个邻域点平均法MATLAB 实现
时间: 2024-03-08 13:50:28 浏览: 181
灰度最相邻的K个邻域点平均法是一种常见的图像处理方法,可以用于去除图像中的噪声和平滑图像。在MATLAB中,可以使用下面的代码来实现该方法:
```matlab
% 读入图像
img = imread('image.jpg');
% 定义邻域大小
neighborhood_size = 3;
% 定义K值
K = 5;
% 获取图像大小
[height, width] = size(img);
% 初始化输出图像
img_filtered = zeros(height, width);
% 对每个像素进行处理
for i = 1:height
for j = 1:width
% 获取当前像素的邻域
neighborhood = img(max(i-1, 1):min(i+1, height), max(j-1, 1):min(j+1, width));
% 将邻域中的像素按灰度值从小到大排序
sorted_values = sort(neighborhood(:));
% 计算灰度值最相邻的K个像素的平均值
avg_value = mean(sorted_values(1:K));
% 将处理后的像素值赋给输出图像
img_filtered(i, j) = avg_value;
end
end
% 显示原图和滤波后的图像
subplot(1, 2, 1), imshow(img), title('Original Image');
subplot(1, 2, 2), imshow(uint8(img_filtered)), title('Filtered Image');
```
在上面的代码中,我们首先读入图像,然后定义邻域大小和K值。接着,我们对图像中的每个像素进行处理。对于每个像素,我们获取其邻域,并将邻域中的像素按灰度值从小到大排序。然后,我们计算灰度值最相邻的K个像素的平均值,并将处理后的像素值赋给输出图像。最后,我们使用MATLAB中的imshow函数来显示原图和滤波后的图像。
阅读全文