桂林电子科技大学信息科技学院 朱达群 马林博 刘欣然
在这个安全变得日益重要的社会,公共场合安全更显的尤为关键,现在市场上保障公共安全的摄像头存在一定的缺陷。首先在人流较少甚至无人的环境下摄像头依然在把捕捉的画面反馈给系统,这样就造成了资源的严重消耗;其次传统监控的拍摄角度大多都是固定的,画面范围相当有限,并且是人工提前设定好的,不能根据画面中活动的物体运动轨迹进行跟踪拍摄,无法获取高价值信息,需要多个摄像头进行监控。
鉴于上述问题,我么团队决定研发一个在特定场景能够自动寻找目标并自动跟踪录制的监控系统,不但可以节省硬盘的存储空间,延长录制时间,还可以节省后期查看录像资料的人力成本,为人们获取有价值信息提供便利。
2001年美国“9·11”事件,以及后来马德里列车连环爆炸和伦敦地铁大爆炸等恐怖袭击后,使全世界范围内对视频监控系统的需求空前高涨,各国部署的摄像头越来越密集,系统也日益庞大。
由此可见自动跟踪这种智能监控在未来的重要性与前景,目前国内外已经有不少自动跟踪摄像机,主要是一些传统的监控厂商在传统摄像头上增加智能监控功能,并没有特定品牌专门做目标跟踪。
通过查询资料,大多数都是针对特定场景下的跟踪方案,并没有一款产品能够适用于任意场景。本项目组研发运动物体跟踪虽然不能冲击市场,但是可以作为一种对现有方案的补充,针对某一场景提供廉价可靠的监控服务。运动物体跟踪平台不需要复杂的硬件和算法,简单的运动物体跟踪录制功能足以满足一般要求,这样可以大量减少成本,提高市场竞争力。
S3C6410:S3C6410 是一个16/32 位RISC 微处理器,目的是提供一个具有成本效益、功耗低,可以提供优化的H /W 性能。3C6410 采用了64/32 位内部总线架构。借助S3C6410其强大的处理能力,运行嵌入式Linux系统,调度整个控制系统的运行,适合作为我们项目的图像识别跟踪主控芯片。
STM32F407ZGT6:带有FPU的ARM 32位Cortex®-M4 CPU,具有DSP 指令集。其具备低功耗特性,有睡眠、停机和待机三种模式。2 个CAN(2.0B主动)以及 SDIO 接口。丰富的定时器资源和通信接口,很适合作为云台控制芯片,也很方便进行后期的功能升级和改进。
项目组的运动物体跟踪平台由于需要对目标进行跟踪,所以控制摄像头运动的云台设计成了两自由度,可以控制摄像头的横向转动和纵向转动。考虑到摄像头的体积和重量较大,云台的转动所需要的扭矩较大,所以采用带减速箱的步进电机作为驱动力,经过理论计算和实际测试,将步进电机减速箱的减速比定为1:100。云台设计图如图2-2、图2-3所示。
图2 -2 云台部分设计图1
图 2-3 云台部分设计图2
步进电动机是一种将电脉冲信号转换成角位移或线位移的机电元件。它每转一周具有固定的步数;做连续步进运动时,其旋转转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。云台由STM32产生脉冲控制步进电机驱动板进而控制步进电机的转动。
我们采用AutoCAD设计云台外壳的图纸并用激光切割亚克力板拼装整个外壳。如图2-4、图2-5所示。
图2 -4 云台外壳整体外观设计
图2 -5 云台电机支架设计图
OpenCV于1999年由Intel建立,是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。OpenCV 拥有包括 500 多个C函数的跨平台的中、高层 API。虽然还有一些其他的视觉库,但是基于开发移植难度、成本、通用性、处理速度、学习资料丰富度等方面考虑,我们决定采用OpenCV库作为本组项目的开发基础。
由于系统中使用了较多的模块,所以一个稳定可靠的电源是保证整个系统稳定运行的前提,我们选择进行集中供电,
项目组决定采用12V/60W规格的开关电源将220V交流电压转为12V直流电压,再使用DC-DC降压模块将12V转为5V 。
1)使用S3C6410处理器运行Linux操作系统;
2)使用网络摄像头通过RTSP协议传输图像;
3)通过PC客户端查看实时画面;
4)PC客户端支持手动控制云台,支持手动录像。
1)跟踪距离:大于5米;
2)跟踪范围:180°。
4.1.1 图像传输部分
嵌入式Linux系统和网和网络摄像头同时接入同一热点,网络摄像头开启RTSP协议,Linux系统通过RTSP协议访问摄像头数据,并对图像数据进行处理。
4.1.2 云台控制部分
云台由两个步进电机分别实现垂直转动和水平转动。步进电动机的输入量是脉冲序列,输出量则为相应的增量位移或步进运动。脉冲序列由STM32F407ZGT6芯片的定时器输出,频率1000Hz,在步进电机驱动器部分再次对频率进行分频。STM32嵌入式主控板通过串口相连,Linux系统处理图像后向STM32控制板发出控制指令来控制云台运动。
PC客户端的界面由MFC创建,编程环境是Visual Studio 2015。PC客户端具有查看摄像头画面、录像、控制云台、模式选择功能。
4.2.1 录像
录像的前提是获取到图像,获取图像与查看摄像头画面方法一致,只是通过按钮菜单控制是否录像。
4.2.2 手动控制云台
PC机通过蓝牙与STM32控制板建立连接,不通过嵌入式Linux系统,而是直接发送指令给STM32控制板控制云台的。
本项目组采用OpenCV作为编程基础,从获取图像到图像分析,再到运动跟踪,都是使用OpenCV实现的。本项目组采用的方案为:先对隔帧图像进行特征点匹配,然后做运动量估计,经过配准之后再进行帧差运算,最后得出运动目标。
图4 -3 运动跟踪处理流程图
获取映射矩阵是整个方案中比较关键的一步,我们使用了OpenCV提供的仿射变换相关算法。仿射变换代表的是两幅图之间的一种映射关系。
考虑到我们要使用矩阵 A 和 B 对二维向量做变换, 所以也能表示为下列形式:
LM2596开关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流。
1)独立自主设计的两自由度云台;
2)大扭矩步进电机,满足体积较大的摄像机安装;
3)独立电源,稳定性高;
4)结构简单,维护简单,节省费用。
图5 -1 主控硬件框图
图5 -2 云台控制板硬件框图
1)算法针对性强,满足特定场景的需求;
2)结合PC控制,方便实时监控运行状态;
3)基于最新的计算机视觉库版本,算法鲁棒性较高;
4)多模式控制,满足不同操作需求。
项目组研发的运动物体跟踪平台在项目组成员的不懈努力和指导老师的监督下完成了项目初期设想的所有功能。项目组选择的研发方向虽然在市场上已经有产品,但是我们根据市场产品所针对的场景进行分类总结,发现我们可以针对厂商遗漏的场景进行针对性开发,而不是做一个全功能、全场景的方案,我们只做一个特定方案。由于项目组的水平有限,在研发前期遇到了很多的问题,我们查阅了大量的资料,做过许多方案测试,经过多次方案改进,最终形成了目前使用的方案。相信在未来图像处理技术会出现巨大的飞跃,在动态背景下的运动目标跟踪方面,也会有新的更加优秀和智能的算法。最后,感谢本次大赛组委会提供一个优秀的比赛平台,本项目组得以在此平台上发挥我们的创意,展示我们的作品。
附录:
附图2 运动物体跟踪平台运行画面
附图1 运动物体跟踪平台实物图
[1]Adrian Kaehler & Gary Bradski.Learning OpenCV 3[M].O’Reilly Media,Inc., 2016,12.
[2](美)布拉德斯基.学习OpenCV(中文版)[M].清华大学出版社,2009,10.
[3]刘火良,杨森.STM32库开发实战指南[M].机械工业出版社,2013,07.
[4][美]Stephen Prata.C++ Primer Plus(第6版中文版)[M].人民邮电出版社,2012,06.
[5]李长俊.模拟电子技术[M].科学出版社,2011,7.
[6]弓雷.ARM嵌入式Linux系统开发详解(第2版)[M].清华大学出版社,2014,02.