微型二维光流传感器设计
2014-09-18张洪涛张广玉李隆球王林
张洪涛, 张广玉, 李隆球, 王林
(哈尔滨工业大学 机电工程学院,黑龙江 哈尔滨 150001)
光流的概念是Gibson于1950年首次提出的。感知心理学认为,光流是源于观测者和静止环境之间相对运动的一种图像运动[1]。因此,光流提供了观察者全局运动的主要信息,如自身运动。通常,光流被定义为观察者和非静止环境之间的任何相对运动引起的图像运动[2]。如果图像保持静止,图像运动直接与观察者的自身运动相关(或者直接反应观察者的运动)。在这种情况下,观察者不需要对环境中的单一物体进行感知,而是将整个环境视为一种关于时间和空间的背景,由此可以感知自身运动[3]。
光流传感器是一种基于光流法对视觉运动进行测量并输出测量值的视觉传感器。按其结构可分为2种:一种结构是一个图像传感器芯片连接到一个运行光流算法的微处理上,可称为分体式光流传感器[4];另一种结构是将图像传感器和微处理器整合到一个视觉芯片上,可称为一体式光流传感器[5-7]。光流传感器现已广泛应用于计算机领域的光电鼠标中,作为测量光电鼠标运动的主要感应元件。此外,光流传感器也用于机器人领域中需要进行视觉运动测量和相对运动感知的场合[8-9]。近年来,使用光流技术进行飞行稳定控制和避障也成为了无人飞行器研究领域的一个热点问题[10-15]。
目前,分体式光流传感器多采用图像传感器与FPGA相结合的方式,体积较大,不适用于对尺寸和重量有严格要求的场合(比如微型飞行器)。一体式光流传感器尺寸小,但分辨率较低,对应用环境要求较高,环境普适性较差。针对现有2种传感器的不足,本文基于图像插值算法[16],设计了一种尺寸小、重量轻、分辨率较高、环境适应能力好的光流传感器,该传感器可以测量摄像头相对静止环境的自身二维平移。本文还对微型光流传感器的硬件结构和软件流程进行了介绍。
1 图像插值光流算法的基本原理
当摄像头与静止的环境作相对运动时,可以假定摄像头不动,而环境相对其运动,如图1所示。
图1 环境平移引起的像素运动
(1)
(2)
因此
(3)
其中,
(4)
(5)
当环境点产生Δl的平移时,其对应的像点产生Δx的像素位移,如图2所示。
图2 环境平移引起的像素运动
根据相似三角形原理可得
(6)
式中:f代表摄像头焦距。由于环境各点与像平面的距离d不同,所以各点的像点像素位移也不同。将环境整体看作一个刚体,则所有环境点的位移均为Δl。所以
(7)
式中:N为图像像素数。特殊情况下,当环境为近似平面(如地板、墙壁等)时,各环境点与像平面的距离d均相同,因此对应的像点的Δx也都相同,即Δx1=Δx2=…=ΔxN。整个图像发生了Δx的位移,且图像位移与环境位移成正比,当环境相对静止时,则摄像头的自身位移与图像位移成正比,以下推算均假定环境为此种情况。
图3 图像及其参考图像的相对位置
(8)
(9)
即令E对Δxt和Δyt的偏导数为0,可以得到
(10)
(11)
由式(10)、 (11)可以解得
(12)
其中,
(13)
实际应用中,由于图像噪声、环境光照变化或者阴影等因素的影响,会使光流输出值产生小幅度波动甚至大幅度突变。一般情况下,典型的图像噪声为单位亮度值,梯度越小的点受图像噪声影响越大,当这些小梯度点参与光流计算时,会使结果产生较大误差。为了不受这些点的影响,可以在计算时设定一个梯度阈值,梯度小于此阈值的点不参与光流计算,即剔除极大误差图像点。
当环境光照突变时,图像整体的亮度会增大或减小,在突变期间计算的光流值会产生一个大幅度波动。对于这种情况,一种方法是在检测到光流突变时不进行输出,当光流稳定后再输出。另一种方法是先对图像进行去直流成分处理,然后再进行光流计算,这种方法把环境光照的突变看作是每个图像点叠加了一个直流成分,破坏了亮度不变性假设,引起了光流计算误差,因此通过去直流成分的方法消除干扰。这种方法不关心环境亮度变化的幅度,适应性更强,并且去直流成分的操作不会改变图像的梯度值,不会对光流计算带来附加的影响。进一步的,如果环境光照变化对图像各部分的影响并不一致,可以使用局部亮度突变一致性假设,对图像进行分块去直流成分操作。
实际应用中,使用梯度阈值与分块去直流成分相结合的方法来克服图像噪声和环境光照变化。
2 算法仿真
使用USB摄像头,在PC机上使用Matlab对上述算法进行仿真,设置摄像头分辨率为160×120。两次实验中,摄像头分别相对环境做平移和圆周运动。程序连续采集图像并对相邻帧计算光流。从视频流中抽取连续的10帧图像,如图4所示。
(a) 水平运动
(b) 圆周运动
图中用向量表示当前帧相对于前一帧的光流大小和方向,结果表明光流向量正确的反映了摄像头自身的运动方向,在室内环境下算法运行良好,无需人为设置特殊的纹理背景。
3 光流传感器设计
光流传感器采用分体式结构,图像传感器使用OV7670摄像头模组,尺寸21 mm×12.5 mm,镜头焦距4.49 mm,视场角67°,像素640×480。处理器使用STM32F207VGT6,集成一个数字摄像头接口(DCMI),可以方便地与OV7670进行连接。其128 kB的RAM可以存储2张QCIF (176×144像素)格式的彩色图像,无需外扩数据存储器,有利于微型化设计。120 MHz的时钟频率和150DMIPS的运算能力满足实时光流计算的需求。光流传感器的主要硬件接口电路如图5所示。
图5 光流传感器主要硬件接口电路
图6 光流传感器
光流传感器工作流程如下:首先获取一幅QCIF格式的图像,然后使用模板尺度为5×5的高斯滤波器进行滤波,去除图像噪声,再使用分块去直流成分与梯度阈值相结合的方式来消除干扰。如果采集的是第一幅图像,则使用式(13)计算a、b和d,否则计算c和e,然后使用式(12)进行光流计算,这里Δp设定为1个像素。然后更新计算a、b和d,再进行下一幅图像的采集。为了防止应用中不利因素(如图像抖动等)引起的光流突变,将光流计算值经过低通滤波后再输出。光流输出频率为30 Hz,满足低速运动环境的需求。光流传感器尺寸为30 mm×25 mm,质量2.9 g,实物如图6所示。
4 实验
使用自行研制的微型四旋翼飞行器为实验平台,如图7(a)所示。该飞行器最大尺寸16.5 cm,重量约35 g,最大载荷5 g,由于载荷的限制无法使用常规的光流传感器进行辅助悬停控制。实验在室内自然光照环境下进行,光流传感器面向地面,地面为带有纹理的普通木质地板,如图7(b)所示。
图7 微型飞行器及实验环境
实验中,首先通过手动遥控使微型飞行器达到指定位置,然后向其发送指令,使其进入光流传感器辅助的自主悬停模式。在该模式下,飞行器的高度由超声波测量并锁定;偏航方向的旋转被偏航陀螺和电子罗盘锁定。这样,飞行器在三维空间中只能进行前后方向和左右方向的漂移运动。为了对漂移进行抑制,飞行器的主控制器首先通过串口从光流模块获取代表图像运动的二维光流信息,然后根据飞行高度,由式(6)计算出飞行器的绝对漂移量。此漂移量作为飞行器位置控制环的输入,通过一个PID控制器来调整飞行器的运动方向,以实现目标漂移量为零。飞行器正面安装了一个红色发光二极管,通过双目测距法对图像中的红色目标进行跟踪,以实时监测飞行器的位置漂移情况。实验中悬停高度为1 m,悬停时间为60 s,飞行器相对设定悬停位置的漂移量如图8所示,前后方向和左右方向的最大位置漂移量均小于20 cm,基本满足狭小环境下的悬停精度要求。
图8 飞行器悬停漂移量
5 结束语
本文提出了基于图像插值的二维光流计算方法,使用梯度阈值与分块去除亮度直流成分相结合的方法来克服图像噪声和环境光照变化,通过仿真验证了算法的可行性。给出了微型光流传感器的设计方法。在微型四旋翼飞行器平台上进行了自主悬停实验,结果表明飞行器悬停的位置误差小于20 cm,光流传感器辅助位置控制的效果较好。与常规的光流传感器相比,该传感器尺寸小重量轻,环境适应能力较强,适用于一般要求的辅助位置控制,尤其适用于微型的机器人和飞行器平台。
参考文献:
[1]KOENDERINK J. Optic flow[J]. Vision Research, 1986, 26(1): 161-180.
[2]HORN B, SCHUNCK B. Determining optical flow[J]. Artificial Intelligence, 1981, 17: 185-203.
[3]SUNDARESWARAN V. Egomotion from global flow field data[C]//Proceedings of the IEEE Workshop on Visual Motion. Los Alamitos, USA, 1991: 140-145.
[4]WEI Z, LEE D, NELSON B. FPGA-based real-time optical flow algorithm design and implementation[J]. Journal of Multimedia, 2007, 2(5): 38-45.
[5]BARROWS G, NEELY C. Mixed-mode VLSI optic flow sensors for in-flight control of a micro air vehicle[C]// Proceedings of the SPIE 45th Annual Meeting. San Diego, USA, 2000: 52-63.
[6]STOCKER A. Analog integrated 2-D optical flow sensor[J]. Analog Integrated Circuits and Signal Processing, 2006, 46: 121-138.
[7]STOCKER A, DOUGLAS R. Analog integrated 2-D optical flow sensor with programmable pixels[C]//International Symposium on Circuits and System. Vancouver, Canada, 2004: 121-138.
[8]LEE S, SONG J. Mobile robot localization using optical flow sensors[J]. International Journal of Control, Automation and Systems, 2004, 2(4): 485-493.
[9]STOFFLER N, FARBER G. An MPEG-processor-based robot vision system for real-time detection of moving object by a moving observer[C]//Proceedings of 14th International Conference on Pattern Recognition. Washington, USA, 1998: 477-481.
[10]KHALIL F, PAYEUR P. Optical flow techniques in biomimetic UAV vision[C]//IEEE International Workshop on Robotic and Sensors Environments. Ottawa, Canada, 2005: 14-19.
[11]ROMERO H, SALAZAR S, LOZANO R. Real-time stabilization of an eight-rotor UAV using optical flow [J]. IEEE Transactions on Robotics, 2009, 25(4): 809-817.
[12]HERISSE B, RUSSOTTO F, HAMEL T, et al. Hovering flight and vertical landing control of VTOL unmanned aerial vehicle using optical flow[C]//IEEE/RSJ International Conference on Intelligent Robots and Systems. Nice, France, 2008: 801-806.
[13]REZAEI M, SAGHAFI F.Optical flow-based obstacle avoidance of a fixed-wing MAV[J]. Aircraft Engineering and Aerospace Technology, 2011, 83(2): 85-93.
[14]RUFFIER F, FRANCESCHINI N. Optical flow regulation: the key to aircraft automatic guidance[J]. Robotics and Autonomous Systems, 2005, 50(4): 177-194.
[15]ZINGG S, SCARAMUZZA D, WEISS S, et al. MAV navigation through indoor corridors using optical flow[C]//IEEE International Conference on Robotics and Automation. Anchorage, USA, 2010: 3361-3368.
[16]SRINIVASAN M V. An image-interpolation technique for the computation of optic flow and egomotion[J]. Biological Cybernetics, 1994, 71(5): 401-415.
[17]FENNEMA C, Thompson W. Velocity determination in scenes containing several moving objects[J]. Computer Graphics and Image Processing, 1979, 9: 301-315.