clear all; close all;
I = imread('rice.png');
I = im2double(I);
J = imnoise(I, 'gaussian', 0, 0.01);
h = ones(3, 3) / 9;
K = conv2(J, h);
figure;
subplot(131);
imshow(I);
title('Original Image');
subplot(132);
imshow(J);
title('Gaussian Noisy Image');
subplot(133);
imshow(K);
title('Filtered Image');
解释:
-
clear all; close all;
:清空工作空间中的所有变量并关闭所有图形窗口。 -
I = imread('rice.png');
:读取名为rice.png
的图像,并赋值给I
。 -
I = im2double(I);
:将图像I
的数据类型转换为双精度浮点数,以便进行后续处理。 -
J = imnoise(I, 'gaussian', 0, 0.01);
:在图像I
上添加高斯噪声,均值为0,方差为0.01。高斯噪声是一种连续的概率分布噪声,通常用于模拟图像中的随机噪声。 -
h = ones(3, 3) / 9;
:创建一个3x3的平均滤波器核,所有元素初始化为1/9。 -
K = conv2(J, h);
:使用滤波器核h
对噪声图像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), 'rice_filtered.png');
-
尝试不同的噪声参数:可以尝试使用不同的噪声参数来观察噪声对图像的影响。
-
使用不同的滤波器:可以尝试使用不同的滤波器核来去除噪声,比如高斯滤波器、中值滤波器等。
-
分析滤波效果:可以分析滤波前后图像的质量,比如通过计算图像的峰值信噪比(PSNR)来评估滤波效果。
-
创建交互式滤波器设计:可以创建一个交互式界面,允许用户自定义滤波器核并实时查看滤波效果。