图像加噪 + 去噪处理

这段 MATLAB 代码的主要功能是对一张 saturn.png 图片进行灰度化、裁剪、加噪声处理,并使用 维纳滤波(Wiener Filter) 来去噪,最后以对比方式展示加噪后的图像和去噪后的图像。


代码解析

clear all; close all;
  • clear all; 清除所有变量,释放工作区内存。
  • close all; 关闭所有打开的图形窗口。
RGB = imread('saturn.png');
I = rgb2gray(RGB);
  • 读取彩色图像 saturn.png 并存入 RGB
  • 使用 rgb2gray 将彩色图像转换为灰度图像 I
I = imcrop(I, [100, 100, 1024, 1024]);
  • 使用 imcrop 对灰度图像 I 进行裁剪,裁剪区域的 起始点为 (100,100),大小为 1024×1024 像素
J = imnoise(I, 'gaussian', 0, 0.03);
  • 使用 imnoise 向图像 I 添加 高斯噪声,均值为 0,方差为 0.03,得到加噪后的图像 J
[K, noise] = wiener2(J, [5, 5]);
  • 使用 wiener2 进行 维纳滤波 去噪,滤波窗口大小为 5×5
  • K 为去噪后的图像,noise 为估计出的噪声方差图。
figure;
subplot(121); imshow(J);
subplot(122); imshow(K);
  • 创建一个新的图像窗口。
  • subplot(121); imshow(J); 显示加噪后的图像 J
  • subplot(122); imshow(K); 显示去噪后的图像 K

程序运行效果

  1. 原始图片 (saturn.png)

    • 先转换为灰度图像并裁剪。
  2. 加噪图像 (J)

    • 加入高斯噪声后,图像出现随机噪声点。
  3. 去噪图像 (K)

    • 经过 维纳滤波 处理后,噪声被抑制,图像质量改善。

改进建议

  1. 调整 wiener2 窗口大小

    • 5×5 窗口可能对某些细节处理不够精细,可尝试 3×3 或 7×7 进行对比。
    [K, noise] = wiener2(J, [3, 3]);
    
  2. 使用 medfilt2 进行中值滤波

    • medfilt2 对去除椒盐噪声更有效:
    K_med = medfilt2(J, [3, 3]);
    
  3. 测试不同噪声强度

    • 改变 imnoise 的方差值,例如 0.010.05,观察维纳滤波效果。

总结

  • 代码主要完成 图像加噪 + 去噪处理
  • 维纳滤波 适用于 高斯噪声 去除,效果取决于窗口大小。
  • 可以结合其他滤波方法(如均值滤波、中值滤波)来优化去噪效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿斯弗的撒旦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值