预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响 到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过 程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高 斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑 图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊, 可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号 处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域, 一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度 值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗 口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂 度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法, 是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声 效果明显。 实验一:均值滤波对高斯噪声的效果 I=imread('C:\DocumentsandSettings\Administrator\桌面\1.gif');%读取 图像 J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声 subplot(2,3,1);imshow(I); title('原始图像'); subplot(2,3,2);imshow(J); title('加入高斯噪声之后的图像'); %采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255;%模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;%模板尺寸为5 K3=filter2(fspecial('average',7),J)/255;%模板尺寸为7 K4=filter2(fspecial('average',9),J)/255;%模板尺寸为9 subplot(2,3,3);imshow(K1); title('改进后的图像1'); subplot(2,3,4);imshow(K2); title('改进后的图像2'); subplot(2,3,5);imshow(K3); title('改进后的图像3'); subplot(2,3,6);imshow(K4); title('改进后的图像4'); PS :filter2用法:filter2用法fspecial函数用于创建预定义的滤波算子,其语法格式为: h=fspecial(type) h=fspecial(type,parameters) 参数type制定算子类型,parameters指定相应的参数,具体格式为: type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值 为[3,3]。 type='gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值 为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为 0.5。 type='laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的 形状,取值范围为[0,1],默认值为0.2。 type='log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为 [3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5 type='prewitt',为prewitt算子,用于边缘增强,无参数。 type='sobel',为著名的sobel算子,用于边缘提取,无参数。 type='unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状, 范围为[0,1],默认值为0.2。 据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越 好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据 来度量。 实验二:二维自适应维纳滤波对高斯噪声的滤除效果 I=imread('C:\DocumentsandSettings\Administrator\桌面\1.gif');%读取