一种基于Kinect深度相机的人体尺寸测量方法与流程

文档序号:12472043阅读:3615来源:国知局
一种基于Kinect深度相机的人体尺寸测量方法与流程

本发明属于机器视觉领域,涉及一种基于Kinect深度相机的三维人体关键特征尺寸测量方法,可应用于智能服装定制、互联网电子试衣等方面。



背景技术:

顺应互联网+的时代潮流,计算机、服装制造销售产业、影视动画等行业正快速的向智能化发展,许多企业、教学、科研机构对人体测量的需求越来越大,三维人体扫描应用的领域越来越广泛。同时,三维人体扫描技术将改变许多传统行业的运行模式。

目前,常用的三维人体尺寸测量方式有使用16台华硕Xtion的三维人体测量系统、使用3台Kinect的静态测量系统和三维人体扫描仪的测量系统。16台Xtion的测量系统造价高且精度低,3台Kinect的测量系统价格高,三维人体扫描仪价格更是多达几十万,价格昂贵。而本发明仅需一台Kinect和转盘便可以达到服装定制的要求。

在定位方面,传统测量方式使用Y轴截面通过计算夹角判断是否是分叉点和判断封闭几何图形的个数的算法定位会阴,腋窝等方法存在算法复杂,效率低的问题。微软公司推出的Kinect深度相机能够通过深度图像计算出25个人体关键骨骼点位置。本发明利用骨骼点信息确定某些关键特征基准位置,根据该点的三个轴的数值特征来精确确定人体特征位置并计算人体尺寸,算法更简单,效率更高,定位更准确。



技术实现要素:

本发明的目的是提供一种基于Kinect深度相机的三维人体关键尺寸测量方法,解决了现有技术中存在的人体扫描精度差与系统成本高,部分人体特征识别困难以及人体尺寸计算复杂度高的问题。

为实现上述目的,本发明首先使用单个Kinect深度相机作为扫描设备,并配置一部转盘,以实现单一深度相机对人体的扫描,有效降低了系统的硬件成本;其次在获取人体点云数据的同时获取人体初始姿态的骨骼点点云数据,以用于在人体尺寸测量模块中通过骨骼点确定某些人体特征位置,提高了本系统的计算效率。

为提高扫描精度,首先对Kinect深度相机进行标定,深度相机标定主要是为了确定相机的内参数及畸变系数,当各参数确定后可以对获取到的深度图像进行畸变校正。

其次对深度图像进行处理,包括深度图像数据的分析,深度数据的可视化及增强处理等相关内容,以提高深度图像的质量。

然后利用处理后的深度图像得到点云图像,并利用ICP(迭代最近点)算法将相邻点云图像进行配准,以第一幅点云图像所处坐标系作为世界坐标系并进行点云融合。在获取点云图像的同时,获取人体初始姿态的关键骨骼点点云信息,以快速获取部分人体关键特征。

最后,本方法利用获取到的人体骨骼点信息对人体点云数据进行预处理、对人体四肢进行分割、快速寻找人体关键特征;在人体点云模型上分别作垂直于纵向和水平的平行截面,分析截面特征,根据截面特征自动对三维人体模型进行分层分割处理;确定基于服装定制的测量指标,自动识别各人体特征,测算人体尺寸。

本发明与现有技术方法相比,降低了系统成本的同时,保证了服装定制的精度要求,使用人体骨骼点信息使人体特征识别算法更加简单,有效提高了软件系统的运行效率。

附图说明

图1是本发明第一类特征点图;

图2是本发明第二类特征点图;

图3是本发明系统流程图;

图4是本发明点云融合流程图;

图5是本发明左臂旋转后的点云图;

图6是本发明凸包运算前的截交线图;

图7是本发明凸包运算后的轮廓线图;

图8是腋窝截面示意图;

图9是原始点云图中的骨骼点;

具体实施方式

下面结合附图和具体实施方式对本发明进行详细说明。

本发明方法的完整步骤包括:

1.深度相机标定

采用张氏标定法标定,使用Kinect深度相机获取多张不同角度的深度图像。对原始深度图像进行上采样,提高深度图像分辨率,以便于高精度提取角点。通过标定板上每个特征点和其像平面的像点间的对应关系,即通过每张图像的单应矩阵来完成标定,可通过OpenCV实现自动提取角点信息完成标定。

2.深度图像处理

采用联合双边滤波算法,利用高分辨率的彩色图像对深度图像质量进行增强,减少深度图像中的噪声干扰。

3.点云融合及骨骼点信息获取

利用ICP(迭代最近点)算法将相邻点云图像进行配准,计算某一幅点云图像所处坐标系相对于前一幅相邻点云图像所处坐标系的旋转矩阵和平移向量,以获得拍摄每一幅点云图像的相机的相对姿态,并以第一幅点云图像所处坐标系作为融合后人体点云模型的坐标系,进行点云融合,在获取点云图像的同时,获取人体初始姿态的关键骨骼点点云信息,以快速寻找到人体关键特征。点云融合流程图如图4所示,原始点云图中的骨骼点如图9所示。

4.人体尺寸计算

1)预处理

去除脚部以下噪点:寻找x坐标值约等于头顶点的x值的点云,进行y值从大到小的排序,计算前后两个点的y值差,其中最大间隔对应的两个点中较小的那个点的y值便是地面的y值,以此为依据去除脚部以下点云。

2)三维人体点云的刚体变换

以人体左侧为X轴正向,上方为Y轴正向,正面朝向为Z轴正向,脚底为XOZ平面,进行点云的刚体变换。

Q=RS+T

Q为刚体变换后的人体点云矩阵,S为原始的的人体点云矩阵,R为3*3的旋转矩阵,T为3*1的平移向量。

基于骨骼点平移旋转人体的方法

因kinect与人体的相对位置的不确定,会导致融合产生的人体点云数据在坐标系中的位置不确定。

本方法是以从kinect获取的骨骼点的数据为依据,对点云数据和骨骼点的数据进行刚体变换,将坐标系中的某个位置的人体点云变换到一种标准的位置,以便于后续的人体尺寸测量。

变换的过程是依据骨骼点,计算骨骼点与坐标轴的夹角,以及所有骨骼点与坐标原点的相对位置,并以此作为刚体变换的参数,将人体模型及所有骨骼点变换到坐标系中的确定位置。

3)人体分层

(1)人体点云集合Q={(x,y,z)|x∈(xl,xu),y∈(yl,yu),z∈(zl,zu)}。

(2)人体点云的分层集合的数组QX,QY(三维体的点云)。

其中,QXi={(x,y,z)|x∈[dx*i,dx*(i+1)),y∈(yl,yu),z∈(zl,zu)}(平行YOZ截面的点云)。

QYi={(x,y,z)|x∈(xl,xu),y∈[dy*i,dy*(i+1)),z∈(zl,zu)}(平行YOZ截面的点云)

dx,dy表示层间距,l表示下界,u表示上界。

至此,三维点集转化成多个二维截面集的数组QX,QY。

4)人体分割

对于经过上述处理的人体点云图。我们需要提取以下第一类特征点用于人体分割。

第一类特征点:P1(会阴点),P2(左腋窝点),P3(右腋窝点),P4(左肩峰点),P5(右肩峰点),P6(左颈侧点),P7(右颈侧点)。

第一类特征点获取方法

利用骨骼点确定会阴点和腋窝点大体位置和x坐标取值上下限后,根据多个人体纵截面QXi,对每个截交面进行降维操作。将运算结果合成一个点集,再次对点集进行降维操作便可以得到会阴点和腋窝点。而肩峰点和颈侧点同样可以根据人体点云截交面和该点特征利用相应的降维操作获得。第一类特征点提取结果如图1所示。

降维操作如下,

一维线的点集到零维点的运算:

将点集P的x(y/z)最大(小)值找到并返回该点。

二维面的点集到零维点的运算:

在二维面的点集P中取出距参考线L距离最近(远)的点并返回该点。

其中各点取值上下限及搜索基准点由kinect获取的骨骼点和人体比例确定。该方法思路简洁,计算迅速,定位精确。

人体分割方法

首先分割双臂,找腋窝点。

遍历所有的点,找出在人体高度比例上0.68及之上的所有点,之后的操作基于这些点,相当于只在胸部位置以上查找。

在x轴正方向,每隔很小x值范围遍历在此范围内的点,记录y坐标最小的点YminN。即相当于做竖直截面,找出截面上的最低点。

找出[Ymin1,Ymin2…YminN]中的最大值Ymax=Max{Ymin1,Ymin2…YminN},Ymax即为左腋窝点的y坐标值,由此可以找到左腋窝点,如图8所示。

根据左腋窝点的x坐标值做竖直截面分割左臂。同理在x负半轴分割右臂。

然后分割双腿,找会阴点。

遍历所有的点,找到y值最大的点即头部最高点,记录其x值。

找出人体高度比例在0.5处的点的y值,筛除所有在此x值左右10cm范围之外、在y值上下10cm范围之外的点。

对于所有筛选出来的点,每隔很小x值范围遍历在此范围内的点,记录y值最小的点YminN

找出[Ymin1,Ymin2…YminN]中的最大值Ymax=Max{Ymin1,Ymin2…YminN},Ymax即为会阴点的y坐标值,由此可以找到会阴点。

按会阴点的y坐标值做水平截面分割双腿。左右臂可根据肩峰点和腋窝点来进行分割。左右腿可根据会阴点来进行分割。

至此完成人体分割。生成左腿,右腿,左臂,右臂和无左右臂的身体的点云。旋转后的左臂点云如图5所示。

5)特征定位和尺寸计算

参考国标GB1610-2008和实际服装定制需求对于人体尺寸的定义,选取以下37项尺寸进行计算。

高度:身高,颈椎点高,左(右)肩高,胸高,腰高,臀高,会阴点高,左(右)膝高,左(右)踝高。

宽度:肩宽,胸宽,腰宽,臀宽。

厚度:胸厚,腰厚,臀厚。

围度:颈围,胸围,腰围,臀围,左(右)大腿根围,左(右)肘围,左(右)腕围,左(右)臂围,左(右)臂根围,左(右)膝围,左(右)踝围。

角度:肩斜角

首先,我们计算第二类特征点。

第二类特征点:头顶点,脚底点,颈椎点,腰点,臀点,左(右)腕点,左(右)肘点,左(右)膝点,左(右)踝点

第二类特征点计算方法

头顶点,脚底点,颈椎点,腰点,臀点均可由降维操作获取。

腕点,肘点,膝点,踝点可由骨骼点获取。

第二类特征点提取结果如图2所示。下面是各类尺寸的计算方法。高度计算方法

高度计算结果为其特征点所对应高度(y坐标值)。

宽度计算方法

肩宽其中L(pix,piz)<0,Pi是由SPL,SPR,CerP三点所决定的特征面经过G(凸包)运算后的有序点。其中,SPL为左肩峰点,SPR为右肩峰点,CerP为颈椎点,L表示SPL,SPR两点所决定的平面直线方程,pix,piz表示Pi的x坐标和z坐标。

其余宽度计算结果为其特征点所在特征面的宽度(x方向最大最小值差)。

厚度计算方法

厚度计算结果为其特征点所在特征面的厚度(z方向最大最小值差)。围度计算方法

围度计算结果为其特征点所在特征面的G(凸包)运算结果,其中G运算如下。

由特征面计算围度的方法:

(I)根据所求位置决定对所求结果进行中值滤波或均值滤波或不滤波

(II)利用凸包算法求取一维轮廓线

首先利用凸包算法对所求截交面的点进行处理,从而去除内部点,只保留外围点的点云集合,排除内部噪点干扰,模拟真正测量时的软尺紧绷的状态,减小测量误差。至此,由二维面得到一维轮廓线。凸包效果如图6,7所示。

(III)对结果进行三次样条插值拟合以使轮廓线更加平滑

(IV)求取围长

当点云轮廓线内为无序点时围长的求取方式是从特征点处的点云集合中任取一个点作为当前点,将结果初始化为0,然后贪心选择离当前点最近的点,并求取两点之间的距离加到结果中,将贪心选择得到的点作为下一次贪心选择的当前点,迭代该方法,直到计算完所有的点。最后要计算最后一个点到第一个点的距离,并将该距离加到结果中。

当步骤(I)凸包算法使用Garham’s Scan算法进行凸包时,所得点云为有序点云,可直接计算Garham’s Scan所得点云的当前点和下一个点的距离,将下一个点作为当前点,迭代此步骤。最后计算最后一个点到第一个点的距离,并将该距离加到结果中。这样可以利用Garham’s Scan算法特性避免对点云再次求序从而提高运算速度。

角度计算方法

左肩斜角

其中NRPLx是左颈侧点x坐标值,NRPLy是左颈侧点y坐标值,SPLx是左肩峰点x坐标值,SPLy是左肩峰点y坐标值。

误差分析:

尺寸误差在1cm内,角度误差在5度以内,满足服装定制的要求。

误差的标准差值在可接受范围内,具有较好的测量稳定性。

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