clear all; close all;
I = imread('cameraman.tif');
I = im2double(I);
I = imnoise(I, 'salt & pepper', 0.01);
J = ordfilt2(I, 1, ones(4,4));
K = ordfilt2(I, 9, ones(3));
figure;
subplot(131);
imshow(I);
title('Original Image with Salt and Pepper Noise');
subplot(132);
imshow(J);
title('Image with Order Filtered (Rank 1)');
subplot(133);
imshow(K);
title('Image with Order Filtered (Rank 9)');
解释:
-
clear all; close all;
:清空工作空间中的所有变量并关闭所有图形窗口。 -
I = imread('cameraman.tif');
:读取名为cameraman.tif
的图像,并赋值给I
。 -
I = im2double(I);
:将图像I
的数据类型转换为双精度浮点数,以便进行后续处理。 -
I = imnoise(I, 'salt & pepper', 0.01);
:在图像I
上添加椒盐噪声,噪声密度为0.01。 -
J = ordfilt2(I, 1, ones(4,4));
:使用ordfilt2
函数对图像I
进行排序滤波,滤波的顺序数为1(最小值滤波),邻域窗口为4x4的均匀矩阵。 -
K = ordfilt2(I, 9, ones(3));
:使用ordfilt2
函数对图像I
进行排序滤波,滤波的顺序数为9(中位数滤波),邻域窗口为3x3的均匀矩阵。 -
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
。
拓展:
- 保存图像:可以将处理后的图像
J
和K
保存为文件。
% 保存处理后的图像
imwrite(uint8(J), 'cameraman_with_min_filtered.png');
imwrite(uint8(K), 'cameraman_with_median_filtered.png');
-
调整排序滤波的顺序数:可以尝试使用不同的排序滤波顺序数,来观察对图像去噪效果的影响。
-
修改邻域窗口:可以尝试使用不同的邻域窗口,来观察对图像去噪效果的影响。
-
分析处理效果:可以进一步分析处理后的图像效果,比如通过计算图像的均值和方差。
-
比较不同去噪方法的影响:可以比较不同去噪方法对图像质量的影响,以评估不同方法的效果。