吕联荣, 秦 娟, 陈博斌
(天津理工大学集成电路科学与工程学院,天津 300384)
典型的机器视觉系统可分为PC式视觉系统与嵌入式视觉系统两大类,前者较为复杂且开发成本高;后者易于开发和维护相对可靠耐用[1]。通常情况下,一个完整的机器视觉系统由图像采集、分析决策和输出三部分组成,三者互相配合实现相应功能[2]。目前世界范围内对于使用机器视觉进行物体追踪的研究较为成熟,应用也已相当广泛,如车辆道路监控系统和行人闯红灯抓拍系统等[3]。很多公司都在研究开发这一技术,如国内的天地伟业公司、日本的基恩士、美国的康耐视等等。与此同时,基于机器视觉的追踪技术也是国内外各团队研究的热门,如朱振天等[4]基于机器视觉的运动煤颗粒检测和遮挡追踪技术,针对煤颗粒筛分过程中被遮挡而导致其运动分析实测数据缺失的情况,应用机器视觉的方法实现了对运动煤颗粒检测和遮挡追踪。俄罗斯Rakhmatulin博士[5]基于机器视觉追踪技术,使用树莓派和激光发射装置实现了自动灭蚊效果,该装置通过摄像头识别蚊子的位置,然后使用大功率激光发射器精准打击,非常有创意。张清勇等[6]利用色块追随设计电磁曲线炮,根据机器视觉设计机器写字系统[7]等。普通照明存在的问题:在安装场地受限的情况下,由于阴影的存在无法提供理想的照明效果;高级照明设备可以提供无影照明,但是造价昂贵。本文提出了一种基于机器视觉追踪的照明系统,具有低成本和高光照追踪的优点。
基于视觉追踪的随动照明系统的机械结构如图1所示,以台灯作为原型,由头部、灯臂和底座组成。3自由度的灯臂使用3路舵机控制灯臂的三维移动,其中舵机X和舵机Y受图像识别结果控制,分别实现光源上下和左右方向的移动,舵机D配合测距模块实现距离保持。本系统体积小,因此选用了扭矩相对较大的MG90舵机作为动力装置[8]。
图1 台灯的机械结构
“无影”智能台灯系统包括识别目标物体,控制舵机X、Y和D移动光源,实现光源跟随目标物体进行移动。硬件系统由主控制器、识别处理、运动控制、光源控制和人机交互等模块构成,总体框图如图2所示。使用双MCU(Micro-control Unit)联合作为控制器,其中低速MCU为主控制器,负责驱动传感器、数据计算和输出控制信号;高速MCU处理摄像头采集到的图像信息,并将结果发送给低速MCU。
图2 系统总设计框图
距离传感采用超声波测距。运动控制模块选用两个大扭矩的舵机和一个普通舵机。光源控制模块选用大功率LED和达林顿驱动电路。人机交互模块包括微动按键和共阳RGBLED,实现模式选择和相关信息的显示。
主控模块是系统的核心。本系统需要操控3路舵机,且在运行期间需要进行大量的数据处理,因此要求主控单片机有PWM(Pulse Width Modulation)发生器和较大的数据存储空间。本设计的主控模块选用ST公司的32位单片机。STM32F103C8T6[9],其主频为72 MHz。该型号性价比较高,能输出多路PWM,支持旋转编码器接口,具备串口通信能力,可以和图像识别处理模块进行通信,使系统获取目标物体的位置信息,实现对光源控制。
识别模块包括基于OV7725摄像头的I.MX6ULL视觉图像处理和RCWL-1601超声波测距两部分,如图3所示。机器视觉处理由ARMCortexA7架构的芯片I.MX6ULL处理,其主频近800 MHz,配有硬件摄像头接口(即CSI接口),可连接标准SCCB接口的CMOS摄像头[10-11]。该模块通过摄像头进行图象捕捉,进行目标物体的颜色识别,将识别结果通过串口发送至系统主控制模块进行后续的处理。从工业生产角度考虑时,还可以使用其相近产品如I.MX6UL或STM32F4系列作为替代,此类芯片成本更加低廉。
图3 图像采集处理模块和测距模块实物
在系统中综合考虑成本和照明干扰,选用超声波测距,实现cm级精度的距离测量。该方案误差较大,且对于被测物体表面平整度要求较高,易受温度影响。通过硬件设计放大信号,软件设计滤波和温度补偿算法进行弥补,提高了测量精度。
本系统采用舵机控制台灯臂进行自由转动[12],根据各部位承重需要分别选用SG90、MG90和ES08AII 3种舵机,舵机如图4所示,其中红色的是VCC,棕色的是GND,橙色的是PWM信号端。驱动信号PWM信号频率一般为50 Hz,通过改变信号的占空比来实现舵机转角的控制。
图4 SG90型舵机实物
选用大功率LED作为照明光源[13-14],使用CD4017动态扫描点亮LED,达林顿管ULN2003作为驱动电路,配合单片机输出信号驱动多个大功率LED,其电路如图5所示。
图5 LED驱动电路
该模块由RGBLED、微动按键和旋转编码器EC01构成。该模块能够实现系统的外部控制,RGBLED可以实时显示系统当前状态,供用户得到系统状态参考;微动按键可以实现系统模式的切换,用户通过简单地操作两个按键实现启动关闭系统和切换系统状态,同时RGBLED指示灯会以不同颜色显示当前状态;旋转编码器用于实现在锁定模式中手动控制台灯臂转角。系统的硬件组成如图6所示。
图6 系统硬件组成图
除了图像处理模块,系统还使用STM32控制舵机、超声波测距、按键识别和照明控制,以保证系统的实时性。
本系统对于响应速度的最低要求为2~4次/s识别,并控制舵机移动。由于本系统不搭载实时操作系统,选择定时器中断实现系统时间的同步规划。基于状态分析法,主程序流程如图7所示。
图7 主程序流程图
选用了高灵敏度的超声波测距探头,数据波动较大,因此设计了基于FIFO的软件滤波器,使用冒泡法排序,返回中位数。该滤波方法能够滤除突变值避免发生抖动,同时动态的FIFO能够避免出现数据获取不及时的现象,进一步增加数据的准确性。
为了校正声速引入温度补偿函数,其思路是在单片机芯片刚上电最接近室温时读取其内部的温度,ADC读取内部通道16来获取当前电压值,根据下式转换成(℃):
式中:USENSE为传感器的电压值;U25为USENSE在25℃时的电压值;UASvg_Slope为温度与USENSE曲线的平均斜率,其典型值1.43[15]。再由下式得出当前环境温度下的声速,即
结合OpenCV设计裸机算法,采用了RGB色域阈值法的颜色识别方式,主要过程是遍历图像数据[16-17],若识别到对应颜色则记住当前颜色区域,并扩大2倍,再识别下一种颜色,若无识别项则继续遍历识别下一颜色。当3个颜色均识别结束后会统计识别成功的次数,并返回总的颜色像素坐标范围。该算法能够提高系统的运行速度,提升在低主频MCU中的程序运行效率。
当遇到背景较暗的环境时,会将偏黑色误判成红色,因此还设计了自动纠错功能。当识别到的颜色范围过小时,丢弃该值并重新开始筛选颜色。经过反复试验,最终能够让算法在颜色较为单一背景下成功识别出目标。算法的流程图如图8所示。裸机程序的处理效果如图9所示。
图8 颜色识别算法流程
图9 图像处理结果
系统使用两个MCU进行协同处理,设计了串口通信方式实现数据的传输。图像处理模块的I.MX6ULL进行图像识别后,数据打包通过串口发送至STM32,由串口DMA接收,配合串口中断实现数据包实时接收和解析,并将解析数据存至结构体中以供后续操作。指令解析流程如图10所示。
图10 指令解析函数流程图
“无影”智能台灯样品和测试如图11所示,灯臂由木板构成。将目标物体送入摄像头视野,在工作模式中系统能够根据当前识别结果正确地进行反馈操作,响应速度在0.3 ms左右,能够满足基本要求;将目标物移出视野范围,机械臂保持最后姿态,说明当前系统进入等待模式。
图11 “无影”智能台灯样品测试图
进行颜色识别和光源控制功能测试方法为:将带有RGB三色标记的手写笔置于摄像头感应区内,按照左、右、前和后移动,观察此时台灯的运行状态是否与手写笔的运动方向一致。测试时随机选择方向,每个方向测试30次。测试结果表明,“无影”智能台灯系统可以通过颜色识别模块准确判断手写笔的运动方向,测试结果见表1。
表1 台灯控制功能测试结果
本文提出了一种基于机器视觉的自动追踪照明系统的设计方案,结合颜色追踪算法,实现了低成本便携应急“无影灯”的效果。系统采用了RGB阈值法完成图像二值化,减少了计算耗时,实现了颜色追踪和光源随动控制。将机器视觉、嵌入式开发与照明系统相结合,具有一定的实用价值,为高级照明系统的设计提供了新的思路,可自动调整照明角度保护视力。