交互式人脸三维建模方法及装置与流程

文档序号:16886247发布日期:2019-02-15 22:39阅读:237来源:国知局
交互式人脸三维建模方法及装置与流程

本申请涉及三维建模技术领域,具体而言,涉及一种交互式人脸三维建模方法及装置。



背景技术:

三维建模是物体的多边形表示,通常用计算机或者其它视频设备进行显示。

申请人发现,现有的传统三维建模技术中,大部分都是需要用到大型激光扫描设备,便携性和成本都较高,不适用于普通消费者。

针对相关技术中便携性较差的问题,目前尚未提出有效的解决方案。

申请内容

本申请的主要目的在于提供一种用于交互式人脸三维建模方法及装置,以解决便携性较差的问题。

为了实现上述目的,根据本申请的一个方面,提供了一种用于交互的图像处理方法。

根据本申请的用于交互式人脸三维建模方法包括使用深度摄像头捕获人脸深度图,并实时计算用户头部转动姿态;发出交互指令引导用户调整头部转动角度并生成局部三维模型;以及实时渲染累积建立的所述局部三维模型。

进一步地,实时计算用户头部转动角度之前还包括如下的任一一种多种预操作:判断彩色图像中是否存在人脸;判断人脸框是否落在取景框内部;判断用户脸部到深度摄像头之间的距离是否满足条件;判断用户头部是否端正。

进一步地,向用户发出交互指令引导用户调整头部转动角度并生成局部三维模型包括:在用户头部转动角度达到预设预设角度时,播放语音提示用户向左转头部、向右转头部或者转回到正脸;在用户头部转动过程中,不断地捕获不同角度的深度图,根据实时计算得到的用户头部姿态,将深度图融合到当前已累积建立好的局部三维模型中。

进一步地,实时渲染累积建立的所述局部三维模型还包括:实时地渲染当前累积建立好的局部三维模型数据;获取所述局部三维模型数据的平面渲染图像;将所述平面渲染图像叠加绘制到当前深度摄像头捕获到彩色图像上。

为了实现上述目的,根据本申请的另一方面,提供了一种用于交互的图像处理装置。

根据本申请的用于交互的图像处理装置包括:跟踪模块,用于实时计算用户头部转动角度;交互模块,向用户发出交互指令引导用户调整头部转动姿态并生成局部三维模型;以及渲染模块,用于实时渲染累积建立的所述局部三维模型。

进一步地,所述跟踪模块包括:配准单元,将深度摄像头捕获到的最新深度图与当前累积建立好的局部三维模型配准,计算出用户当前头部姿态,从姿态中提取用户当前头部角度。

进一步地,所述交互模块包括:交互提示单元,用于在用户头部转动姿态达到预设角度时,播放语音提示用户向左转头部、向右转头部或者转回到正脸,在用户头部转动过程中不断捕获不同角度的深度图,根据跟踪模块实时计算得到头部姿态,将深度图融合到当前累积建立好的局部三维模型中。

进一步地,所述渲染模块包括:实时渲染单元,用于实时地渲染当前累积建立好的局部三维模型数据;获取单元,用于得到所述局部三维模型数据的平面渲染图像;叠加单元,用于将所述平面渲染图像叠加绘制到当前深度摄像头捕获到彩色图像上。

根据本申请的另一方面,提供了一种用于交互的图像处理装置,包括:深度摄像头和智能终端,通过在所述智能终端预先安装图像处理应用程序,所述深度摄像头前置安装于所述智能终端,所述装置用于在用户面向所述深度摄像头向左右转头时通过所述图像处理应用程序调深度摄像头用当前图像帧中的深度图和彩色图像;所述装置还用于实时跟踪用户转头动作的姿态、实时渲染累积建立的局部三维模型,所述图像处理应用程序在预设角度提示用户向左右转头或转回到正脸。

在本申请实施例中,采用深度摄像头实时跟踪用户头部转动姿态的方式,通过交互指令调整所述用户头部转动姿态并生成局部三维模型,达到了实时渲染累积建立的所述局部三维模型的目的,从而实现了通过人机交互快速、实时扫描人脸图像三维建模的技术效果,进而解决了便携性较差的技术问题。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的交互式人脸三维建模方法示意图;

图2是根据本申请实施例的交互式人脸三维建模装置示意图;

图3是根据本申请一优选实施例的交互式人脸三维建模装置示意图;

图4是根据本申请实施例的外置深度摄像头+独立计算设备+独立显示设备的结构之一示意图;

图5是根据本申请实施例的智能手机+外置深度摄像头的结构之一示意图;

图6是根据本申请实施例的内部集成深度摄像头的智能手机的结构之一示意图;

图7是根据本申请实施例的使用外置深度摄像头安装在智能手机上示意图;

图8是根据本申请实施例的前置摄像头中集成了深度传感器的智能手机示意图;

图9(a)是根据本申请实施例的扫描时主界面示意图;

图9(b)是根据本申请实施例的扫描前用户头部姿态不满足要求,开始按钮会被禁用示意图;

图10是根据本申请实施例的手持手机自拍示意图;

图11是根据本申请实施例的手机固定,配合转椅等类似旋转平台进行建模示意图;

图12是根据本申请实施例的实时反馈示意图;

图13是根据本申请实施例的扫描前预览时的流程示意图;

图14是根据本申请实施例的扫描时的处理流程示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。

并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。

此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

本申请中的tof,飞行时间(英文全称:timeofflight)是一种用于测量景深数据的传感器的核心技术,其原理是该传感器投射特定的光波到场景中,计算光波从发射到被物体表面反射回来被传感器接收所消耗的时间,从而进一步计算出传感器到物体表面的距离。

本申请中的结构光:与tof类似的另一种测量景深数据的传感器技术,其原理是该传感器发射具有特定结构的光斑到场景中,被物体表面反射回来后由传感器接收到,通过三角测量来测算传感器到物体表面的距离。

本申请中的深度传感:基于结构光、tof或其他类似的测量技术,获取传感器到场景中所有物体的深度距离的一类技术。

本申请中的rgb-d:是对常见的深度摄像头方案捕获到的数据的描述,通常该方案会同步地捕获两种数据一种是rgb彩色图像,即rgb;另一种是深度图或成为深度图像,即d,深度图通常也是一张二维图片,其中每个像素代表的是深度传感器测量到的真实物体表面某点或某区域到该传感器的距离,因而整张深度图反映的是摄像头观察到的场景的深度信息,该信息可用于三维测量和三维建模。这两种数据组合起来简称rgb-d数据,对应的摄像头组合称为rgb-d摄像头。

如图1所示,该方法包括如下的步骤s102至步骤s106:

步骤s102,基于深度摄像头捕获的深度图实时计算用户头部转动角度;

在此步骤中还包括预览步骤,通过在深度摄像头不断接收到彩色图像帧和深度图帧,可以基于人脸识别技术例如,开源库opencv中的人脸识别算法等可检测到彩色图像中是否存在人脸,且可以获取人脸框大小,用于判断人脸框是否落在取景框内部。

此外,需要注意的是,基于捕获到的深度图,简单计算人脸矩形框中的平均深度值,可以用于判断用户脸部到手机摄像头之间的距离是否合适(例如20cm到50cm范围内算作合适)。

另外,还需要注意的是,同样基于人脸识别算法,可从彩色图片中粗略地计算得到用户头部的姿态,用于判断头部是否端正。若上述条件不满足,则禁用扫描按钮且取景框设置为红色,并相应地提示用户调整手机到脸部的距离或端正头部姿态。相反,若上述条件满足,则取景框变为绿色,且扫描按钮被启用,用户可点击它进入扫描状态。

具体地,深度摄像头实时跟踪用户头部转动姿态之前还包括如下的任一一种多种预操作:判断彩色图像中是否存在人脸;判断人脸框是否落在取景框内部;判断用户脸部到深度摄像头之间的距离是否满足条件;判断用户头部是否端正。

步骤s104,向用户发出交互指令引导用户调整头部转动角度并生成局部三维模型;

当在预览时的条件已经得到满足时,用户可选择点击扫描按钮,进入扫描状态。进入扫描状态,扫描按钮消失并开始播放第一条提示语音,提醒用户先保持姿态3秒钟,这一语音提示并非必须,但有助于新用户熟悉扫描界面、跟上流程的节凑;3秒钟倒数完毕之后,语音提示用户缓慢向左转头,此时系统进入一个循环,不断地读取深度摄像头捕获到的深度图,同时根据每一帧深度图中用户头部转动角度,将深度图融合到当前累积建立好的局部模型中。

具体地,发出交互指令引导用户调整头部转动姿态并生成局部三维模型包括:在用户头部转动姿态达到预设预设角度时,播放语音提示用户向左转头部、向右转头部或者转回到正脸,在用户头部转动过程不断地捕获不同角度的深度图,根据s102实时计算得到的深度图中用户头部姿态,将深度图融合到当前建立好的局部三维模型中。

步骤s106,实时渲染累积建立的所述局部三维模型。

使用当前用户人脸姿态,对累积的三维模型数据进行渲染,得到一张半透明的平面渲染图像,将它叠加到取景框中的人像上,表达当前已经建立好的局部三维模型。

在一些实施例中,实时渲染累积建立的所述局部三维模型包括:实时将人脸区域的深度图与当前累积建立的局部三维模型数据配准;计算用户头部姿态,进一步计算出用户头部的偏转角度,用于更新交互界面上的扫描进度,以及用于判断是否需要发出交互指令。

在一些实施例中,实时渲染累积建立的所述局部三维模型还包括:实时地渲染当前累积建立好的局部三维模型数据;获取所述局部三维模型数据的平面渲染图像;将所述平面渲染图像叠加绘制到当前深度摄像头捕获到彩色图像上。

从以上的描述中,可以看出,本申请实现了如下技术效果:

在本申请实施例中,采用深度摄像头捕获深度图,实时计算用户头部转动角度,通过发出交互指令引导用户调整头部转动角度并生成局部三维模型,达到了实时渲染累积建立的所述局部三维模型的目的,从而实现了通过人机交互快速、实时扫描人脸图像三维建模的技术效果,进而解决了便携性较差的技术问题。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本申请实施例,还提供了一种用于实施上述用于交互的图像处理方法的装置,如图2所示,该装置包括:跟踪模块10,用于实时捕获深度图,并实时计算用户头部转动角度;交互模块20,用于向用户发出交互指令引导用户调整头部转动姿态并生成局部三维模型;以及渲染模块30,用于实时渲染累积建立的所述局部三维模型。

在所述跟踪模块10中获取最新一帧的rgb彩色图像和深度图,彩色图像和深度图在时间上已同步捕获到的,且它们之间已经是被深度摄像头系统配准了的,无需统再进行配准。基于传统的rgb彩色图像人脸识别技术,识别出彩色图像中人脸信息,包括人脸矩形框的大小,若无人脸信息则说明用户脸部没有被捕获到,需要在屏幕上用文本提示无法识别到人脸,然后继续回到获取最新一帧的rgb彩色图像和深度图;若成功识别到人脸,则基于人脸矩形框,在深度图中提取出人脸区域的深度图。将提取好的深度图,转换成相机坐标系内的点云,使用icp算法将其与当前已累积的三维模型配准,得到当前人脸的姿态。这里深度图转为相机坐标系内的点云,是根据已知的相机内参通过简单的矩阵运算得到的。这里提到的当前已累积的三维模型,可以是任何能参与icp计算的数据结构,可以是累积融合的点云,也可以是累积融合好的体素网格,icp配准算法为已知的成熟的点云配准算法;这里所指的计算得到的当前头部姿态,是指当前用户头部相对于扫描刚开始时第一帧中用户头部的姿态,按照传统做法这种姿态可用一个旋转矩阵加上一个平移向量来表达,可以从该旋转矩阵中提取出用户当前头部的偏转角度。

交互模块20中判断当前偏转角度是否已达到最左侧预设值,若是,则播放语音提示用户开始缓慢向右转头,用户听到语音后需按照此提示慢慢向右转头。

交互模块20中判断当前偏转角度是否已达到最右侧预设值,若是,则播放语音提示用户开始缓慢转向正脸正对深度摄像头的状态;此时用户需根据此语音提示慢慢地转回到正脸正对深度摄像。

交互模块20中判断当前用户头部姿态是否已回到正中间,若是则结束扫描,并跳转到新界面,渲染扫描获得的三维模型;否则继续判断当前偏转角度是否已回到正中间;这里判断用户头部姿态是否已回到正中间的做法是,先判断用户头部偏转角是否已经达到过最左侧预设值和最右侧预设值,然后再判断当前用户头部偏转角是否接近0度,若均为是,则认为用户头部已经回到正脸面对手机屏幕,扫描流程可以结束。

交互模块20中根据当前头部姿态将深度图融合到当前累积建立的局部三维模型中,随着用户头部不断地转动,系统接收到不同角度的深度图,经过跟踪模块10计算头部姿态,由交互模块20按照姿态将深度图融合到局部三维模型,达到逐步填充完善局部三维模型的效果。

渲染模块30中根据当前用户头部角度,将跟踪模块10中提取好的深度图,融合到当前已累积建立好的三维模型,使得此三维模型得到更新;这里的融合,是指将深度图从相机的成像平面,用相机内参将其转换到相机坐标系下,形成相机坐标系内的点云,再根据用户当前头部姿态,转换到真实世界坐标系中,按照特定的算法将其与世界坐标系中已有的三维模型数据进行融合;若该帧为扫描开始后的第一帧,则当前世界坐标系中还没有累积的三维模型数据,就将该帧深度图转换到世界坐标系中的三维数据当作初始累积的三维模型数据。这里的融合操作的实现,取决于累积的三维模型的数据结构,若为点云结构,则可以采用现有的开源库pcl中的点云融合算法,若为体素网格结构,则可以采用tsdf值加权平均融合算法,这些做法都是已知公开的成熟算法。

渲染模块30中根据当前用户人脸姿态计算得到头部绕着y轴偏转的角度。从人脸姿态中提取头部绕着y轴旋转的角度采用的是传统的已知的旋转矩阵到欧拉角的转换方程。使用当前用户人脸姿态,对累积的三维模型数据进行渲染,得到一张半透明的平面渲染图像,将它叠加到取景框中的人像上,表达当前已经建立好的局部三维模型。由于本申请的渲染模块30中执行速度较快,因此可以实时给用户反馈当前建模的进度,实时跟踪头部运动状态。

在一些实施例中,所述交互模块20包括:所述交互模块包括:交互提示单元,从用于在用户头部转动角度达到预设预设角度时,播放语音提示用户向左转头部、向右转头部或者转回到正脸;在用户头部转动过程中不断地捕获不同角度的深度图,并根据跟踪模块实时计算得到的用户头部姿态,将深度图融合到当前累积建立好的局部三维模型中。

在一些实施例中,所述渲染模块10包括:配准单元,用于实时将人脸区域的深度图与当前累积建立的局部三维模型数据配准,实时计算用户头部的姿态,并从姿态中提取用户头部偏转角度。

在一些实施例中,所述渲染模块30包括实时渲染单元,用于实时地渲染当前累积建立好的局部三维模型数据;获取单元,用于得到所述局部三维模型数据的平面渲染图像;叠加单元,用于将所述平面渲染图像叠加绘制到当前深度摄像头捕获到彩色图像上。

作为本实施例中的优选,在本实施例中还提供了用于交互的图像处理装置,包括:深度摄像头和智能终端100,通过在所述智能终端100预先安装图像处理应用程序,所述深度摄像头前置安装于所述智能终端,所述装置用于在用户面向所述深度摄像头向左右转头时通过所述图像处理应用程序调用深度摄像头获取当前图像帧中的深度图和彩色图像;所述装置还用于实时跟踪用户转头动作的姿态、实时渲染累积建立的局部三维模型,所述图像处理应用程序在预设角度提示用户向左右转头或转回到正脸。

本申请的实现原理和操作流程如下:

图4中,外置深度摄像头用于实时地(例如30帧/秒)捕获用户头部的深度图,并传送给计算设备,计算设备接收到的深度图完成用户头部运动姿态评估,适时向用户给出语音或文字提示,并将当前深度图实时融合到当前累积的三维模型,随着用户头部的转动,深度摄像头能捕获到不同角度的深度图,因而能达到不断更新累积的三维模型的效果。最终,用户头部转动的角度范围达到一定程度时(例如向左转到60度,记为-60度,向右转到60度,记为+60度),就能得到完整的脸部三维模型。类似的,图5的系统结构比图4更简洁,智能手机自带的屏幕可以充当显示设备,另一方面智能手机本身也是计算设备,只需要外加一个外置的深度摄像头,与手机相连接,实时地传送深度图给手机,手机实时地计算并给出提示等反馈,就能实现相同的功能。图6所示的系统结构更加精简,由于深度摄像头逐渐小型化,当前有的智能手机内部已经集成了深度摄像头,比如iphonex的前刘海部分。

图7所示对应于图5系统结构的实际安装方案。其中外置的深度摄像头组是由一个集成电路板(封装在外壳内部,图7中没有绘制出来)、一个rgb彩色摄像头、一个红外投射器、至少一个深度传感器(又称红外接收器)、一个与计算设备相连接的接口线组成。其中rgb彩色摄像头不是必须有的,用于捕获彩色图片;红外投射器可高速地向场景中物体投射大量结构光光斑或tof红外光波,经过物体表面反射之后的红外光被深度传感器收集,经过电路板上处理器计算生成一帧深度图,并经由数据线接口传给智能手机,本申请主要内容就说运行于智能手机上的一套软件系统,用于接收经由数据线传来的深度图,实时处理每一帧深度图、向用户给出反馈、生成三维模型。

图8所示对应于图6系统结构的实际安装方案(以配有前刘海的智能手机为例,其他集成了深度传感技术的手机类似)。前刘海部分集成了与图7中类似的外置摄像头,只是相比之下其尺寸更加小,但工作原理基本与图7相同。

以图8的装置为例,本申请的建模系统运行时,其界面大致如9(a)所示。扫描开始前,在该界面中,用户可预览自己的脸部彩色图像,其中头部取景框用于指引用户将头部调整到框内(不一定要求是椭圆框)。头部偏转角指示器是一个圆点构成的序列,初始化时全部为空心,开始扫描后会根据用户头部偏转角度对应地填充为实心圆。底部的开始按钮用于当用户调整好姿态之后,点击以启动进入扫描状态。

本申请在三维建模扫描过程中,支持两种人机交互方式。第一种是最常用也是最简便的,即用户手持手机,保持上半身直立、脖子和头部端正,眼睛正视深度摄像头,如图10所示。

(1)扫描前的预览阶段

要求用户头部必须出现在取景框内,且脸部到手机屏幕的距离在合适的范围内(比如20cm~55cm),且头部端正直立、面部正对着手机屏幕,不过度抬头或低头,也不能过度向左或右偏头,以上条件满足后,取景框才变为绿色且开始按钮才可以点击,否则取景框显示为红色且开始按钮被禁用。当用户在预览时若头部姿态或距离不满足要求,屏幕上会给出相关文字提示,用户需按照提示来调整自己的头部姿态,直到满足上述条件,方可点击开始按钮进入扫描状态。如图9(b),用户头部没有完全放入取景框,取景框为红色,开始按钮被禁用变成灰色,不可点击。

(2)扫描时转头动作

本申请要求在建模扫描时,深度摄像头能够尽可能多地捕获到用户脸部不同角度的深度图,因此提出一种如图10中绕y轴进行转动头部的交互方式,这里的y轴基本与用户端正时脖子的中轴线平行(要求用户在预览阶段调整姿态,保持头部和脖子端正直立);z轴由后脑勺穿过鼻尖垂直指向手机屏幕;x轴垂直于y轴和z轴构成的平面,大致指向用户的左手边的方向。扫描时,用户需要按照如图12所示的转头方式,缓慢地、匀速地进行转动头部。具体来说,当在预览阶段调整好头部姿态后,用户点击开始按钮,进入扫描状态,此时系统播放语音提示用户缓慢向左转动头部,系统会实时跟踪并计算用户头部当前绕y轴转动的角度,该角度值在用户面部正对着手机摄像头时为0度,缓慢向左转动时该角度逐渐递增,若递增到预设的左侧最大角度值(比如左侧60度),则开始播放语音提示用户缓慢向右转动头部,此时该角度逐渐递减,直到脸部再次正对手机摄像头时变为0,然后随着继续缓慢向右转动头部,该角度继续向右增大,当增大到预设的右侧最大角度值(比如右侧60度)时,就开始播放语音提示用户缓慢转回到中间,即正脸正对手机摄像头的状态。

第二种交互方式是用户坐在转椅上,如图11所示。手机固定在支架上,调整好高度和距离,使用户脸部能够正对着手机摄像头且距离合适。与第一种交互方式不同的是,这种方式下不需要用户转动头部,只需要转动转椅即可。其他方面均与第一种方式相同。除了转椅之外,其他可转动的桌子或平台也可以满足上述交互要求。

(3)实时反馈

本申请在扫描时可以实时地跟踪用户头部姿态,用捕获到的深度图更新当前已累积的三维模型,并将姿态和实时累积的三维模型显示到屏幕上,以让用户感知到反馈,为转头动作提供引导信息,降低理解难度。具体来说,一种可能的表现方式如图9(a)所示,偏转角度指示器中一共有五个圆点,将左侧最大角度(例如-60度)到右侧最大角度(例如+60度)的角度范围划分成四等份,每等份为60*2/5=24度,五个圆点从左到右代表的角度等份依次是[-60,-36)、[-36,-12)、[-12,12]、(12,36]、(36,60]。浅色填充的圆点代表用户头部已经转过的那个等份,深色填充的圆点代表当前用户头部偏转角所属的等份,比如图12中第一张小图中的红色圆点表明当前用户头部偏转角落在了[-36,-12)这个等份,例如-30度。

请参考图13,是扫描前预览时的流程示意图。

预览时的流程

预览阶段,通过不断接收到彩色图像帧和深度图帧,本申请基于人脸识别技术(例如开源库opencv中的人脸识别算法等)可检测到彩色图像中是否存在人脸,且可以获取人脸框大小,用于判断人脸框是否落在取景框内部。另外,基于捕获到的深度图,简单计算人脸矩形框中的平均深度值,可以用于判断用户脸部到手机摄像头之间的距离是否合适(例如20cm到50cm范围内算作合适);另外,同样基于人脸识别算法,可从彩色图片中计算得到用户头部的姿态,用于粗略判断头部是否端正。若上述条件不满足,则禁用扫描按钮且取景框设置为红色,并相应地提示用户调整手机到脸部的距离或端正头部姿态。相反,若上述条件满足,则取景框变为绿色,且扫描按钮被启用,用户可点击它进入扫描状态。该流程如图13所示。

请参考图14,是扫描流程示意图。

(2)扫描时的流程

当在预览时的条件已经得到满足时,用户可选择点击扫描按钮,进入扫描状态。扫描时的流程如图14所示。进入扫描状态,扫描按钮消失并开始播放第一条提示语音,提醒用户先保持姿态3秒钟,这一语音提示并非必须,但有助于新用户熟悉扫描界面、跟上流程的节凑;3秒钟倒数完毕之后,语音提示用户缓慢向左转头,此时系统进入一个循环,不断地读取深度摄像头捕获到的深度图帧并执行以下步骤:

1.获取最新一帧的rgb彩色图像和深度图,彩色图像和深度图在时间上已同步捕获到的,且它们之间已经是被深度摄像头系统配准了的,无需本系统再进行配准;

2.基于传统的rgb彩色图像人脸识别技术,识别出彩色图像中人脸信息,包括人脸矩形框的大小,若无人脸信息则说明用户脸部没有被捕获到,需要在屏幕上用文本提示无法识别到人脸,然后继续回到第1步;若成功识别到人脸,则基于人脸矩形框,在深度图中提取出人脸区域的深度图,并继续下一步;

3.将提取好的深度图,转换成相机坐标系内的点云,使用icp算法将其与当前已累积的三维模型配准,得到当前人脸的姿态。这里深度图转为相机坐标系内的点云,是根据已知的相机内参通过简单的矩阵运算得到的。这里提到的当前已累积的三维模型,可以是任何能参与icp计算的数据结构,可以是累积融合的点云,也可以是累积融合好的体素网格,icp配准算法为已知的成熟的点云配准算法;这里所指的计算得到的当前人脸姿态,是指当前用户头部相对于扫描刚开始时第一帧中用户头部的姿态,按照传统做法这种姿态可用一个旋转矩阵加上一个平移向量来表达。

4.根据当前用户头部姿态,将第2步提取好的深度图,融合到当前已累积建立好的三维模型,使得此三维模型得到更新;这里的融合,是指将深度图从相机的成像平面,用内参将其转换到相机坐标系下,形成相机坐标系内的点云,再根据用户当前头部姿态,转换到真实世界坐标系中,按照特定的算法将其与世界坐标系中已有的三维模型数据进行融合;若该帧为扫描开始后的第一帧,则当前世界坐标系中还没有累积的三维模型数据,就将该帧深度图转换到世界坐标系中的三维数据当作当前累积的三维模型数据。这里的融合操作的实现,取决于累积的三维模型的数据结构,若为点云结构,则可以采用现有的开源库pcl中的点云融合算法,若为体素网格结构,则可以采用tsdf值加权平均融合算法,这些做法都是已知公开的成熟算法。

5.根据当前用户人脸姿态计算得到头部绕着y轴偏转的角度;这里的y轴指的是如图10所示的y轴;从人脸姿态中提取头部绕着y轴旋转的角度采用的是传统的已知的旋转矩阵到欧拉角的转换方程。使用该角度的值,去更新软件界面上的头部偏转角范围指示器,见图9(a)和图12;使用当前用户人脸姿态,对累积的三维模型数据进行渲染,得到一张半透明的平面渲染图像,将它叠加到取景框中的人像上,表达当前已经建立好的局部三维模型;由于本申请中这一步执行速度较快,因此可以实时给用户反馈当前建模的进度,实时跟踪头部运动状态;

6.判断当前偏转角度是否已达到最左侧预设值(比如左侧60度),若是,则播放语音提示用户开始缓慢向右转头,用户听到语音后需按照此提示慢慢向右转头;进入下一步;

7.判断当前偏转角度是否已达到最右侧预设值(比如右侧60度),若是,则播放语音提示用户开始缓慢转向正脸正对手机摄像头的状态;此时用户需根据此语音提示慢慢地转回到正脸正对手机;进入下一步;

8.判断当前用户头部姿态是否已回到正中间,若是则结束扫描,并跳转到新界面,渲染扫描获得的三维模型;否则继续回到第1步;这里判断用户头部姿态是否已回到正中间的做法是,先判断用户头部偏转角是否已经达到过最左侧预设值和最优侧预设值,然后再判断当前用户头部偏转角是否接近0度,若均为是,则认为用户头部已经回到正脸面对手机屏幕,扫描流程可以结束。

显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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