一种智能楼宇的视频监控系统的设计
视频监控是智能楼宇重要的组成部分,传统的视频监控只停留在本地化的人机监控状态,未能实现楼宇的自动化管理,这很大地限制了智能楼宇的发展。随着网络技术的成熟和发展,智能化视频监控在智能楼宇中得到广泛应用。介绍了智能化视频监控在智能楼宇中的典型应用场景,包括周界防范、区域防空报警、智能人脸识别以及烟火检测报警。
本文设计了一种智能楼宇的视频监控系统,并从硬件设计和软件设计两方面来阐述该系统。
1 系统的硬件框架
整个硬件系统由信号处理板、信号转换板、上位机以及CMOS图像传感器组成。信号处理板以S3C2416处理器为核心。S3C2416是一款以SAMSUNGARM9(ARM926EJ)为内核的处理器,由于低功耗、高性能、低成本的性价比优势,在实际中具有广泛应用。为了简化信号处理板的硬件设计,同时兼顾系统与实际场所的兼容性,本系统设计了一种以STM32为核心处理器的信号转换板,信号转换板可根据接收的数据生成对应的控制信号来驱动相应的执行机构。这样只需修改信号转换板的硬件设计,就能使系统很好地适应各种不同的应用场景。上位机与信号处理板之间通过网线连接。CMOS图像传感器直接与信号处理板连接。
系统的硬件总体架构如图1所示。
图1 系统的硬件总体架构
2 系统的软件架构
以S3C2416为核心的信号处理板,需要分别与上位机和信号转换板进行通信。信号处理板需要为上位机提供查询服务和设置服务。上位机端软件通过切换不同的算法,可以适应例如的不同的应用场景,可以下发经PC端算法处理后得到的控制信号,也可以发送相关指令,让信号处理板上传实时图像和设备的运行状态等。信号处理板也需要为信号转换板提供控制服务,信号处理板根据实时的处理结果或者上位机下发的控制信号,下发对应的控制信号给信号转换板,信号转换板依据接收到数据,生成相应的控制信号以驱动对应的执行机构。
2.1设备间通信协议设计
信号处理板与上位机之间的通信数据类型主要有三大类,第一种是信号处理板实时的图像信息,第二种是信号处理板上传的设备的运行状态信息,第三种是上位机下发的控制指令。由于涉及图像的传输,而且本系统中单帧数据就达到640*512个字节,为了保证图像传输的实时性,信号处理板与上位机之间的通信采用网络通信。
信号处理板与信号转换板之间的通信数据类型主要有两大类,第一种是信号处理板下发的控制信号的指令,第二种是信号转换板上传的应答信号。由于信号处理板与信号转换板之间传输的单次数据量较小,所以通过UART来进行通信。
2.1.1网络通信协议
针对网络通信,本系统采用TCP/IP协议,该协议在传输层分别有TCP协议和UDP协议,虽然UDP协议在传输速度上有较大优势,但是数据传输的准确性得不到保障,而TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,所以采用TCP协议便可保证数据传输过程的准确性。由于有些应用场景需要上位机对图像进行算法分析再将控制信号下发给信号处理板,所以本系统中传输层的通信协议选用TCP协议,但是TCP是基于字节流的,所以必须解决半包读写和粘包问题。
常见的处理方法有如下几种:
方法1:定长消息,每个报文长度固定,不够补空格;
方法2:使用回车换行符分割,在包尾加上分割符,例如FTP协议;
方法3:消息分割,头为长度(消息总长度或消息体长度),通常头用一个int32表示。
其中方法1通常适合长度不是很长的数据,但在本系统中传输的一帧图像数据就达到640*512个字节,数据量较大,所以方法1不合适。由于传输的是图像数据,图像中连续的几个像素点对应的字符很有可能与固定字符相重复,因此若采用以固定字符区分的方法2,必须对原始图像数据进行遍历,并对相关字符进行转义,但这样计算量过大,会增加系统额外开销,所以方法2也不合适。本系统采用方法3来设计网络通信协议,最终的网络通信协议格式如图2所示:
图2 网络通信协议格式
1)数据长度:前4个字节代表数据长度n,对应一个int32型整数,所以该协议传输的最大数据长度为232个字节。
2)数据类型:第5个字节代表不同的数据类型,例如0x01表示图像数据的上传,0x02代表控制指令的下发,0x04表示算法切换,此位可依据系统的功能进行拓展。
3)数据:从第6个字节开始的n个字节代表数据。
2.1.2串口通信协议
对于串口通信,必须解决数据传输过程中的可靠性问题,为此本系统设计了如图3的串口通信协议。
图3 串口通信协议格式
1)起始标志:1个字节,用十六进制可表示为F0H。
2)数据长度:1个字节代表数据长度n,所以该协议传输的最大数据长度为256个字节。
3)数据类型:1个字节代表数据类型,例如0x01表示要求信号转换板根据有效数据生成对应的继电器信号,此位可进行拓展以驱动不同的驱动机构。
4)数据:n个字节的数据。
5)校验位:n个字节的数据按位异或。
6)结束标志:1个字节,用十六进制可表示为FFH。
同时,在串口的通信的设计过程中,参考了TCP协议中ACK的思想,当信号转换板收到一个命令后,会对数据格式进行校验,校验后则会回复一个包含一位数据校验是否通过的确认信号。信号处理板如果在发送指令500ms依旧没有收到确认信号或者收到的确认信号表明数据接收有误,则再次发送该命令,如果累计发送10次后依旧没有收到正确的确认信号,则认为此链路存在通信故障,信号处理板则通过网络将链路通信故障的错误信息反馈给上位机。
2.2信号处理板中软件设计
信号处理板中主要有两个线程:一个线程专门负责图像的采集和处理,主要完成对图像的实时采集,并对采集到的一帧图像按照上位机设定的模式,完成上传图像、算法分析以及生成控制信号并通过UART口发送到信号转换板中的部分或全部过程。信号处理板作为C/S架构的服务器端,为了保证响应的实时性;第二个线程专门监听网络端口,如果有命令发送过来,则根据解析的结果,完成参数的读取、模式的切换、算法的切换、控制信号的生成以及通信链路通断的判断等。
网络通信过程中的I/O模型主要分为同步I/O和异步I/两大类。同步I/O的主要缺点是在进行I/O的过程中函数无法立即返回,从而导致其他任务无法执行,但是在异步I/O中,无论数据是否完成交换都立即返回函数,因此不影响执行其他任务,所以异步方式比同步方式能更有效地使用CPU资源,同时系统的响应实时性也较好。由于信号处理板上运行的是Linux系统,以本系统采用epoll模型。信号处理板的业务流程如图4所示。
图4 信号处理板的业务流程图
2.3上位机软件设计
本系统基于Qt开发了一套上位机监控软件,该软件主要提供监控界面,界面的要素包括所连接设备(即信号处理板)的IP地址和端口号的设置、实时图像显示框、设备的运行状态以及应用场景的切换等。同时上位机软件也能对实时的图像数据按照设定要求进行分析处理,并将分析处理后生成的控制信号通过网络下发至信号处理板。
该上位机软件与信号处理板构成C/S架构,该软件作为客户端,信号处理板作为服务器端。考虑服务器端的套接字资源,并且鉴于此客户端和服务器端的通信属于长连接,所以上位机软件在与信号处理板建立连接后,需要定时发送一个心跳包,以此来判断通信链路是否正常,如果服务器端长时间没有接收到此心跳包,则断开对应的socket连接,释放相应套接字资源。客户端软件通过对发送心跳包时所使用的系统函数write()的返回值,便可以判断链路是否正常,如果异常,则释放之前的套接字资源后再次进行连接,如果尝试10次后依旧不能正常建立连接,则在界面上显示网络连接失败。
2.4信号转换板中软件设计
信号转换板主要完成接收来自信号处理板的数据,并根据解析结果产生相应的控制信号以驱动对应的执行机构。ST官方提供了丰富的库函数,这样使得STM32的软件开发过程大大简化,在完成基本的配置后,只需完成应用层程序的编写即可。最终,考虑实时性,设计的程序在中断中完成数据的接收,并将接收的数据拷贝到一个静态缓冲区中。主线程循环对静态缓冲区中的数据进行读取,并根据自定义的串口通信协议对数据进行解析和校验,如果校验通过则回复表示数据接收正确的ACK信号,并生成对应的控制信号,如果校验不通过则回复表示数据接收错误的ACK信号。
2.5图像分析算法设计
本系统作为一种视频监控,可以根据不同的场景切换不同的算法。一些识别算法,例如烟火检测报警,只要在PC端通过训练和测试过程得到最优模型后,就可以编写代码,然后移植到嵌入式设备中,当然此类识别算法也可以集成在上位机软件中。
但是一些匹配算法,例如基于人脸识别的门禁系统中所用的算法,在完成人脸识别后,需要将提取的特征与数据库中的特征进行匹配,以确定此人是否具有相应的权限,如果运行在嵌入式设备上,不仅浪费有限的存储空间,而且在匹配过程中消耗大量的系统资源,影响系统的实时性;再者门禁系统存在添加和删除某些人的权限的可能,如果将特征存放在嵌入式设备中,这样后期的维护升级难度较大,因此这类算法应该运行在上位机。
3 结束语
可拓展性和兼容性是本系统的一大特色,现今楼宇中存在的大量传感器,例如微波传感器、湿度传感器等,这些可以直接与本系统中的信号转换板相连,信号转换板接收到传感器数据后上传至信号处理板,为信号处理板生成控制信号提供依据,这些在软件层面进行修改便可实现,减少了后期的升级改造成本。