本站小编为你精心准备了系统设计论文:监视系统设计的运用透析参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
作者:陈泽恩单位:惠州学院教育技术中心
视频数据的接收显示
①视频的硬件解码方式。
在Android平台之上,默认解码的视频格式主要存在两种,分别是mP4格式和3gp格式。它可以通过MediaPlayer和VideoView两种方式来对视频解码器进行一定程度的调用。MediaPlayer的主要作用是对音视频媒体文件进行有效地播放,它在音频的播放方面十分简单,但在播放视频时,则需要对SurfaceView进行一定程度的使用,通过它来对画面进行显示。而对于SurfaceView来说,它对完全的OPenGLES库能够有效的支持,因此相比于自定义的View来说,它能够在绘图方面表现出更大的优势。除此之外,它也可以通过VideoView来播放视频,videoviewt比MediaPlayer简单易用,但定制性不如Mediaplayer。
②视频的软件解码方式。
视频的软件解码方式,需解码H.264格式的视频,因此,需要在Android平台之上对解码器进行一定程度的移植,只有这样,才能够有效的扩展Android对视频格式的支持。一般情况下,要想对视频软件解码方式进行有效的实现,必须要做好解码器的移植工作,它是实现视频软件解码方式的关键。目前状况下,较为流行的一种方式是通过移植FFmPeg开源库来实现H.264格式视频的解码。
图片的接收
在图片的接收方式当中,视频解码的功能主要是由服务器端来进行实现的,因此,Android客户端只需要对解码后的图片数据进行有效的接收。然而,这当中也存在着一个问题,那就是传输后的数据是解码后的图片数据,如果与接收视频的方式进行一定程度的比较,接收图片的方式就对网络宽带有着更高的要求。随着经济的发展,3G技术逐渐普及,在这种环境之下,网络宽带的制约将会得到一定程度的缓解。
目前状况下,在多画面的视频监控当中,无论是硬件解码方式还是软件解码方式都存在着一定程度上的不足。而对于图片接收方式来说,它具有操作简单,效果优良的特点,下面通过实验数据来说明各种方式在多画面视频监控中的性能。实验的平台为Acer平板电脑,型号为A500。在本次试验当中,解码的视频数据的格式均为mp4格式,素材主要存在着三种不同的分辨率,分别为128*96,672*378,800*480。
表2显示的是硬件解码的性能。从上表中,我们可以发现硬件的解码虽然可以对多路视频进行一定程度上的显示,但是在画面的数量上受到一定程度的限制,具体表现在两个方面:一方面,无论视频分辨率多低,画面的数量上限为5路;另一方面,画面的树龄与视频分辨率存在着反比例的关系,画面的数量会随着视频分辨率的增高而出现一定程度的减少。
智能监控的算法
智能视频监控是在无专人监控的情况下,通过计算机视觉技术对视频内容进行自动分析,对监控画面中的变化进行检测、跟踪和识别,并对监控目标的行为进行分析和判断。在智能监控的算法中,运动目标检测是最基本的一步。运动目标检测是指在监控画面中检测出变化区域并提取出运动目标。目前主流的运动目标检测的方法有帧差法、光流法和背景减除法等。本文主要采用帧差法作为智能监控算法。
帧差法是在监控图像中,相邻两帧对应位置上的像素进行差分,并通过阂值化检测出图像中的运动区域。首先,把前一帧图像作为背景图像,与前景图像相减,随后对结果进行二值化:背景亮度变化不大时,若差分后的像素值小于预先设定的阂值,可认为此处为背景像素;若差分后的像素值大于阂值,则认为此处有运动目标,将检测到的区域标记为前景像素。通过标记,便可获知运动目标在画面中的位置。此方法的优点:相邻两帧的时间间隔较短,用前一帧图像作为后一帧图像的背景模型,有很好的实时性,背景不积累,更新速度快,算法计算量小;缺点:阂值选择非常关键:过低,则不能抑制背景噪声,容易将其误判为运动目标;过高,则容易漏检,将有用的运动信息忽略了。而且当运动目标面积较大或颜色一致时,帧差法容易在目标内部产生空洞,无法完整地提取运动目标。
模块分析
在这一系统当中,主要存在着六个模块,分别是视频解码模块、网络接口模块、画面显示模块、人机交互模块、智能处理模块、处理结果显示模块。在这六个模块当中,视频解码和智能处理模块主要是在服务器上进行实现的,其他模块则在Android终端上进行实现。下面对在Android终端上进行实现的模块进行简要阐述。
①网络接口模块。对于HTTP,Android提供了三种HTTP通信接口,分别为标准Java接口()、APaehe接口(org.apache.http)、Android网络接口(.http)。其中APache接口提供了非常丰富、高效的工具包。由于服务器发送的是解码后的图片数据,故而客户端接收到的数据流可以组成一幅图片。通过Android提供的BitmapFactory.decodeByteAITay()函数,可从接收到的数据流中得到Bitmap格式的对象。
②画面显示模块。为了对画面显示进行有效的实现,需要继承View类,重写了onDraw()方法,其中,在onDraw()方法中所实现的内容,将在界面上显示出来。定义一个Bitmap对象bmpl,此对象将在画布中绘制出来(即界面显示)。
③人机交互模块。利用Alldroid平台的支持多点触的功能来实现。此模块的任务为:通过手指的点触,选择感兴趣的画面,提取数据并通过网络发送到服务器端。④处理结果显示模块。智能处理的结果必须要叠加在相应图片上才能起到作用,所以画面和处理结果的同步非常重要。
两者经过了两次HTTP通信,所以网络的依赖性较大。本文保留了原始视频的画面,智能处理的结果只在处理区域显示,故而服务器将处理结果和画面分开发送。