3d对象跟踪的制作方法_3

文档序号:9756981阅读:来源:国知局
束一个或多个线性方程的解。附加地,如记载的那样,(一个 或多个)角约束和/或(一个或多个)碰撞/接触约束可以基于3D模型意图表示的3D对象的一 个或多个已知的性质。(一个或多个)表面约束可以基于3D对象的3D图像和/或点云映射。
[0039]在某些实施例中,求解器模块可以被配置成提供多个解,每个解表示诸如3D模型 215之类的3D模型的不同姿态。例如,求解器模块可以输出在5 20处的解1到在5 2 5处的解η。 在某些实施例中,η可以等于五,意味着求解器模块可以被配置成提供对线性方程的约束集 合的五个不同的解。
[0040] 解中的一个或多个可以基于一个或多个开始假设或启发。例如,如果η等于五,则 求解器模块可以接受在530处的假设/启发1到在535处的假设/启发η-1作为输入。换言之, 求解器模块可以提供不基于开始假设/启发的诸如在520处的解1的至少一个解。在某些实 施例中,η可以大于或小于五。附加地,求解器模块可以接受较大或较小数量的假设/启发, 其可以或可以不与求解器模块输出的解的数量直接相关。解和假设/启发的数量在本文中 被包括作为示例并且每个的数量不意图是限制性的。
[0041] 可以由求解器模块使用的假设/启发的第一示例可以包括总运动偏置(bias)。具 体地,手运动相对于手的比例可以是非常快的。在单个计算机帧中,用户的手指可以移动大 于手指的宽度的距离。在某些情况下,当将帧的3D图像与先前帧的3D图像进行比较时,用户 的手的手指中的全部可能被整体移位一个手指。因此,总运动偏置可以模拟运动,其中整个 手可以被首先冻结成单个刚性体,由此不允许手的不同的骨头之间的相对运动。对对齐手 掌和手腕的解的约束连同在边界上的碰撞平面的包络可以克服被映射到不正确的手指的 点云中的点,并且由此导致更接近诸如3D对象100的3D对象的姿态地移动诸如3D模型215的 3D模型的姿态。然后,手模型可以被解冻,点云被重新映射,并且规则的模拟可以发生以更 新在3D对象中的任何局部运动(例如,手指的小运动)。
[0042] 假设/启发的第二示例可以是抓握偏置。例如,用户经常可以一致地移动他们的手 的手指中的全部,不管手指全部在拳头中蜷曲、展平,或被定位在那两个极端之间的某处。 因此,第二假设/启发可以约束手指的运动,使得手指的骨头中的一个或多个被约束在手中 的另一手指的骨头的平行的大约十度内。
[0043]假设/启发的第三示例可以是对附近的状态的偏置,其在补救其中求解器模块可 能输出不正确的解的情况中可以是有用的。例如,用户可能正在利用食指来指点,但替代地 求解器模块可能使拇指或中指适合于延伸的点云数据。在其他情况下,手指的错误数量升 高,并且局部吸引(local attraction)可能不升高或降低额外的手指可以是可能的。因此, 求解器模块或(未示出的)附加的求解器模块可以运行附加的模拟,其以根据先前帧的最适 合的姿态开始(如下文更详细讨论的那样),并且然后添加约束以将一个或多个手指升高或 降低到其中求解器模块(或替代的求解器模块)当前认为一个或多个手指处于的相反的姿 态中。在某些情况中,可以附加地旋转相邻的手指。
[0044]假设/启发的第四示例可以是姿态分类器偏置。例如,求解器模块可以包括自然的 五指检测器。求解器模块可以针对连续的段来检查3D对象110或200的扫描线,具体检查3D 对象200的点云映射210。当五段在一起时,求解器模块可以假设五段中的每个的顶部附接 到指尖,并且物理模拟可以由求解器模块或由与求解器模块通信地耦合的(未示出的)物理 模拟器运行。求解器模块和/或物理模拟器可以标识手是打开的、一般地垂直的和手掌面向 3D照相机。除上文描述的手掌面向姿态之外或者作为上文描述的手掌面向姿态的替代,可 以使用其他常见的姿态。
[0045]参考手描述了假设/启发的上文的示例,但假设/启发的上文的示例可以被延伸到 诸如用户的身体、两只手或某些其他类型的对象之类的其他3D对象。在某些实施例中,可以 使用附加的/替代的假设/启发。在某些实施例中,一个或多个假设/启发可以与另一假设/ 启发组合。
[0046]如上文描述的那样,求解器模块可以输出表示3D模型215的姿态的线性方程组的 解,诸如在520处的解1,并且该解可以基于诸如分别在500、505和510处标识的角约束、接触 约束和/或表面约束之类的约束中的一个或多个。求解器模块还可以分别基于在530和535 处标识的假设/启发1到假设/启发n-1来创建附加解,诸如(未示出的)解2到在525处的解n, 如上文描述的那样。
[0047]诸如误差分析模块142的误差分析模块然后可以在540处计算针对每个解的误差 度量。在实施例中,误差度量可以基于诸如3D模型215的3D模型的一个或多个段。在实施例 中,误差度量可以基于3D模型215中的段将不得不被移置以匹配3D对象200的点云映射210 的最小距离。该距离可以被定义为与它们到3D对象200的表面Η上的任何点一样地接近当前 段仏的表面的点云APi的集合中的其他点ρ的距离。在实施例中,距离度量d可以被定义为 _《燃ss斑k礙.、、、初:丨屬:《 ,其中g:可以是点云中的点的集合(等式!)。使用等式!, 针对在段Bi中的单独的点ei的误差度量拉尽呵以被定义为續衝> =應雜丨鐵|》:爲)丨i (等式2)。在实施例中,在等式2中描绘的误差度量可以被视为"局部"误差度量。
[0048] 如上文描述的那样,"局部"误差度量可以被视为由在远离点云映射210的一个或 多个点的距离的3D模型215的一个或多个点生成的误差度量。然而,除根据这些点生成误差 度量之外,在某些实施例中,还可以基于3D模型215的一个或多个点在点云映射210指示3D 对象200不在其中的空间中来附加地或替代地生成误差度量。在实施例中,第二误差度量er 可以被视为光线投射(ray-cast)度量。具体地,如果段Bi的质心或几何中心遮挡点云映射 210的背景部分,则针对段的光线投射误差以(爾)可以等于某个常量值。否则,如果段&的质 心不遮挡点云映射210的背景部分,则针对段的光线投射误差^芪)可以等于"0"。
[0049] 针对段Bi的总误差约_丨可以被定义为约嫩|輿):於(嚴)+以婦。不像可能是计算 密集的深度缓冲比较,误差度量匕#:可能不是对称的。然而,误差度量碟可能对点云映 射210中的像素的数量较不敏感,并且误差度量可以进一步指示3D模型215在何处对应 于或"适合" 3D对象100。
[0050] 在实施例中,求解器模块140或误差分析模块142然后可以在545处选择具有最小 误差的解,例如最低误差度量略:^1。如上文描述的那样,在某些实施例中,仏^可以仅是针 对3D模型215的单个段的误差度量。在某些实施例中,求解器模块可以基于针对仅单个段的 e域读在545处选择最小误差解,而在其他实施例中,求解器模块可以对针对在3D模型215中 的多个段的求和。在某些实施例中,可以仅基于针对一个或多个段的势(丧)、针对一个 或多个段的&(暴)或不同的误差度量在545处选择最小误差解。
[0051 ]最后,可以在550处标识3D模型215的姿态。在实施例中,可以至少部分地基于具有 最低误差度量的解在550处选择3D模型215的姿态。在某些实施例中,可以将选择的姿 态反馈到求解器模块以帮助在下一帧中在515处针对3D对象110或200的姿态求解。例如,在 帧龙处的3D模型205的姿态可以被用作在帧x+1处的针对模型的解的输入。
[0052]上文描述的过程501可以提供多个益处。例如,过程501可以不依赖于外部标记或 硬件来标识3D对象或3D模型的姿态。附加地,过程501可以是相对地计算非密集的,由此虑 及将在520和525处输出的多个解。多个解可以虑及将被标识的"最佳"解并且导致在550处 标识的姿态中的相对高的置信度。最后,上文描述的点云映射110的分样可以导致减少的数 据,甚至产生3D模型的姿态到3D对象的姿态的快速收敛。过程501可以产生附加的益处。 [0053]图6图示了根据各种实施例的示例计算设备600,其可以被用来捕获3D图像205、生 成点云映射210和或生成3D模型215。在某些实施例中,计算设备600可以是如上文描述的诸 如3D照相机105的3D照相机、与3D照相机耦合的一个或多个计算系统,或者计算设备600可 以跨诸如一个或多个计算系统和3D照相机之类的多个不同的物理部件分布。
[0054] 计算设备600可以包括多个部件、多个处理器603以及在某些情况下的一个或多个 通信芯片606。在各种实施例中,处理器603可以是处理器核。在各种实施例中,通信芯片606 还可以在物理上和/或电耦合到处理器603。在进一步的实现中,通信芯片606可以是处理器 603的部分。在各种实施例中,计算设备600可以包括印刷电路板("PCB")602。针对这些实
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1