• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

基于MATLAB 2014a GUI界面的实时目标跟踪的实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.1  前言

      前段时间中对目标追踪的主要算法、利弊特性以及本文所使用的基于摄像头的实时目标追踪算法有了一个大致的了解,并帮助同学仿真了一小部分的实验结果。为将算法应用于实际环境,能在不深入研究算法及编程工具的条件下就能对视频追踪有一个清晰的了解,本人特意在原有内容的基础上开发了基于视频追踪算法(同学提供)的图形用户界面(Graphical User Interface)。

1.2  MATLAB图形用户界面概述

      MATLAB界面设计功能强大,同时制作出的界面美观大方,功能上亦是非常直观,另外由于本文前述部分算法仿真也是基于MATLAB所实现,故可有效避免MATLAB与其他语言的混合编程,以减少软件界面设计难度。MATLAB为用户开发图形界面提供了一个方便高效的集成开发环境—GUIDE,几乎所有的工作都能够在GUIDE所提供的环境和工具中实现。在编写完成后,GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中,同时还能够生成包含GUI初始化和组建界面布局控制代码的M文件。当然基于MATLAB的GUI设计也可避开GUIDE的使用,但相对来说更为复杂,不够直观,且效率会大大降低。

      在MATLAB 2014a环境下,通过在命令行输入guide或单击MATLAB主窗口的快速启动按钮即可以打开GUIDE编辑对话框。在新建的空GUI中添加自己需要的菜单、按钮等控件,最后通过编写回调函数完成需要的控件功能,即可完成整个GUI软件界面的编写,在GUIDE下所生成的界面框架如图  所示,在此基础上只要想应的为每个按键、坐标及编辑框添加相应的回调函数和句柄及设置相应参数即可完成整个GUI的设计工作。                    

      利用MATLAB所生成的界面系统可在其自带的编译功能生成可执行文件,在安装了MATLAB编译器(MCR)的机器上即可完美运行该GUI及其算法所能实现的效果。下面简要介绍一下各模块的功能以及实现。 

1.3  软件各个模块及功能实现

      本文使用MATLAB 2014a环境开发基于摄像头的实时目标跟踪软件界面,软件界面主体如图  所示。该软件可以实现的功能主要包括:Camera实时输入及显示、Camera输入暂停并抓取图像帧、用户手动选择跟踪区域、跟踪区域坐标显示及Camera输入实时跟踪等。这些基本功能配合起来可以实现一套完整的、实时的跟踪目标选择à目标区域学习à目标区域跟踪的功能。

  

1.3.1   Camera实时采集模块

       摄像头的实时画面在软件中的实时显示是本软件最基础的工作,该过程可描述为三部分:首先通过在GUIDE中创建axes1坐标,确立视频在整个GUI中的显示位置;之后调用web Camera的视频数据流,通过循环调用的方式获取到每一帧的信息;最后在回调函数中指定每一帧显示窗口的句柄(Handle)为Axes1。以上步骤即可实现在MATLAB的GUIDE中实时显示摄像头所传输过来的视频流。在保证摄像头连接成功,且能够被正确调用的情形下单击软件GUI界面上【开始摄像头播放】按钮所获取到的实时图像示例如图  所示。

 

      本软件中使用obj=videoinput(\'winvideo\',1,\'YUY2_640x480\')命令来实现视频文件的读取以及显示图像的分辨率控制等功能。之后利用get函数获取每一帧的尺寸以及颜色通道数,最后通过指定图像句柄hImage,利用preview(obj,hImage)即可在当前句柄窗口中显示图像。

如单击【停止摄像头显示】按钮即可起到关闭摄像头视频流的作用,此时软件将自动截取最后一帧的图像显示在窗口内,该功能通过在该按钮的callback函数中调用pause()函数即可实现。

 

1.3.2  跟踪区域学习模块

      作为一个实时目标跟踪软件,所需要最为重要的功能之一即是可让用户选择任意的区域以实现跟踪的目的,即实现所选即所跟踪。故本软件通过检测用户对于感兴趣区域鼠标点击事件,获取用户当前点击区域的坐标值,将所得到的坐标值通过全局变量反馈给学习区域回调函数,从而划定了学习区域。通过此种方式实现了用户自主选择跟踪区域的目的,能够在软件中体现出良好的用户友好度。点击GUI界面中的【选择跟踪区域】按钮,系统会自动调用摄像头此时画面,3秒之后截取一帧并显示在窗口中(间隔时间3秒主要是让用户调整摄像头位置及其他参数),之后对于该帧静止画面,用户可用鼠标单击任何感兴趣的区域,选择为跟踪目标。单击完成之后系统界面会显示出当前用户所选择跟踪区域坐标,跟踪区域设置为一矩形,长和宽在软件中分别设置为默认值25pixel和45pixel。当点击某一学习画面,界面获取到学习区域坐标的示意图如图  所示。

      学习模块调用了自编函数ButttonDownFcn,以实现在检测到鼠标点击事件时获取此时该点在整个图片中的坐标位置,之后以global x; global y全局变量的形式传递到学习算法的区域选择参数中去。同时通过set(handles.edit1,\'String\',x)命令参数将坐标值显示在界面的编辑框中,据此也可以判断用户是否选择了正确的区域。 

1.3.3  跟踪模块

      这是本软件算法最重要的部分,最主要的ObjectTracking功能都在此部分实现。本模块通过提供实时的摄像头视频流,并结合目标学习部分的学习区域和回调函数中所使用的跟踪算法来实现对每一帧视频帧的实时跟踪显示。仿真结果表明,在本GUI环境中通过学习之后的区域能够有效的在摄像头实时显示的条件下被跟踪检测到。点击软件界面中的【开始运行】按钮,即可进入实时跟踪模式,在学习模块中所选择的区域会以一个25*45像素的矩形框显示出来,并且随着摄像头的移动该矩形框能够随之移动从而保持始终对该区域的跟踪。GUI中使用的一个示例如图   所示。

 

        摄像头移动之后蓝色矩形框跟踪目标区域示意如图   所示。

 

       作为一个面向用户的程序,如果要脱离编译环境实现界面中各个按钮的功能,就需要调用实现编译好的各种算法程序,在源程序中将这些程序都以M文件的形式保存,方便MATLAB的调用执行。但MATLAB对运行环境的要求较为苛刻,无法满足一般用户需要随时运行的基本需求,此时就要考虑将MATLAB文件转化为可执行文件。利用MATLAB的deploytool工具即可将需要的M文件、数据文件和资源文件编译为可执行程序,将可执行程序与MCR一起打包后利用VS2010制作发布程序即可生成可执行文件。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
解决在Windos7下Delphi应用程序乱码问题发布时间:2022-07-18
下一篇:
DELPHI优秀的一些开源框架:QDAC,MORMOT,DIOCP发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap