以下代码使用 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('中值滤波结果');

你需要在以下两个地方进行修改:

  1. 'image.jpg' 替换为你自己的图像文件名。确保图像文件与 MATLAB 脚本在同一目录下。

  2. 如果你希望使用不同的滤波窗口大小,可以在 for 循环中的索引范围中进行修改。例如,如果你想使用 5x5 的窗口,可以将 for 循环修改为 for i = 3 : rows-2for j = 3 : cols-2

希望这次能够帮到你。如果还有其他问题,请随时提问。


原文地址: https://www.cveoy.top/t/topic/bCdb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录