网络化摄像实时测量系统的设计与实现
2022-03-28田亚平孙长城
田亚平,王 鑫 ,孙长城
(1.江苏师范大学科文学院 工学院,江苏 徐州 221132;2.江苏师范大学 物理与电子工程学院,江苏 徐州 221116)
近年来,非接触式目标物尺寸的检测在许多领域发挥着越来越重要的作用,如服装行业、智能驾驶、体育等领域[1]。在安检监控领域也有着广泛的应用,在机场、高铁等重要安检口处,可以测量出监控画面内的人体身高或物体长度,及时获得所需信息,做出相应对策[2]。在具体应用实践的解决方案里,最为常见的是基于机器视觉非接触式目标物尺寸测量,如Kawasue等[3]设计了一种非接触式机器视觉检测微型机器人,实现了在复杂管道内部环境下尺寸测量;冯锴等[4]根据机器视觉原理,通过目标物的图像的像素边缘特征提取分析,实现高精度、自动化、非接触式的金属材质手机壳体尺寸测量。但是随着工业网络技术的发展,机器视觉检测网络化的实际应用推广也迫在眉睫,上述机器视觉检测方案缺乏网络化的技术手段,但是比如摄像头这类的低成本的机器视觉电子设备也有了计入互联网的需求,考虑到以太网有着易与网络连接、通信速率高且成本低等特性优点[5],因此利用以太网把2个摄像节点接入千兆以太网交换机,再连接终端上位机,这样在视频监控这种常见场景中直接实现快速、低成本地测量出所需目标物的尺寸。
1 系统总体设计方案
测量系统主要由摄像节点、网络交换机、终端节点三部分组成,相互之间通过以太网进行网络互联进行数据传输,总体结构如图1所示。由摄像节点拍摄记录目标物的运动轨迹,两个摄像节点成直角放置,分别记录目标物运动轨迹的X轴画面与Y轴画面,并通过与OV7725摄像头[7]相连接的STM32F103开发板结合透传模块将目标物信息与实时图像传输到网络交换机上。网络交换机再将所接收到的数据发送给终端节点,在终端节点上显示目标物画面,并通过终端节点上搭载的算法对接收到的实时轨迹数据进行分析处理,最后将结果显示在LCD屏幕上,从而实现目标物的实时监控与高度的采集。
图1 系统总体结构
2 系统硬件设计
基于互联网摄像测量系统由摄像模块、以太网传输模块、终端处理模块组成。图2为系统工作流程图,由摄像模块采集目标物图像信息,并通过以太网传输模块将两个摄像节点的数据传输至终端处理模块,终端的STM32F103整合分析接收到的数据[8],将摄像模块拍摄到的图像信息显示在LCD上,并分析计算得出目标物高度数据,图3为系统实物图。
图2 系统工作流程图
2.1 摄像模块
本系统在摄像头的选择上对比了OV7670和OV7725两种型号的图像传感器。OV7670具有体积小、工作电压低等优点,但是视场角只有23°,为了实现测量需要把摄像头抬高,这样影响模型的稳定,同时较小的视场角将会使得系统整体最大测量值受到影响。此外,OV7670不能进行硬件二值化处理摄像头采集的图像。相比于OV7670型摄像头,OV7725拥有78°的视场角,同时能够硬件二值化处理采集的图像,其传输速率达到了60 fps,能够很好地实时更新显示图像信息。综合考虑,OV7725性价比高,且完全能够满足本系统对于图像信息获取、处理、传输的需求,因此,选用OV7725作为本系统的摄像头。STM32开发板带有OLED/摄像头接口,OV7725能够通过该接口与开发板相连(见图4)进行相应的数据传输和处理。
图4 OV7725与终端连接图
图5为开发板所搭载的OLED/摄像头接口的原理图。P4是接口可以用来连接ALIENTEK OLED模块或者ALIENTEK摄像头模块。摄像头模块,需要用到全部引脚。其中,OV_SCL,OV_SDA,FIFO_WRST,FIFO_RRST,FIFO_OE 这5个端口分别连接在MCU 的PD3,PG13,PD6,PG14,PG15上面,OV_D0~OV_D7 则连接在PC0~7上面(放在连续的IO上,可以提高读写效率),FIFO_RCLK,FIFO_WEN,OV_VSYNC这3个端口是分别连接在MCU的 PB4/PB3/PA8上面。其中PB3和PB4又是JTAG的JTRST/JTDO信号,在使用OV7725的时候,无须使用JTAG仿真,要选择SWD模式。
图5 OLED/摄像头模块接口
2.2 以太网传输模块
本系统选用ATK-ENC28J60模块作为透传模块[8],辅助实现两个摄像节点和终端之间的以太网通信。该模块带有10/100 Mbps自适应以太网接口,串口波特率可设置2400~921 600 bps,它支持 TCP/UDP协议,联网状态可以支持云服务器(如:原子云)、支持 TCP/UDP 数据透传,支持上位机/AT 指令配置参数,可以广泛用于电力行业、工业控制、水利行业、环保行业、农业应用、集抄系统和智能家居等诸多领域,并且与系统选择的正点原子开发板的ATK MODULE接口相适应,能够满足系统网络互联的需求。其与开发板连接如图6所示。
图6 以太网传输模块
2.3 终端处理模块
本系统在核心单片机上选用是正点原子精英STM32F103开发板。板子尺寸11.5 cm×11.7 cm,接口丰富,布局紧凑,板子提供数十种标准接口,可以方便地进行各种外设的实验和开发。此外该单片机带有配套的LCD显示屏串口服务器,能够满足系统以太网网络互联的需求[9]。在终端处理模块上,开发板只需外接一个LCD显示屏和ATK-ENC28J60模块,通过一根百兆网线与网络交换机相连接,网络交换机将接收到的两个摄像节点传来的图像信号经过网线以及透传模块传输至开发板,开发板接收到信号后通过编写的算法程序进行分析处理,将两摄像节点拍摄到的图像数据实时显示在LCD屏幕上,并同时显示所测得高度数据。
3 系统软件设计
3.1 摄像模块程序设计
摄像节点(见图7)主要涉及的程序设计为OV7725摄像模块的显示设置以及捕捉框选目标物。为使显示视频符合LCD屏的大小、图像清晰度高,通过反复实验选用了符合的OV7725显示窗口大小、分辨率、对比度等。并在主程序根据合理的算力对图像进行更新,使视频能够实时显示[10]。同时,通过捕捉特征,在STM32F103单片机中处理采集到的图像信息,并通过LCD_DrawRectangle函数在LCD液晶屏中框选目标物[11],总体程序流程图如图8所示。
图7 摄像节点实物图
图8 摄像模块程序流程图
在此模块中,首先利用OV7725_Init函数来检测OV7725是否成功与单片机相连,判断其工作状态的稳定性。当OV7725处于正常工作状态时,再调用OV7725_Window_Set函数对其输出图像的高度与宽度进行设置,且选择模式输出为QVGA模式,这样便可获得较广的视野范围。调用Light_Mode,Color_Saturation,Brightness等函数对其白平衡、色度、亮度等基础参数进行设置。若OV7725与单片机未成功相连,则单片机将发出警报,提示操作人员进行检查。当系统工作时,摄像节点将时刻检测终端设备发来的指令,利用usart3_getRxData函数来接受终端设备的字符串指令存于数组g_usart3_rx_buf中,调用sscanf(g_usart3_rx_buf,“%d”,&measure)函数使字符串指令转化为整型并赋值于标志量measure,利用标志量measure的值来判断是否执行测量功能。当测量完成后,利用Send_data函数将测量结果发送给终端设备,为了区别节点A与B发来的不同数据,发送测量结果时在数据的前端与尾端将加上节点A与B对应的数据标志头与标志尾。
3.2 以太网传输模块设计
虽然在以太网传输协议中有多种模式可供选择,重点对比分析了两种较为常见的协议类型,即TCP协议、UDP协议。TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议[12]。
TCP协议:TCP 协议的执行过程分为连接创建(Connection Establishment)、数据传送(Data Transfer)和连接终止(Connection Termination)3个阶段,其中连接创建与连接终止分别是耳熟能详的TCP 协议三次握手(TCP Three-way Handshake)与四次挥手(TCP Four-way Handshake),也是TCP 服务器与客户端通信过程的两个核心阶段。TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。
UDP协议:UDP不为IP提供可靠性、流控或差错恢复功能,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
一般来说,TCP对应的是可靠性要求较高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。因此,经综合考虑本设计的以太网络信号基于TCP协议进行传输。
在以太网传输模块中,需对摄像节点A和B与终端设备进行匹配设置。对于摄像节点A和B调用u2e_config_init(U2E_TCP_CLIENT)函数,设置摄像节点A和B的以太网工作模式为TCP_CLIENT(TCP客户端)。在摄像节点A的static const _u2e_atcmd_st u2e_tcp_client_info[]中编写“AT+REMOTEIP=”192.168.66.98” ”与“AT+STATICIP=”192.168.66.100” ”,设置其远程ip为192.168.66.98,静态ip为192.168.66.100;在摄像节点B的static const _u2e_atcmd_st u2e_tcp_client_info[]中编写“AT+REMOTEIP=”192.168.66.98” ”与“AT+STATICIP=”192.168.66.101” ”,设置其远程ip为192.168.66.98,静态ip为192.168.66.101。在终端设备的static const _u2e_atcmd_st u2e_tcp_server_info[]中编写“AT+STATICIP=”192.168.66.98” ”,设置其静态ip为192.168.66.98。这样终端设备的静态ip就和摄像节点A和B的远程ip相对应,便完成了数据互传的基础条件。
3.3 终端处理模块
在终端模块主要进行画面显示以及接收数据的处理,总体程序流程如图9所示。通过两个节点传输来的数据,可以分析得到目标物在整个空间内的位置,从而分析得到距摄像节点的距离,并进一步通过对比目标物周围高度已知的参照物可以计算得出目标物的实际高度,为减小误差,将对移动的目标物在不同位置的情况进行测量分析,计算出所检测到的高度的均值。最后的结果可以与画面数据一起通过LCD显示函数显示在LCD屏幕上,具体测量工作流程见图9,图10为终端节点实物。
图9 终端处理模块程序流程图
图10 终端节点实物图
3.4 系统测试性能指标
本系统通过测量物体高度(以固定不动的长棍、行走的人为例)来测试本系统非接触测量目标物的性能指标,测试结果分别如表1和表2所示,本文的方案在仅靠摄像头等低成本机器视觉设备的前提下,检测误差在0.44~2.13 cm。
表1 摄像测量系统测量固定不动的长棍高度的测量结果 cm
表2 摄像测量系统测量行人身高的测量结果 cm
4 结论
通过测试结果可以看出,本系统利用机器视觉中较为廉价的设备-普通摄像头并网络传输技术,很好地实现了摄像画面中人及物的实时监控和非接触式高度测量。该系统可以应用于安检、银行等对往来人员检测有一定需求的场景,具有造价成本低易推广的特点,且实验结果表明本方案具有检测精度较高、视频画面清晰流畅,满足了实时监测以及快速采集目标物高度的需求,具有向多领域推广发展的可能性。