30分求助高斯滤波器matlab和vc编程设计(好回答追加分)

30分求助高斯滤波器matlab和vc编程设计(好回答追加分),第1张

所谓的过一个滤波,在我们时空域上看就是相邻信号的卷积,高斯滤波器无非是键拿个平滑滤波器。

你前面说信号加噪,是时域和频禅型域的变化。 后面说的图像处理又是空域和频域的变化。不是特别能理解你的意思。

我就按图像处理给你点建议,

读图像进matlab 是 imread函数,自己baidu。

加噪贺亮猜是imnoise。

高斯滤波生成是H = FSPECIAL('gaussian',HSIZE,SIGMA)

最后过滤波用conv2函数。

show_image 显示图像

2. 噪声及其噪声的 Matlab 实现

imnoise 函数

格式:J=imnoise(I,type)

J=imnoise(I,type,parameter)

说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。

加权领域平均算法来进行滤波处理

由实验我们可以看出,一般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不同程度的破坏,都不能达到理想的效果。但是采用加权的邻域平均哪带握算法对图像进行噪声滤除, 不仅能够有效地平滑噪声, 还能够锐化模糊图像的边缘。 加权的邻域平均算法的基本思想是: 在一个邻域行态内, 除了可以利用灰度均值外, 灰度的上偏差和下偏差也能够提供某些局部信息。算法的计算公式描述如下, 用f (x ,y ) 表示原始图像, g (x , y ) 为平滑后点(x , y ) 的灰度值,V x , y 表示以点(x , y ) 为中心的邻域, 该邻域包含N 个象素,m (x , y ) 表示邻域V x , y 内的灰度均值。NI表示邻域内大于平均值的像素个数,Ng表示小于平均值的像素个数,而N0表示等于平均值的像素个数。则修正的邻域平均法由下式给出:

m - A�0�3 m l; N l >max{N g ,N 0}

g(x,y)= m + A�0�3 m g; N g >max{N l ,N 0} (1)

m ;  else

(1)式(1) 中, A为修正系数, 取值范围为0~ 1, 其大小反映V x , y 中的边缘状况。 以上是我认为在图像处理中比较有价值的两点,有兴趣的可以上网查阅相关的资料。

3. 图像滤波的 Matlab 实现

3.1 conv2 函数

功能:计算二维卷积

格式:C=conv2(A,B)

C=conv2(Hcol,Hrow,A)

C=conv2(...,'shape')

说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:

》full 为缺省值,返回二维卷积的全部结果;

》same 返回二维卷积结果中与 A 大小相同的中间部分;

valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。

3.2 conv 函数

功能:计算多维卷积

格式:与 conv2 函数相同

3.3 filter2函数

功能:计算二维线型数字滤波,它与函数 fspecial 连用

格式:Y=filter2(B,X)

Y=filter2(B,X,'shape')

说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大李庆小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:

》full 返回二维相关的全部结果,size(Y)>size(X);

》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;

》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)<size(X) 。

3.4 fspecial 函数

功能:产生预定义滤波器

格式:H=fspecial(type)

H=fspecial('gaussian',n,sigma) 高斯低通滤波器

H=fspecial('sobel') Sobel 水平边缘增强滤波器

H=fspecial('prewitt') Prewitt 水平边缘增强滤波器

H=fspecial('laplacian',alpha) 近似二维拉普拉斯运算滤波器

H=fspecial('log',n,sigma) 高斯拉普拉斯(LoG)运算滤波器

H=fspecial('average',n) 均值滤波器

H=fspecial('unsharp',alpha) 模糊对比增强滤波器

说明:对于形式 H=fspecial(type) ,fspecial 函数产生一个由 type 指定的二维滤波器 H ,返回的 H 常与其它滤波器搭配使用。

高斯低通滤波对图像进行低通滤波代码,这个是灰度图像的

彩色图像就是取出RGB三个分量进行滤波再整合

I1=imread('flower.jpg') %读取图像

I=rgb2gray(I1) %将图像变为灰度图象

%将灰度图像的二维不连续Frourier变换的零频率成分移到频谱的中心

s=fftshift(fft2(I))

[M,N]=size(s)%分别返回s的行数到M中,搜御咐列数到N中

n=2 %对n赋初值

%GLPF滤波,d0=5,15,30(程序中以d0=30为例)

d0=30 %初始化d0

n1=floor(M/2) %对M/2进行取整

n2=floor(N/2) %对N/2进行取整世纯

for i=1:M

for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2)%点(i,j)到傅立叶变换中心的距离

h=1*exp(-1/2*(d^2/d0^2)) %GLPF滤波函数

s(i,j)=h*s(i,j) %GLPF滤波后的频域表示

end

end

s=ifftshift(s) %对s进行反FFT移动

%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数

s=uint8(real(ifft2(s)))

figure %创建图形图拆塌像对象

imshow(s)%显示GLPF滤波处理后的图像

title('GLPF滤波(d0=30)') %为经GLPF滤波后的图像添加标题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12544951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存