clear all; close all;
I = imread('coins.png');
I = im2double(I);
J = imnoise(I, 'salt & pepper', 0.03);
K = medfilt2(J);
figure;
subplot(131);
imshow(I);
title('Original Image');
subplot(132);
imshow(J);
title('Salt & Pepper Noisy Image');
subplot(133);
imshow(K);
title('Median Filtered Image');
解释:
-
clear all; close all;
:清空工作空间中的所有变量并关闭所有图形窗口。 -
I = imread('coins.png');
:读取名为coins.png
的图像,并赋值给I
。 -
I = im2double(I);
:将图像I
的数据类型转换为双精度浮点数,以便进行后续处理。 -
J = imnoise(I, 'salt & pepper', 0.03);
:在图像I
上添加盐和胡椒噪声,噪声的比例为0.03。 -
K = medfilt2(J);
:使用medfilt2
函数对噪声图像J
应用二维中值滤波,并赋值给K
。中值滤波是一种非线性数字滤波技术,它用图像中每个像素的周围像素的中值来替换该像素的值,以此来去除噪声。 -
figure;
:创建一个新的图形窗口。 -
subplot(131); imshow(I);
:在第一个子图(1,3,1)中显示原始图像I
。 -
subplot(132); imshow(J);
:在第二个子图(1,3,2)中显示添加了盐和胡椒噪声的图像J
。 -
subplot(133); imshow(K);
:在第三个子图(1,3,3)中显示中值滤波后的图像K
。
拓展:
- 保存滤波后的图像:可以将中值滤波后的图像
K
保存为文件。
% 保存中值滤波后的图像
imwrite(uint8(K), 'coins_median_filtered.png');
-
尝试不同的噪声比例:可以尝试使用不同的噪声比例来观察噪声对图像的影响。
-
应用其他滤波技术:可以尝试使用其他滤波技术,如均值滤波、高斯滤波等,并比较它们的效果。
-
分析不同滤波器的性能:可以分析不同类型的滤波器对图像噪声的去除效果以及对图像细节的保留情况。
-
创建交互式滤波器选择:可以创建一个交互式界面,允许用户选择不同的滤波器并实时查看滤波效果。