数字信号处理matlab实验报告材料:数字信号处理实验3
时间:2020-07-21 12:54:25 来源:天一资源网 本文已影响 人
___计算机__学院_网络工程__专业___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图像进行处理,使得低质量图像尽量逼近高质量图像。
相关关键词: 操作系统文件管理实验 新晃思源实验学校:誓师大会,备战中考 新晃思源实验学校图片 新晃思源实验学校简介 “国培计划(2017)”英语科送教活动在白水县田家炳实验中学进行