本申请涉及计算机技术领域,特别是涉及一种模型数据处理方法、装置、计算机可读存储介质和计算机设备。
背景技术:
随着计算机技术的发展,人体建模技术进入人们的生活中,人体建模技术根据用户特征恢复用户形象,应用于各个领域,如虚拟试衣、进行肩宽、脖围、头长等体型数据的测量等,在恢复用户形象时,头肩颈部位尤为重要。
传统的人体模型的建立依赖于人体分割和特征点检测的准确性,所建立的样条拟合模型的分辨率不够,对头肩颈部位进行分离处理,难以准确描述头肩颈部位的姿态和形状的变化。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种通过模型数据处理方法和装置、计算机可读存储介质和计算机设备,提高人体头肩颈部位的形状和姿态的恢复准确度。
一种模型数据处理方法,所述方法包括:
获取第一三维扫描点云数据,所述第一三维扫描点云数据对应的用户为同一姿态;
利用相同的人体网格模型去拟合所述第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集;
对所述网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据所述基向量组及平均形状网格建立头肩颈形状空间模型;
获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用所述头肩颈形状空间模型解释所述第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数;
根据所述头肩颈姿态参数训练得到姿态统计分布模型;
存储所述头肩颈形状空间模型和所述姿态统计分布模型。
在其中一个实施例中,方法还包括:
获取应用数据,所述应用数据包括三维扫描设备扫描得到的点云数据、单个深度相机得到的半边点云数据、二维图像数据中的至少一种;
根据所述头肩颈形状空间模型和姿态统计分布模型解释所述应用数据对应的形状和姿态,得到目标形状参数和目标姿态参数。
在其中一个实施例中,所述根据所述头肩颈姿态参数训练得到姿态统计分布模型包括:
获取不同用户不同姿态对应的头肩颈姿态参数大数据;
将所述头肩颈姿态参数大数据作为训练数据输入混合高斯模型以学习得到所述姿态统计分布模型;
所述姿态统计分布模型对于输入的当前头肩颈姿态参数,输出对应的头肩颈姿态状态检测结果。
在其中一个实施例中,所述根据同一用户形状参数不变的原则,利用所述头肩颈形状空间模型解释所述第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数包括:
获取当前用户对应的第一姿态三维扫描点云数据;
利用所述头肩颈形状空间模型在形状空间中寻找当前形状参数,使得当前形状参数对应的网格上的顶点与第一姿态三维扫描点云数据的对应关系点匹配;
获取当前用户对应的其它姿态三维扫描点云数据;
固定所述当前形状参数,通过调整头肩颈姿态参数以解释所述其它姿态三维扫描点云数据,得到各个姿态对应的头肩颈姿态参数。
在其中一个实施例中,所述方法还包括:
根据所述目标形状参数和目标头肩颈姿态参数得到与所述应用数据对应的当前用户体型匹配的目标网格;
根据目标网格的网格顶点计算得到所述当前用户对应的虚拟三维模型关键位置信息;
根据所述虚拟三维模型关键位置信息建立与所述当前用户体型匹配的目标虚拟三维模型。
一种模型数据处理装置,所述装置包括:
点云数据获取模块,用于获取第一三维扫描点云数据,所述第一三维扫描点云数据对应的用户为同一姿态;
网格构建模块,用于利用相同的人体网格模型去拟合所述第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集;
头肩颈形状空间模型建立模块,用于对所述网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据所述基向量组及平均形状网格建立头肩颈形状空间模型;
点云解释模块,用于获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用所述头肩颈形状空间模型解释所述第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数;
姿态统计分布模型建立模块,用于根据所述头肩颈姿态参数训练得到姿态统计分布模型;
存储模块,用于存储所述头肩颈形状空间模型和所述姿态统计分布模型。
在其中一个实施例中,装置还包括:
应用数据获取模块,用于获取应用数据,所述应用数据包括三维扫描设备扫描得到的点云数据、单个深度相机得到的半边点云数据、二维图像数据中的至少一种;
形状和姿态解析模块,用于根据所述头肩颈形状空间模型和姿态统计分布模型解释所述应用数据对应的形状和姿态,得到目标形状参数和目标姿态参数。
在其中一个实施例中,点云解释模块还用于获取当前用户对应的第一姿态三维扫描点云数据,利用所述头肩颈形状空间模型在形状空间中寻找当前形状参数,使得当前形状参数对应的网格上的顶点与第一姿态三维扫描点云数据的对应关系点匹配,获取当前用户对应的其它姿态三维扫描点云数据,固定所述当前形状参数,通过调整头肩颈姿态参数以解释所述其它姿态三维扫描点云数据,得到各个姿态对应的头肩颈姿态参数。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行所述程序时实现以下步骤:
获取第一三维扫描点云数据,所述第一三维扫描点云数据对应的用户为同一姿态;
利用相同的人体网格模型去拟合所述第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集;
对所述网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据所述基向量组及平均形状网格建立头肩颈形状空间模型;
获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用所述头肩颈形状空间模型解释所述第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数;
根据所述头肩颈姿态参数训练得到姿态统计分布模型;
存储所述头肩颈形状空间模型和所述姿态统计分布模型。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:
获取第一三维扫描点云数据,所述第一三维扫描点云数据对应的用户为同一姿态;
利用相同的人体网格模型去拟合所述第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集;
对所述网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据所述基向量组及平均形状网格建立头肩颈形状空间模型;
获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用所述头肩颈形状空间模型解释所述第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数;
根据所述头肩颈姿态参数训练得到姿态统计分布模型;
存储所述头肩颈形状空间模型和所述姿态统计分布模型。
上述模型数据处理方法、装置、计算机可读存储介质和计算机设备,通过获取第一三维扫描点云数据,第一扫描点云数据对应的用户为同一姿态,利用相同的人体网格模型去拟合第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集,对网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据基向量组及平均形状网格建立头肩颈形状空间模型,获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用头肩颈形状空间模型解释第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数,根据头肩颈姿态参数训练得到姿态统计分布模型,存储头肩颈形状空间模型和姿态统计分布模型,对人体头肩颈部位进行整体建模,所得模型在头、肩、颈部位是无缝衔接的,对头肩颈部位的姿态分布进行建模,所得模型有助于准确恢复出头肩颈部位的姿态,提高了人体头肩颈部位的形状和姿态的恢复准确度。
附图说明
图1为一个实施例中模型数据处理方法的应用环境图;
图2为一个实施例中模型数据处理方法的流程示意图;
图3为一个实施例中人体网格模型的示意图;
图4为一个实施例模型数据处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的模型数据处理方法,可以应用于如图1所示的应用环境中。如图1所示,该应用环境包括三维扫描设备110、计算机设备120,三维扫描设备110、计算机设备120之间通过网络或直接连接进行通信,通信网络可以是无线或者有线通信网络,例如ip网络、蜂窝移动通信网络等。三维扫描设备110可以是激光扫描设备、基于深度相机的三维扫描系统等。计算机设备120可以是服务器或终端,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。模型数据处理方法应用于计算机设备120。
在一个实施例中,如图2所示,提供了一种模型数据处理方法,以该方法应用于图1中的应用环境中的电子设备为例进行说明,包括以下步骤:
步骤210,获取第一三维扫描点云数据,第一三维扫描点云数据对应的用户为同一姿态。
具体的,可以从人体三维扫描点云数据库直接获取已采集的第一三维扫描点云数据或实时采集得到第一三维扫描点云数据。其中第一三维扫描点云数据是利用专业三维扫描设备,如激光扫描设备、基于深度相机的三维扫描系统等采集的,包含不同体型、不同性别,但人体姿态都是统一的同一姿态的三维扫描点云数据,其中同一姿态可为预设的某个姿态,如人体站直后两臂半张开的姿态a-pose、两臂张开到水平的姿态t-pose、两臂不张开的姿态i-pose等。
步骤220,利用相同的人体网格模型去拟合第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集。
具体地,利用相同的人体网格模型去拟合第一三维扫描点云数据,具体过程是:首先,在第一三维扫描点云数据中寻找与网格顶点对应的点,称之为对应关系点,网格顶点与其对应关系点存在一定的语义对应关系;然后,对网格上的顶点应用非刚性形变,使其与其对应关系点尽可能接近。对所有的点云数据都进行相同的处理,将点云数据集同构为网格数据集。网格数据集包含多个网格,每个网格都对应一个第一三维扫描点云数据。在一个实施例中,人体网格模型如图3所示。
步骤230,对网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据基向量组及平均形状网格建立头肩颈形状空间模型。
其中,主成分分析又称为pca降维,是一种分析、简化数据集的技术,用于降低数据集的维数,同时保持数据集中对方差贡献最大的特征。将pca应用于同构的人体网格数据集得到的各主成分分量就是构成人体形状空间的基向量,单个主成分分量,或基向量,也被称为blendshape。
具体地,形状是由3d模型网格的顶点位置组成的向量,对于n个顶点的网格,对应的向量为[x1,y1,z1,...,xn,yn,zn]t,平均形状网格就是取不同形状的3d网格的平均。形状空间是由一个平均形状网格
其中,βi是与基向量si相关的系数。
步骤240,获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用头肩颈形状空间模型解释第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数。
具体地,第二三维扫描点云数据是用深度相机,例如,kinect等采集的具有头部、颈部、肩部姿态变化同一用户的数据库。同一用户头肩颈部位的姿态可以有很多变化,但形状是不变的,在拟合来自同一用户的点云数据的头肩颈姿态的时候,先固定其形状参数,通过点云形状空间解释得到在某一个姿态
其中点云形状空间解释是指在形状空间中寻找一个点,也就是一组参数
式中,
步骤250,根据头肩颈姿态参数训练得到姿态统计分布模型。
具体地,头肩颈的姿态主要由头部姿态和脖子根部关节点处的姿态组成,头肩颈的姿态变化存在相关关系,可以利用数据分布模型去描述这种相关关系得到姿态统计分布模型,具体的模型类型可自定义。根据采集的大量的头肩颈姿态参数训练姿态统计分布模型,参数训练好后,对于任意的头肩颈姿态,姿态统计分布模型可以输出对应的姿态状态,姿态状态包括正常和异常。通过姿态统计分布模型可以保证后续头肩颈姿态参数确定的有效性。
步骤260,存储头肩颈形状空间模型和姿态统计分布模型。
具体地,将得到的头肩颈形状空间模型保存为模型文件,将基向量组si∈r3n,i=1,2,...,n和平均形状网格
上述模型数据处理方法,通过获取第一三维扫描点云数据,第一扫描点云数据对应的用户为同一姿态,利用相同的人体网格模型去拟合第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集,对网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据基向量组及平均形状网格建立头肩颈形状空间模型,获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用头肩颈形状空间模型解释第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数,根据头肩颈姿态参数训练得到姿态统计分布模型,存储头肩颈形状空间模型和姿态统计分布模型,对人体头肩颈部位进行整体建模,所得模型在头、肩、颈部位是无缝衔接的,对头肩颈部位的姿态分布进行建模,所得模型有助于准确恢复出头肩颈部位的姿态,提高了人体头肩颈部位的形状和姿态的恢复准确度。
在一个实施例中,方法还包括:获取应用数据,应用数据包括三维扫描设备扫描得到的点云数据、单个深度相机得到的半边点云数据、二维图像数据中的至少一种,根据头肩颈形状空间模型和姿态统计分布模型解释应用数据对应的形状和姿态,得到目标形状参数和目标姿态参数。
具体地,利用建模阶段得到的形状空间模型和姿态统计分布模型,将应用数据输入形状空间模型和姿态统计分布模型去分别解释人体点云数据的形状和姿态,得到目标形状参数
在一个实施例中,步骤250包括:获取不同用户不同姿态对应的头肩颈姿态参数大数据,将头肩颈姿态参数大数据作为训练数据输入混合高斯模型以学习得到姿态统计分布模型;姿态统计分布模型对于输入的当前头肩颈姿态参数,输出对应的头肩颈姿态状态检测结果。
具体地,通过混合高斯模型去描述头肩颈的姿态变化存在的相关关系,混合高斯模型的参数使用期望最大化算法去学习。混合高斯模型可以统计数据的分布,采集了大量的不同用户不同姿态对应的头肩颈姿态数据,训练混合高斯模型,混合高斯模型是一种复杂的、多峰的统计分布模型,用多个高斯概率密度函数精确地描述变量的分布,其概率密度函数可表示如下:
其中,k表示使用的高斯分量的个数,λk表示第k个高斯分量的权重,且∑λk=1,normx(μk,σk)表示第k个高斯分量,其均值为μk∈rd,方差为σk∈rd×d,d是数据x的维数。选定高斯分量的个数k后,各个高斯分量的参数(λk,μk,σk),k=1,2,...,k是使用期望最大化算法从采集的数据集中学习得到的。参数训练好后,对于任意输入的当前头肩颈姿态参数,模型可以给出对应的概率,概率高表示该姿态“正常”,概率低表示该姿态“不正常”,比如一般人很难把脖子或头扭转360度,则此姿态就是一个不正常的姿态。
在一个实施例中,步骤240包括:获取当前用户对应的第一姿态三维扫描点云数据,利用头肩颈形状空间模型在形状空间中寻找当前形状参数,使得当前形状参数对应的网格上的顶点与第一姿态三维扫描点云数据的对应关系点匹配,获取当前用户对应的其它姿态三维扫描点云数据;固定当前形状参数,通过调整头肩颈姿态参数以解释其它姿态三维扫描点云数据,得到各个姿态对应的头肩颈姿态参数。
具体地,第一姿态三维扫描点云数据是当前用户在第一姿态
在一个实施例中,方法还包括:根据目标形状参数和目标头肩颈姿态参数得到与应用数据对应的当前用户体型匹配的目标网格,根据目标网格的网格顶点计算得到当前用户对应的虚拟三维模型关键位置信息;根据虚拟三维模型关键位置信息建立与当前用户体型匹配的目标虚拟三维模型。
具体地,从点云数据获取到对应的目标形状参数和目标头肩颈姿态参数后,就能得到一个与用户体型相似的目标网格,该网格上的某些顶点有明确的语义,例如第i个顶点是左肩点,第j个顶点是右肩点,那么这两个顶点之间的距离就是近似的肩宽。通过对点云数据进行解释,找出有明确语义,如左右肩点、脖颈根部点、头顶点、鼻尖点等的关键点的位置。在虚拟形象合成的时候,根据目标网格的网格顶点计算得到当前用户对应的虚拟三维模型关键位置信息,如肩宽、头肩比例、脖长,根据虚拟三维模型关键位置信息建立与当前用户体型匹配的目标虚拟三维模型。由于肩宽、头肩比例、脖长这些信息都是与合成逼真度高度相关的,从而提高目标虚拟三维模型与用户的高匹配度。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种模型数据处理装置,包括:
点云数据获取模块410,用于获取第一三维扫描点云数据,第一三维扫描点云数据对应的用户为同一姿态。
网格构建模块420,用于利用相同的人体网格模型去拟合第一三维扫描点云数据,得到具有相同拓扑结构的网格数据集。
头肩颈形状空间模型建立模块430,用于对网格数据集进行主成分分析,得到网格数据集所在的形状空间的基向量组及平均形状网格,根据基向量组及平均形状网格建立头肩颈形状空间模型。
点云解释模块440,用于获取同一用户具有姿态变化的第二三维扫描点云数据,根据同一用户形状参数不变的原则,利用头肩颈形状空间模型解释第二三维扫描点云数据,得到用户对应的形状参数和各个姿态对应的头肩颈姿态参数。
姿态统计分布模型建立模块450,用于根据头肩颈姿态参数训练得到姿态统计分布模型。
存储模块460,用于存储头肩颈形状空间模型和姿态统计分布模型。
在一个实施例中,装置还包括:
应用数据获取模块470,用于获取应用数据,应用数据包括三维扫描设备扫描得到的点云数据、单个深度相机得到的半边点云数据、二维图像数据中的至少一种。
形状和姿态解析模块480,用于根据头肩颈形状空间模型和姿态统计分布模型解释应用数据对应的形状和姿态,得到目标形状参数和目标姿态参数。
在一个实施例中,点云解释模块440还用于获取当前用户对应的第一姿态三维扫描点云数据,利用头肩颈形状空间模型在形状空间中寻找当前形状参数,使得当前形状参数对应的网格上的顶点与第一姿态三维扫描点云数据的对应关系点匹配,获取当前用户对应的其它姿态三维扫描点云数据,固定当前形状参数,通过调整头肩颈姿态参数以解释所述其它姿态三维扫描点云数据,得到各个姿态对应的头肩颈姿态参数。
在一个实施例中,姿态统计分布模型建立模块450还用于获取不同用户不同姿态对应的头肩颈姿态参数大数据;将头肩颈姿态参数大数据作为训练数据输入混合高斯模型以学习得到姿态统计分布模型;姿态统计分布模型对于输入的当前头肩颈姿态参数,输出对应的头肩颈姿态状态检测结果。
在一个实施例中,装置还包括:
虚拟三维模型建立模块490,用于根据目标形状参数和目标头肩颈姿态参数得到与应用数据对应的当前用户体型匹配的目标网格;根据目标网格的网格顶点计算得到所述当前用户对应的虚拟三维模型关键位置信息;根据虚拟三维模型关键位置信息建立与当前用户体型匹配的目标虚拟三维模型。
关于模型数据处理装置的具体限定可以参见上文中对于模型数据处理方法的限定,在此不再赘述。上述模型数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述模型数据处理的步骤。此处数据处理方法的步骤可以是上述各个实施例的模型数据处理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述模型数据处理方法的步骤。此处模型数据处理方法的步骤可以是上述各个实施例的模型数据处理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。