目 录
一、实验目的
通过简单实验完成对一个图像去除噪声的操作,来熟悉并了解图像处理中空域滤波的概念,通过实际操作掌握滤波器的生成和基本的滤波操作,以完成基本的图像处理目的。
二、实验内容
步骤1:用手机给自己拍一张美照(必须是本人照片);
步骤2:将你的照片放到计算机内;
步骤3:启动Matlab,并通过imread(); 读取该照片,然后通过imshow()进行显示;如果图片过大,可以通过imresize(A,m)进行缩小,其中A为图像,m为尺寸变化系数,比如可设为0.2,尺寸为原来的五分之一;
步骤4:执行noise_im = imnoise(im, 'gaussian');函数,对你刚刚读取到的照片添加一定量的噪声,其中,im代表你刚刚读取到的图像;
步骤5:利用F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器,其中,Size和Sigma的数值自己确定;
步骤6:通过new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作,并观察效果;
步骤7:反复调整第五步中的Size和Sigma两个参数,并反复进行滤波操作,最终将你最满意的结果保存,并显示,同时记录下得到最满意结果时的两个参数值;
步骤8:可尝试迭代操作,即 im = imfilter(im, F); im = imfilter(im, F);……即前一次滤波的结果又作为第二次滤波的输入参数。这样迭代多次,观察效果,并选择出迭代次数以及和Size,Sigma两个参数的最佳搭配值。
三、实验过程及结果
【在这里描述下你的实验操作过程和相应代码,以及你得到的最终结果,需图文并茂。】
步骤1、2、3
步骤1:用手机给自己拍一张美照(必须是本人照片);
步骤2:将你的照片放到计算机内;
步骤3:启动Matlab,并通过imread(); 读取该照片,然后通过imshow()进行显示;如果图片过大,可以通过imresize(A,m)进行缩小,其中A为图像,m为尺寸变化系数,比如可设为0.2,尺寸为原来的五分之一;
步骤4
步骤4:执行noise_im = imnoise(im, 'gaussian');函数,对你刚刚读取到的照片添加一定量的噪声,其中,im代表你刚刚读取到的图像;
步骤5、6
步骤5:利用F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器,其中,Size和Sigma的数值自己确定;
步骤6:通过new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作,并观察效果;
步骤7
步骤7:反复调整第五步中的Size和Sigma两个参数,并反复进行滤波操作,最终将你最满意的结果保存,并显示,同时记录下得到最满意结果时的两个参数值;
步骤8
步骤8:可尝试迭代操作,即 im = imfilter(im, F); im = imfilter(im, F);……即前一次滤波的结果又作为第二次滤波的输入参数。这样迭代多次,观察效果,并选择出迭代次数以及和Size,Sigma两个参数的最佳搭配值。
四、分析与思考
【在此描述下你从该实验中得出的结论,并对实验结果进行分析,解释下为什么高斯滤波器可以去除噪声,可以查阅资料。】
此次试验,学习了如何使用Matlab对图像进行处理(展示图像、放大图像、缩小图像、噪声处理等)。还学习了高斯滤波器,高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像,其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出。
附录:代码汇总(ex1.m)
%--------步骤3--------
x = imread('E:/zunlong.jpg'); % 读取图片:将图像数据读取到Matlab环境中
imshow(x); % 显示图片
% 警告: Image is too big to fit on screen; displaying at 8%
% > In imuitools\private\initSize at 71
% In imshow at 282
%--------步骤3--------
smallx = imresize(x, 0.5); %在保持图像形状的基础上对图像的大小进行改变
figure, imshow(smallx); % 显示图片
% --------步骤4--------
x = imread('E:/zunlong.jpg'); % 读取图片:将图像数据读取到Matlab环境中
smallx = imresize(x, 0.5); %在保持图像形状的基础上对图像的大小进行改变
noise_x = imnoise(smallx, 'gaussian'); % 噪声处理 对刚刚读取到的照片添加一定量的噪声,其中,im代表刚刚读取到的图像;
figure, imshow(noise_x); % figure: 生成新的图片窗口,不覆盖原窗口
% --------步骤5--------
F = fspecial('gaussian', 5, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
%--------步骤6--------
x = imread('E:/zunlong.jpg'); % 读取图片:将图像数据读取到Matlab环境中
smallx = imresize(x, 0.5); %在保持图像形状的基础上对图像的大小进行改变
noise_x = imnoise(smallx, 'gaussian'); % 噪声处理 对刚刚读取到的照片添加一定量的噪声,其中,im代表刚刚读取到的图像;
F = fspecial('gaussian', 5, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im1 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
imshow(new_im1); % figure,
F = fspecial('gaussian', 50, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im2 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
imshow(new_im2); % figure,
F = fspecial('gaussian', 50, 30); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im3 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
imshow(new_im3); % figure,
subplot(2,2,1);imshow(x);title('原图');
subplot(2,2,2);imshow(smallx);title('缩小至原来的0.05倍');
subplot(2,2,3);imshow(imnoise(x, 'gaussian'));title('加噪');
subplot(2,2,4);imshow(imfilter(noise_x, fspecial('gaussian', 5, 1)));title('滤波处理');
% --------步骤7--------
x = imread('E:/zunlong.jpg'); % 读取图片:将图像数据读取到Matlab环境中
smallx = imresize(x, 0.05); %在保持图像形状的基础上对图像的大小进行改变
noise_x = imnoise(smallx, 'gaussian'); % 噪声处理 对刚刚读取到的照片添加一定量的噪声,其中,im代表刚刚读取到的图像;
F = fspecial('gaussian', 5, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im1 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
subplot(2,2,1), imshow(new_im1),title('原始图像');
F = fspecial('gaussian', 50, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im2 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
subplot(2,2,2), imshow(new_im2),title('Size、Sigma:50、1');
F = fspecial('gaussian', 50, 5); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im3 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
subplot(2,2,3), imshow(new_im3),title('Size、Sigma:50、5');
F = fspecial('gaussian', 100, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im4 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
subplot(2,2,4), imshow(new_im4),title('Size、Sigma:100、1');
%--------步骤8--------
x = imread('E:/zunlong.jpg'); % 读取图片:将图像数据读取到Matlab环境中
smallx = imresize(x, 0.5); %在保持图像形状的基础上对图像的大小进行改变
noise_x = imnoise(smallx, 'gaussian'); % 噪声处理 对刚刚读取到的照片添加一定量的噪声,其中,im代表刚刚读取到的图像;
F = fspecial('gaussian', 50, 1); % F = fspecial('gaussian', Size, Sigma);生成一个高斯滤波器
new_im5 = imfilter(noise_x, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
figure, imshow(new_im5);
new_im6 = imfilter(new_im5, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
figure, imshow(new_im6);
new_im7 = imfilter(new_im6, F); % new_im = imfilter(noise_im, F)函数对添加了噪声的图像进行滤波操作
figure, imshow(new_im7);
🤣多谢观看、