汤 辰,万 衡
(上海应用技术学院,上海 201418)
在生物特征识别技术中:人脸识别、虹膜识别、掌纹识别、声音识别等有着广阔的应用前景,以上技术都是利用计算机技术与人类生物特征的关联研究,因此备受瞩目[1]。其中人体骨骼信息的提取可以应用于个人隐私保护、信息安全、金融服务和刑侦鉴定等领域[2]。而对于服务机器人这个朝阳行业来讲,该技术更是必不可缺[3]。目前微软利用Kinect的红外景深摄像头采集人体骨骼信息,即使全身包裹衣服,依然可以获取骨骼点,该技术可以提取人的20个关节点信息[4],依次测算出骨骼尺寸及比例,机器人可以根据该特征信息确认人物身份以及需要跟踪的人物位置,但实验发现当出现在摄像头视野范围内的人物较少时,骨骼检测相对稳定,相反则容易出现混乱。
针对以上出现的问题,本文采用激光扫描仪来扫描人腿信息进行辅助修正,它所获取的是全离散的矢量距离点构成的“点云”数据,它扫描所获得的每个像素都包含一个角度值和距离值[5]。因此使用激光扫描仪的辅助手段进行数据分析有很大的优势,尤其是在结合了视频图像数据和激光数据时体现出了它的优越性。
人体的骨骼信息是通过处理Kinect的深度数据获得的[6],在景深数据的基础之上提取人体骨骼信息的过程就是骨骼追踪。本文采用Kinect SDK的骨骼追踪技术来获取骨骼数据,其最多可以提供两名用户的详细骨骼信息[7]。首先,Kinect的CMOS红外传感器会以30 frame/s的速度来扫描周边的环境,探测到红外光反射来计算视野范围内每一个像素点的深度值,并且生成景深图像流,即获得了深度数据。然后,CMOS红外传感器在视野范围内的深度图像中寻找可能是人体的物体,最后根据产生的X,Y,Z数据来确定人体骨骼点,区分哪部分是头、手、及身体[8]。
基于Kinect SDK的骨骼追踪流程如图1所示。
图1 骨骼识别流程
(1)初始化 初始化Kinect设备以及NITE环境,摄像头仰角设置。
(2)打开摄像头 打开RGB流以及深度数据流的画面[9]。
(3)数据转换 将深度数据类型转换成Opencv中的IplImage图像类型。
(4)创建User跟踪器 创建并读取User Frame信息,并且从中获取User的信息。
(5)骨骼获取跟踪 根据所获取的User信息完成对人体骨骼的检测。其骨骼空间的坐标系(X,Y,Z)表示为:skeleton.Joint.position.X,skeleton.Joint.po⁃sition.Y,skeleton.Joint.position.Z,将骨骼空间的3D坐标转换成屏幕形式的2D坐标,根据此坐标求出两点之间的距离以及两点之间的水平距离。并采用连线的方式将骨架画出来。
(6)退出程序 关闭Kinect数据流、跟踪器、NITE环境以及释放Frame信息。
在骨骼的检测识别中,可以根据人体骨骼对人进行编号区分。其中有很多信息可以作为人物身份标定,比如有:身高、肩宽、腿长以及臂长等。根据上节中所说的骨骼空间坐标的表达,可得肩宽L、身高H以及身高肩宽比S为:
按照骨骼比例中的某一种情况S进行分类,其实际效果如图2所示;在某些情况下也会出现图3情况的误检测。
如图2中,假设机器人所要跟随的是右边人物的骨架信息,试验发现,在多人干扰的情况下,右边人物的骨架信息有时会跳转到干扰人身上,这种情况极大地错误引导了机器人的动作,针对该情况以及误检测的情况,本文采用激光扫描的方法来纠正。
图2 骨骼人物区分
图3 将柱子也检测成为了人体骨骼所导致的误检测
人腿有一个显著的特征就是呈圆弧状[9],如图4所示,因此本文针对此特征,利用激光扫描仪获取一连串离散的点,将其进行聚类分析,识别出人腿的聚类信息,计算出人腿的中心点,从而确定目标人物的位置。
图4 激光扫描人腿数据点
Tk[n]表示人腿信息点的集合,其中n表示激光扫描人腿的点数。其识别人腿的原理如下:
(1)激光扫描人腿的首尾点的直线长度L1和连线这些点的总长度L2为:
通常情况下人无论是在行走或者站立其两腿之间的距离一般不超过60 cm,也就是满足以上条件并且L<0.6 m时,则符合双腿的条件,若存在3个或者3个以上的点两两之间相互满足以上的条件,则认为是无效的点,继续扫描。如图5所示。箭头的起点为激光的位置,两个标为白色的数据点则判定为人,白色区域两边的凸点即为人腿。
图5 激光扫描数据点
实验中采用的激光为LMS111系列,该传感器已经达到了0.1°的分辨率,500 Hz的扫描频率以及0.5 ms~2 ms的响应时间,并且其不受光照强度变化的影响,扫描角度为70°,20 m的检测距离,针对10%反射率的黑色物体依然可以达到18 m。实验中将该设备安装在机器人地盘的上端,采用以太网与主机进行通信。
通常骨骼点所检测到的Skeleton.Joint.Position.Z与激光扫描人腿的距离信息Z存在一定的阈值关系,如图6所示。它是本文的服务机器人试验平台,激光与Kinect不在一个垂直面上,该阈值P可取30 cm,当他们的差值小于P值时,则该骨骼点是没有问题的,若出现骨骼误检测时,通常P值的大小会反应出该情况,此时取人腿中心点T(xo,yo)。人与机器人之间的距离会始终保持1.5 m左右,也就是所测骨骼点以及激光数据点与机器人的径直距离需要保持在1.5 m左右,人快则机器人快,人慢则机器人慢,当他们之间的距离小于1 m时,机器人停止运动,因此骨骼点距离或者激光扫描点距离大于2 m左右时,即在正常检测情况下,不可能出现径直距离超过2 m的,否则为错误点,此时应取小于该距离的点进行跟踪。其中目标人物的位置与机器人的轮子速度关系如下:
其中ω为3个轮子的角速度,θ为世界坐标系中X轴到机器人中X轴的角度,逆时针为正,X,Z则是机器人相对目标人物X轴方向和径直的距离,z>0表示向前移动,x>0表示向右移动。选择了5个人来参加本次实验,当中有一个目标人物,其他4人均为干扰背景,其测试结果如表1所示。
图6 服务机器人
表1 实验数据
本文提出了针对骨骼误检测进行了研究,利用人腿圆弧状的特征,使用激光扫描人腿信息获取人的位置及目标人物的距离,在一定程度上纠正了骨骼误检测的问题。该方法在服务机器人平台进行试验,试验结果验证了本文方法的有效性,为日后对服务机器人的研究奠定了基础。
[1]马虹.基于WiFi的云机器人设计研究[J].电子器件,2014,37(2):368-374.
[2]李恒.基于Kinect骨骼跟踪功能的骨骼识别系统研究[D].
[3]王一凡,颜建美,陈东升.基于RFID和视觉的工业机器人系统应用与实现[J].电子器件,2013,36(6):872-875.
[4]韩文锡,张维忠,赵志刚.基于深度图像的人体骨骼点的跟踪矫正方法[J].青岛大学学报,2014,27(1):83-86.
[5]赵艳梅,张爱武,王贵宾.基于激光扫描仪的人腿信息数据获取与处理[J].资源环境与工程,2007,21(3):309-311.
[6]Human_Interface_Guideline_v1.7[M/OL].1-56.
[7]顾容,何益明,金丽燕.基于Kinect骨骼跟踪技术的智能教学控制系统的设计与实现[J].计算机应用与软件,2013,6(30):276-280.
[8]樊景超,周国民.基于Kinect骨骼跟踪技术的手势识别研究[J].安徽农业科学,2014,42(11):3444-3446.
[9]张颖超,段京易,胡凯,等.基于自然环境辨识的移动机器人位姿快速检测[J].电子器件,2014,37(5):876-881.
[10]王灿,孔斌,韦虎.基于激光雷达机器人的目标人跟踪方法研究[J].计算机应用与软件,2014,31(7):164-168.
汤 辰(1988-),男,汉,江苏扬州,上海应用技术学院,硕士,主要从事图像处理的研究,13681872133@163.com;
万 衡(1963-),男,汉,上海,上海应用技术学院,副教授,主要从事电力电子与电气传动的研究,6450387@qq.com。