基于滑动导轨的双目视觉系统设计
2022-04-11卫晨李艾华崔智高
卫晨 李艾华 崔智高
摘要:当前,计算机视觉技术的蓬勃发展使双目视觉系统成为智能监控领域的研究热点。文章通过对六类双目视觉系统的分析,决定使用双目PTZ视觉系统进行本文的研究。然而,双目视觉系统受相机之间距离(基线长度)影响较大,如基线长度小时,有利于双目相机的协同跟踪,而基线长度大时,有利于提高立体视觉的获取精度。为了方便根据不同的场景应用或实现功能选择合适的基线长度,文章设计了一种基于滑动导轨的可变基线双目视觉系统。通过调试与验证,文章所设计的变基线双目视觉系统可实现两相机距离的自动调节与控制,控制精度与反应延时均满足要求,为双目视觉系统的研究提供了实验验证平台。
关键词:双目视觉;滑动导轨;串口通信;PTZ相机
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)05-0088-03
1 前言
1.1 研究背景与意义
随着技术的发展,人们对于自身安全的要求随着安全意识的提升而不断提高,因此智能监控系统在日常生活中使用的场景也更加宽广,其中视觉技术当然是必不可少的。在双目视觉技术中,PTZ摄像机的视角和焦距都可以实时改变,灵活性更强,应用范围也更加广阔,因此在视频监控领域相关的研究非常活跃。运用两个PTZ相机组成的双目主动视觉系统既可以单独工作,监控不同的区域,实现大场景动态监控,也可以双目协同工作,通过调整各自PTZ参数,以不同视角,不同分辨率同时获取全景图像和空间物体的深度等更多详细信息[1],优势十分明显。
然而在实际场景应用中,双目PTZ视觉系统两个摄像机之间的距离(即基线距离)和摄像机的视野对系统影响很大。目前对于双目视觉的研究还主要是使用定基线双目相机,局限较大,为适应不同监控场景和不同监控功能的需求,本文设计了一种可变基线的双目PTZ视觉系统。
1.2 研究现状分析
1.2.1立体视觉技术
立体视觉技术是通过在不同位置的两个摄像机拍摄同一个目标,利用两个摄像机所拍图像的视差,用三角测量原理计算出该点空间坐标值的方法。
要实现立体视觉,主要经过图像获取,摄像机标定,立体匹配和三维重建几个步骤。
1)图像获取
立体视觉技术的图像获取是通过在不同的位置放置两台摄像机,通过两个摄像机对空间内同一点观测,得到一对图像。上海交大经过理论分析与实验,得出结论,在满足测量误差的情况下,两摄像机间的夹角在50[°]~80[°]之间最好。
2)摄像机标定
为了从摄像机的图像中获取三维的空间信息,需要对摄像机进行标定,得知摄像机的位置参数。目前常用的摄像机标定技术总体可分为传统标定方法和自标定法。传统的标定方法需要借助实现已知的标定物,于是有了不依赖定标物的自标定法。
3)立体匹配
立体匹配包括特征提取和特征匹配。特征提取应满足的要求是:要与所用传感器技术相适应,具有差异性和不变性。特征匹配一直是立体视觉中最困难的步骤。受到视角的影响,拍照环境的影响,干扰会比较大。目前常用的匹配方法有基于灰度的匹配和基于特征的匹配。
1.2.2双目视觉系统
如今市面上流行的摄像机主要有三种,分别是静止摄像机、全向摄像机和主动摄像机。将它们组合,可以构成五种不同的双目系统,下面对这五种系统优缺点进行分析。
1)双目静止视觉系统
双目静止系统是双目视觉中最常见的一种,按照兩个摄像机视角与位置关系的不同,具体可分为三种情况。其一是两摄像机视场重合较小的系统,这种系统所能观测的视场范围最大,适用于大场景监控。其二是两摄像机重合视场较大,摄像机之间的基线距离也较大的系统,这种系统可以很好地避免视场内遮挡物产生盲区影响监控效果,适用于室内等遮挡物比较多的场景。其三是两摄像机视场重合大且基线距离较小的系统,这种系统是最典型的双目视觉系统,类似的产品有小觅智能发布的小觅双目摄像机。该系统可应用于目标跟踪,机器人视觉等。
2)双目全向视觉系统
使用全向摄像机可以拍摄全景图像,双目全向相机可以发挥双目视觉的优势,得到全景深度信息,可以应用于机器人视觉中障碍物的检测与标定,国外就有人将一系统应用于机器人足球比赛,帮助机器人识别球场障碍物做出相应的控制策略。但这一系统观测到的图像畸变严重,不利于人工观察,并且标定精度不高,受到相机标定精度的影响。
3)静止加全向视觉系统
双全向摄像机图像畸变严重,为解决这一问题,有人提出了一个静止摄像机加一个全向摄像机组成的双目视觉系统,提高了图像分辨率,并且解决了图像畸变。如果在系统中添加多个静止摄像机,与全向摄像机协同,则可以实现全场景监控,通过全向摄像机观察全局,发现异常,之后调用相应的静止摄像机详细观察。两个摄像机种类不同引起的标定复杂也是该系统的缺点之一。
4)静止加主动视觉系统
静止加主动摄像机构成的双目视觉系统以静止摄像机为基础,加之以主动摄像机视角灵活,分辨率可变的特点,实现了通过静止相机观察,利用主动相机灵活地获取目标高分辨率图像,更好地完成目标检测与跟踪的任务。由于静止摄像机视野有限,该系统适用于监控范围不大,由单个静止摄像机就能覆盖的场景。该系统结合了静止摄像机和主动摄像机的优点,易于实现。
5)双目主动视觉系统
主动摄像机从直接获取图像范围来说可能不如全向摄像机,但他视角可变,可以分多次拍摄;并且由于它分辨率可调,图像畸变程度低,可视化效果更好。
通过对五类双目视觉系统的分析,由于双目主动视觉系统灵活性好,可实现较多功能,且具备大部分双目视觉系统的优点,所以决定使用双目PTZ视觉系统进行本文的研究。
然而目前国内外对于双目视觉系统研究大都是在固定基线的双目相机上进行的,包括图像特征的提取[2],多目协调跟踪,对于多机器人多协作系统的研究提高了双目视觉系统的信息获取能力和获取精度[3]。在变基线的双目视觉系统研究领域,燕山大学的孔令富教授提出了一种基线可调的基于圆形轨道的双目检测系统,为摄像机避障问题提供了一种新的思路[4]。哈尔滨工程大学伏虎等人借鉴变色龙的双目特征提出了一种仿生双目视觉移动平台,将大场景下的目标搜索和小范围内目标精确定位结合在一起[5]。为双目视觉系统的变基线研究提供了新的思路。
2 系统总体方案设计
2.1系统需求分析
可变基线的双目视觉系统需要控制摄像机在空间内进行位置变换。为实现上述功能,可用步进电机来驱动滑动导轨,并将两个PTZ相机分别置于两个滑台上,从而通过控制步进电机的转动,改变滑台之间的距离,以及进一步改变双目摄像机的基线。步进电机驱动控制器接收到上位机软件发出的指令,发出脉冲控制步进电机的转动。电机的运行速度、运行方向、运行时间等参数可以通过上位机软件来控制。此外,还应实现利用事先设计好的程序,让步进电机自动运行,实现自动巡航功能。
在主动相机控制方面,可利用网络云台摄像机模拟PTZ摄像机,通过RJ45接口经网络交换机与PC机相连接,把两个摄像机的图像传到视频服务器。同时,需要解析网络云台摄像机SDK开发包,实现摄像机图像实时预览、调用预置点位和分步控制。
3 步进电机驱动模块设计
3.1 硬件设备选型
对于双目视觉系统而言,要求步进电机驱动系统具备良好的启动与停止性能和比较高的控制精度。步进电机被广泛地运用在雕刻机、数控机床、激光切割机等大型自动化设备中[6]。
具体实施过程中,本文选用了57步进电机,型号是J-5718HB3401。其尺寸为78mm[*]8mm[*]20mm,步距角为1.8[°],额定电流是4.4A,转动惯量为450,重量1.04kg,转矩为2.3N·m。选用了杰美康机电公司的2DM860H-RS485型驱动控制器。
滑动导轨是用于线性往复运动的机构,分为同步带轮导轨和滚珠丝杆导轨两种。它具有控制精度高,承受负荷能力强,性能可靠的优点,应用于各种自动化厂房。滑动导轨通常配合伺服电机或步进电机使用,通过配套的电机驱动程序可以实现自动化运行。
本文所用导轨长度1.2m,平台大小为60[*]78mm,四个孔的距离是40[*]60mm。负载最大可达20kg。滑台的定位精度极高,可以达到0.1mm~1mm,最大移動速度700mm/s。
3.2 硬件平台搭建
步进电机驱动模块安装:先将57步进电机通过联轴器接与滑动导轨一端,连接部分一定要拧紧,防止运行过程中脱落,接下来根据驱动器连接示意图,把步进电机的4根线分别与驱动器对应的A+、A-、B+、B-端口相连。驱动器的VCC、GND端与实验台上24V直流电源相连。驱动器与上位机需要通过一根USB转RS485的转接线相连,同时需要在PC上安装对应的驱动,之后打开设备管理器就可以看到电脑为驱动器分配的端口号。单个导轨连接图如图1所示。
3.3 步进电机驱动软件设计
本文开发环境采用微软的Visual Studio,它支持Basic、C++、C#、Java等多种高级编程语言,通过它可以创建自定义的Windows窗体应用程序、控制台应用程序等。
本系统上位机软件需要实现PC机与步进电机驱动器的串口通信,利用MSComm控件进行串口编程。
根据电机驱动模块需要的功能,新建一个基于C#语言的Windows窗体,在上面添加MSComm控件,添加相应的功能按钮,并为按钮添加相应的事件,实现通过点击按钮为电机设置运行参数,并控制电机运行的功能。由于VS中已经不再自带MSComm控件,需要自己手动添加。
根据通信协议说明书可知,传输数据格式为:“设备号+功能码+起始地址+寄存器个数+CRC校验”。
下面对软件界面上各按钮的功能进行说明。对步进电机的驱动部分主要包括基本参数设置,工程参数设置和手动操作按钮。当设备按要求连接好之后首先进行串口号,设备号设定。设备号默认为1,串口号由每次接入时计算机分配,通过设备管理器查看。设定好点击确认,如连接成功会显示“连接成功”字样,之后进入基本参数设置界面,如图2所示。
设置完毕后保存参数并下载,基本参数就设置完毕了。设置完基本参数后,即进入手动控制界面通过点击正转,反转,停止,单次运行按钮,来控制电机运行。
建立让电机自动运行的工程,在工程参数设置界面,如图3所示。工程参数包括工程步数,运行方向,运行速度,距离,反复次数等,其中工程循环次数设置为0表示无限循环。实现电机自动运行。
4 云台相机控制模块设计
PTZ相机是一种主动相机,其中字母PTZ是Pan、Tilt和Zoom的缩写,表示云台可以上下左右移动和镜头可变焦。因为其具有可变视角,可变焦距的特点,在智能监控领域有广泛运用。但是由于专业的PTZ相机价格比较贵,为达到检测系统功能目的,本文决定选用普通的网络云台相机做演示。另外,两台相机与一台相机的控制原理,步骤等都是一样的,本文先用一台相机做试验。如果研究成功再进行下一步的升级改造。
4.1 实物连接
本文选用了海康威视的迷你云台型网络摄像机DS-2CD2Q10FD-IW。相机的安装:先将摄像机底座用螺丝固定在滑动导轨的滑块上,用自带的适配器连接家用220V电源供电。摄像机与PC通过双绞线网线相连,由于电脑上只有一个RJ45插口,所以接两个相机的话需要通过一个集线器进行扩展。
图4所示便是本系统的实物连接图,1处标记的是滑动导轨,2处标记为步进电机,3处标记为步进电机驱动控制器,4处标记为USB转485转接头,5处标记为网络摄像机,6处标记为实验台的24V直流电源输出。
4.2 云台相机控制模块编程实现
根据海康官网提供的云台相机SDK包,对相机进行了二次开发,选取了登录,实时预览,抓图和云台控制部分功能,集成到上位机软件中。本部分编程调用了大量海康封装好的程序,其名称与功能在附录B中给出。其中实时预览功能应用了NET_DVR_RealPlay_V40函数,云台控制调用了NET_DVR_PTZControl函数。调用格式举例如下:
BOOL NET_DVR_PTZControl(LONG lRealHandle,DWORDdwPTZCommand, DWORD dwStop)
图像实时预览模块SDK的调用流程。首先对SDK进行初始化,然后根据需要设置超时,异常,接下来进行用户设备注册,注册成功后返回设备IP,启动预览,结束后要释放SDK资源。云台控制模块的调用流程与实时预览调用流程类似。
相机控制界面如图5所示。
相机控制界面编程步骤:首先每次打开软件都要清除所有状态,应用Dispose函数,函数中要包括停止预览,注销设备和初始化SDK的代码;接下来登录注册设备,输入IP,用户名、密码等,设置变量采集信息。登录出错应有提示,登录成功进入下一步;图像预览,首先需设置一个显示窗口,调用预览实时回调函数REALDATACALLBACK。
图像预览窗口编程:设置一个启动预览的按钮,当按钮按下时,先判断是否已登录设备,如果未登录,发出提示,如已登录,则在PREVIEWINFO中存储设备信息,而后调用实时预览函数,启动预览,其格式为NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null RealData, pUser),其中m_lUserID为函数返回值,lpPreviewInfo为预览参数,包括通道号、码流类型、取流协议等。之后将按钮的text值改为停止预览。按下按钮调用NET_DVR_StopRealPlay函数停止预览。
云台控制编程:首先在主界面上添加按钮,作用是打开云台控制界面,打开界面同时完成参数的传递,包括用户ID,通道号和预览句柄。然后在控制界面添加控制按钮,包括上,下,左,右等,云台控制调用了NET_DVR_PTZControl函数。
云台速度控制:速度控制调用的是另一个带速度控制的函数NET_DVR_PTZControlWithSpeed,比之前的多了一个参数dwSpeed,表示运行速度,取值范围是1~7。
在控制云台动作前需要先获取云台可控范围,这样就能在云台控制的P\T\Z参数文本框中输入数值直接把云台调整至一定的角度,通过PTZset按钮实现。同时PTZget按钮可以读取现在云台的P\T\Z参数显示到文本框中。设置和读取分别调用了NET_DVR_SetDVRConfig和NET_DVR_GetDVRConfig函数。
预置点操作:预置点操作包括设置预置点,调用预置点,删除预置点和获取预置点信息。设置预置點编程步骤为,首先在界面上设置4个文本框用来显示当前预置点信息,分别为P\T\Z和名称,然后做设置、调用、删除按钮,一个下拉文本框来设置预置点号。
图6所示是最终的软件界面。
5 系统测试
5.1滑动导轨驱动测试
首先进行手动控制测试。
第一步,按照系统连接图接好电机、驱动器、电脑,确认无误后,给驱动器上电。打开系统软件,设置串口号。如果正常工作会显示连接成功。第二步,进行手动控制功能测试。首先打开基本参数设置界面,设置步距角1.8,细分为8,启动频率和加减频率都是50Hz,螺距0.6,波特率9600。之后保存下载。返回主界面。点击手动控制按钮进入手动控制界面,设置运行方向,速度,距离,下载参数,即可点击正转,反转,停止按钮,控制电机运行。
其次进行自动运行测试。在工程设置界面,新建工程,第一步,正转1米,等待1秒后进行第二步,反转1米,速度都为200。
第三,模拟视觉系统进行双导轨联合运行。首先控制两个滑台移动到设定的位置,两者之间距离为1,将两个电机的坐标都清零,模拟双目摄像机初始状态。假设这时收到了一个指令,现有的工作基线过小,不再能达到智能监控系统对图像信息采集所要求的精度,需要调大基线。则控制滑台一向左缓慢运行,当满足要求时停止。完成任务后点击回零按钮,恢复初始状态。
第四,模拟两台相机巡航监控。设置一号相机先正向移动1米,0.5秒后再反向移动1米,工程无限循环。设置二号滑台与一号相向而行,也是无限循环。而后开始运行工程。
5.2云台相机控制测试
1)连接好相机之后,打开系统软件,登录访问相机,点击预览按钮,即可读取摄像机现在拍摄到的画面;
2)在云台控制界面,通过点击方位按钮来控制云台转动;
3)把摄像机转到一定的角度,设置预置点。然后把摄像机转到另一个角度,点击调用预置位,即可使摄像机转回原来的方位。
6 总结和展望
本文通过分析双目视觉系统的研究现状,设计了一种在滑动导轨基础上建立的可变基线的双目视觉系统。通过控制滑块位置来改变双目相机基线的功能,提高双目视觉系统对复杂多变的环境的监控能力。通过对实际应用场景的思考,发现本系统还有一些缺陷,需要在之后的工作中改进。主要是:
1)本系统未加入图像分析功能,即通过将摄像机拍到的画面进行自动分析,从而自动控制摄像机调整PTZ参数以及基线距离对目标进行跟踪。
2)在步进电机驱动部分,可以加一些扩展的输入信号,如正反限位、机械零点等,从而实现摄像机对自身位置的感知,更有助于自动调整位置。
参考文献:
[1] 万定锐,周杰.双PTZ摄像机系统的标定[J].中国图象图形学报,2008,13(4):786-793.
[2] 刘巧娜.双目主动视觉平台下仿变色龙视觉行为研究[D].秦皇岛:燕山大学,2012.
[3] 李造.多工业机器人系统中多级协作视觉系统的设计[D].杭州:浙江大学,2012.
[4] 孔令富,李林,张广志.一种并联机器人双目主动视觉监测平台避障方法的研究[J].燕山大学学报,2009,33(3):189-193.
[5] 伏虎.仿生双目PTZ视觉与移动平台协调控制的研究[D].哈尔滨:哈尔滨工程大学,2014.
[6] 蔡杏山.电动机及控制线路咱得这么学[M].北京:机械工业出版社,2017.
【通联编辑:闻翔军】
收稿日期:2021-10-08
作者简介:卫晨(1996—),男,山西晋城人,研究生,研究方向为机器人视觉;李艾华(1966—),男,河北沧州人,教授,博士生导师,研究方向为机器人视觉,模式识别,故障诊断;崔智高(1984—),男,河北邢台人,副教授,硕士生导师,研究方向为模式识别,图像处理,智能监控。