使用媒体数据的对象重构的制作方法
未命名
09-24
阅读:40
评论:0
1.本公开总体上涉及用于基于单个视频构建三维(3d)模型的系统和技术。
背景技术:
2.许多设备和系统允许通过生成场景的帧(也称为图像)和/或视频数据(包括多个图像或帧)来捕获场景。例如,相机或包括相机的计算设备(例如,诸如包括一个或多个相机的移动电话或智能电话的移动设备)可以捕获场景的帧序列。帧和/或视频数据可以由这样的设备和系统(例如,移动设备、ip相机等)捕获和处理,并且可以输出以供消费(例如,显示在该设备和/或其他设备上)。在一些情况下,帧和/或视频数据可以由这样的设备和系统捕获并输出以供其他设备处理和/或消费。
3.可以处理帧(例如,使用对象检测、识别、分割等)以确定帧中存在的对象,这对于许多应用是有用的。例如,模型可以被确定以用于表示帧中的对象,并且可以用于促进各种系统的有效操作。这样的应用和系统的示例包括增强现实(ar)、机器人技术、汽车和航空、三维场景理解、对象抓取、对象跟踪,以及许多其他应用和系统。
技术实现要素:
4.在一些示例中,本文描述了用于生成一个或多个模型的系统和技术。根据至少一个示例,一种用于生成一个或多个模型的过程包括:基于描绘对象的一个或多个帧生成对象的第一部分的三维(3d)模型;为一个或多个帧生成掩蔽(mask),该掩蔽包括对象的一个或多个区域的指示;基于对象的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示对象的第一部分和对象的第二部分;以及基于掩蔽和3d基础模型生成对象的第二部分的3d模型。
5.在另一示例中,提供了一种用于生成一个或多个模型的装置,其包括存储器(例如,被配置为存储数据,诸如虚拟内容数据、一个或多个图像等)和耦合到存储器的一个或多个处理器(例如,在电路中实现)。一个或多个处理器被配置为并且能够:基于描绘对象的一个或多个帧生成对象的第一部分的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括对象的一个或多个区域的指示;基于对象的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示对象的第一部分和对象的第二部分;以及基于掩蔽和3d基础模型生成对象的第二部分的3d模型。
6.在另一示例中,提供了一种非暂时性计算机可读介质,其上存储有指令,指令在由一个或多个处理器执行时,使一个或多个处理器:基于描绘对象的一个或多个帧生成对象的第一部分的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括对象的一个或多个区域的指示;基于对象的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示对象的第一部分和对象的第二部分;以及基于掩蔽和3d基础模型生成对象的第二部分的3d模型。
7.在另一示例中,提供了一种用于生成一个或多个模型的装置。该装置包括:用于基于描绘对象的一个或多个帧来生成对象的第一部分的三维(3d)模型的部件;用于为一个或
多个帧生成掩蔽的部件,该掩蔽包括对象的一个或多个区域的指示;用于基于对象的第一部分的3d模型和掩蔽生成3d基础模型的部件,3d基础模型表示对象的第一部分和对象的第二部分;以及用于基于掩蔽和3d基础模型生成对象的第二部分的3d模型的部件。
8.在一些方面,第二部分的3d模型对应于作为对象的一部分的项目。例如,在一些方面,对象是人,对象的第一部分对应于人的头部,对象的第二部分对应于人的头部上的头发。
9.在一些方面,第二部分的3d模型对应于与对象可分离和相对于对象可移动中的至少一个的项目。例如,在一些方面,对象是人,对象的第一部分对应于人的身体区域,对象的第二部分对应于人穿戴的配饰或衣服。
10.在一些方面,对象的第二部分的3d模型邻接对象的第一部分的3d模型的至少一部分。在一些方面,对象的第二部分的3d模型不与对象的第一部分的3d模型可见地冲突。
11.在一些方面,该过程、装置和非暂时性计算机可读介质包括从帧序列中选择一个或多个帧作为关键帧,其中每个关键帧以不同的角度描绘对象。
12.在一些方面,该过程、装置和非暂时性计算机可读介质包括:确定第一关键帧不满足质量阈值;输出反馈以促进将对象定位为对应于第一关键帧,基于反馈捕获至少一个帧;以及将来自至少一个帧中的帧插入关键帧。
13.在一些方面,该过程、装置和非暂时性计算机可读介质包括:针对沿轴选择的第一角度,从对象的第一部分的3d模型生成第一位图;至少部分地通过将第一位图与帧序列的参考帧进行比较来生成第一度量;基于比较的结果选择第一关键帧。
14.在一些方面,将第一位图与参考帧进行比较包括在第一位图和参考帧的位图的并集上执行交集。
15.在一些方面,该过程、装置和非暂时性计算机可读介质包括:至少部分地通过将参考帧与帧序列的第二帧的位图进行比较来生成第二度量;以及基于第二度量选择第二帧作为第一关键帧。
16.在一些方面,该过程、装置和非暂时性计算机可读介质包括:将一个或多个帧中的每个帧分割成一个或多个区域;以及为一个或多个帧中的每个帧生成掩蔽,其中每个帧的掩蔽包括一个或多个区域的指示。
17.在一些方面,该过程、装置和非暂时性计算机可读介质包括:基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关联的掩蔽;确定第一部分的3d模型的每个顶点是否位于与该帧相关联的掩蔽的第一区域内;以及基于第一部分的3d模型的顶点在与该帧相关联的掩蔽的第一区域内来提取3d基础模型。
18.在一些方面,对象是人并且第一区域对应于人的面部区域和人的头发区域。
19.在一些方面,对象是人并且第一区域对应于人的身体区域和人穿戴的服装区域。
20.在一些方面,该过程、装置和非暂时性计算机可读介质包括基于一个或多个顶点中的每个顶点在来自一个或多个帧中的帧的一个或多个区域中的区域内的概率,从3d基础模型中去除一个或多个顶点。
21.在一些方面,一个或多个帧中的每个帧的掩蔽包括标识第一区域的第一掩蔽和标识第二区域的第二掩蔽。
22.在一些方面,第一区域是面部区域并且第二区域是头发区域。
23.在一些方面,该过程、装置和非暂时性计算机可读介质包括:将3d基础模型的每个顶点的值初始化为初始值,其中初始值指示对应的顶点被设置在第一区域内;将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中;确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽;基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。在一些方面,当第一顶点被投射到第二区域上时第一顶点的值增加,并且当第一顶点被投射到第一区域上时第一顶点的值减小。在一些方面,过程、装置和非暂时性计算机可读介质包括:基于每个顶点的值来确定平均概率,其中顶点对应于对象的第一部分的3d模型的概率基于顶点的值与平均概率的比较。
24.在一些方面,该过程、装置和非暂时性计算机可读介质包括使用第一部分的3d模型和第二部分的3d模型在应用中生成动画(animation),其中对象包括人,第一部分的3d模型对应于人的头部,第二部分的3d模型对应于人的头发。
25.在一些方面,应用包括发送和接收音频和文本中的至少一个的功能。
26.在一些方面,第一部分的3d模型和第二部分的3d模型描绘应用的用户。
27.在一些方面,该过程、装置和非暂时性计算机可读介质包括:接收对应于选择用于修改第二部分的3d模型的至少一个图形控件的输入;基于接收的输入修改第二部分的3d模型。
28.在一些方面,一个或多个帧与对象沿第一轴的旋转相关联。在一些方面,一个或多个帧与对象沿第二轴的旋转相关联。在一些方面,第一轴对应于偏航轴并且第二轴对应于俯仰轴。
29.根据至少一个其他示例,提供了一种用于生成一个或多个模型的过程。该过程包括:基于描绘人的一个或多个帧生成人的头部的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括人的一个或多个区域的指示;基于人的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示人的头部和人的头发;以及基于掩蔽和3d基础模型生成人的头发的3d模型。
30.在另一示例中,提供了一种用于生成一个或多个模型的装置,其包括存储器(例如,被配置为存储数据,诸如虚拟内容数据、一个或多个图像等)和耦合到存储器的一个或多个处理器(例如,在电路中实现)。一个或多个处理器被配置为并且能够:基于描绘人的一个或多个帧生成人的头部的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括人的一个或多个区域的指示;基于人的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示人的头部和人的头发;并且基于掩蔽和3d基础模型,生成人的头发的3d模型。
31.在另一示例中,提供了一种非暂时性计算机可读介质,其上存储有指令,指令在由一个或多个处理器执行时,使一个或多个处理器:基于描绘人的一个或多个帧生成人的头部的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括人的一个或多个区域的指示;基于人的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示人的头部和人的头发;以及基于掩蔽和3d基础模型生成人的头发的3d模型。
32.在另一示例中,提供了一种用于生成一个或多个模型的装置。该装置包括:用于基于描绘人的一个或多个帧生成人的头部的三维(3d)模型的部件;用于为一个或多个帧生成掩蔽的部件,该掩蔽包括人的一个或多个区域的指示;用于基于人的第一部分的3d模型和掩蔽生成3d基础模型的部件,该3d基础模型表示人的头部和人的头发;以及用于基于掩蔽
和3d基础模型生成人的头发的3d模型的部件。
33.在一些方面,该过程、装置和非暂时性计算机可读介质包括从帧序列中选择一个或多个帧作为关键帧,其中每个关键帧以不同的角度描绘人。
34.在一些方面,该过程、装置和非暂时性计算机可读介质包括:确定第一关键帧不满足质量阈值;输出反馈以促进将人定位为对应于第一关键帧;基于反馈捕获至少一个帧;以及将来自至少一个帧中的帧插入关键帧。
35.在一些方面,为一个或多个帧生成掩蔽包括将一个或多个帧中的每个帧分割成一个或多个区域;以及为一个或多个帧中的每个帧生成掩蔽,其中每个帧的掩蔽包括一个或多个区域的指示。
36.在一些方面,该过程、装置和非暂时性计算机可读介质包括:基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关联的掩蔽;确定头部的3d模型的每个顶点是否位于与帧相关联的掩蔽的头部区域内;以及基于头部的3d模型的顶点在与帧相关联的掩蔽的头部区域内来提取3d基础模型。
37.在一些方面,该过程、装置和非暂时性计算机可读介质包括基于一个或多个顶点中的每个顶点在头部区域之外的概率,从3d基础模型中去除一个或多个顶点。
38.在一些方面,人的头发的3d模型不与人的头部的3d模型可见地冲突。
39.在一些方面,生成人的头发的3d模型包括:将3d基础模型的每个顶点的值初始化为初始值,其中初始值指示对应的顶点位于头发区域内;将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中;确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽,其中第一掩蔽对应于面部区域,第二掩蔽对应于头发区域;以及基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。
40.在一些方面,当第一顶点被投射到第二掩蔽(对应于头发区域)上时,第一顶点的值增加。在一些方面,当第一顶点被投射到第一掩蔽(对应于面部区域)上时,第一顶点的值减小。
41.在一些方面,该过程、装置和非暂时性计算机可读介质包括基于每个顶点的值确定平均概率,其中顶点对应于头发的3d模型的概率基于顶点的值与平均概率的比较。
42.在一些方面,上述装置中的一个或多个是车辆(例如,车辆的计算设备)、移动设备(例如,移动电话或所谓的“智能电话”或其他移动设备)、可穿戴设备、扩展现实设备(例如,虚拟现实(vr)设备、增强现实(ar)设备或混合现实(mr)设备)、个人计算机、膝上型计算机、服务器计算机或其他设备,或是其一部分。在一些方面,装置包括用于捕获一个或多个图像的相机或多个相机。在一些方面,装置还包括用于显示一个或多个图像、通知和/或其他可显示数据的显示器。在一些方面,装置可以包括一个或多个传感器,其可以用于确定装置的位置和/或姿势、装置的状态和/或用于其他目的。
43.该发明内容不旨在标识要求保护的主题的关键或必要特征,也不旨在单独使用以确定要求保护的主题的范围。应当通过参考本专利的整个说明书的适当部分、任何或所有附图以及每项权利要求来理解主题。
44.参考以下说明书、权利要求和附图,上述内容连同其他特征和实施例将变得更加明显。
附图说明
45.下面参考附图对本技术的示例性实施例进行详细描述:
46.图1图示了与对象的第二部分的3d模型冲突的对象的第一部分的3d模型的示例;
47.图2是图示根据一些示例的可以从单个红-绿-蓝(rgb)图像执行详细的三维(3d)面部重构的系统的示例的示意图;
48.图3图示了根据一些示例由关键帧选择器从帧序列中选择的三个示例关键帧;
49.图4a是图示根据一些示例的用于基于三维形变模型(3dmm)技术执行对象重构的过程的示例的示意图;
50.图4b是图示根据一些示例的对象的3d形变模型(3dmm)的示例的示意图;
51.图5是图示根据一些示例的用于从对象的帧序列中选择关键帧的过程的示例的流程图;
52.图6a图示了根据一些示例的图3的关键帧的一部分的对象分析的结果;
53.图6b图示了根据一些示例的可以从图3的关键帧的对象分析结果生成的不同对象解析掩蔽;
54.图7是图示根据一些示例的用于生成对应于对象的第一区域和对象的第二区域的3d基础模型的过程的示例的流程图;
55.图8a是图示根据一些示例的将用于创建3d基础模型的对象解析掩蔽的创建的示意图;
56.图8b是图示根据一些示例的包括3d模型的3d场景的示例的示意图,该3d模型可以被投射到二维(2d)坐标系中以用于与对象解析掩蔽进行比较;
57.图8c是图示根据一些示例的对应于对象的第一区域和对象的第二区域的3d基础模型的示例的示意图;
58.图8d是图示根据一些示例的在后处理之后的8c的示例3d基础模型的示意图;
59.图9是图示根据一些示例的用于使用3d基础模型为第二对象生成3d模型的过程的示例的流程图;
60.图10是图示根据一些示例的可以从3d基础模型为第二对象生成3d模型的示例模型提取器的示意图;
61.图11图示了根据一些示例的使用3d基础模型生成的第二区域的3d模型;
62.图12是图示根据一些示例的用于生成一个或多个模型的过程的示例的流程图;
63.图13是图示根据一些示例的用于生成一个或多个模型的过程的另一示例的流程图;以及
64.图14是图示用于实现本技术的某些方面的系统的示例的示意图。
具体实施方式
65.下面提供了本公开的某些方面和实施例。这些方面和实施例中的一些可以独立应用并且它们中的一些可以组合应用,这对本领域技术人员来说是显而易见的。在下面的描述中,出于解释的目的,阐述了具体细节以便提供对本技术的实施例的透彻理解。然而,很明显,可以在没有这些具体细节的情况下实践各种实施例。附图和描述并非旨在限制性的。
66.随后的描述仅提供示例性实施例,而不旨在限制本公开的范围、适用性或配置。而
是,示例性实施例的后续描述将为本领域技术人员提供实现示例性实施例的使能描述。应当理解,在不脱离如所附权利要求中阐述的本技术的精神和范围的情况下,可以对元素的功能和布置进行各种改变。
67.物理对象的三维(3d)模型的生成可用于许多系统和应用,诸如用于扩展现实(xr)(例如,包括增强现实(ar)、虚拟现实(vr)、混合现实(mr)等)、机器人、汽车、航空、3d场景理解、对象抓取、对象跟踪,以及许多其他系统和应用。例如,在ar环境中,用户可以查看包括人工或虚拟图形与用户自然环境的集成的图像(也称为帧)。ar应用允许对真实图像进行处理,以将虚拟对象添加到图像,并将虚拟对象在多个维度上对齐或配准到图像。例如,现实中存在的真实世界对象可以使用与真实世界对象相似或完全匹配的模型来表示。在一个示例中,表示处在跑道上的真实飞机的虚拟飞机模型可以被展现在ar设备(例如,ar眼镜、ar头戴式显示器(hmd)或其他设备)的视图中,同时用户继续在ar环境中查看他或她的自然环境。观看者可能能够在观看真实世界场景的同时操纵模型。在另一个示例中,可以标识处于桌子上的实际对象并在ar环境中使用具有不同颜色或不同物理属性的模型进行呈现。在一些情况下,现实中不存在的人造虚拟对象或用户自然环境的实际对象或结构的计算机生成副本也可以添加到ar环境中。
68.越来越多的应用使用面部数据(例如,用于xr系统、用于3d图形、用于安全等),导致对能够以高效和高质量的方式生成详细3d面部模型(以及其他对象的3d模型)的系统的大量需求。还存在对生成其他类型对象的3d模型的大量需求,诸如车辆的3d模型(例如,用于自动驾驶系统)、房间布局的3d模型(例如,用于xr应用、设备导航、机器人等),等等。
69.生成对象的详细3d模型(例如,3d面部模型)通常需要昂贵的设备和在具有受控照明的环境中的多个相机,这阻碍了大规模数据收集过程,并且可能需要多个3d模型来重新创建不同的方面。面部是可以为其生成3d模型的对象的示例,其针对不同的方面需要不同的模型。例如,一个人的头发可能需要单独建模,因为头发的移动是非刚性的并且可以独立于面部运动。在另一个示例中,可能需要对人的衣服(例如,连衣裙、外套等)进行不同的建模,因为衣服的材料和几何属性的变化可能与动画(animate)对象不同。动画对象的其他方面也可以单独建模,因为对象的一个或多个特征的移动通常可以独立于其他特征(例如,大象的鼻子、狗的尾巴、狮子的鬃毛)。在一些示例中,无动画(inanimate)对象(例如,树、车辆、建筑物、环境或场景等)可能需要包括描绘大体静态方面(例如,树干和主要分支)的模型和描绘动态方面(例如,树枝和树叶、车辆的不同部分、建筑物的不同部分、环境或场景的不同部分等)的另一个模型。
70.从一个或多个图像(例如,单个视频)执行3d对象重构(例如,以生成对象的3d模型,诸如面部模型和头发模型)可能具有挑战性。例如,基于涉及几何形状、反照率纹理和照射估计的重构,3d对象重构可能是困难的。3d对象重构可能不会反映与对象关联的其他方面。在一个说明性示例中,头部的形状在头部移动(例如,刚性移动)期间通常不改变。然而,与头部相关联的头发的形状可能在头部移动期间改变(例如,非刚性移动)。因为头发和头部的移动不同,所以人的头发可以与人的头部分开建模。
71.头发有不同类型的3d模型,诸如偏导数方程(pde)模型、数据驱动和变形模型、使用深度学习模型(例如,一个或多个神经网络,诸如深度神经网络、生成对抗网络、卷积神经网络等)生成的3d模型等。但是,使用此类3d模型可能会出现问题。
72.例如,pde模型使用至少一个帧来估计3d头发模型的深度(例如,体积)。包括人的半身像(例如,人的头部区域和头发区域)的帧被用作初始条件并且基于半身模型估计头发的深度。可以实施面部解析算法以将不同区域分割成对应于体积的深度。深度被分成不同的分段(例如,区域),并且必须在pde模型中加强不同分段之间深度的平滑度。使用单帧创建pde模型时,头发区域和面部区域要么过分割,要么欠分割,导致头发区域和面部区域的边界不准确。在基于多帧确定pde模型的情况下,照明条件和快速运动会显著影响和限制pde模型的视觉保真度。具体地,需要基于光度信息(例如,rgb)在帧之间建立帧之间的对应关系(例如,参考)。然而,多个帧之间的光度一致性取决于理想的照明条件,这无法保证。此外,当主体移动时,头发会非刚性地移动,标识不同帧中非刚性内容之间的对应关系具有挑战性。
73.在驱动和变形模型中,艺术家创建各种发型的不同3d表示,并且人(例如,应用的用户)为应用中的头部选择合适的3d发型。在这种类型的头发模型中,3d头发模型的质量主要基于源形状(例如,创建的3d发型)和目标形状(例如,帧中人的头发)之间的相似性。例如,如果一个人正在从二维(2d)参考帧基于该人的头部构建3d模型,则该人必须搜索与在2d参考帧中的发型相似的3d发型模型。搜索发型可能具有挑战性,因为无法表示每种发型,并且很难基于描述和分类确定理想的发型。此外,任何已标识的3d发型都不会与2d参考帧中的发型精确匹配。人可以在应用中对3d发型进行变形以匹配3d帧,但变形会产生意想不到的拟合问题。因此,当3d发型与2d参考帧中的发型之间存在高度相关性时,3d头发模型的质量是可以接受的。
74.基于深度学习的方法从帧中提取头发的2d方位和从帧中提取方位的置信度。然后将半身模型拟合到(多个)帧上以创建拟合的深度图。方位、置信度和深度图用作机器学习网络的输入以创建3d头发模型,该模型通常具有占用字段和方位字段的输出。占用字段决定3d空间的体素是否属于头发,方位字段确定如果当前体素属于头发时当前体素的3d方位(例如,方向)。3d头发模型是通过结合占用字段和方位字段来构建的。占用字段决定在哪里长头发,方位字段决定生长方向(例如,一组头发体素)。然而,深度学习3d头发模型并不准确,因为深度学习过程并非基于真实的头发数据集。此外,没有检测深度学习3d头发模型和3d头部模型之间的冲突的过程,冲突会产生不希望的视觉伪影(例如,诸如头骨与头发重叠等冲突)。
75.此外,在对对象的不同部分进行建模的当前技术中,诸如人的头部的模型和人的头发的不同模型,得到的3d模型(例如,头部模型和头发模型)单独生成并且未在3d坐标系中对齐。在传统方法中,可以实现用户界面来定位和定向3d头部模型和3d头发模型以创建完整的3d头部模型。3d头发模型控制或影响头部3d模型的颅骨区域。在一些情况下,3d头部模型的颅骨区域可能与人的头部不同。当将3d头部模型和3d头发模型光栅化(rasterize)为2d帧以供显示时(例如,从3d向量和纹理表示转换为2d像素位图),3d头部模型和3d头发模型可能会发生冲突。当两个固体对象占据同一空间时,会在3d几何图形中发生冲突,这在现实世界中是不可能发生的。因此,3d空间中的冲突会产生不希望的视觉伪影。
76.图1图示了包括在3d坐标系中冲突的头部模型105和头发模型110的3d模型100。在说明性示例中,头发模型110和头部模型105使用现有技术来定位。因此,头发模型110与头部模型105的拟合(例如,定位和对齐)不能控制头部模型105的颅骨区域的形状如何影响头
发模型110。在这种情况下,当头部模型105和头发模型110从3d坐标系转换成2d帧(例如,光栅化、呈现等)时,头部模型105在视觉上看起来重叠并且在头发模型110之外。
77.为了解决这个问题,应用(例如,显示人的化身的应用)的设计者可以创建将3d头发模型与3d头部模型对齐的功能。此外,化身可能会在应用中移动并导致3d头发模型与化身发生冲突,从而产生不希望的视觉伪影。在这种情况下,设计者还需要创建冲突检测过程来检测3d模型的冲突。设计者还需要应用冲突解决过程来确定如何显示3d模型而不产生不希望的视觉伪影。
78.本文描述了用于从视频(例如,包括帧序列的rgb视频)或从多个图像生成对象的特定部分的3d模型的系统、装置、过程(或方法)以及计算机可读介质(统称为“系统和技术”)。在一些示例中,如下文更详细描述的,系统和技术可以基于描绘对象的一个或多个帧生成对象的第一部分的3d模型(例如,人的头部的3d模型)。系统和技术可以为一个或多个帧生成掩蔽。在一些示例中,掩蔽可以包括对象的一个或多个区域的指示。系统和技术还可以基于对象的第一部分的3d模型和掩蔽生成3d基础模型。在一些情况下,3d基础模型描绘对象的第一部分和对象的第二部分。系统和技术可以基于掩蔽和3d基础模型生成对象的第二部分的3d模型(例如,人的头发的3d模型)。
79.系统和技术还可以自动对齐第一部分的3d模型和第二部分的3d模型。在一些示例中,因为对象的第二部分的3d模型是基于去除与对象的第一部分相关联的内容而创建的,所以第二部分的3d模型邻接(例如,对齐)第一部分的3d模型的至少一部分。在一个说明性示例中,系统和技术可用于生成人的面部的3d模型和人的头发的3d模型。由于头发的3d模型独立于头部的3d模型创建,因此头发的3d模型可以应用于不同的发型(例如,重新创建不同的发型)。此外,因为与常规过程相比,可以用更少的要求或约束来提取头发的3d模型,因此可以对许多不同发型进行建模。在一些示例中,不同的发型可以用于深度学习过程以改进例如用于使用机器学习技术创建与头发相关的内容的生成对抗网络(gan)。
80.除其他好处外,本文描述的系统和技术可以解决3d模型重构技术当前存在的问题(例如,与基本项、复杂性等相关联的缺陷)。例如,系统和技术可以使用单个视频来创建对象的第一部分的3d模型。系统和技术还可以实现一种新颖的算法,以从单个视频中选择帧,并在诸如面部解析掩蔽的对象解析掩蔽(例如,指示对应于对象的特征的位图区域)的指导下创建3d基础模型,以及去除3d基础模型的部分以创建第二部分的3d模型。在对象解析掩蔽的指导下,可以标识并去除第二部分的3d模型中的不期望内容。
81.为了说明的目的,本文将使用头部和头发作为对象的部分的说明性示例。然而,普通技术人员将理解,可以针对任何类型的对象和在一个或多个帧中捕获的这样的对象的任何部分来执行本文描述的系统和技术。在一个说明性示例中,可以应用类似的系统和技术来生成人的身体的第一模型,以及生成人穿戴的项目(例如,外套、帽子等)的第二模型。在另一说明性示例中,可以应用类似的系统和技术来生成车辆或由车辆的一个或多个传感器观察到的场景的第一部分的第一模型,以及生成车辆或由车辆的一个或多个传感器观察到的场景的第二部分的第二模型。在一些示例中,系统和技术可以应用于诸如衣服、配饰、织物等非刚性对象的变形。
82.图2是图示可以使用至少一个帧(例如,帧序列)生成一个或多个模型的系统200的示例的示意图。如图2所示,所提出的系统200包括3d对象建模器205、关键帧选择器210、对
象分析器215、3d基础模型生成器220和模型提取器225。
83.3d对象建模器205可以获得至少一个帧(未示出)。在一些情况下,至少一个帧可以包括帧序列。帧序列可以是视频、一组连续捕获的图像或其他帧序列。在一个说明性示例中,帧序列的每个帧可以包括每像素的红色(r)、绿色(g)和蓝色(b)分量(称为包括rgb帧的rgb视频)。帧的其他示例包括每像素具有亮度、色度-蓝色、色度-红色(yuv、ycbcr或y’cbcr)分量的帧和/或任何其他合适类型的图像。帧序列可以由系统200或另一系统的一个或多个相机捕获、从存储获得、从另一设备(例如,相机或包括相机的设备)接收、或从另一源获得。
84.在一些示例中,帧序列描绘了将被系统200转换成一个或多个3d模型的对象的移动。在一个说明性示例中,帧序列开始于具有头部相对于颈部区域没有旋转(例如0
°
)的中立头部位置的人的正面视图。图3图示了具有中立头部位置的人的正面视图的帧310的示例。帧序列然后可以示出人将他们的头在第一轴(例如,偏航轴)上旋转到他们的右侧到+60
°
的角度以显示他们的面部的左侧面部的透视图。图3还图示了人的头部向他们的右侧旋转+60
°
的人的帧320。人然后可以将他们的头在第一轴上向左侧旋转至-60
°
的角度以显示他们面部右侧的透视图。例如,图3进一步示出了具有旋转-60
°
的人的头部的透视图的帧330。在一些示例中,帧序列可以说明该人还在第二轴(例如,俯仰轴)上旋转他们的头部。
85.3d对象建模器205可以处理来自帧序列的一个或多个帧以生成对象的第一部分的3d模型。在一个说明性示例中,对象的第一部分的3d模型可以是人的头部。在一些示例中,3d对象建模器205可以为帧序列中的每个帧生成人的头部的3d形变模型(3dmm)。使用3dmm拟合生成的3dmm模型是表示对象的3d几何形状和纹理的统计模型。例如,3dmm可以由基本项与形状系数x
shape
、表情(expression)系数x
expression
和纹理系数x
albedo
的线性组合表示,例如如下所示:
86.vertices
3d_coordinate
=x
shape
basis
shape
+x
expression
basis
expression
ꢀꢀꢀ
(1)
87.vertices
color
=color
mean_albedo
+x
albedo
basis
albedo
ꢀꢀꢀꢀꢀ
(2)
88.等式(1)用于确定3dmm模型的每个顶点的位置,等式(2)用于确定3dmm模型的每个顶点的颜色。
89.图4是图示用于基于3dmm技术执行对象重构的过程400的示例的示意图。在操作402处,过程400包括获得输入,包括图像(例如,rgb图像)和地标(例如,面部地标或唯一标识对象的其他地标(landmark))。在操作404处,过程400执行3dmm拟合技术以生成3dmm模型。3dmm拟合包括求解对象(例如面部)的3dmm模型的形状系数(例如x
shape
)、表情系数(例如x
expression
)和反照率系数(例如x
albedo
)。拟合还可以包括求解相机矩阵和球面谐波照明系数。
90.在操作406处,过程400包括对3dmm模型执行拉普拉斯变形。例如,可以将拉普拉斯变形应用于3dmm模型的顶点以改进地标拟合。在一些情况下,可以执行另一种类型的变形来改进地标拟合。在操作408处,过程400包括求解反照率。例如,过程400可以微调反照率系数以分离出不属于球面谐波照明模型的颜色。在操作410处,过程400求解深度。例如,过程400可以基于从阴影恢复形状(shape-from-shading)公式或其他类似函数来确定每像素深度位移。从阴影恢复形状公式将3dmm模型的每个点的颜色定义为反照率颜色乘以光系数的乘积。例如,图像中看到的颜色表示为反照率颜色乘以光系数。给定点的光系数基于该点的
表面法线。在操作412处,过程400包括输出深度图和/或3d模型(例如,输出3dmm)。
91.在一些情况下,3dmm模型可以用于利用主成分分析(pca)来描述对象空间(例如,3d面部空间)。以下是可用于描述3d对象的形状(例如,3d头部形状)的示例等式(3):
[0092][0093]
以头部作为3d对象的示例,s是3d头部形状,是平均面部形状,a
id
是在具有中性表情的3d面部扫描上训练的特征向量(或主成分),α
id
是形状系数,a
exp
是在表情和中性扫描之间的偏移上训练的特征向量,α
exp
是表情系数。可以使用投射技术将3dmm头部形状投射到图像平面上,诸如使用弱透视投射。下面的示例等式(4)和(5)可用于计算对齐的面部形状:
[0094]
i=mpr(α,β,γ)s+t
ꢀꢀꢀꢀꢀꢀ
(4)
[0095][0096]
其中i是对齐的面部形状,s是3d面部模型,r(α,β,γ)是具有α,β,γ旋转角度的3
×
3旋转矩阵,m是缩放参数,t是平移向量,p是弱透视变换。
[0097]
每个3dmm可以拟合到帧序列的每个帧中的对象。由于3dmm拟合到帧序列中的每个帧,因此3dmm模型的准确度可能会有所不同并且可能不会对齐。此外,对象可以因帧而异。例如,人的头部也可能由于例如颤抖而在帧与帧之间变化。因此,3dmm模型可能因帧而异。
[0098]
图4b是示出对象的3dmm 410的示例的示意图。在图4b所示的示例中,对象对应于人并且对人的头部区域建模。3dmm 410不包括人的非刚性方面,诸如头发区域或衣服区域。3dmm 410可以形变以描绘对象的各种面部运动(例如,鼻部区域、眼部区域、口腔区域等)。作为示例,在多个帧上,3dmm 410可以改变以允许图示说话的人或诸如微笑的人的面部表情。在其他示例中,对象可以是任何物理对象,诸如人、附件、车辆、建筑物、动物、植物、衣服和/或其他对象。
[0099]
如上所述,可以为帧序列中的每个帧生成3dmm。不同的3dmm对应于帧序列中对象的移动。在一些示例中,3dmm模型可以包括与对象的第一区域的位置相关的位置信息。在对象是人的头部的示例中,位置信息可以包括与头部的姿势相关的姿势信息。例如,姿势信息可以指示头部相对于头部的中立位置的角度旋转。旋转可以沿着第一轴(例如,偏航轴)和/或第二轴(例如,俯仰轴)。在一些示例中,姿势信息可包括可用于查明诸如位移(例如,移动)、速度、加速度、旋转等运动的任何物理特性。
[0100]
关键帧选择器210可以从帧序列中选择一个或多个帧(这里称为关键帧)。在一个说明性示例中,关键帧选择器210可以从帧序列中选择参考帧。关键帧选择器210可以比较参考帧的3dmm模型与其他帧中的其他3dmm模型的相似性以确定3dmm模型是否在空间和时间上对齐。例如,关键帧选择器210可以在第一时间段期间基于对象在一个方向上移动(或者当对象静止时相机相对于对象移动)时对象的对齐来分析帧,可以当对象在第二时间期间沿相反方向(例如,返回到中立位置)移动(或相机移动)时分析帧。在一些情况下,关键帧选择器210可以在对象在第二时间期间在相反方向上移动(或相机移动)时分析较少的帧。如果帧的另一个3dmm的比较与参考帧适当相关,则可以选择该帧作为关键帧。可以选择每个关键帧来描绘以不同角度旋转的对象并且表示对象的特定移动范围(例如,诸如10
°
到15
°
、15
°
到20
°
等的旋转范围)。关于选择关键帧的过程的更多细节将在下面参考图5进行描述。
[0101]
对象分析器215分析由关键帧选择器210选择的关键帧以标识对象的不同区域(例如,分段)。例如,对象分析器215可以执行对象分割以将对象分割成不同的区域。在一些示例中,对象分析器215可以由面部解析器实现,面部解析器可以将帧中的人的头部解析成不同的区域(例如,面部区域、头发区域等)。对象分析器215可以为不同区域生成一个或多个对象解析掩蔽。对象解析掩蔽可以指示帧中的像素是否对应于一个或多个不同区域。在一些情况下,对象解析掩蔽可以包括2d位图。在一个说明性示例中,对象分析器215可以生成对应于头部的第一区域(例如,面部区域)的对象解析掩蔽和对应于头部的第二区域(例如,头发区域)的对象解析掩蔽。在一些情况下,对象分析器215可以生成对应于第一区域和第二区域(例如,面部区域和头发区域)两者的对象解析掩蔽。例如,第一区域和第二区域的对象解析掩蔽可以图示人的轮廓。在其他情况下,可以基于对象的特定部分的属性(例如,基于人的头发)生成不同的掩蔽。
[0102]
在一些方面,对象解析掩蔽可以用于生成对象的特定部分的3d模型(例如,人的头发的3d头发模型)。在一些示例中,3d基础模型生成器220可以从对象解析掩蔽和从对象的第一部分的3d模型提供的姿势信息生成3d基础模型。在说明性示例中,3d基础模型生成器220从对象的第一部分的3d模型(例如,3dmm模型)和来自对象分析器215的对象解析掩蔽生成附加对象解析掩蔽。附加对象解析掩蔽由不同区域(例如,头发区域、面部区域)和3dmm模型的并集创建,这将导致生成的3d模型对齐(例如,邻接)。在创建对象解析掩蔽之后,3d基础模型生成器220然后初始化3d模型。初始3d模型的顶点可以基于附加对象解析掩蔽选择性地去除,以创建3d基础模型。例如,可以将初始3d模型投射到2d帧中,并且可以将对象解析掩蔽与投射的2d帧进行比较。关于从3d到2d的投射的进一步描述将在下面参考图8b进行描述。
[0103]
在一些示例中,3d基础模型包括对象的第一部分的3d模型和对象的第二部分的3d模型。在上面的说明性示例中,对象的第一部分是人的头部,第二部分是人的头发。如下面更详细描述的,生成具有用于第一部分和第二部分的3d模型的3d基础模型可以确保第二部分的3d模型与第一部分的3d模型自动对齐(例如,邻接)并且不会与第一部分的3d模型冲突。结果,可以减少不希望的视觉伪影。关于生成3d基础模型的更多细节将在下文中参考图7、图8a、图8b、图8c和图8d进行描述。
[0104]
模型提取器225可以从3d基础模型中提取第二区域的3d模型(例如,从3d基础模型中提取头发的3d模型)。例如,使用由3d基础模型生成器220创建的3d基础模型、对象解析掩蔽和姿势信息,可以去除3d基础模型中的顶点以得到第二区域的3d模型。关于提取第二区域的3d模型的更多细节将在下面参考图9和图10进行描述。
[0105]
图中2图示的系统200图示了可以以硬件、软件或者硬件和软件的任意组合来实现的功能框图。作为示例,所示出的功能框可以使用所示出的关系来标识功能框,这些功能框可以被转换成通用建模语言(uml)图以将系统200的示例实现至少部分地标识为软件中的面向对象的布置。然而,系统200可以在没有抽象的情况下实现,例如作为静态功能实现。
[0106]
图5图示了用于使用对象的第一部分的3d模型从对象的帧序列中选择关键帧的过程500。如上所述,3d对象建模器205为每个帧创建对象的第一部分的3d模型。在一些示例中,过程500可以由图2所示的关键帧选择器210实现从帧序列创建关键帧集合。如下所述,关键帧是基于对象的第一部分的3d模型的比较来选择的。
[0107]
在框510处,过程500可以从帧序列中选择参考帧。可以基于具有中性或无偏位置的第一部分的3d模型来标识参考帧。在对象是人的头部的说明性示例中,参考帧可以是帧序列的第一帧并且描绘处于中立位置的头部(例如,0
°
的旋转)。图3图示了可以被视为参考帧的帧310的示例,因为帧310是帧序列中的第一帧。在一些示例中,帧序列的第一帧可以具有以微小的角度(例如,0.3
°
)旋转的第一部分的对应3d模型,并且具有无旋转(例如,0.0
°
)的3d模型的后续帧可以被选择为参考帧。在这样的情况下,后续帧可以被认为是参考帧。
[0108]
在框520处,过程500可以基于来自第一部分的3d模型的位置信息将帧序列划分成帧组。在每个帧具有3dmm模型的帧序列的说明性示例中,每个帧可以与诸如3dmm模型的旋转角度的姿势信息相关联。可以基于姿势信息将帧序列划分成组。在对象是在帧序列中旋转的人的头部的示例中,可以基于相对于向其右侧(例如,+60
°
)和/或左侧(例如,-60
°
)的旋转的对象的位置来分离组(例如,第一组用于0
°
到5
°
,第二组用于5
°
至10
°
,第三组为10
°
至15
°
,等等)。
[0109]
例如,来自帧序列的帧基于帧中描绘的移动范围被分成不同的组。如下所述,将从每个组中确定关键帧。在此示例中,组的数量基于期望的视觉保真度和生成模型所需的时间消耗。例如,更多的关键帧会导致更好的视觉保真度,但需要更多的计算时间。此外,组的数量应该足够大以覆盖对象的移动范围。在一些示例中,每个帧都可以被认为是关键帧。
[0110]
图3图示了描绘人的头部的+60
°
旋转的示例帧320,其可以基于关键帧的数量被选作不同帧组(例如,+55
°
到+65
°
、+59.5
°
到+63
°
、+60
°
至+62
°
等)的关键帧。图3示出了描绘为人的头部的-60
°
旋转的为另一帧组(例如,-55
°
到-65
°
、-59.5
°
到-63
°
、-60
°
到-62
°
等)选择的示例关键帧330。
[0111]
在框520处选择的帧在时间上不一定是连续的。在一个说明性示例中,帧序列可以说明人将他们的头向他们的右侧旋转,然后向他们的左侧旋转。例如,帧序列可以包括描绘头部在第一时间从5
°
旋转到10
°
的第一帧集合。该帧序列还可以包括第二帧集合,其描绘了随着头部在第二时间向左侧移动头部从10
°
旋转到5
°
。
[0112]
在框530处,过程500可以基于帧组中的帧与参考帧的比较来选择每个帧组中的关键帧。在一个说明性示例中,过程500标识组中具有最佳分配给参考帧中的3dmm的3dmm的最佳帧。
[0113]
在说明性示例中,可以使用在基于第一部分的3d模型的并集上的交集(intersection over union,iou)来执行帧的比较。如上所述,可以生成3dmm并将其拟合到帧序列中的每个帧。这可能会导致3dmm模型中的对齐差异。例如,可以将参考帧(例如,具有中立头部位置)生成(例如,光栅化)为参考2d帧,并且也可以将组中的第一帧生成为第一2d帧。例如,为了光栅化参考2d帧的3d模型,相机(例如,相机模型)和灯可以定位在参考3d模型的3d坐标系中。呈现引擎可以基于相机位置计算投射到参考3d模型顶点上的光的效果,以生成可视地描绘参考3d模型的2d位图。在一些示例中,可以在不将3d模型光栅化为2d位图的情况下在3d坐标系中比较3d模型。
[0114]
执行iou以确定参考2d帧和第一2d帧之间的相似性(例如,相关性或值)。例如,iou可用于确定在当前帧中检测的对象是否与在前一帧中检测的对象匹配。iou包括两个边界框的交集i和并集u,两个边界框包括当前帧中对象的第一边界框和前一帧中对象的第二边界框。相交区域包括第一边界框和第二边界框之间的重叠区域。并集区域包括第一边界框
和第二边界框的并集。如果第一边界框和第二边界框之间的重叠面积除以边界框的并集大于iou阈值,则可以确定第一边界框和第二边界框匹配。
[0115]
iou比较只是一个示例比较,并且可以采用其他技术。例如,可以使用基于参考2d帧和第一2d帧中的值的异或来生成差分掩蔽。生成的位图将指示帧之间的差异面积,并且可以被测量以确定参考2d帧和第一2d帧之间的相似性。
[0116]
在一些示例中,可以对帧组中的其他帧进行附加比较。在第二帧具有更高相似性的情况下,可以选择第二帧作为该帧组的关键帧。在这种情况下,第二帧将取代第一帧作为关键帧。
[0117]
在为每帧组选择每个关键帧之后,过程500在框540处将参考帧和来自每个帧组的所选择的关键帧添加到关键帧的集合。在一个说明性示例中,关键帧的集合帧被提供给对象分析器215。对象分析器215可以分析关键帧以标识对象的不同区域(例如,分段)。例如,对象分析器215可以执行对象分割以将对象分割成不同的区域。
[0118]
图6a图示了由对象分析器215执行的帧310和关键帧330的对象分析的结果。在该情况下,帧310的分割结果610图示了人的头发区域612和人的面部区域614。区域616对应于人的头部以外的区域。帧330的分割结果620图示了人的头发的头发区域622和人的面部区域624。区域626对应于人的头部以外的区域。
[0119]
虽然图6a图示了对象分析器215的分割,但可以基于正在建模的特征更详细地分割对象。例如,如果要对围巾进行建模,则特征分割可能需要检测靠近人头部的物理对象,并可能标识更精细的细节,诸如鼻部区域、眼部区域、口腔区域等。
[0120]
在一些示例中,对象分析器215可以由面部解析器实现,该面部解析器可以将帧中的头部解析成不同的区域(例如,面部区域、头发区域等)。对象分析器215可以生成一个或多个对象解析掩蔽,其指示帧中的像素是否对应于一个或多个区域。在一个说明性示例中,对象解析掩蔽可以包括2d位图。在一些情况下,如本文更详细描述的,对象解析掩蔽可用于生成对象的特定部分的3d模型(例如,人的头发的3d头发模型)。在一些使用人的头部和头发作为人的部分的示例的情况下,对象分析器215可以生成对应于人的面部的对象解析掩蔽、对应于人的头发的对象解析掩蔽,以及在一些情况下对应于人的头发和面部的对象解析掩蔽。在其他情况下,可以基于对象的特定部分的属性(例如,基于人的头发)生成不同的掩蔽。
[0121]
图6b图示了可以从帧310和帧330的对象分析结果生成的不同对象解析掩蔽。每个对象解析掩蔽指示由对象分析器215标识的对象的区域的存在。具体地,对象解析掩蔽的白色区域(例如,白色值为255)指示对象解析掩蔽的坐标对应于对象的区域。黑色区域(例如,白色值为0)指示对象解析掩蔽帧的坐标不对应于对象的区域。
[0122]
在图6b所示的示例中,对象解析掩蔽630、对象解析掩蔽650和对象解析掩蔽670是从关键帧310的对象分析中导出的。如上所述,关键帧310,如上所述也被认为是参考帧,图示了人的头部在偏航轴上没有旋转(即0
°
旋转)的人的正面视图。类似地,对象解析掩蔽640、对象解析掩蔽660和对象解析掩蔽680是从关键帧330的对象分析导出的。如上所述,关键帧330图示了人在偏航轴上旋转他们的头部-60
°
。
[0123]
对象解析掩蔽630标识头部相对于颈部区域没有旋转的人的面部区域。对象解析掩蔽640标识当头部相对于颈部区域旋转-60
°
时的面部区域。对象解析掩蔽650标识头部没
有旋转的人的头发区域的正面视图。对象解析掩蔽660标识头部相对于颈部区域旋转-60
°
的头发区域。对象解析掩蔽670标识头部相对于颈部区域没有旋转的人的面部和头部区域(例如,轮廓)。对象解析掩蔽680标识当人的头部相对于颈部区域旋转-60
°
时的面部和头发区域。
[0124]
图7图示了用于生成对应于对象的第一区域和对象的第二区域的3d基础模型的过程700的流程图。在一个示例中,过程700可以由图2所示的3d基础模型生成器220执行。
[0125]
在框710处,过程700初始化3d模型并为每个关键帧生成对象解析掩蔽。在一些示例中,初始3d模型可以是可以应用于过程700以创建3d基础模型的任何形状。在说明性示例中,3d模型是默认形状,诸如3d立方体。如以下将进一步详细描述的,使用在框710处生成的对象解析掩蔽,可以去除初始3d模型的顶点以创建封装第一部分的3d模型和第二部分的3d模型的3d基础模型。
[0126]
在框720处,过程700基于与第一部分的3d模型相关联的姿势信息将初始3d模型的顶点投射到对象解析掩蔽中。在头部的说明性示例中,3dmm的姿势信息可以指示头部的角度旋转。初始3d模型的每个顶点将基于根据姿势信息定位的相机从3d坐标系投射到2d坐标系。例如,如果对象的姿势信息在偏航轴上旋转15
°
,则相机沿弧线定位在15
°
,并将初始3d模型的每个顶点投射到相机中以生成2d位图。3d坐标系到2d坐标系的投射将在图8b中更详细地解释。
[0127]
在框730处,过程700确定初始3d模型的每个顶点被投射到的对象解析掩蔽的区域。在初始3d模型被投射到关键帧310并且相机基于3dmm的姿势信息(例如,0
°
)定位的示例中,关键初始3d模型的顶点被投射到对象解析掩蔽上以确定顶点是在头部和头发区域(例如,轮廓)内还是在头部和头发区域之外。
[0128]
在框740处,过程700基于顶点被投射到的对象解析掩蔽的区域从初始3d模型去除顶点。在将初始3d模型投射到关键帧310的示例中,投射到对象解析掩蔽外部的顶点被去除。投射在对象解析掩蔽内的顶点被保留。
[0129]
图8a是图示将用于创建3d基础模型的对象解析掩蔽802的创建的示意图。例如,图2中的3d基础模型生成器可以基于来自对象分析器215的输出(例如,对象解析掩蔽806)和来自3d对象建模器205的对象804的第一部分(图8a的示例中的人的头部)的3d模型来创建对象解析掩蔽802。。在一些示例中,基于对象804的第一部分的3d模型(例如,3dmm模型)的光栅化和对象解析掩蔽806的并集生成对象解析掩蔽802。如将在下面进一步详细描述的,对象解析掩蔽802表示对象804的第二部分的外边界(在图8a的示例中人的头部上的头发)并确保相对于对象的第一部分的对齐(例如,在表示头部的模型和表示头发的模型之间存在对齐)。对象804的第一部分的3d模型的光栅化被对齐以使得对象804的第一部分的3d模型的头部或颅骨区域被对象解析掩蔽806界定(例如,在对象解析掩蔽806之内)。在图8a的这个示例中,对象解析掩蔽806标识图像中描绘的人的第一区域(例如,面部区域)和第二区域(例如,头发区域)两者。在此示例中,对象的第一部分(图8a中的人804的头部)的3d模型与对象解析掩蔽806的并集创建了对象解析掩蔽802,其将自动将对象的第一部分的3d模型(例如,头部的3d模型)与对象的第二部分的3d模型(例如,头发的3d模型)对齐。
[0130]
在所示示例中,对象804的头部部分(第一部分)的3d模型几乎完全由对象解析掩蔽806界定,因为对象解析掩蔽806的头发区域是广泛的。头发区域可能小得多(例如,当对
象旋转时,当人的头发区域更小且密度更低时,等等)并且使用对象解析对头发区域的分割可能不准确。因此,将对象804的头部部分(第一部分)的3d模型与对象解析掩蔽806对齐确保了当对象解析掩蔽802用于创建3d基础模型时的对齐和准确度。
[0131]
图8b图示了将被投射到2d位图中的3d场景的顶视图。在一个说明性示例中,初始3d模型808静态定位在弧线809的中心点。在说明性示例中,相机810可以沿着弧线809定位以基于表示人的一部分(例如,人的头部或上半身和头部)的3dmm模型的姿势信息呈现场景。例如,因为人的头部旋转了0
°
,相机810在图8b中位于0
°
并且将对应于关键帧310的相机位置。相机可以是理想的针孔相机模型,其描述3d空间中相机位置的坐标与图像平面812上的投射之间的数学关系。例如,初始3d模型808的表示被投射到图像平面812中并表示为二维位图。
[0132]
可以将图像平面812上的位图与位图814进行比较以确定顶点是否对应于特定区域。例如,因为图像平面812上的位图和位图814是2d的,图像平面812上的位图可以与位图814对齐并基于2d位置进行比较。在位图814是标识帧的区域(例如,第一区域,诸如由特定像素值(诸如值1或0)标识的头发区域)的对象解析掩蔽的示例中,初始3d模型中的每个顶点可以被映射到对象解析掩蔽内的区域。在位图814是对象解析掩蔽670的示例中,可以确定顶点是在关键帧310中的人的轮廓的内部还是外部。例如,当初始3d模型808的顶点816被投射在图像平面812中时,顶点816可以基于位图814被标识为在轮廓的内部或外部。如上所述,这对于初始3d模型808的每个顶点都发生。
[0133]
此外,相机820可以位于图8b中的+60
°
处以将初始3d模型808投射到另一关键帧中。相机820可以是与相机810相同或不同的相机。例如,相机820可以对应于用于捕获关键帧330的相机位置。3d空间的不同表示由相机820投射在图像平面822中,因为与相机810相比,相机820位于不同的位置。可以将到图像平面822的投射与另一位图824进行比较,以确定顶点(例如,顶点816)是在对象解析掩蔽的内部还是外部。在一些示例中,顶点816可以被映射到图像平面822中与图像平面812中不同的位置。
[0134]
此外,相机830可以位于图8b中的-60
°
以将初始3d模型808投射到其他关键帧中。相机830可以是与相机810和/或相机820相同或不同的相机。例如,相机830可以对应于用于捕获关键帧320的相机位置。3d空间的不同表示由相机830投射到相机830的图像平面832。到图像平面832中的投射可以与另一位图834比较以确定顶点816是在对象解析掩蔽的内部还是外部。在一些示例中,顶点816可以被映射到图像平面832中与图像平面812和图像平面822中不同的位置。
[0135]
图8c图示了由本文描述的系统和技术生成的示例3d基础模型850。3d基础模型850包括对象的第一区域、对象的第二区域和第一部分的3d模型(例如,3dmm模型)的光栅化的并集。3d基础模型800的一部分包括至少部分对应于对象的外边界的外边界852。在人的面部对应于对象的情况下,外边界可以对应于人的头发区域。例如,3d基础模型的2d表示与对象解析掩蔽670具有高相关性。然而,在头发不存在的情况下,外边界也可以对应于人的皮肤。
[0136]
如上所述,过程700选择性地去除初始3d模型的部分。在人的头部的说明性示例中,人的轮廓用于去除与头部不相关联的初始3d模型的区域。因此,3d基础模型850看起来是包含人的头部和头发的圆锥体。因此过程700去除了初始3d模型的外边界。
[0137]
在一些示例中,3d基础模型850可以包括无意中保留的顶点854。在一些示例中,可以实施后处理过程以去除错误。例如,可以实施拉普拉斯平滑操作以去除顶点854以创建图8d中所示的3d基础模型850。
[0138]
在一些示例中,因为3d基础模型850是基于对象解析掩蔽和对应于对象解析掩蔽的姿势信息的组合构建的,所以3d基础模型850与第一部分的3d模型对齐和缩放。此外,3d基础模型850的外边界的至少一部分是基于由对象解析掩蔽标识的边界来确定的。
[0139]
图9图示了用于生成第二对象的3d模型的过程900的流程图。在一个示例中,过程900可以由图2所示的模型提取器225执行。
[0140]
在框910处,过程900包括将3d基础模型的每个顶点的值初始化为默认值。例如,图2中所示的模型提取器225可以将3d基础模型的每个顶点的值初始化为默认值。在一些示例中,顶点的初始值是值一,但是可以选择任何值。如下面将详细描述,3d基础模型的顶点的值对应于该顶点是保留在第二区域的3d模型中(即该顶点对应于第二对象的3d模型)还是在第二区域的3d模型中不存在(例如,去除)。每个顶点都设置为默认值以指示该顶点对应于3d模型的第二区域,这允许3d模型中未建模并且不应该可见的内容与第二区域相关联。例如,在对象是人的头部的情况下,帧序列可以说明,人的头部和枕部区域(即人的头部后面)的
±
60
°
旋转不能基于要建模的运动的范围和可用的帧序列直接建模。在这种情况下,设置默认值将强制枕部区域的至少一部分被第二区域(即头发区域)的模型覆盖。
[0141]
在框920处,过程900将3d基础模型的顶点投射到关键帧中。例如,图2中所示的模型提取器225可以将3d基础模型的顶点投射到每个关键帧的对象解析掩蔽中。如上所述,基于与关键帧的3dmm模型相对应的姿势信息,可以将3d基础模型的顶点从3d投射到2d。
[0142]
在框920处,过程900基于对象解析掩蔽确定3d基础模型的每个顶点被投射到的关键帧的区域。在一些示例中,对象解析掩蔽可以标识顶点被投射到的区域。在说明性示例中,对象解析掩蔽可以标识人的头发区域,诸如对象解析掩蔽650和对象解析掩蔽660。在一些示例中,对象解析掩蔽可以标识另一区域(例如,面部区域)。
[0143]
在框930处,过程900基于顶点被投射到的关键帧的区域来调整每个顶点的值。在说明性示例中,当顶点被投射在头发区域中时,顶点的值可以递增。如果顶点落入头发区域以外的区域,则顶点的值可以递减。在其他示例中,面部区域可用于调整顶点的值。
[0144]
在框940处,过程900包括基于顶点的值生成预测模型。在一些示例中,预测模型是通过基于上述框910至930中描述的投射对3d基础模型的所有顶点求平均值来生成的。
[0145]
在框950处,过程900包括基于预测模型和顶点的值去除3d基础模型的顶点。在说明性示例中,具有小于平均值的值的每个顶点被去除并且其他顶点被保留。实际上,被标识为不与第二区域相关联的3d基础模型的顶点从3d基础模型中去除以创建第二部分的3d模型。
[0146]
在人的头部的示例中,第二区域对应于不同对象解析掩蔽中的头发区域,并且第二部分的3d模型对应于人的头发。例如,从3d基础模型中减去不对应于第二区域的来自3d基础模型的内容以创建第二部分的3d模型。
[0147]
在一个说明性示例中,第二区域的3d模型自动与第一部分的3d模型对齐(例如,不可见地冲突),因为3d基础模型是从对象的第一区域、对象的第二区域以及第一部分的3d模型(例如,3dmm模型)的光栅化的并集中导出的。在一些示例中,第二区域的3d模型邻接第一
部分的3d模型的至少一部分。例如,基于对象解析掩蔽确定第二区域的3d模型的外边界,以使第二区域的3d模型与第一部分的3d模型重叠。因此,如上所述从3d基础模型中减去内容将导致第二区域的所得3d模型与第一部分的3d模型对齐和缩放。第二部分的3d模型也以将防止与第一部分的3d模型发生任何可见冲突的方式形成。
[0148]
图10是图示可以基于方法900从3d基础模型生成第二对象的3d模型的示例模型提取器1000的示意图。如图10所示,模型提取器1000包括顶点初始化器1010、顶点投射器1020、区域标识器1030和顶点去除器1040。
[0149]
在一些示例中,顶点初始化器1010可以将3d基础模型1012的值初始化为默认值。每个顶点都被设置为默认值以指示该顶点对应于3d模型的第二区域,这允许3d模型中未建模且不应该可见的内容与第二区域相关联。顶点投射器1010使用例如对应于关键帧的3dmm模型的姿势信息将3d基础模型1012的顶点投射到关键帧中。
[0150]
区域标识器1030基于对象解析掩蔽确定3d基础模型的每个顶点被投射到的关键帧的区域。区域标识器1030也可以基于关键帧的区域来改变顶点的值。例如,如果顶点被投射到对象解析掩蔽的头发区域,则可以增加顶点的值以保留对应于第二部分的3d模型的顶点。另一方面,如果顶点被投射到对象解析掩蔽的面部区域中,则可以减小顶点的值以去除不对应于第二部分的3d模型的顶点。
[0151]
顶点去除器1040可执行去除3d基础模型的顶点的功能以创建第二部分1042的3d模型。在一些示例中,顶点去除器1040可通过基于投射执行3d基础模型的所有顶点的平均值来生成预测模型,然后基于预测模型和顶点的值来去除3d基础模型的顶点。在一些示例中,去除具有小于平均值的值的顶点并且保留具有大于平均值的值的顶点。第二部分1042的所得3d模型与第一部分的3d模型对齐,因为3d基础模型是基于第一部分(例如,头部区域)、第二区域(例如,头发区域)以及对象第一部分的3d模型的并集来创建的。
[0152]
图11图示了由本文描述的系统和技术生成的第二部分1100的3d模型。如上所述,通过从外表面去除内容来创建3d基础模型。在一个说明性示例中,第二部分1100的3d模型包括至少部分地从创建3d基础模型的对象解析掩蔽导出的表面1102。此外,通过基于封装在3d基础模型中的对象解析掩蔽从3d基础模型中去除内容来创建3d模型。在一些示例中,第二部分的3d模型的内表面与第一部分的3d模型的外表面相似并且不与第一部分的3d模型的外表面冲突。在人的头部和头发的说明性示例中,第一部分(例如,头部)的3d模型将不会与第二部分(例如,头发)的3d模型冲突。
[0153]
图12图示了用于生成一个或多个模型的过程1200的示例。在框1202处,过程1200包括基于描绘对象的一个或多个帧生成对象的第一部分的三维(3d)模型。例如,图2中所示的3d对象建模器205可以基于一个或多个帧生成对象的第一部分的3d模型。在一些情况下,一个或多个帧可以描绘对象沿第一轴的旋转。在一些情况下,一个或多个帧还可以描绘对象沿第二轴的旋转。例如,第一轴可以对应于偏航轴并且第二轴可以对应于俯仰轴。
[0154]
根据一些示例,过程1200包括从帧序列中选择一个或多个帧作为关键帧。例如,图2中所示的关键帧选择器210可以从帧序列中选择一个或多个帧作为关键帧。在一些示例中,如上所述,每个关键帧以不同的角度描绘对象(例如,基于以相对于对象的不同角度捕获的关键帧)。在一些情况下,为了选择一个或多个帧作为关键帧,过程1200可以包括针对沿轴选择的第一角度从对象的第一部分的3d模型生成第一位图。过程1200可以包括至少部
分地通过将第一位图与帧序列的参考帧进行比较来生成第一度量。在一些情况下,通过确定第一位图和参考帧的位图的并集上的交集(iou)来执行比较。例如,如上所述,可以基于iou大于iou阈值来选择第一关键帧。在选择第一关键帧之后,过程1200可以包括至少部分地通过将参考帧与帧序列的第二帧的位图进行比较来生成第二度量。在这种情况下,过程1200可以标识更好的帧(例如,与第一关键帧相比具有更大的iou)并且使用更好的帧作为关键帧。在这种情况下,过程1200可以包括基于第二度量选择第二帧作为第一关键帧。
[0155]
在一些情况下,选择一个或多个帧可以包括促进捕获附加内容的功能。例如,过程1200还可以包括确定第一关键帧不满足质量阈值。在第一关键帧不满足质量阈值的情况下,过程1200可以包括输出反馈以促进将对象定位为对应于第一关键帧,基于反馈捕获至少一个帧,以及将来自至少一个帧中的帧插入关键帧。
[0156]
在框1204处,过程1200包括为一个或多个帧生成掩蔽。例如,如上所述,图2中所示的对象分析器215可以为一个或多个帧生成对象解析掩蔽。掩蔽包括对象的一个或多个区域的指示。在一些情况下,过程1200可以包括生成标识第一区域的第一掩蔽和标识第二区域的第二掩蔽。在一个说明性示例中,对象是人,第一区域是人的面部(或脸部)区域,第二区域是人的头发区域。在另一说明性示例中,第一区域可以对应于人的身体区域和人穿戴的服装区域。
[0157]
在框1206处,过程1200包括基于对象的第一部分的3d模型和掩蔽生成3d基础模型。3d基础模型可以表示对象的第一部分和对象的第二部分。在一些示例中,图2中所示的3d基础模型生成器220可以基于对象的第一部分的3d模型和掩蔽生成3d基础模型。
[0158]
在一些方面,为了生成3d基础模型,过程1200可以包括基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关联的掩蔽。过程1200可以包括确定第一部分的3d模型的每个顶点是否位于与该帧相关联的掩蔽的第一区域内。如上所述,掩蔽的第一区域可以对应于人的面部区域。在一些示例中,可以通过将掩蔽与第一部分的3d模型的光栅化相结合来生成3d基础模型。在一些情况下,过程1200可以包括基于第一部分的3d模型的顶点在与该帧相关联的掩蔽的第一区域内来提取3d基础模型,如关于至少图10所描述的。
[0159]
在框1208处,过程1200包括基于掩蔽和3d基础模型生成对象的第二部分的3d模型。例如,图2中所示的模型提取器225可以基于掩蔽和3d基础模型生成对象的第二部分的3d模型,诸如使用关于图10描述的技术。生成对象第二部分的3d模型以使得其与对象的第一部分的3d模型对齐(例如,邻接)。如上所述,对象的第二部分的3d模型不与对象第一部分的3d模型可见地冲突。例如,如关于图8a所描述的,因为掩蔽是基于对象解析掩蔽(例如,来自关键帧)和第一部分的3d模型的光栅化的组合生成的,所以可以确保第二部分的3d模型关于第一部分的3d模型的对齐。
[0160]
在一些示例中,第二部分的3d模型对应于作为对象的一部分的项目。在一个说明性示例中,对象是人,对象的第一部分对应于人的头部,并且对象的第二部分对应于人的头部上的头发(例如,如上文关于图8a-图10所描述的)。在一些示例中,第二部分的3d模型对应于与对象可分离和/或相对于对象可移动的项目。在一个说明性示例中,对象是人,3d模型的第一部分对应于人的身体区域,3d模型的第二部分对应于人穿戴的配饰或衣服。
[0161]
在一些示例中,为了生成对象的第二部分的3d模型,过程1200可以包括将3d基础
模型的每个顶点的值初始化为初始值。3d基础模型的每个顶点可以投射到一个或多个帧中的关键帧中。过程1200可以包括确定3d基础模型的顶点是被投射到第一关键帧的第一掩蔽还是第二掩蔽。在一些情况下,过程1200可以包括基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。例如,当第一顶点被投射到第二区域时,第一顶点的值可以增加,并且当第一顶点被投射到第一区域时,第一顶点的值可以减小。
[0162]
在一些方面,过程1200可以包括基于每个顶点的值来确定平均概率。过程1200可以进一步确定顶点对应于对象的第一部分或第二部分的3d模型的概率。在一些示例中,过程1200可以至少部分地通过比较顶点的值与平均概率来确定顶点对应于对象的第一部分或第二部分的3d模型的概率。基于一个或多个顶点中的每个顶点对应于对象的第一部分或第二部分的概率(例如,基于一个或多个顶点是否在来自一个或多个帧中的帧的一个或多个区域的区域内),从3d基础模型中去除顶点。例如,过程1200可以包括基于对应的顶点是被标识为对应于第二区域(例如,头发区域)还是第一区域(例如,面部区域)来去除顶点。在一个示例中,对应于第一区域(例如,面部区域)的顶点可以从3d基础模型中去除,而对应于第二区域(例如,头发区域)的顶点可以被保留并用于对象第二部分的3d模型(例如,头发的3d模型)。
[0163]
在一些示例中,过程1200可以包括使用第一部分的3d模型和第二部分的3d模型在应用中生成动画。该应用可以包括发送和接收音频和文本中的至少一个的功能,并且可以显示第一部分的3d模型和第二部分的3d模型。例如,当同时显示第一部分的3d模型和第二部分的3d模型时,应用可以描绘该应用的用户。
[0164]
在一些方面,过程1200包括接收对应于选择用于修改第二部分的3d模型的至少一个图形控件的输入。过程1200可以包括基于接收的输入修改第二部分的3d模型。在一个示例中,应用的用户可以修改第二部分的3d模型以例如增加或减少头发的长度。
[0165]
图13图示了用于生成一个或多个模型的过程1300的另一示例。在框1302处,过程1300包括基于描绘人的一个或多个帧生成人的头部的三维(3d)模型。在一些情况下,类似于关于过程1200所描述的,过程1300可以包括从帧序列中选择一个或多个帧作为关键帧。例如,过程1300可以包括确定第一关键帧不满足质量阈值。当第一关键帧不满足质量阈值时,过程1300可以包括与捕获附加图像相关的功能。在一个说明性示例中,过程1300可以包括输出反馈以促进将人定位为对应于第一关键帧,基于反馈捕获至少一个帧,以及将来自至少一个帧中的帧插入关键帧。
[0166]
在框1304处,过程1300包括为一个或多个帧生成掩蔽,该掩蔽包括人的一个或多个区域的指示。例如,过程1300可以包括将一个或多个帧中的每个帧分割成一个或多个区域并且为每个帧生成一个或多个掩蔽。一个或多个掩蔽包括一个或多个区域的指示。在一些示例中,第一掩蔽可以包括第一区域(例如,人的面部区域)的指示并且第二掩蔽可以包括第二区域(例如,人的头发区域)的指示。
[0167]
在框1306处,过程1300包括基于人的第一部分的3d模型和掩蔽生成3d基础模型。3d基础模型可以对应于人的头部和人的头发的外边界。为了生成3d基础模型,过程1300可以包括基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关联的掩蔽,确定头部的3d模型的每个顶点是否位于与帧相关联的掩蔽的头部区域内,以及基于头部的3d模型的顶点在与相帧关联的掩蔽的头部区域内来提取3d基础模型。
在一些示例中,可以基于一个或多个顶点中的每个顶点在头部区域之外的概率,从3d基础模型中去除一个或多个顶点。
[0168]
在框1308处,过程1300包括基于掩蔽和3d基础模型生成人的头发的3d模型。在一个说明性示例中,人的头发的3d模型不与人的头部的3d模型可见地冲突。为了生成人的头发的3d模型,过程1300可以包括将3d基础模型的每个顶点的值初始化为初始值,将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中,以及确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽。在一个说明性示例中,第一掩蔽可以对应于面部区域并且第二掩蔽可以对应于头发区域,如上所述。
[0169]
在一些示例中,生成人的头发的3d模型可以包括基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。例如,当第一顶点投射到第二掩蔽(对应于头发区域)时,第一顶点的值可以增加,当第一顶点投射到第一掩蔽(对应于面部区域)时,第一顶点的值可以减小。
[0170]
在一些情况下,过程1300可以包括基于每个顶点的值来确定平均概率。顶点对应于头发的3d模型的概率基于顶点的值与平均概率的比较。例如,当概率指示顶点不对应于头发的3d模型时,顶点被去除,因为顶点很可能对应于头部的3d模型。当顶点对应于头发的3d模型时,为头发的3d模型保留顶点。
[0171]
在一些示例中,对象的3d模型可以被包括在由设备执行的各种应用中。设备可以执行显示对应于应用的用户的3d模型(例如,化身)的应用。应用可以包括发送由人输入的通信(例如,语音、文本等)的功能。在一个说明性示例中,应用可以是显示对应于化身的用户的文本消息传递应用,并且用户可以通过提供输入以使用户的化身动画化来包括附加上下文。用户可以提供输入以使用户的化身动画化3d模型的第一部分和/或以其他方式移动,诸如提供非语言提示和上下文(例如,微笑、大笑、摇头、点头等)。在一个说明性示例中,3d头发模型可以与头部模型一起定位并与头部模型一起移动,而不会产生任何可见的冲突。
[0172]
应用还可以包括用于修改第二部分的3d模型(例如,头发3d模型)的用户界面。该应用可以显示至少一个图形控件以修改第二部分的3d模型,接收指示至少一个图形控件已被用户选择的信号,以及基于至少一个图形控件在视觉上修改第二部分的3d模型。图形控件可以是任何合适的功能,诸如调整3d头发模型的大小或形状。然而,图形控件还可以控制与3d模型的第二部分相关的特定功能。作为示例,图形控件可以增加3d头发模型的头发体积或改变3d头发模型的头发长度(例如,缩短或延长)。
[0173]
在其他示例中,设备可以包括捕获帧序列并执行本文描述的一些过程(例如,过程500、过程700、过程900、过程1200、过程1300和/或本文描述的其他过程)应用或功能。应用或功能可以能够查明特定关键帧不满足质量阈值(例如,关键帧的相关性或相似性小于最小阈值)。在这样的情况下,应用或功能可以输出用户界面元素(例如,通知、消息等)或以其他方式提供反馈(例如,视觉、听觉、触觉和/或其他反馈)以促进将对象定位为对应于特定关键帧。例如,应用可以在听觉上、视觉上或物理上(例如,经由触觉反馈)向执行应用或功能的人提供反馈信息以帮助对齐对象。应用可以在提供反馈信息的同时使相机捕获至少一个图像或帧。如果应用确定至少一个帧中的特定帧满足质量阈值或者是对原始关键帧的改进,则应用可以去除原始关键帧并将特定帧插入到关键帧集合中。
[0174]
在一些示例中,本文描述的过程(例如,过程500、过程700、过程900、过程1200、过
程1300和/或本文描述的其他过程)可以由计算设备或装置执行。在一些示例中,过程500、700、900、1100或1200可以由系统200执行。在另一个示例中,过程500、700、900、1200或1300可以由具有图14中所示的计算系统1400的体系结构的计算设备或系统执行。
[0175]
计算设备可以包括任何合适的设备,诸如移动设备(例如,移动电话)、台式计算设备、平板计算设备、扩展现实(xr)设备或系统(例如,vr耳机、ar耳机、ar眼镜或其他xr设备或系统)、可穿戴设备(例如,联网手表或智能手表或其他可穿戴设备)、服务器计算机或系统、车辆或车辆的计算设备(例如,自主车辆)、机器人设备、电视和/或具有资源能力的任何其他计算设备来执行本文描述的过程,包括过程500、700、900、1200或1300。在一些情况下,计算设备或装置可包括各种组件,诸如一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个相机、一个或多个传感器,和/或被配置为执行本文描述的过程步骤的(多个)其他组件。在一些示例中,计算设备可以包括显示器、被配置为传送和/或接收数据的网络接口、它们的任意组合和/或(多个)其他组件。网络接口可以被配置为传送和/或接收基于互联网协议(ip)的数据或其他类型的数据。
[0176]
计算设备的组件可以在电路中实现。例如,组件可以包括和/或可以使用电子电路或其他电子硬件来实现,其可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理单元(cpu)和/或其他合适的电子电路),和/或可以包括计算机软件、固件或其任何组合和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。
[0177]
过程500、700、900、1200和1300被图示为逻辑流程图,其操作表示可以在硬件、计算机指令或其组合中实现的操作序列。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当这些指令由一个或多个处理器执行时,执行所阐述的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现过程。
[0178]
另外,过程500、700、900、1200或1300和/或本文描述的其他过程可以在配置有可执行指令的一个或多个计算机系统的控制下执行并且可以实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行的指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂时性的。
[0179]
图14是图示用于实现本技术的某些方面的系统的示例的示意图。具体地,图14图示了计算系统1400的示例,其可以是例如构成内部计算系统的任何计算设备、远程计算系统、相机或其任何组件,其中系统的组件使用连接1405彼此通信。连接1405可以是使用总线的物理连接,或者是诸如在芯片组架构中的到处理器1410的直接连接。连接1405也可以是虚拟连接、网络连接或逻辑连接。
[0180]
在一些实施例中,计算系统1400是分布式系统,其中本公开中描述的功能可以分布在数据中心、多个数据中心、对等网络等内。在一些实施例中,一个或多个所描述的系统组件表示许多这样的组件,每个组件执行描述该组件的部分或全部功能。在一些实施例中,
组件可以是物理或虚拟设备。
[0181]
示例系统1400包括至少一个处理单元(cpu或处理器)1410和连接1405,连接1405可以将包括诸如只读存储器(rom)1420和随机存取存储器(ram)1425的系统存储器1415的各种系统组件耦合到处理器1410。计算系统1400可以包括高速存储器的高速缓存1412,其直接连接、紧邻处理器1410或集成为处理器1410的一部分。
[0182]
处理器1410可以包括任何通用处理器和硬件服务或软件服务,诸如存储在存储设备1430中被配置为控制处理器1410的服务1432、1434和1436,以及其中软件指令被合并到实际的处理器设计中的专用处理器。处理器1410本质上可以是完全独立的计算系统,包含多个核或处理器、总线、存储器控制器、高速缓存等。多核处理器可以是对称的或非对称的。
[0183]
为了实现用户交互,计算系统1400包括输入设备1445,其可以表示任何数量的输入机制,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、动作输入、语音等。计算系统1400还可以包括输出设备1435,其可以是多个输出机制中的一个或多个。在一些情况下,多模式系统可以使用户能够提供多种类型的输入/输出以与计算系统1400通信。计算系统1400可以包括通信接口1440,其通常可以治理和管理用户输入和系统输出。通信接口可以使用包括使用以下各项的有线和/或无线收发器执行或促进接收和/或发送有线或无线通信:音频插孔/插头、麦克风插孔/插头、通用串行总线(usb)端口/插头、端口/插头、以太网端口/插头、光纤端口/插头、专有有线端口/插头、无线信号传输、低能量(ble)无线信号传输、无线信号传输、射频识别(rfid)无线信号传输、近场通信(nfc)无线信号传输、专用短程通信(dsrc)无线信号传输、802.11wi-fi无线信号传输、无线局域网(wlan)信号传输、可见光通信(vlc)、全球微波接入互操作性(wimax)、红外线(ir)通信无线信号传输、公共交换电话网(pstn)信号传输、综合业务数字网(isdn))信号传输、3g/4g/5g/lte蜂窝数据网络无线信号传输、ad-hoc网络信号传输、无线电波信号传输、微波信号传输、红外信号传输、可见光信号传输、紫外光信号传输、沿电磁频谱的无线信号传输,或其某种组合。通信接口1440还可以包括一个或多个全球导航卫星系统(gnss)接收器或收发器,其用于基于从与一个或多个gnss系统相关联的一个或多个卫星接收一个或多个信号来确定计算系统1400的位置。gnss系统包括但不限于基于美国的全球定位系统(gps)、基于俄罗斯的全球导航卫星系统(glonass)、基于中国的北斗导航卫星系统(bds)和基于欧洲的伽利略gnss。对在任何特定硬件配置上的操作没有限制,因此这里的基本特征在被开发时可以很容易地替换为改进的硬件或固件配置。
[0184]
存储设备1430可以是非易失性和/或非暂时性和/或计算机可读存储器设备并且可以是硬盘或可以存储计算机可访问的数据的其他类型的计算机可读介质,诸如磁带、闪存卡、固态存储器设备、数字多功能磁盘、盒式磁带、软盘、软性盘、硬盘、磁带、磁条、任何其他磁性存储介质、闪存、忆阻器存储器、任何其他固态存储器、光盘只读存储器(cd-rom)光盘、可重写压缩盘(cd)光盘、数字视频盘(dvd)光盘、蓝光盘(bdd)光盘、全息光盘、另一种光学介质、安全数字(sd)卡、微型安全数字(microsd)卡、卡、智能卡芯片、emv芯片、订户识别模块(sim)卡、迷你/微/纳米/微微sim卡、另一集成电路(ic)芯片/卡、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存eprom
(flasheprom)、高速缓冲存储器(l1/l2/l3/l4/l5/l#)、电阻式随机存取存储器(rram/reram)、相变存储器(pcm)、自旋转移力矩ram(stt-ram)、另一存储器芯片或盒,和/或它们的组合。
[0185]
存储设备1430可以包括软件服务、服务器、服务等,当定义这样的软件的代码由处理器1410执行时,它使系统执行功能。在一些实施例中,执行特定功能的硬件服务可以包括存储在计算机可读介质中的软件组件连同必要的硬件组件,诸如处理器1410、连接1405、输出设备1435等,以执行功能。
[0186]
如本文所用,术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带(多个)指令和/或数据的各种其他介质。计算机可读介质可以包括其中可以存储数据的非暂时性介质,并且不包括无线地或通过有线连接传播的载波和/或瞬时电子信号。非暂时性介质的示例可以包括但不限于磁盘或磁带、诸如压缩盘(cd)或数字多功能盘(dvd)的光存储介质、闪存、存储器或存储器设备。计算机可读介质可以在其上存储代码和/或机器可执行指令,这些代码和/或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一代码段或硬件电路。可以使用包括存储器共享、消息传递、令牌传递、网络传输等的任何合适的手段来传递、转发或传输信息、自变量、参数、数据等。
[0187]
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的有线或无线信号。然而,当提及时,非暂时性计算机可读存储介质明确排除诸如能量、载波信号、电磁波和信号本身的介质。
[0188]
在上面的描述中提供了具体细节以提供对本文提供的实施例和示例的透彻理解。然而,本领域的普通技术人员将理解,可以在没有这些具体细节的情况下实施这些实施例。为了解释的清楚起见,在一些情况下,本技术可以被呈现为包括单独的功能框,这些功能框包括设备、设备组件、在以软件或硬件和软件的组合体现的方法中的步骤或例程。可以使用不同于图中所示和/或本文所述的那些组件的附加组件。例如,电路、系统、网络、过程和其他组件可以显示为框图形式的组件,以免不必要的细节使实施例模糊不清。在其他情况下,可以在没有不必要细节的情况下示出众所周知的电路、过程、算法、结构和技术,以避免使实施例模糊不清。
[0189]
上文可以将各个实施例描述为描绘为流程图、流程框图、数据流图、结构图或框图的过程或方法。尽管流程图可以将操作描述为顺序过程,但许多操作可以并行或同时执行。此外,可以重新安排操作的顺序。过程在其操作完成时终止,但可能有图中未包括的附加步骤。过程可以对应于方法、函数、步骤、子例程、子程序等。当过程程对应于函数时,其终止可以对应于函数返回到调用函数或主函数。
[0190]
根据上述示例的过程和方法可以使用存储在计算机可读介质中或以其他方式从计算机可读介质可用的计算机可执行指令来实现。这样的指令可以包括例如导致或以其他方式配置通用计算机、专用计算机或处理设备执行特定功能或功能组的指令和数据。可以通过网络访问所使用的部分计算机资源。计算机可执行指令可以是例如二进制文件、诸如汇编语言的中间格式指令、固件、源代码等。可用于存储指令、使用的信息和/或在根据所描述示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、具有非易
失性存储器的usb设备、网络存储设备等。
[0191]
根据这些公开内容实施过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合,并且可以采用多种形状因数中的任何一种。当以软件、固件、中间件或微代码实现时,执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在计算机可读或机器可读介质中。(多个)处理器可以执行必要的任务。形状因数的典型示例包括膝上型电脑、移动电话(例如,智能手机或其他类型的移动电话)、平板设备或其他小形状因数个人计算机、个人数字助理、机架式设备、独立设备等。本文描述的功能也可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能也可以在不同芯片之间的电路板上或在单个设备中执行的不同过程中实现。
[0192]
指令、用于传送这样的指令的介质、用于执行它们的计算资源以及用于支持这样的计算资源的其他结构是用于提供本公开中描述的功能的示例手段。
[0193]
在以上描述中,参考本技术的具体实施例描述了本技术的方面,但是本领域的技术人员将认识到本技术不限于此。因此,虽然本文已经详细描述了本技术的说明性实施例,但应当理解,本发明的构思可以以其他方式体现和采用,并且所附权利要求旨在被解释为包括这样的变化,除了受现有技术的限制。可以单独或联合使用上述应用的各种特征和方面。此外,在不脱离本说明书的更广泛的精神和范围的情况下,实施例可以用于本文描述的环境和应用之外的任何数量的环境和应用。因此,说明书和附图被认为是说明性的而不是限制性的。为了说明的目的,以特定顺序描述方法。应当理解,在替代实施例中,可以以与所描述的顺序不同的顺序执行这些方法。
[0194]
普通技术人员将理解,本文中使用的小于(“《”)和大于(“》”)符号或术语可以分别用小于或等于(“≤”)和大于或等于(“≥”)符号代替,而不脱离本说明书的范围。
[0195]
在组件被描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过设计电子电路或其他硬件来执行操作、通过对可编程电子电路(例如,微处理器或其他合适的电子电路)编程来执行操作,或其任何组合来实现。
[0196]
短语“耦合到
……”
是指直接或间接物理连接到另一个组件的任何组件,和/或与另一个组件直接或间接地通信的任何组件(例如,通过有线或无线连接和/或其他合适的通信接口连接到其他组件)。
[0197]
权利要求语言或其他语言陈述集合“中的至少一个”和/或集合中的“一个或多个”表明该集合的一个成员或该集合的多个成员(任何组合)满足权利要求。例如,权利要求语言表述“a和b中的至少一个”或“a或b中至少一个”是指a、b或a和b。在另一示例中,权利要求语言表述“a、b和c中的至少一个或“a、b或c中的至少一个”是指a、b、c,或a和b,或a和c,或b和c,或a和b和c。语言集合“中的至少一个”和/或集合的“一个或多个”不将该集合限制为该集合中列出的项目。例如,权利要求语言表述“a和b中的至少一个”或“a或b中的至少一个”可以表示a、b或a和b,并且可以另外包括a和b集合中未列出的项目。
[0198]
结合本文公开的实施例描述的各种说明性逻辑框、模块、电路和算法步骤可以实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,各种说明性组件、框、模块、电路和步骤已在上面根据它们的功能进行了一般性描述。这样的功能是作为硬件还是软件来实现取决于特定的应用和施加给整个系统的设计约束。技术人员可以针对每个特定的应用以不同的方式实现所描述的功能,但是这样的实现决策不应
被解释为导致偏离本技术的范围。
[0199]
本文描述的技术也可以在电子硬件、计算机软件、固件或其任意组合中实现。这样的技术可以在多种设备中的任何设备中实现,诸如通用计算机、无线通信设备手持机或具有多种用途的集成电路设备,包括在无线通信设备手持机和其他设备中的应用。描述为模块或组件的任何特征都可以在集成逻辑设备中一起实现,或者作为分立但可互操作的逻辑设备单独实现。如果以软件实现,则这些技术可以至少部分地由包括程序代码的计算机可读数据存储介质实现,该程序代码包括当被执行时执行上述方法中的一种或多种方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,其可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,诸如例如同步动态随机存取存储器(sdram)的随机存取存储器(ram)、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦可编程只读存储器(eeprom)、闪存、磁或光数据存储介质等。这些技术附加地或可替代地可以至少部分地通过计算机可读通信介质来实现,该计算机可读通信介质承载或传送指令或数据结构形式的程序代码并且可以由计算机访问、读取和/或执行,诸如传播的信号或波。
[0200]
程序代码可以由处理器执行,该处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)、或其他等效的集成或分立逻辑电路。这样的处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp核心的组合,或任何其他这样的配置。因此,本文所用的术语“处理器”可指代任何前述结构、前述结构的任何组合或适合于实施本文所描述的技术的任何其他结构或装置。
[0201]
本公开的说明性方面包括:
[0202]
方面1:一种用于生成一个或多个模型的装置,包括存储器和耦合到存储器的一个或多个处理器(例如,在电路中实现)。存储器可以被配置为存储数据,诸如一个或多个帧、一个或多个三维模型和/或其他数据。一个或多个处理器被配置为:基于描绘对象的一个或多个帧生成对象的第一部分的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括对象的一个或多个区域的指示;基于对象的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示对象的第一部分和对象的第二部分;基于掩蔽和3d基础模型生成对象的第二部分的3d模型。
[0203]
方面2:根据方面1所述的装置,其中,第二部分的3d模型对应于作为对象的一部分的项目。
[0204]
方面3:根据方面1或2中任一方面所述的装置,其中,对象是人,对象的第一部分对应于人的头部,对象的第二部分对应于人的头部上的头发。
[0205]
方面4:根据方面1所述的装置,其中,第二部分的3d模型对应于与对象可分离和相对于对象可移动中的至少一个的项目。
[0206]
方面5:根据方面1或4中任一方面所述的装置,其中,对象是人,3d模型的第一部分对应于人的身体区域,并且3d模型的第二部分对应于人穿戴的配饰或衣服。
[0207]
方面6:根据方面1至5中任一方面所述的装置,其中,对象的第二部分的3d模型邻
接对象的第一部分的3d模型的至少一部分。
[0208]
方面7:根据方面1至6中任一方面所述的装置,其中,对象的第二部分的3d模型不与对象的第一部分的3d模型可见地冲突。
[0209]
方面8:根据方面1至7中任一方面所述的装置,其中,一个或多个处理器被配置为:从帧序列中选择一个或多个帧作为关键帧,其中,每个关键帧以不同的角度描绘对象。
[0210]
方面9:根据方面1至8中任一方面所述的装置,其中,一个或多个处理器被配置为:确定第一关键帧不满足质量阈值;输出反馈以促进将对象定位为对应于第一关键帧;基于反馈捕获至少一个帧;将来自至少一个帧中的帧插入关键帧。
[0211]
方面10:根据方面1至9中任一方面所述的装置,其中,一个或多个处理器被配置为:针对沿轴选择的第一角度,从对象的第一部分的3d模型生成第一位图;至少部分地通过将第一位图与帧序列的参考帧进行比较来生成第一度量;基于比较的结果选择第一关键帧。
[0212]
方面11:根据方面10所述的装置,其中,为了将第一位图与参考帧进行比较,一个或多个处理器被配置为在第一位图和参考帧的位图的并集上执行交集。
[0213]
方面12:根据方面10或11中任一方面所述的装置,其中,一个或多个处理器被配置为:至少部分地通过将参考帧与帧序列的第二帧的位图进行比较来生成第二度量帧;以及基于第二度量选择第二帧作为第一关键帧。
[0214]
方面13:根据方面1至12中任一方面所述的装置,其中,一个或多个处理器被配置为:将一个或多个帧中的每个帧分割成一个或多个区域;以及为一个或多个帧中的每个帧生成掩蔽,其中每个帧的掩蔽包括一个或多个区域的指示。
[0215]
方面14:根据方面1至13中任一方面所述的装置,其中,一个或多个处理器被配置为:确定帧的对象的第一部分的3d模型的光栅化、对象的第一区域的第一掩蔽、以及对象的第二区域的第二掩蔽之间的并集;以及基于确定的并集为帧生成掩蔽。
[0216]
方面15:根据方面1至14中任一方面所述的装置,其中,一个或多个帧中的每个帧的掩蔽包括标识对象的第一区域的第一掩蔽和标识对象的第二区域的第二掩蔽。
[0217]
方面16:根据方面1至15中任一方面所述的装置,其中,一个或多个处理器被配置为:将3d基础模型的每个顶点的值初始化为初始值,其中,初始值指示对应的顶点位于第一区域内;将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中;确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽;以及基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。
[0218]
方面17:根据方面14至16中任一方面所述的装置,其中,第一区域是面部区域并且第二区域是头发区域。
[0219]
方面18:根据方面16或17中任一方面所述的装置,其中,当第一顶点被投射到第二区域上时第一顶点的值增加,并且当第一顶点被投射到第二区域上时第一顶点的值增加。
[0220]
方面19:根据方面16至18中任一方面所述的装置,其中,一个或多个处理器被配置为:基于每个顶点的值确定平均概率,其中,顶点对应于对象的第一部分的3d模型的概率基于顶点的值与平均概率的比较。
[0221]
方面20:根据方面1至19中任一方面所述的装置,其中,一个或多个处理器被配置为:基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧
相关联的掩蔽;确定第一部分的3d模型的每个顶点是否位于与该帧相关联的掩蔽的第一区域内;以及基于第一部分的3d模型的顶点在与该帧相关联的掩蔽的第一区域内来提取3d基础模型。
[0222]
方面21:根据方面20所述的装置,其中,对象是人并且第一区域对应于人的面部区域和人的头发区域。
[0223]
方面22:根据方面20所述的装置,其中,对象是人并且第一区域对应于人的身体区域和人穿戴的服装区域。
[0224]
方面23:根据方面20至22中任一方面所述的装置,其中,一个或多个处理器被配置为:基于一个或多个顶点中的每个顶点在来自一个或多个帧中的帧的一个或多个区域中的区域内的概率,从3d基础模型中去除一个或多个顶点。
[0225]
方面24:根据方面1至23中任一方面所述的装置,其中,一个或多个处理器被配置为:使用第一部分的3d模型和第二部分的3d模型在应用中生成动画,其中对象包括人,第一部分的3d模型对应于人的头部,第二部分的3d模型对应于人的头发。
[0226]
方面25:根据方面1至24中任一方面所述的装置,其中,应用包括发送和接收音频和文本中的至少一个的功能。
[0227]
方面26:根据方面1至25中任一方面所述的装置,其中,第一部分的3d模型和第二部分的3d模型描绘应用的用户。
[0228]
方面27:根据方面1至26中任一方面所述的装置,其中,一个或多个处理器被配置为:接收对应于选择用于修改第二部分的3d模型的至少一个图形控件的输入;以及基于接收的输入来修改第二部分的3d模型。
[0229]
方面28:根据方面1至27中任一方面所述的装置,其中,一个或多个帧与对象沿第一轴的旋转相关联。
[0230]
方面29:根据方面28所述的装置,其中,一个或多个帧与对象沿第二轴的旋转相关联。
[0231]
方面30:根据方面29所述的装置,其中,第一轴对应于偏航轴并且第二轴对应于俯仰轴。
[0232]
方面31:一种用于生成一个或多个模型的方法。该方法包括:基于描绘对象的一个或多个帧生成对象的第一部分的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括对象的一个或多个区域的指示;基于对象的第一部分的3d模型和掩蔽来生成3d基础模型,3d基础模型表示对象的第一部分和对象的第二部分;以及基于掩蔽和3d基础模型生成对象的第二部分的3d模型。
[0233]
方面32:根据方面31所述的方法,其中,第二部分的3d模型对应于作为对象的一部分的项目。
[0234]
方面33:根据方面31或32中任一方面所述的方法,其中,对象是人,对象的第一部分对应于人的头部,并且对象的第二部分对应于人的头部上的头发。
[0235]
方面34:根据方面31所述的方法,其中,第二部分的3d模型对应于与对象可分离和相对于对象可移动中的至少一个的项目。
[0236]
方面35:根据方面31或34中任一方面所述的方法,其中,对象是人,3d模型的第一部分对应于人的身体区域,并且3d模型的第二部分对应于人穿戴的配饰或衣服。
[0237]
方面36:根据方面31至35中任一方面所述的方法,其中,对象的第二部分的3d模型邻接对象的第一部分的3d模型的至少一部分。
[0238]
方面37:根据方面31至36中任一方面所述的方法,其中,对象的第二部分的3d模型不与对象的第一部分的3d模型可见地冲突。
[0239]
方面38:根据方面31至37中任一方面所述的方法,还包括:从帧序列中选择一个或多个帧作为关键帧,其中每个关键帧以不同的角度描绘对象。
[0240]
方面39:根据方面31至38中任一方面所述的方法,还包括:确定第一关键帧不满足质量阈值;输出反馈以促进将对象定位为对应于第一关键帧;基于反馈捕获至少一个帧;将来自至少一个帧中的帧插入关键帧。
[0241]
方面40:根据方面31至39中任一方面所述的方法,还包括:针对沿轴选择的第一角度,从对象的第一部分的3d模型生成第一位图;至少部分地通过将第一位图与帧序列的参考帧进行比较来生成第一度量;以及基于比较的结果来选择第一关键帧。
[0242]
方面41:根据方面40所述的方法,其中,将第一位图与参考帧进行比较包括在第一位图与参考帧的位图的并集上执行交集。
[0243]
方面42:根据方面40或41中任一方面所述的方法,还包括:至少部分地通过将参考帧与帧序列的第二帧的位图进行比较来生成第二度量;以及基于第二度量来选择第二帧作为第一关键帧。
[0244]
方面43:根据方面31至42中任一方面所述的方法,还包括:将一个或多个帧中的每个帧分割成一个或多个区域;以及为一个或多个帧中的每个帧生成掩蔽,其中每个帧的掩蔽包括一个或多个区域的指示。
[0245]
方面44:根据方面31至43中任一方面所述的装置,其中,一个或多个处理器被配置为:确定帧的对象的第一部分的3d模型的光栅化、对象的第一区域的第一掩蔽、以及对象的第二区域的第二掩蔽之间的并集;以及基于确定的并集为帧生成掩蔽。
[0246]
方面45:根据方面31至42中任一方面所述的方法,其中,一个或多个帧中的每个帧的掩蔽包括标识对象的第一区域的第一掩蔽和标识对象的第二区域的第二掩蔽。
[0247]
方面46:根据方面31至43中任一方面所述的方法,还包括:将3d基础模型的每个顶点的值初始化为初始值,其中,初始值指示对应的顶点设置在第一区域内;将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中;确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽;以及基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。
[0248]
方面47:根据方面44至46中任一方面所述的方法,其中,第一区域是面部区域并且第二区域是头发区域。
[0249]
方面48:根据方面46或47中任一方面所述的方法,其中,当第一顶点被投射到第二区域上时第一顶点的值增加,并且当第一顶点被投射到第二区域上时第一顶点的值增加。
[0250]
方面49:根据方面15至48中任一方面所述的方法,还包括:基于每个顶点的值确定平均概率,其中,顶点对应于对象的第一部分的3d模型的概率基于顶点的值与平均概率的比较。
[0251]
方面50:根据方面31至49中任一方面所述的方法,还包括:基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关联的掩蔽;确定第一部
分的3d模型的每个顶点是否位于与该帧相关联的掩蔽的第一区域内;以及基于第一部分的3d模型的顶点在与该帧相关联的掩蔽的第一区域内来提取3d基础模型。
[0252]
方面51:根据方面50所述的方法,其中,对象是人并且第一区域对应于人的面部区域和人的头发区域。
[0253]
方面52:根据方面50所述的方法,其中,对象是人并且第一区域对应于人的身体区域和人穿戴的服装区域。
[0254]
方面53:根据方面50至52中任一方面所述的方法,还包括:基于一个或多个顶点中的每个顶点在来自一个或多个帧中的帧的一个或多个区域中的区域内的概率,从3d基础模型中去除一个或多个顶点。
[0255]
方面54:根据方面31至53中任一方面所述的方法,还包括:使用第一部分的3d模型和第二部分的3d模型在应用中生成动画,其中,对象包括人,第一部分的3d模型对应人的头部,第二部分的3d模型对应人的头发。
[0256]
方面55:根据方面31至54中任一方面所述的方法,其中,应用包括发送和接收音频和文本中的至少一个的功能。
[0257]
方面56:根据方面31至55中任一方面所述的方法,其中,第一部分的3d模型和第二部分的3d模型描绘应用的用户。
[0258]
方面57:根据方面31至56中任一方面所述的方法,还包括:接收对应于选择用于修改第二部分的3d模型的至少一个图形控件的输入;基于接收的输入修改第二部分的3d模型。
[0259]
方面58:根据方面31至57中任一方面所述的方法,其中,一个或多个帧与对象沿第一轴的旋转相关联。
[0260]
方面59:根据方面58所述的方法,其中,一个或多个帧与对象沿第二轴的旋转相关联。
[0261]
方面60:根据方面59所述的方法,其中,第一轴对应于偏航轴并且第二轴对应于俯仰轴。
[0262]
方面61:一种存储指令的计算机可读存储介质,指令在被执行时使一个或多个处理器执行根据方面1至60中的任一方面的操作。
[0263]
方面62:一种用于数字成像的装置,该装置包括用于执行根据方面1至60中的任一方面的操作的部件。
[0264]
方面63:一种用于生成一个或多个模型的装置,包括存储器和耦合到存储器的一个或多个处理器(例如,在电路中实现)。存储器可以被配置为存储数据,诸如一个或多个帧、一个或多个三维模型和/或其他数据。一个或多个处理器被配置为:基于描绘人的一个或多个帧生成人的头部的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括人的一个或多个区域的指示;基于人的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示人的头部和人的头发;以及基于掩蔽和3d基础模型,生成人的头发的3d模型。
[0265]
方面64:根据方面63所述的装置,还包括:从帧序列中选择一个或多个帧作为关键帧,其中每个关键帧以不同的角度描绘人。
[0266]
方面65:根据方面63至64中任一方面所述的装置,还包括:确定第一关键帧不满足质量阈值;输出反馈以促进将人定位为对应于第一关键帧;基于反馈捕获至少一个帧;将来
自至少一个帧中的帧插入关键帧。
[0267]
方面66:根据方面63至65中任一方面所述的装置,其中,为一个或多个帧生成掩蔽包括:将一个或多个帧中的每个帧分割成一个或多个区域;以及为一个或多个帧中的每个帧生成掩蔽,其中每个帧的掩蔽包括一个或多个区域的指示。
[0268]
方面67:根据方面63至66中任一方面所述的装置,其中,生成3d基础模型包括:基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关联的掩蔽;确定头部的3d模型的每个顶点是否位于与该帧相关联的掩蔽的头部区域内;以及基于头部的3d模型的顶点在与该帧相关联的掩蔽的头部区域内来提取3d基础模型。
[0269]
方面68:根据方面63至67中任一方面所述的装置,还包括:基于一个或多个顶点中的每个顶点在头部区域之外的概率,从3d基础模型中去除一个或多个顶点。
[0270]
方面69:根据方面63至68中任一方面所述的装置,其中,对象的第二部分的3d模型邻接对象的第一部分的3d模型的至少一部分。
[0271]
方面70:根据方面63至69中任一方面所述的装置,其中,人的头发的3d模型不与人的头部的3d模型可见地冲突。
[0272]
方面71:根据方面63至70中任一方面所述的装置,其中,生成人的头发的3d模型包括:将3d基础模型的每个顶点的值初始化为初始值,其中,初始值指示对应的顶点位于头发区域内;将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中;确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽,其中,第一掩蔽对应于面部区域,第二掩蔽对应于头发区域;以及基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。
[0273]
方面72:根据方面71所述的装置,其中,当第一顶点被投射到第二掩蔽(对应于头发区域)上时第一顶点的值增加,并且其中当第一顶点的值被投射到第一掩蔽(对应于面部区域)上时第一顶点的值减小。
[0274]
方面73:根据方面63至72中任一方面所述的装置,还包括:基于每个顶点的值来确定平均概率,其中,顶点对应于头发的3d模型的概率基于顶点的值与平均概率的比较。
[0275]
方面74:一种生成一个或多个模型的方法,包括:基于描绘人的一个或多个帧来生成人的头部的三维(3d)模型;为一个或多个帧生成掩蔽,该掩蔽包括人的一个或多个区域的指示;基于人的第一部分的3d模型和掩蔽生成3d基础模型,3d基础模型表示人的头部和人的头发;以及基于掩蔽和3d基础模型生成人的头发的3d模型。
[0276]
方面75:根据方面74所述的方法,还包括:从帧序列中选择一个或多个帧作为关键帧,其中,每个关键帧以不同的角度描绘人。
[0277]
方面76:根据方面74至75中任一方面所述的方法,还包括:确定第一关键帧不满足质量阈值;输出反馈以促进将人定位为对应于第一关键帧;基于反馈捕获至少一个帧;将来自至少一个帧中的帧插入关键帧。
[0278]
方面77:根据方面74至76中任一方面所述的方法,其中,为一个或多个帧生成掩蔽包括:将一个或多个帧中的每个帧分割成一个或多个区域;以及为一个或多个帧中的每个帧生成掩蔽,其中,每个帧的掩蔽包括一个或多个区域的指示。
[0279]
方面78:根据方面74至77中任一方面所述的方法,其中,生成3d基础模型包括:基于与一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与该帧相关
联的掩蔽;确定头部的3d模型的每个顶点是否位于与该帧相关联的掩蔽的头部区域内;基于头部的3d模型的顶点在与该帧相关联的掩蔽的头部区域内来提取3d基础模型。
[0280]
方面79:根据方面74至78中任一方面所述的方法,还包括:基于一个或多个顶点中的每个顶点在头部区域之外的概率,从3d基础模型中去除一个或多个顶点。
[0281]
方面80:根据方面74至79中任一方面所述的方法,其中,对象的第二部分的3d模型邻接对象的第一部分的3d模型的至少一部分。
[0282]
方面81:根据方面74至80中任一方面所述的方法,其中,人的头发的3d模型不与人的头部的3d模型可见地冲突。
[0283]
方面82:根据方面74至81中任一方面所述的方法,其中,生成人的头发的3d模型包括:将3d基础模型的每个顶点的值初始化为初始值,其中初始值指示对应的顶点位于头发区域内;将3d基础模型的第一顶点投射到一个或多个帧中的关键帧中;确定3d基础模型的顶点被投射到第一关键帧的第一掩蔽还是第二掩蔽,其中第一掩蔽对应于面部区域,第二掩蔽对应于头发区域;以及基于对应的顶点被投射到第一掩蔽还是第二掩蔽来调整每个顶点的值。
[0284]
方面83:根据方面82所述的方法,其中,当第一顶点被投射到第二掩蔽(对应于头发区域)上时第一顶点的值增加,并且其中当第一顶点的值被投射到第一掩蔽(对应于面部区域)上时第一顶点的值减小。
[0285]
方面84:根据方面74至83中任一方面所述的方法,还包括:基于每个顶点的值确定平均概率,其中,顶点对应于头发的3d模型的概率基于顶点的值与平均概率的比较。
[0286]
方面85:一种计算机可读介质,包括用于使计算机或处理器执行根据方面63至84中任一方面的操作的至少一个指令。
[0287]
方面86:一种用于生成一个或多个模型的装置,该装置包括用于执行根据方面63至84中的任一方面的操作的部件。
[0288]
方面87:一种用于生成一个或多个模型的装置。该装置包括至少一个存储器和耦合到该至少一个存储器的至少一个处理器。至少一个处理器被配置为执行根据方面1至60中的任一方面以及方面63至84中的任一方面的操作。
[0289]
方面88:一种生成一个或多个模型的方法,该方法包括根据方面1至60中的任一方面以及方面63至84中的任一方面的操作。
[0290]
方面89:一种计算机可读介质,包括用于使计算机或处理器执行根据方面1至60中任一方面和方面63至84中任一方面的操作的至少一个指令。
[0291]
方面90:一种用于生成一个或多个模型的装置,该装置包括用于执行根据方面1至60中的任一方面以及方面63至84中的任一方面的操作的部件。
技术特征:
1.一种用于生成一个或多个模型的装置,包括:存储器;以及耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:基于描绘对象的一个或多个帧生成所述对象的第一部分的三维3d模型;为所述一个或多个帧生成掩蔽,所述掩蔽包括所述对象的一个或多个区域的指示;基于所述对象的所述第一部分的所述3d模型和所述掩蔽生成3d基础模型,所述3d基础模型表示所述对象的所述第一部分和所述对象的第二部分;以及基于所述掩蔽和所述3d基础模型生成所述对象的所述第二部分的3d模型。2.根据权利要求1所述的装置,其中,所述第二部分的所述3d模型对应于作为所述对象的一部分的项目。3.根据权利要求1所述的装置,其中,所述对象是人,所述对象的所述第一部分对应于所述人的头部,并且所述对象的所述第二部分对应于所述的人所述头部上的头发。4.根据权利要求1所述的装置,其中,所述第二部分的所述3d模型对应于与所述对象能够分离和相对于所述对象能够移动中的至少一个的项目。5.根据权利要求1所述的装置,其中,所述对象是人,所述对象的所述第一部分对应于所述人的身体区域,并且所述对象的所述第二部分对应于所述人穿戴的配饰或衣服。6.根据权利要求1所述的装置,其中,所述对象的所述第二部分的所述3d模型邻接所述对象的所述第一部分的所述3d模型的至少一部分。7.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:将所述一个或多个帧中的每个帧分割成一个或多个区域;以及为所述一个或多个帧中的每个帧生成掩蔽,其中每个帧的所述掩蔽包括所述一个或多个区域的指示。。8.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:确定帧的所述对象的所述第一部分的所述3d模型的光栅化、所述对象的第一区域的第一掩蔽、以及所述对象的第二区域的第二掩蔽之间的并集;以及基于确定的并集为所述帧生成掩蔽。9.根据权利要求8所述的装置,其中,所述第一区域是所述对象的面部区域,并且所述第二区域是所述对象的头发区域。10.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:基于与所述一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与所述帧相关联的掩蔽;确定所述第一部分的所述3d模型的每个顶点是否位于与所述帧相关联的所述掩蔽的第一区域内;以及基于所述第一部分的所述3d模型的顶点在与所述帧相关联的所述掩蔽的所述第一区域内来提取所述3d基础模型。11.根据权利要求10所述的装置,其中,所述对象是人并且所述第一区域对应于所述人的面部区域和所述人的头发区域。12.根据权利要求10所述的装置,其中,所述对象是人并且所述第一区域对应于所述人的身体区域和所述人穿戴的服装区域。
13.根据权利要求10所述的装置,其中,所述一个或多个处理器被配置为:基于一个或多个顶点中的每个顶点在来自所述一个或多个帧中的帧的所述一个或多个区域中的区域内的概率,从所述3d基础模型中去除所述一个或多个顶点。14.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:使用所述第一部分的所述3d模型和所述第二部分的所述3d模型在应用中生成动画,其中所述对象包括人,所述第一部分的所述3d模型对应于所述人的头部,并且所述第二部分的所述3d模型对应于所述人的头发。15.根据权利要求14所述的装置,其中,所述应用包括发送和接收音频和文本中的至少一个的功能。16.根据权利要求14所述的装置,其中,所述第一部分的所述3d模型和所述第二部分的所述3d模型描绘所述应用的用户。17.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:接收对应于选择用于修改所述第二部分的所述3d模型的至少一个图形控件的输入;以及基于接收的输入修改所述第二部分的所述3d模型。18.一种生成一个或多个模型的方法,包括:基于描绘对象的一个或多个帧生成所述对象的第一部分的三维3d模型;为所述一个或多个帧生成掩蔽,所述掩蔽包括所述对象的一个或多个区域的指示;基于所述对象的所述第一部分的所述3d模型和所述掩蔽生成3d基础模型,所述3d基础模型表示所述对象的所述第一部分和所述对象的第二部分;以及基于所述掩蔽和所述3d基础模型生成所述对象的所述第二部分的3d模型。19.根据权利要求19所述的方法,其中,所述第二部分的所述3d模型对应于作为所述对象的一部分的项目。20.根据权利要求19所述的方法,其中,所述对象是人,所述对象的所述第一部分对应于所述人的头部,并且所述对象的所述第二部分对应于所述人的所述头部上的头发。21.根据权利要求19所述的方法,其中,所述第二部分的所述3d模型对应于与所述对象能够分离和相对于所述对象能够移动中的至少一个的项目。22.根据权利要求19所述的方法,其中,所述对象是人,所述对象的所述第一部分对应于所述人的身体区域,并且所述对象的所述第二部分对应于所述人穿戴的配饰或衣服。23.根据权利要求19所述的方法,其中,所述对象的所述第二部分的所述3d模型邻接所述对象的所述第一部分的所述3d模型的至少一部分。24.根据权利要求19所述的方法,其中,为所述一个或多个帧生成所述掩蔽包括:将所述一个或多个帧中的每个帧分割成一个或多个区域;以及为所述一个或多个帧中的每个帧生成掩蔽,其中,每个帧的所述掩蔽包括所述一个或多个区域的指示。25.根据权利要求19所述的方法,其中,为所述一个或多个帧生成所述掩蔽包括:确定帧的所述对象的所述第一部分的所述3d模型的光栅化、所述对象的所述第一区域的第一掩蔽和所述对象的第二区域的第二掩蔽之间的并集;以及基于确定的并集为所述帧生成掩蔽。
26.根据权利要求19所述的方法,其中,生成所述3d基础模型包括:基于与所述一个或多个帧中的帧相关联的姿势信息将初始3d模型的每个顶点投射到与所述帧相关联的掩蔽;确定所述第一部分的所述3d模型的每个顶点是否位于与所述帧相关联的所述掩蔽的第一区域内;以及基于所述第一部分的所述3d模型的顶点在与所述帧相关联的所述掩蔽的所述第一区域内来提取所述3d基础模型。27.根据权利要求26所述的方法,还包括:基于一个或多个顶点中的每个顶点在来自所述一个或多个帧中的帧的所述一个或多个区域中的区域内的概率,从所述3d基础模型中去除所述一个或多个顶点。28.根据权利要求19所述的方法,还包括:使用所述第一部分的所述3d模型和所述第二部分的所述3d模型在应用中生成动画,其中所述对象包括人,所述第一部分的所述3d模型对应于所述人的头部,并且所述第二部分的所述3d模型对应于所述人的头发。29.根据权利要求28所述的方法,其中,所述第一部分的所述3d模型和所述第二部分的所述3d模型描绘所述应用的用户。30.根据权利要求19所述的方法,还包括:接收对应于选择用于修改所述第二部分的所述3d模型的至少一个图形控件的输入;以及基于接收的输入修改所述第二部分的所述3d模型。
技术总结
提供了用于执行基于视频的活动识别的系统和技术。例如,过程可以包括基于描绘对象的一个或多个帧生成对象的第一部分的三维(3D)模型。该过程还可以包括为一个或多个帧生成掩蔽,该掩蔽包括对象的一个或多个区域的指示。该过程还可以包括基于对象的第一部分的3D模型和掩蔽生成3D基础模型,该3D基础模型表示对象的第一部分和对象的第二部分。该过程可以包括基于掩蔽和3D基础模型生成对象的第二部分的3D模型。的3D模型。的3D模型。
技术研发人员:邓艳 M
受保护的技术使用者:高通股份有限公司
技术研发日:2022.01.18
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/