版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选文档西北工业高校基于MATLAB的数字信号处理试验报告学 院: 计算机学院 学号: 姓名: 专 业: 计算机科学与技术 西北工业高校2017年 07 月试验一 MATLAB基本编程试验一、试验目的及要求1生疏MATLAB运行环境;2. 把握MATLAB的基本语法和函数;3. 把握MATLAB的基本绘图功能二、试验设备(环境)及要求1 计算机2 Matlab软件编程试验平台三、试验内容与步骤1 设 求 使2 . 分别用for或while循环结构编写程序,求出 。并考虑一种避开循环语句的程序设计算法实现同样的运算。3. 将图形窗口4等分,按挨次绘制出下列函数的曲线图及曲面图并标记。四、设计思想
2、 1.,则X=B*inv(A) 2.编写循环程序,循环105次,每次循环中计算的值 对做数学运算,可以得到3.使用subplot将图形窗口分为四个子窗口,在子窗口中进行绘图五、程序代码及注释% question 1*% 计算矩阵B*inv(A)A= 0 2 1 2 -1 3 -3 3 -4;B= 1 2 3 2 -3 1;X=B*inv(A)%*% question2*% 分别使用for及while循环计算矩阵K的值K=0;for i=1:105 K=K+sqrt(3)/2(i);endK%-K=0;i=1;while i<106 K=K+sqrt(3)/2(i); i=i+1;endK
3、%*% question 3*% 首先计算x,y1,y2,y3,X,Y,Z的值,然后画图x=0:0.1:2*pi;y1=cos(x);y2=2*sin(2*x);y3=x.*cos(x);X,Y=meshgrid(-2:0.1:2,-4:0.4:4);Z=X.2/22+Y.2/42;subplot(2,2,1)plot(x,y1)axis(0 6.5 min(y1)-0.1 max(y1)+0.1);xlabel('x')ylabel('y1')title('x-y1 graph') subplot(2,2,2)plot(x,y2)axis(0
4、6.5 min(y2)-0.1 max(y2)+0.1);xlabel('x')ylabel('y2')title('x-y2 graph') subplot(2,2,3)plot(x,y3)axis(0 6.5 min(y3)-0.1 max(y3)+0.1);xlabel('x')ylabel('y3')title('x-y3 graph') subplot(2,2,4)surf(X,Y,Z);axis(-2 2 -4 4 0 2);xlabel('X')ylabel('
5、Y')zlabel('Z')title('X-Y-Z graph')%*六、试验结果1.2. K=1.73213.试验二 MATLAB基本编程试验一、试验目的及要求1. 回顾数字信号处理的主要内容;2. 把握利用MATLAB进行信号处理的方法;3. 了解信号处理工具箱中一些函数的功能;二、试验设备(环境)及要求1 计算机2 Matlab软件编程试验平台三、试验内容1 .任何实数序列x(n)都能分解成为它的偶部重量和奇部重量之和,编写一个MATLAB函数文件,该函数的功能是将一给定序列分解成为它的偶部重量和奇部重量。并通过M文件或命令行调用该函数文件将以下
6、序列分解成为偶部重量和奇部重量。2. 一数字滤波器由 频率响应函数描述 1)写出其差分方程表示; 2)画出上面滤波器的幅频和相频图; 3)产生信号 的200个样本,通过该滤波器得到输出y(n), 试将输出y(n)的稳态部分与x(n)作比较,说明这两个正弦信号的幅度和相位是如何受该滤波器影响的。3. 设计带通滤波器(Butterworth、椭圆、窗函数),采样率fs2000Hz, 通带范围为300 -600Hz,阶数自选, 画出频率响应并分析比较。四、设计思想 1.首选对原始序列做折叠处理,得到折叠后的序列,再利用计算公式求的序列的奇偶重量 2.差分方程如下 依据频率响应函数,使用freqz函数
7、计算幅频和相频图 取样出x(n)的200个样本,通过filter函数求出滤波器作用后的y(n),对比输入输出信号,进行分析 3.首先设定带通滤波器阶数,本试验设定为10阶,窗函数部分使用了矩形窗,然后依据通带范围频率求得各个滤波器设计所需的参数,然后调用matlab滤波器生成函数,生成相应的滤波器。五、程序代码及注释代码1function xe,xo,m=Calculatexexo(x,n)%输入一个序列,输出分解后的奇偶序列%2017-8-19 by Binwangm=-fliplr(n);n2=min(n,m);n3=max(n,m);m=n2:n3; %计算折叠处理之后的横轴坐标I=fi
8、nd(m=n(1);x1=zeros(1,length(m);x1(I:I+length(n)-1) = x; %在新的横轴坐标域内表示原始序列x=x1;xe=0.5*(x+fliplr(x);xo=0.5*(x-fliplr(x); %计算奇偶重量end%计算序列的奇偶重量 n=0:100; x=exp(-0.05*n).*sin(0.1*pi*n+pi/3); %生成序列 xe,xo,m=Calculatexexo(x,n); %计算序列奇偶重量 subplot(2,1,1) stem(n,x,'ro'); %原始序列 title('original graph
9、39;) subplot(2,2,3) stem(m,xe,'*'); %偶重量 title('xe graph') subplot(2,2,4) stem(m,xo,'*'); %奇重量 title('xo graph')代码2.2fs=1000;b=1 0 0 0 1; %表达式分子系数a=1 0 0 0 -0.8145 %表达式分母系数H,w=freqz(b,a,256,fs); mag=abs(H); %计算幅值ph=angle(H); %计算相位ph=ph*180/pi;subplot(2,1,1)plot(w,mag)
10、;grid; xlabel('frequency Hz');ylabel('magnitude');subplot(2,1,2)plot(w,ph);grid;xlabel('frequency Hz');ylabel('phase');代码2.3n=1:0.025:5; x=sin(pi*n/2)+5*cos(pi*n); stem(n,x) b=1 0 0 0 1; %表达式分子系数 a=1 0 0 0 -0.8145; %表达式分母系数 y=filter(b,a,x); hold on stem(n,real(y),'
11、;r*') legend('x(n)','y(n)'); title('输入输出序列对比')代码3fs=2000; fc1=300; fc2=600; N=10; %阶数设置为10 wlp=fc1/(fs/2); whp=fc2/(fs/2); wn=wlp,whp; %计算带通范围 %矩形窗带通滤波器 w1=boxcar(N); %矩形窗时域响应 b1=fir1(N-1,wn,w1); h,w=freqz(b1,1,256,fs); subplot(2,3,1) plot(w,20*log10(abs(h); xlabel('f
12、requency Hz'); ylabel('magnitude /dB'); title('矩形窗函数的幅频特性'); subplot(2,3,4) plot(w,180/pi*unwrap(angle(h); xlabel('frequency Hz'); ylabel('phase'); title('矩形窗函数的相频特性'); %巴特沃斯带通滤波器 b,a=butter(N,wn); h1,w1=freqz(b,a,256,fs); subplot(2,3,2) plot(w1,20*log10(a
13、bs(h1)/max(abs(h1); xlabel('frequency Hz'); ylabel('magnitude /dB'); title('巴特沃斯的幅频特性'); subplot(2,3,5) plot(w1,180/pi*(angle(h1); xlabel('frequency Hz'); ylabel('phase'); title('巴特沃斯的相频特性'); %椭圆带通滤波器 rs=60;rp=0.1; %椭圆带通滤波器的指标 B,A=ellip(N,rp,rs,wn) h2,
14、w2=freqz(B,A,256,fs); subplot(2,3,3) plot(w2,20*log10(abs(h2)/max(abs(h2); xlabel('frequency Hz'); ylabel('magnitude /dB'); title('椭圆滤波器的幅频特性'); subplot(2,3,6) plot(w2,180/pi*(angle(h2); xlabel('frequency Hz'); ylabel('phase'); title('椭圆滤波器的相频特性');六、试验
15、结果1原始序列及得到的奇偶序列如下图所示2.1差分方程表示如下2.2计算出的幅频和相频图如下2.3 输入序列与滤波器的输出序列如下图所示分析结果可知,输出相对于输入在相位上有肯定的延迟,幅度上有了提升。两个正弦信号在对应的频率处均有肯定给成都上的幅度增加和相位延迟3带通滤波器设计依据上图结构可以看出:巴特沃斯带通滤波器的通带无波动,且设计出来的滤波器结构简洁,相频变化表现较差,但带外衰减速度较慢。椭圆滤波器的通带有肯定的波动起伏,边带截止频率格外陡峭,相频表现差。矩形窗函数带通滤波器通带有肯定的波动,边带截止频率变现位于三者的中等,相频变化表现较好。试验三 基于MATLAB的图像处理试验一、试
16、验目的及要求1了解图像处理的基本概念和功能;2. 把握利用MATLAB进行图像处理的方法;3. 了解图像处理工具箱中一些函数的功能;二、试验设备(环境)及要求1 计算机2 Matlab软件编程试验平台三、试验内容1对cameraman.tif图像分别添加椒盐噪声(密度为0.03)和高斯白噪声(均值为0,方差为0.02)的图像,利用三种方法进行去噪,显示原始图像、加噪图像和去噪图像并对试验结果进行分析。2. 对lena.bmp 图像进行DCT变换,分别选取最大的1/5、1/10、1/15个变换系数(其余置为0),进行反DCT得到重构图像,显示原图像和各重构图像并分别计算重构图像的峰值信噪比。四、
17、设计思想 1.使用matlab的imnoise函数为图像添加椒盐噪声和高斯白噪声,并分别使用均值滤波器(fspecial)中值滤波器(medfilt2),维纳滤波器(wiener)三种方法进行降噪处理 2.对lena图片进行灰度化,然后进行分块DCT变换,块大小设置为8x8,则共有64个参数,设置不同的mask矩阵,分别选取其中的1/5、1/10、1/15个参数进行反变换。五、程序代码及注释代码1:pic=imread('cameraman.tif'); Jpic=imnoise(pic,'salt & pepper',0.03); %加入椒盐噪声 Gp
18、ic=imnoise(pic,'gaussian',0,0.02); %加入高斯白噪声 subplot(1,3,1) imshow(pic);title('原始图片'); subplot(1,3,2) imshow(Jpic);title('加入椒盐噪声图片'); subplot(1,3,3) imshow(Gpic);title('加入高斯白噪声图片'); %均值滤波复原处理 figure; J1=filter2(fspecial('average',3),Jpic)/255; %模板尺寸为3 J2=filter
19、2(fspecial('average',7),Jpic)/255; %模板尺寸为7 subplot(2,3,1) imshow(Jpic);title('椒盐噪声图片'); subplot(2,3,2) imshow(J1);title('3x3均值滤波'); subplot(2,3,3) imshow(J2);title('7x7均值滤波'); G1=filter2(fspecial('average',3),Gpic)/255; %模板尺寸为3 G2=filter2(fspecial('average
20、',7),Gpic)/255; %模板尺寸为7 subplot(2,3,4) imshow(Gpic);title('高斯白噪声图片'); subplot(2,3,5) imshow(G1);title('3x3均值滤波'); subplot(2,3,6) imshow(G2);title('7x7均值滤波'); %中值滤波复原图像 figure; JJ1=medfilt2(Jpic,3 3); %模板尺寸为3 JJ2=medfilt2(Jpic,7 7); %模板尺寸为7 subplot(2,3,1) imshow(Jpic);titl
21、e('椒盐噪声图片'); subplot(2,3,2) imshow(JJ1);title('3x3中值滤波'); subplot(2,3,3) imshow(JJ2);title('7x7中值滤波'); GG1=medfilt2(Gpic,3 3); %模板尺寸为3 GG2=medfilt2(Gpic,7 7); %模板尺寸为7 subplot(2,3,4) imshow(Gpic);title('高斯白噪声图片'); subplot(2,3,5) imshow(GG1);title('3x3中值滤波'); su
22、bplot(2,3,6) imshow(GG2);title('7x7中值滤波'); %维纳滤波复原图像 figure; JJJ1=wiener2(Jpic,3 3); %模板尺寸为3 JJJ2=wiener2(Jpic,7 7); %模板尺寸为7 subplot(2,3,1) imshow(Jpic);title('椒盐噪声图片'); subplot(2,3,2) imshow(JJJ1);title('3x3维纳滤波'); subplot(2,3,3) imshow(JJJ2);title('7x7维纳滤波'); GGG1=w
23、iener2(Gpic,3 3); %模板尺寸为3 GGG2=wiener2(Gpic,7 7); %模板尺寸为7 subplot(2,3,4) imshow(Gpic);title('高斯白噪声图片'); subplot(2,3,5) imshow(GGG1);title('3x3维纳滤波'); subplot(2,3,6) imshow(GGG2);title('7x7维纳滤波');代码2pic = imread('lena.bmp'); %输入灰度图像subplot(2,2,1);imshow(pic);title('
24、;原始图片lena');pic=rgb2gray(pic);subplot(2,2,2);imshow(pic);title('灰度图片lena');pic = im2double(pic);%将lena图片进行分块压缩,块大小为8x8,共64个DCT变换系数D = dctmtx(8);C = blkproc(pic,8,8,'P1*x*P2',D,D'); %D'为D的转置%分别保留1/5,1/10, 1/15个系数进行DCT变换,设置maskmask1=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0
25、 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; %保留1/5个系数mask2=1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; %保留1/10个系数mask3=1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
26、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; %保留1/15个系数X = blkproc(C,8,8,'P1.*x',mask1); %保留1/5个系数I1= blkproc(X,8,8,'P1*x*P2',D',D); %重构图像X2 = blkproc(C,8,8,'P1.*x',mask2); %保留1/10个系数I2 = blkproc(X2,8,8,'P1*x*P2',D',D); %重构图像X3
27、= blkproc(C,8,8,'P1.*x',mask3); %保留1/15个系数I3 = blkproc(X3,8,8,'P1*x*P2',D',D); %重构图像subplot(2,3,4);imshow(I1);title('保留1/5个系数');subplot(2,3,5);imshow(I2);title('保留1/10个系数');subplot(2,3,6);imshow(I3);title('保留1/15个系数');I1p= imPSNR(pic,I1);I2p= imPSNR(pic,I2
28、);I3p= imPSNR(pic,I3);disp('DCT变换保留1/5个系数的PSNR:',num2str(I1p);disp('DCT变换保留1/10个系数的PSNR:',num2str(I2p);disp('DCT变换保留1/15个系数的PSNR:',num2str(I3p); function PSNR = imPSNR( J , I )%imPSNR Summary of this function goes here% I is a image with high quality% J is a image with noise%
29、 the function will return the PSNR of the noise imagewidth = size(I,2);heigh = size(I,1);if( width = size(J,2) | heigh = size(J,1) ) disp('Please check the input image have the same size'); returnendK = (I-J).*(I-J);PSNR = sum(sum(K,1);PSNR = PSNR / (width * heigh);PSNR=10*log10(255*255/PSNR
30、);end六、试验结果1.加入噪声图片及复原图片本次试验分别使用均值滤波,中值滤波,维纳滤波三种方法对加入噪声的图片进行复原。每种方法分别接受了3x3和7x7的模板大小进行处理,最终得到的结果如上图所示。分析图片结果可以得到:均值滤波方法更适合处理椒盐噪声的图片,针对椒盐噪声图片,7x7模板处理效果趋于模糊,3x3模板的效果更好。中值滤波同样更适合处理椒盐噪声图片,3x3模板处理效果格外好,基本接近于原始图片,7x7模板处理效果有肯定程度上的模糊。维纳滤波跟适合处理高斯噪声,对比不同模板大小的处理效果,7x7模板的处理效果要明显好于3x3的效果,其处理结果基本近似原始图片。2.DCT变换结果的
31、均方误差及重构图片结果如下图所示:分析上述结果可以看出,DCT变换保留1/5个数的系数时,重构的图像质量最好。削减DCT变换系数的个数,图像质量略有下降。试验四 基于MATLAB神经网络编程试验一、试验目的及要求1了解神经网络的基本概念和原理;2. 把握用MATLAB实现神经网络的思路和方法;3. 了解神经网络工具箱函数的功能。二、试验设备(环境)及要求1 计算机2 Matlab软件编程试验平台三、试验内容1、产生2维20组二类可分数据,进行标记并构成训练集(输入输出模式对),利用2输入的MP模型实现二类分类问题,给出试验结果并分析。2、用多层前向网络的BP算法拟合下列函数 说明:1)网络结构
32、为三层(输入层、1个隐层和输出层); 2)猎取两组数据,一组作为训练集,一组作为测试集; 3)用训练集训练网络; 4)用测试集检验训练结果。四、设计思想1.随机产生一个2x20的数组P,并利用y=x+2.1直线进行分类,标签存储在数组T中,利用函数newp生成一个仅包含一个单元的感知器,设置训练次数,进行训练,利用训练好的网络对随机生成的2x100数组p进行分类,并显示最终结果。 2.生成指定x,y范围内的2001组数据,随机选取其中的1900组作为训练集,其余101组作为测试机,利用newff函数生成一个三层的BP网络,隐层包含5个节点,训练网络,并进行最终的测试。五、程序代码及注释代码1:
33、%生成20组数据,以y=x划分为两类load('RandData.mat','P')T=ones(1,20);%以y=x+2.1位曲线划分为两类for i=1:20 if P(1,i)+2.1<P(2,i) %x+2.1<y,则标签为0,否则,标签为1 T(i)=0; endendnet=newp(min(P(1,:) max(P(1,:);min(P(2,:) max(P(2,:),1);net.trainParam.epochs = 100; %迭代次数net=init(net); %初始化网络net=train(net,P,T); %训练网络c
34、ell2mat(net.iw)cell2mat(net.b)plotpv(P,T)plotpc(net.iw1,1,net.b1);%生成随机测试数据figure;load('Randtest.mat','p')a=sim(net,p);plotpv(p,a) plotpc(net.iw1,1,net.b1);代码2:x1=-3:0.003:3;x2=-2:0.002:2;p=x1;x2;t=(x1.2-2*x1).*exp(-x1.2-x2.2-x1.*x2); %标准数据k=rand(1,2001);m,n=sort(k);train_in=p(:,n(1:
35、1900);train_out=t(:,n(1:1900); %随机抽取1900组作为训练数据test_in=p(:,n(1901:2001);test_out=t(:,n(1901:2001); %抽取剩余的101组作为测试数据 inputn,inputps=mapminmax(train_in); %归一化outputn,outputps=mapminmax(train_out);net=newff(inputn,outputn,5);%初始化参数net.trainParam.lr=0.3;net.trainParam.mc=0.95;net.trainParam.mem_reduc=1;
36、net.trainParam.epochs=500;net.trainParam.goal=1e-8;%BP神经网络训练net=train(net,inputn,outputn);%测试数据归一化inputn_test=mapminmax('apply',test_in,inputps); result=sim(net,inputn_test);%输出结果反归一化BPoutput=mapminmax('reverse',result,outputps); %输出结果画图plot(BPoutput,':or');hold onplot(test_o
37、ut,'-*');legend('猜测输出','期望输出')title('BP网络猜测结果')ylabel('输出结果')xlabel('样本')六、试验结果1.试验结果呈现模型训练结果如上图所示,所给的样本被完成的区分开来。模型训练过程显示,经过一次迭代就停止。测试结果如上图所示,可以看到,针对测试的100组数据,训练后的网络均实现了正确区分,未消灭划分错误的状况2.试验结果呈现BP网络的训练过程及误差变化曲线如上图所示,最终在测试集上的检测结果如下:从图上可以看到,训练的BP网络在测试集上表现良
38、好,每一个点都拟合的格外好。试验五 MATLAB的综合试验一、试验目的及要求培育同学利用Matlab解决专业问题的力量。二、试验设备(环境)及要求1 计算机2 Matlab软件编程试验平台三、试验内容(三题中选择一题)1、设计实现一个数字信号处理的仿真系统,要求程序具有界面并实现以下功能: 1)能产生或得到各种数字信号(sin、方波、三角波、语音、噪声及其叠加); 2)具有对数字信号进行DFT、DCT和DWT变换和经典功率谱估量功能; 3)具有显示时域、变换域及功率谱估量波形的功能; 4) 产生或输入一段带噪数字语音信号(信噪比分别为20dB、10dB和5dB),利用3种方法进行降噪处理,并显
39、示降噪前后的时域波形和信噪比。2、基于数字图像处理,实现一个大路交通标志检测的仿真系统。要求系统具有界面并实现以下功能:1)读入自然场景下包含交通标志的图像;2)对图像进行预处理;3)多种图像分割功能;4)形态学滤波等功能;5)交通标志区域的定位。3、结合自己的争辩方向,实现一个神经网络应用的实例,要求用至少3种方法实现(可以包括不同神经网络方法或经典方法)。四、设计思想本交通标志检测系统主要使用基于HSV空间的交通标志区域分割以及基于区域外形特征的交通标志检测两种方法。1. 基于HSV空间的交通标志区域分割由于交通标志具有特定的颜色(如红、 黄、 蓝), 基于颜色的交通标志分别抽取是交通标志
40、图像分割的主要方法。而不同的 “颜色系统”, 或称 “颜色空间”,对应着不同的分割阈值。图像的颜色空间主要有RGB空间、HIS空间、HSV 空间和YUV空间等。由于一般的摄像机和照相机均接受 RGB 颜色空间,基于RGB 空间的图像分割算法不需要换算,所以较为简便,但 R、G、B 三个重量之间存在相关性使得图像分割效果简洁受光照的影响;而 YUV 颜色空间主要应用于欧美彩色电视信号中,在图像处理中的应用较少; HIS 和 HSV 空间更适合图像分割,由于 H 和 S 两个重量在一般状况下均不受光照强度的影响。故接受HSV颜色空间2. 基于区域外形特征的交通标志检测判定基于颜色抽取可以将交通标志
41、区域从实景图中提取出来,但由于在自然场景中与交通标志颜色相近或相同的简单背景普遍存在,仅仅依据颜色检测判定是格外不行靠的。而基于外形检测的方法能够进一步排解那些颜色相近的背景,由于这些简单背景往往不具备交通标志的特殊外形。交通标志主要有 3 种外形:圆形、三角形和矩形,不同外形的交通标志具有不同的属性,如圆形度、矩形度、伸长度、质心到边缘的距离图等。实现步骤: 首先读入图像,进行预处理,将图像由RGB空间转为HSV空间。选取合适的阈值,做基于颜色的图像分割。对分割的图像做二值化处理,并利用圆形结构做图像匹配,对交通标志做粗检测。对得到的粗分割图像,做形态学滤波,包括膨胀、孔洞填充等操作,最终选
42、出填充块面积最大的区域,作为交通标志存在的坐标。五、程序代码(界面除外)及注释代码:交通标志检测%输入待检测图像,框出图像中的交通标志,并返回图像以及Hsv图,颜色分割图,膨胀图,孔洞填充图及标志裁剪图function IMG,R2H,ColorCut,Expand,Holefill,Crop=Detection(ima)I=ima;%图像二值化Hsv=rgb2hsv(I); %将图像由RGB颜色空间转化为HSV颜色空间R2H=Hsv;I1=Hsv(:,:,1); %记录色度H的数据BW=roicolor(I1,0.0277,0.032); %利用颜色阀值完成图象的二值化ColorCut=BW
43、;se=strel('disk',10); %创建半径10的平面圆盘BW1=imclose(BW,se);%将图象置白色;SE=ones(10);PZ=imdilate(BW1,SE);%图象膨胀;Expand=PZ;TC=bwfill(PZ,'holes');%图像填充Holefill=TC;L=bwlabeln(TC); S=regionprops(L,'Area','Centroid','BoundingBox'); %猎取标记图像L中全部区域的一系列特征付给Scent=cat(1,S.Centroid);b
44、oud=cat(1,S.BoundingBox); Len=length(S); %记录S的长度t2=0;t4=0;t7=0;t8=0;for i=1:3 Max(i)=0; MR(i)=0; MX(i)=0; MY(i)=0;endMax1=0;Max2=0;Max3=0;ttq=0;%依据处理结果,提取出路标位置;%依据各填充块的面积,找出其中最大的三个填充块for (i=1:Len) if (S(i).Area>=Max1) Max3=Max2; Max(3)=Max(2); Max2=Max1; Max(2)=Max(1); Max1=S(i).Area; Max(1)=i; e
45、lse if(S(i).Area>=Max2) Max3=Max2; Max(3)=Max(2); Max2=S(i).Area; Max(2)=i; else if(S(i).Area>=Max3) Max3=S(i).Area; Max(3)=i; end end endend if(Max(1)&&Max(2)&&Max(3)=0) errordlg('没有路标!','Warning');elsefor i=1:3 tz(i)=0; Mblen(i)=0; Mbwid(i)=0;endhang,lie,r=siz
46、e(BW);for i=1:3 X=cent(Max(i),1); Y=cent(Max(i),2);%白色为1;取出最大填充快的质心坐标; MX(i)=round(X); MY(i)=round(Y);%质心坐标取整; bx=boud(Max(i),1); by=boud(Max(i),2); blen=boud(Max(i),4); bwid=boud(Max(i),3);%候选区域的左顶点坐标; bx1=round(bx); by1=round(by); Mblen(i)=round(blen); Mbwid(i)=round(bwid); if (blen>=bwid) MR=b
47、wid; else MR=blen; end %取候选区域的宽度; if (MX(i)+round(MR/4)<=lie&&MY(i)+round(MR/6)<=hang&&TC(MY(i)+round(MR/6),MX(i)+round(MR/4)=1) t2=1; end if (MX(i)-round(MR/4)>0&&MY(i)-round(MR/6)>0&&TC(MY(i)-round(MR/6),MX(i)-round(MR/4)=1) t4=1; end if (MY(i)+round(MR/
48、6)<=hang&&MX(i)-round(MR/4)>0&&TC(MY(i)+round(MR/6),MX(i)-round(MR/4)=1) t7=1; end if (MY(i)-round(MR/6)>0&&MX(i)+round(MR/4)<=lie&&TC(MY(i)-round(MR/6),MX(i)+round(MR/4)=1) t8=1; end %取近似区域ROI; if(t2&&t4&&t7&&t8&&S(Max(i).A
49、rea/(hang*lie)>0.01) %当对象的象素少于1000的时候默认他不是路标 tz(i)=1; t2=0;t4=0;t7=0;t8=0; endend end if tz(3)=1 YC=bwareaopen(TC,Max3);%开运算elseif tz(2)=1 YC=bwareaopen(TC,Max2); else YC=bwareaopen(TC,Max1);endif(tz(1)+tz(2)+tz(3)=0) imshowage=0;errordlg(' 没有路标!','Warning'); end %找出交通标志位置; flag=0
50、 0 0;for i=1:3 if(tz(i)=1) high=Mblen(i); %Mblen(i)是对应矩形的长 liezb=round(MX(i)-Mbwid(i)/2); %MX(i)对应质心的X坐标 hangzb=round(MY(i)-Mblen(i)/2); %MY(i)对应质心的Y坐标 width=Mbwid(i); %Mbwid(i)是对应矩形的宽 flag(i)=1; Iresult=imcrop(I,liezb hangzb width high); if(i=1) IMG=drawRect(ima,liezb,hangzb,width,high,2); Crop=Ire
51、sult; %截取并返回第一张交通标志 imwrite(Iresult,'result1.bmp','bmp'); %保存 elseif(i=2) imwrite(Iresult,'result2.bmp','bmp'); %保存 elseif(i=3) imwrite(Iresult,'result3.bmp','bmp'); %保存 end endendend代码:GUI界面代码function varargout = traffice(varargin)% TRAFFICE MATLAB co
52、de for traffice.fig% TRAFFICE, by itself, creates a new TRAFFICE or raises the existing% singleton*.% H = TRAFFICE returns the handle to a new TRAFFICE or the handle to% the existing singleton*.% TRAFFICE('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in TRA
53、FFICE.M with the given input arguments.% TRAFFICE('Property','Value',.) creates a new TRAFFICE or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before traffice_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to traffice_OpeningFcn via varargin.% *See GUI Options on G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江工贸职业技术学院《短视频策划与运营》2023-2024学年第一学期期末试卷
- 产品创新与金融营销模板
- IT工作半年汇报模板
- 实践科学原理模板
- 社区环保实践分享
- 秋分节气新媒体策略
- 二零二五年度融资租赁合同法律风险防控合同2篇
- 统编版六年级语文上册寒假作业(十三)(有答案)
- 二零二五年度网络安全风险评估与合规服务合同协议书2篇
- 《中国经济发展趋势》课件
- 2024-2025学年成都高新区七上数学期末考试试卷【含答案】
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 2025年浙江杭州市西湖区专职社区招聘85人历年高频重点提升(共500题)附带答案详解
- 《数学广角-优化》说课稿-2024-2025学年四年级上册数学人教版
- “懂你”(原题+解题+范文+话题+技巧+阅读类素材)-2025年中考语文一轮复习之写作
- 2025年景观照明项目可行性分析报告
- 2025年江苏南京地铁集团招聘笔试参考题库含答案解析
- 2025年度爱读书学长参与的读书项目投资合同
- 电力系统分析答案(吴俊勇)(已修订)
- 化学-河北省金太阳质检联盟2024-2025学年高三上学期12月第三次联考试题和答案
- 期末复习试题(试题)-2024-2025学年四年级上册数学 北师大版
评论
0/150
提交评论