数字信号处理matlab实验报告材料:数字信号处理实验3

 ___计算机__学院_网络工程__专业___3__班 学号_3116005027__

 ________铠光________ 教师评定_________________

 实验题目___________数字信号处理实验_____________

 实验三、FIR数字滤波器设计

 一、实验目的1、熟悉FIR滤波器的设计过程。

 2、能够根据滤波器设计指标设计不同的滤波器。

 3、熟悉FDATool,SPTool的一般操作。

 二、实验环境

 Matlab信号处理工具箱。

 三、实验容

 1、用模拟原型法设计法与窗函数法分别设计一个IIR和FIR低通滤波器F1, F2,并满足性能指标:通带归一化频率wp=0.5,阻带归一化频率ws=0.6,阻带衰减不小于40dB,通带波纹不大于3dB。假设一个信号S,其中f1=8Hz,f2=21Hz。信号采样频率为50Hz。试将原信号与通过滤波器的信号进行比较。

 要求:画出滤波器的幅频相应图,滤波前后对比图。

 wp=0.5*pi;ws=0.6*pi;rs=40;rp=3;

 T=0.02;Nn=128; %采样间隔

 wp=wp/T;ws=ws/T;

 [N,Wn]=buttord(wp,ws,rp,rs,'s'); %计算模拟滤波器的最小阶数

 [z,p,k]=buttap(N); %设计低通原型数字滤波器

 [Bap,Aap]=zp2tf(z,p,k); %零点极点增益形式转换为传递函数形式

 [b,a]=lp2lp(Bap,Aap,Wn);%低通滤波器的频率转换

 [bz,az]=impinvar(b,a,1/T);%脉冲响应不变法设计数字滤波器传递函数

 figure(1)

 [H,f]=freqz(bz,az,Nn,1/T);%输出幅频响应和相频响应

 subplot(2,1,1),plot(f,20*log10(abs(H)))

 xlabel('频率/Hz');ylabel('振幅/dB');grid on;

 subplot(2,1,2),plot(f,180/pi*unwrap(angle(H)))

 xlabel('频率/Hz');ylabel('相位/^o');grid on;

 figure(2)

 f1=8;f2=21;%输入信号含有的频率

 N=100;%数据点数

 dt=T;n=0:N-1;t=n*dt; %时间序列

 x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t);%输入信号

 subplot(2,1,1),plot(t,x),title('输入信号')

 y=filtfilt(bz,az,x);%对信号进行滤波

 subplot(2,1,2),plot(t,y),title('输出信号'),xlabel('时间/s')

 wp=0.5*pi;ws=0.6*pi;%滤波器边界频率

 wdelta=ws-wp;%过渡带宽

 N=ceil(8*pi/wdelta)%计算滤波器所用窗函数最小长度

 Nw=N;

 wc=(wp+ws)/2; %截止频率在同带和阻带边界的中点

 n=0:N-1;

 alpha=(N-1)/2; %求滤波器的相位延迟

 m=n-alpha+eps; %eps为MATLAB系统的精度

 hd=sin(wc*m)./(pi*m); %求理想滤波器脉冲响应

 win=hanning(Nw); %采用汉宁窗

 h=hd.*win'; %在时间域乘积对应于频率域的卷积

 b=h;

 figure(1)

 [H,f]=freqz(b,1,512,50);%采用50Hz的采样频率画出该滤波器的幅频和相频响应

 subplot(2,1,1),plot(f,20*log10(abs(H)))

 xlabel('频率/Hz');ylabel('振幅/dB');grid on;

 f1=8;f2=21; %检测输入信号含有两种频率成分

 dt=0.02;t=0:dt:3; %采样间隔和检测信号的时间序列

 x=sin(2*pi*f1*t)+cos(2*pi*f2*t); %检测信号

 y=filter(b,1,x); %给出滤波器的输出

 figure(2)

 subplot(2,1,1),plot(t,x),title('输入信号')

 subplot(2,1,2),plot(t,y)

 hold on;plot([1 1]*(N-1)/2*dt,ylim,'r')

 xlabel('时间/s'),title('输出信号');

 2、在Workspace生成上面的原始信号S(即8Hz与21Hz组成的信号),利用SPTool导入该信号,调用FDATool设计题1的滤波器F。用滤波器F对信号F做滤波处理。

 要求:记录用SPTool及FDATool设计滤波器,滤波,显示滤波效果的全过程。

 _计算机__学院 网络工程 专业_3___班 学号 3116005027

  铠光 教师评定_________________

 实验题目___________数字信号处理实验_____________

 实验四、二维信号低通滤波

 一、实验目的1、熟悉二维低通滤波器的设计过程。

 2、能够根据噪声表现情况选择不同的滤波器器进行滤波处理。

 3、熟悉Matlab图像处理工具的一般操作。

 二、实验环境

 Matlab图像处理工具箱。

 三、实验容

 1、设计三个不同权值的3*3低通滤波器对SaltPapperNoise.tif与GaussianNoise.tif进行处理,并简述实验结果不同的原因。(自己编写卷积过程的加10分)

 图1 SaltPapperNoise.tif 图2 GaussianNoise.tif

 均值滤波器(average_filter.m)

 %3*3 均值滤波器实现函数

 function d = average_filter( picture ,a)%a为不同权值矩阵

 [hight, width]=size(picture); %输入图像是hight x width

 x1=double(picture);

 x2=x1;

 a_sum=sum(sum(a))

 for i=1:hight-2 %最后一列不用计算

  for j=1:width-2 %最后一行不用计算

  c=x1(i:i+2,j:j+2).*a;%取出x1中从(i,j)开始的n行n列元素与模板相乘

  s=sum(sum(c)); %求c矩阵中各元素之和

  x2(i+1,j+1)=s/a_sum; %将与模板运算后的各元素的均值赋给模板中心位置的元素

  end

 end

 %为被赋值的元素取原值

 d=uint8(x2);

 end

 中值滤波器(mid_filter.m)

 %3*3 中值滤波器函数

 function d = mid_filter(x)

 [height, width]=size(x); %输入图像是hight x width

 x1=double(x);

 x2=x1;

 for i=1:height-2%最后一列不用计算

  for j=1:width-2%最后一行不用计算

  c=x1(i:i+2,j:j+2); %取出x1中从(i,j)开始的3行3列元素,即模板(3×3的)

  e=[c(1,:),c(2,:),c(3,:)] ; %将c矩阵变为一个行矩阵

  mm=median(e) ; %mm是中值

  x2(i+1,j+1)=mm; %将模板各元素的中值赋给模板中心位置的元素

  end

 end

 %为被赋值的元素取原值

 d=uint8(x2);

 主函数(picture.m)

 J=imread(' C:\Users\yangk\Desktop\666\SaltPapperNoise.tif');%读取图片

 imshow(J)%显示原图

 title('原图')

 a(1:3,1:3)=1; %a即3×3模板,元素全是1

 k=average_filter(J,a);

 figure,imshow(k),title('均值滤波器-1/9')

 a(1:3,1:3)=[1 1 1;1 2 1;1 1 1];

 figure,imshow(k),title('均值滤波器-1/16')

 a(1:3,1:3)=[1 1 1;1 60 1;1 1 1];

 k=average_filter(J,a);

 figure,imshow(k),title('均值滤波器-1/68')

 a(1:3,1:3)=[0 1/4 0;1/4 1 1/4;0 1/4 0];

 结果展示

 椒盐噪声

 高斯噪声

 实验结果不同的原因:

 同一图片间:中心点的权重影响滤波效果,中心点权重越大,通过周围像素点来减弱椒盐噪声和图像模糊化的效果就越差

 不同图片间:均值滤波器通过周围像素点取加权均值来消去噪声,这对椒盐噪声有效,因为椒盐噪声出现位置是随机的,而高斯噪声出现在位置是一定的(每一点上),即周围点都被污染,无法找到足够多的为被噪声干扰的点来消除中心点噪声

 2、(选做题,20分)设计KNN(K=5, 滤波器大小3*3)均值滤波器对上面两副图进行滤波处理,并简述实验结果不同与一般均值滤波器器的处理结果的原因。

 _计算机__学院 网络工程 专业_3___班 学号 3116005027

  铠光 教师评定__________________

 实验题目___________数字信号处理实验_____________

 实验五、二维信号高通滤波、三维图像处理

 一、实验目的1、熟悉二维高通滤波器的设计过程。

 2、能够边缘需求不同,设计不同的高通滤波器器进行滤波处理。

 3、熟悉Matlab图像处理工具的一般操作。

 二、实验环境

 Matlab图像处理工具箱。

 三、实验容

 1、设计水平和垂直方向及Sobel高通滤波器对Building.tif与Cups.tif进行处理,并简述实验结果不同的原因。(自己编写卷积过程的加10分)

 图1 Building.tif 图2 Cups.tif

 实现函数(sharpen_filter.m)

 %3*3 锐化实现函数

 function result = sharpen_filter( picture ,type)

 switch type

  case 'hori'

  dx=[1 2 1;0 0 0;-1 -2 -1]

  d=0

  case 'vert'

  dx=[1 0 -1;2 0 -2;1 0 -1]

  d=0;

  case 'sobel'

  dx=[-1 0 1;-2 0 2;-1 0 1]

  dy=[-1 -2 -1;0 0 0 ;1 2 1]

 end

 [height, width]=size(picture); %输入图像是hight x width

 x1=double(picture);

 x2=x1;

 for i=1:height-2%最后一列不用计算

  for j=1:width-2%最后一行不用计算

  c=x1(i:i+2,j:j+2).*dx;%取出x1中从(i,j)开始的n行n列元素与模板相乘

  c=sum(sum(c)); %求c矩阵中各元素之和

  if c>255

  c=255;

  end

  if strcmp(type,'sobel')

  d=x1(i:i+2,j:j+2).*dy;%取出x1中从(i,j)开始的n行n列元素与模板相乘

  d=sum(sum(d)); %求d矩阵中各元素之和

  if d>255

  d=255;

  end

  end

  x2(i+1,j+1)=round((c^2+d^2)^(1/2)); %将与两模板运算后值赋给模板中心位置的元素

  end

 end

 %为被赋值的元素取原值

 result=uint8(x2);

 end

 测试

 image=imread(' C:\Users\yangk\Desktop\666\Building.tif');%读取图片

 imshow(image)%显示原图

 title('原图')

 figure

 k=sharpen_filter(image,'hori');%水平锐化

 imshow(k),title('水平锐化处理图')

 figure

 k=sharpen_filter(image,'vert');%水平锐化

 imshow(k),title('垂直锐化处理图')

 figure

 k=sharpen_filter(image,'sobel');

 imshow(k),title('Sobel锐化处理图')

 结果

 实验结果不同的原因:由名字可知,水平锐化和垂直锐化各自锐化注重的方向不一样,水平锐化注重水平方向,所以水平方向锐化效果好,垂直锐化注重垂直方向,所以垂直方向锐化效果好,而Sobel锐化水平垂直方向都进行了锐化,故两个方向都锐化效果明显

 设计非线性扩散滤波器对CT图像进行处理,使得低质量图像尽量逼近高质量图像。

推荐访问:实验 材料 报告 数字信号处理 matlab