一种基于单个Kinect的简易高效三维人体重建方法与流程

文档序号:11953668阅读:来源:国知局

技术特征:

1.一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述方法包括下列步骤:

S1、使用单个Kinect扫描人体,获得人体颜色和深度数据,进行数据分割,去除背景,产生点云数据;

S2、进行人体点云数据的局部对齐,使用刚性ICP将每个角度的三个点云对齐,然后合并成一个点云;

S3、进行人体点云数据的全局对齐,具体包括:

S301、初始配准,对初始位置进行优化,选取点云的边缘部分的点集作控制点集,用刚性ICP对齐,使点云的边缘部分重合,为下一步的对齐提供较好的初始状态;

S302、刚性配准,用刚性ICP进行点云数据间的精细配准;

S303、非刚性配准,用基于Embedded Deformation Graph的非刚性配准方法进行点云数据间的精细配准;

S4、用得到的完整人体点云进行泊松表面重建得到最终的三维人体模型。

2.根据权利要求1所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述步骤S1具体包括:

S101、使用单个Kinect扫描人体以获取人体点云数据;

S102、对人体RGB-D数据进行去背景处理;

S103、修复数据误差,将亮度和色调落差大的部分从点云中删去。

3.根据权利要求1所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述步骤S101、使用Kinect扫描人体以获取人体点云数据具体过程如下:

将Kinect放在人体腰部的高度,距人体水平距离为0.8-1.2米,扫描时,人体首先正面面对Kinect站好,然后依次沿右转5个60度,让Kinect扫描到人体的6个角度,上述6个角度分别为正面、正面左转60度、正面右转60度、背面、背面左转60度、背面右转60度;

在每一个角度中分别拍摄上、中、下三帧图像,其中上帧对应kinect上转20度,下帧对应kinect下转20度,中帧对应kinect无任何旋转。

4.根据权利要求3所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述步骤S2具体包括:

S201、将每个角度的上和下两帧图像的点云通过旋转变换粗略地对齐到中帧图像的点云上;

S202、使用刚性ICP算法,将上、中、下三帧图像的点云对齐且合并到中帧图像的点云上形成一个点云。

5.根据权利要求1或4任一所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述刚性ICP包括以下步骤:

1)分别计算两个点集P和Q的重心,并把两个点集分别平移到其重心处;

2)根据一定的几何特征作为标准,分别在两个点集中选取对应点对,生成控制点集C和D;

3)通过奇异值分解的方法求出使控制点集C匹配到D上的空间变换f;

4)根据空间变换f对点集P实行变换;

5)判定是否达到精度要求或抵达最大迭代次数,是则终止算法,否则重复上述步骤直至算法终止。

6.根据权利要求1所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述步骤S303、非刚性配准,用基于Embedded DeformationGraph的非刚性配准方法进行点云数据间的精细配准具体过程如下:

S3031、对于输入的两个点云P和Q,对点云P下采样得到一个较小的点云G,对点云P和Q下采样得到较小的点云C和D;

S3032、使用点云G构建Embedded Deformation Graph,点云G上的点构成Graph的节点,然后每个节点包含一个变换矩阵,每个变换矩阵由一个旋转矩阵R和一个平移矩阵T组成;

S3033、使用点云C和D寻找对应点对,即对点云C中的每个点寻找其在点云D上的对应点;

S3034、使用对应点对和Embedded Deformation Graph计算变换矩阵,Graph上每一个节点有一个变换矩阵,每个变换矩阵由一个旋转矩阵和一个平移矩阵组成,最小化E=Erigid+Esmooth+Ecorr,最小化Erigid是为了保证单个旋转矩阵的刚性程度,最小化Esmooth是为了保证整体变换的光滑程度,最小化Ecorr是为了把对应点之间的距离缩小;

S3035、计算出变换矩阵后便可以使用Embedded Deformation Graph将点云P进行变形从而对齐到点云Q上。

7.根据权利要求6所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,

采用高斯牛顿法求解非线性最小二乘问题E=Erigid+Esmooth+Ecorr,在高斯牛顿法的每一次迭代中,求解线性方程组时用cholesky分解方法。

8.根据权利要求5所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述空间变换f的求解思想为:

根据几何特性对数据进行匹配,并设这些匹配点为假想的对应点,然后根据上述对应关系求解运动参数,再利用上述运动参数对数据进行变换,并利用同一几何特征,确定新的对应关系,重复上述过程。

9.根据权利要求5所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述几何特征是空间中点到平面之间的距离最小的点。

10.根据权利要求5所述的一种基于单个Kinect的简易高效三维人体重建方法,其特征在于,所述刚性ICP的算法具体过程如下:

设三维空间中的两个点pi=(xi,yi,zi),qi=(xj,yj,zj),它们的欧式距离可以表示为:

<mrow> <mi>d</mi> <mrow> <mo>(</mo> <msub> <mi>p</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mo>|</mo> <mo>|</mo> <msub> <mi>p</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <mo>=</mo> <msqrt> <mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>y</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>z</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>z</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>;</mo> </mrow>

三维点云匹配问题的目的是找到使P匹配上Q的旋转矩阵R和平移矩阵T,对于

qi=R·pi+T,i=1,2...N

利用最小二乘法求解最优解使

<mrow> <mi>E</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mrow> <mo>|</mo> <mrow> <mi>R</mi> <mo>&CenterDot;</mo> <msub> <mi>p</mi> <mi>i</mi> </msub> <mo>+</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> </mrow> <mo>|</mo> </mrow> <mn>2</mn> </msup> </mrow>

最小时的R和T,先对平移矩阵T进行初始的估算,具体方法是分别得到点集P和Q的中心:

<mrow> <mi>p</mi> <mo>=</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>p</mi> <mi>i</mi> </msub> <mo>,</mo> <mi>q</mi> <mo>=</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msub> <mi>q</mi> <mi>i</mi> </msub> </mrow>

分别将点集P和Q平移至中心点处:

p'i=pi-p,q'i=qi-q

则上述最优化目标函数可以转化为:

<mrow> <mi>E</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mrow> <mo>|</mo> <mi>R</mi> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <msub> <msup> <mi>p</mi> <mo>&prime;</mo> </msup> <mi>i</mi> </msub> <mo>+</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>+</mo> <mi>T</mi> <mo>-</mo> <mrow> <mo>(</mo> <msub> <msup> <mi>q</mi> <mo>&prime;</mo> </msup> <mi>i</mi> </msub> <mo>+</mo> <mi>q</mi> <mo>)</mo> </mrow> <mo>|</mo> </mrow> <mn>2</mn> </msup> </mrow>

最优化问题分解为求使E最小的R,根据R求出T;

选取P、Q两个点集中一部分具有可靠的对应关系的点作为控制点,配准问题转化为:

<mrow> <mi>E</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mrow> <mo>|</mo> <mrow> <mi>R</mi> <mo>&CenterDot;</mo> <msub> <mi>c</mi> <mi>i</mi> </msub> <mo>+</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>d</mi> <mi>i</mi> </msub> </mrow> <mo>|</mo> </mrow> <mn>2</mn> </msup> </mrow>

计算对应点对之间的距离时采用点与平面之间的距离,配准问题转化为:

<mrow> <mi>E</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <msup> <mrow> <mo>(</mo> <mo>(</mo> <mrow> <mi>R</mi> <mo>&CenterDot;</mo> <msub> <mi>c</mi> <mi>i</mi> </msub> <mo>+</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>d</mi> <mi>i</mi> </msub> </mrow> <mo>)</mo> <mo>&CenterDot;</mo> <msub> <mi>n</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow>

这里,ci,di为对应点对,ni为di上的法向,ci∈C,di∈D,C、D为包含m个点的控制点集,对C中每一个点ci,在D中都存在一个匹配点di,如此便得到m个对应点对;

通过奇异值分解的方法求出使E最小的R,具体方法是:

首先平移矩阵T的表示形式是:

<mrow> <mi>T</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>t</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>t</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>t</mi> <mi>z</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>

旋转矩阵R的表示形式是:

<mrow> <mi>R</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mn>11</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>12</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>13</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>r</mi> <mn>21</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>22</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>23</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>r</mi> <mn>31</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>32</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>33</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>

其中r11=cosβcosγ,r12=-sinγcosα+cosγsinαsinβ,r13=sinαsinγ+sinβcosαcosγ,r21=cosβsinγ,r22=cosγcosα+sinγsinαsinβ,r23=-sinαcosγ+sinβcosαsinγ,r11=-sinβ,r12=sinαcosβ,r13=cosβcosα,α、β、γ分别代表沿x、y、z轴旋转的角度;

那么当α、β、γ约等于0时,变换矩阵f=R·T近似为:

<mrow> <mi>f</mi> <mo>=</mo> <mi>R</mi> <mo>&CenterDot;</mo> <mi>T</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mi>&gamma;</mi> </mrow> </mtd> <mtd> <mi>&beta;</mi> </mtd> <mtd> <msub> <mi>t</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mi>&gamma;</mi> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mi>&alpha;</mi> </mrow> </mtd> <mtd> <msub> <mi>t</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mi>&beta;</mi> </mrow> </mtd> <mtd> <mi>&alpha;</mi> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>t</mi> <mi>z</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>

代入原配准问题,可使原配准问题进一步转化为:

<mrow> <mo>(</mo> <mi>R</mi> <mo>&CenterDot;</mo> <msub> <mi>c</mi> <mi>i</mi> </msub> <mo>+</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>d</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>&CenterDot;</mo> <msub> <mi>n</mi> <mi>i</mi> </msub> <mo>=</mo> <mo>(</mo> <mi>M</mi> <mo>&CenterDot;</mo> <mfenced open = "(" close = ")"> <mtable> <mtr> <mtd> <msub> <mi>c</mi> <mrow> <mi>i</mi> <mi>x</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>c</mi> <mrow> <mi>i</mi> <mi>y</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>c</mi> <mrow> <mi>i</mi> <mi>z</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mfenced open = "(" close = ")"> <mtable> <mtr> <mtd> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>x</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>y</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>z</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>)</mo> <mo>&CenterDot;</mo> <mfenced open = "(" close = ")"> <mtable> <mtr> <mtd> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mi>x</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mi>y</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mi>z</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>

上述线性最小二乘问题,用奇异值分解的方法求解。

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