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

文档序号:11953668阅读:363来源:国知局
一种基于单个Kinect的简易高效三维人体重建方法与流程
本发明涉及三维人体建模的
技术领域
,特别涉及一种基于单个Kinect的简易高效三维人体重建方法。
背景技术
:三维物体快速建模技术是当前计算机图形学领域的重要研究课题之一,三维物体快速建模技术是目前物体模型快速重构的发展趋势。三维物体重建能够更加便宜,三维模型如照片和视频一样容易获得。这种技术被应用于许多计算机图形的应用程序,如动画,计算机游戏,人机交互和虚拟现实,都需要精确的三维模型。如电子商务网站平台,在线购物网站,游戏领域等。RGB-D相机是一种新兴的扫描设备。RGB-D相机结合了光学相机和三维激光扫描仪的优势。它可以获得测量物体的三维信息,几乎是一种便携式的光学相机。三维建模通过使用RGB-D摄像机获取物体的三维信息比使用扫描仪要经济实惠得多,尤其是使用微软的Kinect设备。Kinect本来是微软公司开发的Xbox360主机的周边外设,主要用于人机实时交互。基于Kinect的重建技术有如下的优势:Kinect能够快速获取场景三维信息;Kinect是一种主动传感器,它不受环境可见光谱的干扰;Kinect的核心设备是彩色摄像机、红外线发射器和红外线CMOS摄影机,这些设备都比较廉价,因而Kinect的售价也较为低廉;此外,Kinect的操作与普通摄像机类似,易于使用。微软还开发了一个开源项目KinectFusion,可以帮助普通用户同时扫描和重建场景的模型,目前已有很多基于这种技术的应用程序,如纽康等,用KinectFusio来进行表面映射和跟踪,或重建室内空间。然而,通过KinectFusion进行三维建模只利用了深度信息,并且没有考虑物体变形的问题。此外,用RGB-D摄像机进行三维人体建模时,为方便扫描,用户必须使自己的全身都被摄像机扫描到。虽然也有一种方法是把三台Kinect在置在前方和后方来达到全身覆盖,但扫描的速度和精度都不理想,一个好的扫描策略仍然是提高三维建模的效率和方便性的重要手段。ICP(IterativeClosestPoint)算法,即迭代最近点算法,是一种基于自由形态曲面的配准方法。当多帧数据重叠的区域非常靠近时,因ICP算法具有较高的效率和较好的可靠性,通常被研究者采用。对静态物体的扫描,ICP算法是当前比较通用的研究三维形状物体对齐的技术,是一种基于自由形态曲面的配准方法。ICP算法的基本思想是:根据前一帧上的数据点集在后一帧扫描数据上找到对应的点集,即找到初始匹配点。然后以对应点间的距离的平方和最小为原则,建立目标方程。再根据最小二乘法原理来转换参数,即找到精确匹配点。三维人体重建所需要的是一组不同角度的人体点云数据。重建时要首先解决的问题就是如何通过匹配它们的重叠区域进行刚性的逐帧对齐。目前,基于图像和基于形状的方法的研究已经得到了很好的成果。基于图像的对齐通常是基于稀疏特征匹配和极线几何的方法,如Khoshelham等人提出的一种通过极线搜索来获得更精确的对齐效果的方法;而基于形状对齐的方法通常是基于迭代最近点算法(ICP)。由于ICP及其各种衍生算法可以解决局部刚性对准问题,通常实时三维重建中对齐连续帧的方法就是基于这样的方法,特别是使用Kinect进行的人体模型重建。数据帧对齐算法的效率和鲁棒性是有待突破的关键技术问题。技术实现要素:本发明的目的在于克服现有技术的缺点与不足,提供一种基于单个Kinect的简易高效三维人体重建方法,该方法基于深度摄像机的三维人体建模技术,使用单个Kinect,通过六个角度,每个角度三帧的扫描获得人体点云信息,然后经由对捕捉到的点云数据的处理快速高效生成三维人体模型。本发明的目的通过下述技术方案实现:一种基于单个Kinect的简易高效三维人体重建方法,所述方法包括下列步骤:S1、使用单个Kinect扫描人体,获得人体颜色和深度数据,进行数据分割,去除背景,产生点云数据;S2、进行人体点云数据的局部对齐,使用刚性ICP将每个角度的三个点云对齐,然后合并成一个点云;S3、进行人体点云数据的全局对齐,具体包括:S301、初始配准,对初始位置进行优化,选取点云的边缘部分的点集作控制点集,用刚性ICP对齐,使点云的边缘部分重合,为下一步的对齐提供较好的初始状态;S302、刚性配准,用刚性ICP进行点云数据间的精细配准;S303、非刚性配准,用基于EmbeddedDeformationGraph的非刚性配准方法进行点云数据间的精细配准;S4、用得到的完整人体点云进行泊松表面重建得到最终的三维人体模型。进一步地,所述步骤S1具体包括:S101、使用单个Kinect扫描人体以获取人体点云数据;S102、对人体RGB-D数据进行去背景处理;S103、修复数据误差,将亮度和色调落差大的部分从点云中删去。进一步地,所述步骤S101、使用Kinect扫描人体以获取人体点云数据具体过程如下:将Kinect放在人体腰部的高度,距人体水平距离为0.8-1.2米,扫描时,人体首先正面面对Kinect站好,然后依次沿右转5个60度,让Kinect扫描到人体的6个角度,上述6个角度分别为正面、正面左转60度、正面右转60度、背面、背面左转60度、背面右转60度;在每一个角度中分别拍摄上、中、下三帧图像,其中上帧对应kinect上转20度,下帧对应kinect下转20度,中帧对应kinect无任何旋转。进一步地,所述步骤S2具体包括:S201、将每个角度的上和下两帧图像的点云通过旋转变换粗略地对齐到中帧图像的点云上;S202、使用刚性ICP算法,将上、中、下三帧图像的点云对齐且合并到中帧图像的点云上形成一个点云。进一步地,所述刚性ICP包括以下步骤:1)分别计算两个点集P和Q的重心,并把两个点集分别平移到其重心处;2)根据一定的几何特征作为标准,分别在两个点集中选取对应点对,生成控制点集C和D;3)通过奇异值分解的方法求出使控制点集C匹配到D上的空间变换f;4)根据空间变换f对点集P实行变换;5)判定是否达到精度要求或抵达最大迭代次数,是则终止算法,否则重复上述步骤直至算法终止。进一步地,所述步骤S303、非刚性配准,用基于EmbeddedDeformationGraph的非刚性配准方法进行点云数据间的精细配准具体过程如下:S3031、对于输入的两个点云P和Q,对点云P下采样得到一个较小的点云G,对点云P和Q下采样得到较小的点云C和D;S3032、使用点云G构建EmbeddedDeformationGraph,点云G上的点构成Graph的节点,然后每个节点包含一个变换矩阵,每个变换矩阵由一个旋转矩阵R和一个平移矩阵T组成;S3033、使用点云C和D寻找对应点对,即对点云C中的每个点寻找其在点云D上的对应点;S3034、使用对应点对和EmbeddedDeformationGraph计算变换矩阵,Graph上每一个节点有一个变换矩阵,每个变换矩阵由一个旋转矩阵和一个平移矩阵组成,最小化E=Erigid+Esmooth+Ecorr,最小化Erigid是为了保证单个旋转矩阵的刚性程度,最小化Esmooth是为了保证整体变换的光滑程度,最小化Ecorr是为了把对应点之间的距离缩小;S3035、计算出变换矩阵后便可以使用EmbeddedDeformationGraph将点云P进行变形从而对齐到点云Q上。进一步地,采用高斯牛顿法求解非线性最小二乘问题E=Erigid+Esmooth+Ecorr,在高斯牛顿法的每一次迭代中,求解线性方程组时用cholesky分解方法。进一步地,所述空间变换f的求解思想为:根据几何特性对数据进行匹配,并设这些匹配点为假想的对应点,然后根据上述对应关系求解运动参数,再利用上述运动参数对数据进行变换,并利用同一几何特征,确定新的对应关系,重复上述过程。进一步地,所述几何特征是空间中点到平面之间的距离最小的点。进一步地,所述刚性ICP的算法具体过程如下:设三维空间中的两个点pi=(xi,yi,zi),qi=(xj,yj,zj),它们的欧式距离可以表示为:d(pi,qi)=||pi-qi||=(xi-xj)2+(yi-yj)2+(zi-zj)2;]]>三维点云匹配问题的目的是找到使P匹配上Q的旋转矩阵R和平移矩阵T,对于qi=R·pi+T,i=1,2...N利用最小二乘法求解最优解使E=Σi=1N|R·pi+T-qi|2]]>最小时的R和T,先对平移矩阵T进行初始的估算,具体方法是分别得到点集P和Q的中心:p=1nΣi=1Npi,q=1nΣi=1Nqi]]>分别将点集P和Q平移至中心点处:p'i=pi-p,q'i=qi-q则上述最优化目标函数可以转化为:E=Σi=1N|R·(p′i+p)+T-(q′i+q)|2]]>最优化问题分解为求使E最小的R,根据R求出T;选取P、Q两个点集中一部分具有可靠的对应关系的点作为控制点,配准问题转化为:E=Σi=1N|R·ci+T-di|2]]>计算对应点对之间的距离时采用点与平面之间的距离,配准问题可进一步转化为:E=Σi=1N((R·ci+T-di)·ni)2]]>这里,ci,di为对应点对,ni为di上的法向,ci∈C,di∈D,C、D为包含m个点的控制点集,对C中每一个点ci,在D中都存在一个匹配点di,如此便得到m个对应点对;通过奇异值分解的方法求出使E最小的R,具体方法是:首先平移矩阵T的表示形式是:T=100tx010ty001tz0001]]>旋转矩阵R的表示形式是:R=r11r12r130r21r22r230r31r32r3300001]]>其中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近似为:f=R·T=1-γβtxγ1-αty-βα1tz0001]]>代入原配准问题,可使原配准问题进一步转化为:(R·ci+T-di)·ni=(M·cixciyciz1-dixdiydiz1)·nixniyniz0]]>上述线性最小二乘问题,用奇异值分解的方法求解。本发明相对于现有技术具有如下的优点及效果:本发明公开了一种基于单个Kinect的快速、高效、轻便的三维人体建模方法,能够使用户方便地获取自己的三维人体模型,用户需要的只是在Kinect面前转一个圈。并且这种方法对环境的适应能力强,可以在诸如家里或办公室这样狭窄的空间内实现三维人体建模,而所需要的设备也仅仅是一台个人电脑和一台Kinect。这种新的三维人体建模方法可适用于大多数应用,比如数字测量、产品设计和在线购物,用户可以利用本方法所生成的人体模型进行虚拟试衣,而毋须亲自到服装店去。附图说明图1是本发明中提出的一种基于单个Kinect的三维人体建模方法的流程步骤图;图2是本发明中全局对齐的流程步骤图;图3是非刚性对齐的效果示意图;图4是本发明方法的最终模型效果图。具体实施方式为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。实施例请参见图1,图1是本实施例中提出的基于单个Kinect的三维人体建模方法的流程步骤图。图1所示的基于单个Kinect的三维人体建模方法,包含四个步骤:S1、用Kinect扫描人体,提取点云,获取人体的颜色和深度的数据。分析得到的数据,并进行数据分割,去除背景。S2、进行人体点云数据的局部对齐。使用刚性配准将每个角度的三个点云对齐,然后合并成一个点云。S3、进行人体点云数据的全局对齐,包含初始配准、刚性配准和非刚性配准。初始配准,对初始位置进行优化,为下一步的对齐提供较好的初始状态。刚性配准,用刚性ICP进行点云数据间的精细配准。非刚性配准,用一种基于EmbeddedDeformationGraph的非刚性配准方法进行点云数据间的精细配准,从而克服刚性ICP无法对齐的人体细微的动作变化。S4、用得到的完整人体点云进行泊松表面重建得到最终的三维人体模型。本方法的具体实施步骤如下:具体应用中,所述步骤S1具体包括:S101、使用Kinect扫描人体以获取人体点云数据;扫描时的布置:Kinect放在人体腰部附近的高度,距人体水平距离为1米。扫描时,人体首先面对Kinect站好,待Kinect扫描完正面后,人体自己沿右转5个60度,让Kinect扫描到人体的6个角度。这6个角度分别为正面、正左转60度、正面右转60度、背面、背面左转60度、背面右转60度。而每一个角度分别拍摄上(kinect上转20度)、中、下(kinect下转20度)三幅。令Kinect上下转动是通过控制Kinect自身的电机来实现的。拍摄过后,得到6乘以3即18个点云,点云中的每个点深度信息(三维坐标信息)和颜色信息,具体是:每个点储存有3个浮点数值,这3个数值分别代表人体的三维空间坐标信息,即x坐标,y坐标和z坐标的数值。其中,y坐标代表点的高度,z坐标代表Kinect视角的深度,即离Kinect的远近,剩下的x坐标则代表了水平位置,即左右。3个坐标的单位均为毫米(mm)。同时每个点还储存有3个字节,代表了使用RGB表示的颜色信息,3个字节分别对应R、G、B的值。S102、对人体点云数据进行去背景处理;遍历点云中的每个点,根据点的深度值即z坐标的值来判断属于前景还是背景,将所有属于背景的点去掉。由于人体站在距Kinect水平距离为1米的位置,可以大致得出区分前景和背景的标准是,z坐标的值大于1500mm的认为是背景并去除掉。这个标准适用于大部分人体,但如果人体的体型较为特殊,也可以进行适当的调整。S103、修复数据误差由于Kinect捕捉深度数据和颜色数据是分别使用了两个摄像头的,因此两种数据并不能完全吻合,会存在对应上的误差。由此,对点云进行修复是必要的,否则这种误差会影响最后的建模效果。鉴于这一误差出现在单个点云的边缘位置,可以对18个点云中的每一个点云的边缘位置进行检测,将亮度和色调落差大的部分从点云中删去,来把这个误差修复。具体方法是:扫描点云的边缘部位,将亮度落差>0.2(亮度取值范围0-1),色调>10(取值范围0-360)的点去掉。具体应用中,所述步骤S2对人体点云数据进行局部对齐具体包括:Kinect捕捉到的18个点云,是由6个角度,每个角度由上、中、下3帧构成的。局部对齐就是要把每个角度的上、中、下3帧对齐,然后合成1个点云。S201、对齐前的预备工作;在上面的拍摄中,拍摄上帧和下帧的点云时Kinect分别上转20度和下转20度,因此对上和下的点云分别上转20度、下转20度。这一旋转点云的动作是通过把点云中的每一个点都和同一个旋转矩阵进行矩阵运算而实现的。根据步骤S101中对点云数据的描述,点云中的一个点A(x,y,z),其三维坐标可转变为矩阵X=[x,y,z]T将点A沿各轴转动对应的的各个旋转矩阵为:沿x轴旋转:Rx=1000cosθsinθ0-sinθcosθ]]>沿y轴旋转:Ry=cosθ0-sinθ010sinθ0cosθ]]>沿z轴旋转:Rz=cosθsinθ0-sinθcosθ0001]]>其中θ是旋转的角度,由于此处要把点云上转(下转)20度,因此旋转矩阵R应取沿x轴旋转的矩阵,θ应为20°,把点A与R进行矩阵相乘运算即可得到变换后的点A’,依此把点云中的每一个点都作旋转变换后便实现把点云上转(下转)20度。S202、使用刚性ICP进行局部对齐;局部对齐的方法,是使用刚性ICP对齐,将3个点云对齐(以中间的点云为准,上下分别对齐到其上),然后合并成1个点云。对于Kinect捕捉到的18个点云,共包含6个角度,每个角度有上、中、下3个点云。每个角度的3个点云都要进行两次刚性ICP对齐,一次把上方的点云对齐到中间的点云,一次把下方的点云对齐到中间的点云。也就是说点云都是两两使用刚性ICP来对齐,共有12次这样的刚性ICP。刚性ICP的基本思路是,给定两个点集P、Q,pi∈P,qi∈Q。求出两个点集的空间变换f使他们能进行空间匹配,f为一未知函数,而且两点集中的点数不一定相同。刚性ICP求出空间变换f的基本思想是:根据某种几何特性对数据进行匹配,并设这些匹配点为假想的对应点,然后根据这种对应关系求解运动参数。再利用这些运动参数对数据进行变换。并利用同一几何特征,确定新的对应关系,重复上述过程。设三维空间中的两个点pi=(xi,yi,zi),qi=(xj,yj,zj),它们的欧式距离可以表示为:d(pi,qi)=||pi-qi||=(xi-xj)2+(yi-yj)2+(zi-zj)2]]>三维点云匹配问题的目的是找到P和Q变化的矩阵R和T,对于qi=R·pi+T,i=1,2...N利用最小二乘法求解最优解使E=Σi=1N|R·pi+T-qi|2]]>最小时的R和T,先对平移向量T进行初始的估算,具体方法是分别得到点集P和Q的中心:p=1nΣi=1Npi,q=1nΣi=1Nqi]]>分别将点集P和Q平移至中心点处:p'i=pi-p,q'i=qi-q则上述最优化目标函数可以转化为:E=Σi=1N|R·(p′i+p)+T-(q′i+q)|2]]>最优化问题分解为求使E最小的R,根据R求出T。在确定对应关系时,标准的ICP算法所使用的几何特征是空间中点到点之间的距离最小的点,但是由于这个方法收敛慢,效果不好,采用点与平面的距离替代。需要注意的是这里不需要两个点集中的所有点,而仅仅是选取一部分具有可靠的对应关系的点,这些点称为控制点。这时,配准问题转化为:E=Σi=1N|R·ci+T-di|2]]>采用点与平面之间的距离确定对应点对,配准问题可进一步转化为:E=Σi=1N((R·ci+T-di)·ni)2]]>这里,ci,di为对应点对,ni为di上的法向,ci∈C,di∈D,C、D为包含m个点控制点集,对C中每一个点ci,在D中都存在一个匹配点di,如此便得到m个对应点对。可以通过奇异值分解的方法求出使E最小的R,具体方法是:对于第i对点ci和di,计算点对的矩阵Ai:Ai=0(ci-di)Tci-diDiM]]>其中Di=ci+di,DiM是Di的反对称矩阵形式。对于每一个矩阵Ai,计算矩阵B:B=Σi=1mAiAiT]]>原最优化问题可以转为求B的最小特征值的特征向量,B的最小特征值的特征向量即为E最小时的旋转矩阵R。剩下来还需要进行平移矩阵的计算。通过旋转矩阵R和中心点可以计算出平移矩阵:T=q-R·p在初始匹配之后,点集P中所有点根据求出的旋转矩阵R和平移矩阵T作三维空间变换,然后重新选取控制点,重复计算旋转矩阵R和平移矩阵T的过程,直至最近点的距离满足条件或达到最大迭代次数后,算法终止。总结下来,刚性ICP算法的大体流程共有五个步骤:1)分别计算两个点集P和Q的重心,并把两个点集分别平移到其重心处。2)根据一定的几何特征作为标准,分别在两个点集中选取对应点对,生成控制点集C和D。3)通过奇异值分解的方法求出使控制点集C匹配到D上的变换f。4)根据f对点集P实行变换。5)判定是否达到精度要求或抵达最大迭代次数,是则终止算法,否则重复上述步骤直至算法终止。使用刚性ICP算法,可以实现点云之间两两配准。在本方法的局部对齐环节中,便是使用刚性ICP对齐将每个角度的3个点云对齐(以中间的点云为准,上下分别对齐到其上),然后合并成1个点云。经过12次配准,最终生成了6个角度的点云。具体应用中,所述步骤S3、进行人体点云数据的全局对齐具体包括:在上一步骤S2局部对齐之后,得到了人体6个角度的点云。下一步是分别对齐前3幅点云与后3幅点云。这一全局对齐过程共分3步,以正面和正面左转60度的点云为例,介绍这3步过程:S301、初始配准,即对初始位置的优化,方法是选取2个点云的边缘部分的点集作控制点集,用刚性ICP对齐,使两点云的边缘部分重合,给下一步的对齐提供较好的初始状态。S302、刚性配准,用刚性ICP将2个点云对齐。刚性ICP算法在步骤S202局部对齐中已经阐述过,此处与步骤S202中描述的刚性ICP为同一方法。S303、非刚性配准,用非刚性ICP再次将2个点云对齐。此处的非刚性ICP是基于EmbeddedDeformationGraph的一种非刚性配准方法。经过这三个步骤就将2个点云对齐了,其余3次对齐采取同样的方法。前3幅点云与后3幅点云对齐后,分别合并得到前和后2个点云。然后最后的这2个点云用同样的3步对齐后合并得到最终的点云。全局对齐的流程步骤图可参照附图2所示。下面对全局对齐中的三个步骤的具体实施方法进行详细说明:S301、初始配准;初始配准对齐用了刚性ICP来优化初始位置,这样可以给后续的对齐提供好的初始状态。这一步初始配准的流程与步骤S202局部对齐中所述的刚性ICP类似,但是选取控制点是通过选取轮廓的方法仅选取一次,也就是说只选取一次控制点,进行一次迭代,其具体的实施方法为:分别选取2个点云的边缘部分作对应点对,这个边缘部分的选取的方法如下:首先对于垂直方向上,以人体点云的总高度,平均分为若干个等距的区间,一般为10mm一个区间。即若对于一个身高为170cm的人,会把这个人从上到下分为1700/10=170个区间,每个区间高度为10mm。然后在每个区间选择5个最左或最右的点(取决于是选择左边的轮廓还是右边的轮廓)作为控制点。以对齐人体正面点云和正面左转60度的点云为例,首先把人体正面左转60度的点云右转60度,然后分别选取2个点云的右边的轮廓为控制点集,根据刚性ICP的算法把正面左转60度的点云匹配上正面点云。这样人体正面点云和正面左转60度的点云就粗略地对齐了,它们的初始位置已经非常匹配,接下来则需要用更精确的刚性ICP算法来进行精细的配准。S302、刚性配准;刚性ICP算法在步骤S202局部对齐中已经阐述过,此处与步骤S202中描述的刚性ICP为同一方法。这里不再作具体描述。S303、非刚性配准;非刚性配准的大体流程共有五个步骤,对于输入的两个点云P和Q,这个非刚性配准通过如下步骤把P匹配到Q上:S3031、对点云P下采样(采样单位为50mm)得到一个较小的点云G,对点云P和Q下采样(采样单位为15mm)得到较小的点云C和D;S3032、使用点云G构建EmbeddedDeformationGraph,点云G上的点构成Graph的节点,然后每个节点包含一个变换矩阵,每个变换矩阵由一个旋转矩阵R和一个平移矩阵T组成;S3033、使用点云C和D寻找对应点对,即对点云C中的每个点寻找其在点云D上的对应点;S3034、使用对应点对EmbeddedDeformationGraph计算变换矩阵(Graph上每一个节点有一个变换矩阵,每个变换矩阵由一个旋转矩阵和一个平移矩阵组成);最小化E=Erigid+Esmooth+Ecorr,最小化Erigid是为了保证单个旋转矩阵的刚性程度,最小化Esmooth是为了保证整体变换的刚性程度,最小化Ecorr是为了把对应点之间的距离缩小。这一最小化误差的问题是一个非线性最小二乘问题,可用高斯牛顿法求解。而在高斯牛顿法的每一次迭代中,求解线性方程组时可用cholesky分解(LLT分解)方法。S3035、计算出变换矩阵后便可以使用EmbeddedDeformationGraph将点云P进行变形从而对齐到点云Q上。下面对非刚性ICP的具体实施方法进行详细说明:在说明非刚性配准的方法之前,首先需要引入EmbeddedDeformationGraph。所谓的EmbeddedDeformationGraph是一种适用于各种图形的能对图形进行非刚性变换的变形方法。对人体点云数据进行非刚性配准,首先我们需要的是一种能够对对人体点云数据进行非刚性变换的方法。EmbeddedDeformationGraph就是一个很好的选择,使用这种变形方法能够对人体进行各种复杂的非刚性变换,以实现对人体点云数据进行非刚性配准的目的。下面将对EmbeddedDeformationGraph的结构和其变形方法进行阐述:所谓EmbeddedDeformationGraph,顾名思义,它是一种图。这个图是一个三维空间上的图。它的每一个节点就是一个三维空间上的点xi=(x,y,z)。而每一个节点上还包含有一个旋转矩阵Ai和一个平移矩阵bi。旋转矩阵Ai是一个3行3列的矩阵,其初始值为一单位矩阵。平移矩阵bi是一个3行1列的矩阵,其初始值为一零矩阵。EmbeddedDeformationGraph的每个相邻节点之间应通过边相连,但是由于人体点云数据是由零散的点组成的,并不包含拓补信息,因此这些相邻点及相邻点间的边可以省去,不作考虑。EmbeddedDeformationGraph中的每一个节点之所以包含有一个旋转矩阵和一个平移矩阵,是因为每个节点都代表了一个局部的变换,可以把局部范围内的点进行三维空间变换,但对于超出范围的点则不具影响力,具体是:图中的每一个节点xi都会在局部影响区域内对点产生变形,这个局部影响区域是一个以xi为中心,以ri为半径的一个球形范围。任意一个点vj将被这个节点xi映射到新的位置vj’上:上式中的w’是归一化后的权重w,w计算公式为:w(vj,xi,ri)=max(0,(1-d2(vj,xi)/ri2)3)]]>其中d是两点xi、vj间的欧式距离:d(vj,xi)=||vj-xi||=(xi-xj)2+(yi-yj)2+(zi-zj)2]]>留意到当ri大于d时,上式中的权重w计算结果为0,因此节点xi仅可以把局部范围内的点进行三维空间变换,对于超出范围的点不具影响力。此外,计算权重w的公式中max内是比较0和一个立方数,之所以使用立方是为了使远离节点的点受到的影响尽可能小。按照上面的公式可以推出归一化后的权重w’的计算公式:w′(vj,xi,ri)=max(0,(1-d2(vj,xi)/ri2)3)/Σximax(0,(1-d2(vj,xi)/ri2)3)]]>点vj变形到新的位置vj’上的公式的含义是,首先方括号内的是单独一个节点对vj的影响,是以xi为中心对vj进行旋转变换Ai,而后再进行平移变换bi,然后是计算每一个节点对vj影响的权重,由前面的式子可知xi与vj距离大于ri的权重为0,即不影响vj,因为可能有多个节点影响vj,因此需要计算权重,进行归一化,以计算最终的变换。下面来说明EmbeddedDeformationGraph与人体点云数据的关系,对于输入的两个点云A和B,对点云A下采样(采样单位为50mm)得到一个较小的点云G,这个点云G就是用来构造EmbeddedDeformationGraph的,EmbeddedDeformationGraph的节点xi,其三维空间坐标就是点云G的点pi的三维坐标。在得到了EmbeddedDeformationGraph后,就可以对点云进行非刚性变换。在继续说明非刚性配准方法之前,先回想一下刚性ICP的步骤:首先是根据一定的几何特征作为标准,分别在两个点云中选取对应点对,生成控制点集C和D,接下来求出使控制点集C匹配到D上的变换f,然后是根据f对点云P实行变换,最后判定是否达到精度要求或抵达最大迭代次数,是则终止算法,否则重复上述步骤直至算法终止。非刚性ICP也是遵循类似的步骤,但是不同的是非刚性ICP的变换并不仅仅是一个变换矩阵f这么简单,而是一个图,即EmbeddedDeformationGraph。假设这个图包含n个节点,因为一个节点包含一个旋转矩阵Ai(9个未知数)和一个平移矩阵bi(3个未知数),那么需要求解的未知数数量就会达到12n个之多,因此非刚性ICP的求解过程与刚性ICP有着很大的不同,这同时也是非刚性ICP的一大难点。下面,就这一难点,也就是求解n个变换矩阵进行详细的说明:求解n个变换矩阵的过程是通过最小化3个能量来实现的。首先,是第一个能量Erigid,最小化Erigid是为了保证旋转矩阵Ai的刚性程度,其具体的公式为:Erigid=Σxi((a1Ta2)2+(a1Ta3)2+(a2Ta3)2+(1-a1Ta1)2+(1-a2Ta2)2+(1-a3Ta3)2)]]>上式中的a1、a2、a3是指转矩阵Ai的3个列向量。这个公式的具体含义是,对每一个节点xi,其旋转矩阵Ai需要尽可能满足两个条件,一个是aiTaj为0,i、j=1、2、3,i≠j,一个是aiTai为1,i=1、2、3。满足第一个条件是为了使各列向量之间尽可能垂直,满足第二个条件是为了使列向量尽可能为单位向量。满足两条件后便可保证旋转矩阵Ai的刚性程度。接下来,是第二个能量Esmooth,最小化Esmooth是为了保证整体变换的刚性程度,其具体公式为:Esmooth=ΣxiΣxjw′(xi,xj,ri+rj)||Ai(xj-xi)+xi+bi-(xj+bj)||22]]>这个公式的具体含义是,对每一个节点xi,其它的节点xj受到这个节点xi的影响应尽可能接近xj对它自身的影响,我们可以计算一下,节点xj受到这个节点xi的影响是:xj'=Ai(xj-xi)+xi+bi节点xj对它自身的影响是:xj'=Aj(xj-xj)+xj+bj=xj+bj这两项合起来就是Esmooth计算公式的最后一项。由于需要计算所有其它的节点xj,因此还需要计算权重,进行求和。满足Esmooth尽可能小后,可以保证当一个点v受到复数的节点影响时,v受到的来自每一个节点的影响是协调的。这样做可以保证变形的平滑性,否则v受到的来自每一个节点的影响是不协调的,那么变形后就会与其余受到单个节点影响的点有较大的落差,形成噪声。最后,是能量Ecorr,最小化能量Ecorr是为了把对应点之间的距离缩小,计算Ecorr的具体公式为:Ecorr=1mΣi=1m||T·ci-di||2]]>上式中,m是控制点集中点的数量,T是非刚性变换,ci和di是控制点集C、D中的点。最小化能量Ecorr便可以满足控制点集C经非刚性变换T后匹配控制点集D,然后再把非刚性变换T应用到点云P上就可以令点云P匹配上点云Q。把上述三个能量合起来得到最终需要最小化的能量公式:E=αrigidErigid+αsmoothEsmooth+αcorrEcorr上式中,a是控制各能量比例的参数,arigid=500,asmooth=2,acorr=5。最小化能量E是一个非线性最小二乘问题,可用高斯牛顿法求解。高斯牛顿法是一种通过迭代求解线性方程组来解决非线性最小二乘问题的方法,首先会设定一个初始解,然后在每一次迭代中会求解一个线性方程组,再根据线性方程组的解更新非线性最小二乘问题的解,从而一步步逼近问题的真实解。非线性最小二乘的问题可化为如下的基本形式:x=argminx{E}首先,要求解的x就是上文说到的n个变换矩阵,即12n个未知数。要用高斯牛顿法求解x,可以先把E拆分成f(x),根据的公式是:E=12Σi=1n(fi(x))2=12||f(x)||2=12f(x)Tf(x)]]>然后求出f(x)的雅可比矩阵J,并构造线性方程组:(JTJ)h=-JTf(x)h是x在这一次高斯牛顿迭代中的增量,高斯牛顿迭代法就是在每一次迭代中修正x的值,这个就是通过求出x的增量h实现的。求解这个线性方程组,可用cholesky分解方法。求出线性方程组的解h后,更新x:x:=x+h接下来根据新的x重新计算f(x),然后重新计算J,进行下一次迭代,直到h小于一个阀值为止。如此,便求解出了EmbeddedDeformationGraph的n个变换矩阵,完成了求解非刚性变换的过程。接下来就是把非刚性变换应用到点云P,然后根据非刚性ICP的步骤,下一步是判定是否达到精度要求或抵达最大迭代次数,是则终止算法,否则继续迭代直至算法终止。而得到最终的完整人体点云后,就可以使用泊松表面重建对点云进行重建得到人体模型。泊松重建可以使最终得到的网格模型包含点颜色。首先,由于Kinect并不是精确的扫描设备,这造成的后果就是如果使用Kinect在远距离扫描人的整体的话,得到的点云数据会是粗糙的,而这种缺陷难以通过后期处理消除。而本发明采用了一种在近距离进行拍摄的方法,把Kinect拉近到离人只有一米的距离,利用Kinect自带的电机让Kinect自己上下旋转来获取整体的人的点云数据,这种方法很好地克服了在远距离扫描人体而导致的点云数据太粗糙的问题,使得经过后期处理后的人体模型的精度大幅提升。其次,本发明采用的方法不需要连续拍摄多帧数据,该发明方法是拍3幅然后把3个点云对齐,数据量比较少,拍摄时间相对也较少。并且在后续处理中,该发明方法并没有在对齐前就重建mesh,而是一直用点云最后再泊松重建,因为mesh的包含的信息比点云多,可能会出现更多的误差。然后,该发明中对齐方法采用的是一种三步骤的对齐方法。在对齐的第一步里,用了快速的刚性ICP优化初始位置,这样可以给后续的对齐提供好的初始状态,第二步是使用精细的刚性ICP进行精确的配准,最后==采用了非刚性ICP进行对齐,有效地克服了刚性ICP无法对齐人体细微动作变化的问题。综上所述,本发明公开了一种基于单个Kinect的快速、高效、轻便的三维人体建模方法,能够使用户方便地获取自己的三维人体模型,用户需要的只是在Kinect面前转一个圈。并且这种方法对环境的适应能力强,可以在诸如家里或办公室这样狭窄的空间内实现三维人体建模,而所需要的设备也仅仅是一台个人电脑和一台Kinect。这种新的三维人体建模方法可适用于大多数应用,比如数字测量、产品设计和在线购物,用户可以利用本方法所生成的人体模型进行虚拟试衣,而毋须亲自到服装店去。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1