基于android平台的远程视频监控报警系统研究

基于android平台的远程视频监控报警系统研究

ID:35055640

大小:4.45 MB

页数:70页

时间:2019-03-17

上传者:U-56225
基于android平台的远程视频监控报警系统研究_第1页
基于android平台的远程视频监控报警系统研究_第2页
基于android平台的远程视频监控报警系统研究_第3页
基于android平台的远程视频监控报警系统研究_第4页
基于android平台的远程视频监控报警系统研究_第5页
资源描述:

《基于android平台的远程视频监控报警系统研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

分类号:TP274单位代码:10183研究生学号:2013522021密级:公开吉林大学硕士学位论文(学术学位)基于Android平台的远程视频监控报警系统研究ResearchofRemotemonitoringAlarmsystembasedonAndroidPlatform作者姓名:刘楠专业:通信与信息系统研究方向:分布式智能信息处理指导教师:陈万忠教授培养单位:通信工程学院2016年6月 未经本论文作者的书面授权,依法收存和保管本论文书面版本、电子版本的任何单位和个人,均不得对本论文的全部或部分内容进行任何形式的复制、修改、发行、出租、改编等有碍作者著作权的商业性使用(但纯学术性使用不在此限)。否则,应承担侵权的法律责任。吉林大学硕±学位论文原创性声明?i本人郑重声明:所呈交学位论文,是本人在指导教师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体己经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体。,均已在文中明确方式标明本人完全意识到本声明的法律结果由本人承担。"睾学位论文作者签名;A曰期:0!p年月^曰含I《 --------------------------------基于Android平台的远程视频监控报警系统研究--------------------------------ResearchofRemotemonitoringAlarmsystembasedonAndroidPlatform作者姓名:刘楠专业名称:通信与信息系统指导教师:陈万忠教授学位类别:工学硕士答辩日期:2016年月日 摘要基于Android平台的远程视频监控报警系统研究随着人们生活水平的提高,人们的安防意识越来越强。视频监控系统作为安防系统的一个重要组成部分,在人们的日常生活中扮演的角色越来越重。视频监控系统最初主要应用在大型会场、大型超市、拥挤的马路等公共场所,近年来,家庭安防的概念越来越被人们所接受,家用视频监控系统发展十分的迅速。随着通信技术和信息处理技术的飞速发展,基于移动平台的远程视频监控系统的应用范围正在迅速扩展。由于Android系统在目前移动智能终端操作系统中的优势,本文主要是在Android平台进行了远程视频监控系统的开发,系统能够对远程网络摄像机进行视频实时播放,同时能对监控画面中的移动目标进行检测,发现运动目标后实施报警。本文主要完成了以下几个方面的工作:(1)监控数据传输协议的对比研究在系统开发过程中,首先应对相关的理论知识进行研究,选出适合系统开发的监控数据传输协议,满足系统画质清晰、画面流畅的要求。(2)移动检测算法的对比研究与改进系统对摄像头采集得到的图像进行移动检测处理,当发现有移动目标闯入时触发相应报警机制,Android平台客户端会根据程序预先设置向特定号码发送短消息或向特定邮箱发送邮件等报警功能。本文利用改进的背景差分法对摄像头所采集得到的视频信号进行运动检测。(3)远程监控数据的解析与播放在Android智能手机上完成了远程监控摄像头拍摄监控视频的实时解析和播放,画质清晰且播放流畅,具备良好的观看体验。(4)Android报警模块的设计与实现当系统检测到监控区域有运动物体时,客户端程序会触发相应的报警动作引起监控者的注意。报警功能的实现方式可由用户自己设定。关键词:远程监控,移动检测,邮件报警,Android平台I ABSTRACTResearchofRemotemonitoringAlarmsystembasedonAndroidPlatformWiththeimprovementofpeople'slivingstandards,people'ssecurityawarenessisgrowing.Videosurveillancesystemasanimportantpartofthesecuritysysteminpeople'sdailylivesbecomesmoreandmorepopular.Videosurveillancesystemwasoriginallymainlyusedinlargevenues,supermarkets,crowdedroadsandotherpublicplacesoverthepastyears.Withtheconceptofhomesecurityismoreandmoreacceptedbypeople,homevideosurveillancesystemisdevelopingveryrapidly.Withtherapiddevelopmentofcommunicationtechnologyandinformationprocessingtechnology,application-basedremotevideosurveillancesystemformobileplatformsisrapidlyexpanding.Asandroidsystemhavemanyadvantagesamongthecurrentmobileintelligentterminaloperatingsystem,wedeveloptheremotemonitoringalarmsystembasedonAndroidplatforminthispaper.Thesystemcanpalythemonitoringsceneintheremotenetworkcamera,atthesametime,thesystemhasmotiondetectionfunction..Thispapermainlycompletedtheworkofthefollowingaspects:(1)ComparativeStudyofmonitoringdatatransferprotocolInthesystemdevelopmentprocess,wefirstanalyzesomerelevanttheoreticalknowledgeandselectmonitoringdatatransmissionprotocoltomeetthesystemrequirement.(2)ComparativeStudyandImprovementofmotiondetectionalgorithmThesystemcantakemovedetectionwiththemonitorscreencapturedbythenetworkcamera.Ifthereisamovingtargetdetected,thesystemcansendashortmessagetothetelephonenumberpre-setorsendanemailtothepre-setmailbox.Weuseimprovedbackgroundsubtractionmethodtodetectthemovingtargetinthispaper.(3)AnalyticalandpalybakofremotemonitoringdataThesystemdevelopedinthispapercananalyzeandplaytheremotemonitoringdatainrealtime.Theclarityofthemonitoringpicturecanmeetusersdemand.PeopleIII usingthissystemcanhaveagoodviewingexperience.(4)DesignandimplementationofAndroidalarmmoduleThesystemhasmovedetectionfunction,ifamovingtargetisdetectedinthemonitoringscreen,thesystemdevelopedontheAndroidplatformwillsendashortmessageoremailtothepre-setnumber.Thealarmmodecanbesetbythesystemusersthemselves.Keywords:Remotemonitoring,MotionDetection,EmailAlert,AndroidPlatformIV 目录第1章绪论..................................................................................................11.1研究背景和意义...................................................................................11.2国内外研究现状和发展趋势..............................................................21.2.1国内外研究现状..........................................................................21.2.2视频监控系统发展趋势..............................................................31.2.3视频监控系统存在的问题..........................................................41.3主要内容和结构安排...........................................................................41.3.1本文主要工作内容......................................................................41.3.2本文结构安排...............................................................................6第2章系统关键技术研究与总体设计........................................................72.1Android系统简介.................................................................................72.1.1Android发展史............................................................................72.1.2Android系统架构........................................................................82.1.3Android四大组件......................................................................102.2流媒体传输协议.................................................................................122.2.1实时传输协议............................................................................122.2.2实时传输控制协议....................................................................132.3视频压缩技术.....................................................................................132.3.1H.264标准..................................................................................142.3.2MPEG-4标准.............................................................................142.4移动目标检测算法.............................................................................152.4.1光流法.........................................................................................162.4.2帧差法.........................................................................................162.4.3背景差法.....................................................................................162.5系统需求分析.....................................................................................172.5.1硬件需求分析与配置................................................................172.5.2系统软件功能需求分析............................................................18V 2.5.3系统软件性能需求分析............................................................182.6系统功能模块划分和总体设计........................................................192.6.1客户端功能模块设计................................................................202.6.2系统工作流程............................................................................212.6.3系统数据流向............................................................................222.7本章小结.............................................................................................23第3章基于Android平台的视频监控报警系统设计与实现.................253.1Android开发环境搭建......................................................................253.1.1相关软件的下载........................................................................253.1.2Android开发环境搭建..............................................................263.1.3配置AndroidSDK的环境变量...............................................273.2系统界面设计.....................................................................................283.2.1Android布局简介......................................................................283.2.2系统欢迎界面的设计与实现...................................................293.2.3系统主页面设计与实现............................................................293.2.4系统设置页面的设计与实现...................................................303.3远程监控数据解析.............................................................................313.3.1Android平台视频解析控件.....................................................313.3.2远程监控数据解析流程..........................................................323.4移动检测算法的实现........................................................................333.4.1Android+OpenCV开发环境搭建.............................................343.4.2移动检测算法的实施................................................................363.4.3移动检测算法分析....................................................................413.5报警功能的实现.................................................................................423.6本章小结.............................................................................................43第4章系统安装与测试...............................................................................454.1系统集成与发布.................................................................................454.2系统启动测试.....................................................................................464.2.1系统安装测试............................................................................46VI 4.2.2视频监控功能测试....................................................................484.2.3邮件报警功能测试....................................................................494.2.4短信报警功能测试....................................................................494.3系统测试结果分析.............................................................................504.4本章小结.............................................................................................51第5章总结与展望.......................................................................................535.1本文工作总结.....................................................................................535.2下一步工作展望.................................................................................54参考文献............................................................................................................55作者简介............................................................................................................59致谢................................................................................................................61VII 第1章绪论1.1研究背景和意义随着人们生活水平的提高,人们的安防意识越来越强。视频监控系统作为安防系统的一个重要组成部分,在人们的日常生活中扮演的角色越来越重。视频监控系统最初主要应用在大型会场、大型超市、拥挤的马路等公共场所,近年来,家庭安防的概念越来越被人们所接受,家用视频监控系统发展十分的迅速[1-2]。随着互联网技术和信息通信技术的发展,远程监控系统的应用得到极大普及。由于互联网、移动通信技术的发展,人们通过随身携带的智能手机、平板等设备可以随时查看远程被监控场景的状况。传统的视频监控系统一般采用固定摄像机对固定区域进行信号采集,然后通过Internet网络或者专用的视频传输线将监控画面传送到管理中心,由系统管理员或安防人员实时查看监控区域的场景。传统视频监控系统可分为模拟监控系统和数字监控系统,模拟监控系统中信号的传输采用专用视频线,缺点是传输距离有限,数字监控系统采用Internet网络传输监控数据,传输距离不受限制。远程视频监控系统大多属于数字监控系统。基于智能移动终端设备的远程视频监控系统可以通过用户随着携带的智能手机等设备实现对远程监控现场的实时掌控,观看远程监控视频的前提是智能终端设备必须以WIFI或3G/4G方式联网。基于移动终端的远程视频监控系统可以让用户在任何时候、任何地点对被监控区域进行实时画面监视,因此它极大地扩展了传统视频监控系统的应用范围,它的推广和使用在现实生活中具备重要的意义。目前,在智能移动终端领域主要采用的操作系统主要有Android、IOS和WindowsPhone,根据相关统计报告,在这三种操作系统中,Android系统的市场占有率最大,达到四分之三以上,并且该占用率仍在快速增长。Android系统为美国Google公司开发,由开发手机联盟组织负责维护和更新,目前已成为用户人数最多的智能手机操作系统,在智能手机操作系统领域占据无可替代的位置。Android智能手机操作系统为基于Linux内核的完全开放系统,其源码完全公开,任何组织和个人都可以对其进行完善和更新,在该平台上进行应用程序的开发不会受到版权纠纷的影响,这也成为Android操作系统上应用程序种类繁多的根本原因之一。Android智能操作系统具备开放的系统架构和统一的标准函数接口供1 程序开发者使用,因此受到大量程序开发者的喜爱。基于Android平台具备良好的用户基础和用户体验和上述诸多优势,因此本文所述的远程视频监控报警系统将在Android智能手机操作系统上开发。1.2国内外研究现状和发展趋势1.2.1国内外研究现状国外对视频监控系统的研究起步较早,截至到目前,已经取得了丰厚的研究成果。由于国外无线网络覆盖范围较广,且宽带费用较低,也为视频监控系统的迅速发展提供了条件[3-5]。国外比较著名的视频监控设备供应商主要有美国的AT&T,即美国电话电报公司,英国的BT等。美国AT&T的所开发的视频监控系统不仅仅只用在政府等企事业单位,在家庭安防领域也得到了广泛的应用。它所开发的视频监控系统支持远程报警功能,为使用者提供了极大的便利。英国电信公司利用自己公司的优势,为用户提供可用于远程视频监控的智能网关,同时也推出了自己公司的远程视频监控产品,在人们家庭生活、办公交通等领域均得到了广泛的应用和推广。除了这两家公司之外,与之类似的国外远程视频监控产品或方案提供商还有法国的电信公司的LiveZoom、日本的NTTdocomo等[6-8]。国内对视频监控系统的研究在国内还处于刚刚起步阶段,一些高校和相关研究单位正在积极开展这方面的研究工作,与西方发达国家相比,我国的视频监控系统仍比较落后,存在较大的成长空间。目前,国内这方面的研究工作主要涉及以下几个方面[9]:(1)基于GPRS网络的远程监控系统GPRS网络具有实时在线、使用便捷的特点,最初国内的很多研究者对基于GPRS网络的远程监控系统进行了深入的研究和探索。由于视频监控系统需要传输监控摄像头拍摄的监控画面,因此需要传输大量的数据,而GPRS网络是靠网络流量进行计费的,那么利用GPRS网络进行视频监控时,会产生大量的流量费用,从而使视频监控系统的整体使用成本增加。(2)基于CAN总线和Internet的监控系统利用CAN总线组成监控局域网,然后再整体接入Internet,将CAN总线和Internet二者结合起来形成远程视频监控系统能够解决基于GPRS网络的视频监控系统的经济费用高的问题。由于CAN总线组网具备网络稳定的特点,因此这种2 方式组成的监控系统具有较强的可靠性。但是由于CAN总线网络采用特定视频传输线进行数据的传输,因此其传输距离和布线范围容易受到环境的影响,在辐射严重、环境恶劣的区域使用效果较差。(3)基于ARM芯片的嵌入式监控系统嵌入式视频监控系统采用ARM、DSP芯片等微控制器作为视频信号采集的服务器,视频信号经过采集之后,经过适当的压缩、编码上传至视频服务中心,视频服务中心通过互联网与各个视频监控客户端相连,视频监控客户端通过网络调取服务中心的监控数据。这种方法由于借用了第三方芯片作为视频中转的平台,增加了视频监控系统的复杂度,由于各个厂家生产的芯片接口不一,因此降低了系统原有的兼容性。随着通信技术的发展,无线网络和3G/4G网络的覆盖范围越来越广,便携式智能设备越来越普及,远程视频监控系统正逐步向移动平台扩展。随着Android、IOS和WindowsPhone智能手机操作系统的推广,程序开发者轻而易举就可以在这些系统上进行应用软件的开发,视频监控系统正逐步向移动平台过渡,即基于便携式智能终端设备的远程视频监控系统的应用正逐步推广普及。目前,国内的三大运营商都推出了自己的视频监控品牌,如中国电信的“全球眼”、中国联通的“宽视界”等[10]。国内一些科技公司如海康威视、浙江大华科技等都进行了相关视频监控设备的研发,并取得了一定的进展,如华科自主开发的监控品牌“随身眼”,就是为家庭、商铺等生活场所特制的安防产品[11-12]。1.2.2视频监控系统发展趋势未来的视频监控系统的发展主要具备以下趋势[13]:(1)专业化:视频监控系统在各行各业中都有应用,不同专业对视频监控系统的参数如画面清晰度、传输速度和画面延时等要求不同,因此随着人们对不同行业特征研究的深入,未来的视频监控系统应向适应不同行业的专业化方向发展,尽量满足不同行业对监控系统的要求[14]。(2)模块化:随着人们对监控系统需求的提高,视频监控系统已不仅仅是单独的监控系统,应同时具备报警、高级管理等功能,因此这些额外的功能必须以模块化的形式存在,便于用户集成和扩展。(3)高清化:随着图像处理和网络通信技术的迅猛发展,以及人们生活水平的改善,其对视频监控系统画质的要求越来越高,未来视频监控系统应为使用者3 提供高清晰的监控画面,以改善人们的观看体验,即未来的视频监控系统必然会向高清化方向发展。1.2.3视频监控系统存在的问题视频监控系统发展迅速,目前广泛应用的为移动视频监控系统,这些系统大多基于网络摄像机,利用网络摄像机的自动报警功能实现系统的报警提示,该种方法具有使用便捷、操作简单的特点,但仅仅针对具备自动报警功能的网络摄像机才适用,对于不具备自动报警功能的低端网络摄像机,则无法完成系统的报警功能。基于此问题,本文重点开发一套基于Android平台的移动视频监控报警系统,与其它系统不同的是该系统的报警检测功能在客户端Android平台上实现,对不具备自动报警功能的低端网络摄像机仍然适用,因此大大扩展了移动视频监控报警系统的应用范围。1.3主要内容和结构安排1.3.1本文主要工作内容在本文中,主要完成了一套在Android智能手机操作系统上使用的远程视频监控报警系统,通过该系统,用户利用Android智能手机可以对远程监控画面进行实时监视和报警。安装该系统的Android智能手机通过WIFI网络或3G/4G移动网络对远程网络摄像机拍摄的视频进行远程监控,同时能够对监控画面进行运动检测,当发现有运动目标出现或物体闯入监控区域时,系统自动向预先设置好的手机或邮箱进行报警提醒,同时将监控画面传输至设置好的手机或邮箱中。本文主要完成了以下几个方面的工作:(1)监控数据传输协议的对比研究在系统开发过程中,首先应对相关的理论知识进行研究,从而选出适合系统开发的监控数据传输协议,以满足系统画质清晰、画面流畅的要求,满足用户对远程监控画面能够进行实时观看的要求。(2)移动检测算法的对比研究与改进系统对摄像头采集得到的图像进行移动检测处理,当发现有移动目标闯入时触发相应报警机制,Android平台客户端会根据程序预先设置选择终端响铃、向4 特定号码发送短消息或向特定邮箱发送邮件等报警功能。在视频监控系统中,监控摄像头与监控场景之间的相对位置有以下两种情况:一是二者之间无相对运动,二是二者之间存在相对运动,当监控摄像头与监控场景之间存在相对运动时,其运动目标检测相对复杂,本文仅讨论监控摄像头与监控场景之间无相对运动的情况[15]。当监控摄像头与监控场景之间无相对运动时,移动目标的检测算法通常有光流法、帧差法和背景差法。光流法是根据运动目标的速度场进行判断的,帧差法和背景差法是通过视频帧进行差分判断的。当监控场景中存在运动目标时,监控视频的当前帧和以前的帧图像之间就会有变化,对二者做差分,得出两帧之间的不同像素,然后将其与设定的阈值进行比较,从而得出监控场景中是否存在运动目标。帧差法和背景差法都是对视频帧进行做差,两者不同的是做差分的视频帧。帧差法每次都是将当前帧与上一视频帧进行差分,因此帧差法也称为相邻帧差法,而背景差法则是将当前帧与背景帧进行差分。相邻帧差法可以适应不同的动态环境,具有较好的稳定性,但是如果运动目标移动十分缓慢,即两相邻帧之间的变化很小,当其差分结果小于设定阈值时,就会产生误判[16]。背景差分法中当前帧不直接与上一视频帧做差分,而是每次均与设定的背景帧做差分,这种算法可以解决相邻帧差法的不足,但同时也存在缺陷,如背景的如何选择和更新等[17]。本文在经过对光流法、帧差法和背景差分法的对比分析后,最终采用帧差法进行运动目标的检测,即本文最终将采用帧差法对摄像头所采集得到的视频信号进行运动检测。(3)远程监控数据的解析与播放在Android智能手机上完成了远程监控摄像头拍摄监控视频的实时解析和播放,画质清晰且播放流畅,具备良好的观看体验。(4)Android报警模块的设计与实现当服务器端检测到监控区域有运动物体时,会向客户端Android系统智能手机发送报警信号,客户端程序接收到报警信号后,触发相应的报警动作引起监控者的注意。报警功能的实现方式可由用户自己设定,可以设置为手机响铃/震动、向指定号码发送短消息/打电话、向指定邮箱发送邮件等。报警模块的功能主要是给用户以提醒,在本文开发过程中,主要利用了Android系统的Thread类,在系统后台不间断地对接收到的监控画面进行移动目标检测,当检测到存在移动目标时,通过Intent启动相应的报警处置程序,即向5 特定邮箱发送邮件或向特定手机号码发送短信。1.3.2本文结构安排根据全文主要工作,本文将用五个章节进行系统的设计和开发,各个章节具体内容如下:第一章为全文的绪论部分,首先介绍了本文的研究背景和意义,主要包括视频监控系统的国内外现状、发展趋势和目前存在的问题等,然后对全文主要工作内容进行了简单概括。第二章首先对本文涉及的主要关键技术和概念进行了介绍和分析,主要包括Android系统的相关讲解、通信协议的分析、视频编码的介绍和对移动检测算法的研究等。然后分析了系统的总体需求,完成了系统的需求分析和总体方案设计,对系统的整个工作流程进行了简单描述。第三章为文章的具体实施环节,介绍了Android开发环境的搭建和基于Android平台的远程视频监控系统的具体设计和实现,主要包含远程监控数据的实时解析和播放、运动检测算法实现和报警模块的设计和开发。第四章为文章的集成测试环节,介绍了系统测试与软件打包及安装方法。第五章总结了本文所做的工作,并对下一步的计划做出了展望。6 第2章系统关键技术研究与总体设计2.1Android系统简介2.1.1Android发展史Android是一种以Linux为内核的移动终端智能操作系统,主要用于智能手机、平板电脑等便携式设备,其最初由Google公司负责开发,后来由开放手机联盟负责维护和更新。目前,在国内使用最广的智能手机操作系统主要有谷歌的Android、苹果的IOS和微软的WindowsPhone,与其它两种操作系统相比,Android最大的特点就是开源的[18]。美国人安迪.罗宾最先提出了Android的概念,Android起初的意思为机器人,后来被Google收购,从而建立开放手机联盟,共同维护这个开源的智能手机操作系统[19]。从2008年发布的第一版操作系统Android1.0开始,截止到目前,其已经占据了全球智能手机市场的3/4以上[20]。Android系统采用Linux为系统内核,利用Java语言在Eclipse集成环境中进行应用程序的开发,使用Google公司提供的统一API接口。与其它智能手机操作系统不同的是,Android系统具备以下几个独有的特点[21]:(1)开源性:Android系统是一个完全开放的系统,所有源码对外界是公开的,其最初的设计目的就是提供一个开放的统一的智能手机操作系统平台。在其上进行应用程序的开发和编写,完全不用申请开放版权问题,因此越来越多的硬件厂家加入到Android平台上来。(2)公平性:在Android系统上用户可以根据自己的喜好对所有应用程序进行卸载或删除,除了系统运行必备的关键模块外,所有应用程序之间是公平的,用户具备绝对的选择权。(3)互通性:由于Android系统的开发人员均利用了Google公司提供的统一API接口,因此各应用程序之间可以相互调用,程序开发人员可以根据自己的需要将系统代码加入到自己的应用程序中,从而完成各应用程序之间的相互关联互通。(4)方便性:Android系统为广大程序开发者提供了大量的应用程序模块库,7 如谷歌地图模块、图形界面处理模块等,开发者完全可以直接在这些模块上进行相关应用程序的开发。由于Android系统采用较为成熟的Java编程语言进行程序开发,因此便于开发者入门和掌握。(5)超大的市场应用人群:目前Android系统在智能手机、平台操作系统中的市场占有率已远远超过了75%[22],并仍呈现继续上升的趋势。2.1.2Android系统架构Android系统是一种以Linux为内核的智能手机操作系统,其不仅可以安装在智能手机上,也可以安装在平板电脑,GPS导航等便携式智能设备上。Android系统按封装程度的强弱从内至外大致可分为五个层次,最内层为Linux核心层,然后是应用程序框架层,接着是运行环境层和函数库层,最上面为用户最熟悉的应用程序层[23],其系统架构可用图2.1进行表示。图2.1Android系统整体架构图(1)应用程序层用户通过各种各样的应用来满足各种需求,应用层是用户最直观接触的层次,也是影响用户体验的重要环节。应用程序层的各个应用一般均由一个放置在系统主页面的图标,用户单击该图标时,就会启动相应的应用程序。(2)应用程序框架层应用程序框架层其实就是Android系统的API接口,开发者利用这些API接口便可以完成整个应用程序的开发。应用程序框架层主要包含以下几个部分:用户界面(ViewSystem):用户界面负责提供系统多样化的UI,用户界面一8 般由很多按钮、文本框、列表框等组成。活动管理器(ActivityManager):活动管理器负责管理应用程序的各个Activity的运行状态,同时用于保存各个Activity的回溯,当用户按下返回按钮时,应用程序会返回用户之前打开的该应用程序的上一个Activity,该功能的实现就是由活动管理器实现的。内容提供器(ContentProviders):内容提供器的主要功能是实现各应用程序之间数据的共享,各应用程序之间有时需要相互调用数据,而数据的共享功能正是由内容提供器完成的。资源管理器(ResourceManager):资源管理器用来管理系统资源信息,比如应用程序保存的字符串、应用程序背景图片、应用程序的页面显示信息等。信息管理器(NotificationManager):信息管理器主要负责在系统状态栏显示相关信息,包括天气信息、电池电量信息、短信提醒、电话提醒、便签提醒、闹钟状态等,主要是给用户通知或提醒。(3)运行环境层Android运行环境层可分成Android核心函数库与Dalvik虚拟机。Android核心函数库所提供的功能大部分与Sun公司的Java核心库函数功能相同。一般编写好的Java程序编译后会产生class文件(或称Bytecode),而且由JVM(JavaVirtualMachine)运行;但是Android不使用JVM,而改用Google自行研发的Dalvik虚拟机,所运行的文件则是dex文件(DalvikExecutable),而非class文件。在Dalvik虚拟机运行dex文件之前,必须使用Android开发工具(AndroidSDK)内的dx工具将class文件转成dex文件,然后交给Dalvik虚拟机运行,如图2.2所示。dex文件比class文件更精简、运行性能更佳,而且更省电,可以说是为了移动设备量身打造的[24]。由前述可知,开发者仍需要以Java程序语言编写Android应用程序,而最后dx工具会将java文件产生的class文件转成dex文件[25]。图2.2Android应用开发流程图(4)函数库层Android有一个内部函数库,此函数库主要以C/C++编写而成。Android应用9 程序开发人员并非直接使用此函数库,而是通过更上层的应用程序框架层来使用此函数库功能,所以有人称此类函数库为原生函数库(NativeLibraries)。此函数库依照功能又可细分成各种类型的函数库,以下列出比较重要的函数库[26]。MediaFramework(媒体函数库):此函数库让Android可以播放与录制许多常见的音频与视频文件,支持的文件类型包括MPEG4、H.264、MP3、AAC、AMR、JPG与PNG等[27]。SurfaceManager(外观管理函数库):管理图形界面的操作与2D、3D图层的显示。WebKit:Android内置的浏览器,其引擎就是WebKit,与Google的Chrome、Apple的Safari浏览器引擎相同。SGL:专门处理Android的2D图形。OpenGL|ES:适合嵌入式系统使用的3D图形函数库,此函数库实现OpenGLES1.0版以上的功能。如果Android手机本身有3D硬件加速器,程序会直接使用该硬件加速器,否则会使用软件加速功能[28]。SQLite:属轻量级但功能齐全的关系数据库引擎,方便让Android所有的应用程序访问数据。(5)Linux核心层Android系统的核心为Linux,具体版本为Linux2.6版本。Android系统所有的系统服务均是由其核心Linux为其提供的,因此可以说Linux是Android系统服务的最终提供者。Linux核心为Android系统提供的系统服务主要有安全性管理(Security)、内存管理(MemoryManagement)、进程管理(ProcessManagement)、网络栈(NetworkStack)、驱动模型(DriverModel)、电源管理(PowerManagement)等[29]。2.1.3Android四大组件在Android系统上进行应用程序的开发,离不开四个组件的使用,Android系统上运行的任何应用程序,均是由四大组件相互配合完成设计的功能的[30]。Android系统四大组件分别为Activity、Service、ContentProvider和BroadcastReceiver,下面将分别对每一个组件进行简要介绍。(1)Activity10 Activity一般均有相对应的布局文件,也就是说一般情况下,一个活动对应一个布局文件,而一个布局文件就是应用程序的一个屏幕画面,在Activity对应的布局文件中放入需要的控件,并设置相应的监听函数,当用户点击相应的控件时,触发相应的函数功能,从而完成应用程序与用户的交互。一个Activity对应一个屏幕,当屏幕需要切换时,Activity就会调用启动另外一个Activity,Activity之间的相互启动和调用是由Intent完成的,即Intent是Activity之间相互通信的信使。在用Intent启动另外一个Activity时,原始Activity会发出一个Intent,该Intent应包含相应的参数,分别为动作的类型和相对应的数据参数。通过Intent的传递,Andrid应用程序可以完成多个屏幕画面的切换和来回展示,同时也可以将需要的数据信息传递给另外的屏幕画面,如在一个用户界面中输入用户名称和密码,点击登陆后在下一个页面中显示出在第一个页面输入的用户名称及相关欢迎词等[31]。通过对AndroidManifest进行配置,可以设置Android应用程序默认启动Activity,应用程序启动后首先启动的Activity相对应的布局文件为该应用程序的首页面。(2)Service与Activity组件不同,Service是没有用户界面的组件,即它是在应用程序后台运行的,不接受用户的输入和操作,与用户无直接的交互,通常用来开发后台运行程序,比如Android系统的音乐播放器,当用户关闭音乐播放器该应用程序对应的主页面后,一般希望音乐还在后台继续播放,因为用户听音乐,无需一直盯着音乐播放器的页面,用户可以一般听音乐,一边玩别的应用程序,因此就可以在音乐播放器的Activity中设置一个相对应的Service,当用户打开音乐播放器时,该Activity启动响应的Service,当Activity退出后,Service仍在后台运行,音乐还在后台保持播放状态[32]。Service的生命周期比Activity长,Service不会自己启动,必须通过相对应的Activity启动它,Service的启动有两种,可以通过Context.startService()启动Service,也可以通过Context.bindService()来启动Service。前者为启动一个新的Service,其启动的Service会一直后台运行,直至该Service运行结束。后者为连接到一个Service,当该Service未运行时,其与前者的功能相同,当该Service已经在运行状态时,后者可以进行相关参数的传递,比如音乐播放的暂停、重复等。(3)ContentProviderAndroid系统各应用程序之间有时需要共享数据,比如编写短消息时需要添11 加手机联系人数据、微信添加好友时也需要读取手机联系人数据,为了实现该功能,Android系统为程序开发者提供了ContentProvider组件。ContentProvider与ContentResolver成对出现,ContentProvider负责共享应用程序的数据,ContentResolver负责读取或操作由ContentProvider提供的数据。该组件可以使Android系统的多个应用程序共享某些关键数据,为系统提供了一致的数据处理格式。(4)BroadcastReceiver在进行Android应用程序开发时,有些应用程序需要接受外部事件从而做出相应的响应,该功能的实现由Android系统的BroadcastReceiver来完成[33]。与Service相同,BroadcastReceiver也没有用户界面,但当它接受到外部事件,需要应用程序做出响应时,可以启动相应的Activity或Service。BroadcastReceiver还可以通过NotificationManager提醒用户,对用户发出提醒的方式有很多,如手机震动、响铃、闪灯等,程序开发者可以根据实际需要进行选择。BroadcastReceiver按发送形式的不同可分为普通BroadcastReceiver、有序BroadcastReceiver和异步BroadcastReceiver。有序BroadcastReceiver在发送过程中需要设置优先级,级别数值可以为-1000到1000之间的任意整数,级别越高,优先级越高,不同优先级的有序BroadcastReceiver,优先级高的接收到的最早,同级别有序BroadcastReceiver之间接收的先后顺序是随机的[34]。2.2流媒体传输协议传统方式下的音视频都是在下载完成之后才可以播放,流媒体技术的出现,很好的解决了这一弊端,使得用户可以在下载的同时进行播放,从而大大降低了用户的等待时间,极大地改善了用户体验[35]。由于流媒体技术的实时性较好,因此将它用在视频监控系统中是十分恰当的,也正因如此,流媒体技术在视频监控系统中已经得到了广泛的使用。2.2.1实时传输协议实时传输协议英文全称为Real-timeTransportProtocol,英文缩写为RTP,是应用在OSI七层网络模型中第七层应用层的网络协议。RTP协议的主要应用对象为多媒体数据流,其为多媒体数据流的网络传输制定了标准格式[36]。RTP协议本身并不能提供多媒体数据包的按时有效发送,在RTP数据包中含有数据的序列12 号,因此在发送过程中数据包并不能保证有序发送,也无法保证接收方有序接收,它允许接收方在接收到数据包后,按照数据包的序列号进行重新排序,从而保证多媒体数据流传输的可靠性和实时性。利用RTP协议进行多媒体数据传输时,发送端以固定的速率发送多媒体数据流,接收端以同样的速率接收多媒体数据流,从而实现音视频多媒体的实时播放,由于在播放过程中,并没有完成整个音视频文件的下载,因此在不向服务器重新发起请求时无法实现重复播放,而利用其它协议进行音视频播放时,由于在播放前,已经完成了整个文件的下载,所以可以实现音视频的重复播放。2.2.2实时传输控制协议实时传输控制协议英文全称为Real-timeTransportControlProtocol,英文缩写为RTCP,与RTP协议相同,也是应用在OSI七层网络模型中第七层应用层的网络协议[37]。RTCP与RTP协议相结合,共同传输多媒体数据包,在具体传输过程中,RTP负责具体数据流的传输,RTCP负责相关控制信息的传输,控制信息和多媒体数据一起打包发送。RTCP协议为RTP协议的有效传输提供保障和反馈信息,同时RTCP协议负责统计相关多媒体连接的信息。在实际使用过程中,RTCP和RTP协议往往是配套使用的,可以利用RTCP协议提升RTP协议的服务质量,RTCP不仅可以使用RTP协议来传输多媒体数据,还可以使用其它传输层的网络协议如TCP、UDP等进行多媒体数据的传递,因此它具备良好的可扩展性,是一种与http协议很相似的应用层网络协议。2.3视频压缩技术视频信息包含大量的视频图像信息,因此含有大量的视频数据,如果直接在网络上进行传输这么大的数据量,则会需要占用很大的网络带宽,通常情况下,视频信息在网络传输前一般都需要进行视频压缩处理。目前,国际标准组织制定了大量的关于视频压缩技术的标准,其中应用最广、编码效率较高、得到社会各界普遍认可的视频图像压缩标准主要有H..261、H.263、H.264标准和MPEG-1、MPEG-2、MPEG-4标准,其中H系列标准由国际电信联盟制定,MPEG系列标准由国际标准化组织制定。这两项标准的推出,极大地促进了视频编码技术的发展。目前,在视频监控领域,广泛采用的视频压缩编码大13 多采用MPEG-4或H.264标准,利用视频编码压缩技术,可以极大地缩小视频信息传递时所需的网络带宽,提高网络传输速率。2.3.1H.264标准H.264标准在编码结构上进行了层次划分,可分为视频编码层和网络信息提取层,视频编码层主要负责视频信息的编码,其主要功能是寻找合适的编码方式,获得最高的编码效率。网络信息提取层主要负责收集视频数据的网络信息,如编码头信息、编码端网络传输信息等,它将收集到的视频数据信息准确传递给相关传输层协议,使得视频编码信息得以高效保质的在网络中传输。与其它编码技术相比,H.264编码非常适合移动视频监控领域,其主要特点包含以下几个方面:(1)高压缩比:H.264编码技术可以获得较高的视频信息压缩比,从而极大地降低视频信息网络传输时所占用的带宽。(2)误码率低:利用H.264编码技术进行视频压缩,在网络传输时可以获得较低的网络传输误码率。(3)图像质量高:利用该压缩技术时可以获得较清晰的视频图像,同时该编码技术具备较强的网络适应能力,能够适应复杂网络环境下视频信息压缩编码和网络传输。为了适应不同应用场景的需要,H.264从视频分辨率和比特率方面进行了四个不同等级的划分,分别为基本等级、主要等级、扩展等级和高级等级,每种等级对应不同的应用场合,其视频分辨率也不同,从低到高分别为公用分辨率格式和高清数字电视分辨率格式。H.264压缩编码并不是十全十美的,其同样存在缺陷吗,由于它提供了高压缩率和清晰的图像,所以其对视频解码器的要求很高,一般配置较低的普通解码器无法满足该压缩编码的要求,只有在硬件设备能够实现H.264解码的前提下,才能很好的发挥出H.264压缩编码技术的优秀性能。2.3.2MPEG-4标准MPEG系列标准中的MPEG-1与MPEG-2均可以处理视频中的所有帧数据,MPEG系列标准中MPEG-4标准于1998年10月被提出以来,成为MPEG系列所有标准中应用最广的标准之一。它的出现,目的是为了与国际视频压缩编码接轨,目前已成为国际上视频压缩编码的通用标准之一[38]。MPEG-4与其它同系列标准14 相比,主要具备以下几个特性:(1)可以适应更低的比特率MEFG系列标准中MPEG-1和MPEG-2对编码比特率的要求较高,一般当编码比特率大于1Mbps时,应用MPEG-1和MPEG-2标准的效果较好。当编码比特率较低时,比如当比特率低于10kbps或更低时,MPEG-1和MPEG-2标准不能有效的进行视频压缩编码,从而无法发挥视频压缩编码应有的功效,而MPEG-4标准在较低的编码比特率下,仍能很好的进行视频压缩编码,因此MPEG-4对低比特率压缩编码具备很强的适应能力。(2)独特的编码方式与其它MPEG系列标准不同的是,MPEG-4标准将每个视频场景分成多个视频对象,支持对每个视频对象进行编码,而其它同系列编码标准则将编码场景作为一系列不同的矩形帧进行编码。MPSG-4编码标准支持面向对象的编码方式,对视频帧序列中的每一个视频对象进行单独编码。提高了编码场景的交互性,提高了系统的编码效率,为视频编码开拓了一个新的研究方向。(3)编码模式的提升MPEG-1标准由于没有引入“工具集”的概念,其编码的灵活性受到严重制约,MPEG-2标准在此基础上引入了“工具集”的相关概念,从而使得其编码灵活性得到大幅提高。MPEG-2标准下的工具集是基于相关配置的标准工具集,在MPEG-4标准中,对此“工具集”进行了扩展和优化,使得MPEG-4标准朝着更灵活的方向进步。2.4移动目标检测算法移动目标检测的目的是为了有效提取视频图像中的变化部分,其是智能图像处理的基本组成部分,是人工智能和机器视觉发展的基础[39]。在视频监控系统中进行移动目标检测是安防系统的一个重要特征,利用移动目标检测技术可以大大提高被监控区域的安全性,在被监控区域一旦出现移动目标,系统可以有选择地进行不同方式的报警,以提醒管理人及时查看,排除安全隐患。目前广泛采用的移动目标检测算法主要有光流法、背景差法和帧差法,本文中将对这三种方法分别作简单介绍,并进行对比分析,最后选定本文所采用的移动目标检测算法。15 2.4.1光流法光流法最初是由美国学者提出的,它通过被检测物体的像素点在运动时产生的速度场进行检测,该方法体现了物体的运动信息和形态特征,在摄像头运动时仍可检测出识别对象,缺点是算法耗时较长,在实时监控系统中实现较困难。2.4.2帧差法帧差法又称图像序列差分法,它利用相邻两帧之间的差来判断是否存在运动目标。该方法的最简单实现形式为对相邻的两帧图像进行差分,然后将所得到的结果与阈值函数进行对比,如果差分结果大于阈值函数,则二值差分图像值为1,否则为0,具体实现原理可用下式进行表示[40]:1iff(x,y,t)f(x,y,t)T12fd(x,y,t1,t2).........................(2.1)0其它其中阈值T为根据经验选定的固定值,当差分结果大于T时,认为存在移动目标,当差分结果小于T时,认为不存在运动目标。帧差法由于每次均取相邻的视频帧进行做差,因此在实际计算过程中该方法对光线变化的敏感性较低,不易受到气候条件变化的影响。计算过程比较简单,算法的整体耗时较短,有利于在便携式智能终端上实现,该方法存在的问题就是不能有效分割出运动目标,只能检测到目标移动。2.4.3背景差法视频监控系统中所采用摄像机大多为固定摄像机,背景较固定,非常适合采用背景差法进行运动目标的检测。背景差法的核心思想是将当前帧与背景帧进行差分,将差分结果与设定的阈值函数进行比较,若差分结果大于阈值函数,则判断存在运动物体,当差分结果小于阈值函数时,则认为不存在运动目标。背景差分法可以有效地分割出完成的运动目标,但其存在的问题就是对光纤变化的敏感性较高,光照的变化会影响识别结果的准确率,同时如何更新算法的背景帧也是一个值得深究的问题,该方法由于选定了固定帧作为背景帧,因此不适合用于监控摄像机与监控场景之间存在相对运动的情况[41]。该算法背景的选取通常有两种常见方式,一种为选择视频的第一帧作为背景图像,然后每一帧均与该帧做差并将差分结果与阈值函数对比,另一种为选择视频第一帧作为背景图,将当前帧与16 背景帧做差分,若差分结果大于阈值时,认为有运动目标,并将当前帧作为新的背景帧,即背景更新算法。2.5系统需求分析目前国内的视频监控系统种类繁多,但经过调查发现,市场主流的远程视频监控系统普遍存在以下问题[42-43]:(1)系统造价昂贵,大多针对企业用户,不适合个人用户使用。(2)基于Internet有线网络进行数据传输,使得用户能够使用的范围受到极大地限制。(3)扩展性差,系统大多基于自有平台,开放互联性差,用户无法根据实际需求进行个性化的定制。(4)大多远程视频监控系统均采用带有自动报警功能的网络摄像机,运动目标检测或入侵检测等算法的实现均在网络摄像机上完成,然后再向远程客户端进行报警提示。对于不具备自动报警功能的网络摄像机则无法实现报警功能。基于目前远程视频监控报警系统存在的上述问题,本文所述基于Android平台的远程视频监控报警系统的设计和开发致力于在Android智能手机上开发一种远程视频监控系统,利用该系统可以对远程的网络摄像机的监控画面进行实时播放,同时可以对非法入侵等移动目标闯入进行报警提醒,与目前远程视频监控报警系统所不同的是该系统的移动目标检测在Android平台上实现,而非在远程摄像机上进行检测。因此,该系统能使不具备报警功能的网络摄像机具备报警功能,从而大大提高了系统的实用性和经济性。2.5.1硬件需求分析与配置根据系统需求分析,远程摄像机一般均需要24小时不间断的进行视频监控,同时画面的清晰度也要有一定的保证。因此,本文所述基于Android平台的远程视频监控报警系统需要有一个良好的网络摄像机,该摄像机能够满足连续不间断的监控,同时画面清晰度可以满足要求,且该网络摄像机自身不具备自动报警功能,系统的报警功能是由Android平台实现的。远程摄像机确定完成之后,系统还需一个基于Android平台的智能手机,该手机可以进行3G/4G网络连接或WIFI连接,以实现监控数据的网络传输。本文所述基于Android平台的远程视频监控17 报警系统的总体架构图可用图2.3表示,本文最终选择普顺达公司生产的EasyNFS-613A-M136型号的网络摄像机进行视频信号采集,该网络摄像机自带服务端,能将采集得到的视频图像进行压缩后通过网络发送出去,采用基于Android系统的红米手机进行视频信号的接收、解析、播放及报警功能等[44]。图2.3系统整体架构图2.5.2系统软件功能需求分析经过上述分析,本文所述基于Android平台的远程视频监控报警系统应具备以下功能:(1)视频采集功能:系统能够利用远程网络摄像机进行视频数据的实时采集。(2)视频传输与显示功能:系统能够将远程网络摄像机拍摄到的监控画面传输到用户Android手机上,用户Android手机上能够实时显示远程网络摄像机传送过来的监控画面。(3)视频片段或图片保存功能:用户利用Android手机客户端应用程序可以对远程摄像机传送过来的监控画面有选择地进行视频片段或单帧图像的保存。(4)报警功能:当远程网络摄像机拍摄的画面中有移动目标出现或非法入侵时,用户Android客户端应用程序能够按照用户预先设置的报警模式进行报警提醒,报警模式主要包含手机震动响铃、向特定号码发送短消息、向特定号码拨打电话或向特定邮箱发送邮件等。(5)关闭远程视频监控:用户通过Android客户端应用程序可以向远程摄像机发送停止监控命令,从而实现远程视频监控系统的关闭。2.5.3系统软件性能需求分析本文所述基于Android平台的远程视频监控报警系统除应满足上述功能性需18 求外,还应满足下列性能需求[45]:(1)网络无限制性:用户利用Android手机既可以使用WIFI进行网络连接,同时也可以使用3G/4G网络进行网络连接,无论采用何种连接形式,系统监控画面的清晰度和流畅度都应满足用户要求,(2)画质要求:客户端Android手机应用程序在实时显示监控画面时,要求所接收到的视频画面清晰度最低应在480*320以上,以满足用户的观看体验和系统的实际功能需求。(3)实时性要求:用户无论采用何种方式联网,系统传输画面的延迟最大不得超过2秒,使系统监控画面的实时性得到切实保证。(4)Android平台的通用性:系统客户端应用程序应具备良好的兼容性,只要是Android平台的智能手机,均可安装该客户端应用程序。以保证当用户更换手机或手机丢失时,能够快速找到合适的手机安装此应用程序,从而最大限度的满足用户对远程被监控区域实时状况的掌握,保证远程监控端被监控区域内的安全。2.6系统功能模块划分和总体设计图2.4系统功能模块图整个监控报警系统可分为远程监控端和用户客户端两部分构成,本文中远程监控端利用清晰度满足要求的现成的网络摄像机,其将采集到的视频监控信号通过网络发送出去。用户客户端采用基于Android系统的智能手机,本文将重点介绍在该手机上完成用户客户端应用程序的开发和调试。客户端应用程序主要功能包含用户信息的保存、网络摄像机视频数据的接收与解析、运动目标的检测、非19 法闯入的报警功能等。具体实施过程中客户端应用程序可分为网络传输模块、图形界面模块、视频播放模块、移动检测模块、报警模块和用户信息缓存模块(如图2.4所示)。网络传输模块负责接收网络摄像机发送过来的实时数据,图形界面模块负责系统主界面的展示及系统参数的设置,视频播放模块负责实时播放网络摄像机发送过来的监控数据,移动检测模块负责实现运动目标的检测,报警模块负责当移动检测模块检测到有移动目标后应用程序报警功能的实现,用户信息的缓存模块主要用来临时保存用户所输入的身份信息、网络摄像机的网络参数信息等,使用户不必每次打开都需要重新进行参数设置。2.6.1客户端功能模块设计(1)网络传输模块网络传输模块主要负责与远程网络摄像机建立Socket网络连接,并实时接收远程网络摄像机发送过来的视频数据。网络传输模块运行流程如图2.5所示。图2.5网络传输模块流程图20 (2)图形界面模块图形界面模块又称用户界面,主要包含登陆界面、系统主界面和设置界面。登陆界面主要展示系统的欢迎页面、版本信息及开发者相关信息等,系统主页面主要负责接收到的监控数据的实时显示,设置页面主要负责系统报警方式的设置等。(3)视频播放模块视频播放模块负责Socket数据流的接收与实时解析,并将解析得到的监控画面在系统主界面上展示出来,该模块与图形界面模块相互配合,共同完成远程监控画面的实时播放。(4)移动检测模块移动检测模块在后台运行,负责对所接收到的视频进行移动目标检测,当发现有移动目标时,则启动系统报警模块,将报警信息发出,给用户以提醒。(5)报警模块报警模块仅在系统检测到运动目标时才被启动,其可以根据用户的需要提供多种报警方式,用户根据实际情况选择其中的一种或多种,极大地扩展了系统的应用范围和使用便捷性。(6)用户信息缓存模块用户信息缓存模块可以将用户首次输入的设置信息等以缓存的方式在本地存储起来,用户下次启动该应用程序时,无需重新输入,系统直接从缓存中将已输入信息调取出来作为用户的默认信息,当用户重新输入设置信息后,新的内容会覆盖旧的缓存信息。当用户将程序删除或清除缓存后,该部分内容自动清空,用户再打开此应用时,系统默认为应用程序为首次打开,需要重新输入相关参数。2.6.2系统工作流程基于Android平台的远程视频监控报警系统主要分为远程服务端和用户客户端两部分组成,远程服务端由网络摄像机组成,主要负责视频信息的采集、压缩和发送。用户客户端由基于Android平台的智能手机组成,客户端主要负责监控数据的接收、实时解析和播放、移动目标的检测和报警功能的实现等。用户客户端系统的大致工作流程示意图如图2.6表示。21 图2.6系统工作流程示意图2.6.3系统数据流向本文所述基于Android系统的远程视频监控报警系统的主要数据流向包含以下几个部分:(1)远程网络摄像机初始化,并进来视频信号的采集;(2)远程网络摄像机将采集得到的视频数据经过压缩编码后放入缓冲区内,并且创建Socket,用于接收客户端发起的Socket网络连接请求;(3)用户在客户端应用程序上的设置界面输入网络摄像机的IP地址和端口号,首次输入完成后将所输入的信息缓存在本地,下次打开此应用时无需重新输入;(4)用户通过发起连接的请求按钮,向已配置完成的网络摄像机发送Socket网络连接请求,(5)远程网络摄像机收到客户端应用程序发起的连接请求后,建立Socket连接,开始进行视频数据的发送;(6)客户端应用程序开始接收远程网络摄像机发送的视频数据,在后台实时解析并播放监控画面,同时移动检测算法开启,对所接收到的视频画面进行运动目标检测;(7)当客户端应用程序检测到有运动目标进入时,开启客户端应用程序的报警功能,将所检测到的几帧视频画面以邮件形式发送到指定的报警邮箱,同时对已设置好的手机号码进行振铃或短信提醒。综上所述,整个系统的数据流向可用图2.7进行表示。22 图2.7系统数据流向示意图2.7本章小结本章首先介绍了Android系统的相关概念,接着分析了常用的流媒体传输协议和视频压缩技术,然后对系统整体架构、工作流程和数据流向进行了详细分析,并从硬件需求、软件功能需求和软件性能需求方面对系统进行了需求分析,最后23 按照系统功能完成了对系统模块的细化和分步设计。24 第3章基于Android平台的视频监控报警系统设计与实现3.1Android开发环境搭建本文中对Android开发环境的搭建主要分三部分来介绍,分别为相关软件的下载、使用相关软件搭建环境和配置AndroidSDK的环境变量。3.1.1相关软件的下载Android应用程序的开发是利用Java开发语言在Eclipse集成环境下进行的,因此首先需要搭建Java语言环境,需要下载JDK和Eclipse,Java开发环境搭建完毕后,需要进行Android开发环境的配置,需要添加AndroidSDK和ADT插件。Android开发环境的搭建一共需要下载JDK、Eclipse、AndroidSDK和ADT插件,这几个工具包的常用下载地址在网上可以轻易找到,本文中所用工具包均在官网下载,这里不在给出具体下载地址。(1)JDK的下载与安装JDK的英文全称是JavaSEDevelopmentKit,也就是Java开发工具箱的英文翻译。本文下载的JDK版本为JDK1.7,下载到本地电脑后双击进行安装。JDK的安装过程比较简单,在安装的时候注意将JDK和JRE安装到同一个路径下即可。JDK安装完成之后,需要对系统变量进行配置,主要包含JAVA_HOME和Path两个变量,具体配置比较简单,本文不再阐述,配置完成后进入系统命令行,运行java-version,如果JDK安装完好且配置正确,系统命令行会出现如图3.1所示输出。图3.1JDK配置成功示意图(2)Eclipse的下载安装Eclipse为基于Java编程语言的集成开发环境,在Eclipse上可以完成Java应25 用程序的开发,由于Android系统应用程序的开发也是基于Java编程语言的,因此在Eclipse上也可以完成Android应用程序的开发和调试。Eclipse的下载安装比较简单,只需选择与操作系统相对应的版本下载解压缩即可,无需独立安装。(3)下载AndroidSDKAndroidSDK英文全称为AndroidSoftwareDevelopmentKit,即Android应用程序开发工具包,里面包含了开发Android应用程序所必须的API库,以及开发调试Android应用程序所必须的其它插件。AndroidSDK下载完成后为一个压缩包文件,只需将其关联到Eclipse开发环境中即可使用。(4)下载ADTADT的英文全称为AndroidDevelopmentTools,即Android开发工具。ADT是Android开发者为推广Android平台,鼓励程序员进行Android应用程序的开发而推出的免费开发工具。使用ADT,可以轻松实现Android应用程序的新建、调试和运行。ADT下载完成也是一个压缩包文件,解压即可使用,无需独立安装。3.1.2Android开发环境搭建(1)安装Android的SDK在上面的操作中,我们已经下载好了Android的SDK的压缩包,现在我们就要将这个android-sdk_r24.0.2-windows.zip压缩包解压缩,解压后得到一个【android-sdk-windows】文件夹,这样就算是完成了Android的SDK的安装工作,文件夹里面的内容如图3.2所示:图3.2AndroidSDK内容目录利用“SDKManager.exe”可以完成AndroidSDK的更新和下载。(2)安装ADT插件到Eclipse由于前面已经下载完成了ADT,这里直接离线安装。解压eclipse-jee-luna-SR2-win32-x86_32.zip压缩包,解压成功之后,得到一个eclipse26 文件夹,用鼠标双击eclipse.exe启动Eclipse,第一次启动Eclipse时需要设置Eclipse的workspace,即eclipse的工作目录。Eclipse启动完成后,点击[Help]菜单->[InstallNewSoftware…],点击ADD按钮,然后在选择已下载解压完成的ADT文件夹。安装完成后,重启Eclipse。Eclipse重启之后就会将同一路径下的AndroidSDK和ADT插件关联起来,如果Eclipse未找到相应的AndroidSDK文件夹,则会提醒我们手动选择本地的AndroidSDK文件。3.1.3配置AndroidSDK的环境变量配置AndroidSDK的环境变量不是搭建Android开发环境必须要做的工作,但是配置了之后就可以很方便在命令行窗口使用AndroidSDK安装目录下的platform-tools和tools目录中的工具。AndroidSDK的环境变量值为SDK安装目录下的platform-tools文件夹和tools文件夹子目录路径,如我的分别为:E:AndroidDevelopToolandroid-sdk-windowsplatform-tools、E:AndroidDevelopToolandroid-sdk-windowstools,在变量值中,两个路径用逗号隔开。图3.3Android开发环境配置成功示意图(1)添加环境变量:变量名:ANDROID_SDK_HOME变量值:E:AndroidDevelopToolandroid-sdk-windows(这个Android的SDK的安装目录)(2)在path中添加如下内容:%ANDROID_SDK_HOME%tools;%ANDROID_SDK_HOME%platform-tools27 配置完成后,单击开始菜单里的运行,然后输入android-h,出现如图3.3所示内容说明Android环境变量已经配置好了。3.2系统界面设计用户操作应用程序是通过系统界面的相应控件实现的,系统界面是应用程序展示给用户的交互窗口,系统界面设计的优劣对应用程序的用户体验度具有直接影响。通常情况下,Android应用程序开发公司在应用程序界面设计的过程中,均由专业美工收集素材,UI设计师完成界面设计。本文所述Android应用程序的界面设计并未涉及专业人士,均由作者本文独立完成。基于Android的远程视频监控报警系统的界面主要分为欢迎界面、主界面和设置界面,本文将在下面的篇幅中逐一介绍各个界面的设计。3.2.1Android布局简介Android系统界面设计过程中常用的布局方式有五种,分别为线性布局(LinearLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)和绝对布局(AbsoluteLayout)。(1)线性布局线性布局是Android所有布局方式中使用最广的,程序开发者可以根据应用程序的需要进行水平线性布局或垂直线性布局。水平线性布局和垂直线性布局的设置只需通过对“android:orientation”属性进行赋值即可,属性值可以等于vertical或horizontal。当应用程序不对“android:orientation”进行赋值时,系统默认应用程序是水平线性布局。(2)帧布局帧布局是从系统屏幕的左上角开始,在这种布局方式中,先放的控件放在最下面一层,后方的控件在上面一层,控件之间相互折叠覆盖,这种布局方式在具体实际开发中应用较少。(3)表格布局表格布局是除线性布局外使用较广的一种布局方式,它以列表的形式显示开发者放入的控件。在这种布局方式中,程序开发者可以根据需要添加不同的控件显示列和控件显示行。28 (4)相对布局相对布局是按照控件的相对位置关系进行布局的,除了页面的第一个控件,其它控件在摆放时均需选定参考控件,如放在参考控件的下方、上方等。(5)绝对布局在相对布局中,各控件之间的关系为参照对比关系,而在绝对布局中,每个控件的具体坐标是固定的。在应用程序开发过程中,由开发者指定各个控件的具体位置坐标,一旦确定,后期程序开发完成无法再进行修改。3.2.2系统欢迎界面的设计与实现欢迎界面又称闪屏界面,为用户打开应用程序时展示的第一个界面,好的欢迎界面可以给人耳目一新的感觉。欢迎界面通常由带有公司logo或名称的背景图片组成,其展示的时间在系统开发过程中可以认为指定,一旦程序开发完成,欢迎界面的展示时间便不可再进行更改。本文中欢迎界面采用一张色彩合适的背景图片加开发者信息作为欢迎界面,欢迎界面的显示时间设置为15秒,具体实现过程为首先新建一个SflashActivity继承自Actvity,在SflashActivity中设置函数checkNetAll用于检查用户手机的网络连接状态,如果用户手机没有有效的网络连接,则提醒用户开启网络连接后重试。与欢迎页面相对应的布局文件为R.layout.splash,具体代码如下所示,其中bg为预先设定的欢迎界面背景图片,保存在图像资源drawable文件夹下。3.2.3系统主页面设计与实现系统主页面的布置比较简单,主要用于监控画面的实时播放,视频画面的实时显示采用SurfaceView控件,相关按钮采用Button控件。本文中所述系统的主页面如图3.4,系统采用线性布局,最上面为SurfaceView控件,下面为九个Button29 控件,九个Button控件采用表格布局,可以分别实现系统参数的设置、报警功能的开启、监控功能的开启、远端摄像机的上移、下移、左移、右移、居中和系统的退出等功能。图3.4系统主页面示意图3.2.4系统设置页面的设计与实现系统设置页面为用户首次使用时,必须进行相关参数设置的页面,本系统中需用户手动输入的参数主要有远程网络摄像机的IP地址和端口号、报警方式的选择、报警号码的设置和报警邮箱的设置等。系统参数设置页面控件较复杂,主要有TextView、Button、CheckBox和EditText等。TextView控件用于显示相关信息,EditText控件用于接收用户输入,Button控件用于绑定相关的动作,CheckBox用于用户选择相应设置。本文所述基于Android平台的视频监控报警系统的参数设置页面设计结果如图3.5所示,该设置页面主要采用了线性布局和表格布局相结合的方式。30 图3.5系统参数设置页面示意图3.3远程监控数据解析3.3.1Android平台视频解析控件在Android智能手机上,视频的解码方式通常有两种,分别为硬件解码方式和软件解码方式,硬件解码方式实现方便,只需硬件设备支持即可,而软件解码方式需要在应用程序开发时,一并移植入解码库,实现比较复杂。目前,市场流行的Android系统智能手机,大都支持硬件解码方式,因此本文在系统开发的过程中,也使用此种方式进行视频的解码。在Android应用程序开发时,硬件解码器的调用有两种方式,一种是利用MediaPlayer进行调用,另外一种是利用VideoView进行调用。使用VideoView进行视频的播放显示时,最终也调用了MediaPlayer,因为VideoView为SurfaceView的子类,且实现了MediaController的相关接口函数。其在进行视频播放时,自动调取了MediaPlayer的功能。VideoView控件可以实现简单的视频播31 放功能,但是对视频播放的控制性不高,仅仅适合用于播放简单的任务。MediaPlayer控件可以实现较复杂播放任务的开发,在利用MediaPlayer进行视频播放任务的开发时,需要利用SurfaceView控件进行视频画面的显示,本文中将利用MediaPlayer和SurfaceView相结合的方式实现远程摄像头监控画面的解析和播放。为了使用SurfaceView插件进行视频画面的显示,需要在布局文件中放置SurfaceView控件,如3.2.3节所述,在相应的布局文件中已放入SurfaceView控件。利用MediaPlayer进行远程监控画面的解析播放时,首先需要完成系统相关设置,然后通过网络将远程监控摄像机拍摄的监控画面经压缩编码后的数据流接收过来,由于接收到的视频数据流为二进制数据,需要对接收得到的视频数据流进行转化,Java编程语言提供了相关函数可以直接将二进制数据流转换为图像数据,转换完成的监控图像在SurfaceView中显示出来并实时更新,从而完成了远程监控摄像机拍摄监控画面的接收、解析和播放功能。3.3.2远程监控数据解析流程本文中所述系统需要在Android智能手机上完成远程摄像机拍摄画面的实时接收、解析和播放功能,远程监控画面的接收、解析与播放过程的设计流程可用图3.6表示,系统完成这些功能,一共需要以下七步操作:(1)应用系统初始化,在这个阶段内,主要是由用户完成相关系统参数的设置,比如远程网络摄像机的IP地址和端口号,接收邮件报警的邮箱,发送报警邮件的邮箱账号和密码,接收短信报警的手机号码等。这些系统参数在系统首次启动时,由用户输入,输入后一直保存在本地缓存中,在系统再次启动时,只要相关参数不发生改变,用户无需重新进行输入,若相关参数发生了更改,用户仅需对相应参数进行重新设置并保存即可。(2)在应用程序首次运行时,在第一步中已完成了相关参数的设置,当用户点击保存后,相关设置信息如网络摄像机的IP地址和端口号等信息被提取出来,供应用程序发起Http连接使用。当应用程序不是首次运行时,系统初始化完成之后,应用程序直接读取用户之前保存的关于远程监控摄像机的相关信息。(3)应用程序启动后,通过Android提供的BufferReader类获取前面两步骤已经得到的相关网络连接参数,从而新建一个线程,开始向远程监控摄像机发送网络连接申请,并等待远程网络摄像机的授权。32 图3.6网络摄像机视频解析播放流程图(4)远程网络摄像机授权应用程序发起的网络连接申请后,开始向应用程序发送网络摄像机拍摄得到监控画面的数据信息。应用程序开始通过已建立的网络连接通道进行监控画面数据信息的实时接收,在这个过程中,网络中传输的是远程网络摄像机拍摄得到监控画面经压缩编码后得到的二进制视频数据流。(5)应用程序将远程摄像机发送的视频数据流接收过来,并通过Java语言自带的函数将二进制视频数据流转换为视频图像,该视频图像即为远程网络摄像机拍摄得到的监控画面的视频帧。(6)应用程序将已经得到的视频图像在SurfaceView控件中显示出来,并不断更新该视频图像,从而实现远程监控画面的实时播放功能。(7)应用程序中一个单独线程用于接收二进制数据流并将其转换为视频图像,一个线程负责将转换完成视频图像指派给相应的SurfaceView控件进行实时更新显示。3.4移动检测算法的实现本文中的移动检测算法主要是在Android平台上实现,由于OpenCV对数字图像处理的快捷性和高效性,本文将通过Java调用OpenCV接口来实现移动目标33 的检测。3.4.1Android+OpenCV开发环境搭建OpenCV的英文全称为OpenSourceComputerVisionLibrary,是一个跨平台的数字图像处理函数库,它由一系列的C函数和C++函数组成,支持多种语言平台的接口,集成了大量的数字图像处理的通用算法,能够快速解决数字图像处理方面的问题。OpenCV在1999年建立,起初由WillowGarage提供技术支持,截止到目前,OpenCV的最新版本为3.0版。OpenCV近年来发展十分迅速,在数字图像处理方面应用广泛,本文将在Android平台上调用OpenCV数字图像处理函数进行移动目标的检测,因此首先需要搭建Android+OpenCV的联合开发环境,然后再对系统获取的监控视频进行移动目标检测算法的设计和实现。图3.7Android应用程序加载OpenCV流程图OpenCV近年来发展迅猛,随着Android智能终端的发展,越来越多的传统科研平台转向Android移动设备。为了和Android系统架构保持同步,准确说是34 吸收Android框架层的优点,引入了OpenCVManager的概念,其本质是一个Service,用来管理OpenCV动态链接库,它工作在APP和OpenCV的动态链接库之间。OpenCVManager的结构就是模仿Android的Binder机制。利用OpenCV开发的Android应用程序在运行时,首先检查OpenCVManager存在不,如果不存在则会提示安装,如果存在,则会启动这个服务,然后系统初始化并加载OpenCV库,具体流程可用图3.7表示。搭建Android+OpenCV联合开发环境时,首先需完成相应开发插件的下载与安装,然后在Android开发环境中进行适当配置即可。本文中下载的开发插件版本为OpenCV-2.4.4-android-sdk,下载完成后直接解压缩,得到apk、samples、doc和sdk四个文件夹,其中apk就是OpenCVManager,samples为开发示例文件,doc为说明文档,sdk为联合开发时所需要的工具包。OpenCV开发插件下载完成后,需在Android开发环境中进行下列配置,以完成联合开发环境的搭建。图3.8加载OpenCV函数库的Android工程示例(1)生成OpenCVlibrary相对应的jar包首先将解压缩得到的OpenCV4Android-sdk文件拷到Android新建工程目录下,然后打开Eclipse切换到这个新的工作空间,右键import---General---ExistingProjectsintoworkspaces,选择OpenCV解压后的那个sdk包。然后clean一下,35 看bin文件夹下的opencvlibrary-2.4.4.jar是否生成,如果jar文件已经存在,则表明相应jar包已成功生成。(2)新建Android工程导入jar包接下来任意新建一个AndroidApplicationProject,然后选中该项目快捷键Alter+Enter,在下面的加库区域点Add,将导入工作空间的opencvsdk选中,可以看到在AndroidDependencies中将刚刚导包bin目录下生成的jar文件导进去了,之后就可以使用opencv的API了。jar包成功导入后的Android开发工程如图3.8所示,在该工程中,可以直接使用OpenCV提供的所有数字图像处理通用算法,如对图像进行灰度处理、平滑处理、放大缩小、差分等。3.4.2移动检测算法的实施目前,比较常用的移动检测算法主要有光流法、帧差法和背景差分法,本文中将首先对这三种常用移动检测算法进行对比分析,然后再决定在本文所述系统中采用的移动检测算法。(1)光流法光流法检测运动目标的基本原理为:根据运动物体的光流性质,将视频序列中的所有像素点都看作为速度矢量,这样所有的像素点就组成了一个运动矢量场。在运动的任意时间点上,图像的每一个点将一一对应三维目标上的每一个点。如果视频序列中不存在运动目标,那么在视频序列的整个区域内光流矢量是持续变化的。相反,如果存在运动目标,那么由运动目标产生的速度矢量与相邻区域内视频背景产生的速度矢量不一样,因此运动目标被检测出来。光流法实现的步骤为:首先通过图像中的灰度变化推断光流场,也就是对相邻的两帧视频序列进行运动估计,从运动估计得出的运动矢量进行图像的分割,接着对分割的图像进行相关处理等(如噪声干扰),相关处理做完之后对感染的区域数进行统计,如果存在两个或两个以上的感染区域,则场景是变化的,即存在运动目标,反之则不存在。传统光流法的计算方法如下[46]:当时间为t的时候,用f(x,y,t)来表示图像在(x,y)处的像素值,将运动图像表示为一个关于时间和地点的函数式,并将其按泰勒公式进行展开:2f(xdx,ydy,tdt)f(x,y,t)fdxfdyfdt()……(3.1)xyt36 其中fx,fy和ft分别为x,y,t在三个方向上的偏导数,因此可以得到如下公式:f(xdx,ydy,tdt)f(x,y,t)………………………(3.2)当dx,dy和dt很小时,则有:dxdyffzf……………………………(3.3)txydtdtdxdy为推算速度,c,(u,v),假定在设定区域内速度变化不大,则对误dtdt差的平方最小化为:22222E(x,y)(fufvf)(uuvv)……………(3.4)2xytxyxy2222上式中u,u,v,v为误差偏导数的平方,为拉格朗日系数,对公式3.4xyxy进行变化方程组为:222(f)uffvuff…………………………(3.5)xxyxt222(f)vffuvff…………………………(3.6)yxyyt公式(3.5)和(3.6)中u,v分别为x,y速度在方向上的平均速度,对由公式(3.7),(3.8)和(3.9)组成的方程组进行求解,便可得到速度。Puuf…………………………………(3.7)xDPvvf…………………………………(3.8)yD222Pfufv,Dff……………………(3.9)xyxy常用的光流计算方法有Horn-Schunck方法和Lucas-Kanade(LK)特征点算法等,本文中主要利用了Horn-Schunck方法对选取的视频序列进行移动目标检测,检测结果如图3.9所示。通过实验可以看出,光流法可以检测出单一运动目标,并且在实验过程可以事先不需要知道场景的任何信息,就可估算出视频序列中运动目标。但是根据光流法实现的原理可以看出,该方法对光照十分敏感,当光照发生改变时,即使没有运动目标仍会产生光流,这样就会给检测带来误差,同时由于光流法需要进行复杂的计算,因此该算法对硬件环境要求较高,且实时性较差。37 (a)原始图像(b)光流法检测图像图3.9光流法运动目标检测结果(2)背景差分法背景差分法是移动目标检测的常用算法之一,该算法的主要实现过程如图3.10所示。图3.10背景差分法实现过程在具体实施过程中,主要包含以下关键步骤[47]:①对输入的视频图像进行预处理,主要包括图像的二值化和滤波去噪等。图像滤波去噪的方法有很多,比较常用的有均值滤波、小波去噪、小波包去噪等,这些方法在OpenCV中均有固定的通用函数,在程序开发过程中,可以直接调用。②背景建模,即背景帧的选定。背景建模是影响整个算法准确度的关键一步,背景帧选取的合理得当,算法的准确度就会大幅提高,否则算法的准确度就会大幅降低。本文在移动检测算法的设计过程中,在第一次实现时,取视频的第一帧作为背景帧,然后根据前面N帧的灰度图像进行区间统计,从而确定具有统计意义的背景帧[48]。38 ③背景差分,将视频序列中的当前帧与选定的背景帧做差分,从而得到一个差分背景图,然后对差分得到的图像进行二值化,得到当前帧与背景帧的差分即运动的前景图。在图像二值化的过程中,阈值的如何选择是目前研究的一个热点。目前常用的方法有最大类间方差法、一维交叉熵阈值法和二维交叉熵阈值法等[49-50],本文在对比分析这几种方法的基础上,选择最大类间方差法设定判断阈值。④背景更新,当运动目标移动后,新的背景帧就会发生变化,需要对之前设定的背景帧进行更新,一般情况下均是将物体运动后产生的新视频帧作为新的背景帧,用来对后续视频帧进行差分[51]。本文对前面光流法所采用的视频序列利用背景差分法进行移动目标的检测,检测结果如图3.11所示。在实验过程中我们选择视频序列的第一帧作为背景帧,然后将每一帧均与背景帧进行差分,最后对差分结果进行最大类间方差法判断阈值,从而检测出运动目标。图3.11背景差分法运动目标检测结果图3.11中,图a为视频序列的第一帧,即背景帧,图b为当前视频帧,图c为当前帧与背景帧的差分,图d为移动目标检测的结果。从图中可以看出,背景差分法仍可以检测出视频序列中包含的运动目标。39 (3)帧差法图3.12三帧差分法流程图帧差法也是移动目标检测的常用算法之一,帧差法主要有两帧差法和三帧差法。两帧差分法就是将视频序列中的连续两帧做差,从而得出差分图像,然后根据差分图像和设定的阈值进行判断,若差分结果大于阈值,则该像素为前景,否则为背景。两帧差分法是最简单的运动目标检测算法,由于该方法计算简单、快速,因此在嵌入式系统中非常容易实现。但是由于两帧差分法求得的结果中可能会包含两帧的运动细节,因此检测出的运动目标一般都比实际目标大。三帧差分法是对视频序列中的连续三帧进行两两做差,然后对差分的结果进行与运算,从而获得两个差分图像的共同部分,实现三帧差分的目的,最终实现运动目标的检测。由于三帧差分法降低了检测目标被拉长拉高的概率,因此本文将采用三帧差分法进行运动目标的检测。图3.13三帧差分法运动目标检测结果三帧差分法的实现流程如图3.12所示。本文对前面所述的视频序列进行三帧40 差分运动目标检测,最终实现结果如图3.13所示。图3.13中,a,b,c为原始视频帧序列,图d为中间帧与前一帧的差分图像,图e为中间帧与后一帧的差分图像,图f为三帧差分法最终检测得到的运动目标图像。3.4.3移动检测算法分析由3.4.2节可以看出,三种方法均可检测出视频序列中的运动目标,为了对比三种检测算法的性能和效果,我们分别对这三种算法进行了检测精度、处理时间和存储空间的对比。(1)检测精度对比本文中我们利用检出率来评价检测算法的精度,为了消除外界环境和其它偶然因素的影响,在计算检出率时,我们分别利用三种算法对已知视频序列各检测30遍,检出率的计算方法为30遍检测中从视频序列中检测出的有效运动目标数与总运动目标数的比值。经过计算,本文所述的三种方法即光流法、背景差分法和三帧差分法对已知视频序列的检出率分别为94.7%,95.2%和95.8%。根据检出率分析得出,光流法的检测精度稍低于背景差分法和三帧差分法,背景差分法与三帧差分法的检出率相差不大。(2)处理时间针对已知的视频序列,分别计算三种算法对平均每帧视频图像的处理时间,为了减少偶然因素的影响,每种算法均对已知的视频序列进行了20遍检测,处理时间为20遍处理时间的平均值。经过计算得知,光流法、背景差分法和三帧差分法对每帧视频图像的平均处理时间分别为35.89ms,31.08ms和32.51ms。由此可见,背景差分法对每帧视频图像的处理速度最快,光流法最慢,三帧差分法处理速度居中。(3)由于本文所述系统需要在Android智能手机上运行,因此会受到处理时间和存储空间的限制,本文分别对三种算法所占用的内存情况进行了测试,测试结果为光流法所占用内存空间为2958kb,背景差分法所占用内存空间为1618kb,三帧差分法所占用内存空间为1996kb。由此可以看出,光流法所需计算了最大,代码所占用内存空间也最大。结合上面对比试验,本文最终将利用背景差分法进行运动目标的检测。41 3.5报警功能的实现本文中报警功能模块提供的报警方式主要有邮件报警、短信报警,用户可以根据需要选择其中的一种或两种。系统报警功能的实现流程如图3.14所示。图3.14报警功能实现流程图AndroidTelephony包含短消息发送的具体函数,本文基于Android平台的远程视频监控报警系统主要利用了Android提供的线程API进行短消息的发送。短消息的发送过程为当移动检测算法检测到有运动目标时,启动相应的短信发送线程,从而利用AndroidTelephonyMMS下sendMMsWorker()函数来实现。短信发送的目的号码为用户首次打开应用时已输入的报警提醒号码。如果用户设置了邮件报警,则当系统检测到移动目标存在时,就会通过intent.ACTION_SEND调用邮件处理程序,进行带附件邮件的发送,邮件发送地址仍为用户首次使用时输入的目的地址。42 3.6本章小结本章在完成Android开发环境搭建的基础上进行了系统界面的设计,然后对网络摄像头传送过来的监控数据的解析进行了详细分析和设计。然后为了快速实现移动目标检测算法,构建了基于Android+OpenCV的联合开发平台,利用OpenCV现有的图像处理通用函数对移动检测算法进行了设计和实现。最后,对系统报警功能的设计和实现进行了简要论述。43 44 第4章系统安装与测试4.1系统集成与发布在利用Eclipse开发Android应用程序时,每一次Debug和Run之后,都会在相对的工程目录bin文件夹下生成相应的可安装文件,即apk文件。用户只需将该apk文件安装到Android系统手机上就可以运行相应的应用程序。为了保证用户开发应用程序的安全,同时也为了能让更多的用户下载该应用程序,使用该应用程序,可以通过Eclipse工程打包技术将开发完成的apk文件进行集成和在Android应用市场中发布[52]。在Eclipse中对已开发完成的应用程序的打包步骤如下:(1)右键点击该工程项目,然后选择“AndroidTools”,然后点击ExportSignedApplicationPackage;(2)如果没有keystore文件,则选择createnewkeystore,如果已经有keystore证书文件,则直接点击useexistingkeystore,然后选择相应的证书文件即可;(3)keystore文件生成之后,选择DestinationAPKfile,单击Browse选择文件保存位置即可。通过上述步骤就可完成已开发应用程序的打包,打包之后的应用程序是受产权保护的,没有个人密钥是无法破解的,可以将其发布到Android应用市场上让更多用户使用,同时也保护了自己的开发成果不被任意修改或反编译[53]。本文所述基于Android平台的远程视频监控报警系统打包完毕后的文件如图4.1所示。图4.1打包完毕的应用程序45 4.2系统启动测试基于Android平台的远程视频监控报警系统开发完成之后,将其安装在Android智能手机上进行实机测试。本文中Android平台的智能手机选用红米Note1S,手机RAM为2G,为程序运行提供了足够的空间。系统调试所用网络摄像机如图4.2所示。开发完成的应用程序在红米手机上安装后的示意图如图4.3所示。图4.2网络摄像机示意图图4.3应用程序安装示意图4.2.1系统安装测试将开发完成的应用程序在Android手机上安装完成后,在实验室对系统功能进行测试,测试地点为吉大南岭基础科学实验室512,试验器材包含一个网络摄46 像机和一个安装该应用程序的Android智能手机,网络环境利用实验室已搭建完成的无线网络,系统测试画面如图4.4所示。图4.4系统测试环境图单击手机主屏幕上该应用程序对应的按钮,则启动该应用程序,应用程序启动后显示的为系统主页面,在Android智能手机上启动完毕后的系统主页面如图4.5所示,图中黑色的区域为SurfaceView控件所占用的屏幕区域,其所占位置大小可根据手机屏幕尺寸在程序开发时进行设置。图4.5应用程序实机运行主页面点击系统主页面上的参数设置按钮(如图4.5),则进入相应的系统设置页面,系统设置页面主要负责接收用户输入的相关参数,如网络摄像机IP地址、端口号、47 报警方式的选择、接收短信报警的手机号码、发件邮箱名称及发件邮箱密码等,系统参数设置页面运行效果如图4.6所示。图4.6应用程序实机运行系统参数设置页面4.2.2视频监控功能测试图4.7系统实时监控画面48 将应用程序在Android手机上安装完成后,对系统远程监控功能进行测试,网络摄像头通过网线直接接入Internet,Android系统手机则分别通过WIFI和4G网络进行监控数据的接收、解析与实时播放。由于WIFI网络的传输速度比4G网络更快,因此其监控画面也比4G网络下的更清晰、流畅。Android系统手机采用4G网络接入Internet进行远程视频监控时,其监控画面如图4.7所示。从图中可以看出,系统画面能满足监控系统的要求,具备一定的实用性。4.2.3邮件报警功能测试图4.8邮件报警示意图系统监控功能测试完成后,对系统的报警功能进行了测试,测试过程中选择了邮件报警的方式。在这种报警方式下,当系统检测到监控画面中有移动目标时,则将视频中的当前帧、上一帧和下一帧以附件的形式随邮件发送至目的邮箱。当监控画面有移动目标进入时,系统接收到的报警邮件如图4.8所示。4.2.4短信报警功能测试在短信报警模式下,需要设置接收短消息的手机号码,当系统检测到有移动目标闯入时,会自动向预先设置的手机号码发送报警短信,短信内容包含摄像机编号,移动目标出现的时间等。该功能实现的前提是安装此应用程序的Android手机已经安装SIM卡,并且短消息功能正常。当此应用程序安装在Android系统的平板电脑上时,由于平板电脑未安装SIM卡,因此短信报警功能在Android平49 板电脑上无法使用,因而我们将系统默认的报警方式设为邮件报警方式。如果系统安装在既不能联网也不能安装SIM卡的Android设备上时,系统的监控、报警功能均无法使用。系统短信报警功能测试结果如图4.9所示。图4.9短信报警功能测试结果4.3系统测试结果分析(1)网络接入方式分析为了对系统整体性能进行综合分析和评价,分别利用WIFI网络、4G/3G和GPRS网络进行了视频接收与显示,测试结果表明,系统仅在GPRS网络传输下出现偶尔卡顿现象,在WIFI和4G/3G网络下,均能流畅播放远程监控视频,因此本文所开发系统能满足预先设定的网络无限制性要求。(2)传输画面画质分析表4-1系统监控画面播放帧率测试分辨率12345678320×24017.818.418.617.216.318.719.418.6640×4809.69.710.28.99.59.48.89.7本文中对网络摄像机发送监控画面的分辨率分别为640×480、480×320两种50 模式下,各做了8组监控结果的测试,Android系统手机上视频播放帧率如表4-1所示。从表4-1可以看出,监控画面能够满足正常观看需求[54]。(3)系统通用性将系统安装包分别安装在4台不同配置的Android系统智能手机上,最终均获得了流畅、清晰的监控画面,因此系统具有较强的通用性和适用性,能够适应不同配置的Android智能手机终端。4.4本章小结在完成监控报警系统开发的基础上,本章对开发完成的应用程序进行了集成打包、安装测试,测试结果表明本文所开发的远程视频监控报警系统具备良好的可靠性、稳定性和适应性,能够满足日常生活生产监控的需要。51 52 第5章总结与展望5.1本文工作总结视频监控系统发展迅速,目前广泛应用的为移动视频监控系统,这些系统大多基于网络摄像机,利用网络摄像机的自动报警功能实现系统的报警提示,该种方法具有使用便捷、操作简单的特点,但仅仅针对具备自动报警功能的网络摄像机才适用,对于不具备自动报警功能的低端网络摄像机,则无法完成系统的报警功能。本文开发了一套基于Android平台的移动视频监控报警系统,与其它系统不同的是该系统的报警检测功能在客户端Android平台上实现,对不具备自动报警功能的低端网络摄像机仍然适用,因此大大扩展了移动视频监控报警系统的应用范围。本文主要完成了以下几个方面的工作:(1)Android系统及其应用程序开发的介绍完成了对Android系统及其对应应用程序开发过程的简单介绍,对Android系统的发展、架构和整体性能做了简要描述,对Android应用程序的四个组件和Android开发的常用控件进行了详细阐述。(2)Android开发环境的搭建完成了Android开发环境的搭建,并在此开发环境了上完成基于Android平台的远程监控报警系统的开发和调试。(3)移动检测算法的对比研究与改进本文主要对比分析了帧差法和背景差法两种移动检测算法,并且在Android+OpenCV联合开发平台上完成了背景差法的设计和实现。(4)远程监控数据的解析与播放在Android智能手机上完成了对远程监控摄像机拍摄监控画面的实时接收、解析和播放功能。在监控画面解析播放过程中,系统运行流畅,无卡顿,且监控画面清晰,能够满足日常生活视频监控的需要。(5)Android报警模块的设计与实现在Android系统上完成了报警功能模块的设计和开发,当系统检测到监控画面中有移动目标时,则按照预先设置的报警模式进行报警,提醒用户及时处理安全隐患。53 5.2下一步工作展望由于时间限制,本文的工作内容仍存在不足之处。(1)本文对移动目标检测算法的研究针对监控摄像机与监控场景之间无相对运动的情况,当监控摄像机与监控场景之间存在相对运动时,利用帧差法和背景差分法进行运动目标检测时,准确率会降低。(2)在系统报警模块的设计开发环节,讨论分析了短信报警和邮件报警两种方式,可增加电话报警、语音提醒等其它报警方式的设计。在接下来的学习研究过程中,将对上述工作内容进行逐步完善。54 参考文献[1]张勇.基于Android平台的远程视频监控系统关键技术研究[D].长春:吉林大学,2014.[2]焦哲.基于Android的移动视频监控系统系统设计与实现[D].成都:西南交通大学,2014.[3]JieSun,XiaofengXie,DexunShao.Theresearchofembeddedwirelessremotemobilevideosurveillancesystems.IEEEAppliedRoboticsforthePowerIndustry.2012:86-88.[4]平庆庆.Windows平台下的移动视频监控客户端软件设计[D].西安:西安电子科技大学,2013.[5]HuangYuanming.Thedesignandimplementationonanewgenerationofremotenetworkvideosurveillancesystem[C].20103rdInternationalConferenceonAdvancedComputerTheoryandEngineering(ICACTE).Chendu,2010:294-297[6]刘江川.基于Android的移动终端智能监控系统的研究与实现[D].沈阳:沈阳工业大学,2014..[7]ChongyuWei,LuweiZhao.DesignandImplementationofaTD_SCDMAVideoMonitoringSystemBasedonAndroid.ProcediaEngineering,2012,Vol.29:066-1070.[8]信师国,刘庆磊,刘全宾.网络视频监控系统现状和发展趋势[J].信息技术与信息化.2010.(01).[9]李昂,宋海声,苏小芸.基于Android的视频监控系统设计与实现[J].电子技术应用,2012,38(7):138-143.[10]JointVideoTeam(JVT)ofISO/IECMPEGandITU-TVCEG.DraftITU-Trecommendationandfinaldraftinternationalstandardofjointvideospecification(ITU-TRec.H.264/ISO/IEC14496-10AVC),JVT-G050.Pattaya,Mar.2003.[11]JiWoongLee,HyunYoe,DesignofAndroid-BasedIntegratedManagementSystemforLivestorkBarns[J],SecendInternationalConference,2011,UCMA2011,13-15.[12]J.F.DiMarzio,AndroidAProgrammersGuide[M],NewYork,McGraw-Hill,2008,319.[13]杨建全,梁华,王成友.视频监控技术的发展与现状[J].现代电子技术.2006,29(21):84-88,91.[14]徐世强,赵霁,牛泽民.基于GPRS的远程视频监控系统的设计与应用[J].计算机55 技术与发展,2010,20(12):150-153.[15]Zhao,Yanbo.AlowcostGSM/GPRSbasedwirelesshomesecuritysystem[J].ConsumerElectronics.2008.54(2):567-572.[16]王琨.国外移动视频监控发展概览[J].中国安防.2012(5):99-103.[17]周良忠译.软件开发与应用C++开发智能手机应用程序入门[M].北京:人民邮电出版社.2006.[18]何伟等.手机开发与应用[M].北京:人民邮电出版社.2006.[19]Ting-YuHuang,Guo-AnJian,Jui-ChinChu,JointAlgorithm/Code-LevelOptimazationofH.264VideoDecoderForMobileMultiMediaApplications[J],Acoustics,SpeechandSignalProcessing,2008:2189-2192.[20]周良忠译.应用程序开发[M].北京:人民邮电出版社.2005.[21]YuH,MengL,XuZ,etal.MobileMonitoringSystemDevelopment:ApplicationofH.264Real-TimeStreamingMedia[C].2010.[22]高嵩,赵方,宋茂强.移动流媒体视频监控系统的研究与设计[J].计算机应用研究.2009,26(3):1044-1046,1065.[23]ITU-TrecommendationH.261:Videocodecforaudiovisualservicesatp×64kbits,1990.[24]ITU-TrecommendationH.263:Videocodecforlowbitratecommunication,1995.[25]ISO/IECJTC1,“CodingofAudio-VisualObjects-Part2:Visual”,ISO/IEC14496-2(MPEG-4visualversion1),1999.[26]ISO/IECJTC1/SC29/WG11,“MPEG-4VideoVerificationModelVersion10.0”,MPEG98/N1992,SanJose,1998.[27]ThomasWiegand,GarySullivan,andAjayLuthra,DraftITU-TRecommendationandFinalDraftInternationalStandardofJointVideoSpecification(ITU-TRec.H.264/ISO/IEC14496-10AVC)[S],May.2003.[28]RobKoenen,OverviewoftheMpeg-4Standard.http://mpeg.chiariglione.org/standards/mpeg-4/mpeg-4.html.[29]J.F.ShenandL.G.Chen,”Lowpowerfull-searchblock-matchingmotionestimationchipforh.263+”,Proc.IEEECircuitsandSystems,1999,Vol.4:299-302.[30]ITU-TRecommendationH.263version2,1997.[31]DavidD.ClarkandDavidL.Tennenhouse.ArchitectualConsiderationsforaNew56 GenerationofProtocols.ACMSIGCOMMComputerCommunicationReview,1990,20(4):200-208.[32]高旭,沈苏彬.网络多媒体实时传输协议浅析.计算机应用研究,2002(2):7.[33]郑亮.MPEG-4流式播放的设计与实现.武汉:华中科技大学,2005.[34]S.Wenger.M.Hannuksela,T.Stockhammer.RTPPayloadFormatforH.264Video.RFC3984,2005.[35]H.Schulzrinne,etal.RTP:ATransportProtocolforReal-TimeApplications,2003.7.[36]朱鹏,李春文.基于RTP的网络视频传输系统的设计与实现.计算机工程与应用,2003,39(26):19.[37]BakhshST.AflexiblerelayselectiontechniqueforBluetoothscatternet.2012ICCISInternationalConference[C],2012:718-722.[38]SandhyaS.AnalysisofBluetooththreatsandv4.0securityfeatures.ICCCAInternationalConference[C],2012:1-4.[39]FiguerasIVentura.IDRA:IRCTRDrizzleRadar.RadarConference[C],2006:174-177.[40]张晓红,乔伟民,刘军科.红外通信IrDA标准与应用[J].光电子技术,2003,04:23-26.[41]NiS,HaggmanSG.GPRSperformanceestimationinGSMcircuitswitchedservicesandGPRSsharedresourcesystems[C].WirelessCommunicationsandNetworkingConference,1999:1417-1421.[42]HindDJ.Radiofrequencyidentificationandtrackingsystemsinhazardousareas[C].ElectricalSafetyinHazadousEnvironmentsFifthInternationalConference.1994:215-227.[43]BakerSD,KingSW.PerformancemeasuresofISM-bandandconventionaltelemetry[J].EngineeringinMedicineandBiologyMagazine,2004,Vol.23:27-36.[44]Li,Tongtong.Securewirelessmonitoringandcontrolsystemsforsmartgridandsmarthome[J].WirelessCommunications,2012,19(3):66-73.[45]胡君连.基于Wi-Fi的嵌入式无线视频监控系统设计[D].上海:东华大学,2012.[46]司明飞.视频监控中的运动目标检测算法研究[D].长沙:湖南大学,2014.[47]S.Chieochan,E.Hossain.NetworkcodingforunicastinaWiFihotspot:Promises,challenges,andtestbedimplementation[J].ComputerNetworks,2012,Vol.56(12):2963-2980.57 [48]ZafftA.Malicious.Wifinetworks:Afirstlook.IEEE37thConference[C],2012:1038-1043.[49]潘国辉.智能网络视频监控技术详解与实践[M].北京:清华大学出版社,2010.[50]刘富强.数字视频监控系统开发及应用[M].北京:机械工业出版社,2003.[51]Nam-SupPark,Chong-SunHwang.EffectiveI/OSchemeBasedonRTPforMultimediaCommunicationSystems[J].JournalofComputerScienceandTechnology,2006,Vol.21(6):989-996.[52]ÉtiennePayet,FaustoSpoto.StaticanalysisofAndroidprograms[J].InformationandSoftwareTechnology,2012,Vol.54(11):1192-1201.[53]J.MANIBHARATHI,S.Hemalatha,V.AISHWARYA,C.MEENAPRIYA,L.HepzibhaShekinahGrace.AdvancementinMobileCommunicationusingAndroid[J].InternationalJournalofComputerApplications,2010,Vol.1(7):95-99.[54]单李旺.Android操作平台的研究与应用[D].天津:南开大学,2009.58 作者简介作者简介:刘楠(1988-),女,汉族,吉林省长春市人,2013年9月考入吉林大学通信工程学院通信与信息系统专业学习,攻读工学硕士学位,硕士期间主要研究方向为分布式智能信息处理,主要基于Android平台的远程视频监控系统进行了深入研究.在校期间发表论文:刘楠,陈万忠,王秋爽,郎一宁.基于Android平台的远程视频监控报警系统[J],吉林大学学报(信息科学版),2016,34(2):283-288..59 60 致谢三年的硕士研究生阶段的学习转眼就要结束了,回想当初读研报道的那刻,仿佛就发生在昨天。在这三年间,我成长收获了很多,不仅在学业上,更在身心上。三年来,我从一个懵懂未知的本科生成长为一个对自己研究领域有所理解的硕士生,我的这些成长,离不开我的亲戚朋友的体谅和支持,离不开同学们的关心和帮助,更离不开我导师的耐心辅导和谆谆教诲。从毕业论文的选题、开题到撰写,陈老师一直在给我细心指导,仔细讲解。在这毕业论文将要完成之际,我在此向陈万忠教授表示特别感谢!同时也向所有关心我、帮助我和支持我的老师、同学、亲戚、朋友们表以衷心的感谢!谢谢你们!61

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭