matlab图像去噪算法设计(精)
如何在Matlab中进行图像去噪与复原

如何在Matlab中进行图像去噪与复原图像去噪与复原在计算机视觉和图像处理领域有着重要的应用价值。
当图像受到噪声污染或损坏时,我们需要采取适当的方法来还原图像的清晰度和准确性。
在这方面,Matlab作为一种强大的数值计算软件,提供了丰富的图像处理工具和函数,能够帮助我们有效地进行图像去噪和复原。
一、图像去噪方法介绍在进行图像去噪之前,我们需要了解一些常见的图像噪声类型和去噪方法。
常见的图像噪声类型包括高斯噪声、椒盐噪声和泊松噪声等。
对于这些噪声,我们可以采用滤波方法进行去噪处理。
Matlab提供了多种滤波函数,包括均值滤波、中值滤波、高斯滤波等。
这些函数能够基于不同的滤波算法,去除图像中的噪声,提高图像质量。
1.1 均值滤波均值滤波是一种简单的滤波方法,通过计算像素周围邻域的平均灰度值来减小噪声的影响。
在Matlab中,可以使用imfilter函数实现均值滤波。
该函数可以指定滤波器的大小和形状,对图像进行滤波处理。
均值滤波适用于高斯噪声的去除,但对于椒盐噪声等其他类型的噪声效果不佳。
1.2 中值滤波中值滤波是一种非线性滤波方法,通过在像素周围邻域中选择中间灰度值来减小噪声的影响。
在Matlab中,可以使用medfilt2函数实现中值滤波。
该函数可以指定滤波器的大小和形状,对图像进行滤波处理。
中值滤波适用于椒盐噪声的去除,对于高斯噪声等其他类型的噪声有效果不佳。
1.3 高斯滤波高斯滤波是一种线性滤波方法,通过根据像素周围邻域的权重来减小噪声的影响。
在Matlab中,可以使用imgaussfilt函数实现高斯滤波。
该函数可以指定滤波器的大小和标准差,对图像进行滤波处理。
高斯滤波适用于高斯噪声的去除,对于椒盐噪声等其他类型的噪声效果较好。
二、图像复原方法介绍除了去噪,图像复原也是图像处理中常见的任务之一。
图像复原主要是指恢复图像中的缺失或破损的信息,使得图像在视觉上更加清晰和准确。
在Matlab中,可以使用多种方法进行图像复原,包括图像插值、图像修复和图像增强等。
MATLAB中多种图像去噪算法的比较分析

MATLAB中多种图像去噪算法的比较分析在MATLAB中,有多种图像去噪算法可供选择。
这些算法各有优势和劣势,适用于不同的噪声类型和图像特征。
本文将对几种常见的图像去噪算法进行比较分析,包括均值滤波、中值滤波、高斯滤波和小波去噪。
1. 均值滤波均值滤波是最简单的图像去噪算法之一。
它通过计算像素周围邻域的平均值来减少图像中的噪声。
然而,均值滤波在去除噪声的同时也会模糊图像的细节,特别是对于边缘部分的处理效果不佳。
2. 中值滤波中值滤波是一种非线性滤波算法,它通过将像素点邻域内的像素值排序并选择其中的中值来进行去噪。
相比于均值滤波,中值滤波能够更好地保留图像的细节,并且对于椒盐噪声等脉冲噪声具有较好的去除效果。
然而,中值滤波对于高斯噪声等噪声类型的去除效果较差。
3. 高斯滤波高斯滤波是一种基于高斯函数的平滑滤波算法。
它通过将像素点邻域内的像素值与对应的高斯权重进行加权平均来进行去噪。
高斯滤波能够较好地去除高斯噪声,并且保持图像的细节信息。
然而,对于椒盐噪声等脉冲噪声,高斯滤波的效果较差。
4. 小波去噪小波去噪是一种基于小波变换的图像去噪算法。
它通过将图像进行小波分解,对低频分量和高频分量进行独立的去噪处理,然后再进行小波重构。
小波去噪能够同时去除图像中的噪声和保持图像细节,对于各种噪声类型都有较好的去除效果。
然而,小波去噪算法的计算复杂度较高,运行时间较长。
综合比较以上四种图像去噪算法,我们可以根据噪声类型和图像特征选择合适的算法。
如果图像中存在高斯噪声,可以使用高斯滤波进行去噪;如果图像中存在椒盐噪声,可以使用中值滤波进行去噪;如果需要同时去除多种噪声类型并保持图像细节,可以考虑使用小波去噪算法。
此外,在实际应用中,我们还可以通过调整算法参数来进一步优化去噪效果。
例如,对于滤波算法,可以调整滤波器的大小来控制去噪力度;对于小波去噪算法,可以选择不同的小波基函数以适应不同图像特征。
总之,MATLAB中提供了多种图像去噪算法,每种算法都有其适用的场景和优势。
Matlab中的图像去噪技巧概述

Matlab中的图像去噪技巧概述近年来,随着数字图像处理的广泛应用,图像去噪成为了一个重要而热门的研究方向。
在实际应用中,由于图像采集设备的品质、传输媒介的干扰以及图像自身的特性等因素,图像中常常存在着各种噪声,这些噪声会对图像的质量和信息提取造成很大影响。
因此,研究和应用图像去噪技巧成为了提高图像质量和信号处理的关键步骤之一。
Matlab作为图像处理领域广泛使用的工具之一,提供了许多强大的图像处理函数和工具箱,很多图像去噪技巧也可以通过Matlab进行实现。
下面将对Matlab中常用的图像去噪技巧进行概述和介绍。
一、空域图像去噪技巧1. 中值滤波中值滤波是一种简单而有效的空域图像去噪技巧,其原理是使用像素周围邻域内的中值来代替当前像素的值。
这种方法适用于去除椒盐噪声和脉冲噪声,对保留图像细节有一定的效果。
2. 均值滤波均值滤波是一种简单的空域图像去噪技巧,其原理是计算像素周围邻域内像素的平均值,然后将当前像素的值替换为该平均值。
这种方法适用于去除高斯噪声和均匀噪声,但对于椒盐噪声和脉冲噪声的效果较差。
3. 高斯滤波高斯滤波是一种基于高斯模板的线性滤波方法,通过对像素周围邻域内的像素值进行加权平均来达到去噪效果。
这种方法适用于去除高斯噪声,并且在保留图像细节方面比均值滤波效果更好。
二、频域图像去噪技巧1. 傅里叶变换去噪傅里叶变换是一种将信号从时域转换到频域的方法,在频域进行去噪操作后再进行逆傅里叶变换可得到去噪后的图像。
这种方法适用于去除频率特性明显的噪声。
2. 小波变换去噪小波变换是一种多尺度的信号分析方法,能够将信号分解为不同的频带,并对每个频带进行去噪处理。
这种方法适用于去除不同尺度的噪声,并且在保留图像细节方面有一定的优势。
三、专用图像去噪技巧1. 自适应中值滤波自适应中值滤波是一种根据像素邻域内像素的灰度变化情况来动态选择滤波器尺寸的方法,能够在一定程度上保留图像细节,并有效去除椒盐噪声和脉冲噪声。
Matlab图像去噪与图像增强技术解析

Matlab图像去噪与图像增强技术解析Matlab(Matrix Laboratory)是一种强大的数学软件,特别适用于科学与工程领域。
在图像处理方面,Matlab提供了丰富的函数和工具箱,可以用于图像的去噪和增强。
本文将对Matlab图像去噪和图像增强技术进行解析。
一、图像去噪技术图像去噪是图像处理中一个重要的环节,旨在去除图像中的噪声,提高图像的质量和细节。
Matlab提供了多种图像去噪的方法,包括均值滤波、中值滤波、高斯滤波和小波去噪等。
1. 均值滤波均值滤波是一种简单的线性滤波方法,通过计算邻域像素的平均值来去除噪声。
Matlab中可以使用函数`imfilter`来实现均值滤波。
下面是一个示例代码:```img = imread('noisy_image.jpg');filtered_img = imfilter(img, ones(3,3)/9);imshow(filtered_img);```2. 中值滤波中值滤波是一种非线性滤波方法,通过计算邻域像素的中值来去除噪声。
对于椒盐噪声等突发性噪声,中值滤波效果较好。
Matlab中可以使用函数`medfilt2`来实现中值滤波。
下面是一个示例代码:```img = imread('noisy_image.jpg');filtered_img = medfilt2(img, [3,3]);imshow(filtered_img);```3. 高斯滤波高斯滤波是一种基于高斯函数的线性滤波方法,可以有效地去除高斯噪声。
Matlab中可以使用函数`imgaussfilt`来实现高斯滤波。
下面是一个示例代码:```img = imread('noisy_image.jpg');filtered_img = imgaussfilt(img, 2);imshow(filtered_img);```4. 小波去噪小波去噪是一种基于小波变换的非线性滤波方法,可以提取图像的频域信息,并根据阈值去除噪声。
小波变换图像去噪方法MATLAB实现

小波变换图像去噪方法MATLAB实现本文的主要工作是:(1)对各种传统的图像去噪方法用MATLAB实现,并进行对比,总结各种方法的优缺点。
(2)阐述小波变换的发展历程、思想、概念和基于小波变换图像去噪的基本方法。
(3)研究小波分解层数、小波基的选择对图像去噪结果的影响。
(4)用MATLAB编程实现基于小波变换的图像去噪,并计算处理后图像的SNR和MSE。
关键词:图像去噪;小波变换;小波基;分解层数小波阈值去噪的原理从数学角度看小波去噪问题的实质是寻找最佳映射,即寻找从实际信号空间到小波函数空间的最佳映射,从而将原始信号和噪声信号分开,得到原始信号的最佳恢复。
从信号学的角来看,小波去噪实质是一个信号滤波问题,它可以看成是特征提取和低通滤波功能的综合,它既具有传统低通滤波器的功能,还能在去噪后保留信号的特征,其等效框图如下所示:图 3.2 小波去噪等效框小波阈值去噪的步骤如下:(1)根据信号特点和消噪要求选择合适的基小波和分解层数,对含有的噪声信号f(k)作小波变换,得到一组小波系数w j,k 。
图像经过采样后得到一系列的矩阵,然后将图像转换到小波域,此时的图像可以分为一个低通分量LL 和三个高通分量(HL ,LH ,HH),三个高通分量中一个为高通分量部分,剩下两个为次高频部分。
分解过程如下所示:图3.3 图像分解过程f(t)为一维信号,对其进行N 点采样后的离散信号为f(n),N 取0,1,2,...,N-1 ,其小波变换为: Wf (j,k )=2−j 2∑f (n )φ(2−j N−1n=0n −k) (11)其中Wf(j,k)为小波系数,简记为w j,k 。
小波系数可以分为两类:第一类 小波系数仅仅由噪声经过小波变换得到的;第二类 小波系数由信号经过小波变换的来,其中包含有噪声变换的结果。
(2)对w j,k进行阈值处理后得到估计的小波系数ŵj,k,使得‖ŵj,k−u j,k‖尽可能的小。
图像小波变换去噪——MATLAB实现

图像⼩波变换去噪——MATLAB实现clear;[A,map]=imread('C:\Users\wangd\Documents\MATLAB\1.jpg');X=rgb2gray(A);%画出原始图像subplot(2,2,1);imshow(X);title('原始图像');%产⽣含噪图像x=imnoise(X ,'gaussian',0,0.003);%画出含噪图像subplot(2,2,2);imshow(x);title('含噪声图像');%下⾯进⾏图像的去噪处理%⽤⼩波函数sym4对x进⾏2层⼩波分解[c,s]=wavedec2(x,2,'sym4');%提取⼩波分解中第⼀层的低频图像,即实现了低通滤波去噪a1=wrcoef2('a',c,s,'sym4'); % a1为double型数据;%画出去噪后的图像subplot(2,2,3); imshow(uint8(a1)); % 注意 imshow()和image()显⽰图像有区别,imshow()不能显⽰double型数据,必须进⾏转换 uint8(a1);title('第⼀次去噪图像'); % 并且image() 显⽰图像有坐标;%提取⼩波分解中第⼆层的低频图像,即实现了低通滤波去噪%相当于把第⼀层的低频图像经过再⼀次的低频滤波处理a2=wrcoef2('a',c,s,'sym4',2);%画出去噪后的图像subplot(2,2,4); imshow(uint8(a2)); %image(a2);title('第⼆次去噪图像');%保存图像imwrite(x,'C:\Users\wangd\Desktop\2.jpg');imwrite(uint8(a1),'C:\Users\wangd\Desktop\3.jpg'); %imwrite()保存图像,也需要将数据类型转化为uint8imwrite(uint8(a2),'C:\Users\wangd\Desktop\4.jpg');。
基于MATLAB的图像去噪实验报告
实验二图像去噪一、实验目的1. 熟悉图像高斯噪声和椒盐噪声的特点;2. 掌握利用均值滤波和中值滤波去除图像噪声的方法。
二、实验内容1. 打开Matlab 编程环境。
2. 读入图像,在图像上分别添加高斯噪声和椒盐噪声。
3. 显示原图像和噪声图像。
4. 对噪声图像进行均值滤波和中值滤波处理。
5. 显示处理效果图。
三、实验程序及结果1、实验程序m=imread('pout.tif');x=imnoise(m,'salt & pepper',0.02);y=imnoise(m,'gaussian',0,0.01);figure(1)subplot(311)imshow(m);subplot(312)imshow(x)subplot(313)imshow(y);q=filter2(fspecial('average',3),x);w=filter2(fspecial('average',3),y);n=medfilt2(m);figure(2)subplot(311)imshow(uint8(q));subplot(312)imshow(uint8(w));subplot(313)imshow(n);2、实验结果四、实验思考:1. 比较均值滤波和中值滤波的对高斯噪声和椒盐噪声图像的处理效果,分析原理?答:中值滤波对于椒盐噪声效果好,因为椒盐噪声是幅值近似相等但随机分布在不同的位置上,图像中有干净点也有污染点。
中值滤波是选择适当的点来代替污染的点所以处理效果会更好。
由于噪声的均值不为零,所以均值滤波不能很好的去除噪声点。
均值滤波对于高斯噪声效果好,因为高斯噪声的幅值近似于正态分布但是却分布在每个点像素上。
图像中的每个点都是污染点,所以如果采用中值滤波会找不到合适的干净点,由于正态分布的均值为零,所以均值滤波可以削弱噪声。
使用MATLAB进行图像去噪处理的基本原理
使用MATLAB进行图像去噪处理的基本原理图像去噪处理是数字图像处理的一个重要领域,它的目标是从图像中去除噪声,提高图像的质量和清晰度。
在实际应用中,图像往往会受到各种因素的影响而产生噪声,如传感器噪声、信号传输中的干扰等。
为了准确地还原图像的细节和信息,我们需要使用一些图像处理算法,而MATLAB作为一种强大的数学软件,提供了丰富的图像处理工具箱,可以帮助我们实现图像去噪处理。
在使用MATLAB进行图像去噪处理之前,首先需要了解一些基本的原理和概念。
图像噪声可以分为两种类型:加性噪声和乘性噪声。
加性噪声是指噪声与原始图像的像素值相加,而乘性噪声是指噪声与原始图像的像素值相乘。
常见的加性噪声有高斯噪声、盐噪声和椒盐噪声,而乘性噪声则包括了泊松噪声等。
对于加性噪声的去噪处理,最常用的方法是使用滤波器。
滤波器可以通过对图像进行空间域或频域的操作,抑制噪声的同时保留图像的细节。
在MATLAB中,我们可以使用各种滤波器函数,如均值滤波器、中值滤波器、高斯滤波器等。
这些滤波器可以通过对图像的像素进行加权平均、中值选取或高斯加权等方式,来实现对噪声的抑制。
而对于乘性噪声的去噪处理,一种常用的方法是使用非线性滤波器。
非线性滤波器可以通过对图像的像素进行非线性变换,来抑制噪声并保留图像的细节。
在MATLAB中,我们可以使用一些非线性滤波器函数,如中值滤波器、双边滤波器等。
这些滤波器通过对图像的像素进行排序、加权平均等方式,来实现对噪声的抑制。
除了滤波器方法,MATLAB还提供了其他一些图像去噪处理的算法。
例如,基于小波变换的去噪方法可以通过对图像的小波系数进行阈值处理,来实现对噪声的抑制。
MATLAB中的小波变换函数可以将图像分解为不同尺度的频带,然后通过对各个频带的小波系数进行阈值处理,来实现去噪处理。
此外,MATLAB还提供了一些基于统计学原理的去噪方法。
例如,基于最小均方误差的去噪方法可以通过对图像的像素进行统计分析,来估计噪声的概率分布,并通过最小化均方误差的方式,来实现对噪声的抑制。
基于matlab图像处理的去噪处理
基于matlab的图像处理基于matlab图像处理的去噪处理——解图像的运动模糊一( 问题提出:影响图像质量的因素有很多,如亮度,对比度,和噪声等。
而其中的噪声又有椒盐噪声,高斯噪声等几种。
人们在摄影照相过程中,如果相机与被照对象之间有相对运动发生,则所得图片会产生运动模糊,直观上看就是图像不清晰,有拖影,这也是图像噪声的一种。
为提高图像质量解决这样的模糊问题需对图像进行相关的去早处理。
本文选择的是一张汽车车轮的图片如图1所示,很明显图像产生运动模糊,因而要进行去噪处理,要求能较为清晰观察到车轮的形态和螺丝的个数。
图1 汽车车轮二( 噪声分析:图1所示为明显的图像退化,而这种退化的典型的表现为模糊,失真和有噪声,造成过这种退化的原因有很多,具体分析有如下几点:1. 成像系统的像差,畸变和有限带宽造成图像退化;2. 拍摄时,相机与景物之间的相对运动产生的运动模糊;3. 镜头聚焦不准产生的散焦模糊;4. 成像系统中存在的噪声干扰。
可以看出,造成图1图像退化的主要原因是第二点——运动模糊。
三( 选用算法:对运动模糊的噪声处理算法有很多,本文选择维纳滤波法进行去噪。
在使用维纳滤波前首先介绍一个重要概念即PSF,PSF也称为点扩展函数。
在空间领域,PSF 描述了光学系统使一个点光源扩散的程度;PSF使光学转换函数OTF的傅里叶逆变换。
在频域里,OTF描述了一个线性,位置不变的系统对脉冲的相应。
对产生运动模糊图像的处理的实质是用可以描述失真的PSF对模糊图像进行去卷积运算,即卷积的逆运算。
Matlab中通常使用fspecial()函数来创建一个确定类型的PSF即PSF=fspecial('motion',LEN,THETA)其中motion是表示摄像头近似线性移动即选用的滤波器或算子;LEN是移动像素的个数,THETA是移动的角度。
然后用这个PSF对模糊图像进行维纳滤波的处理。
维纳滤波,在matlab中可以调用deconvwnr()函数来实现,是对解运动模糊效果较好的一种去噪方法。
基于MATLAB的掌静脉图像去噪算法研究
基于MATLAB的掌静脉图像去噪算法研究
随着生物识别技术的发展,掌静脉识别技术已经成为了一种较为成熟的生物识别技术。
然而,在掌静脉识别过程中,由于数据采集过程中有可能会受到环境干扰等因素的影响,
掌静脉图像中会出现许多噪点和不规则的干扰线条,这些噪点和干扰线条的存在会影响掌
静脉图像的识别率和可靠性。
因此,对于掌静脉图像的去噪处理显得尤为重要。
本文针对掌静脉图像的去噪问题,提出了一种基于MATLAB的掌静脉图像去噪算法。
该算法主要采用小波变换的方法对掌静脉图像进行处理,具体步骤如下:
1.对原始的掌静脉图像进行灰度化处理,得到灰度图像。
2.对灰度图像进行小波变换,将得到各个频带系数,将高频系数衰减,只保留低频系数。
3.对处理后的小波系数进行反变换,还原出处理后的图像。
4.对还原出的图像进行二值化处理,将掌静脉静脉的部分提取出来。
5.对提取出的静脉部分进行形态学处理,去除图像中的噪点和干扰线条。
6.最终得到掌静脉图像的去噪结果。
为了验证本文算法的有效性和实用性,我们分别采用了两种评价指标来对不同算法进
行了评价,分别是峰值信噪比(PSNR)和结构相似性指标(SSIM)。
实验结果表明,本文算法可以有效地去除掌静脉图像中的噪点和干扰线条,同时,与
传统的去噪方法相比,本文算法在PSNR和SSIM两个评价指标上均有显著的提高。
这说明
我们所提出的算法在掌静脉图像去噪方面具有较好的应用前景和实用价值。
综上所述,本文所提出的基于MATLAB的掌静脉图像去噪算法具有很高的实用性和应用价值,对于提高掌静脉识别的准确率和可靠性具有重要的意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-- -- 数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 实验一:均值滤波对高斯噪声的效果 I=imread('C:\Documents and Settings\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用法 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。 运行效果见图1: --
-- 据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据来度量。 实验二:二维自适应维纳滤波对高斯噪声的滤除效果 I=imread('C:\Documents and Settings\Administrator\桌面\1.gif'); %读取图像 J=imnoise(I,'gaussian',0,0.005); %加入均值为0,方差为0.005的高斯噪声 K2=wiener2(J,[3 3]); %对加噪图像进行二维自适应维纳滤波 K2=wiener2(J,[5 5]); %对加噪图像进行二维自适应维纳滤波 K2=wiener2(J,[7 7]); %对加噪图像进行二维自适应维纳滤波 K2=wiener2(J,[9 9]); %对加噪图像进行二维自适应维纳滤波 subplot(2,3,1);imshow(I); title('原始图像'); subplot(2,3,2);imshow(J); title('加噪图像'); 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('恢复图像3'); PS:维纳滤波的两个函数wiener2与deconvwnr都能够完成维纳滤波的功能, deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,[m,n])返回有噪声图像I经过wierner(维纳)滤波后的图像,[m,n]指定滤波器窗口大小为m*n,默认值为3*3,J=wiener2(I,[m,n],noise)指定噪声的功率,[J,noise]=wiener2(I,[m,n])在图像滤波的同时,返回噪声功率的估计值noise。 imnoise的语法格式为 J = imnoise(I,type) J = imnoise(I,type,parameters) 其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。 参数type和parameters用于确定噪声的类型和相应的参数。 下面的命令是对图像1.gif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示: -- -- 实验三:对加入椒盐噪声的图像分别作均值、中值和维纳滤波 I=imread(1.gif'); J1=imnoise(I,'gaussian',0,0.02); J2=imnoise(I,'salt & pepper',0.02); J3=imnoise(I,'speckle',0.02); 运行效果见图2 I=imread('C:\Documents and Settings\Administrator\桌面\1.gif'); J=imnoise(I,'salt & pepper',0.02); %h=ones(3,3)/9;%产生3*3的全1数组 %B=conv2(J,h);%卷积运算 K2=filter2(fspecial('average',3),J)/255; %均值滤波模板尺寸为3 K= medfilt2(J);%采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波 K1=wiener2(J,[3 3]); %对加噪图像进行二维自适应维纳滤波 subplot(2,3,1);imshow(I); title('原始图像'); -- -- subplot(2,3,2);imshow(J); title('加噪图像'); subplot(2,3,3);imshow(K2); title('均值滤波后的图像'); subplot(2,3,4);imshow(K); title('中值滤波后的图像'); subplot(2,3,5);imshow(K1); title('维纳滤波后的图像'); PS:MATLAB中提供了卷积运算的函数命令conv2,其语法格式为: C = conv2(A,B) C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)。 MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为: Y = filter2(h,X) 其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如: 其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。 Fspecial函数用于创建预定义的滤波算子,其语法格式为: h = fspecial(type) h = fspecial(type,parameters) 参数type制定算子类型,parameters指定相应的参数,具体格式为前文已有叙述。 ones产生全1数组,zeros产生全零数组。 ones(a,b)产生a行b列全1数组 ones(a)产生a行a列全1叔祖 运行效果见图3: