一种基于ARM处理器的视频监控系统关键技术的实现
2016-12-21李世超
李世超
摘要:体积小、操作简单、满足多种场景使用的视频监控系统,是获取更多安全信息的有效途径之一。本文运用嵌入式系统、图形采集、图像处理及图像传输等技术,使用ARM处理器及外围设备组建信号处理单元,设计了数据推送单元的硬件电路,搭建Camera数据推送单元所需的开发环境把处理过的图像信号推送到Linux终端的Qt应用中展示。所设计的系统,提高了稳定性,具有一定的实际意义。
关键词:视频监控系统;数据推送单元;嵌入式终端
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)28-0276-03
视频监控技术与我们的生活有着不可分割的关系,现在人们越来越注重生活场所的安全,希望通过视频监控技术获得更多的安全信息,而传统的视频监控系统具有体积大、价格昂贵、安装拆卸不方便等众多不便捷的因素。所以人们越来越迫切需要体积小、操作简单、满足多种场景使用的视频监控系统,Camera数据推送单元在这种背景下应运而生,主要改善传统视频监控的使用不方便、操作复杂、复用能力差等缺点。从而形成了具有一定发展潜力的市场。Camera数据推送单元在信号处理、监控技术及通信技术的推动下不断的完善。 Camera数据推送单元在当下的发展渐渐的开始从模拟信号时期转化为数字信号时期,数据推送单元加上组建普及的互联网,他们结合后将会产生一种全新的视频监控系统,可以被更多的用户使用。而以Camera数据推送单元为基础的互联网监控也将因此变为一个很好的发展方向[2]。互联网加入视频传输之后,则会大大降低传输过程的成本,而且还具有便捷易复用的特点,传统视频监控系统则会发生翻天覆地的变化。使用Linux 操作系统的数据推送单元可以将应用中的视频数据通过网路进行实时传输更新,传输后的视频图像可以显示在用户的屏幕上,也可以使用存储设备将视频信息存储到硬盘中,以备后期的录像查看以及视频信息转移等。
本设计介绍了一种基于 ARM 和 Linux操作系统的Camera数据推送单元的实现方案。本设计是以嵌入式ARM9为核心的硬件处理器,使用定制的Linux操作系统,使用ARM处理器及外围设备组建信号处理单元,最后把处理过的图像信号推送到Linux终端的Qt应用中展示。
1 系统方案设计
摄像头也被称为电脑相机、电脑眼等,一般分为数字摄像头和模拟摄像头两大类。作为一种视频输入设备的它,在以往被普遍应用于视频会议、远程就诊及远程监控等方面。近年来,随着摄像头制造技术的成熟,使得它的价格降低到多数人可以承受程度,尤其很多附加功能越来受到人们的欢迎。本文在系统设计与实现过程中所采用以下几个关键技术。
1.1模拟摄像头数据推送单元的设计
模拟摄像头采集的是模拟信号,采集的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字信号,并加以压缩后才可以转换到终端设备上使用。在视频监控系统中,摄像头是最基本、最前端、投资数量最多的产品,重要性毋庸置疑,它负责采集视频图像并将模拟信号转为数字信号,然后再进行传输使用,采集信号的质量将直接影响视频监控系统的整个使用环节,同时也决定整个系统的工程造价。
1.2数字摄像头数据推送单元的设计
数字摄像头将捕捉到的视频信号直接存储为数字信号,然后可以通过串口、并口或者USB传送到终端显示设备。如今市面上的摄像头多数以数字摄像头为主,数字摄像头中多数以新型USB的数据传输接口进行数据传输。摄像头的主要组件和结构包括镜头、感光芯片、主控芯片、电源等。数字摄像头的工作原理为:景像通过镜头后生成的光学图像投射到图像传感器上,而后传换成电信号,经过模数转换(A/D)后将模拟信号转换为数字信号,再传输到数字信号处理芯片(DSP)中加工处理,然后再通过USB等接口传输到终端处理,通过终端设备的显示屏就可以看到图像了。
2 数据推送单元软件的设计
2.1 视频图像的采集
Linux系统中可使用USB摄像头进行图像的采集。Linux中的内存分为了用户空间和内核空间,用户空间可由应用程序进行访问,而内核空间需要Linux系统进行操作和管理。采集图像数据时,采集到的数据信息是存放在内核空间的,如果用户想要通过应用程序进行操作则需要将数据信息的地址进行转换。实现视频数据的连续采集需要使用内存映射的方式,为了实现视频数据的连续采集,即实现实时监控,Linux系统中需要采用内存映射的方式进行采集。与此同时还要解决因为网络数据过大而引起的花屏、掉帧、图像失真等问题,具体解决办法可以采用减小传送数据所占的带宽,为了保证图像数据能够稳定的传输,选择合适的图像传输帧率,图像压缩率、屏幕分辨率、像素色深就会显得尤为重要。
2.2驱动程序的设计
Linux系统中内核与其应用程序是分开管理的,包括内核模式和用户状态两个层次。内核模式和权限模式具有不同的权限,内核模式权限相对更高,如果想要改变分配方式、处理器内存相关的映射都需要在内核模式下实现。用户状态主要为系统使用者提供,用户操作的应用程序一般都是在用户状态下工作。如果使用者需要更高的权限或者需要访问特殊的资源则需要切换到内核模式下进行操作。Linux系统与外围设备的进行交互时需要通过驱动程序实现,Linux以文件的形式存储系统的驱动程序,驱动程序可以实现外围设备对处理器中断、DMA、定时器等的操作,从而搭建外围设备与处理器连接的桥梁。
Linux操作系统可以支持丰富的USB外设,S3C2440已经包含了USBHost驱动支持,在我们需要使用某个接口的驱动时,我们只需要配置相应的内核就可以了。因此开发者可以根据不同的外围设备开发不同的驱动程序,快速实现处理器对外围设备的控制。
常见的视频设备包括CMOS摄像头和USB摄像头,Linux系统中视频设备采用V4L标准。摄像头应用程序需要的库文件、接口函数在V4L中都有提供,Linux操作系统与用户应用程序以及摄像头设备驱动都可以通过V4L标准进行数据传输和交流。
Linux操作系统通过./mknod命令来添加设备节点,各设备都会有自己的设备号,系统对设备的操作通过设备号进行建立联系。本系统中使用一个USB摄像头设备,在编程时不再需要单独设置设备号。USB摄像头驱动程序的实现流程如图1所示:
2.3 Qt应用程序的设计
2.3.1 Qt应用程序简介
Qt应用是奇趣科技1991年开发的跨平台图形用户界面开发框架,被广泛用于开发GUI应用程序,有时候也被称为部件工具箱。也能用于非GUI应用的开发,例如控制台工具和服务器等。它是Digia公司的产品,使用标准的C++和特殊的代码生成对象编译器和一些宏。通过语言绑定,其他的编程语言也可以使用QT应用。
Qt具有跨平台特性,并且具有良好的封装机制使得Qt的模块化程序非常高,复用性较强;提供signal/slots机制替代callback,使得各个原件之间的工作变得十分简单。除此之外,Qt还具有强大的C++图形库,近年来逐步集成数据库、OpenGL、多媒体库、网络等,很好的丰富了Qt开发大规模的跨平台应用程序的能力。
2.3.2 Qt应用程序的实现
在完成Linux开发所需要的环境后,即可以在虚拟机中进行Qt开发,最终的开发的应用程序可以在开发板上调试运行。开发过程中需要使用arm-linux-gcc交叉编译工具,
安装arm-linux-gcc之前需要配置环境变量,安装后可以使用./configure添加-thread选项,这样就可以在库文件中包含libqte-mt动态库,从而可以支持多线程。Qt应用程序的开发流程如图2所示:
搭建开发环境以后,开发者就可以在宿主机上开发和调试应用程序,经过交叉编译可生成可执行文件。开发Qt应用程序时,首先可继承Qt已有的类,再根据所需要的功能编写自己所需要的类,多数开发者都会按照这样的思路去开发应用程序。Qt应用程序可以通过.pro文件进行工程管理,在设计时可以使用基于工程的一些方法。
Qt应用程序在编程实现GUI时可以采用直接编程或使用Qt Designer实现。作为一种设计Widget的应用程序,在它的界面上可以方便的进行各组件的分布,创建的GUI界面可供开发者直接进行可视化设计。开发Qt应用程序时包含编写源文件和下载开发板调试运行两个阶段,其中源文件的流程和编写在本文中略。
3 结论
对于Camera数据推送单元的研究,结合了嵌入式系统、图形采集、图像处理及图像传输等技术,具有明显的意义。文中所设计的系统不仅提高了监控系统的稳定性,而且解决传统监测系统中摄像头需要专门的布线才能将图像信息传递给客户端的缺点,更具有实际意义,例如加快国内城镇化与城市化建设,降低安全事故频发区事故率,家居防盗和病人监测等,这些方面都需要具有Camera数据推送单元的保证。
参考文献:
[1] 梁笃国.网络视频监控技术及应用[M].北京:人民邮电出版社,2009.
[2] 付诗君,陈其松.基于ARM9+Linux的远程车载视频监控系统的设计与实现[J].自动化与仪器仪表,2014(4):132-134.
[3] 袁小平,鲍捷,张明涛,等.基于嵌入式Web Server的煤矿视频监控系统研究[J].电视技术,2014,38(9):232-238.
[4] 金明哲.基于云计算的嵌入式Linux视频检测系统的设计[D].上海:东华大学,2015.
[5] 吴大中,胡江浪.基于ARM的移动视频监控系统设计[J].现代电子技术,2016,39(4):124-127+131.