高斯平滑滤波器(含matlab代码)(数据参考)

合集下载

matlab滤波器代码

matlab滤波器代码

数字信号处理:已知通带截止频率fp=5kHz,通带最大衰减ap=2dB,阻带截止频率fs=2kHz,阻带最小衰减as=30dB,按照以上技术指标设计巴特沃斯低通滤波器:wp=2*pi*5000;ws=2*pi*12000;Rp=2;As=30;[N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');k=0:511;fk=0:14000/512:14000;wk=2*pi*fk;Hk=freqs(B,A,wk);subplot(2,2,1);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,14,-40,5])切比雪夫1型低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N1,wpl]=cheb1ord(wp,ws,Rp,As,'s');%cheb1ord,里面的是1,不是L[B1,A1]=cheby1(N1,Rp,wpl,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])椭圆模拟低通滤波器:wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60;[N,wpo]=ellipord(wp,ws,Rp,As,'s');[B,A]=ellip(N,Rp,As,wpo,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;Hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(Hk)));grid onxlabel('频率(kHz)');ylabel('幅度(dB)')axis([0,12,-70,5])p195-14wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=buttord(wp,ws,rp,rs);[B,A]=butter(N,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on P195-16wp=2*325/2500;ws=2*225/2500;rp=1;rs=40;[N,wc]=ellipord(wp,ws,rp,rs);[B,A]=ellip(N,rp,rs,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid onP195-15wp=2*4/80;ws=2*20/80;rp=0.5;rs=45;[N,wc]=cheb1ord(wp,ws,rp,rs);[B,A]=cheby1(N,rp,wc);[hk,wk]=freqz(B,A);fk=wk/pi*40;plot(fk,20*log10(abs(hk)));axis([0,30,-100,0])xlabel('频率(kHZ)');ylabel('幅度(db)');grid on 切比雪夫低通滤波器wp=2*pi*3000;ws=2*pi*12000;rp=0.1;as=60;[N1,wp1]=cheb1ord(wp,ws,rp,as,'s');[B1,A1]=cheby1(N1,rp,wp1,'s');subplot(2,2,1);fk=0:12000/512:12000;wk=2*pi*fk;hk=freqs(B1,A1,wk);plot(fk/1000,20*log10(abs(hk)));grid onxlabel('频率(kHZ)');ylabel('幅度(db)');axis([0,12,-70,5])双音频检测audiofile='test.wav'[in_audio,fs,bits]=wavread(audiofile); [b,a]=cheby1(5,0.1,0.3);out_audio=filter(b,a,in_audio);sound(out_audio,fs,bits);wavwrite(out_audio,fs,bits,'test_out'); xk1=fft(in_audio,512);xk2=fft(out_audio,512);subplot(2,1,1);stem(abs(xk1));subplot(2,1,2);stem(abs(xk2));巴特沃斯模拟高通滤波器。

matlab中的高斯滤波 -回复

matlab中的高斯滤波 -回复

matlab中的高斯滤波-回复Matlab中的高斯滤波在数字图像处理中,高斯滤波是一种常用的平滑滤波器,用于减少图像中的噪声,并模糊图像以降低图像的细节。

在Matlab中,实现高斯滤波非常简单,只需要几个简单的步骤。

在本文中,我将一步一步地回答有关Matlab中高斯滤波的问题。

第一步:理解高斯滤波的原理在实施高斯滤波之前,我们首先需要理解高斯滤波的原理。

高斯滤波是一种线性平滑滤波器,它基于高斯核函数,该函数是一个二维正态分布曲线。

高斯核的大小决定了滤波器的模糊程度。

使用高斯滤波器时,图像中每个像素的值都将与其周围像素的值进行加权平均。

权重由高斯核的值决定,越靠近中心像素的像素权重越大。

第二步:导入图像要在Matlab中实现高斯滤波,首先需要导入要处理的图像。

这可以通过使用imread函数来完成。

下面是一个示例代码,用于导入名为lena.png 的图像。

img = imread('lena.png');第三步:选择合适的滤波器大小选择适当的滤波器大小对于高斯滤波至关重要。

滤波器的大小通常是一个奇数,以确保有一个中心像素。

通常情况下,滤波器的大小应根据图像的大小和噪声级别进行调整。

较大的滤波器大小将导致更强的模糊效果,但也会模糊图像的细节。

下面是一个选择滤波器大小的示例代码:matlabfilterSize = 5;第四步:计算高斯滤波器在Matlab中,可以使用fspecial函数来计算高斯滤波器。

该函数需要两个参数:滤波器类型和滤波器大小。

滤波器类型可以是'gaussian'或'Gaussian',滤波器大小应该是一个奇数。

下面是一个使用fspecial函数计算高斯滤波器的示例代码:h = fspecial('gaussian', filterSize);第五步:应用高斯滤波器将高斯滤波器应用于图像的过程非常简单。

可以使用imfilter函数来实现。

去除高斯噪声的matlab代码

去除高斯噪声的matlab代码

去除高斯噪声的matlab代码(最新版)目录1.介绍高斯噪声2.解释去除高斯噪声的方法3.提供 MATLAB 代码示例4.总结正文1.介绍高斯噪声高斯噪声是一种常见的随机噪声,具有对称的高斯分布特性。

在信号处理领域,高斯噪声常常会对信号的质量和可靠性产生影响,因此去除高斯噪声是一项重要的任务。

2.解释去除高斯噪声的方法去除高斯噪声的方法有很多,其中一种常见的方法是使用滤波器。

滤波器可以根据信号的特性设计,以去除噪声。

常见的滤波器类型包括低通滤波器、高通滤波器和带通滤波器。

3.提供 MATLAB 代码示例以下是一个使用 MATLAB 去除高斯噪声的示例代码:```matlab% 生成带有高斯噪声的信号= 100;t = (0:n-1)"/n;s = 3*sin(2*pi*10*t) + 2*cos(2*pi*30*t) + 0.1*randn(n,1);% 使用低通滤波器去除高斯噪声fs = 100; % 采样频率[n, f] = freqz(s, 1, n); % 计算信号的频率响应f = f(1:n/2); % 提取频率[b, a] = butter(2, f); % 设计低通滤波器s_filtered = filter(b, a, s);% 绘制原始信号和滤波后的信号figure;subplot(2,1,1); plot(t, s); title("原始信号");xlabel("时间 (s)");ylabel("幅值");subplot(2,1,2); plot(t, s_filtered); title("滤波后的信号");xlabel("时间 (s)");ylabel("幅值");```在这个示例中,我们首先生成了一个带有高斯噪声的信号。

然后,我们使用低通滤波器去除噪声。

matlab做gaussian高斯滤波

matlab做gaussian高斯滤波

matlab做gaussian⾼斯滤波核⼼提⽰在Matlab中⾼斯滤波⾮常⽅便,主要涉及到下⾯两个函数:函数: fspecial函数: imfilter代码实现clear all;clc;%----------------------------------------------%对图像进⾏⾼斯滤波,并显⽰图像%----------------------------------------------%读进图像[filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif'; '*.png' }, '选择图⽚');%没有图像if filename == 0return;endImage = imread([pathname, filename]);[m, n, z] = size(Image);%转换为灰度图if z>1Image = rgb2gray(Image);endsigma = 1;gausFilter = fspecial('gaussian', [5,5], sigma);gaus= imfilter(Image, gausFilter, 'replicate');%显⽰图像-----------------------figure(1)subplot(1,2,1);imshow(Image);title('原图像');subplot(1,2,2);imshow(gaus);title('滤波后');效果展⽰————————————————版权声明:本⽂为CSDN博主「祥知道」的原创⽂章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原⽂出处链接及本声明。

原⽂链接:https:///humanking7/article/details/46826105Gauss滤波快速实现⽅法(转) ⼆维⾼斯函数具有旋转对称性,处理后不会对哪⼀个⽅向上的边缘进⾏了过多的滤波,因此相对其他滤波器,具有⽆法⽐拟的优越性。

matlab中的高斯滤波 -回复

matlab中的高斯滤波 -回复

matlab中的高斯滤波-回复Matlab中的高斯滤波引言:数字图像处理是一门研究如何通过计算机对数字图像进行处理的学科。

在数字图像处理中,滤波是一种常见的技术,可以用于增强图像的质量、去除图像中的噪声、边缘检测等。

高斯滤波是一种常用的线性平滑滤波器之一,它能够有效地消除图像中的高频噪声,模糊图像并保留图像的边缘信息。

本文将详细介绍Matlab中的高斯滤波技术,并提供一步一步的解释和示例代码,帮助读者更好地理解和应用高斯滤波。

第一部分:理论介绍高斯滤波是一种基于高斯函数的滤波技术,其目标是对图像进行平滑处理,以减少噪声和细节信息。

高斯函数是一种钟形曲线,它具有以下特点:1. 对称性:函数在均值处对称,即高斯函数的左右两侧是完全对称的;2. 单峰性:函数只有一个峰值点,均值等于峰值点的位置;3. 零均值:函数的均值为0;4. 正定性:函数的值始终大于等于0。

在高斯滤波中,我们通过应用高斯函数的离散近似来模糊图像。

该函数的离散近似是一个离散的高斯核,用于表示在图像的每个像素点周围的权重。

第二部分:Matlab中的高斯滤波函数Matlab是一种强大的数值计算和科学计算环境,它提供了许多内置的函数和工具箱,可以轻松实现高斯滤波。

其中,"imgaussfilt"是Matlab中用于执行高斯滤波的函数之一。

该函数的基本语法如下:filtered_image = imgaussfilt(original_image, sigma);- "original_image"是输入图像,可以是灰度图像或彩色图像;- "sigma"是高斯核的标准差,用于控制滤波器的模糊程度。

较小的标准差会产生较强的模糊效果,较大的标准差会产生较弱的模糊效果。

此外,还可以使用其他可选参数来调整滤波器的行为:- "FilterSize":指定高斯核的大小,默认为3。

高斯滤波原理

高斯滤波原理

高斯滤波原理高斯滤波是数字图像处理中常用的一种平滑滤波方法,其原理基于高斯函数的特性,能够有效地去除图像中的噪声,使图像更加清晰和平滑。

在本文中,我们将详细介绍高斯滤波的原理及其在图像处理中的应用。

首先,我们来了解一下高斯函数的特性。

高斯函数是一种常见的连续概率分布函数,其数学表达式为:\[G(x, y) = \frac{1}{2\pi\sigma^2}e^{-(x^2+y^2)/2\sigma^2}\]其中,\(G(x, y)\)表示二维高斯函数的取值,\(x\)和\(y\)分别表示空间中的坐标,\(\sigma\)表示标准差。

高斯函数的主要特点是中心点取值最大,并且随着距离中心点的增加而逐渐减小,呈现出圆形的分布特性。

在图像处理中,高斯滤波的原理就是利用高斯函数的特性对图像进行平滑处理。

具体来说,对于图像中的每一个像素点,通过与其周围像素点的加权平均来得到新的像素值,而这里的权重就是由高斯函数计算得到的。

这样一来,图像中的噪声就会被有效地抑制,从而达到平滑处理的效果。

在实际应用中,高斯滤波通常会通过卷积操作来实现。

对于图像中的每一个像素点,都会构建一个与其周围像素点对应的高斯权重矩阵,然后将这个权重矩阵与原始图像进行卷积运算,得到新的像素值。

通过这样的操作,图像中的噪声就会逐渐被模糊掉,从而使图像变得更加清晰和平滑。

需要注意的是,高斯滤波的效果受到标准差参数\(\sigma\)的影响。

当\(\sigma\)较小的时候,高斯函数的曲线会更加陡峭,这样会使得平滑效果更加明显,但也容易造成图像细节的丢失;而当\(\sigma\)较大的时候,高斯函数的曲线会更加平缓,这样会保留更多的图像细节,但平滑效果可能不够明显。

因此,在实际应用中,需要根据具体的图像特点和处理需求来选择合适的\(\sigma\)值。

总的来说,高斯滤波是一种常用且有效的图像平滑处理方法,其原理基于高斯函数的特性,通过对图像进行加权平均来去除噪声,使图像更加清晰和平滑。

滤波matlab代码

滤波matlab代码

滤波matlab代码滤波是信号处理中常用的技术,用于去除信号中的噪声或者滤波信号以得到感兴趣的频率成分。

在MATLAB中,有多种滤波函数可以使用,例如`filter`、`designfilt`和`fir1`等。

本文将介绍这些函数的用法和原理,并通过实例说明如何使用MATLAB进行滤波。

我们来介绍一下`filter`函数。

该函数可以用于实现各种滤波器,如低通滤波器、高通滤波器和带通滤波器等。

其基本语法为:```Matlaby = filter(b,a,x)```其中,`b`和`a`是滤波器的系数,`x`是输入信号的向量。

这个函数将输出滤波后的信号`y`。

接下来,我们来看一个实例。

假设我们有一个包含噪声的信号`x`,我们希望通过低通滤波器来去除噪声。

我们可以使用`filter`函数来实现这个功能。

首先,我们需要设计一个低通滤波器的系数。

可以使用`fir1`函数来设计一个FIR滤波器的系数。

例如,我们可以使用以下代码来设计一个阶数为10的低通滤波器:```Matlaborder = 10; % 滤波器阶数cutoff = 0.2; % 截止频率b = fir1(order, cutoff);```然后,我们可以使用这个滤波器对信号进行滤波:```Matlaby = filter(b, 1, x);```这样,我们就得到了滤波后的信号`y`。

除了`filter`函数,MATLAB还提供了`designfilt`函数用于设计各种类型的滤波器。

该函数可以设计IIR滤波器、带通滤波器、带阻滤波器等。

使用`designfilt`函数需要指定滤波器的类型、阶数以及其他参数。

例如,我们可以使用以下代码来设计一个IIR低通滤波器:```Matlaborder = 6; % 滤波器阶数cutoff = 0.2; % 截止频率d = designfilt('lowpassiir', 'FilterOrder', order, 'PassbandFrequency', cutoff);```然后,我们可以使用这个滤波器对信号进行滤波:```Matlaby = filter(d, x);```同样地,我们得到了滤波后的信号`y`。

高斯滤波器特性演示

高斯滤波器特性演示

—— a=0.25,Bb=2.4 —— a=0.5,Bb=1.2 —— a=1,Bb=0.6 —— a=2,Bb=0.3
t1=-1.5:0.01:1.5; t2=-0.5:0.01:0.5;b1=ones(1,length(t2)); y1=sqrt(pi)/0.25*exp(-((pi*t1).^2)/0.25.^2); z1=0.5*(erfc(pi/0.25*(t1-0.5))-erfc(pi/0.25*(t1+0.5))); y2=sqrt(pi)/0.5*exp(-((pi*t1).^2)/0.5.^2); z2=0.5*(erfc(pi/0.5*(t1-0.5))-erfc(pi/0.5*(t1+0.5))); y3=sqrt(pi)*exp(-(pi*t1).^2); z3=0.5*(erfc(pi*(t1-0.5))-erfc(pi*(t1+0.5))); y4=sqrt(pi)/2*exp(-((pi*t1).^2)/2.^2); z4=0.5*(erfc(pi/2*(t1-0.5))-erfc(pi/2*(t1+0.5))); subplot(3,1,1),plot(t2,b1);axis([-1.5 1.5 0 1.5]);xlabel('t/T');ylabel('b(t)'); title('rect impulse input of Gaussian pulse shaping filter'); subplot(3,1,2),plot(t1,y1,'r',t1,y2,'g',t1,y3,'b',t1,y4,'m'); xlabel('t/T');ylabel('h(t)');title('impulse response of Gaussian pulse shaping filter'); subplot(3,1,3),plot(t1,z1,'r',t1,z2,'g',t1,z3,'b',t1,z4,'m');xlabel('t/T');ylabel('g(t)'); title('output (rect impulse response) of Gaussian pulse shaping filter');
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Gaussian Smoothing Filter高斯平滑滤波器一、图像滤波的基本概念图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值.而脉冲噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声).与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声.研究滤波就是为了消除噪声干扰。

图像滤波总体上讲包括空域滤波和频域滤波。

频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。

它是一种邻域运算,即输出图像中任何像素的值都是通过采用一定的算法,根据输入图像中对用像素周围一定邻域内像素的值得来的。

如果输出像素是输入像素邻域像素的线性组合则称为线性滤波(例如最常见的均值滤波和高斯滤波),否则为非线性滤波(中值滤波、边缘保持滤波等)。

线性平滑滤波器去除高斯噪声的效果很好,且在大多数情况下,对其它类型的噪声也有很好的效果。

线性滤波器使用连续窗函数内像素加权和来实现滤波。

特别典型的是,同一模式的权重因子可以作用在每一个窗口内,也就意味着线性滤波器是空间不变的,这样就可以使用卷积模板来实现滤波。

如果图像的不同部分使用不同的滤波权重因子,且仍然可以用滤波器完成加权运算,那么线性滤波器就是空间可变的。

任何不是像素加权运算的滤波器都属于非线性滤波器.非线性滤波器也可以是空间不变的,也就是说,在图像的任何位置上可以进行相同的运算而不考虑图像位置或空间的变化。

二、图像滤波的计算过程分析滤波通常是用卷积或者相关来描述,而线性滤波一般是通过卷积来描述的。

他们非常类似,但是还是会有不同。

下面我们来根据相关和卷积计算过程来体会一下他们的具体区别:卷积的计算步骤:(1)卷积核绕自己的核心元素顺时针旋转180度(2)移动卷积核的中心元素,使它位于输入图像待处理像素的正上方(3)在旋转后的卷积核中,将输入图像的像素值作为权重相乘(4)第三步各结果的和做为该输入像素对应的输出像素相关的计算步骤:(1)移动相关核的中心元素,使它位于输入图像待处理像素的正上方(2)将输入图像的像素值作为权重,乘以相关核(3)将上面各步得到的结果相加做为输出可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。

而计算相关过程中不需要旋转相关核。

例如:magic(3) =[8 1 6;3 5 7;4 9 2],旋转180度后就成了[2 9 4;7 5 3;6 1 8]三、高斯(核)函数所谓径向基函数(Radial Basis Function 简称RBF), 就是某种沿径向对称的标量函数。

通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数, 可记作k(||x-xc||), 其作用往往是局部的, 即当x远离xc时函数取值很小。

最常用的径向基函数是高斯核函数,形式为k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc为核函数中心,σ为函数的宽度参数, 控制了函数的径向作用范围。

高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用.这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了工程人员的有效使用.高斯函数具有五个十分重要的性质,它们是:(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向.(2)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真.(3)高斯函数的付立叶变换频谱是单瓣的.正如下面所示,这一性质是高斯函数付立叶变换等于高斯函数本身这一事实的直接推论.图像常被不希望的高频信号所污染(噪声和细纹理).而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量.高斯函数付立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号.(4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷.(5)由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积.因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长.四、高斯平滑滤波器的设计高斯函数的最佳逼近由二项式展开的系数决定,换句话说,用杨辉三角形(也称Pascal三角形)的第n行作为高斯滤波器的一个具有n个点的一维逼近,例如,五点逼近为: 1 4 6 4 1它们对应于Pascal三角形的第5行.这一模板被用来在水平方向上平滑图像.在高斯函数可分离性性质中曾指出,二维高斯滤波器能用两个一维高斯滤波器逐次卷积来实现,一个沿水平方向,一个沿垂直方向.实际中,这种运算可以通过使用单个一维高斯模板,对两次卷积之间的图像和最后卷积的结果图像进行转置来完成.这一技术在模板尺寸N约为10时的滤波效果极好.对较大的滤波器,二项式展开系数对大多数计算机来说都太多.但是,任意大的高斯滤波器都能通过重复使用小高斯滤波器来实现.高斯滤波器的二项式逼近的σ可用高斯函数拟合二项式系数的最小方差来计算.设计高斯滤波器的另一途径是直接从离散高斯分布中计算模板权值。

为了计算方便,一般希望滤波器权值是整数。

在模板的一个角点处取一个值,并选择一个K使该角点处值为1。

通过这个系数可以使滤波器整数化,由于整数化后的模板权值之和不等于1,为了保证图像的均匀灰度区域不受影响,必须对滤波模板进行权值规范化。

高斯滤波器的采样值或者高斯滤波器的二项式展开系数可以形成离散高斯滤波器.当用离散高斯滤波器进行卷积时,其结果是一个更大的高斯离散滤波器.若一幅图像用N*N离散高斯滤波器进行平滑,接着再用M*M离散高斯滤波器平滑的话,那么平滑结果就和用(N+M-1)*(N+M-1)离散高斯滤波器平滑的结果一样.换言之,在杨辉三角形中用第N行和第M 行卷积形成了第N+M-1行.五、具体实现二维高斯函数:2222222),(σσr y x Ae Ae y x G -+-== 当时, ; 时, 一般用宽度小于的滤波器,即 当 时,由连续Gaussian 分布求离散模板,需采样、量化,并使模板归一化。

举例结果如下:图1 原图像lenna 图1 有噪声的lenna图中的噪声是高斯白噪声。

图3 高斯滤波,σ2=1选取不同参数σ的高斯滤波模板,平滑的效果是有差别的,实际上σ越大其作用域就越宽,即平滑窗口越大,因而平滑的力度就越大,其结果使得图象变得越模糊。

当σ很大时,由于量化的影响,高斯滤波实际上就变成邻域平均了。

该图使用σ2=1即模板尺度为5x5的高斯滤波器。

图4 高斯滤波,σ2=3可以看到高斯滤波虽然能够在一定程度上去掉噪声,但也使得图象变得模糊不清,效果并不能令人满意。

该图使用σ2=3即模板尺度为13x13的高斯滤波器。

图象变得更模糊些。

MATLAB 程序:%%%%%%%%%%%%% The main.m file %%%%%%%%%%%%%%%clc;% Parameters of the Gaussian filter:n1=5;sigma1=3;n2=5;sigma2=3;theta1=0;[w,map]=imread('lenna.gif');x=ind2gray(w,map);filter1=d2gauss(n1,sigma1,n2,sigma2,theta1);y=imnoise(x,'gauss',0.01);f1=conv2(x,filter1,'same');rf1=conv2(y,filter1,'same');figure(1);subplot(2,2,1);imagesc(x);title('lenna');subplot(2,2,2);imagesc(y);title('noisy lenna');subplot(2,2,3);imagesc(f1);title('smooth');subplot(2,2,4);imagesc(rf1);title('noise cancel');colormap(gray);%%%%%%%%%%%%%% End of the main.m file %%%%%%%%%%%%%%%% Function "d2gauss.m":% This function returns a 2D Gaussian filter with size n1*n2; theta is% the angle that the filter rotated counter clockwise; and sigma1 and sigma2% are the standard deviation of the Gaussian functions.function h = d2gauss(n1,std1,n2,std2,theta)r=[cos(theta) -sin(theta);sin(theta) cos(theta)];for i = 1 : n2for j = 1 : n1u = r * [j-(n1+1)/2 i-(n2+1)/2]';h(i,j) = gauss(u(1),std1)*gauss(u(2),std2);endendh = h / sqrt(sum(sum(h.*h)));% Function "gauss.m":function y = gauss(x,std)y = exp(-x^2/(2*std^2)) / (std*sqrt(2*pi));%%%%%%%%%%%%%% End of the functions %%%%%%%%%%%%%%%%。

相关文档
最新文档