本发明涉及计算机图形学技术领域,具体地,涉及一种三维人体扫描非刚性重建测量的方法及装置。
背景技术:
随着计算机三维重建技术的日益成熟,很多传统行业如健身行业、服装行业都期望可以更加智能、快速的获得人体的三维模型数据。现有的基于多相机阵列的人体扫描设备虽然精度很高,但是结构复杂,占地面积较大,而且成本十分高昂。而现有的基于单台深度相机三维人体重建技术具有两大局限性:一是单台相机的拍摄范围有限,在一定的工作距离内,需要借助导轨等装置进行度多空间位置的多次拍摄,才能覆盖全部人体;二是现有的扫描技术多采用刚性重建方法,需要配合刚性转台实现人体三维扫描,扫描时间较长,同时要求扫描的人体在扫描过程中要保持静止状态,这无疑增加了设备成本,降低了实际使用的灵活性。
无论是健身行业的体型追踪还是服装行业的衣物定制,都要求精准测量人体关键部位的维度信息。通过三维扫描重建技术得到三维人体模型后,可以进一步测量维度信息。传统的利用三维软件在人体模型上测量维度的方法需要人工手动选取关键点的位置,调整测量圈的方向,效率很低。
技术实现要素:
针对现有的人体三维重建设备昂贵、操作复杂、使用灵活性差以及人体维度测量方法的低效问题,本发明提供一种三维人体扫描非刚性重建和测量方法及装置,本发明无需使用刚性转台或导轨,部署方便且使用灵活,且能够快速实现人体维度的自动测量。
一种三维人体扫描非刚性重建和测量方法,包括以下步骤:
步骤1:获取初始帧深度图像,并利用marchingcube算法生成初始化的立体三角网格模型;
步骤2:计算所述初始化的立体三角网格模型的蒙皮权重;
步骤3:获取当前帧深度图像和当前帧rgb图像,从当前帧深度图像和当前帧rgb图像中提取人体骨架信息和人体轮廓信息,并建立最优化模型;根据最优化模型计算当前帧与初始帧之间的人体非刚性变换系数;
步骤4:利用所述非刚性变换系数,将当前帧深度图像逆变换到立体三角网格模型的坐标空间中,并利用tsdf算法将初始帧深度图像与当前帧深度图像的深度信息融合;
步骤5:重复步骤4和步骤5,将多帧深度图像进行融合后生成最终的人体三维模型。
所述的三维人体扫描非刚性重建和测量方法,所述步骤1包括以下具体步骤:
步骤1.1:获取3台深度相机拍摄的深度图像,并将同一时间拍摄的3张深度图片拼接在一起,组成拼接深度图像;
步骤1.2:根据所述拼接深度图像实时监测人体骨架,并根据人体骨架姿势获取初始帧深度图像;
步骤1.3:将所述初始帧深度图像映射为三维空间的点云数据,并根据marchingcube算法计算得到初始化的立体三角网格模型。
所述的三维人体扫描非刚性重建和测量方法,所述步骤2的具体步骤为:
步骤2.1:计算所述初始帧深度图像中的骨架位置,并在所述初始化的立体三角网格模型上均匀采样出用于建模人体进行非刚性变换的采样点xi,i∈[1,m],其中m为采样点的个数;
步骤2.2:计算初始化的三维网格模型中每个采样点xi相对于每根骨架的蒙皮权重{wi1,…,wij,…,win},其中n为骨架个数,j∈{1,n},wij为第i个采样点xi相对于第j根骨架的蒙皮权重;
步骤2.3:通过插值法计算初始化的三维网格模型上其他顶点vk相对于每根骨架的蒙皮权重{wk1,…,wkj,…,wkn},其中wkj为第k个顶点vk相对于第j根骨架的蒙皮权重,计算公式如下:
其中,
所述的三维人体扫描非刚性重建和测量方法,所述步骤3具体包括,
步骤3.1:建立最优化模型
获取下一帧深度图像和下一帧rgb图像作为当前帧深度图像和当前帧rgb图像;
根据当前帧深度图像计算人体骨架信息的具体方法为:计算该帧深度图像中的骨架位置信息,并根据欧式距离计算该帧深度图像与初始帧深度图像的对应顶点集合
根据当前帧rgb图像计算人体轮廓信息的具体方法为:用maskrcnn算法提取rgb图像中人体的轮廓点zl,由轮廓点zl组成人体轮廓信息集合
根据所述人体骨架信息集合和人体轮廓信息集合
步骤3.2:计算人体非刚性变换系数
根据最优化模型计算当前帧与初始帧间的对应采样点xi的人体非刚性变换系数
具体的,使用迭代最近点icp算法迭代优化最优化模型的损失函数,计算得到非刚性变换系数。
所述的三维人体扫描非刚性重建和测量方法,在步骤3.2中,所述的最优化模型的目标函数l包含四个损失函数l1、l2、l3、l4:
l=l1+l2+l3+l4(2)
其中,损失函数l1用于建立根据人体非刚性变换系数
l2用于建立根据骨骼运动变换系数
l3用于约束人体非刚性变换系数
l4表示将根据非刚性变换系数
所述的三维人体扫描非刚性重建和测量方法,所述损失函数l1的计算公式为:
其中,
所述的三维人体扫描非刚性重建和测量方法,损失函数l2的计算公式为:
其中,
所述的三维人体扫描非刚性重建和测量方法,所述损失函数l4的计算公式为:
其中,
所述的三维人体扫描非刚性重建和测量方法,根据合最终的三维人体模型,计算胸围、臂围、腰围、臀围、腿围等人体维度信息,具体方法为;
计算最终的三维人体模型中的骨架位置信息;
根据所要测量的身体部位,在骨架上定位相应的关键点,以相应的骨架方向为法线法向生成过该关键点的平面,计算该平面与人体三维模型的相交线,并以相交线的长度作为该部位的围度。
一种三维人体扫描非刚性重建和测量装置,采用权利要求1-9中所述的三维人体扫描非刚性重建方法,包括3台深度相机、相机固定杆、液晶显示屏、微处理器,多台所述深度相机沿竖向均匀分布在所述相机固定杆上的一侧,所述液晶显示屏设置在相机固定杆的另一侧,且所述深度相机、液晶显示屏朝向相同;
所述深度相机具有3台,且从下往上依次距离地面的高度为h、2h、3h;
所述深度相机与所述微处理器交互式连接,所述液晶显示屏与微处理器的信号输出端连接。
与现有技术相比,本发明的有益效果:
1、本发明的三维人体扫描非刚性重建和测量装置无需导轨,多台相机固定于相机固定杆的相机槽内,多台相机同时拍摄即可实现人体拍摄范围的覆盖;且无需转台,减小三维人体扫描装置的占地面积。
2、本发明的三维人体扫描非刚性重建方法,实现了人体模型的非刚性动态重建,无需转台,扫描的人体对象可以自己徒步旋转360度,旋转过程中不要求保持姿态静止,旋转的速度可自行控制,大大降低扫描设备成本,且同时提高用户使用的灵活性与便捷性;
3、相比现有的仅利用人体骨架信息实现动态重建的算法(cn108122275a),本发明提出的三维人体模型非刚性重建算法利用了rgb图像中更为精确和丰富的人体轮廓信息,从而能够减少多帧融合的累积误差,进一步提高人体模型建模精度。
附图说明
图1为本发明三维人体扫描非刚性重建装置示意图。
图2为本发明三维人体扫描非刚性重建方法的流程图。
图3为本发明的人体非刚性重建算法的流程图。
图4为本发明三维人体扫描非刚性重建方法的人体维度测量示意图。
图中:1、rgbd相机,2、rgbd相机,3、rgbd相机,4、相机固定杆,5、微处理器,6、扬声器,7、液晶显示竖屏。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
针对现有的人体三维重建设备昂贵、操作复杂、使用灵活性差以及人体维度测量方法的低效问题,本实施例提供了一种三维人体扫描非刚性重建测量的方法和装置,下面结合一具体应用实例,对本发明实施例的技术方案进行详细说明。本发明无需使用刚性转台或导轨,部署方便且使用灵活,且能够快速实现人体维度的自动测量。
参见图1,一种三维人体扫描非刚性重建装置,包括多台深度相机、相机固定杆、液晶显示屏、微处理器,多台所述深度相机沿竖向均匀分布在所述相机固定杆上的一侧,所述液晶显示屏设置在相机固定杆的另一侧,且所述深度相机、液晶显示屏朝向相同;所述深度相机与所述微处理器交互式连接,所述液晶显示屏与微处理器的信号输出端连接。液晶显示屏可用于提示用户开始测量,也可将人体模型重建结果显示在显示屏上。
相机固定杆、液晶显示竖屏相对于地面垂直摆放,液晶显示竖屏紧邻相机固定杆放置。
所述微处理器通过usb连接线与深度相机相连接,实现深度数据的采集和处理。所述微处理器通过vga连接线与液晶显示竖屏连接。
优选地,本实施例中的深度相机具有3台,且在相机固定杆上从下往上依次距离地面的高度为h、2h、3h。
且本实施例的深度相机采用rgb深度相机。微处理器可以单独放置在机箱内,设置在相机固定杆中,也可以直接设置在液晶显示屏中;
优选地,还可以包括扬声器,扬声器可设置在相机固定杆中也可以设置在液晶显示屏中,且扬声器与微处理器通过usb线连接,扬声器用于通过语音提示用户开始旋转。
其中一个具体实施例中,上述的h=0.6米,即所述3台rgbd相机竖直排列固定在所述相机固定杆的上、中、下位置,离地面高度分别为0.6米、1.2米和1.8米。
本实施例还公开了一种三维人体扫描非刚性重建方法,包括以下步骤:
步骤1:获取初始帧深度图像,并利用marchingcube算法生成初始化的立体三角网格模型;
步骤2:计算所述初始化的立体三角网格模型的蒙皮权重;
步骤3:获取当前帧深度图像和当前帧rgb图像,从当前帧深度图像和当前帧rgb图像中提取人体骨架信息和人体轮廓信息,并建立最优化模型;根据最优化模型计算当前帧与初始帧之间的人体非刚性变换系数;
步骤4:利用所述非刚性变换系数,将当前帧深度图像逆变换到立体三角网格模型的坐标空间中,并利用tsdf算法将初始帧深度图像与当前帧深度图像的深度信息融合;
步骤5:重复步骤4和步骤5,将多帧深度图像进行融合后生成最终的人体三维模型。
具体的,所述步骤1包括以下步骤:
步骤1.1:获取3台rgbd相机拍摄的深度图像,并将同一时间拍摄的3张深度图片拼接在一起,组成拼接深度图像;
步骤1.2:根据所述拼接深度图像实时监测人体骨架,并根据人体骨架姿势获取初始帧深度图像;
步骤1.3:将所述初始帧深度图像映射为三维空间的点云数据,并根据marchingcube算法计算得到初始化的立体三角网格模型。
所述步骤2的具体步骤为:
步骤2.1:计算所述初始帧深度图像中的骨架位置信息,并在所述初始化的立体三角网格模型上均匀采样出用于建模人体进行非刚性变换的采样点xi,i∈[1,m],其中m为采样点的个数;
步骤2.2:计算初始化的三维网格模型中每个采样点xi相对于每根骨架的蒙皮权重{wi1,…,wij,…,win},其中n为骨架个数,j∈{1,n},wij为第i个采样点xi相对于第j根骨架的蒙皮权重;
步骤2.3:通过插值法计算初始化的三维网格模型上其他顶点vk相对于每根骨架的蒙皮权重{wk1,…,wkj,…,wkn},其中wkj为第k个顶点vk相对于第j根骨架的蒙皮权重,计算公式如下:
其中,
所述步骤3具体包括:建立最优化模型和计算人体非刚性变换系数;
步骤3.1:建立最优化模型
获取下一帧深度图像和下一帧rgb图像作为当前帧深度图像和当前帧rgb图像;具体为,通过多台深度相机同时拍摄,并将同时拍摄的多张深度图片拼接在一起,组成拼接深度图像;
根据当前帧深度图像计算人体骨架信息的具体方法为:计算该帧深度图像中的骨架位置信息,并根据欧式距离计算该帧深度图像与初始帧深度图像的对应顶点集合
根据当前帧rgb图像计算人体轮廓信息的具体方法为:用ma步骤krcnn算法提取rgb图像中人体的轮廓点zl,由轮廓点zl组成人体轮廓信息集合
根据所述人体骨架信息集合和人体轮廓信息集合
最优化模型的目的是为了计算当前帧与初始帧之间的非刚性变换系数矩阵,最优化模型以该模型的损失函数体现。
步骤3.2:计算人体非刚性变换系数
根据最优化模型计算当前帧与初始帧间的对应采样点xi的人体非刚性变换系数
具体的,使用迭代最近点icp算法迭代优化最优化模型的损失函数,计算得到非刚性变换的系数
所述的最优化模型的目标函数l包含四个损失函数l1、l2、l3、l4:
l=l1+l2+l3+l4(2)
其中,损失函数l1用于建立根据人体非刚性变换系数
其中,
l2用于建立根据骨骼运动变换系数
其中,
l3用于约束人体非刚性变换系数
l4表示将根据非刚性变换系数
其中,
参照图2,对本发明的基于三维人体扫描非刚性重建方法的处理过程加以描述:
s1:启动微处理器,初始化液晶显示竖屏并同时启动3台rgbd相机开始采集深度图像;
s2:3台rgbd相机分别采集人体上、中、下三部分的深度图像,微处理器对采集到的深度图像进行实时的计算处理,根据三台相机的相对坐标位置,调用rgbd相机的库函数功能,将同一时间三台相机采集到的3张深度图像拼在一起组成拼接深度图像;
s3:人自然站立于深度相机前约1.2米处,正面面对深度相机,双臂微微张开,保持a型姿势;
s4:微处理器调用rgbd相机的库函数功能,根据拼接深度图像实时检测人体骨架,一旦检测到相机前的人体并且姿势符合要求,则控制扬声器或者显示屏发出提示语音或者提示数字,提示用户准备完毕,提醒人体保持该姿势并开始徒步原地旋转360度;此处库函数功能是根据输入的深度图像检测人体骨架的位置;
s5:在人体自行旋转的过程中,微处理器实时地将采集到的多张深度图片通过非刚性人体重建算法融合成一个最终的三维人体模型;
s6:人体完成旋转后,微处理器根据最终的三维人体模型,计算胸围、臂围、腰围、臀围、腿围等人体维度信息,并输出显示在液晶显示竖屏上。
计算人体维度信息的方法包括以下步骤:
s61:调用rgbd相机的库函数功能,计算最终的三维人体模型中骨架位置信息;
s62:根据所要测量的身体部位,在骨架上定位相应的关键点,以相应的骨架方向为法线法向生成过该关键点的平面,计算该平面与人体三维模型的相交线,并以相交线的长度作为该部位的围度。
参见图4,关键点的选取根据本本领域通用技术选取,比如腰围的关键点是脊柱骨架上位于腰部的点,臀围的关键点是脊柱骨架上位于臀部中心的点等。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。