摄像头人脸跟踪系统及人脸跟踪方法与流程

文档序号:11254277阅读:7706来源:国知局
摄像头人脸跟踪系统及人脸跟踪方法与流程

本发明属于机器人领域,尤其是涉及一种摄像头人脸跟踪系统及人脸跟踪方法。



背景技术:

舵机的控制方式一般采用pwm波的控制方式,不同占空比的pwm波对应舵机不同的角度。要控制舵机运行到指定角度,只要输出对应占空比的pwm波,舵机就会以一定的速度运行到指定角度。因为,速度是舵机的特性指标,不能改变。

因此,机器人的头部随摄像头的转动为机械式的匀速转动,不符合人体头部转动的运动方式,需要提供使摄像头的转动更加的平滑的运动方式。



技术实现要素:

有鉴于此,本发明旨在提出一种摄像头人脸跟踪系统及人脸跟踪方法,以使摄像头的转动更加的平滑,符合人体头部转动的运动方式。

为达到上述目的,本发明的技术方案是这样实现的:

摄像头人脸跟踪系统,包括主控制器、舵机控制板、x轴舵机和y轴舵机,所述主控制器通过串口与舵机控制板通信连接,所述舵机控制板连接x轴舵机和y轴舵机,所述x轴舵机和y轴舵机分别通过传动结构控制摄像头水平和垂直方向的运行。

上述摄像头人脸跟踪系统的人脸跟踪方法,包括如下内容:

步骤1,通过人脸识别算法,获得当前人脸在画面中的区域坐标;

步骤2,根据人脸区域坐标,判断x轴舵机和y轴舵机是否需要转动;

步骤3,若x轴舵机和或y轴舵机需要转动,则进行人脸区域坐标到相应舵机控制信息的转换,具体为,计算出控制相应舵机运动的速度和方向,速度是弧度每秒,方向就是正反转;

步骤4,在接收到运行指令后,主控制器会根据舵机当前速度、期望运行速度、加速度、目标角度,计算出减速点;其中,期望运行速度为步骤3中得到的控制相应舵机运动的速度和方向;

步骤5,控制相应舵机进行先从当前速度运行到期望运行速度,当舵机运行到减速点时,开始减速,减速完成时同时到达目标角度,实现舵机的平滑运动。

在步骤1中,获取到的人脸区域坐标为:区域左上角坐标xf,yf,区域宽度wf,高度hf,画面宽度w,画面高度h,参考点坐标xref,yref。

在步骤2中,分别判断参考点坐标xref,yref是否在人脸区域中判断方法为:

如果xref>xf并且xref<xf+wf,在人脸区域中,则不对x轴进行调整;如果不在区域中,则对x轴进行调整;

如果yref>yf并且yref<yf+hf,在人脸区域中,则不对y轴进行调整;如果不在区域中,则对y轴进行调整。

在步骤3中,人脸区域坐标到相应舵机控制信息的转换方法包含如下步骤:

1)计算人脸区域中心点相对于参考坐标点的偏移距离;

2)根据偏移距离占总画面宽度w的百分比,乘以最大可增加速度vmax,算出增加的速度v+;

3)在基准速度上加上v+的绝对值,得到控制x轴舵机和y轴舵机的速度vx和vy,然后,根据增速v+的正负,判断转动方向。

在步骤4中,减速点的计算方法如下:

s=v*t+1/2*a*t*t

s=v*(ve-v)/a+1/2*a*(ve-v)/a*(ve-v)/a

s=(ve-v)*(ve+v)/a/2

式中:v表示当前速度,ve表示期望运行速度,a为加速度,t为时间,s为加速距离;

根据上述公式计算出以当前速度、加速度,运行到期望运行速度总共所需运行的加速距离s,也为s减速距离;

再根据当前弧度和目标弧度,计算出剩下能够运行的距离s剩,即目标点距离se;

1)若剩下能够运行的距离s剩大于加速和减速所需路程之和,减速点则为目标点距离se减去减速所需距离;

2)若剩下的距离s剩小于加速和减速所需路程之和,则比较加速距离和减速距离:

21)若加速距离等于减速距离的话,则剩余路程的中点即为减速点;

22)若加速距离不等于减速距离的话,则计算从当前速度立刻减速到0时所需的路程:

221)若此路程小于剩余路程,则减速点为

s减速点=se–(s立刻减速+((se–s立刻减速)/2))

222)若此路程大于等于剩余路程,则需要立刻减速。

相对于现有技术,本发明系统及方法具有以下优势:

本发明为了使摄像头的转动更加的平滑,符合人体头部转动的运动方式,在对舵机的控制上,加入了对舵机速度和加速度的控制。实现摄像头的一个流畅的运行过程。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述摄像头人脸跟踪系统的框图;

图2为本发明实施例所述舵机控制板的电路图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面将参考附图并结合实施例来详细说明本发明。

摄像头人脸跟踪系统,如图1所示,包括主控制器、舵机控制板、水平舵机、垂直舵机,所述主控制器通过串口与舵机控制板通信连接,所述舵机控制板连接水平舵机和垂直舵机,所述水平舵机和垂直舵机分别通过传动结构控制摄像头水平和垂直方向的运行。本实施例由工控机作为主控制器,如图2所示,舵机控制板的型号为stm32f103rc。

为了使摄像头的转动更加的平滑,符合人体头部转动的运动方式,在对舵机的控制上,加入了对舵机速度和加速度的控制。因为速度是舵机的特性指标,不能改变。所以,想要进行调速,只能通过控制器控制pwm波占空比的变化速度,来变化舵机运行的速度。

想要实现摄像头的一个流畅的运行过程,需要使舵机逐渐加速到指定速度运行,在快要到达指定目标角度时,逐渐将速度减速到停止,同时运行到指定角度位置。

舵机运行的速度,在控制上相当于对舵机角度的变化进行细分,设定一个最小变化角度,根据一定的周期,以最小变化角度为单位,每个周期增加或减少一个最小角度,直到达到指定角度。具体实施时,最小变化角度相当于是一个参数,舵机控制板初始化时设定好,每次变化多少角度,根据这个角度去设置速度定时器的周期,一般这个设置成舵机最小旋转角度,或者是他的倍数,数值越小肯定变化的越平滑,相当于微分的更细,类似于分辨率。

只需要根据设定的速度,去计算这个变化的周期,就能实现对舵机运行速度的控制。

舵机运行的加速度,能够使舵机的运行能够有一个加速和减速的过程,在控制上,只需要再设定一个最小变化速度,根据一定周期,以最小变化速度为单位,每个周期增加或减少一个最小速度,直到达到指定速度。根据设定的加速度,计算速度改变的周期,就能实现对舵机加速度的控制。具体实施时,最小变化速度也相当于是一个参数,舵机控制板初始化时设定好,每次变化多少速度,根据这个角度去设置加速度定时器的周期,数值越小肯定变化的越平滑,相当于微分的更细,类似于分辨率。

上述摄像头人脸跟踪系统的人脸跟踪方法,包括如下步骤:

步骤1,通过人脸识别算法,获得当前人脸在画面中的区域坐标;

步骤2,根据人脸区域坐标,判断x轴舵机和y轴舵机是否需要转动;

步骤3,若x轴舵机和或y轴舵机需要转动,则进行人脸区域坐标到相应舵机控制信息的转换,具体为,计算出控制相应舵机运动的速度和方向,速度是弧度每秒,方向就是正反转;

以此速度(人脸距离画面中心越远,转动速度越快),朝向人脸位置运动一小段时间(例如20ms),逐渐逼近人脸位置。因为人体移动相对较快,图像识别出每一帧人脸的区域坐标都在不断变化,所以使舵机直接转到人脸所在角度并不能很稳定的使摄像头对准人脸,摄像头会随着人体移动出现左右摆动的现象。所以采用了根据每一帧的人脸区域数据,朝向人脸的方向运动一小段距离。这样使运动过程细分,能够及时的响应人脸位置的变化,也能更准确平滑的实现跟踪的过程。

步骤4,在接收到运行指令后,主控制器会根据舵机当前速度、期望运行速度、加速度、目标角度,计算出减速点;其中,期望运行速度为步骤3中得到的控制相应舵机运动的速度和方向;

步骤5,控制相应舵机进行先从当前速度运行到期望运行速度,当舵机运行到减速点时,开始减速,减速完成时同时到达目标角度,实现舵机的平滑运动。

在步骤1中,获取到的人脸区域坐标为:区域左上角坐标(xf,yf),区域宽度wf,高度hf,画面宽度w,画面高度h,参考点坐标(xref,yref)。

在步骤2中,分别判断参考点坐标xref,yref是否在人脸区域中。例如,首先,判断x轴上参考点xref坐标是否在人脸区域中:

如果xref>xf并且xref<xf+wf,在人脸区域中,则不对x轴进行调整,x轴舵机不需转动;

如果不在区域中,则对x轴进行调整,x轴舵机需转动。

在步骤3中,人脸区域坐标到相应舵机控制信息的转换方法包含如下步骤(以x轴舵机调整为例):

1)计算人脸区域中心点相对于参考坐标点的偏移距离xoffset:

xoffset=xref–(xf+wf/2);

2)根据偏移距离xoffset占总画面宽度w的百分比,乘以最大可增加速度(vmax),算出增加的速度v+:

v+=vmax*(xoffset/w);

3)在基准速度v上加上v+的绝对值,得到控制x轴舵机的速度vx,然后,根据增速v+的正负,判断转动方向,决定vx的正负。

如果v+为正,则vx=v+|v+|,如果v+为负,则vx=-v-|v+|。

如果y轴上需要转动,对y轴的上参考点yref进行同样的计算,算出速度vy。

在步骤4中,控制器只要收到目标角度()和运行速度输入值,控制器就能控制舵机以期望值平滑运行,但在实际操作中,由于用户指令的变化,舵机运行状态,舵机角度限位等因素,也许不能平滑的实现用户期望的动作,在这时控制器就要对运行动作进行调整,计算合适的减速点,保证舵机运行的速度降到0的同时运行到目标角度,根据期望速度和运行时间算目标角度为现有技术。

减速点的计算是舵机平滑运行的关键点,控制器会根据舵机当前速度、期望运行速度、加速度、期望目标角度等参数,计算出减速点,控制舵机的运行。舵机的运行速度以弧度每秒为单位,目标角度以弧度表示。

其中,加速度a就是舵机启动和停止时的加速度,单位是弧度/s2,这个是在舵机控制器初始化的时候设置的一个参数,在控制速度的指令中不涉及到这个参数。

其中,目标角度是舵机控制板根据收到的指令设定的,望期转到的角度,或者指定设定期望运动的时间和速度,根据时间和速度算出来期望的目标角度。

减速点的计算方法如下:

s=v*t+1/2*a*t*t

s=v*(ve-v)/a+1/2*a*(ve-v)/a*(ve-v)/a

s=(ve-v)*(ve+v)/a/2

式中:v表示当前速度,ve表示期望运行速度,a为加速度,t为时间,s为加速距离。

根据上述公式计算出以当前速度、加速度,运行到期望运行速度总共所需运行的加速距离s(也为s减速距离)。再根据当前弧度和目标弧度,计算出剩下能够运行的距离s剩(s剩就是当前位置距离目标弧度se的距离)。

1)若剩下能够运行的距离s剩大于加速和减速所需路程之和,则说明中间有匀速运行时段,减速点则为目标点距离se减去减速所需距离(s减速距离,单位为弧度),其中目标点距离se为目标角度,单位为弧度;

s减速点=se-s减速距离

2)若剩下的距离s剩小于加速和减速所需路程之和,则说明剩下路程不够使舵机达到指定速度。需要重新计算一个能够达到的最大速度,保证能够在目标点降速到0。在这种情况下,

21)若加速距离等于减速距离的话,则剩余路程的中点即为减速点;

s减速点=se–(s剩/2)

22)若加速距离不等于减速距离的话,则计算一下,从当前速度立刻减速到0时所需的路程(s立刻减速),

s立刻减速=(ve-v)*(ve+v)/2a

v等于当前速度,ve等于0,a数值等于负a,即:

s立刻减速=(0-v)*(0+v)/(-a)/2=v2/2a;

221)若此路程小于剩余路程,则减速点为

s减速点=se–(s立刻减速+((se–s立刻减速)/2))

222)若此路程大于等于剩余路程,则需要立刻减速。

本发明通过人脸识别算法,获得当前人脸在画面中的区域坐标,根据坐标来控制水平和垂直两个方向上的x轴舵机和y轴舵机,根据vx,vy两个速度去控制x轴舵机和y轴舵机的转动。保证参考点坐标(xref,yref)始终在人脸区域中,达到人脸跟随的功能。实现保持人脸在画面的中心区域,实现摄像头对人脸的高效跟踪。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1