发明内容
鉴于现有技术中像素归类方法不够稳定的问题,有必要提供一种相对稳定的像素归类方法。
同时,还有必要提供一种相对稳定的关节体姿态识别方法。
同时,还有必要提供一种鼠标指令生成方法。
本发明的像素归类方法包括提取处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量;将所述特征向量输入到预先训练好的分类器,计算所述像素的所属部位。
在本发明的像素归类方法中,所述步骤“提取处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量”中的提取处理后的像素位置信息包括步骤:计算关节体表面的全部像素的重心(xc,yc,zc);计算所述像素的三维坐标(x,y,z)与所述重心(xc,yc,zc)的偏差(x-xc,y-yc,z-zc);使用关节体的估算高度对所述偏差进行处理得到所述处理后的像素位置信息,height为关节体的估算高度。
在本发明的像素归类方法中,所述步骤“提取处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量”中的提取处理后的像素位置信息包括步骤:计算关节体表面的全部像素的重心(xc,yc,zc)及关节体表面的全部像素的协方差矩阵cov_mat;使用所述重心(xc,yc,zc)和协方差矩阵cov_mat对所述像素的三维坐标(x,y,z)进行重投影,得到所述像素的重投影坐标(xp,yp,zp), 其中A为协方差矩阵cov_mat对应的特征矩阵;使用关节体的估算高度对所述重投影坐标进行处理得到所述处理后的像素位置信息,height为关节体的估算高度。
在本发明的像素归类方法中,所述步骤“提取处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量”中的提取像素所属扫描段的尺寸信息包括步骤:确定一个用于扫描的二维图像,对所述二维图像中的像素在至少四个方向上进行扫描以形成至少两个扫描段,至少四个方向分别为m度方向、m+180度方向、n度方向以及n+180度方向,其中m度方向和n度方向为在所述二维图像中以所述像素为原点建立的任意二维坐标系中的任意两个方向;计算所述扫描段的长度;通过所述扫描段的长度计算扫描段的起始像素和扫描段的终止像素的归一化尺寸作为所述像素所属扫描段的尺寸信息。
在本发明的像素归类方法中,所述“确定一个用于扫描的二维图像,对所述像素在所述二维图像的至少四个方向上进行扫描以形成至少两个扫描段,至少四个方向分别为m度方向、m+180度方向、n度方向以及n+180度方向,其中m度方向和n度方向为在所述二维图像中以所述像素为原点建立的任意二维坐标系中的任意两个方向”中,以所述像素为起始点,沿着至少一个m度方向进行扫描,直至发现两相邻像素发生跳变停止,跳变前的像素为起始像素;以所述像素为起始点,沿着所述至少一个m度方向的反方向进行扫描,直至发现两相邻像素发生跳变停止,跳变前的像素称为终止像素;所述起始像素与所述终止像素构成所述扫描段;其中跳变为所述扫描段上两相邻像素深度相差大于预先设定的第一阈值。
在本发明的像素归类方法中,所述“确定一个用于扫描的二维图像,对所述二维图像中的所述像素在至少四个方向上进行扫描以形成至少两个扫描段”为“确定一个用于扫描的二维图像,对所述二维图像中的所述像素在0度,45度,90度,135度,180度,225度,270度以及315度八个方向上进行扫描以形成四个扫描段”。
在本发明的像素归类方法中,所述“计算所述扫描段的长度”包括:所述扫描段上像素按扫描顺序三维坐标序列为:{(x1,y1,z1),…,(xi,yi,zi),…,(xN,yN,zN)},如用两跳变像素之间的欧式距离描述:扫描段的长度为(x1,y1,z1)和(xN,yN,zN)的欧式距离,即 起始像素的三维坐标为(xs,ys,zs),终止像素的三维坐标为(xe,ye,ze),则扫描段的长度为 如用两跳变像素之间的累计距离描述:扫描段的长度为(x1,y1,z1)和(xN,yN,zN)的累积距离,两相邻像素(xi,yi,zi)和(xi+1,yi+1,zi+1),则两相邻像素之间的距离为 两跳变像素之间的扫描段中共有N个像素,则扫描段的长度为:
在本发明的像素归类方法中,所述“通过所述扫描段的长度计算扫描段的起始像素和扫描段的终止像素的归一化尺寸作为所述像素所属扫描段的尺寸信息”包括:通过所述扫描段的长度获得扫描段的起始像素和扫描段的终止像素的第一归一化尺寸和/或第二归一化尺寸作为所述像素所属扫描段的尺寸信息,第一归一化尺寸为所述扫描段的长度和关节体估算高度的比值,第二归一化尺寸为所述扫描段的长度的平方与关节体的估算高度平方的比值。
在本发明的像素归类方法中,所述“通过所述扫描段的长度计算扫描段的起始像素和扫描段的终止像素的归一化尺寸作为所述像素所属扫描段的尺寸信息”为通过所述扫描段的长度计算所述扫描段的两个子扫描段的归一化尺寸为所述像素所属扫描段的尺寸信息;其中子扫描段为所述像素与像素所属扫描段的起始像素之间的像素集合,以及所述像素与像素所属扫描段的终止像素之间的像素集合。
在本发明的像素归类方法中,所述“通过所述扫描段的长度计算所述扫描段的两个子扫描段的归一化尺寸作为所述像素所属扫描段的尺寸信息”包括:通过所述扫描段的长度计算所述扫描段的两个子扫描段的第一归一化尺寸和/或第二归一化尺寸作为所述像素所属扫描段的尺寸信息,第一归一化尺寸为所述子扫描段的长度和关节体估算高度的比值,第二归一化尺寸为所述子扫描段的长度的平方与关节体的估算高度平方的比值。
在本发明的像素归类方法中,所述关节体的估算高度通过点云历史信息估计或根据协方差矩阵cov_mat的最大特征值估计,其中根据协方差矩阵cov_mat的最大特征值估计为:设定高度为其中k为预先设定的参数,推荐为4,λ1为协方差矩阵最大的特征值。
在本发明的像素归类方法中,当关节体之间存在遮挡时,对所述扫描段的起始像素和所述扫描段的终止像素的跳变和微跳变情况进行编码,得到一维遮挡编码,并将所述一维遮挡编码添加到所述像素所属扫描段的尺寸信息中得到修正后的像素所属扫描段的尺寸信息;其中微跳变为所述扫描段上两相邻像素深度相差大于预先设定的第二阈值。
在本发明的像素归类方法中,所述“将所述特征向量输入到预先训练好的分类器,计算所述像素的所属部位”步骤之前包括:将同一扫描段上相同的特征向量预先输入到存储空间。
本发明还涉及一种关节体姿态识别方法,其中包括使用上述的像素归类方法计算像素的所属部位;根据所述像素的所属部位确定关节点的位置;根据关节点的位置及所属部位的末端点确定关节体的姿态。
本发明还涉及一种鼠标指令生成方法,其中包括使用上述的像素归类方法计算像素的部位;所述关节体为人体,将人体左下臂、右下臂或头部的全部像素中最靠近部位末端点的前L个像素三维坐标的平均值作为鼠标位置,L为预先设定的正整数;
在本发明鼠标指令生成方法中,还包括:对所述鼠标位置的轨迹进行分析生成鼠标控制指令;或者对左下臂、右下臂、或者头部中的一个或者多个的运动轨迹进行分析生成鼠标控制指令。
采用本发明的像素归类方法、关节体姿态识别方法及鼠标指令生成方法通过处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量分析当前帧点云中像素的分布,确定像素的所属部位,避免了现有技术的在关节体运动剧烈时,容易归类识别失败或陷入局部最优,并且需要提供初始值的技术问题。从而使得本发明的像素归类方法、关节体姿态识别方法及鼠标指令生成方法较为稳定。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的像素归类方法采用机器学习的方法,可用于关节体的姿态估计。该机器学习过程包括训练和识别两个阶段,在训练阶段中,机器从场景中获取关节体的深度图像(去除了背景的深度图像),对关节体的深度图像中的像素进行特征提取,得到大量的特征向量以及与特征向量相对应的部位类别,然后使用这些特征向量以及特征向量相对应的部位类别对分类器进行训练并保存。在识别阶段中,如图1所示,先载入预先训练好的分类器,再对关节体的深度图像中的每个关节体像素提取特征向量,并对该特征向量进行识别,获得相应的部位类别。本发明的像素归类方法通过处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量分析当前帧点云中像素的分布,确定像素的所属部位,避免了现有技术的在关节体运动剧烈时,容易归类识别失败或陷入局部最优,并且需要提供初始值的技术问题。
本发明的像素归类方法提取的关节体深度图像中的特征向量为处理后的像素位置信息(具体的处理方法在下面有详细阐述)和/或像素所属扫描段的尺寸信息。像素所属扫描段的尺寸信息是指像素所归属的多个不同方向的扫描段的长度信息(以A像素为起始点,沿着某个方向进行扫描,直至发现两相邻像素发生跳变(跳变是指扫描段上两相邻像素深度相差大于预先设定的第一阈值)停止,跳变前的像素称为起始像素;再以A像素为起始点,沿着上述扫描方向的反方向进行扫描,直至发现两相邻像素发生跳变停止,跳变前的像素成为终止像素,起始像素和终止像素之间的像素集合构成一个扫描段)。
人体是关节体的一种,下面通过如图10所示的人体部分划分图说明处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为特征向量具有区分性(可用于分类器的训练识别)。如图10所示,人体部位可粗略的划分为躯干、头、左上臂、左下臂、右上臂、右下臂、左大腿、左小腿、右大腿以及右小腿十个部位,其中人体部位尺寸不同,例如躯干尺寸远大于左、右下臂,因此可以使用像素所属扫描段的尺寸信息表征像素所属部位的尺寸作为分类器训练识别的特征向量,再使用该分类器确定识别过程中像素的所在的部位。同时各个部位的位置分布也不同,例如多数情况下头部在躯干上方,而左上腿、左下腿、右上腿、右下腿分布在躯干下方,因此可以使用处理后的像素位置信息表征像素的三维位置作为分类器训练识别的特征向量,再使用该分类器确定识别过程中像素的所在的部位。当然如同时使用处理后的像素位置信息和像素所属扫描段的尺寸信息作为分类器训练识别的特征向量,分类器在识别过程中的识别效果将更佳。本发明的像素归类方法还可用于其他的关节体模型,例如将躯干分为上、中、下三部分的人体模型(这样会使姿态估计更为精确,但运行更慢),仅有上半身的人体模型(除腿之外的其它部位,这类模型可应用于仅需要计算上半身姿态的游戏或运动中)。只要关节体模型的不同部位的位置和/或尺寸的不同,就可以采用处理后的像素位置信息和/或像素所属扫描段的尺寸信息作为用于分类器的训练识别特征向量。
下面将具体说明如何采集处理后的像素位置信息和像素所属扫描段的尺寸信息。
在深度图像中,每个像素除了图像中的2维坐标(u,v)外,在三维空间中有三维坐标(x,y,z)。对图像坐标系和空间三维坐标系可能有不同的定义,为便于描述,本发明以人为参考系,u轴方向代表图像中的左右且从左向右u变大,v方向代表图像中的上下且从上到下v变大,x方向代表空间中的左右并且从左向右x变大,y方向代表空间中的上下并且从下到上y变小,z方向代表空间中的前后,并且从前向后z变大。除特别指出,本发明中的像素位置指的是像素的三维坐标。
其中像素位置信息是指像素在所提取图像场景(例如人体)的像素坐标,像素坐标使用立体坐标(x,y,z),表示像素在关节体表面的分布。由于本像素归类方法需要对不同位置、不同尺寸的人均具有适应性,因此需要对该像素坐标进行一定处理获取处理后的像素位置信息以对各种人均具有适应性,处理方法A的过程如图2所示,具体如下,:
计算关节体表面的全部像素的重心(xc,yc,zc);
计算待处理的像素与重心的偏差(x-xc,y-yc,z-zc);
使用关节体的估算高度对该偏差进行处理得到处理后的像素位置信息,height为关节体的估算高度。
处理方法A只能处理关节体直立或者略微倾斜的情况,当关节体倾斜较大时会出现较大误差,因此当关节体倾斜较大时可以采用下述处理方法B对像素坐标进行处理以避免误差的出现,过程如图3所示,具体如下:
计算关节体表面的全部像素(x,y,z)的重心(xc,yc,zc)及关节体表面的全部像素的协方差矩阵cov_mat;
使用重心(xc,yc,zc)和协方差矩阵cov_mat对像素的三维坐标进行重投影,得到像素的重投影坐标(xp,yp,zp), (其中A为协方差矩阵cov_mat对应的特征矩阵);
使用关节体的估算高度对重投影坐标进行处理得到处理后的像素位置信息,height为关节体的估算高度。
处理方法A和处理方法B中
关节体的估算高度可以从点云历史信息中精确估计,也可以根据协方差矩阵cov_mat的最大特征值估计,设定高度为其中k为预先设定的参数,推荐为4,λ1为协方差矩阵最大的特征值。
采集像素所属扫描段的尺寸信息作为特征向量表征所属部位的尺寸时,对于某个像素,在全部像素识别完成之前无法精确知道该像素所在部位的尺寸,因此提取特征向量时以该像素所在图像的位置为基准,在图像中沿各个方向扫描,直至发生跳变。尽管这里的所属部位的类型未知,但由于去除了背景,像素肯定属于关节体部位,因此“所属部位”并不存在歧义。采集过程如图4所示,分以下步骤:
A、首先确定一个用于扫描的二维图像,然后对像素在该二维图像的至少四个方向上进行扫描以形成两个扫描段,至少四个方向分别为m度方向、m+180度方向、n度方向以及n+180度方向(m度方向和n度方向为在该二维图像中以该像素为原点建立的任意二维坐标系中的任意两个方向,当然形成的两个扫描段相互垂直为最佳)。当然在对像素所在二维图像进行扫描时,可对同一像素在更多扫描方向上进行扫描,这样可以更精确的对像素进行归类,但是在多数扫描方向上,例如,沿30度方向扫描,会出现非整数坐标像素的情况(例如当前像素的图像坐标为(100,100),沿30度方向扫描10个像素时得到的像素坐标为(105,108.7),但图像中并不存在一个坐标为(105,108.7)的像素),这时需要进行插值操作;为避免插值,可以对像素所在二维图像在0度,45度,90度,135度,180度,225度,270度以及315度八个方向上进行扫描。当然也可以在多于8个方向上进行扫描,这样将使取得的像素所属扫描段的尺寸信息更加准确,但是加大了采集该特征向量的计算量。
B、在确定扫描方向后,就可以计算像素所在的各个方向的扫描段的长度,这里通过跳变确定扫描段的长度,扫描段长度的确定可以有以下两种方法:
设扫描段上像素按扫描顺序三维坐标序列为:
{(x1,y1,z1),…,(xi,yi,zi),…,(xN,yN,zN)}
1、用两跳变像素之间的欧式距离描述:
扫描段的长度为(x1,y1,z1)和(xN,yN,zN)的欧式距离,
即
起始像素的三维坐标为(xs,ys,zs),终止像素的三维坐标为(xe,ye,ze),则扫描段的长度为
该距离描述方法中,扫描段的尺寸计算简单。
2、用两跳变像素之间的累计距离描述:
扫描段的长度为(x1,y1,z1)和(xN,yN,zN)的累积距离,两相邻像素(xi,yi,zi)和(xi+1,yi+1,zi+1),则两相邻像素之间的距离为
两跳变像素之间的扫描段中共有N个像素,则扫描段的长度为:
该距离描述方法中,扫描段尺寸计算精确。
C、通过扫描段的长度获得扫描段的起始像素和扫描段的终止像素的第一归一化尺寸,第一归一化尺寸是指扫描段长度与关节体的估算高度的比值,关节体的估算高度可以从点云历史信息中精确估计,也可以根据协方差矩阵cov_mat的最大特征值估计,设定高度为其中k为余弦设定的参数,推荐为4,λ1为协方差矩阵最大的特征值。
为避免开方操作,可以用起始像素和终止像素之间距离平方获得扫描段的起始像素和扫描段的终止像素的第二归一化尺寸,第二归一化尺寸是指扫描段长度的平方与关节体的估算高度平方的比值,关节体的估算高度可以从点云历史信息中精确估计,也可以根据协方差矩阵cov_mat的最大特征值估计,设定高度为其中k为余弦设定的参数,推荐为4,λ1为协方差矩阵最大的特征值。
作为优选方案,这里也可以使用两个子扫描段的第一归一化尺寸和第二归一化尺寸作为特征向量(这里的两个子扫描段如图9所示,是指像素与像素所属扫描段的起始像素之间的像素集合,以及像素与像素所属扫描段的终止像素之间的像素集合)描述像素所属部位的尺寸。
由于两个子扫描段的归一化尺寸(第一归一化尺寸以及第二归一化尺寸)可以描述像素在扫描段中的具体位置,而不仅仅知道像素所在部位的部位尺寸信息。例如当左大腿和右大腿并拢时通过跳变像素无法正确确定左大腿和右大腿的部位尺寸信息造成无法确定像素所在部位是位于左大腿还是右大腿,这时通过对像素在部位中的具体位置的判断,认为位于该左大腿和右大腿合并的部位的靠左侧的像素属于左大腿,认为位于该左大腿和右大腿合并的部位的靠右侧的像素属于右大腿,因而使用子扫描段的归一化尺寸作为识别的特征向量可以克服像素所在部位和部位尺寸信息不准确造成的归类误差,实现对像素进行更准确的归类。
综上所述,可以获取处理后的像素位置信息作为用于分类器的训练识别的特征向量。也可以获取像素所属扫描段的尺寸信息(仅使用扫描段的长度获取)作为分类器的训练识别的特征向量,具体有如下四种:
{段1的欧式距离的第一归一化尺寸,…,段S的欧式距离的第一归一化尺寸};
{段1的累计距离的第一归一化尺寸,…,段S的累计距离的第一归一化尺寸};
{段1的欧式距离的第二归一化尺寸,…,段S的欧式距离的第二归一化尺寸};
{段1的累计距离的第二归一化尺寸,…,段S的累计距离的第二归一化尺寸};
其中段1至段S为像素所属的S个扫描段,S为大于1的正整数。
作为优选方案,可以通过扫描段的长度获取子扫描段的长度以得到子扫描段的第一归一化尺寸和第二归一化尺寸作为分类器的训练识别特征向量,具体有如下四种:
{{像素到段1的起始像素的欧式距离的第一归一化尺寸,像素到段1终止像素的欧式距离的第一归一化尺寸},…,{像素到段S的起始像素的欧式距离的第一归一化尺寸,像素到段S的终止像素的欧式距离的第一归一化尺寸}};
{{像素到段1的起始像素的累计距离的第一归一化尺寸,像素到段1终止像素的累计距离的第一归一化尺寸},…,{像素到段S的起始像素的累计距离的第一归一化尺寸,像素到段S的终止像素的累计距离的第一归一化尺寸}};
{{像素到段1的起始像素的欧式距离的第二归一化尺寸,像素到段1终止像素的欧式距离的第二归一化尺寸},…,{像素到段S的起始像素的欧式距离的第二归一化尺寸,像素到段S的终止像素的欧式距离的第二归一化尺寸}};
{{像素到段1的起始像素的累计距离的第二归一化尺寸,像素到段1终止像素的累计距离的第二归一化尺寸},…,{像素到段S的起始像素的累计距离的第二归一化尺寸,像素到段S的终止像素的累计距离的第二归一化尺寸}};
其中段1至段S为像素所属的S个扫描段,S为大于1的正整数。
当同时使用处理后的像素位置信息和像素所属扫描段的尺寸信息作为分类器的训练识别的特征向量时,这里以仅使用扫描段的长度获取的像素所属扫描段的尺寸信息作为特征向量为例,具体有如下四种:
{段1的欧式距离的第一归一化尺寸,…,段S的欧式距离的第一归一化尺寸,处理后的像素位置信息};
{段1的累计距离的第一归一化尺寸,…,段S的累计距离的第一归一化尺寸,处理后的像素位置信息};
{段1的欧式距离的第二归一化尺寸,…,段S的欧式距离的第二归一化尺寸,处理后的像素位置信息};
{段1的累计距离的第二归一化尺寸,…,段S的累计距离的第二归一化尺寸,处理后的像素位置信息};
其中段1至段S为像素所属的S个扫描段,S为大于1的正整数。
在实际应用中,关节体的不同部位之间会出现遮挡现象,以人体为例,手臂放在躯干前方就会遮挡躯干。在不区分遮挡时,只有关节体点云与背景之间的跳变,若给背景像素一个远大于场景像素的深度值,例如5m,则此时关节体点云中的点与相邻的背景点深度差非常大。如区分遮挡,此时不仅包括上述的关节体点云与背景之间的跳变,还包括关节体点云内部两个点之间的微跳变(这里的微跳变也是指扫描段上两相邻像素深度(z坐标)相差大于第二阈值(该第二阈值预先设定),但是第二阈值小于第一阈值,用于区分不同的关节体点),为了处理关节体部位之间的遮挡,还可以在加入包含遮挡信息的特征向量给分类器进行训练识别。在不存在遮挡时,关节体点云之间的深度差较小,存在遮挡时,关节体点云之间的深度差较大,可以根据经验设定相应的阈值,例如5厘米等,来判断遮挡情况。
具体描述如下:
对扫描段的起始像素和终止像素进行编码,有如下情况:
对起始像素有三种情况:
从背景跳变到关节体点,编码为sl1,例如为1;
从关节体点微跳变到关节体点同时深度增加,编码为sl2,例如为2;
从关节体点微跳变到关节体点同时深度减小,编码为sl3,例如为3;
对终止像素有三种情况:
从关节体点跳变到背景,编码为el1,例如为1;
从关节体点微跳变到关节体点同时深度增加,编码为el2,例如为2;
从关节体点为跳变到关节体点同时深度减小,编码为el3,例如为3;
在特征向量中,每个扫描段增加两维数据用于描述跳变和微跳变情况,为了减少特征维数,还可以对起始像素和终止像素的跳变和微跳变情况进行合并,设P为起始像素的编码,Q为终止像素的编码,则合并后的编码为k*P+Q,k是预先设定的系数,如10,50等。
通过上述的描述,可以将遮挡编码加入到用于分类器训练识别的特征向量以得到更为准确的像素分类,这里以使用扫描段的长度获取的像素所属扫描段的尺寸信息和处理后的像素位置信息同时作为特征向量为例,具体有如下四种:
{段1的欧式距离的第一归一化尺寸,段1的遮挡编码,…,段S的欧式距离的第一归一化尺寸,段S的遮挡编码,处理后的像素位置信息};
{段1的累计距离的第一归一化尺寸,段1的遮挡编码,…,段S的累计距离的第一归一化尺寸,段S的遮挡编码,处理后的像素位置信息};
{段1的欧式距离的第二归一化尺寸,段1的遮挡编码,…,段S的欧式距离的第二归一化尺寸,段S的遮挡编码,处理后的像素位置信息};
{段1的累计距离的第二归一化尺寸,段1的遮挡编码,…,段S的累计距离的第二归一化尺寸,段S的遮挡编码,处理后的像素位置信息};
其中段1至段S为像素所属的S个扫描段,S为大于1的正整数。
在提取特征向量之后,在训练阶段可以进行学习,训练分类器并保存;在识别阶段,可以确定每个像素的所属部位。
本发明还涉及一种关节体姿态识别方法,如图5所示,首先使用上述的像素归类方法计算像素的所属部位,然后求出相邻部位的边界,两个部位边界像素的重心,即可确定两个部位的关节点的位置,具体为:
两个相邻的部位通过关节连接,设为部位Parti,和部位Partj,通过关节Jointj,k连接。
A、访问深度图像中的像素,求所属部位为Parti的像素中,相邻像素属于Partj的像素以及所属部位为Partj的像素中,相邻像素属于Parti的像素;
B、对步骤A中求得的全部像素,求重心作为关节Jointj,k的位置;
重复步骤A、B,直至计算全部关节的位置。
同时对于末端部位,如以人体为例,如左、右下臂,左、右下腿,头等,末端部位的像素中,距部位关节最远的1个像素点或多个像素点的重心作为部位的末端点。
计算出关节的位置后,根据关节的位置及部位的末端点确定关节体的姿态,也可将上述的关节的位置及部位的末端点可作为低精度姿态,为背景技术中基于模型的关节体姿态估计方法提供初始值求解更为精确的关节体姿态。例如通过基于粒子群优化的姿态估计算法或者基于关节体配准的姿态估计算法等求解高精度的关节体姿态。
本发明还涉及一种鼠标指令生成方法,如图6所示,首先使用上述的像素归类方法通过提取部位位置信息,输入到鼠标系统以模拟鼠标操作。具体如下:提取左下臂、右下臂或头部的位置信息,访问深度图像中的像素,求所属部位为左下臂、右下臂或头部的像素集合,左下臂、右下臂或头部的位置可用以下几种方法描述:
A:像素集合中全部像素三维坐标的平均,作为左下臂、右下臂或头部的位置;
B:将像素集合中最靠近部位末端点的前L个的像素三维坐标的平均,作为左下臂、右下臂或头部的位置,其中,L为预先设定的正整数,如5或10。
随后将上述得到的左下臂、右下臂或头部的位置信息,映射为鼠标在显示设备中的光标位置,生成鼠标位置指令。同时,可以配合遥控器等具有案件的遥控设备在被控制设备中模拟各类鼠标操作。
此外,还可以对左下臂、右下臂或头部的位置信息序列即轨迹进行分析,映射相关运动轨迹为鼠标光标移动、鼠标左键、鼠标右键等案件控制指令,以取代前述需要遥控器配合的情况。在使用时,通过识别前述部位的位置信息生成鼠标在显示设备中的光标位置,通过识别前述不问的运动轨迹生成鼠标移动、按键等控制指令。
作为优选方案,关节体的像素识别过程如图7所示,首先载入分类器,当新的点云到来时,提取像素的特征,使用分类器识别像素,若像素全部识别完毕,退出识别过程,进行后处理等其它操作,反之对下一个像素提取特征,用分类器进行识别。在对关节体全部像素进行处理时,因为扫描段上的像素可能共用一些特征,如:用扫描段的长度表示部位的尺寸时,同一扫描段上像素的所属扫描段的尺寸信息相同;同一扫描段上全部像素的遮挡编码相同。对于这些扫描段上全部像素都相同的特征向量,采用如图8所示的方法,在特征提取过程中,只需要计算一次后直接写入预先申请的相应的存储空间,在对这些像素进行已存储的特征向量的计算时,只需要直接提取存储空间中特征向量即可。这样可以减少运算量,增加速度,使得后续特征识别过程可以更加快捷。
在训练阶段,使用大量的像素做样本,标记第i个像素样本的所属部位类别IDi,并提取该像素的特征向量featurei,得到一系列样本特征向量及对应的部位类别{{feature1,ID1},…,{featurei,IDi}…,{featureN,IDN}},交给训练学习方法进行学习并保存分类器文件。这里,N为全部样本像素的数量。
本发明的像素归类方法中使用的训练学习识别的分类器可以采用随机森林或支持向量机。
如采用随机森林作为分类器,具体学习过程如下:随机森林由一系列随机树组成,如图11所示,其中圆圈为树的节点,节点分为如节点14、15等的叶子节点以及如节点2、4等的分裂节点。对每个分裂节点,包含分裂函数fn(v)和分裂阈值tn,对于叶子节点,其包含类别分布直方图Pn(c),所有节点信息,在训练过程设定并保存至分类器文件。在识别过程中,将特征向量v送至根节点,根节点计算分裂函数,比较分裂函数值与分裂阈值,若小于则送至下层左枝,反之送至下层右枝。如果左枝(右枝)为分裂节点,则做同样的处理计算分裂函数,比较分裂函数值与分裂阈值,若小于则送至下层左枝,反之送至下层右枝,直至送至叶子节点。在叶子节点,返回:a、出现概率最高的类,或者b、该节点的类别分布直方图Pn(c),即特征向量v属于某一类的概率。对每颗树返回的结果进行组合,即可得到识别结果,即特征的所属部位或者属于一个或多个部位的概率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。