
*运动跟踪算法
完成人脸识别后,我们的机器人可以跟随用户运动。于是实现了一种运动跟踪算法。我们的目标是要实现一种鲁棒性的运动跟踪算法,以使机器人不至于错过目标。
为了实现鲁棒性的运动跟踪,必须同时找到某个人的位置和运动方向。其概念是,当一个人从场景的中央移向某一侧时,机器人应该旋转,跟随人的运动。不过,如果一个人出现在右侧而向左侧行走,机器人不应当把自己旋转到右侧,否则它将有可能错过这个人。
我们的项目将图像差异比较和块匹配算法结合起来。机器人根据每一对连续的灰度级图像来估计目标的位置和运动方向。目标的位置是根据图像的差异来获得的,目标的运动方向通过在目标位置处执行块匹配算法来找出。
运动方向
欲找出运动的方向,就需要对区域位置的检测结果的历史进行记录并执行运动检测算法。第一种办法并不现实,因为摄像机的角度将频繁更新。一旦机器人发生旋转,位置的历史记录就无法给出移动物体的运动方向。因此,我们需要另一种运动检测算法来找出运动的方向。
现在已经有若干种运动检测算法,包括块匹配算法(BMA),基于梯度的技术和立体视觉。基于梯度的技术是一种计算密集的方法,因此并不适合于嵌入式系统。立体视觉很高的I/O开销将会显著地降低视频捕捉的帧速率。因此,块匹配算法被选为运动检测算法。
块匹配算法的思想是将视频帧划分为尺寸相等的小块。在视频帧中的每一块,我们都试图找出在下一帧中的对应方块区域。一个块区与下一帧中所对应的块区之间的相对位置变化与一个运动矢量联系起来(该运动矢量在图7中用箭头标注出来)。通过运动矢量的平均,我们就可以得到对物体的移动情况的总体描述。在我们的项目中,为了提高运行时间性能,在执行块匹配算法时视频帧的分辨率被调低。
系统测试
全系统的试验
处理一幅图像所需要的平均时间:
识别模式(在眼睛检测流程中)
结果表明,QT显示占用了很多资源。为了找出眨眼时图像的差异,时间滞后应该极小。否则,由于背景噪声的存在,两幅图像间会出现多处差异。这就是为何我们选择在执行眼睛检测算法时不显示第二幅所捕获图像的原因。
眼部检测试验
我们在真实条件下对眼睛算法的可靠性进行了测试。眼睛检测的性能在室内和室外环境中进行了测试。室内的照明采用荧光灯,而室外的主要背景照明光源为日光。3位系统不熟悉的候选人被选中作为测试对象,每人站在网络摄像头前面,由系统进行眼睛探测算法,直到完成50次成功检测为止。所需眨眼的总次数以及完成一次成功的检测所需的错误接受的次数被记录下来。计算公式是:总的眨眼次数=错误接受-错误拒绝-1。试验结果列在表1中。
试验结果表明,在室内和室外环境中完成一次成功的眼睛检测所需的平均眨眼次数少于4次,这对于实时应用来说是可以接受的。很高的“错误拒绝/错误接受比”还表明所用的算法会抑制可疑的情况。它可以更准确地让系统找到眼睛的位置。
结语
我们已经利用人脸识别算法和运动跟踪算法成功地实现了我们的“跟我走”机器人。样机的设计存在某些限制,例如,机器人在人群拥挤的区域会失去对用户的跟踪。机器人仍然认为用户会从前面接近它从而捕捉他/她的正面图像。机器人不支持自动对焦。
不过,我们最初的目标已经在机器人设计中实现了。快速和可靠的面部识别程序已得到实验。只需眨几次眼睛,就能以很高的正确率自动检测出眼睛的位置。我们预计,正确的眼睛位置的获取,将把人脸识别性能的精确度提高到80%以上。该例程可以在几秒内完成,这对于嵌入式系统来说是可以接受的。运动跟踪功能还可以让机器人在无人控制与干预的情况下跟随人移动。拥有完全自行通过逻辑判断来决定行动的能力,正是机器人具有智能的原因。
经过进一步改进后,我们相信,我们的低成本通用型机器人可以用于家政管理、玩具、儿童和老人的看护、运输及后勤物流,并可以用于娱乐用途。
由于“跟我走”机器人具有很高的可扩展性,我们预计未来将出现更多的工业和商业应用。
参考文献:
1. AIBO Entertainment Robot, http://www.sony.net/Products/aibo/
2. Wiskott, L., Fellous, J.M., Krüger, N., and von der Malsburg, C., "Face Recognition by Elastic Bunch Graph Matching", In Intelligent Biometric Techniques in Fingerprint and Face Recognition, eds. L.C. Jain et al., publ. CRC Press, ISBN 0-8493-2055-0, Chapter 11, pp. 355-396, 1999


