资源描述
高斯平滑滤波实验报告 一,实验要求实现高斯平滑滤波器。选择几个不同的(至少5个)对一幅图像进行滤波,观测不同的值对图像的平滑程度(注意取值与窗函数大小的关系)。你将如何为一幅图像选择合适的值? 二,高斯平滑滤波器简介连续高斯函数为。连续的高斯函数图像如图1所示。图1 连续高斯函数离散高斯函数为。一个离散高斯模板如图2所示。图2 离散高斯模板高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。由上面图示可知,高斯函数的特点就是模板中心像素在新像素所占的比重最大,离中心越远的像素在新像素中所占的比重越小。高斯滤波器的系统函数是平滑的,避免了振铃现象。高斯函数具有五个重要性质:1,具有旋转对称性;2,是单值函数;3,其付氏频谱是单瓣的;4,高斯滤波器宽度(决定平滑程度)由参数表征;5,可分离性,大高斯滤波器得以有效实现。三,高斯平滑滤波实现本实验中运用MATLAB来实现对图像的高斯平滑滤波。处理前的图像如图三所示,是图像处理学习中常用的lena图像。图3 原图因为平滑滤波器的作用是消除图像中的噪声,为了更好地检测高斯平滑滤波器的效果,用MATLAB中的noise函数为原图加上高斯噪声,再对其进行处理,如图4所示。图4 加高斯噪声的图像接下来就可以进行高斯平滑滤波了。在MATLAB中,用fspecial函数来生成高斯模板。其使用格式为:f= fspecial(gaussian,3 3,0.5);其中3 3是模板的大小,可以更改,本实验中的模板均为33的;后面的0.5就是的值了。接着用imfilter函数滤波,其使用格式为:img_smooth1 =imfilter(J,f);其中J为待处理的图像,f即为高斯模板。本实验中选择的值为0.5,1,2,4,6,8,10;用MATLAB进行试验来观测滤波结果。实验程序如下:im=imread(lena.bmp);imshow(im,);title(原图);J=imnoise(im,gaussian);figureimshow(J,);title(加高斯噪声图);f1 = fspecial(gaussian,3 3,0.5); img_smooth1 =imfilter(J,f1); figuresubplot 221imshow(img_smooth1,);title(0.5);f2 = fspecial(gaussian,3 3,1);img_smooth2 = imfilter(J,f2); subplot 222imshow(img_smooth2,);title(1);f3 = fspecial(gaussian,3 3,2); img_smooth3 = imfilter(J,f3); subplot 223imshow(img_smooth3,);title(2);f4 = fspecial(gaussian,3 3,4); img_smooth4 = imfilter(J,f4); subplot 224imshow(img_smooth4,);title(4);f5= fspecial(gaussian,3 3,8);img_smooth5 = imfilter(J,f5); figuresubplot 121imshow(img_smooth5,);title(8);f6= fspecial(gaussian,3 3,10);img_smooth6 = imfilter(J,f6); subplot 122imshow(img_smooth6,);title(10);滤波结果如下: 四,实验结果分析: 由实验结果可知,随着值的增大,噪声滤除的越干净,但同时,图像也变得越模糊,轮廓不清晰。当值大于4时,随着值的增加,滤波的效果几乎没有变化。所以要选取合适的值才能使滤波后的图像满足要求,不能太小,否则噪声滤除不干净;也不能太大,太大了图像变模糊,就违反了处理图像的初衷;总之,要在中间选一个折中的值。在选择值时,可以多尝试几个,选择最满意的一个。
展开阅读全文