数字信号处理
课程设计报告
一. 课程设计任务... 2
1.1 设计目的.... 2
1.2 设计要求.... 2
二. 课程设计原理及设计方案... 3
2.1 设计原理的选择.... 3
背景消减法... 3
时域差分法... 3
光流法... 4
2.2 设计思路.... 4
2.3 设计流程图.... 5
三. 课程设计的步骤和结果... 6
3.1 硬件的启用.... 6
3.2 转化为灰度图像.... 7
3.3 运动目标的监测及轨迹描绘.... 7
3.4 GUI界面的制作.... 10
四. 课程设计总结... 12
五. 设计体会... 13
六. 参考文献... 14
一. 课程设计任务
1.1 设计目的
数字图像处理,就是用数字计算机及其他有关数字技术,对图像进行处理,以达到预期的目的。随着计算机的发展,图像处理技术在许多领域得到了广泛应用,数字图像处理已成为电子信息、通信、计算机、自动化、信号处理等专业的重要课程。
数字图像处理课程设计是在学习完数字图像处理的相关理论后,进行的综合性训练课程,其目的是:
² 使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法;
² 增强学生应用Matlab编写数字图像处理的应用程序及分析、解决实际问题的能力;
尝试所学的内容解决实际工程问题,培养学生的工程实践能力
1.2 设计要求
在很多应用中都要对运动目标进行跟踪。比如激光制导中,弹载摄像机不断检测指向目标的激光束,根据激光光点的位置来修正飞行方向。使用图像获取工具箱,从摄像机获取视频图像到matlab中,这些图像可以用来跟踪摄像机视场中的目标。建立一个图像跟踪的演示程序,用于跟踪的目标可由一个激光笔产生的激光点代替,实现运动目标检测和跟踪,就是在视频序列中实时地发现并提取运动目标,不断跟踪它们,并计算出这些运动目标的轨迹。
要求完成功能:
(1) 对连接在计算机上的视频获取设备进行控制;
(2) 显示动态视频画面;
(3) 对画面中内容进行运动目标检测;
(4) 对画面中内容进行运动目标的跟踪;
(5) 记录目标的跟踪轨迹;
(6) 输出检测到的激光点的位置信息;
(7) 设计软件界面;
二. 课程设计原理及设计方案
2.1 设计原理的选择
传统的运动检测主要包括背景消减法、时域差分法和光流法。下面分别对各个算法做简要介绍:
背景消减法
背景消减法是利用当前图像与背景图像的差分来检测运动区域的一种技术。先为背景中的每个像素进行统计建模:再将当前的图像和背景模型进行比较,据此对图像进行二值化处理,从而得到前一图像素集合(运动对象)。
此方法的主要特点是要求当前被监视的目标的背景基本不变,通过与背景的比较得到目标运动信息。(即基本思想是将当前帧图像与背景图象相减,若差分图像中像素值大于某一阈值,则判断此像素点属于运动目标区域,否则,就判此像素点属于背景区域。)阈值操作后得到的结果直接给出了目标的位置、大小、形状等信息。
背景消减法操作简单,检测位置准确且速度快。但通常的背景消减法对光线、天气等光照条件的变化非常敏感,运动目标的阴影也常常被检测为运动目标的一部分,这将影响检测结果的准确性。
时域差分法
时域差分法是在同一背景下将连续或是一定间隔的帧进行比较,从中检测目标的运动轨迹的方法。而比较两帧最简单、最直观的方法是将两图像做“差”。利用检测两图像中像素间灰度值的变化,经过阈值化处理确定目标在图像中的位置。相减的图像中,灰度不发生变化的部分被减掉,动态目标的大部分信息就保留下来。从而达到检测和提取轮廓的目的。
差分操作利用捕获的相邻帧和提取目标区
其中,为二值化门限,k为时间。令对应两帧图像间发生变化的地方,即目标区域中像素值为“1”,对应在前后两帧图像间没有发生(由于运动产生的)变化的地方像素值为“0”,得到二值图像。
光流法
光流是空间运动物体的被测表面上的像素运动的瞬时速度场。光流场是通过二维图像来表达物体点的三维运动的速度场。
光流计算基于以下假设:一、任何物体所检测到的亮度随时间是恒定不变的。二、图像平面内定的临近点以类似的方式进行移动(速度平滑性约束)。基本思想是:首先提取图像中目标的特征点,如角点,并利用特征匹配计算这些特征点处的光流,然后根据这些光流信息进行目标聚类。
光流法的主要优点在于能够直接用于摄像机运动下的目标检测,对目标在帧间的运动的限制较少,可以处理大的帧间位移,而且对噪声的敏感性降低;主要缺点是大多数光流计算方法相当复杂,且抗噪性能差。
运动目标跟踪的目的是通过对视频图像的分析,计算每帧图像中目标的位置坐标,并根据不同的特征,将连续图像中同一运动目标联系起来,得到每个目标完整的运动轨迹,也就是说建立运动目标的对应关系,找到下一幅图像中目标的确切位置。一些基本的目标跟踪方法:中心跟踪、质心跟踪、形心跟踪和角点跟踪等。
基于实验的要求及技术条件的限制,在本设计中将采用时域差分法对图像进行处理,即对相邻两帧进行差分处理,从而检测目标的运动;运用中心跟踪法,确定目标的最小外接矩形,并对其中心进行跟踪与记录跟踪轨迹。
2.2 设计思路
控制计算机摄像头硬件,得到实时的视频图像,捕获图像,对相邻的帧运用时域差分法对目标进行检测,对各帧进行灰度变换,然后相邻帧间做差分,对得到的差值图像进行二值化,并设定二值化阈值。
进而利用中心跟踪法,定位目标。若经二值化的帧差图像的各点的像素值为“1”较多且成区域,则由这些点组成的区域为连通区域,记录连通区域的最上、最下、最左、最右边界值,从而绘制出目标的最小外接矩形,再确定矩形的中心为目标的定位点,根据定位点绘制运动目标的跟踪轨迹,且记录跟踪轨迹。
2.3 设计流程图
三. 课程设计的步骤和结果
3.1 硬件的启用
info=imaqhwinfo
info =
InstalledAdaptors: {'coreco' 'winvideo'}
MATLABVersion: '7.6 (R2008a)'
ToolboxName: 'Image Acquisition Toolbox'
ToolboxVersion: '3.1 (R2008a)'
%返回适配器的信息。
win_fo=imaqhwinfo('winvideo')
win_fo =
AdaptorDllName: 'D:\matlab\toolbox\imaq\imaqadaptors\win32\mwwinvideoimaq.dll'
AdaptorDllVersion: '3.1 (R2008a)'
AdaptorName: 'winvideo'
DeviceIDs: {[1]}
DeviceInfo: [1x1 struct]
%适配器的具体参数。
程序中:
vid = videoinput('winvideo', 1, 'YUY2_320x240');
preview(vid);
start(vid);
效果图如下:
3.2 转化为灰度图像
imaqmem(30000000); %申请内存空间
for i=1:3
pic(:,:,:,i)=cat(4,getsnapshot(vid)); %捕获图像
flushdata(vid); %清除数据获取引擎的所有数据
end
for f = 1:3
pixels(:,:,:,f) = double(pic(:,:,:,f))/255; %转换为双精度浮点型数
pixel(:,:,f) = (rgb2gray(pixels(:,:,:,f))); %rgb2gray将RGB图形或色图矩阵转换成灰度图。
axes(handles.axes2);
imshow(pixel(:,:,f) );%显示灰度图像。
End
效果图如下:
3.3 运动目标的监测及轨迹描绘
for l = 2:nrames
d(:,:,l)=(abs(pixel(:,:,l)-pixel(:,:,l-1)));
k=d(:,:,l);
bw(:,:,l) = im2bw(k, 0.2);
bw1=bwlabel(bw(:,:,l));
axes(handles.axes3);
imshow(bw(:,:,l))
hold on
%统计连通区域的行的最上和最下、起始位置
cou=1;
for h=1:rows
for w=1:cols
if(bw(h,w,l)>0.2)
toplen = h;
if (cou == 1)
tpln=toplen;
end
cou=cou+1;
end
end
end
%统计连通区域的裂地最左和最右、起始位置。
coun=1;
for w=1:cols
for h=1:rows
if(bw(h,w,l)>0.2)
leftsi = w;
if (coun == 1)
lftln=leftsi;
end
coun=coun+1;
break
end
end
end
%计算连通区域的外界矩阵所需的长度和宽度
widh=leftsi-lftln;
heig=toplen-tpln;
%计算矩形中心位置
widt=widh/2;
heit=heig/2;
with=lftln+widt;
heth=tpln+heit;
wth(l)=with;
hth(l)=heth;
%显示外接矩形
if(widh>0&&heig>0)
rectangle('Position',[lftln tpln widh heig],'EdgeColor','r');
%显示跟踪中心-矩形中心
end
plot(with,heth, 'r*');
drawnow;
hold off
n=n+1;
set(handles.edit1,'string',with);
set(handles.edit2,'string',heth);
%目标运动轨迹的记录
if(m<10000)
record(m,1)=with;
record(m,2)=heth;
m=m+1;
else
m=1;
end
axes(handles.axes4);
set(gca,'ydir','reverse')
axis([0 320 0 240]);
plot(with,heth, 'r*');
hold on;
end
效果图如下:
3.4 GUI界面的制作
GUI ( GraphicalUser Interface) ,是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,具有强大的绘图功能,可以轻松的获得更高质量的曲线图。GUIDE相当于一个控制面板,从中可以调用各种设计工具以辅助完成界面设计任务,例如控件的创建和布局、控件属性的编辑和菜单设计等。
GUI设计步骤:
1. 将所需控件从控件面板拖拽到GUIDE的设计区域;
2. 设置控件的属性。尤其注意tag属性的设置
3. 保存文件。GUIDE默认把GUI程序保存为两个同名文件:.fig文件用来保存窗体布局和所有控件的界面信息;.m文件包含GUIDE自动产生的程序框架和各控件的回调函数。
4. 为每个回调函数添加代码以实现GUI程序的具体功能。这一步与一般函数文件的编辑调试过程相同。
本次GUI设计本人共用:
两个“确定按钮”,pushbutton
五个“静态文本框”,staic text
四个“坐标轴控件”,axes
界面说明
1) 第一幅实时显示视频的灰度图像
2) 第二幅实时显示目标的检测与跟踪,外接矩形框显示目标,中心显示目标的中心位置。
3) 第三幅显示并记录目标的运动轨迹
4) “目标位置坐标”处,实时显示当前目标定位的位置信息
效果图如下:
四. 课程设计总结
随着人工智能的发展和智能机器人的产生,人们将依赖机器人去完成更佳繁琐的工作。而作为可以从事这些工作的前提就是给机器人一双“眼睛”。能够去识别和跟踪目标,以便能出色的完成工作。
运动目标检测技术已经得到广泛的应用,本人对自己能够运用所学完成本设计感到十分兴奋,但由于知识的局限,本设计还具有较大的纰漏。
经过多次的试验及理论分析发现,本设计存在如下问题:
1. 背景与目标的像素差距越大效果越好,由于采用中心跟踪法,效果不是十分精确。
2. 追踪目标体积越小试验效果越理想,过大的体积会严重影响实验效果。
3. 基于本设计的算法,会产生实时性较慢的缺点。
五. 设计体会
完成了本次设计,使本人对matlab有了进一步的了解,也使本人的matlab水平有了较大的提升。对数字图像处理的设计原理和方法有了十分深刻的体会,巩固了所学知识,加深了印象,让知识和实际操作更近了。因为设计是一个先构思再动手的过程,而且需要借鉴大量的资料,十分有效的提高了学习积极性和主动性。
在本次的课程设计中,本人完成了对运动目标的实时监测。根据设计任务要求,查阅文献、资料,对目标检测和跟踪有了初步的认识,了解了各个工作原理;根据目标检测和跟踪算法,对其进行编程,对设计流程有了整体的认识;编程实现任务,是设计的重点,编程中出现了较多的错误并对其进行多次修改,最终完成任务。
同时也加强了同学们的团队协作意识,虽然是独立设计任务,但是相关的问题讨论和资源共享也让我们对团队有了新的感触。
总之,通过本次设计,不但加强了专业知识的学习,还使大家认识到了知识脱离事实的误区,具有十分重要的意义。
六. 参考文献
1 周智恒.关于运动目标监测的发展现状的研究前言技术.移动通信,2008.6
2 matlab 2.0摄像头程序,百度文库,
3 冈萨雷斯,数字图像处理,电子工业出版社
课程设计成绩评定表
设计上机验收成绩表
课程设计总评分成绩表
1.不要自己写,要利用word来自动生成。详情请看最后一页