MATLAB 中值滤波代码:去除图像噪声
以下代码使用 MATLAB 实现中值滤波,用于去除图像噪声:
% 加载图像
img = imread('image.jpg'); % 修改为你自己的图像文件名
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0, 0.02);
% 获取图像尺寸
[rows, cols] = size(noisy_img);
% 初始化结果图像
filtered_img = uint8(zeros(rows, cols));
% 中值滤波
for i = 2 : rows-1
for j = 2 : cols-1
% 取 3x3 窗口内的像素值
window = noisy_img(i-1:i+1, j-1:j+1);
% 对窗口内的像素值进行排序,并取中间值
median_val = median(window(:));
% 更新滤波后的像素值
filtered_img(i, j) = median_val;
end
end
% 显示原始图像和滤波后的图像
figure;
subplot(1, 2, 1);
imshow(noisy_img);
title('加噪图像');
subplot(1, 2, 2);
imshow(filtered_img);
title('中值滤波结果');
你需要在以下两个地方进行修改:
-
将
'image.jpg'替换为你自己的图像文件名。确保图像文件与 MATLAB 脚本在同一目录下。 -
如果你希望使用不同的滤波窗口大小,可以在
for循环中的索引范围中进行修改。例如,如果你想使用 5x5 的窗口,可以将for循环修改为for i = 3 : rows-2和for j = 3 : cols-2。
希望这次能够帮到你。如果还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/bCdb 著作权归作者所有。请勿转载和采集!