本文设计的视频监控系统客户端设备为Android平板电脑,该客户端从IP摄像机获取实时的监控图片,根据不同场景用不同算法来判断家中有无人员出入,标注关注对象并智能跟踪,辨别各房间的照明情况及电视、计算机等家电的使用情况,可同时实现4路智能监控。
1 监控平台介绍
1.1 客户端平台介绍
客户端采用Android 智能 *** 作系统,Android 是Google公司于2007年11月5日发布的基于Linux平台的开源手机 *** 作系统的名称。该平台由 *** 作系统、中间件、用户界面和应用软件组成,底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
2011年初数据显示,仅正式上市2年的Android *** 作系统已超越称霸10年的Symbian系统,跃居全球最受欢迎的智能手机平台。现在,Android系统不仅应用于智能手机,也在平板电脑市场急速扩张。同时,Android智能手机 *** 作系统具有5大优势:开放性、摆脱运营商的束缚、丰富的应用选择、开发商不受任何限制和无缝结合的Google应用。
1.2 IP摄像机介绍
IP摄像机是一种可产生数字视频流,并将视频流通过有线或无线网络进行传输的设备,其不需要额外的软硬件,便可以将活动的数字图像直接传输到互联网上,使在世界各地的计算机都可以通过浏览器观看实时活动数字图像。IP摄像机支持TCP/IP,SMTP E-mail,HTTP以及其他Internet协议,支持诸如Windows,Unix,Mac及OS/2等多种 *** 作系统。
该设计采用海康威视公司的DS-2DM1-502型网络中速智能球型摄像机,支持客户端通过HTTP协议下载监控图片和H.264码流。
2 程序设计原理及实现
2.1 客户端设计原理。
该设计采用Android系统的平板电脑为客户端,客户端的软件流程如图1所示。
系统的具体实现大体分为两部分:与IP摄像机连接,获取所需视频流;根据监控场景做出相应判断及响应。
2.1.1 获取监控视频
客户端通过WiFi与IP摄像机连接,登录IP摄像机后,选择监控频道,可同时实现4路智能监控,即可以观察家中的基本情况:家中有无人员进出,是否有人在家,对监控中出现的对象进行关注跟踪,辨别各房间照明情况以及电视、计算机等家电的使用情况等。客户端实现方法为启用多线程控制4路监控任务,使每路监控任务具有相对独立性,以便更换频道。
多线程的具体实现方法有两种,分别是继承Thread线程类和实现Runnable 接口。客户端若采用继承Thread线程类的方法,则不能继承除线程类之外的其他类,而界面子线程必须继承View视图类,所以本设计采用第二种方法。监控实现中,每一路画面都是一个单独的线程,也是一个完整的视图,它是实现了Runnable接口且继承View类的类对象。因此每个对象之间相互独立,每路监控画面相互独立,可以灵活选择监控频道,以便后台控制管理。
界面实现上,主界面为4路监控窗口,初始选择监控频道后便可通过HTTP协议获取监控图片序列,根据场景进行算法处理,并播放智能监控画面。
2.1.2 程序优化
客户端需要根据不同场景调用不同的智能监控算法对发生的事件进行判断与识别,这一过程包含了大量的图像处理运算,如灰度化、背景建模差分、中值滤波和形态学运算等。Android *** 作系统的开发语言为Java,但是纯Java编程的图像处理程序在Android手机上的运行速度是其很大的问题。通过JNI(Java NaTIve Interface)技术在Java程序中调用C程序模块,明显地提高了应用程序的运行速度。笔者截取了40帧作为观察对象,程序各主要运算步骤的平均运行时间如表1所示,从中可以看出运行时间缩短到了原来的1/18~1/17.
表1 主要算法Java和JNI实现的运行时间比较
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)