CN103988150B - 用于初始化基于视觉的手跟踪器的快速指尖检测 - Google Patents
用于初始化基于视觉的手跟踪器的快速指尖检测 Download PDFInfo
- Publication number
- CN103988150B CN103988150B CN201280025109.XA CN201280025109A CN103988150B CN 103988150 B CN103988150 B CN 103988150B CN 201280025109 A CN201280025109 A CN 201280025109A CN 103988150 B CN103988150 B CN 103988150B
- Authority
- CN
- China
- Prior art keywords
- hand
- posture
- appendage
- video
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
- G06F3/0325—Detection arrangements using opto-electronic means using a plurality of light emitters or reflectors or a plurality of detectors forming a reference frame from which to derive the orientation of the object, e.g. by triangulation or on the basis of reference deformation in the picked up image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/1444—Selective acquisition, locating or processing of specific regions, e.g. highlighted text, fiducial marks or predetermined fields
- G06V30/1448—Selective acquisition, locating or processing of specific regions, e.g. highlighted text, fiducial marks or predetermined fields based on markings or identifiers characterising the document or the area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/107—Static hand or arm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/24—Aligning, centring, orientation detection or correction of the image
- G06V10/245—Aligning, centring, orientation detection or correction of the image by locating a pattern; Special marks for positioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
- User Interface Of Digital Computer (AREA)
- Image Processing (AREA)
- Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
Abstract
描述了用于实时地初始化基于视觉的手跟踪系统的系统和方法。所述用于初始化基于视觉的手跟踪系统的系统和方法对身体成像并且接收作为在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据的姿势数据,并且进行以下中的至少一个:使用身体的附肢确定身体的取向;以及使用取向和姿势数据中的至少一个来跟踪身体。
Description
相关申请
本申请要求2011年3月25日提交的美国专利申请号61/467,738的优先权。
本申请是美国专利申请号12/572,689、12/572,698、12/109,263、12/417,252、12/487,623、12/553,845、12/557,464、12/579,340、12/579,372、12/773,605和12/789,129的延续部分申请。
技术领域
描述了涉及控制系统和装置、更具体而言用于检测和初始化基于视觉的跟踪系统的实施方式。
背景技术
跟踪算法通常依靠关于目标在先前帧中的位置的信息。所有目标跟踪算法的一个关键方面是目标获取和跟踪初始化的问题。初始化是同时确定新的目标存在并且估计其位置以及任何其它相关形状和外观特征的过程。因此,在跟踪系统中,需要连续的手检测和跟踪初始化以支持多个目标以及从错误恢复。
通过引用的合并
在本说明书中提到的每个专利、申请和/或公布通过引用以其全部内容相同程度地合并到本文中,如同每个单独的专利、专利申请和/或公布具体地单独地被指出通过引用被合并一样。
附图说明
图1是根据实施方式的姿势控制系统的框图。
图1A是根据实施方式的、姿势控制系统中的指尖检测和手跟踪160的框图。
图1B是根据实施方式的指尖检测和手跟踪160的流程图。
图2是根据实施方式的标记标签的图。
图3是根据实施方式的姿势词汇中的姿态的图。
图4是根据实施方式的姿势词汇中的取向的图。
图5是根据实施方式的姿势词汇中的双手组合的图。
图6是根据实施方式的姿势词汇中的取向混合的图。
图7是根据实施方式的系统操作的流程图。
图8/1和图8/2示出了根据实施方式的示例命令。
图9是根据实施方式的包括使用色拉(slaw)、蛋白质和池(pool)的数据表示的处理环境的框图。
图10是根据实施方式的蛋白质的框图。
图11是根据实施方式的描述的框图。
图12是根据实施方式的摄取的框图。
图13是根据实施方式的色拉的框图。
图14A是根据实施方式的池中的蛋白质的框图。
图14B1和图14B2示出了根据实施方式的色拉头格式。
图14C是根据实施方式的使用蛋白质的流程图。
图14D是根据实施方式的构造或生成蛋白质的流程图。
图15是根据实施方式的包括使用色拉、蛋白质和池的数据交换的处理环境的框图。
图16是根据实施方式的处理环境的框图,该处理环境包括多个装置以及在多个装置中的一个或更多个装置上运行的大量程序,其中,等离子体构造(即,池、蛋白质和色拉)用于允许大量运行的程序共享并且集体地响应于装置而生成的事件。
图17是根据替选实施方式的处理环境的框图,该处理环境包括多个装置以及在多个装置中的一个或更多个装置上运行的大量程序,其中,等离子体构造(即,池、蛋白质和色拉)用于允许大量运行的程序共享并且集体地响应于装置而生成的事件。
图18是根据另一替选实施方式的处理环境的框图,该处理环境包括多个输入装置,该多个输入装置耦接在运行于多个装置中的一个或更多个装置上的大量程序之间,其中,等离子体构造(即,池、蛋白质和色拉)用于允许大量运行的程序共享并且集体地响应于装置而生成的事件。
图19是根据又另一替选实施方式的处理环境的框图,该处理环境包括多个装置,多个装置耦接在运行于多个装置中的一个或更多个装置上的大量程序之间,其中,等离子体构造(即,池、蛋白质和色拉)用于允许大量运行的程序共享并且集体地响应于装置而生成的事件。
图20是根据再又一替选实施方式的处理环境的框图,该处理环境包括多个装置,多个装置耦接在运行于多个装置中的一个或更多个装置上的大量程序之间,其中,等离子体构造(即,池、蛋白质和色拉)用于允许对运行的程序进行状态检测、可视化和调试。
图21是根据额外的替选实施方式的处理环境的框图,该处理环境包括多个装置,多个装置耦接在运行于多个装置中的一个或更多个装置上的大量程序之间,其中,等离子体构造(即,池、蛋白质和色拉)用于允许影响和控制在该处理池中产生和放置的状态信息的特征。
具体实施方式
本文中所描述的实施方式包括用于实时初始化基于视觉的手跟踪系统的系统和方法。本文中所描述的系统和方法将快速指尖检测与健壮的局部手跟踪组合,但并不这样被限制。然而,当单独使用时,任一部件对于可靠的基于姿势的接口来说不是完全足够的,该组合形成对于广泛的挑战性感知场景来说健壮的互补对。如下面更详细地描述的,在空间操作环境(SOE)的背景中,提供了系统和方法的实施方式。例如,图1是根据实施方式的空间操作环境(SOE)的框图。可替选地,包括姿势控制系统或基于姿势的控制系统的SOE可以被称为空间用户接口(SUI)或空间接口(SI)。
姿势控制系统使用所捕捉的姿势数据来检测、标识、跟踪和/或定位一个或更多个用户的手的位置。实施方式的姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。姿势数据包括但不限于像素、体素、像素数据、体素数据、静态图像数据、相机数据、视频图像数据、视频数据、传感器数据、深度数据、空间数据或沿着由深度数据暗示的表面的体积的数据中的一个或更多个。例如,如在本文中具体的实施方式中所描述的手跟踪包括在视频流的连续帧中检测和定位一个或更多个用户的手的位置的过程。在空间操作环境或其它姿势接口的背景中,这样的跟踪用于确定用户何时试图与系统通信,提供用于检测和识别临时扩展的姿势所需要的基本信息,以及允许交互如指示、拖放、选择或其他直接操作的实时控制和反馈,这里列举一些示例。
跟踪算法通常依赖关于先前帧中的目标的位置的信息。该信息,经常与形状和外观特征耦接,可以有助于在新的帧中界定和指导目标的搜索。整体计算负担中的所得到的减少允许实时处理速率,然而,时空背景有助于将真实的位置与错误的但视觉上相似的其它位置区别开。
所有目标跟踪算法的一个重要方面是目标获取和跟踪初始化的问题。初始化是同时确定存在一个新的目标并且估计其位置连同任何其它相关的形状和外观特征的过程。在健壮的系统中,跟踪初始化是正在进行的过程,因为无论新的目标何时出现,必须检测到它们。在姿势接口的情况下,当手进入相机的视野或当手在由场景中的一些其它对象的临时遮蔽之后变得可见时,初始化过程肩负着找到每个先前未观察到的手的任务。另外,由于多于一个用户出现或由于单个用户在协同交互中使用两个手,多个手可以存在于场景中。最终,由于挑战性的感知输入,可以产生假的检测,这可以导致与真实的手位置分离的错误的跟踪。在所有这些情况下,需要连续的手检测和跟踪初始化以支持多个目标以及从错误恢复。
用于跟踪初始化的指尖检测
图1A是根据实施方式的、姿势控制系统中的指尖检测和手跟踪160的框图。图1B是根据一种实施方式的指尖检测和手跟踪160的流程图。参照图1A,指尖检测和手跟踪160与一种实施方式的空间操作环境(SOE)集成,以及使用相机104的输出(例如,图1的104A至104D)生成到一种实施方式的应用和用户接口处理器107(例如,图1的预处理器105、姿势翻译器/输出106和计算机处理器107中的一个或更多个)的输入。应用和用户接口处理器107生成命令以控制一个或更多个屏幕上光标,并且向例如显示器103提供输出。在本文中更详细地描述SOE。
在手跟踪的背景中,指尖可以提供可靠的指标,该指标在可见视场内是相对不同的。即使仅粗糙的前景/背景分隔也是可以的,扩展的指尖也可以显示为具有圆头的相对直的前景像素组。本文中所描述的指尖检测和手跟踪实施方式的一个部件为用于指尖检测160的高效搜索和分类算法的应用。
指尖检测算法160学习如何快速区分包含指尖的像素区域与不包含指尖的像素区域。一种实施方式的指尖检测算法160实现高精确度而不管指尖取向,以及如果需要,可以被专门化以仅检测特定范围的取向内的指尖。关于较大范围的典型的工作站和桌面场景,指尖大小和视距很大程度上不变。
实施方式的指尖检测系统160采取条件分类器的级联的形式。该级联模型已经成功地用于其它计算机版本问题如脸和行人检测。该级联模型使用一系列过滤器并且又将测试像素区域呈现给每个过滤器。在每一级处,过滤器或者拒绝该区域或者将该区域传递至下一等级。如果级联中的最后一个过滤器接受该区域,那么完全模型将该区域分类为积极出现。如果任一级拒绝该区域,那么返回消极分类。以这种方式,由于很多像素区域会由前几个级中的一个级拒绝,这表示这些区域不再由其它级处理,该级联可以非常快速地操作。
对于指尖检测的问题,提取自定义特征,并且级联模型被训练使得该级联模型被具体地调谐成以二进制(前景和/或背景)图像找到指尖。一种实施方式特定地对该级联的不同等级进行排序,以帮助将执行时间最小化,因为该模型在每个视频帧的预处理步骤中偶遇大量的像素区域。通过平衡计算特定特征的计算负担与该特征正确地标识和拒绝宽范围的像素区域的能力来确定该排序。在该级联的开始处使用可以快速被计算以及仍然标识很多消极示例的级。
由一种实施方式的指尖检测算法160所使用的特征采用两种形式—盒子和环,但实施方式并不这样被限制。每个盒子由查询区域内的左上和右下坐标规定并且由盒子内的大量的前景像素来表征。类似地,环为盒子内的(未被填充的)矩形。可以通过总计区域表格很快速地计算盒子特征,该总计区域表格是给出给定像素左上的所有像素的和的预先计算的映射。然后,可以通过如下将来自映射的四个实体组合来以恒定时间计算任意的盒子内的总和,
sum(x,y->a,b)=sum(a,b)-sum(x-1,b)-sum(a,y-1)+sum(x-1,y-1)
其中(x,y)为盒子的左上角以及(a,b)为盒子的右下角。由于一种实施方式使用0值表示背景像素以及使用1值表示前景,盒子内的总和正好是该区域内的前景像素的数目。
如本文中所描述的,盒子特征的使用提供计算益处,同时提供快速拒绝具有太少前景像素的大区域。例如,在低分辨率图像中,一种实施方式可以在具有15×15尺寸的像素区域中搜索指尖。然而,如果模型学习到指尖通常具有至少10个前景像素,那么该模型可以在不解析每个15×15平方构成成分的情况下拒绝较大的区域。这直接遵循如下事实:如果大区域具有少于N个前景像素,那么没有子区域能够具有多于N个像素。
从而,根据一种实施方式的指尖的搜索以自顶向下递归的方式进行。开始于全图像的解析,将每个区域与指尖所需要的最小和相比较。如果失败,那么不测试子区域。否则,搜索通过将该区域划分成象限继续,直到象限匹配基本尺寸(在示例中15×15)。在这一点处,其余的级联模型用于对该区域分类。
一种实施方式的级联模型使用自适应提高(Adaboost)算法以学习级联中的每个级处的分类器,但并不这样被限制。由Adaboost组合的弱的学习者为“双树桩”,这类似于标准的决策树桩但可以具有一个或两个阈值,从而分别将特征空间划分成两个或三个区域。Adaboost使用该弱的学习者以评估描述查询像素的每个特征的效用。
一种实施方式的特征为该区域内的很多不同尺寸的盒子和环。例如,在尺寸15×15的区域中,存在25,425个内部盒子以及近似这么多环。Adaboost增加地选择帮助区分指尖与无指尖区域的特征,以及自动地形成所得到的决策树桩的加权组合,以形成内聚分类器。尽管如果期望不同的成本或性能权衡,任何分类器可以被替代,提高的双决策树桩的选择产生快速精确的分类器。
实施方式考虑图像预处理以及初始化和跟踪继续的互补性质。然而,可以直接根据单个视频帧直接检测指尖,这样的方法通常非常脆弱,因为它们依赖于在现实环境中经常不能实现的假设。实施方式的系统采用不同的方法,以便实现较高级别的健壮性。每个视频帧104被转换成二进制图像,二进制图像具有标记前景像素的目标,即,对应于手指、手和臂的这些像素具有值1而所有其它的像素被标记为0。通常,当背景模型被估计时,该处理被称为“背景减法”,并且当背景估计仅为前面的帧时,该处理被称为“时间差分”。然后,通过查找背景模型中的当前帧与相应像素之间的大的差异检测前景像素。
尽管历史悠久地研究背景减法方法,但没有产生同时精确、健壮、实时且自适应环境变化的算法。当前景对象静止时,由于非前景对象的运动、照明变化、阴影、传感器噪声和扩展周期,出现困难。因此,一种实施方式的系统起作用,使得精确的前景/背景分隔不是必须的。可替选地,通过配对指尖检测和帧间手跟踪的互补长处来实现健壮性。
当目标易于从单帧中检测到时或当基本的运动是可预测的时,跟踪算法有效。由于人类的手是快速、灵巧的、视觉上均匀的、自封闭的目标,甚至在较短的时间段,其外观可以生动地变化。在姿态接口的背景中,动态的反复无常的手运动是常见的,这使得基于运动的预测困难。在当手不遵循平滑的轨道时的这些时间期间,跟踪是很鲁棒的。这些相同的运动可以使得背景减法变复杂,然而,产生不好的指尖检测结果。相反的场景也同样适用。快速不规则的运动使得跟踪更加困难,但这样的运动通常产生清楚的前景映射以及从而精确的指尖检测。本文中实施方式的核心的见识在于手跟踪和指尖检测在某些场景期间仅是单独地可靠的,但这些场景是互补的。因此,手跟踪和指尖检测在一种实施方式中被配对,以利用它们的长处同时掩饰任何个别的弱点。
在本文中描述将指尖检测和手跟踪集成的实施方式。参照图1B,一种实施方式的指尖检测算法161运行为在跟踪算法170更新其估计之前每个视频帧104的预处理步骤。被分类为指尖的每个像素区域提供相应的手的证据。另外,系统通过解析沿着指尖区域的外部边界的前景像素来估计暗示的手的取向165。该关键的观察在于手指本身将扩展超越指尖区域,因此,可以通过搜索具有最高浓度的前景像素的边界的子部来估计手指取向。手检测166假定手位于与指尖相反的手指的取向中。然后,手检测166可以将其搜索集中在由指尖和该取向预测的区域中。
具有检测到的指尖的每个像素区域对应于潜在的手。类似地,手存在先前帧中为后续帧中的该相同的手提供证据。跟踪模块使用两个信息来源来检测新的帧中的手。
可以产生几个场景。当跟踪系统已经锁定到移动的手上而背景估计仍足够精确以支持指尖检测时,被称为具有现有手跟踪的指尖的第一场景出现。两个信息来源互相支持,导致跟踪模块分配额外的来源以搜索手存在的预测区域。
被称为不具有手跟踪的指尖的第二场景暗示跟踪初始化。关于手位置的唯一信息来源来自指尖以及相应的手指取向的估计。手跟踪模块将在预定区域中进行搜索并且如果没有找到足够的证据可以确定不存在手。所需要的证据依赖于成像传感器和在考虑中的视觉特征。例如,跟踪器可以在使用主动照明的系统中查找皮肤色调、支持手形状的有取向的边缘像素或具有合适的亮度的像素。跟踪模块拒绝由指尖检测器提供的候选的能力是对于来自不完美的指尖分类器的错误检测(例如,由于类似手指对象如钢笔或铅笔或来自噪声或前景/背景分隔中的其它不一致性)的重要防守。
第三场景被称为不具有指尖的手跟踪。在该场景下,当手保持静止或相对慢地运动时,这样的跟踪继续是常见的情况。在该场景下,背景估计会变得被污染,在前景映射中导致若干错误否定,这阻碍指尖检测。无论如何,跟踪模块基于现有跟踪生成手预测,然后可以估计更新的手姿态和外观参数。
当与广泛的跟踪算法配对时,指尖检测可以用于手获取或检测以及跟踪恢复。例如,实施方式已经使用基于退火粒子过滤器和使用基于粒子群优化的过滤器被测试。类似地,由跟踪算法用于评估特定的手估计(包括位置、取向和其它形状或外观特征)的具体视觉特征独立于一种实施方式的初始化方法。常见的线索包括颜色模型、特征点的星座、边缘模板和轮廓。本文中对关于使用粒子群优化(PSO)用于局部跟踪和使用基于样条的轮廓作为手模型的特定情况的详细描述进行描述。
参照图1B,当使用PSO用于局部跟踪和使用基于样条的轮廓作为手模型时,通过创建与每个期望的姿态中的手的粗糙的二维(2D)形状匹配的轮廓来构造一组手模型167。例如,可以期望跟踪其中小指、无名指和中间卷曲而食指和拇指伸直的指示手的侧视图。轮廓本身可以由二次b样条表示。通过计算输入视频帧(I)104的慢适应(slowly-adapting)运行平均来维持背景模型(BG)162。通过用输入帧与背景模型之间的大的差异(即,FG=|I-BG|>阈值)标记每个像素来计算前景图像(FG)163。
通过使用上面所描述的级联模型分析前景图像163来检测指尖161。对于每个被检测到的指尖,位置和估计取向被存储在手预测列表中。
通过例如运行Canny边缘检测器为输入帧104计算边缘图像(E)164。Canny边缘检测器为使用多级算法检测图像中的宽范围的边缘的边缘检测算子。通过计算由局部偏导数(即,arctan(dy/dx),其中(dx,dy)可以由宽范围标准低级视觉过程如Sobel或Prewitt算子计算171/172)暗示的角度来对于边缘图像164中的每个边缘像素计算边缘取向图像(EO)165。
如果手已经被跟踪,那么其先前估计用于形成关于当前帧的相应的预测168。如果多个手假设被跟踪,正如经常是当视觉输入是模糊的时的情况,每个跟踪生成独立预测169。对预测的列表进行分析以检测和移除复制件。因为跟踪的手的指尖被检测或因为多个跟踪假设会聚,所有可以产生复制件。
对于每个预测,PSO用于高效地搜索最佳的局部手参数。PSO通过初始化预测位置周围的随机粒子来工作。每个粒子被给定随机速度,这使得粒子能够探索参数空间。粒子记住它们个人的最佳发现(称为“局部最佳”)以及还知道由粒子中的任何粒子找到的最佳参数值(称为“全局最佳)。在若干迭代的过程中,每个粒子根据其速度运动,但还驶向其个人最佳以及全部最佳。该拉力的强度开始较小,以及随着时间增加以允许早期探索,但然后迫使粒子进入参数空间的最佳区域的细粒子搜索。在最后的迭代之后,全局最佳参数值被报告为目标的估计。
当粒子移动通过参数空间时,它们通过计算对应的手模型有多好地匹配视觉证据来对每个参数向量进行计分,例如,参数是手轮廓的(x,y)位置、比例和取向。因此,对于每个参数设置,基本手样条的控制点通过平移、比例缩放和旋转来被更新。然后,沿着样条取样本,并且将局部轮廓取向与边缘取向图像165中的有取向的边缘相比较。依照主动形状模型的方法,可通过沿着样条的法线搜索具有匹配取向的、最靠近的边缘来执行比较。
通过使用由对应的PSO找到的最佳参数值来更新手预测。然后,通过移除具有很低得分的手预测来修剪它们。如果最高得分的预测超过阈值,该预测被报告为当前手位置;否则,系统报告手不存在当前帧中。即使当报告没有手时,系统仍可以基于现在不存在足够的视觉证据的可能性来保持跟踪低得分的假设以辅助未来预测,但额外的帧可以提供必需的证据以接受或完全拒绝该假设。在这一点处完成当前帧的处理,并且整个过程随后对于下一个视频帧重复。
作为关于跟踪初始化的示例,用户接近配备有姿势接口的系统。她以指示姿势伸展她的手来开始控制网页浏览器。直到该点,系统已经被闲置,即使尽管完全跟踪系统正在运行。因为不存在现有跟踪,所以不需要搜索每个新的帧中的更新。类似地,缺乏运动导致相对空的前景映射(也许一些零星的噪声导致一些像素被分类为前景的一部分)。从而,分级指尖检测算法可以在递归的第一级或第二级拒绝整个图像,替代对成千上万个可能的指尖大小的区域中的每个进行单独解析。
当用户接近系统并且开始指示姿势时,系统检测运动并且识别伸展的食指的指尖。检测到的指尖触发跟踪模块搜索附近的手并且开始跟踪该手。在单帧之后,系统具有用户的手的位置和形状的粗略估计。在一些更多帧之后(在初始运动之后仍然小于100ms),系统已经锁定手并且准备识别运动模式(动态姿势)、具体的手形状(静态姿势)和直接操纵(指示、选择和拖放)。
作为关于跟踪继续的示例,在虚拟光盒应用中,编辑具有来自最新近模型拍摄的输入的数字相片,并且对照片进行排序以将另外的处理区分优先顺序。该编辑查看具有很多图像的视场屏幕,并且正好发现极好的候选以产生即将到来的物品。她使用指示姿势选择图像并且开始将该图片拖放到在其表示顶级图片的第二监视器上的区域。
在这一点处,控制系统已经锁定编辑的手以及已识别出选择姿势。在每个新的帧中,跟踪模块基于现有跟踪历史对编辑的手形状和位置作出预测。然后,该控制系统使用该预测来在该新的帧中进行集中搜索手,从而顾及不可避免的预测噪声和微小的形状变化。由于相对平滑运动和稳定的手姿态,跟踪算法保持其贯穿该运动没有问题。
作为涉及跟踪恢复的示例,在存在于采矿单位处,项目管理员更具最新近地点测量总结发现。当管理员描述该测量结果时,她正在控制地理信息系统(GIS),该地理信息系统包括与局部地形准直的高分辨率地理数据。GIS通过使得管理员能够自然地与观众交互而快速地导航虚拟地域和感兴趣的高亮具体区域的姿势接口被操作。
在完成关于潜在钻井站点的讨论之后,管理员发起飞的姿势以导航到下一个站点。在这一点处,观众中的高管中的一个打断以问一个问题。响应地,管理员摆脱飞行姿势并且切换至选择姿态,选择姿态意在加载和显示关于先前的钻井站点的相关的信息。
在中断时,感知系统已经锁定到管理员的飞行姿态并且跟踪她的手。所估计出的三维姿态被翻译成GIS的虚拟世界中的速度和三维轨迹。当管理员将飞行姿势切换成选择姿势时发生突然的姿态和位置改变,导致跟踪模块丢失其锁定。
理想情况下,系统将继续跟踪姿态变化,但在实践中,突然的运动反转和复杂的外观移位可以破坏即使是最复杂的跟踪算法。当管理员输入选择姿势时,视觉模块能够估计一个相对干净的前景/背景图像,从而检测从新的手姿态扩展的指尖。这种检测导致新的手候选,然后新的手候选由跟踪器证实和扩展。因此,虽然在几个帧的跟踪中存在中断,知觉系统迅速恢复,所以从管理员的角度来看,没有明显的中断。
作为涉及假的之间检测的示例。保安使用使能姿势的工作站来控制和监视遍布在大型企业校园的地面上的远程视频相机。工作站包括几个LCD监视器,LCD监视器显示实时视频反馈以及历史视频、地图、时间表和关于校园的其它结构的记录。感知系统使得姿势接口能够覆盖保卫室的相对大的部分,使得当坐在或站在监视器中的任何监视器前面时她可以与系统交互。
当保安在办公室周围运动时,系统的背景模块可以由衣服、头发或运动的家具的运动和纹理损坏。尽管模块可以适应于随着时间改变,但中间帧仍会具有嘈杂的前景/背景估计。这些临时误差可以导致任意的前景图案,这可能偶尔看起来像扩展的手指。由于指尖检测器基于局部形状和外观模型,其自己无法将这样的图案与真实的指尖区别开。从而,检测器将这样的区域接受为指尖,并且为跟踪模块提出候选的手位置。
然而,手跟踪部件能够与来自视频反馈的更多信息合并,以便检测有效的手。从而,当跟踪器无法找到足够的视觉证据以证实暗示的手时,基于假的之间检测的错误的建议将会被决绝。在极端的情况下,跟踪器可以找到模糊的证据并且延迟决策直到从后续的帧中收集到更多的信息。这种情况会导致跟踪器创建内部手假设,但这样的假设高于该活动性阈值产生的可能性非常小。以这种方式,手跟踪器作为不完美的指尖检测器的安全性检测,而指尖检测器工作以专注于跟踪器并且帮助跟踪器初始化新的跟踪,以及从跟踪错误恢复。
下面是用于初始化基于视觉的手跟踪器的快速指尖检测的参考文献。
Argyros,A.A.和Lourakis,M,Vision-Based Interpretation of Hand Gesturesfor Remote Control of a Computer Mouse,Computer Vision in Human ComputerInteraction,第40至51页,2006年。
Athitsos,V.和Sclaroff,S,Estimating 3D Hand Pose from a ClutteredImage,IEEE Conference on Computer Vision and Pattern Recognition,2003年6月。
de Boor,C,A Practical Guide to Splines,Springer-Verlag,1978年。
Canny,J,A Computational Approach To Edge Detection,IEEE Transactionson Pattern Analysis and Machine Intelligence,第8(6)卷:679.98,1986年。
Cootes,T.F.、Taylor,C.J.、Cooper,D.H.和Graham,J,Active Shape Models-Their Training and Application,Computer Vision and Image Understandin,第61(1)卷,第38至59页,1995年1月。
Deutscher,J.、Blake,A.和Reid,I,Articulated Body Motion Capture byAnnealed Particle Filtering,IEEE Conference on Computer Vision and PatternRecognition,第l26至133页,2000年6月。
Fergus,R.、Perona,P.和Zisserman,A.Object class recognition byunsupervised scale-invariant learning,IEEE Conference on Computer Vision andPattern Recognition,2003年。
Freund,Y.和Schapire,R,Ashort introduction to boosting,Journal ofJapanese Society for Artificial Intelligence,第14(5)卷:第771至780页1999年9月。
Kennedy,J.Eberhart,R.C.,Swarm Intelligence,摩根考夫曼,ISBN 1-55860-595-9,2001年。
Letessier,J.和Berard,F,Visual tracking of bare fingers forinteractive surfaces,ACM Symposium on User Interface Software and Technology,圣达菲,新墨西哥,美国,第19至122页,2004年。
Viola,P.和Jones,M.Robust Real-time Object Detection,InternationalJournal of Computer Vision,2001年。
空间操作环境(SOE)
在本文中在空间操作环境(SOE)的背景中描述空间连续输入系统的实施方式。作为一个示例,图1是根据实施方式的空间操作环境(SOE)的框图。用户将他的手101和102定位在相机阵列104A至104D的观察区域150中。相机检测手101和102以及手指的位置、取向和移动作为空间跟踪数据,并且生成到预处理器105的输出信号。预处理器105将相机输出翻译成姿势信号,姿势信号被提供至系统的计算机处理单元107。计算机107使用输入信息生成命令以控制一个或多个屏上光标,并且向显示器103提供视频输出。上面详细地描述的用于实时地初始化基于视觉的手跟踪系统的系统和方法可以用在例如SOE中以及类似的系统中。
尽管系统被示为具有单个用户的手作为输入,但也可以使用多个用户实现SOE100。另外,代替手或除了手以外,系统可跟踪用户身体的任何一个或多个部分,包括头、脚、腿、臂、肘、膝等。
在所示出的实施方式中,采用四个相机或传感器来检测观察区域150中的用户的手101和102的位置、取向和运动。应当理解的是,在不偏离SOE的范围或精神的情况下,SOE可以包括更多(例如,六个、八个等)或更少(例如,两台)相机或传感器。另外,尽管多个相机或传感器对称地布置在示例实施方式中,但在SOE100中不要求这样的对称性。在SOE100中可以使用允许用户的手的位置、取向和运动的任何数目或定位的相机或传感器。
在一种实施方式中,所使用的相机是能够捕捉灰度级图像的运动捕捉相机。在一种实施方式中,所使用的相机为由Vicon(威康)制造的这些相机如威康MX40相机。该相机包括相机上的处理,并且能够以每秒1000帧捕捉图像。运动捕捉相机能够检测和定位标记。
在所描述的实施方式中,相机是用于光学检测的传感器。在其它实施方式中,相机或其它检测器可以用于电磁检测、静磁检测、RFID检测、或任何其它合适类型的检测。
预处理器105生成三维空间点重构和骨点标记。姿势翻译器106将三维空间信息和标记运动信息转换成可以由计算机处理器解释以在显示器上更新光标的位置、形状和动作的命令语言。在SOE 100的可替选实施方式中,预处理器105和姿势翻译器106被集成或组合成单个装置。
计算机107可以是任何通用计算机如由苹果、戴尔或任何其它合适的制造商制造的计算机。计算机107运行应用并且提供显示器输出。原本来自鼠标或其他现有技术的输入装置的光标信息现在来自姿势系统。
标记标签
该SOE或实施方式考虑在用户的一个或多个手指上使用标记标签,以使得系统可定位用户的手,标识其正在观察左手还是右手以及哪些手指是可视的。这允许系统检测用户的手的位置、取向和运动。该信息允许多个姿势由系统识别并且由用户用作命令。
实施方式中的标记标签是物理标签,该物理标签包括衬底(在本实施方式中适合于贴附到人手上的各个位置)和以唯一标识图案布置在衬底表面上的离散标记。
标记和相关联的外部感测系统可以在允许准确、精确、迅速且持续地获取其三度空间位置的任何域(光域、电磁域、静磁域等)中工作。标记本身可主动地(例如,通过发射结构化电磁脉冲)工作或被动地(例如,通过如本实施方式中的光学回射标记)工作。
在每个获取帧,检测系统接收由恢复后的三维空间位置构成的聚集“云”,其包括目前在仪器化工作空间体积内(在相机或其他检测器的可视范围内)的标签上的所有标记。每个标签上的标记具有足够的多样性,并且被布置成唯一的图案,从而检测系统可执行以下任务:(1)分割,其中每个恢复后的标记位置被分配给构成单个标签的点的一个且仅一个子集;(2)标签设定,其中点的每个分割后的子集被标识为特定标签;(3)定位,其中被标识的标签的三维空间位置被恢复;以及(4)取向,其中被标识的标签的三维空间取向被恢复。如下面所述和如图2中的一种实施方式所示的那样,通过标记图案的特定性质,使得任务(1)和(2)成为可能。
一种实施方式中的标签上的标记被贴附于规则网格位置的子集。此基本网格如本实施方式中那样可以是传统笛卡尔类型的;或者代之以可以是某种其他的规则平面棋盘形布置(例如,三角形/六边形平铺布置)。鉴于标记感测系统的已知空间分辨率而确立网格的比例和间距,使得相邻网格位置不大可能被混淆。所有标签的标记图案的选择应满足以下约束:标签的图案不应通过旋转、平移或镜像的任意组合而与任何其他标签的图案相一致,标记的多样性和布置可进一步选择为使得容许某个规定数目的分量标记的损失(或遮蔽)。在任何任意变换之后,应仍然不大可能将受损的模块与任何其他模块混淆。
现在参考图2,示出了多个标签201A-201E(左手)和202A-202E(右手)。每个标签都是矩形的,并且在本实施方式中由5×7网格阵列构成。选择矩形形状来帮助确定标签的取向以及降低镜像重复的可能性。在所示的实施方式中,每个手上的每个指头都有标签。在一些实施方式中,每个手使用一个、两个、三个或四个标签可能是足够的。每个标签具有不同灰阶或色彩明暗的边界。此边界内是3×5网格阵列。标记(由图2中的黑点表示)被布置在该网格阵列的某些点处以提供信息。
通过将每个图案分割成“共同的”和“唯一的”子图案,鉴定信息可以用标签的标记图案进行编码。例如,本实施方式规定了两种可能的“边界图案”(标记围绕矩形边界的分布)。由此建立了标签“族”——意图用于左手的标签由此可能都使用如标签201A-201E中所示的相同边界图案,而附着到右手手指的标签可能被分配如标签202A-202E中所示的不同图案。此子图案被选择为使得在标签的所有取向上都可区分左图案与右图案。在所示的例子中,左手图案在每个角落都包括标记,并且在从角落起第二个网格位置包括标记。右手图案在仅两个角落有标记,并且在非角落网格位置有两个标记。从该图案可以看出:只要四个标记中的任何三个是可视的,就能明确区分左手图案与右手图案。在一种实施方式中,边界的色彩或阴影也可用作偏手性的指示。
每个标签当然必须仍采用唯一的内部图案,标记分布在其族的共同边界内。在所示的实施方式中,已发现,内部网格阵列中的两个标记足以唯一地标识十个手指中的每个,而不会因手指的旋转或取向而发生重复。即使标记中有一个被遮蔽,标签的偏手性和图案的组合也产生唯一标识符。
在本实施方式中,网格位置可视地存在于刚性衬底上,来帮助执行将每个回射标记贴附于其预期位置的人工任务。借助彩色喷墨打印机将这些网格和预期标记位置精确地打印到衬底上,这里衬底是由初始时为挠性的“收缩膜”构成的片。将每个模块从该片切下,然后用炉烘烤,在该热处理过程中每个模块经历精确和可重复的收缩。在此过程后的短暂间隔内,冷却标签可略微变形——以模仿例如手指的纵向弯曲;此后,衬底是适当刚性的,标记可被粘附于所指示的网格点。
在一种实施方式中,标记本身是三维的,比如借助粘合剂或其他合适的装置贴附到衬底的小反射球。标记的三维性可帮助对二维标记的检测和定位。然而,在不脱离本发明的精神和范围的情况下,可使用任一个。
目前,标签借助Velcro或其他合适的装置贴附到操作者佩戴的手套,或者可替选地使用双面胶带直接贴附到操作者的手指。在第三实施方式中,可以完全省去刚性衬底,而将各个标记贴附(或“涂”)在操作者的手指和手上。
姿势词汇
实施方式的SOE考虑由手姿态、取向、手组合和取向混合组成的姿势词汇。还实施记号语言来设计和传达本发明的姿势词汇中的姿态和姿势。姿势词汇是以紧凑的文本形式来表示运动学联动机构(kinematic linkages)的瞬时‘姿态状态’的系统。所讨论的联动机构可以是生物的(例如人手;或整个人体;或蚱蜢腿;或狐猴的具关节的脊柱)或者代之以可以是非生物的(例如机器臂)。在任何情况下,该联动机构可以是简单的(脊柱)或有分支的(手)。本发明的姿势词汇系统为任何具体联动机构建立恒定长度的串;于是,占据该串的‘字符位置’的具体ASCII字符集是联动机构的瞬时状态或‘姿态’的唯一描述。
手姿态
图3图示了使用本发明的姿势词汇的一种实施方式中的手姿态。本发明假设手上的五个手指中的每个都被使用。这些手指是诸如p-小指、r-无名指、m-中指、i-食指和t-拇指的码。图3中定义并示出了手指和拇指的多个姿态。姿势词汇串为联动机构(在此情况下为手指)中的每个可表达的自由度确立单个字符位置。此外,每个这样的自由度被理解为离散化的(或‘量子化的’),从而可通过在该串位置分配有限数目的标准ASCII字符之一来表达其全程运动。这些自由度是相对于身体特有的原点和坐标系(手的背面,蚱蜢身体的中心;机器臂的底座等)而表达的。因此,使用小数目的额外姿势词汇字符位置来表达联动机构‘作为整体’在更全局的坐标系中的位置和取向。
仍参照图8,使用ASCII字符定义和标识多个姿态。其中一些姿态在拇指和非拇指之间加以划分。本发明在此实施方式中使用编码,从而ASCII字符本身就暗示着姿态。然而,无论暗示与否,任何字符都可用来表示姿态。另外,在本发明中不必须为记号串使用ASCII字符。在不脱离本发明的范围和精神的情况下,可以使用任何合适的符号、数字或其他表示法。例如,如果需要,记号可采用每手指两位或某个其他位数。
弯曲的手指由字符“^”表示,而弯曲的拇指由“>”表示。指向上方的直的手指或拇指由“1”表示,指向某个角度的直的手指或拇指由“\”或“/”表示。“-”表示指向正侧方的拇指,“x”表示指向平面内的拇指。
使用这些单独的手指和拇指描述,可观数目的手姿态可使用本发明的方案来限定和书写。每个姿态由如上所述顺序为p-r-m-i-t的五个字符表示。图3图示了多个姿态,并且在此通过图示和举例对少数姿态进行了描述。保持平坦且平行于地面的手由“11111”表示。拳头由“^^^^>”表示。“OK”符号由“111^>”表示。
字符串当使用暗示性字符时提供了浅显“易读”的机会。着眼于快速的识别和直白的模拟,通常可选择描述每个自由度的可能字符的集合。例如,竖条(‘∣’)意在表明联动机构元件是‘直的’,L形(‘L’)可表示九十度弯曲,抑扬符(‘^’)可表示锐角弯曲。如上所述,可按照需要使用任何字符或编码。
采用如这里所述的姿势词汇串的任何系统都受益于串比较的高计算效率——标识或搜索任何规定的姿态事实上变成期望姿态串与瞬时实际串之间的‘串比较’(例如UNIX的‘strcmp()’函数)。此外,‘通配符’的使用为程序员或系统设计者提供了额外的常见效能和功效:可将其瞬时状态对于匹配不相关的自由度规定为问号(‘?’);可赋予额外的通配符含义。
取向
除了手指和拇指的姿态以外,手的取向也可表示信息。显然,亦可选择描述全局空间取向的字符:字符‘<’、‘>’、‘^’和‘v’当以取向字符位置出现时可用来表示左、右、上和下的概念。图4图示了组合了姿态和取向的编码的例子以及手取向描述符。在本发明的一种实施方式中,两个字符位置首先规定手掌的方向,然后规定手指的方向(如果手指是直的,不管手指的实际弯曲)。这两个位置的可能字符表达取向的‘身体中心’记号:‘-’、‘+’、‘x’、‘*’、‘^’和‘v’描述中间的、侧面的、前面的(向前的,离开身体)、后面的(向后的,离开身体)、头部的(向上的)和尾部的(向下的)。
在本发明的一种实施方式的记号方案中,表示五个手指姿态的字符的后面是冒号和两个取向字符,以定义完整的命令姿态。在一种实施方式中,起始位置被称为“xyz”姿态,其中拇指指向正上方,食指指向前方,中指垂直于食指,当姿态用右手作出时指向左方。这由串“^^x1-:-x”表示。
“XYZ-手”是利用人手的几何结构来允许对视觉上呈现的三维结构进行全部六个自由度的导航的技术。尽管该技术仅依赖于操作者的手的整体平移和旋转——从而其手指原则上可保持在任何期望姿态——在本实施方式中更可取的是静态配置,其中食指指向远离身体的方向;拇指指向天花板;中指指向左-右。这三个手指由此描述(粗略但意图明晰地描述)了三度空间坐标系的三个互相正交的轴:由此‘XYZ-手’。
于是,进行XYZ-手导航,其中手、手指呈如上所述的姿态并保持在操作者身体之前、预定的‘中性位置’。以下面的自然方式实现对三度空间对象(或相机)的三个平移和三个旋转自由度的理解:手的左右移动(相对于身体的自然坐标系)导致沿着计算环境的x轴的移动;手的上下移动导致沿着受控环境的y轴的移动;手的前后移动(朝着或远离操作者的身体)导致该环境内的z轴运动。类似地,操作者的手围绕食指的旋转导致计算环境的取向的‘滚动’变化;类似地,分别通过使操作者的手围绕中指和拇指的旋转来实现‘俯仰’和‘摇摆’的变化。
注意,,尽管‘计算环境’这里用来指代由XYZ-手方法控制的实体——并且似乎暗示合成的三度空间对象或者相机,但应理解该技术同样可用于控制真实世界对象的各种自由度:例如配备有适当旋转致动器的摄像机或摄影机的摇摄/倾斜/滚动控制。此外,由XYZ-手姿态提供的物理自由度可能稍微有些不精确地映射在虚拟域中:在本实施方式中,XYZ-手还用来提供对大的全景显示图像的导航访问,从而操作者的手的左右和上下运动导致围绕图像的预期左右或上下‘摇摄’,而操作者的手的前后运动映射到‘变焦’控制。
在所有情况下,手的运动与所引起的计算平移/旋转之间的耦接可以是直接的(即,操作者的手的位置或旋转偏移借助某个线性或非线性函数而一一映射到在计算环境内对象或相机的位置或旋转偏移)或间接的(即,操作者的手的位置或旋转偏移借助某个线性或非线性函数而一一映射到在计算环境内位置/取向的一阶或更高阶导数;正在进行的积分于是实现计算环境的实际零阶位置/取向的非静态变化)。此后一控制手段类似于汽车的‘气动踏板’的使用,其中该踏板的恒定偏移或多或少导致恒定的车速。
作为真实世界XYZ-手的局部六自由度坐标原点的‘中性位置’可以(1)被确立为空间中的绝对位置和取向(相对于比如封闭室);(2)被确立为相对于操作者自身的固定位置和取向(例如,在身体前方八英寸、在下巴下方十英寸、以及在侧面与肩膀平面成一直线),而无论操作者的总体位置和‘朝向’如何;或者(3)通过操作者的有意的副动作(例如采用由操作者的‘另一只’手作出的姿态命令,所述命令表明XYZ-手的当前位置和取向自此以后应当被用作平移和旋转原点)来被交互地确立。
此外,方便的是,提供围绕XYZ-手的中性位置的‘封锁’区(或‘死区’),使得该体积内的移动不映射到受控环境内的移动。
可以包括其它姿态:
[|||||:vx]是手掌面朝下方且手指朝前方的扁平手(拇指平行于手指)。
[|||||:x^]是手掌面朝前方且手指朝天花板的扁平手。
[|||||:-x]是手掌面朝身体中心(左手情况下为右,右手情况下为左)且手指朝前方的扁平手。
[^^^^-:-x]是单手竖起大拇指(拇指指向天花板)
[^^^|-:-x]是模仿枪指向前方
双手组合
实施方式的SOE预期单手命令和姿态以及双手命令和姿态。图5示出了本发明的一种实施方式中的双手组合和相关联的记号的例子。观察第一个例子的记号,“完全停止”表明其包括两个合上的拳头。“快照”例子的每个手的拇指和食指伸展,各拇指指向彼此,从而定义球门柱形状的框架。“方向舵和油门起始位置”是手指和拇指指向上方,手掌面朝屏幕。取向混合
图6图示了本发明的一种实施方式中的取向混合的例子。在所示的例子中,通过在手指姿态串之后将成对的取向记号括在括号内来表示该混合。例如,第一个命令示出了全部直指的手指位置。第一对取向命令将导致手掌平坦地朝着显示器,第二对使手旋转到斜向显示器45度的斜度。尽管本例子中示出了成对的混合,但在本发明中可考虑任何数目的混合。示例命令
图8/1和图8/2示出了可以与SOE一起使用的多个可能的命令。尽管这里的讨论有一些是关于控制显示器上的光标的,但本发明不限于该工作。实际上,本发明在操纵屏幕上的任何和所有数据及部分数据、以及显示器的状态时有大的应用。例如,这些命令可用于在视频媒体的回放过程中取代视频控制。这些命令可用来暂停、快进、倒回等。另外,可执行命令来缩小或放大图像、改变图像的取向、在任何方向上摇摄等。本发明还可代替诸如打开、关闭、保存等的菜单命令而使用。换句话说,任何可想象的命令或工作都可用姿势实现。
操作
图7是示出了一种实施方式中的SOE的操作的流程图。在701处,检测系统检测标记和标签。在702处,确定是否检测到标签和标记。如果未检测到,系统返回到步骤701。如果在步骤702检测到标签和标记,系统进入步骤703。在步骤703,系统根据检测到的标签和标记标识手、手指和姿态。在步骤704,系统标识姿态的取向。在步骤705,系统标识检测到的一个或多个手的三维空间位置。(请注意,可以组合703、704和705中的任何一个或全部)。
在步骤706,信息被翻译成上面描述的姿势记号。在判定块707,确定姿态是否有效。这可以通过使用所产生的记号串进行简单的串比较来实现。如果姿态无效,系统返回到步骤701。如果姿态有效,系统在步骤708将记号和位置信息发送给计算机。计算机在步骤709确定为响应于姿势而要采取的合适动作,并相应地在步骤710更新显示器。
在SOE的一种实施方式中,步骤701-705是通过相机上处理器实现的。在其他实施方式中,如果需要,该处理可由系统计算机实现。
解析和翻译
系统能够“解析”和“翻译”被底层系统恢复的低级姿势所构成的流,并将那些经解析和翻译的姿势变成可用于控制大范围的计算机应用和系统的命令或事件数据所构成的流。这些技术和算法可包含在由计算机代码构成的系统中,系统既提供实施这些技术的引擎也提供构建对该引擎的能力进行利用的计算机应用的平台。
一种实施方式致力于在计算机接口中实现人手的丰富姿势使用,但也能够识别由其他身体部分(包括但不限于臂、躯干、腿和头)以及各种各样的非手的物理工具(静态的有关节的)作出的姿势,所述非手的物理工具包括但不限于卡钳、两角规、挠性弯曲合拢器以及各种形状的指点装置。可按照需要将标记和标签施加于可由操作者携带和使用的物品和工具。
这里所述的系统合并了使得构建在可被识别和作用于的姿势的范围方面丰富的姿势系统成为可能的多个创新,同时提供向应用中的简单集成。
一种实施方式中的姿势解析和翻译系统的组成如下:
1)规定(为用在计算机程序中而编码)如下几个不同聚集水平的姿势的简洁有效的方式:
a.单只手的“姿态”(手的各部分相对于彼此的配置和取向)单只手在三维空间中的取向和位置。
b.双手组合,对于任一只手,考虑姿态、位置或两者。
c.多人组合;系统可跟踪多于两只的手,因此多于一个的人可协同地(或竞争地,在游戏应用的情况下)控制目标系统。
d.按顺序的姿势,其中姿态被组合成一系列;我们称它们为“活动的”姿势。
e.“语义图”姿势,其中操作者在空间中描绘形状。
2)用于注册与给定应用环境相关的上述每个种类中的具体姿势的编程技术。
3)用于解析姿势流以使得经注册的姿势可被标识且封装了这些姿势的事件可被传送给相关应用环境的算法。
具有组成要素(1a)到(1f)的规定系统(1)为利用这里所述的系统的姿势解析和翻译能力提供了基础。
单手“姿态”被表示为:
i)手指与手背之间的相对取向所构成的串,以及
ii)被量子化成小数目的离散状态。
使用相对联接取向使得这里所述的系统可避免与不同的手大小和几何结构相关联的问题。本系统不要求“操作者校准”。另外,将姿态规定为相对取向的串或集合使得可通过将姿态表示法与另外的过滤器和规定相结合而容易地创建更复杂的姿势规定。
使用小数目的用于姿态规定的离散状态使得简洁地规定姿态以及使用多种基本跟踪技术(例如,使用相机的被动光学跟踪、使用发光点和相机的主动跟踪、电磁场跟踪等)来确保准确的姿态识别成为可能。
可部分(或最小限度地)规定(1a)到(1f)的每个种类中的姿势,以使得非关键的数据被忽略。例如,其中两个手指的位置明确且其他手指位置不重要的姿势可由这样的单个规定来表示:其中给出两个相关手指的操作位置,且在同一个串内,为其他手指列出“通配符”或一般的“忽略这些”指示。
这里所述的用于姿势识别的所有创新(包括但不限于多层化规定技术、相对取向的使用、数据的量子化以及对每一级的部分或最小规定的允许)超越人的姿势的规定而推广到使用其他身体部分和“人造”工具和对象作出的姿势的规定。
用于“注册姿势”(2)的编程技术由限定的一组应用编程接口调用组成,其允许程序员限定引擎应使哪些姿势可为运行的系统的其他部分所用。
这些API例程可以在应用建立时间使用,从而创建在运行的应用的整个生命期使用的静态接口定义。它们还可以在运行的过程中使用,从而允许接口特性在运行中改变。接口的该实时变更使得可以:
i)构建复杂的环境和条件控制状态,
ii)向控制环境动态地添加滞后,并且
iii)创建使得用户能够变更或扩展运行的系统本身的接口词汇的应用。
用于解析姿势流(3)的算法将在(1)中规定并在(2)中注册的姿势与输入的低级姿势数据相比较。当经注册的姿势的匹配被识别出时,表示匹配的姿势的事件数据被堆栈上传到运行的应用。
在本系统的设计中期望高效的实时匹配,将规定的姿势处理为被尽可能快地处理的可能性的树。
另外,在内部使用以识别规定的姿势的简单比较操作符也被暴露以供应用程序员使用,使得进一步的比较(例如,复杂或复合姿势中的灵活的状态检查)甚至可以从应用环境内发生。
识别“锁定”语义是这里所述系统的创新。这些语义由注册API(2)暗示(并且,对于较小的范围,嵌入在规定词汇(1)内)。注册API调用包括:
i)“进入”状态通知符和“持续”状态通知符,以及
ii)姿势优先级说明符。
如果姿势已被识别出,则其“持续”状态优先于相同或较低优先级的姿势的所有“进入”状态。进入和持续状态之间的这种区别显著增大了感知到的系统可用性。
这里所述的系统包括用于面对真实世界数据误差和不确定性的鲁棒操作的算法。来自低级跟踪系统的数据可能是不完整的(由于多种原因,包括光学跟踪中的标记遮蔽、网络掉线或处理滞后等)。
取决于丢失数据的量和背景,丢失数据由解析系统标记,并被插入到
“最后已知的”或“很可能的”状态中。
如果关于特定姿势成分(例如,特定关节的取向)的数据丢失,但该特定成分的“最后已知的”状态可被解析为在物理上是可能的,则系统在其实时匹配时使用此最后已知的状态。
相反,如果最后已知的状态被解析为在物理上是不可能的,则系统后退到该成分的“最佳猜测范围”,并在其实时匹配时使用此合成数据。
仔细地设计了这里所述的规定和解析系统以支持“偏手性不可知论”,从而对于多手姿势,任一只手都被允许满足姿势要求。
导航数据空间
一种实施方式的SOE使得能够进行“回推”、进行人类操作员的手的线性空间移动、或执行类似空间的活动,以控制在图形或其它数据表示空间中的线性接近或搬运运动。SOE及由其建立的计算和认知关联提供了在比例水平中导航的基础的、结构化的方式,以遍历大体上线性的“深度维”,或更一般地,以访问量化的或“限位的(detented)”参数空间。SOE还提供了操作员可自愿地获取附加的背景的有效方法:用于了解是空间的、概念上的、还是计算的邻近和邻接的快速技术。
在某些实施方式中,回推技术可采用传统的输入设备(例如,鼠标、轨迹球、集成的滚动条和滑块)或依靠操作员本人外部的被标记的或被追踪的对象(例如,仪表运动联动机构、静磁追踪的“输入砖块”)。在其它替换实施方式中,回推实现可足够作为整个控制系统。
实施方式的SOE是更大的空间交互系统的一部分或集成到更大的空间交互系统中,其中,更大的空间交互系统取代惯常的基于鼠标的用于控制计算机的图形用户界面(‘WIMP’UI)方法,该更大的空间交互系统可替选地包括(a)追踪一种或更多种对象(例如,人手、在人手上的对象、无生命对象等)的物理传感器;(b)用于将感测到的手的展开位置、取向和姿态分析成姿态事件序列的装置;(c)用于表示这种空间和姿态事件的描述方案;(d)用于将这种姿态事件分发给控制程序或分发到控制程序之内的框架;(e)用于将通过姿态事件流编码的人类意图(命令)与事件流本身和应用特定的事件解释序列这两者的图形描述、听觉描述、和其它显示形式的描述相同步,以下将详细描述其全部。在这样的实施方式中,回推系统与附加的空间和姿态输入接口技术相集成。
通常,数据空间的导航包括根据通过检测器接收到的姿势数据来检测身体的姿势。姿势数据是在时间和物理空间中的一点处身体的瞬时状态的绝对三度空间位置数据。检测包括使用姿势数据来标识姿势。导航包括将姿势翻译成姿势信号,并且响应于姿势信号而在数据空间中导航。数据空间是包括在物理空间中表示的数据集的数据表示空间。
如果实施方式的整体的往返延迟(手的运动到传感器、到回推解释系统的姿态分析、到呈现到显示设备的计算机图形、返回到操作员的视觉系统)保持为低(例如,实施方式呈现大约15毫秒的延迟),并且当正确地调整系统的其它参数时,回推交互的感知结果是物理因果关系的明显感觉:S0E使推压弹簧承载结构的物理谐振象征(metaphor)精确化(literalize)。感知到的因果关系是非常有效的反馈。与回推系统提供的其它更抽象的图形反馈形式以及有意抑制在解释操作员移动方面的某种程度上的自由一起,这种反馈反过来允许稳定、可靠、和可重复地将人类的大小肌肉活动用作控制机制。
在评估SOE的背景时,很多数据集固有地是空间的:它们表示精确的(literal)物理空间中的现象、事件、观测或结构。对于更抽象的其它数据集或对精确的甚至非空间的信息进行编码的其它数据集,经常期望的是,准备这样的表示(视觉的、听觉的、或涉及其它显示形式的):通过标量值的参数来控制该表示的某个基础方面。因而,将该参数与空间维相关联经常也是有益的。如以下所描述的,从借助于回推机制的操纵中获益的是对该单个标量参数的操纵。
表示还可将特权给予数据集最优考虑的表示参数的少量离散值(实际上,有时仅一个值)。在这种情况下,论及“限位参数”是有用的,或者如果已将参数明确地映射到一维表示空间上,论及“限位参数”是有用的。本文中术语“限位”的使用旨在不仅描述参数的优选量化,而且描述棘轮的视觉触觉感觉、磁对准机制、穿梭变速轮、和其它大量的具有有意的机械限位器的已有设备。
这样的参数的不证自明甚至至关重要的示例包括但不限于:(1)合成相机在计算机图形环境中离数据集的可呈现表示的距离;(2)从原始数据集中采样数据和将数据转换成可呈现形式的密度;(3)从时变数据集中检索样本和将样本转换成可呈现表示的时间指数。这些是通用方法,还存在无数的特定于域的参数化。
SOE的回推通常将数据集的参数控制轴与物理空间中的局部相关的
“深度维度”对准,并且允许沿着深度维度的结构化的真实世界运动实现沿着控制轴的平移。结果是用于对参数空间进行导航的非常高效的手段。下面是在SOE中实施的回推的代表性实施方式的详细描述。
在回推例子中,操作员站在大的墙显示器之前的舒适距离处,在该墙显示器上出现包括文本和图像的单个“数据帧”,其中,图像数据元素可以是静态的或动态的。数据帧可以包括图像,但是不限于如此。本身是二维构造的数据帧仍然常驻在三维计算机图形呈现环境中,该三维计算机图形呈现环境的基础坐标系统已被布置成与便于描述房间和包括显示器及操作员的房间内容的真实世界的坐标系相一致。
通过以高精确度和高的时间比率解析操作员的手指以及可能整个手的全体的位置和取向的传感器来追踪操作员的手。为了表征每只手的“姿态”,即手指相对于彼此以及相对于手的全体的几何布置,系统对结果空间数据进行解析。虽然该示例实施方式追踪的目标是人手,能够追踪作为替换实施方式中的输入设备的众多的其它目标。一个示例是一侧回推的场景,在该场景中中身体是处于打开位置的操作员的手,手掌面朝向前的取向(沿着z轴)(例如朝向在操作员之前的显示屏)。为了该说明的目的,使墙显示器(未示出)占据x和y维,z描述操作员与显示器之间的维。与该回推实施方式相关联的姿态交互空间包括在持续的z平面上邻近的两个空间,将远离显示器的限位间隔空间(即更接近于操作员)称作“死区”,而更接近的半边空间是“活动区”。死区在向后的取向(朝向操作员并远离显示器)上无限延伸,但向前仅延伸有限的距离,结束于死区阈值。活动区从死区阈值向前延伸到显示器。身体在活动区中的移动交互地控制或“回推”在显示器上呈现的数据帧或多个数据帧。
以与显示器的尺寸和纵横比精确匹配的尺寸和纵横比来构造数据帧,以及定位数据帧和确定数据帧的取向,以便数据帧的中央和标准向量与显示器的那些物理属性相一致,尽管实施方式不限于如此。在从显示器直接向前以及与操作员粗略相隔一段距离处放置用于呈现场景的虚拟相机。在该背景中,呈现的帧因此精确地充满显示器。
多个额外的共面的数据帧逻辑地布置在可见帧的左边和右边,间隔一致并且以最适中的间隙各自与其紧邻的邻居相分离。因为侧向放置的邻近数据帧位于计算机图形呈现几何形状的物理/虚拟呈现边界之外,这些侧向放置的邻近数据帧不是初始可见的。如将看到的,数据空间(给定其几何结构)拥有在z轴取向上的单个自然限位装置以及多个x限位装置。
操作员将保持在第一松弛姿态的手举到肩部。然后,操作员张开手指以便手指指向上方,以及张开拇指以便拇指指向右边。操作员的手掌面向屏幕(在以下详细描述的姿态描述语言中,该姿态翻译将被表达为[^^^^>:x^翻译成||||-:x^])。检测新姿态的系统触发回推交互,以及立即记录首次输入该姿态的绝对三维空间的手的位置:将该位置用作“原点”,随后的手运动将被报告为离该“原点”的相对位移。
立即,将两个同中心的、部分透明的图示符叠加在帧的中心上(因此位于显示器的中心)。图示符可以指示在直到死区阈值点的死区中的身体回推姿态。第二图示符小于第一图示符指示操作员的手位于死区,由此“还”未使回推操作参与进来。当操作员将手向前移动时(向着死区阈值和显示器),第二图示符逐渐扩大。在操作员的手位于死区阈值处的点处,第二图示符在尺寸上等同于第一图示符。该实施方式的图示符将图示符的同中心元素的演进示出为操作员的手从其开始点向前朝着将死区与活动区分离的死区阈值的移动。当手接近阈值时,图示符的内部“露齿”部分扩大,以及这样布置,以便当手到达阈值位置时,内部图示符和(静态)外部图示符精确匹配。
当操作员将手从死区移开并且远离显示器时,第二图示符在第一图示符内部在尺寸上收缩,但总是与第一图示符保持同心,以及保持在显示器的中央。至关重要的,仅将操作员的手运动的z分量映射到图示符的比例缩放,而伴随手运动的x分量和y分量没有贡献。
当操作员的手遍历前面的死区阈值、越过而进入活动区时,使回推机制参与进来。手的相对z轴位置(从阈值测量的)执行比例缩放函数,并且结果值用于实现数据帧及其侧向邻居的z轴位移,以便帧的呈现图像被看见从显示器后退。于是,邻近数据帧也从显示空间的边缘“填充”而变得可见。当帧所位于的平面远离相机而移动时,合成相机的恒定角范围几何地“捕捉”帧所位于的更多个平面。连续地更新z位移,以便当操作员将手向着显示器推和将手向着自己往回拉时,感知到直接响应其运动而后退和接近的帧的侧向集合。
作为由相应的回推引起的数据帧的第一相对z轴位移的示例,数据帧的呈现图像被看见从显示器后退,以及邻近数据帧从显示空间的边缘“填充”而变得可见。将包括多个附加的共面数据帧的邻近数据帧逻辑地布置在可见帧的左边和右边,间隔一致并且以最适中的间隙各自与其紧邻的邻居相分离。作为由相应的回推引起的数据帧的第二相对z轴位移的示例,考虑第一相对z轴位移,并且假设从导致第一相对z轴位移的那个推起进一步推操作员的手(沿z轴向显示器及远离操作员进一步推),数据帧的呈现图像被看见从显示器进一步后退,以便额外的邻近数据帧从显示空间的边缘进一步“填充”而变得可见。
同时,成对的同中心图示符现在呈现修改后的反馈:在操作员的手在活动区时,第二图示符从基于比例缩放的反作用切换到旋转反作用,在旋转反作用中,手到阈值的物理z轴位移被映射到正的(在平面中)角度位移。在指示在超过死区阈值点(沿z轴朝向显示器和离开操作员)的死区中的身体回推姿态的图示符的示例中,图示符图示了一旦操作员的手已越过了死区阈值时图示符的演进-即,当已主动使回推机制参与进来时。因此,第二图示符的顺时针旋转和逆时针旋转可视地指示操作员的手向着显示器的移动和远离显示器的移动(同时,如以前一样,第一图示符提供静态的参考状态),使得图示符的“露齿”元素为手相对于阈值的偏移的线性函数,从而将线性运动转换成旋转表示。
因此,在该实施方式中,第二图示符的递增顺时针旋转可视地指示手沿z轴向显示器的移动的附加第一递增(同时,如以前一样,第一图示符提供静态的参考状态),使得图示符的“露齿”元素旋转与手到阈值的位移的线性函数对应的第一数目。第二图示符的递增顺时针旋转可视地指示手沿z轴向显示器的移动的附加第二递增(同时,如以前一样,第一图示符提供静态的参考状态),使得图示符的“露齿”元素旋转与手到阈值的位移的线性函数对应的第二数目。另外,第二图示符的递增顺时针旋转可视地指示手沿z轴向显示器的移动的第三递增(同时,如以前一样,第一图示符提供静态的参考状态),使得图示符的“露齿”元素旋转与手到阈值的位移的线性函数对应的第三数目。
在该样本应用中,当操作员的手在活动区中时,使第二级维的灵敏度参与进来:再次通过可能的比例缩放函数,将手的侧向(x轴)运动映射到水平帧序列的x位移。如果比例缩放函数是正的,则效果为以下之一:操作员的手的位置“跟随”,以及操作员感觉其正在左右滑动帧。作为由身体的侧向运动引起的数据帧的侧向x轴位移的示例,数据帧从左向右滑动,使得特定的数据帧通过显示空间的左边缘从视图中消失或部分消失,而另外的数据帧从显示空间的右边缘填充。
最后,当操作员使其手退出手掌向前的姿态(例如,通过将手闭合成拳),回推交互终止,以及将帧集合快速返回到其原始z限位装置(即与显示器共面)。同时,侧向调整帧集合以实现单个帧与显示器的x一致;结束因而显示器居中的帧是在回推终止的一刹那最靠近同中心的图示符的中心的任何帧:最近的x限位装置。可见,这里将图示符结构用作选择标线的第二功能,但是实施方式不限于如此。为了提供“弹簧承载返回”的可视感,通常允许帧集合的z位置和x位置在短时间间隔内前进到其最终的与显示器相一致的值。
该示例中所采用的回推提供了以下有效的控制形式:(1)通过沿直的视觉上的视线一深度维一可变地对聚集的数据集进行位移来获取认知上有价值的“邻近背景”,从而使更多的数据集进入视图(为了换取使数据集的任意给定部分的角范围减小);(2)以熟悉的“滚动”感,通过沿其自然的水平维对侧向排列的数据集进行位移来获取邻近背景,从而保持数据的任意给定部分的角范围,但是用旧数据的可见性来换取新数据的可见性;(3)通过快速且维约束的导航来选择数据集的离散化的元素。
在实施方式的回推的另一示例中,操作员紧挨着腰部显示设备而站,显示设备的活动表面位于与地面平行的水平平面内。这里,以与之前示例的方式相同的方式来建立坐标系统:显示表面位于x-z平面,以便与物理重力矢量反向地对准表示表面法线的y轴。
在示例物理场景中,其中,将身体水平保持在类似平板的显示表面(未示出)之上,身体是操作员的手,但本实施方式不限于如此。回推交互是双边的,使得具有上侧死区阈值和下侧死区阈值。另外,用上侧活动区域中的离散空间限位装置(例如,“第一限位装置”、“第二限位装置”、“第三限位装置”、“第四限位装置”)以及下侧活动区域中的离散空间限位装置(例如,“第一限位装置”、“第二限位装置”、“第三限位装置”、“第四限位装置”)提供了回推动作访问的线性空间。实施方式的交互空间被配置成使得包括上侧死区和下侧死区的相对小的死区居中在使回推参与进来的竖直(y轴)位置处,同时使活动区域在死区之上而活动区域在死区之下。
操作员正与堆栈中已被解析到离散平行平面的示例数据集一起工作,其中,该离散平行平面为数据帧。可以以数据帧表示的物理现实的自然结果(例如,来自断层扫描的离散切片,三维集成电路的多个层等)的方式来布置数据帧,或者因为分离数据或使数据离散化(例如,以多个光谱带获取的卫星图,地理地组织的在分层中具有每十年的数据的普查数据等)是合乎逻辑的或富含信息的。数据的可视表示还可以是静态的或包括动态元素。
在未使回推功能性参与进来期间,单个层被认为是“当前的”并且被显示器以可视的突出来表示,以及被感知为与显示器物理上相一致。在该示例中,当前层之上和之下的层未可视地显现(尽管使用紧凑的插图来指示其存在)。
操作员在显示器上方展开其闭合的右手;当操作员打开手时一手指向前伸展,拇指向左,并且手掌向下指(翻译:[^^^^>:vx翻译成||||-:vx])—使回推系统参与进来。在短暂的间隔(例如200毫秒)期间,邻近当前层的一些层以差别可见度逐渐增强;用模糊滤镜和其“严重性”取决于该层到当前层的顺序距离的透明度,在下方或在上方合成每个层。
例如,当使回推系统参与进来时,以差别可见度逐渐增强与当前层(例如数据帧)邻近的层(例如数据帧)。在该示例中,堆栈包括能够使用回推系统进行遍历的众多数据帧(适合于数据帧的数据集的任意数目)。
同时,出现从之前示例中已熟悉的同中心反馈图示符;在这种情况下,配置交互,使得小的死区居中在使回推参与进来处的垂直(y轴)位置处,同时使活动区域均在死区之上和在死区之下。该布置为“恢复”原始层提供了辅助。在这种情况下,图示符伴随有指示与相继层的定向接近的附加的简单图形。
当操作员的手保持在死区中时,不发生层堆栈的位移。图示符呈现了与之前示例中的行为相同的“预备”行为,其中,当手接近区域的两个边界中的任意一个时,内部图示符逐渐增大(当然,这里的行为是双边的和对称的:在手的开始y位置处,内部图示符处于最小尺寸,以及无论手上移或下移,内部图示符向着与外部图示符一致而逐渐增大)。
当操作员的手向上移动超过死区的上平面时,内部图示符与外部图示符相结合,且像以前一样,手在那个取向的进一步移动导致内部图示符的逆时针旋转运动。同时,层堆栈开始“向上平移”:在原始当前层在上的那些层呈现更大的透明度和模糊度;原始当前层本身变得更加透明和更加模糊;并且在原始当前层之下的层向更多的可见性和更少的模糊度移动。
在堆栈的向上平移的另一示例中,当与当前之前的层邻近的层变得与当前之前的层一样可见时,当前之前的层呈现更大的透明度(在该示例中变得不可见)。而且,当堆栈向上平移时,与目前当前层邻近的层以差别可见度逐渐增强。如以上所描述的,堆栈包括能够使用回推系统进行遍历的众多数据帧(适合于数据帧的数据集的任何数目)。
用真实世界的距离(即,如以房间坐标系所测量的,操作员的手离其初始位置的位移)与相继层间的逻辑距离之间的映射来对层堆栈进行配置。当然,与接近图形的瞬时外表一样,层堆栈的翻译是该映射的结果,同时,其指示(首先)显示平面与当前层之间的逐渐增大的距离;其还指示显示平面目前在当前层之下。
继续手的运动,并且层堆栈终于通过当前层和正好在下面的下一层跨显示平面的位置;一旦超过该点,接近图形改变成指示显示平面现在高于当前层:“当前层状态”现在已被分配给下一更低的层。一般,当前层总是最靠近物理显示平面的那个层,并且是当操作员从回推系统中脱离出来时将被“选择”的那个层。
当操作员继续举起手时,使每个连续层向着显示平面出现,从而逐渐地变得更加可分辨,获得与显示平面的瞬时一致,然后向有利于下一更低层的透明度和模糊度返回。当操作员使其手的运动的取向相反,使其向下时,则使过程相反,以及内部图示符顺时针旋转。当手终于通过死区时,随着原始当前层与显示平面的精确的y对准,堆栈停止;然后,堆栈的y移动重新继续,使在原始当前层之上的那些平面进入相继的焦点。操作员的整体感受是其正有力地和简单地用手向下压或向上拔层的堆栈。
当最终操作员通过闭合手(或者以其它方式改变其姿态)来释放回推时,系统将堆栈“弹”到限位的与显示平面的y轴对准中,当退出回推时将最靠近显示平面的任意层留下作为当前层。在该位置重新排列的短暂间隔期间,所有其它层逐渐减弱成完全透明,以及反馈图示符平滑地消失。
该示例的数据集的离散化元素(这里是层)沿主要的回推(深度)轴而分布;以前,元素(数据帧)沿垂直于深度轴的维是共面的并且被侧向排列。与透明度技术的使用一起,本布置意味着数据经常是叠加的一一些层是通过其它层而被观看的。该示例中的操作员仍然还享有:(1)用于快速获得邻近背景的设备(在当前层之上和在当前层之下的层的内容是什么?);以及(2)用于高效地在数据集中的平行的、堆栈的元素当中选择和切换的设备。当操作员试图(1)单独地,死区的提供允许操作员确信地返回到原始选择的层。在操纵的整个过程中,对两个平移维度的抑制使得能够有速度和准确度(对于大多数人,垂直地平移手而没有侧向漂移是相当困难的,但是,如所描述的形式简单地忽略任何这样的侧向位移)。
为了某些目的,应该指出的是,配置回推输入空间使得死区具有无限小的范围可能是方便的;然后,一旦使回推参与进来,也使其活动机制参与进来。在本文提出的第二示例中,这将意味着与任何其它层无差别地对待原始当前层——一旦已开始回推动作。根据经验,死区的线性范围是操作员偏好的问题。
在该第二示例中描述的形式适用于各种各样的显示器,既包括二维设备(不管是投影的还是发光的),也包括三维设备(不管是否为自动立体的,还是是否为航空图像生成的等)。在后者的高质量实现—即三维—的情况下,介质的某些特性能够巨大地帮助成为回推的基础的感知机制。例如,视差、光学景深、和眼调节现象的组合能够允许多个层同时被理解领会,因此消除了严格地使远离显示平面的层减弱和模糊的需要。另外,不管显示器的取向,应用上述形式:如在示例中一样,其可以主要是水平的;或者可以正如有用地被安装在墙上的眼高度处。
对该第二示例的情形的扩展描述了双手操纵的有用性。在某些应用中,需要侧向平移或者整个层堆栈或者单个层(即在x和z取向上)。在实施方式中,例如通过以下形式,操作员的其它—即非回推一手能够实现该变换:在该形式中,使手与显示表面紧密接近允许数据集的层之一被“四处滑动”,使得其x-z位置的偏移跟随手的偏移。
操作员通常可发现同时采取侧向平移和回推操作是方便的和容易操作的。也许以下提议不是完全不真实的:将连续域的操纵分配给一只手以及将离散类型的工作分配给另一手可以对优化认知负载有作用。
有益的是,考虑在SOE下的回推的又一示例,其中,在该SOE中没有数据集的自然的、可视的方面。代表性的是监视多个音频通道的问题以及间歇地从集合当中选择一个的问题。回推系统的应用使得能够进行在为听觉输出而不是为视觉输出而供应的环境中的这样的任务;形式与之前示例的形式非常相似。
站着的或坐着的操作员正聆听单个的音频通道。概念上,该音频存在于几何地包括其耳朵的垂直面—称为“听觉面”—中;音频的附加通道存在于平行于听觉面的平面中,但是沿z轴向前和向后位移。
打开手,保持在其前方九英寸处,同时手掌面向下,操作员使回推系统参与进来。在若干最接近的平面中的音频差别地逐渐增强;每个音频的音量相反地取决于其离当前通道的平面的顺序距离。实际上,感知上不现实的是,允许多于两个或四个的附加通道变得可听得见。同时,“音频图示符”逐渐增强以提供接近反馈。初始地,当操作员的手保持在死区中时,图示符几乎听不到两音高和弦(初始和谐地)。
当操作员在死区中向前或向后移动其手时,音频通道的音量保持固定,而图示符的音量增大。当手越过死区的前面阈值或后面阈值时,图示符到达其“活动”音量(其仍然服从于当前通道的音量)。
一旦操作员的手开始在活动区域中移动一比方说,在向前的取向上——获得对音频通道的预期作用:将当前通道平面推得离听觉面更远,并且其音量(以及还在更远的前方的那些通道的音量)逐渐地减小。另一方面,当每个“背面的”通道平面接近听觉面时,其音量增大。
同时,音频图示符已切换了模式。手的向前的行进伴随着音调之一的频率的上升;在“中途点”,当听觉面将一个音频通道平面及邻近面一分为二时,音调形成准确的五度音程(数学上,其应该是三全音程间隔,但是存在避免这个的大量原因)。当手更远地向前继续时,可变音调的频率继续上升,直至操作员最终在音调精确地跨越八度音程的点处“到达”下一音频面为止。
继续听各个通道,操作员向前或向后平移手以依次访问每个通道。最后,操作员仅仅闭合其手以选择一个通道,终止回推进程并使音频平面集合“弹”到对准中。其它通道(未选择的)逐渐减弱到听不见,图示符也一样。
该示例已描述了关于回推应用的变型,其中,再次提供了相同的设备:访问邻近背景以及离散化数据元素的快速选择(这里,单个音频流)。该情形代替了听觉反馈机制,以及尤其是利用了可靠的用于区分某些频率间隔的人类能力的听觉反馈机制,以向操作员提供关于其是否离目标通道足够近以做出选择的信息。在“听得见的”信号仅仅间歇地呈现的语音通道的情况下,这尤其重要;即使当通道本身已变成无声时,音频反馈图示符的连续特性也使其呈现而且清楚。
应当指出,如果本示例中的SOE包括空间化音频的能力,则可以极大地提高对相继音频层后退到向前距离中以及从后面接近(反之亦然)的感受。另外,与在操作员前面的随后层和在操作员后面的先前层一起,更确切地将选择的音频面“定位”在操作员的位置处的机会是有效地可用的。
音频图示符的其它例示是可能的,并且实际上各种通道内容的包括其频谱分布的特性,趋向于指示哪种图示符将是最清楚地可区分的。通过示例,另一种音频图示符格式保持不变的音量,但是采用周期性的滴答声,而滴答声之间的间隔与听觉面和最靠近的音频通道平面之间的接近度成比例。最后,在某些情形下,并且取决于操作员的敏锐度,可能的是,使用回推而根本没有反馈图示符。
参考回推机制,当在数据集的表示中的空间限位装置的数目和密度增加趋向非常大时,空间及其参数化变得有效地连续一就是说,非限位的。回推在这种极端下仍然保持有效,部分是因为可以将在回推的每次调用之前的数据集的“初始状态”视为被简单实现为死区的临时限位装置。
这种非定位的回推的应用可以在与无限(或至少充分地)可放大的图有关的构思中发现。放大功能的回推控制将手位置的位移与仿射标度值相关联,使得当操作员向前或向后推其手时,放大的程度减小或增大(分别地)。但是,因为位置到放大参数的直接映射确保了使控制手返回到死区也实现了放大值到其初始状态的返回,所以原始的、预回推的放大状态总是能够容易地访问的。
以上示例中描述的每个场景提供了对回推系统的显著方面及其在SOE下的使用的描述。还应该理解的是,由于通过允许指导人类移动的特定类型的感知反馈所能够得到的效率和精确度,本文中描述的动作中的每个能够立即被准确地和综合地采用。在其它场合中,操作员还发现在大哥连续回推“进程”中保持数十秒是有用的:在更长时间间隔上的回推为浏览的和背景获取的目标工作得很好。
以上描述的示例采用了物理输入(姿势)到表示空间的线性映射:真实空间中的A单元对控制手进行平移总是导致表示空间中的B单元(主要的)的平移,而不管在其上采取A平移的真实空间的位置。然而,其它映射是可能的。特别的,大多数人类操作员享受的良好的肌肉运动控制的程度允许使用非线性映射,其中,例如,与阈值附近的姿态运动可翻译成沿着参数化的维的位移相比,远离活动阈值的差分姿势平移可翻译成沿着参数化的尺度的更大的位移。
一致的虚拟/显示以及物理空间
本系统可提供这样的环境,其中被描绘在一个或多个显示装置(“屏幕”)上的虚拟空间被处理为与系统的一个或多个操作者所处的物理空间相一致。这里描述了这种环境的一种实施方式。该当前实施方式包括固定位置处的三个由投影仪驱动的屏幕,由单个台式计算机驱动,并使用这里所述的姿势词汇和接口系统来控制。然而,请注意:所描述的技术支持任何数目的屏幕;这些屏幕可以是移动的(而非固定的);这些屏幕可由很多独立的计算机同时驱动;且整个系统可通过任何输入装置或技术来控制。
本公开中描述的接口系统应具有确定屏幕在物理空间中的尺度、取向和位置的方法。给定此信息,系统能够将这些屏幕所处(且系统的操作者所处)的物理空间作为投影动态地映射到在系统上运行的计算机应用的虚拟空间中。作为该自动映射的一部分,系统还根据由系统掌管的应用的需要、以多种方式翻译这两个空间的比例、角度、深度、尺度和其它空间特性。
物理和虚拟空间之间的这种连续翻译使得多种接口技术的一致和普遍使用成为可能,这些接口技术在现有的应用平台上难以实现或者必须针对在现有平台上运行的每个应用个别地实施。这些技术包括(但不限于):
(1)使用“精确指点”——在姿势接口环境中使用手,或使用物理指点工具或装置——作为普遍和自然的接口技术。
(2)对屏幕的移动或重新定位的自动补偿。
(3)图形渲染,其依操作者位置而变,例如模拟视差位移以增强深度感。
(4)在屏幕显示中包括物理对象——考虑真实世界位置、取向、状态等。例如,站在大的不透明屏幕前方的操作者既能看到应用图形也能看到在屏幕后方(并且可能正在移动或改变取向)的比例模型的真实位置的表示。
重要的是,注意精确指点不同于在基于鼠标的窗口接口和大多数其他现代系统中使用的抽象指点。在那些系统中,操作者必须学习管理虚拟指点器和物理指点装置之间的翻译,且必须在这两者之间有认知力地映射。
相比之下,在本公开中所述的系统中,无论从应用还是用户角度,虚拟和物理空间之间没有差异(除了虚拟空间更适合于数学变换),因此操作者不需要有认知力的翻译。
由这里所述的实施方式提供的精确指点的最接近模拟是触摸屏(例如,可在很多ATM机上看到)。触摸屏提供了屏幕上的二维显示空间与屏幕表面的二维输入空间之间的一一映射。以类似的方式,这里所述的系统提供了显示在一个或多个屏幕上的虚拟空间与操作者所处的物理空间之间的灵活映射(可能但不必须是一一映射)。不管模拟的实用性如何,都值得理解该“映射方法”扩展到三维、任意大的架构环境以及多个屏幕不是无关紧要的。
除了这里所述的部件,系统还可执行实现环境的物理空间与每个屏幕上的显示空间之间的连续的系统级映射(可能已通过旋转、平移、比例缩放或其他几何变换加以修改)的算法。
渲染堆栈,其获取计算对象和映射,并输出虚拟空间的图形表示。
输入事件处理堆栈,其获取来自控制系统的事件数据(在本实施方式中,是来自系统和鼠标输入的姿势和指点数据),并将来自输入事件的空间数据映射到虚拟空间中的坐标。然后,经翻译的事件被传送到运行的应用。
“胶层”,其允许系统掌管在局域网上的若干计算机之间运行的应用。
在本文中将空间连续输入系统的实施方式描述为包括基于网络的数据表示、转变和交换,包括称作“等离子体”的系统,如下面详细描述的,系统包括子系统“色拉”、“蛋白质”和“池”。池和蛋白质是本文中所描述的用于封装将要在进程之间或者跨越进程共享的数据的方法和系统的部件。除了蛋白质和池之外,这些机制还包括色拉。通常,色拉提供最低水平的用于进程间交换的数据定义,蛋白质提供中等水平的用于查询和过滤的结构和钩子,而池则提供高水平的组织和访问语义。色拉包括用于有效的不依赖于平台的数据表示和访问的机制。蛋白质提供使用色拉作为有效载荷的数据封装和传输方案。池在进程之内、在局部进程之间、跨越远程或分布式进程之间的网络并且通过较长期(例如盘上等)存储提供蛋白质的结构化并且灵活的聚集、排序、过滤和分发。
本文中所描述的实施方式的配置和实现包括几个构造,它们一起使大量能力成为可能。例如,本文所描述的实施方式提供了数据在大量进程之间的有效交换。本文所描述的实施方式还提供了灵活的数据“定型”和结构,以便支持数据的广泛变化的种类和使用。此外,本文所描述的实施方式包括全都由基本上类似的应用程序接口(API)驱动的用于数据交换的灵活机制(例如局部存储器、盘、网络等)。而且,所描述的实施方式使得以不同的编程语言编写的进程之间的数据交换成为可能。另外,本文中所描述的实施方式使得高速缓存和聚集状态的自动维护成为可能。
图1是根据实施方式的包括使用色拉、蛋白质和池的数据表示的处理环境的框图。在本文中提供的实施方式的主要构造包括色拉(色拉的复数)、蛋白质和池。如本文中所描述的,色拉包括用于有效的不依赖于平台的数据表示和访问的机制。如本文中详细描述的,蛋白质提供数据封装和传输方案,并且实施方式的蛋白质的有效载荷包括色拉。如本文中详细描述的,池提供蛋白质的结构化且灵活的聚集、排序、过滤和分发。池在进程之内、在局部进程之间、跨越远程或分布式进程之间的网络并且通过较长期(例如盘上等)存储借助于蛋白质提供对数据访问。
图10是根据实施方式的蛋白质的框图。蛋白质包括长度头、描述和摄取。如下面详细描述的,描述和摄取中的每个包括一个色拉或多个色拉。
图11是根据实施方式的描述的框图。如下面详细描述的,描述包括偏移、长度和色拉。
图12是根据实施方式的摄取的框图。如下面详细描述的,摄取包括偏移、长度和色拉。
图13是根据实施方式的色拉的框图。如下面详细描述的,色拉包括类型头和特定于类型的数据。
图14A是根据实施方式的池中的蛋白质的框图。蛋白质包括长度头(“蛋白质长度”)、描述偏移、摄取偏移、描述和摄取。描述包括偏移、长度和色拉。摄取包括偏移、长度和色拉。
本文中所描述的蛋白质是用于封装数据的机制,数据需要在进程之间共享,或需要跨越总线或网络或其它处理结构移动。作为示例,蛋白质提供了用于传输和操纵数据的改进机制,所述数据包括对应于用户接口事件或与用户接口事件相关联的数据;特别地,实施方式的用户接口事件包括上面所描述的姿势接口的用户接口事件。作为另外的示例,蛋白质提供了用于传输和操纵数据的改进机制,所述数据包括但不限于图形数据或事件以及状态信息,这只是举几个示例。蛋白质是结构化的记录格式以及用于操纵记录的方法的相关联的集合。本文中所使用的记录的操纵包括:将数据放到结构中、将数据从结构中取出以及查询数据的格式和存在。蛋白质被配置成通过以各种计算机语言书写的代码被使用。蛋白质配被置成通过以多种计算机语言编写的代码来使用。如本文中所描述的,蛋白质还被配置成用于池的基本构筑块。此外,蛋白质被配置成天然地能够在处理器之间并跨越网络移动,同时维持它们包括的数据完整。
与传统的数据传输机制相反,蛋白质是未定型的。在未定型的同时,蛋白质提供了强大且灵活的模式匹配设施,在其上实施“类型相似”的功能。如本文中所描述的被配置的蛋白质还固有地为多个点(尽管作为多点传输的子集容易实现点对点形式)。另外,蛋白质定义“通用”记录格式,该记录格式例如在存储器中、盘上和线(网络)上格式之间相同(或仅在执行的可选优化的类型方面不同)。
参照图15和图19,实施方式的蛋白质是字节的线性序列。在这些字节之内封装有描述列表和被称为摄取的关键值对的集合。描述列表包括任意精细但却高效可过滤的每个蛋白质事件描述。摄取包括关键值对的集合,关键值对包括蛋白质的实际内容。
蛋白质与关键值对以及关于网络友好和多点数据交换的一些核心思想的相关性,与给予“元组(tuple)”的概念特权的较早系统(例如Linda、Jini)共享。蛋白质与面向元组的系统在几个主要方面不同,包括使用描述列表以提供标准的可优化的模式匹配基片。蛋白质还与面向元组的系统在适合于多种存储和语言构造的记录格式的严格规范连同对该记录格式的“接口”的几个具体实施方面不同。
转到蛋白质的描述,蛋白质的前四个或八个字节规定了蛋白质的长度,在一种实施方式中,蛋白质的长度必须是16个字节的倍数。该16字节粒度确保了字节准直和总线准直效能在现代硬件上是可实现的。不未被自然“四倍长字校直”的蛋白质被填充以任意字节,以便它的长度是16字节的倍数。
蛋白质的长度部分具有以下格式:呈大端格式的规定长度的32位,其中四个最低阶位充当旗标以指示宏观水平蛋白质结构特性;继之以32个另外的位,如果蛋白质的长度大于2Λ32字节的话。
实施方式的16字节准直附带条件意味着前四个字节的最低阶位作为旗标可用。而且因此前三个低阶位旗标分别指示蛋白质的长度可以用前四个字节表示还是需要八个,蛋白质使用大端还是小端字节排序,以及蛋白质使用标准还是非标准结构,但是蛋白质不限于此。第四个旗标位被保留以供将来使用。
如果八字节长度旗标位被设置,则蛋白质的长度通过以下计算:读取下四个字节,并且使用它们作为大端的八字节整数的高阶字节(其中已经读取的四个字节供应低阶部分)。如果小端旗标被设置,则蛋白质中的所有二进制数值数据都将被解释为小端(否则为大端)。如果非标准旗标位被设置,则蛋白质的剩余部分不符合下面将要描述的标准结构。
在本文中不会进一步讨论非标准蛋白质结构,除了要说的是,关于对使用蛋白质和池的系统程序员可用的非标准蛋白质格式,存在用于描述和同步化的各种方法,并且当空间或计算周期受到约束时,这些方法是可以使用的。例如,实施方式的最短蛋白质是十六字节。标准格式的蛋白质不能将任何实际的有效载荷数据装配到这十六个字节中(其中的最大份额已经被移交以描述蛋白质的组成部分的位置)。但是非标准格式的蛋白质就能够可以想象地使用16个字节中的12个用于数据。交换蛋白质的两个应用可以相互决定它们发出的任何16字节长的蛋白质总是包括例如表示来自实时模拟数字转换器的128位传感器值的12个字节。
紧跟着长度头,在蛋白质的标准结构中,出现多于两个可变长度整数。这些数字分别规定了对描述列表中的第一元素以及第一个关键值对(摄取)的偏移。这些偏移在本文中也分别被称为描述偏移和摄取偏移。这些数的每四倍的字节顺序由蛋白质端旗标位规定。对于每个而言,前四个字节的最高有效位确定数字是四个还是八个字节宽。如果最高有效位(msb)被设置,则前四个字节是双字(八字节)数字的最高有效字节。在本文中这被称为“偏移形式”。指向描述和对的单独偏移的使用允许描述和对通过不同的代码路径处理,使得例如与描述模式匹配和蛋白质装配相关的特殊优化成为可能。在蛋白质的开始处的这两个偏移的存在还允许几个有用的优化。
大多数蛋白质不会如此大以至于需要八字节的长度或指针,所以一般而言,长度(具有旗标)和两个偏移数字只会占据蛋白质的前三个字节。在许多硬件或系统体系结构上,超过第一个的一定数目字节的提取或读取是“免费的”(例如16个字节正好占用与单个字节相同数目的时钟周期以跨越单元处理器的主总线牵引)。
在很多实方式中,允许蛋白质内部的特定于实施的或特定于环境的缓存或元据都是有用的。偏移的使用允许在蛋白质的开始附近创建任意尺寸的“洞”,其中可放置这样的元数据。可利用八个字节的元数据的实施在许多系统体系结构上免费得到那些字节,其中每次提取蛋白质的长度头。
描述偏移规定蛋白质的开始与第一个描述条目之间的字节数。每个描述条目包括到下一个描述条目的偏移(当然以偏移格式),继之以可变宽度的长度字段(又是以偏移格式),继之以色拉。如果没有进一步的描述,则偏移M定是四个字节的零。否则,偏移规定这个描述条目的开始与下一个描述条目之间的字节数。长度字段以字节的方式规定色拉的长度。
在大多数蛋白质中,每个描述都是串,以色拉串的方式被格式化:四字节长度/类型头,其中最高有效位被设置并且只有较低的30位用于规定长度,继之以头的指示数目的数据字节。通常,长度头从蛋白质取其端。字节被假定编码UTF-8字符(并且这样一来——注意——字符数就不一定与字节数相同)。
摄取偏移规定了蛋白质的开始与第一个摄取条目之间的字节数。每个摄取条目包括到下一个摄取条目的偏移(以偏移格式),又继之以长度字段和色拉。摄取偏移在功能上等同于描述偏移,除了它指向下一个摄取条目而不是下一个描述条目之外。
在大多数蛋白质中,每个摄取具有色拉cons类型,其包括双值列表,一般用作关键/值对。色拉cons记录包括:四字节长度/类型头,其中第二最高有效位被设置并且只有较低的30位用于规定长度;到值(第二)元素开始的四字节偏移;四字节长度的关键元素;用于关键元素的色拉记录;四字节长度的值元素;以及最后用于值元素的色拉记录。
一般而言,cons关键字是色拉串。跨越几个蛋白质和色拉cons长度和偏移字段的数据的重复提供了用于细化和优化的又一次机会。
如上所述,根据实施方式使用的用于将定型的数据嵌入蛋白质内部的构造是被称为“色拉”的标记字节序列规范和抽象。色拉是表示(可能是聚集的)定型数据的字节的线性序列,并且与特定于编程语言的API相关联,其允许色拉在存储器空间、存储介质和机器之间创建、修改和四处移动。色拉类型方案旨在可扩展并且尽可能重量轻,并且成为可以从任何编程语言使用的通用基片。
建立有效的大规模的进程间通信机制的愿望是色拉配置的驱动器。传统的编程语言提供了在特定于进程的存储器布局中工作良好的复杂数据结构和类型设施,但是当数据需要在进程之间移动或存储在盘上时,这些数据表示总是损坏。色拉体系结构是用于进程间通信的第一基本上有效的多平台友好的低水平数据模型。
但更重要的是,色拉被配置成连同蛋白质一起影响并启用未来计算硬件(微处理器、存储器控制器、盘控制器)的开发。对比如公共可用的微处理器的指令集合的几个特定添加使得色拉可以甚至对于单进程、存储器内数据布局变得与大多数编程语言中使用的方案一样有效。
每个色拉包括可变长度类型头继之以特定于类型的数据布局。在例如支持C、C++和Ruby形式的全色拉功能的示例实施方式中,通过可从每种语言访问的系统头文件中定义的通用整数来指示类型。更加复杂和灵活的类型分辨功能也是可能的:例如通过通用对象ID和网络查找的间接定型。
实施方式的色拉配置允许色拉记录用作例如来自Ruby和C++两者的语言友好方式的对象。C++编译器外部的一套实用程序完整性检查色拉字节布局,创建特定于单独色拉类型的宏和头文件,并且自动生成用于Ruby的绑定。结果,良好配置的色拉类型即使当从单个进程之内使用时也十分有效。进程的可访问存储器中任何地方的任何色拉都可以被寻址而没有拷贝或“去串行化”步骤。
实施方式的色拉功能包括用于执行以下中的一个或多个的API设施:创建特定类型的新色拉;创建或建立对来自盘上或存储器内字节的色拉的语言特定引用;以特定于类型的方式将数据嵌入在色拉之内;查询色拉的尺寸;从色拉之内检索数据;克隆色拉;以及翻译色拉之内数据的端和其它格式属性。每个色拉都执行上述行为。
图14B/1和图14B/2示出了根据实施方式的色拉头格式。色拉的详细描述如下。
每个色拉的内部结构都优化类型分辨、对封装数据的访问以及用于该色拉实例的尺寸信息中的每个。在实施方式中,色拉类型的完全集合被设计得最小完全,并且包括:色拉串;色拉cons(亦即对);色拉列表;以及色拉数值对象,其自身表示被理解为半打排列或这种基本属性的单独数值类型的广泛集合。任何色拉的其它基本性质是其尺寸。在实施方式中,色拉具有量化成四的倍数的字节长度;这些四字节字在本文中被称为“四倍体”。一般而言,这样的基于四的尺寸定位使得色拉与现代计算机硬件体系结构的配置良好配准。
实施方式中的每个色拉的前四个字节包括头结构,其编码类型描述和其它元信息,并且将特定类型意义归因于具体位模式。例如,色拉头的第一个(最高有效)位用于规定该色拉的尺寸(以四倍体字的长度计)是否遵循初始四字节类型头。当这个位被设置时,可以理解的是,色拉的尺寸明确地记录在色拉的下四个字节中(例如字节五至八);如果色拉的尺寸是这样的,以至于不能以四个字节来表示(亦即,如果尺寸是或大于二的三十二次幂),那么色拉的初始四个字节的下一个最高有效位也被设置,这表示色拉具有八字节(而不是四字节)长度。在这种情况下,检查过程会发现存储在顺序字节五至十二中的色拉长度。另一方面,小数目的色拉类型意味着在许多情况下完全规定的典型位模式“留下未使用”四字节色拉头中的许多位;并且在这样的情况下这些位可以用于编码色拉的长度,节省否则会需要的字节(五至八)。
例如,实施方式留下色拉头的最高有效位(“长度跟随”旗标)未设置,并且设置下一位以指示色拉是“wee cons”,并且在这种情况下色拉的长度(以四计)被编码在剩余的三十位中。类似地,“wee串”用头中的模式001来标记,其留下二十九位用于表示色拉串的长度;并且头中的引导0001描述“wee列表”,其依靠二十八个可用长度表示位可以是高达二的二十八次幂个四倍体大小的色拉列表。“全串”(或cons或列表)具有不同的头中的位签名,其中最高有效头位必定被设置,因为色拉长度分开编码在字节五至八(或十二,在极端情况下)中。注意,等离子体实施在色拉构造之时“决定”是使用这些构造的“wee”还是“全”版本(该决定基于作为结果的尺寸是否会“配合”可用的wee位),但是全对比于wee的细节相对于等离子体实施的用户是隐藏的,用户只知道和关心她正在使用色拉串或色拉cons或色拉列表。
数值色拉在实施方式中由引导头模式00001指示。随后的头位用于表示可能以任意排列进行组合的一组正交性质。实施方式使用但不限于五个这样的字符位以指示数字是否是:(l)浮点;(2)复数;(3)无符号;(4)“宽”;(5)“粗短”((4)“宽”和(5)“粗短进行排列以指示八、十六、三十二和六十四位数据表示)。两个另外的位(例如(7)和(8))指示封装的数值数据是二、三或四元素矢量(其中两个位为零表明数值是“一元素矢量”(亦即标量)。在这个实施方式中,第四个头字节的八个位用于编码封装的数值数据的尺寸(以字节计而不是四倍体)。这个尺寸编码被偏移一,以便它可以表示包括一和二百五十六字节以及之间的任何尺寸。最后,两个字符位(例如(9)和(10)用于指示数值数据编码单独数值实体的阵列,其中的每一个具有由字符位(1)至(8)描述的类型。在阵列的情况下,单独数值实体不是每个用另外的头标记,而是包装为连续的数据,其跟随单个头以及可能的明确色拉尺寸信息。
该实施方式提供了简单有效的色拉复制(其可以实施为字节对字节拷贝)以及极其直接和有效的色拉比较(在这个实施方式中,当且仅当考虑序列的两个色拉的组成部分字节中的每一个一一匹配时,这两个色拉才相同)。这后一性质例如对于蛋白质体系结构的有效实施是重要的,蛋白质体系结构的关键性和普遍的特征之一是搜索或‘匹配’蛋白质的描述列表。
进一步地,本文中的实施方式允许简单且有效地构造聚集色拉形式(例如色拉cons和色拉列表)。例如,实施方式通过以下从两部分色拉(其可以具有任何类型,包括它们自己聚集)建立色拉cons:(a)查询每个部分色拉的尺寸;(b)分配尺寸等于两个部分色拉的尺寸和头加上尺寸结构所需的一个、两个或三个四倍体之和的存储器;(c)在前四个、八个或十二个字节中记录色拉头(加上尺寸信息);以及然后(d)依次将部分色拉的字节拷贝到紧接着后续的存储器中。重要的是,这样的构造例程不需要知道关于两部分色拉的类型的任何东西;只有它们的尺寸(以及作为字节序列的可访问性)要紧。相同的过程适用于色拉列表的构造,所述色拉列表是(可能地)异样类型的任意许多子色拉的排序封装。
作为存储器内顺序字节的色拉系统的基本格式的进一步结果结合“遍历”活动——例如循环使用模式使用获得对色拉列表中存储的单独色拉的顺序访问。表示蛋白质结构之内的描述和摄取的单独色拉必须类似地遍历。以令人晕倒的直接且有效的方式完成这样的调度:为了“到达”色拉列表中的下一个色拉,将当前色拉的长度添加到其存储器内的位置,并且作为结果的存储器位置等同地为下一个色拉的头。这样的简化是可能的,因为色拉和蛋白质设计避免“间接”;不存在指针;相反地,数据简单地以其全体存在就位。
关于色拉比较这一点,等离子体系统的完全实施必须承认跨越不同操作系统、CPU和硬件体系结构以及它们当中的不同且不兼容的数据表示方案的存在。大多数这样的不同包括字节排序策略(例如小端对比于大端)和浮点表示;其它不同也存在。等离子体规范要求色拉所封装的数据保证可解释(亦即必须以从中检查色拉的体系结构或平台的自然格式出现)。这个要求继而表明等离子体系统自身对数据格式转换负责。然而,规范仅规定,在色拉变得对可能检查它的执行进程“根本可见”之前发生转换。因此达到单独的实施,在该点它选择执行这样的格式c转换;两个适当的方法是,色拉数据有效载荷一致于局部体系结构的数据格式(1)当单独的色拉从它已被包装在其中的蛋白质中“拉出”时,或者(2)对于同时在蛋白质中的全部色拉,当该蛋白质从它处于其中的池中提取时。注意,转换规定考虑硬件辅助实施的可能性。例如,建立有明确等离子体能力的联网芯片组可以基于接收系统的已知特性智能地并且在“传输时”执行格式转换。交替地,传输的过程可以将数据有效载荷转换成规范格式,其中接收过程对称地从规范转换到“局部”格式。另一种实施方式执行“在金属”的格式转换,意味着数据总是以规范格式存储,即使在局部存储器中也是,并且当数据从存储器中检索并放置在就近CPU的寄存器中时,存储器控制器硬件自身执行转换。
实施方式的最小(和只读)蛋白质实施包括利用蛋白质的一个或多个应用或编程语言中的操作或行为。图14C是根据实施方式的用于使用蛋白质的流程图650。操作开始于查询652蛋白质的以字节计的长度。描述条目的数目被查询654。摄取的数目被查询656。通过指数检索658描述条目。通过指数检索660摄取。
本文中所描述的实施方式还定义了允许蛋白质被构造并填充以数据的基本方法、使一般任务对程序员更容易的助手方法以及用于创建优化的钩子。图14D是根据实施方式的用于构造或生成蛋白质的流程图670。操作开始于创建672新蛋白质。一系列的描述条目被附加674。摄取也被附加676。匹配描述的存在被查询678,并且匹配摄取关键字的存在被查询680。给定摄取关键字,摄取值被检索682。跨越描述执行684模式匹配。在蛋白质的开始附近嵌入686非结构化的元数据。
如上所述,色拉提供最低水平的用于进程间交换的数据定义,蛋白质提供中等水平的用于查询和过滤的结构和钩子,而池则提供高水平的组织和访问语义。池是用于蛋白质的仓库,提供线性序列和状态缓存。池还提供通过大量不同类型的多个程序或应用进行的多进程访问。此外,池提供一组共同的可优化的过滤和模式匹配行为。
可以容纳成千上万个蛋白质的实施方式的池起作用以维持状态,以便单独的进程可以卸载对多进程程序代码共同的大多数冗长簿记。池维持或保持过去可用蛋白质的大缓冲器——理想的池明确地无限——以便参与的进程可以随意在池中向后和向前扫描。缓冲器的尺寸当然依赖于实施,但是在通常使用中常常可以将蛋白质保持在池中以小时或天计。
与现有的进程间通信框架所采取的机械式点对点方法形成对照,如本文中所描述的池使用的最通常的风格遵守生物学比喻。名称蛋白质暗指生物学灵感:池中的数据蛋白质可用于大量计算进程进行的灵活查询和模式匹配,就像活体组织中的化学蛋白质可用于大量细胞试剂进行的模式匹配和过滤。
两个另外的抽象依靠生物学比喻,包括使用“处理机”和高尔基(Golgi)框架。参与池的进程一般创建若干处理机。处理机是将匹配条件与处理行为相关联的相对小束的代码。通过将一个或多个处理机联系到池,进程设立灵活的回叫触发,其封装状态并对新的蛋白质反应。
参与几个池的进程一般从抽象高尔基类继承。高尔基框架提供若干有用的例程,用于管理多个池和处理机。高尔基类还封装双亲-子女关系,提供不使用池的局部蛋白质交换的机制。
根据实施方式提供的池API被配置成允许池以多种方式实施,以便既考虑特定于系统的目标,又考虑给定硬件和网路体系结构的可用能力。池所依靠的两个基本系统规定是存储设施和进程间通信的装置。本文所描述的现存系统使用以下的灵活组合:共享存储器、虚拟存储器和用于存储设施的盘以及用于进程间通信的TCP/IP套接字和IPC队列。
实施方式的池功能包括但不限于以下:参与池;将蛋白质放置在池中;从池中检索下一个未看到的蛋白质;反绕或快进池内的内容(例如蛋白质)。另外,池功能可以包括但不限于以下:设立用于进程的流池回叫;选择性检索匹配描述或摄取关键字的特定模式的蛋白质;向后并向前扫描匹配描述或摄取关键字的特定模式的蛋白质。
上述蛋白质被提供给池,作为与其它应用共享蛋白质数据内容的方式。图15是根据实施方式的包括使用色拉、蛋白质和池的数据交换的处理环境的框图。这个实例环境包括三个装置(例如装置X、装置Y和装置Z,在此集体被称为“装置”),它们通过使用如上所述的色拉、蛋白质和池来共享数据。装置中的每一个耦接到三个池(例如池l、池2、池3)。池l包括大量蛋白质(例如蛋白质X1、蛋白质Z2、蛋白质Y2、蛋白质X4、蛋白质Y4),它们从各个装置贡献或传送到池(例如,蛋白质Z2由装置Z传送或贡献到池l,等)。池2包括大量蛋白质(例如蛋白质Z4、蛋白质Y3、蛋白质Z1、蛋白质X3),它们从各个装置贡献或传送到池(例如,蛋白质Y3由装置Y传送或贡献到池2,等)。池3包括大量蛋白质(例如蛋白质Y1、蛋白质Z3、蛋白质X2),它们从各个装置贡献或传送到池(例如,蛋白质X2由装置X传送或贡献到池3,等)。虽然上面描述的示例包括耦接或连接在三个池当中的三个装置,但是任何数目的装置可以以任何方式或组合来耦接或连接在任何数目的池当中,并且任何池可以包括从任何数目或组合的装置中贡献的任何数目的蛋白质。这个示例的蛋白质和池如上所述参考图18至图21。
图16是根据实施方式的处理环境的框图,该处理环境包括多个装置和在所述装置中的一个或多个上运行的大量程序,其中,等离子体构造(例如池、蛋白质和色拉)用于允许大量运行的程序共享并对装置所生成的事件集体做出反应。这个系统只是多用户、多装置、多计算机交互控制场景或配置的一个示例。更加具体地,在这个示例中,包括多个装置(例如装置A、B等)和在装置上运行的若干程序(例如应用AA-AX、应用BA-BX等)的交互系统使用等离子体构造(例如池、蛋白质和色拉)以允许运行的程序共享并对这些输入装置所生成的事件集体做出反应。
在这个示例中,每个装置(例如装置A、B等)将由运行于各个装置上的程序(例如应用AA-AX、应用BA-BX等)生成的或者从其输出的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放到等离子体池中。例如,程序AX生成数据或输出并提供该输出给装置A,装置A依次将原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等)并将那些蛋白质存放到池中。作为另一示例,程序BC生成数据并提供该数据给装置B,装置B依次将数据翻译成蛋白质(例如蛋白质1B、蛋白质2B等)并将那些蛋白质存放到池中。
每个蛋白质包含描述列表,其规定通过应用登记的数据或输出以及用于程序自身的标识信息。在可能的情况下,蛋白质描述也可以给予输出事件或动作以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载了用于程序事件的有用状态信息的全部集合。
如上所述,蛋白质在由耦接或连接到池的任何程序或装置使用的池中是可用的,而不管程序或装置的类型如何。因此,在任何数目的计算机上运行的任何数目的程序都可以从输入池中提取事件蛋白质。这些装置只需能够通过局部存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个的直接后果是以下有益的可能性:将负责生成处理事件的进程与使用或解释事件的进程解耦。另一后果是事件的源和消费者的多路化,以便装置可以由一个人控制或者可以由几个人同时使用(例如基于等离子体的输入框架支持许多并发用户),同时作为结果的事件流对多个事件消费者依次可见。
作为示例,装置C可以从池中提取一个或多个蛋白质(例如蛋白质1A、蛋白质2A等)。在蛋白质提取之后,装置C在蛋白质数据所对应的处理事件中可以使用从蛋白质的描述和摄取的色拉中检索或读取的蛋白质的数据。作为另一示例,装置B可以从池中提取一个或多个蛋白质(例如蛋白质1C、蛋白质2A等)。在蛋白质提取之后,装置B在蛋白质数据所对应的处理事件中可以使用蛋白质的数据。
耦接或连接到池的装置和/或程序可以在池中向后和向前浏览以查找具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其它蛋白质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的依靠。
图17是根据替换实施方式的处理环境的框图,该处理环境包括多个装置和在所述装置中的一个或多个上运行的大量程序,其中,等离子体构造(例如池、蛋白质和色拉)用于允许大量运行的程序共享并对装置所生成的事件集体做出反应。这个系统只是多用户、多装置、多计算机交互控制场景或配置的一个示例。更加具体地,在这个示例中,包括多个装置(例如分别耦接到装置A和B的装置X和Y)和在一个或多个计算机(例如装置A、装置B等)上运行的若干程序(例如应用AA-AX、应用BA-BX等)的交互系统使用等离子体构造(例如池、蛋白质和色拉)以允许运行的程序共享并对这些输入装置所生成的事件集体做出反应。
在这个示例中,每个装置(例如分别耦接到装置A和B的装置X和Y)被管理和/或耦接以在一个或多个程序之下或者与其相结合地运行,所述一个或多个程序驻留在各个装置上(例如装置A、装置B等),各个装置将由装置(例如装置X、装置A、装置Y、装置B等)硬件所生成的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放到等离子体池中。例如,与驻留在装置A上的应用AB相结合地运行的装置X生成原始数据,将离散的原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等)并将那些蛋白质存放到池中。作为另一个示例,与驻留在装置A上的应用AT相结合地运行的装置X生成原始数据,将离散的原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等)并将那些蛋白质存放到池中。作为又一示例,与驻留在装置C上的应用CD相结合地运行的装置Z生成原始数据,将离散的原始数据翻译成蛋白质(例如蛋白质1C、蛋白质2C等)并将那些蛋白质存放到池中。
每个蛋白质包含描述列表,其规定通过输入装置登记的动作以及用于装置自身的标识信息。在可能的情况下,蛋白质描述也可以给予装置动作以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载了用于装置事件的有用状态信息的全部集合。
如上所述,蛋白质在由耦接或连接到池的任何程序或装置使用的池中是可用的,而不管程序或装置的类型。因此,在任何数目的计算机上运行的任何数目的程序都可以从输入池中提取事件蛋白质。这些装置只需能够通过局部存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个的直接后果是以下有益的可能性:将负责生成处理事件的进程与使用或解释事件的进程解耦。另一后果是事件的源和消费者的多路化,以便输入装置可以由一个人控制或者可以由几个人同时使用(例如基于等离子体的输入框架支持许多并发用户),同时作为结果的事件流对多个事件消费者依次可见。
耦接或连接到池的装置和/或程序可以在池中向后和向前浏览以查找具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其它蛋白质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的依靠。
图18是根据另一个替换实施方式的处理环境的框图,该处理环境包括多个输入装置,所述多个输入装置耦接在运行于装置中的一个或多个上的大量程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许大量运行的程序共享并对输入装置所生成的事件集体做出反应。系统只是多用户、多装置、多计算机交互控制场景或配置的一个示例。更加具体地,在这个示例中,包括多个输入装置(例如输入装置A、B、BA和BB等)和在一个或多个计算机(例如装置A、装置B等)上运行的若干程序(未示出)的交互系统使用等离子体构造(例如池、蛋白质和色拉)以允许运行的程序共享并对这些输入装置所生成的事件集体做出反应。
在这个示例中,每个输入装置(例如输入装置A、B、BA和BB等)由驻留在各个装置上(例如装置A、装置B等)的软件驱动器程序管理,所述各个装置将由输入装置硬件所生成的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放到等离子体池中。例如,输入装置A生成原始数据并提供该原始数据给装置A,装置A依次将离散的原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等)并将那些蛋白质存放到池中。作为另一个示例,输入装置BB生成原始数据并提供该原始数据给装置B,装置B依次将离散的原始数据翻译成蛋白质(例如蛋白质1B、蛋白质2B等)并将那些蛋白质存放到池中。
每个蛋白质包含描述列表,其规定通过输入装置登记的动作以及用于装置自身的标识信息。在可能的情况下,蛋白质描述也可以给予装置动作以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载了用于装置事件的有用状态信息的全部集合。
为了示意,这里是这样的系统中的用于两个典型事件的示例蛋白质。蛋白质在此被表示为文本,然而在实际实施中,这些蛋白质的组成部分是定型的数据束(例如色拉)。描述一般而言“一根手指点击”姿态(在相关申请中有描述)的蛋白质如下:
[描述:{点、引擎、一个、一个手指引擎、手、飞行员-id-02、手-id-23}
摄取:{飞行员-id=>02,
手-id=>23,
姿态=>[0.0,0.0,0.0]
角度-轴=>[0.0,0.0,0.0,0.707]
紧握=>..^||:vx
时间=>184437103.29}]
作为进一步的示例,描述鼠标点击的蛋白质如下:
[描述:{点,点击,一个,鼠标点击,按钮一,鼠标-id-02}
摄取:{鼠标-id=>23,
姿态=>[0.0,0.0,0.0]
时间=>184437124.80}]
前述样本蛋白质中的任一个或两者可能使主机装置的参与程序运行其代码的特殊部分。这些程序可能对一般的语义标签感兴趣:全部当中最一般的是“点”,或者更特定的对“引擎、一个”。或者它们可以寻找似乎仅会由精确装置生成的事件:“一个姿势引擎”,乃至单个聚集对象“手id-23”。
如上所述,蛋白质在由耦接或连接到池的任何程序或装置使用的池中是可用的,而不管程序或装置的类型。因此,在任何数目的计算机上运行的任何数目的程序都可以从输入池中提取事件蛋白质。这些装置只需能够通过局部存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个的直接后果是以下有益的可能性:将负责生成“输入事件”的进程与使用或解释事件的进程解耦。另一个后果是事件的源和消费者的多路化,以便输入装置可以由一个人控制或者可以由几个人同时使用(例如基于等离子体的输入框架支持许多并发用户),同时作为结果的事件流对多个事件消费者依次可见。
作为示例或蛋白质使用,装置C可以从池中提取一个或多个蛋白质(例如蛋白质1B等)。在蛋白质提取之后,装置C在处理蛋白质数据所对应的输入装置CA和CC的输入事件时可以使用从蛋白质的描述和摄取的色拉中检索或读取的蛋白质的数据。作为另一示例,装置A可以从池中提取一个或多个蛋白质(例如蛋白质1B等)。在蛋白质提取之后,装置A在处理蛋白质数据所对应的输入装置A的输入事件时可以使用蛋白质的数据。
耦接或连接到池的装置和/或程序可以在池中向后和向前浏览以查找具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其它蛋白质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的依靠。
在本文中所描述的系统实施方式中使用的输入装置的示例包括如消费电子产品中使用的姿态输入传感器、键盘、鼠标、红外线遥控器以及面向任务的触媒对象,这只是举几个示例。
图19是根据又一替换实施方式的处理环境的框图,该处理环境包括多个装置,所述多个装置耦接在运行于装置中的一个或多个上的大量程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许大量运行的程序共享并对装置所生成的图形事件集体做出反应。这个系统只是包括多个运行程序(例如图形A至E)和一个或多个显示装置(未示出)的系统的一个示例,其中,使得程序中的一些或全部的图形输出以协调的方式可用于其它程序,使用等离子体构造(例如池、蛋白质和色拉)以允许运行的程序共享并对装置所生成的图形事件集体做出反应。
对于计算机程序而言通常有用的是显示由另一程序生成的图形。几个通常的示例包括视频会议应用、基于网络的放映幻灯片和演示程序以及视窗管理器。在这种配置下,池用作等离子体库以实施一般化的框架,该框架封装视频、网络应用共享和视窗管理,并且允许程序员添加在这种程序的当前版本中通常不可用的若干特征。
在等离子体组成环境中运行的程序(例如图形A至E)通过耦接和/或连接到池而参与协调池。每个程序都可以将蛋白质存放在该池中,以指示不同种类的图形源的可用性。可用于显示图形的程序也存放蛋白质,以指示它们显示的能力、安全和用户简档以及物理和网络位置。
图形数据也可以通过池传输,或者显示程序可以指向其它种类的网络资源(例如RTSP流)。如本文中所使用的短语“图形数据”指代依赖宽阔连续区的多种不同表示;图形数据的示例包括但不限于文字示例(例如
“图像”或像素块)、程序性示例(例如“绘图”指示的序列,诸如流下典型的openGL管线)以及描述性示例(例如借助于几何变换、裁剪和合成操作来组合其它图形构造的指令)。
在局部机器上,图形数据可通过特定于平台的显示驱动器优化来递送。甚至当图形没有通过池传输时,常常周期性的屏幕捕捉也将存储在协调池中,使得客户在不直接访问更深奥的源的情况下仍可显示后退图形。
这里描述的系统的一个优点在于,与大多数消息传递框架和网络协议不同,池维持数据的显著缓冲。所以程序可以向后回绕到池中以查看访问和使用模式(在协调池的情况下)或者提取以前的图形帧(在图形池的情况下)。
图20是根据再一替换实施方式的处理环境的框图,该处理环境包括多个装置,所述多个装置耦接在运行于装置中的一个或多个上的大量程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许对运行的程序进行状态检查、可视化和调试。这个系统只是包括多个装置(例如装置A、装置B等)上的多个运行程序(例如程序P-A、程序P-B等)的系统的一个示例,其中,一些程序使用或通过池访问其它程序的内部状态。
大多数交互计算机系统包括彼此并排运行的许多程序,它们或者在单个机器上或者在多个机器上,并且跨网络进行交互。多程序系统可能难以配置、解析和调试,因为运行时间数据隐藏在每个进程内部并难以访问。在此描述的实施方式的一般化框架和等离子体构造允许运行的程序使许多它们的数据通过池可用,以使得其它程序可以检查它们的状态。这个框架启用比传统调试器更灵活的调试工具、复杂的系统维护工具以及可视化装备,所述可视化装备配置成允许人工操作员详细地解析一个或多个程序已经过的状态的序列。
在这个框架中运行的程序(例如程序P-A、程序P-B等)在程序进行时生成或创建进程池。这个池登记在系统年鉴中,并且施加安全与访问控制。更加具体地,每个装置(例如装置A、B等)将由运行于各个装置上的程序(例如程序P-A、程序P-B等)生成的或者从其输出的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放到等离子体池中。例如,程序P-A生成数据或输出并提供该输出给装置A,装置A依次将原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A、蛋白质3A等)并将那些蛋白质存放到池中。作为另一示例,程序P-B生成数据并提供该数据给装置B,装置B依次将数据翻译成蛋白质(例如蛋白质1B至蛋白质4B等)并将那些蛋白质存放到池中。
在程序寿命的存续期间,具有充分访问许可的其它程序可以附接到池并读取程序存放的蛋白质;这表示基本检查模态,并且在概念上是“单路”或“只读”命题:在程序P-A中感兴趣的实体检查由其进程池中的P-A存放的状态信息流。例如,在装置C下运行的检查程序或应用可以从池中提取一个或多个蛋白质(例如蛋白质1A、蛋白质2A等)。在蛋白质提取之后,装置C可以使用从蛋白质的描述和摄取的色拉中检索或读取的蛋白质的数据以访问、解释和检查程序P-A的内部状态。
但是,回顾等离子体系统不仅是有效的状态传输方案,而且是全取向消息收发环境,几个另外的模式支持程序对程序状态检查。授权的检查程序可以自己将蛋白质存放到程序P的进程池中,以影响或控制在该进程池中产生和放置的状态信息的特性(毕竟,程序P不仅向所述进程池中写入而且还从中读取)。
图21是根据另一替换实施方式的处理环境的框图,该处理环境包括多个装置,所述多个装置耦接在运行于装置中的一个或多个上的大量程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许影响或控制该进程池中产生和放置的状态信息的特性。在这个系统示例中,装置C的检查程序例如可以请求程序(例如程序P-A、程序P-B等)或者在单个瞬时或者在具体的一段时间倾卸比正常更多的状态到池中。或者,预示调试通信的下一个“等级”,感兴趣的程序可以请求程序(例如程序P-A、程序P-B等)发出列举其运行时间环境中现存的对象的蛋白质,它们单独地能够并且可用于通过调试池进行交互。由此可知,感兴趣的程序可以“寻址”程序运行时间中的对象当中的个体,将蛋白质放置在具体的对象单独会占用并做出反应的进程池中。感兴趣的程序例如可以请求对象发出报告蛋白质,描述其全部成分变量的瞬时值。甚至更重要的是,感兴趣的程序可以通过其它蛋白质指导对象改变其行为或其变量的值。
更加具体地,在这个示例中,装置C的检查应用将对于对象列表的请求(例如“请求对象列表”)(以蛋白质的形式)放置到池中,该请求然后由耦接到池的每个装置(例如装置A、装置B等)提取。响应于该请求,每个装置(例如装置A、装置B等)将列举其运行时间环境中现存的对象的蛋白质(例如蛋白质1A、蛋白质IB等)放置到池中,它们单独地能够并且可用于通过调试池进行交互。
由此可知通过来自装置的列举,并且响应于对象的列举,装置C的检查应用寻址程序运行时间中的对象当中的个体,将蛋白质放置在具体的对象单独会占用并做出反应的进程池中。装置C的检查应用例如可以将请求蛋白质(例如蛋白质“请求报告P-A-O”、“请求报告P-B-O”)放置在池中,对象(例如分别是对象P-A-O、对象P-B-O)发出报告蛋白质(例如蛋白质2A、蛋白质2B等),描述其全部成分变量的瞬时值。每个对象(例如对象P-A-O、对象P-B-O)提取其请求(例如分别是“请求报告P-A-O”、“请求报告P-B-O”),并且做为响应,将蛋白质放置到包括所请求的报告(例如分别为蛋白质2A、蛋白质2B)的池中。装置C然后提取各种报告蛋白质(例如蛋白质2A、蛋白质2B等),并且如对报告的内容适当的那样采取后续的处理动作。
以这种方式,使用等离子体作为互换介质最终趋于侵蚀调试、进程控制以及程序对程序通信与协调之间的区别。
最后,一般化的等离子体框架允许可视化和解析程序以松散耦接的方式设计。例如显示存储器访问模式的可视化工具可以结合输出其基本存储器读取和写入至池的任何程序一起使用。经历解析的程序不需要知道可视化工具的存在或设计,反之亦然。
以上述方式使用池并不过度影响系统性能。例如,实施方式已允许在池中每秒存放几十万个蛋白质,以便使得即使相对冗长的数据输出也能够不显著地抑制大多数程序的响应性或交互特征。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。所述方法包括以下中的至少一个:使用所述身体的附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种方法,该方法包括:通过光学检测器接收姿势数据,该姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据;以及以下中的至少一个:使用所述身体的附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
根据一种实施方式的所述方法包括:使用所述姿势数据检测所述身体的所述附肢并且标识所述附肢的段。
根据一种实施方式的所述方法包括:通过如下方式检测所述身体的所述附肢:区分包括所述附肢的至少一个第一像素区域与不存在所述附肢的至少一个第二像素区域。
根据一种实施方式的所述光学检测器包括输出多个视频帧的视频检测器,所述多个视频帧包括所述姿势数据。
根据一种实施方式的所述方法包括:将每个视频帧转换成二进制图像。
根据一种实施方式的所述方法包括:对所述多个视频帧中的每个视频帧进行预处理,所述预处理包括对所述附肢的所述检测以及对所述附肢的所述段的所述标识。
根据一种实施方式的所述方法包括:使用所述段的数据生成所述身体的估计取向。
根据一种实施方式的所述方法包括:将所述多个视频帧中的每个视频帧与背景模型相比较。
根据一种实施方式的所述方法包括:通过计算所述多个视频帧的适应运行平均来生成所述背景模型。
根据一种实施方式的所述方法包括:将所述背景模型转换成背景二进制图像。
根据一种实施方式的所述方法包括:对于所述视频帧的每个像素计算所述视频帧的相应像素的第一像素值与所述背景模型的每个相应对应像素的第二像素值之间的像素值差异。
根据一种实施方式的所述方法包括:通过标记所述视频帧的如下每个像素来生成被标记的像素:对于所述每个像素而言的所述像素值差异超过阈值。
根据一种实施方式的所述方法包括:生成包括所述被标记的像素的前景图像。
根据一种实施方式的所述方法包括:从所述姿势数据中提取至少一个特征,其中,所述至少一个特征包括所述前景图像的至少一个像素。
根据一种实施方式的所述检测包括:将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
根据一种实施方式的所述至少一个特征包括少一个盒子,其中,所述至少一个盒子是使用所述姿势数据的至少一个查询区域内的多个坐标来规定的。
根据一种实施方式的所述方法包括:使用所述至少一个盒子的左上坐标和右下坐标来规定所述至少一个盒子。
根据一种实施方式的所述至少一个盒子由所述至少一个前景图像的多个像素来表征。
根据一种实施方式的所述至少一个特征包括至少一个环,其中,所述至少一个环是盒子内的未被填充的矩形区域。
根据一种实施方式的所述检测包括:将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
根据一种实施方式的所述附肢包括指尖。
根据一种实施方式的所述身体包括手指。
根据一种实施方式的所述身体包括手。
根据一种实施方式的所述身体包括臂。
根据一种实施方式的所述方法包括:对于所述附肢的每个被检测到的实例生成与所述附肢对应的身体预测。
根据一种实施方式的所述身体预测包括与所述附肢对应的预测位置。
实施方式的所述身体预测包括与所述检测区域对应的所述估计取向。
根据一种实施方式的所述方法包括:生成身体预测列表以及将所述身体预测存储在所述身体预测列表中,其中,所述身体预测列表包括多个身体预测。
根据一种实施方式的所述方法包括:生成对于所述视频帧而言的边缘图像。
根据一种实施方式的所述边缘图像的所述生成由边缘检测器提供。
根据一种实施方式的所述方法包括:生成对于所述边缘图像的每个边缘像素而言的边缘取向图像。
根据一种实施方式的所述边缘取向图像的所述生成包括计算由局部偏导数暗示的角度。
根据一种实施方式的所述方法包括:当所述对身体的跟踪在进行中时,使用根据至少一个先前视频帧对所述身体预测的先前估计来生成对于所述身体预测而言的预测估计。
根据一种实施方式的所述方法包括:当对多个身体假设的跟踪在进行中时,使用根据至少一个先前视频帧对所述身体预测的先前估计来对于每个身体假设生成对于所述身体预测而言的预测估计。
根据一种实施方式的所述方法包括:从所述身体预测列表中移除与所述视频帧对应的所述身体预测的复制件。
根据一种实施方式的所述方法包括:对于每个预测估计标识最佳参数值。
根据一种实施方式的所述方法包括:使用粒子群优化标识所述最佳参数值。
根据一种实施方式的所述方法包括:使用一组身体模型标识所述最佳参数值。
根据一种实施方式的所述组身体模型包括一组手模型。
根据一种实施方式的所述方法包括:通过创建与多个姿态中的每个姿态中的手的形状匹配的轮廓来生成所述组手模型。
根据一种实施方式的所述方法包括:使用二次b样条表示所述轮廓。
根据一种实施方式的所述最佳参数值包括最佳地匹配所述组身体模型中的身体模型的身体预测的至少一个参数值,其中,所述身体预测与所述姿势数据对应。
根据一种实施方式的所述最佳参数值包括位置、比例和取向中的至少一个。
根据一种实施方式的所述最佳参数值包括位置。
根据一种实施方式的所述最佳参数值包括比例。
根据一种实施方式的所述最佳参数值包括取向。
根据一种实施方式的所述方法包括:对于每个参数值,更新所述身体模型的手样条的控制点。
根据一种实施方式的所述更新包括通过平移、比例缩放和旋转中的至少一个来更新。
根据一种实施方式的所述更新包括通过平移来更新。
根据一种实施方式的所述更新包括通过比例缩放来更新
根据一种实施方式的所述更新包括通过旋转来更新。
根据一种实施方式的所述方法包括:沿着所述手样条进行采样。
根据一种实施方式的所述方法包括:将所述手样条的局部轮廓取向与所述视频帧的所述边缘取向图像的有取向的边缘相比较。
根据一种实施方式的所述方法包括:通过沿着所述手样条的法线搜索具有匹配取向的、最靠近所述身体预测的边缘来进行比较。
根据一种实施方式的所述方法包括:使用所述最佳参数值更新所述多个预测估计。
根据一种实施方式的所述方法包括:当最高得分的预测估计超过阈值时,将所述最高得分的预测估计报告为当前身体位置。
根据一种实施方式的所述方法包括:当所述最高得分的预测估计小于所述阈值时,报告对应的帧中不存在身体。
根据一种实施方式的所述方法包括:使用所述姿势数据检测所述身体的姿势。
根据一种实施方式的所述姿势包括所述身体的姿态和运动中的至少一个。
根据一种实施方式的所述方法包括:使用姿势记号将所述姿势翻译成姿势信号。
根据一种实施方式的所述方法包括:使用所述姿势信号控制耦接到计算机的部件。
根据一种实施方式的所述方法包括:标识所述姿势,其中,所述标识包括标识所述身体的一部分的姿态和取向。
根据一种实施方式的所述检测包括生成表示所述姿势的三维空间点数据并且标记所述空间点数据。
根据一种实施方式的所所述翻译包括将所述空间点数据翻译成适合于所述计算机的配置的命令。
根据一种实施方式的所述翻译包括将所述姿势的信息翻译成姿势记号。
根据一种实施方式的所述姿势记号表示姿势词汇,并且所述姿势信号包括所述姿势词汇的通信。
根据一种实施方式的所述姿势词汇以文本形式表示所述身体的运动学联动机构的瞬时姿态状态。
根据一种实施方式的所述姿势词汇以文本形式表示所述身体的运动学联动机构的取向。
根据一种实施方式的所述姿势词汇以文本形式表示所述身体的运动学联动机构的取向的组合。
根据一种实施方式的所述姿势词汇包括表示所述身体的运动学联动机构的状态的字符串。
根据一种实施方式的所述方法包括:将所述串中的每个位置分配给所述附肢。
根据一种实施方式的所述方法包括:将多个字符中的字符分配给所述附肢的多个位置中的每个位置。
根据一种实施方式的所述多个位置是相对于坐标原点建立的。
根据一种实施方式的所述方法包括:使用如下位置建立所述坐标原点:所述位置选自于包括空间中的绝对位置和取向、交互地响应于所述身体的动作的、以及不管所述身体的总体位置和朝向如何而相对于所述身体的固定位置和取向的组。
根据一种实施方式的所述方法包括:将所述多个字符中的字符分配给所述附肢的多个取向中的每个取向。
根据一种实施方式的控制所述部件包括通过将所述附肢的所述姿势映射到三度空间对象来同时以六个自由度控制所述三度空间对象。
根据一种实施方式的控制所述部件包括通过三个平移自由度和三个旋转自由度来控制三度空间对象。
根据一种实施方式的所述三度空间对象被呈现在耦接到所述计算机的显示装置上。
根据一种实施方式的所述三度空间对象耦接到所述计算机。
根据一种实施方式的所述检测包括检测所述对象的外推位置何时与虚拟空间相交,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间。
根据一种实施方式的控制所述部件包括当所述外推位置与所述虚拟空间中的虚拟对象相交时控制所述虚拟对象。
根据一种实施方式的所述方法包括:控制所述检测和控制的比例缩放以生成虚拟空间与物理空间之间的一致性,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间,其中,所述物理空间包括由所述身体占据的空间。
根据一种实施方式的所述方法包括:确定耦接到所述计算机的显示装置的所述物理空间中的尺度、取向和位置。
根据一种实施方式的所述方法包括:将所述显示装置所位于的所述物理空间作为投影动态地映射到耦接到所述计算机的至少一个应用的所述虚拟空间中。
根据一种实施方式的所述方法包括:在所述虚拟空间与所述物理空间之间翻译比例、角度、深度和尺度以适合于耦接到所述计算机的至少一个应用。
根据一种实施方式的所述方法包括:响应于至少一个物理对象在所述物理空间中的移动而控制所述虚拟空间中的至少一个虚拟对象。
根据一种实施方式的所述方法包括:响应于所述身体在物理空间中相对于所述显示装置的位置的位置而控制所述显示装置上的图形渲染。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。所述方法包括使用所述姿势数据检测所述身体的附肢并且标识所述附肢的区域。所述方法包括以下中的至少一个:使用所述附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据;使用所述姿势数据检测所述身体的附肢并且标识所述附肢的区域;以及以下中的至少一个:使用所述附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
根据一种实施方式的所述光学检测器包括输出多个视频帧的视频检测器,所述多个视频帧包括所述姿势数据。
根据一种实施方式的所述方法包括:检测所述多个视频帧中的运动。
根据一种实施方式的所述方法包括:通过区分包括所述附肢的视频帧的至少一个第一像素区域与不存在所述附肢的所述视频帧的至少一个第二像素区域来检测所述附肢。
根据一种实施方式的所述方法包括:检测所述视频帧的边缘像素。
根据一种实施方式的所述方法包括:生成对于所述视频帧而言的边缘图像。
根据一种实施方式的所述方法包括:生成所述边缘图像中的每个边缘像素的边缘取向图像。
根据一种实施方式的所述边缘取向图像的所述生成包括计算由所述视频帧的局部偏导数暗示的角度。
根据一种实施方式的所述方法包括:当跟踪数据可用时,使用所述跟踪数据生成身体预测。
根据一种实施方式的所述方法包括:使用所述边缘像素、所述边缘取向图像和所述附肢中的至少一个来生成身体预测。
根据一种实施方式的所述方法包括:通过将所述身体预测与一组身体模型相比较来检测所述身体。
根据一种实施方式的所述方法包括:跟踪所述身体。
根据一种实施方式的所述方法,包括:使用所述姿势数据检测所述身体的姿势。
根据一种实施方式的所述姿势包括所述身体的姿态和运动中的至少一个。
根据一种实施方式的所述方法包括:使用姿势记号将所述姿势翻译成姿势信号。
根据一种实施方式的所述方法包括:使用所述姿势信号控制计算机应用。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。所述方法包括:检测所述身体的附肢的段并且使用所述段生成所述身体的估计取向。所述方法包括:使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种方法,所述方法包括:通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据;检测所述身体的附肢的段并且使用所述段生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。所述方法包括:使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段。所述方法包括:使用所述段的数据生成所述身体的估计取向。所述方法包括:使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种方法,所述方法包括:通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据;使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段;使用所述段的数据生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种方法,所述方法包括根据通过光学检测器接收到的姿势数据来检测身体的姿势。所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间位置数据。所述检测包括检测所述身体的附肢的段并且使用所述段生成所述身体的估计取向。所述方法包括:使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体,并且在跟踪时使用所述姿势数据标识所述姿势。所述方法包括生成表示所述姿势的姿势信号以及提供所述姿势信号作为控制信号。
本文中所描述的实施方式包括一种方法,所述方法包括:根据通过光学检测器接收到的姿势数据来检测身体的姿势,其中所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间位置数据,所述检测包括检测所述身体的附肢的段并且使用所述段生成所述身体的估计取向;使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体,并且在跟踪时使用所述姿势数据标识所述姿势;以及生成表示所述姿势的姿势信号以及提供所述姿势信号作为控制信号。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。所述方法包括以下中的至少一个:使用所述身体的附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。所述方法包括:使用所述姿势数据检测和标识所述身体的姿势,并且将所述姿势翻译成姿势信号。所述方法包括:响应于所述姿势信号而控制耦接到计算机的部件。
本文中所描述的实施方式包括一种方法,所述方法包括:通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据;以下中的至少一个:使用所述身体的附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体;使用所述姿势数据检测和标识所述身体的姿势,并且将所述姿势翻译成姿势信号;以及响应于所述姿势信号而控制耦接到计算机的部件。
本文中所描述的实施方式包括一种方法,所述方法包括通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据。所述方法包括:使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段,并且使用所述段确定所述身体的取向。所述方法包括:使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。所述方法包括仅使用所述姿势数据检测和标识所述身体的姿势。所述方法包括将所述姿势翻译成姿势信号。所述方法包括:使用所述姿势信号控制计算机部件。
本文中所描述的实施方式包括一种方法,所述方法包括:通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据;使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段,并且使用所述段确定所述身体的取向;使用所述取向和所述姿势数据中的至少一个来跟踪所述身体;仅使用所述姿势数据检测和标识所述身体的姿势;将所述姿势翻译成姿势信号;以及使用所述姿势信号控制计算机部件。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件进行以下中的至少一个:使用所述身体的附肢确定所述身体的取向;以及使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件进行以下中的至少一个:使用所述身体的附肢确定所述身体的取向;以及使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
根据一种实施方式的所述姿势部件使用所述姿势数据检测所述身体的所述附肢并且标识所述附肢的段。
根据一种实施方式的所述姿势部件通过如下方式检测所述身体的所述附肢:区分包括所述附肢的至少一个第一像素区域与不存在所述附肢的至少一个第二像素区域。
根据一种实施方式的所述光学检测器包括输出多个视频帧的视频检测器,所述多个视频帧包括所述姿势数据。
根据一种实施方式的所述系统包括:将每个视频帧转换成二进制图像。
根据一种实施方式的所述系统包括:对所述多个视频帧的每个视频帧进行预处理,所述预处理包括对所述附肢的所述检测以及对所述附肢的所述段的所述标识
根据一种实施方式的所述姿势部件使用所述段的数据生成所述身体的估计取向。
根据一种实施方式的所述姿势部件将所述多个视频帧中的每个视频帧与背景模型相比较。
根据一种实施方式的所述姿势部件通过计算所述多个视频帧的适应滑动平均来生成所述背景模型。
根据一种实施方式的所述姿势部件将所述背景模型转换成背景二进制图像。
根据一种实施方式的所述姿势部件对于所述视频帧的每个像素计算所述视频帧的相应像素的第一像素值与所述背景模型的每个相应对应的像素的第二像素值之间的像素值差异。
根据一种实施方式的所述姿势部件通过标记所述视频帧的如下每个像素来生成被标记的像素:对于所述每个像素而言的所述像素值差异超过阈值。
根据一种实施方式的所述姿势部件生成包括所述被标记的像素的前景图像。
根据一种实施方式的所述姿势部件从所述姿势数据中提取至少一个特征,其中,所述至少一个特征包括所述前景图像的至少一个像素。
根据一种实施方式的所述检测包括:将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
根据一种实施方式的所述至少一个特征包括至少一个盒子,其中,所述至少一个盒子使用所述姿势数据中的至少一个查询区域内的多个坐标来规定。
根据一种实施方式的所述姿势部件使用所述至少一个盒子的左上坐标和右下坐标来规定所述至少一个盒子。
根据一种实施方式的所述至少一个盒子由所述至少一个前景图像的多个像素来表征。
根据一种实施方式的所述至少一个特征包括至少一个环,其中,所述至少一个环是盒子内的未被填充的矩形区域。
根据一种实施方式的所述姿势部件又将所述至少一个特征施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时将所述至少一个特征标识为包括所述附肢。
根据一种实施方式的所述附肢包括指尖。
根据一种实施方式的所述身体包括手指。
根据一种实施方式的所述身体包括手。
根据一种实施方式的所述身体包括臂。
根据一种实施方式的所述姿势部件对于所述附肢的每个被检测到的实例生成与所述附肢对应的身体预测。
根据一种实施方式的所述身体预测包括与所述附肢对应的预测位置。
根据一种实施方式的所述身体预测包括与所述被检测到的区域对应的所述估计取向。
根据一种实施方式的所述姿势部件生成身体预测列表并且将所述身体预测包括在所述身体预测列表中,其中,所述身体预测列表包括多个身体预测。
根据一种实施方式的所述姿势部件生成对于所述视频帧而言的边缘图像。
根据一种实施方式的所述边缘图像的所述生成由边缘检测器提供。
根据一种实施方式的所述姿势部件生成对于所述边缘图像的每个边缘像素而言的边缘取向图像。
根据一种实施方式的所述边缘取向图像的所述生成包括计算由局部偏导数暗示的角度。
根据一种实施方式的所述姿势部件当对所述身体的跟踪在进行中时使用根据至少一个先前视频帧对所述身体预测的先前估计来生成对于所述身体预测而言的预测估计。
根据一种实施方式的所述姿势部件当对多个身体假设的跟踪在进行中时使用根据至少一个先前视频帧对所述身体预测的先前估计来对于每个身体假设生成对于所述身体预测而言的预测估计。
根据一种实施方式的所述姿势部件从所述身体预测列表中移除与所述视频帧对应的所述身体预测的复制件。
根据一种实施方式的所述姿势部件对于每个预测估计标识最佳参数值。
根据一种实施方式的所述姿势部件使用粒子群优化标识所述最佳参数值。
根据一种实施方式的所述姿势部件使用一组身体模型标识所述最佳参数值。
根据一种实施方式的所述组身体模型包括一组手模型。
根据一种实施方式的所述系统包括:通过创建与多个姿态中的每个姿态中的手的形状匹配的轮廓来生成所述组手模型。
根据一种实施方式的所述系统包括:使用二次b样条表示所述轮廓。
根据一种实施方式的所述最佳参数值包括最佳地匹配所述组身体模型中的身体模型的身体预测的至少一个参数值,其中,所述身体预测与所述姿势数据对应。
根据一种实施方式的所述最佳参数值包括位置、比例和取向中的至少一个。
根据一种实施方式的所述最佳参数值包括位置。
根据一种实施方式的所述最佳参数值包括比例。
根据一种实施方式的所述最佳参数值包括取向。
根据一种实施方式的所述姿势部件对于每个参数值更新所述身体模型的手样条的控制点。
根据一种实施方式的所述更新包括通过平移、比例缩放和旋转中的至少一个来更新。
根据一种实施方式的所述更新包括通过平移来更新。
根据一种实施方式的所述更新包括通过比例缩放来更新。
根据一种实施方式的所述更新包括通过旋转来更新
根据一种实施方式的所述系统包括:沿着所述手样条进行采样。
根据一种实施方式的所述姿势部件将所述手样条的局部轮廓取向与所述视频帧的所述边缘取向图像的有取向的边缘相比较。
根据一种实施方式的所述姿势部件通过沿着所述手样条的法线搜索具有匹配取向的、最靠近所述身体预测的边缘来进行比较。
根据一种实施方式的所述姿势部件使用所述最佳参数值更新所述多个预测估计。
根据一种实施方式的所述姿势部件当最高得分的预测估计超过阈值时,将所述最高得分的预测估计报告为当前身体位置。
根据一种实施方式的所述姿势部件当所述最高得分的预测估计小于所述阈值时,报告对应的帧中不存在身体。
根据一种实施方式的所述姿势部件使用所述姿势数据检测所述身体的姿势。
根据一种实施方式的所述姿势包括所述身体的姿态和运动中的至少一个。
根据一种实施方式的所述姿势部件使用姿势记号将所述姿势翻译成姿势信号。
根据一种实施方式的所述姿势部件使用所述姿势信号控制耦接到计算机的部件。
根据一种实施方式的所述姿势部件标识所述姿势,其中,所述标识包括标识所述身体的一部分的姿态和取向。
根据一种实施方式的所述检测包括生成表示所述姿势的三维空间点数据并且标记所述空间点数据。
根据一种实施方式的所述翻译包括将所述空间点数据翻译成适合于所述计算机的配置的命令。
根据一种实施方式的所述翻译包括将所述姿势的信息翻译成姿势记号。
根据一种实施方式的所述姿势记号表示姿势词汇,并且所述姿势信号包括所述姿势词汇的通信。
根据一种实施方式的所述姿势词汇以文本形式表示所述身体的运动学联动机构的瞬时姿态状态。
根据一种实施方式的所述姿势词汇以文本形式表示所述身体的运动学联动机构的取向。
根据一种实施方式的所述姿势词汇以文本形式表示所述身体的运动学联动机构的取向的组合。
根据一种实施方式的所述姿势词汇包括表示所述身体的运动学联动机构的状态的字符串。
根据一种实施方式的所述姿势部件将所述串中的每个位置分配给所述附肢。
根据一种实施方式的所述姿势部件将多个字符中的字符分配给所述附肢的多个位置中的每个位置。
根据一种实施方式的所述多个位置是相对于坐标原点建立的。
根据一种实施方式的所述姿势部件使用如下位置建立所述坐标原点:所述位置选自于包括空间中的绝对位置和取向、交互地响应于所述身体的动作的、以及不管所述身体的总体位置和朝向如何而相对于所述身体的固定位置和取向的组。
根据一种实施方式的所述姿势部件将所述多个字符中的字符分配给所述附肢的多个取向中的每个取向。
根据一种实施方式的控制所述部件包括通过将所述附肢的所述姿势映射到三度空间对象来同时以六个自由度控制所述三度空间对象。
根据一种实施方式的控制所述部件包括通过三个平移自由度和三个旋转自由度来控制三度空间对象。
根据一种实施方式的所述三度空间对象被呈现在耦接到所述计算机的显示装置上。
根据一种实施方式的所述三度空间对象耦接到所述计算机。
根据一种实施方式的所述检测包括检测所述对象的外推位置何时与虚拟空间相交,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间。
根据一种实施方式的控制所述部件包括当所述外推位置与所述虚拟空间中的虚拟对象相交时控制所述虚拟对象。
根据一种实施方式的所述系统包括:控制所述检测和控制的比例缩放以生成虚拟空间与物理空间之间的一致性,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间,其中,所述物理空间包括由所述身体占据的空间。
根据一种实施方式的所述系统包括:确定耦接到所述计算机的显示装置的所述物理空间中的尺度、取向和位置。
根据一种实施方式的所述系统包括:将所述显示装置所位于的所述物理空间作为投影动态地映射到耦接到所述计算机的至少一个应用的所述虚拟空间中。
根据一种实施方式的所述系统包括:在所述虚拟空间与所述物理空间之间翻译比例、角度、深度和尺度适合于耦接到所述计算机的至少一个应用。
根据一种实施方式的所述系统包括:响应于至少一个物理对象在所述物理空间中的移动而控制所述虚拟空间中的至少一个虚拟对象。
根据一种实施方式的所述系统包括:响应于所述身体在物理空间中相对于所述显示装置的位置的位置而控制所述显示装置上的图形渲染。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述至少一个姿势部件使用所述姿势数据检测所述身体的附肢并且标识所述附肢的区域。所述至少一个姿势部件进行以下中的至少一个:使用所述附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述至少一个姿势部件使用所述姿势数据检测所述身体的附肢并且标识所述附肢的区域;并且其中,所述至少一个姿势部件进行以下中的至少一个:使用所述附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。
实施方式的所述光学检测器包括输出多个视频帧的视频检测器,所述多个视频帧包括所述姿势数据。
实施方式的所述至少一个姿势部件检测所述多个视频帧中的运动。
实施方式的所述至少一个姿势部件通过区分包括所述附肢的视频帧的至少一个第一像素区域与不存在所述附肢的视频帧的至少一个第二像素区域来检测所述附肢。
实施方式的所述至少一个姿势部件检测所述视频帧的边缘像素。
实施方式的所述至少一个姿势部件生成对于所述视频帧而言的边缘图像。
实施方式的所述至少一个姿势部件生成对于所述边缘图像的每个边缘像素而言的边缘取向图像。
实施方式的所述边缘取向图像的所述生成包括计算由所述视频帧的局部偏导数暗示的角度。
实施方式的所述至少一个姿势部件当跟踪数据可得到时,使用所述跟踪数据生成身体预测。
实施方式的所述至少一个姿势部件使用所述边缘像素、所述边缘取向图像和所述附肢中的至少一个来生成身体预测。
实施方式的所述至少一个姿势部件通过将所述身体预测与一组身体模型相比较来检测所述身体。
实施方式的所述至少一个姿势部件跟踪所述身体。
实施方式的所述至少一个姿势部件使用所述姿势数据检测所述身体的姿势。
实施方式的所述姿势包括所述身体的姿态和运动中的至少一个。
实施方式的所述至少一个姿势部件使用姿势记号将所述姿势翻译成姿势信号。
实施方式的所述至少一个姿势部件使用所述姿势信号控制计算机应用。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件检测所述身体的附肢的段并且使用所述段确定所述身体的取向。所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件检测所述身体的附肢的段并且使用所述段确定所述身体的取向;其中,所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段。所述姿势部件使用所述段的数据确定所述身体的取向。所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段;其中,所述姿势部件使用所述段的数据确定所述身体的取向;并且其中,所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件通过检测所述身体的附肢的段并且使用所述段确定所述身体的取向来根据所述姿势数据检测所述身体的姿势。所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体,并且当跟踪所述身体时使用所述姿势数据标识所述姿势。所述姿势部件生成姿势信号,所述姿势信号表示所述姿势并且提供所述姿势信号作为控制信号。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件通过检测所述身体的附肢的段并且使用所述段确定所述身体的取向来根据所述姿势数据检测所述身体的姿势;其中,所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体,并且当跟踪所述身体时使用所述姿势数据标识所述姿势;并且其中,所述姿势部件生成姿势信号,所述姿势信号表示所述姿势并且提供所述姿势信号作为控制信号。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件进行以下中的至少一个:使用所述身体的附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体。所述姿势部件使用所述姿势数据检测和标识所述身体的姿势,并且将所述姿势翻译成姿势信号。所述姿势部件响应于所述姿势信号而控制耦接到计算机的部件。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件进行以下中的至少一个:使用所述身体的附肢生成所述身体的估计取向;以及使用所述估计取向和所述姿势数据中的至少一个来跟踪所述身体;其中,所述姿势部件使用所述姿势数据检测和标识所述身体的姿势,并且将所述姿势翻译成姿势信号;并且其中,所述姿势部件响应于所述姿势信号而控制耦接到计算机的部件。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段,并且使用所述段确定所述身体的取向。所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。所述姿势部件仅使用所述姿势数据检测和标识所述身体的姿势。所述姿势部件将所述姿势翻译成姿势信号。所述姿势部件使用所述姿势信号控制计算机部件。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件使用所述姿势数据检测所述身体的附肢并且标识所述附肢的段,并且使用所述段确定所述身体的取向;其中,所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体;其中,所述姿势部件仅使用所述姿势数据检测和标识所述身体的姿势;其中,所述姿势部件将所述姿势翻译成姿势信号;并且其中,所述姿势部件使用所述姿势信号控制计算机部件。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件检测所述身体的附肢的段并且使用所述段确定所述身体的取向。所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件检测所述身体的附肢的段并且使用所述段确定所述身体的取向;其中,所述姿势部件使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。
本文中所描述的实施方式包括一种系统,所述系统包括至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器。所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据。所述姿势部件进行以下中的至少一个:使用所述身体的附肢确定所述身体的取向;以及使用所述取向和所述姿势数据中的至少一个来跟踪所述身体。所述姿势部件使用所述姿势数据检测和标识所述身体的姿势。所述姿势部件将所述姿势翻译成姿势信号并且使用所述姿势信号控制计算机部件。
本文中所描述的实施方式包括一种系统,所述系统包括:至少一个光学检测器,所述至少一个光学检测器耦接到执行姿势部件的处理器;其中,所述至少一个光学检测器对身体成像并且接收姿势数据,所述姿势数据是在时间和空间中的一点处所述身体的瞬时状态的绝对三度空间数据;其中,所述姿势部件进行以下中的至少一个:使用所述身体的附肢确定所述身体的取向;以及使用所述取向和所述姿势数据中的至少一个来跟踪所述身体;其中,所述姿势部件使用所述姿势数据检测和标识所述身体的姿势;并且其中,所述姿势部件将所述姿势翻译成姿势信号并且使用所述姿势信号控制计算机部件。
这里所描述的系统和方法包括处理系统,并且/或者在处理系统下运行和/或与处理系统相关联地运行。在本领域中已知,处理系统包括处理系统或装置的部件、或者一起工作的计算装置或基于处理器的装置的任何集合。例如,处理系统可包括便携式计算机、在通信网络中工作的便携式通信装置和/或网络服务器中的一个或多个。便携式计算机可以是从个人计算机、移动电话、个人数字助理、便携式计算装置和便携式通信装置中选择的任何多个装置和/或装置组合,但不限于此。处理系统可包括更大的计算机系统内的部件。
实施方式的处理系统包括至少一个处理器和至少一个存储器件或子系统。处理系统还可包括或耦接到至少一个数据库。这里广泛使用的术语“处理器”指的是任何逻辑处理单元,比如一个或多个中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路(ASIC)等。处理器和存储器可单片地集成到单个芯片上,分布在主机系统的多个芯片或部件当中,和/或由某个算法组合提供。这里所述的方法可以用软件算法、程序、固件、硬件、部件、电路中的一个或多个以任意组合加以实现。
体现这里所述的系统和方法的系统部件可放置在一起或者放置在分开的位置。因此,体现这里所述的系统和方法的系统部件可以是单个系统、多个系统和/或地理上分开的系统的部件。这些部件也可以是单个系统、多个系统和/或地理上分开的系统的子部件或子系统。这些部件可耦接到主机系统或与主机系统耦接的系统的一个或多个其他部件。
通信路径将系统部件耦接,并包括用于在部件之间通信或传递文件的介质。通信路径包括无线连接、有线连接和混合无线/有线连接。通信路径还包括:与包括局域网(LAN)、城域网(MAN)、万维网(WAN)、专用网络、办公网络或后端网络以及因特网在内的网络的耦接或连接。此外,通信路径包括可拆卸的固定介质,如软盘、硬盘驱动器和CD-ROM盘、以及闪存RAM、通用串行总线(USB)连接、RS-232连接、电话线、总线和电子邮件消息。
除了上下文另有明确要求,在整个描述中,词语“包括”等应以与排他性或穷举性含义相反的包括性含义来解释;亦即,应以“包括但不限于”的含义加以解释。同样,使用单数或复数的词语分别包括复数或单数。另外,词语“这里”、“下文中”、“上面”、“下面”和意思类似的词语是指本申请的整体,而不是指本申请的任何特定部分。当针对两个或更多项目的列表而使用词语“或”时,该词语涵盖该词语的所有以下解释:该列表中的任何项目、该列表中的所有项目以及该列表中的项目的任何组合。
对处理环境的实施方式的以上描述不意在是排他性的,所描述的系统和方法不限于所公开的精确形式。尽管这里为说明的目的描述了处理环境的具体实施方式和例子,但本领域的技术人员应认识到,在其他系统和方法的范围内可以进行各种等效修改。这里提供的处理环境的教导可应用于其他处理系统和方法,而不仅是上面描述的系统和方法。
可将上面描述的各种实施方式的要素和操作相组合以提供更多的实施例。可根据上面的详细描述对处理环境进行这些和其他改变。
Claims (156)
1.一种身体跟踪方法,包括:
通过光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据,其中所述光学检测器包括输出多个视频帧的视频检测器,所述多个视频帧包括所述姿势数据,并且其中所述身体为手;
对所述多个视频帧中的每个视频帧进行预处理,所述预处理包括:对于所述多个视频帧中的每个,根据所述视频帧检测所述手的附肢,根据被检测到的所述附肢的数据来标识所述手位于其中的预测区域,并且在所述预测区域中搜索所述手;
通过使用所述手的所述检测到的附肢生成所述手的估计取向;
使用所述手的所述估计取向来跟踪所述手以确定所述手的运动;
使用所述姿势数据检测所述手的姿势,其中,所述姿势包括所述手的手姿态和所确定的运动中的至少一个;
使用姿势记号将所述姿势翻译成姿势信号;以及
使用所述姿势信号控制耦接到计算机的部件,
其中对于所述附肢的每个被检测到的实例生成与所述附肢对应的手预测。
2.根据权利要求1所述的方法,包括:使用所述姿势数据检测所述手的所述附肢并且标识所述附肢的段。
3.根据权利要求2所述的方法,包括:通过如下方式检测所述手的所述附肢:区分包括所述附肢的至少一个第一像素区域与不存在所述附肢的至少一个第二像素区域。
4.根据权利要求2所述的方法,包括:将每个视频帧转换成二进制图像。
5.根据权利要求2所述的方法,包括:对所述多个视频帧中的每个视频帧进行预处理,所述预处理包括对所述附肢的所述检测以及对所述附肢的所述段的所述标识。
6.根据权利要求5所述的方法,包括:使用所述段的数据生成所述手的估计取向。
7.根据权利要求2所述的方法,包括:将所述多个视频帧中的每个视频帧与背景模型相比较。
8.根据权利要求7所述的方法,包括:通过计算所述多个视频帧的适应运行平均来生成所述背景模型。
9.根据权利要求8所述的方法,包括:将所述背景模型转换成背景二进制图像。
10.根据权利要求7所述的方法,包括:对于所述视频帧的每个像素计算所述视频帧的相应像素的第一像素值与所述背景模型的每个相应对应像素的第二像素值之间的像素值差异。
11.根据权利要求10所述的方法,包括:通过标记所述视频帧的如下每个像素来生成被标记的像素:对于所述每个像素而言的所述像素值差异超过阈值。
12.根据权利要求11所述的方法,包括:生成包括所述被标记的像素的前景图像。
13.根据权利要求12所述的方法,包括:从所述姿势数据中提取至少一个特征,其中,所述至少一个特征包括所述前景图像的至少一个像素。
14.根据权利要求13所述的方法,其中,所述检测包括:将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
15.根据权利要求13所述的方法,其中,所述至少一个特征包括至少一个盒子,其中,所述至少一个盒子是使用所述姿势数据的至少一个查询区域内的多个坐标来规定的。
16.根据权利要求15所述的方法,包括:使用所述至少一个盒子的左上坐标和右下坐标来规定所述至少一个盒子。
17.根据权利要求15所述的方法,其中,所述至少一个盒子由所述至少一个前景图像的多个像素来表征。
18.根据权利要求15所述的方法,其中,所述至少一个特征包括至少一个环,其中,所述至少一个环是盒子内的未被填充的矩形区域。
19.根据权利要求18所述的方法,其中,所述检测包括:将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
20.根据权利要求2所述的方法,其中,每个手预测包括与所述附肢对应的预测位置。
21.根据权利要求2所述的方法,其中,每个手预测包括与所述被检测到的区域对应的所述估计取向。
22.根据权利要求2所述的方法,包括:生成手预测列表并且将每个手预测存储在所述手预测列表中,其中,所述手预测列表包括多个手预测。
23.根据权利要求22所述的方法,包括:生成对于所述视频帧而言的边缘图像。
24.根据权利要求23所述的方法,其中,所述边缘图像的所述生成由边缘检测器提供。
25.根据权利要求23所述的方法,包括:生成对于所述边缘图像的每个边缘像素而言的边缘取向图像。
26.根据权利要求25所述的方法,其中,所述边缘取向图像的所述生成包括计算由局部偏导数暗示的角度。
27.根据权利要求25所述的方法,包括:当对所述手的跟踪在进行中时,通过使用根据至少一个先前视频帧对所述手预测的先前估计来生成对于所生成的手预测而言的预测估计。
28.根据权利要求27所述的方法,包括:当对多个手假设的跟踪在进行中时,使用根据至少一个先前视频帧对所述手预测的先前估计来对于每个手假设生成对于所述手预测而言的预测估计。
29.根据权利要求27所述的方法,包括:从所述手预测列表中移除与所述视频帧对应的所述手预测的复制件。
30.根据权利要求27所述的方法,包括:对于每个预测估计标识最佳参数值。
31.根据权利要求30所述的方法,包括:使用粒子群优化标识所述最佳参数值。
32.根据权利要求30所述的方法,包括:使用一组手模型标识所述最佳参数值。
33.根据权利要求32所述的方法,包括:通过创建与多个姿态中的每个姿态中的手的形状匹配的轮廓来生成所述组手模型。
34.根据权利要求33所述的方法,包括:使用二次b样条表示所述轮廓。
35.根据权利要求32所述的方法,其中,所述最佳参数值包括与所述组手模型中的手模型最佳地匹配的手预测的至少一个参数值,其中,所述手预测与所述姿势数据对应。
36.根据权利要求35所述的方法,其中,所述最佳参数值包括位置、比例和取向中的至少一个。
37.根据权利要求35所述的方法,其中,所述最佳参数值包括位置。
38.根据权利要求35所述的方法,其中,所述最佳参数值包括比例。
39.根据权利要求35所述的方法,其中,所述最佳参数值包括取向。
40.根据权利要求35所述的方法,包括:对于每个参数值更新所述手模型的手样条的控制点。
41.根据权利要求40所述的方法,其中,所述更新包括通过平移、比例缩放和旋转中的至少一个来更新。
42.根据权利要求40所述的方法,其中,所述更新包括通过平移来更新。
43.根据权利要求40所述的方法,其中,所述更新包括通过比例缩放来更新。
44.根据权利要求40所述的方法,其中,所述更新包括通过旋转来更新。
45.根据权利要求40所述的方法,包括:沿着所述手样条进行采样。
46.根据权利要求45所述的方法,包括:将所述手样条的局部轮廓取向与所述视频帧的所述边缘取向图像的有取向的边缘相比较。
47.根据权利要求46所述的方法,包括:通过沿着所述手样条的法线搜索具有匹配取向的、最靠近所述手预测的边缘来进行比较。
48.根据权利要求46所述的方法,包括:使用所述最佳参数值更新所述多个预测估计。
49.根据权利要求48所述的方法,包括:当最高得分的预测估计超过阈值时,将所述最高得分的预测估计报告为当前手位置。
50.根据权利要求49所述的方法,包括:当所述最高得分的预测估计小于所述阈值时,报告对应的帧中不存在手。
51.根据权利要求2所述的方法,包括:使用所述姿势数据检测所述手的姿势。
52.根据权利要求51所述的方法,其中,所述姿势包括所述手的姿态和运动中的至少一个。
53.根据权利要求51所述的方法,包括:标识所述姿势,其中,所述标识包括标识所述手的一部分的姿态和取向。
54.根据权利要求53所述的方法,其中,所述检测包括生成表示所述姿势的三维空间点数据并且标记所述空间点数据。
55.根据权利要求54所述的方法,其中,所述翻译包括将所述空间点数据翻译成适合于所述计算机的配置的命令。
56.根据权利要求51所述的方法,其中,所述翻译包括将所述姿势的信息翻译成姿势记号。
57.根据权利要求56所述的方法,其中,所述姿势记号表示姿势词汇,并且所述姿势信号包括所述姿势词汇的通信。
58.根据权利要求57所述的方法,其中,所述姿势词汇以文本形式表示所述手的运动学联动机构的瞬时姿态状态。
59.根据权利要求57所述的方法,其中,所述姿势词汇以文本形式表示所述手的运动学联动机构的取向。
60.根据权利要求57所述的方法,其中,所述姿势词汇以文本形式表示所述手的运动学联动机构的取向的组合。
61.根据权利要求57所述的方法,其中,所述姿势词汇包括表示所述手的运动学联动机构的状态的字符串。
62.根据权利要求61所述的方法,包括:将所述串中的每个位置分配给所述附肢。
63.根据权利要求62所述的方法,包括:将多个字符中的字符分配给所述附肢的多个位置中的每个位置。
64.根据权利要求63所述的方法,其中,所述多个位置是相对于坐标原点建立的。
65.根据权利要求64所述的方法,包括:使用如下位置建立所述坐标原点:所述位置选自于包括空间中的绝对位置和取向、交互地响应于所述手的动作的、以及不管所述手的总体位置和朝向如何而相对于所述手的固定位置和取向的组。
66.根据权利要求63所述的方法,包括:将所述多个字符中的字符分配给所述附肢的多个取向中的每个取向。
67.根据权利要求51所述的方法,其中,控制所述部件包括通过将所述附肢的所述姿势映射到三度空间对象来同时以六个自由度控制所述三度空间对象。
68.根据权利要求51所述的方法,其中,控制所述部件包括通过三个平移自由度和三个旋转自由度来控制三度空间对象。
69.根据权利要求68所述的方法,其中,所述三度空间对象被呈现在耦接到所述计算机的显示装置上。
70.根据权利要求68所述的方法,其中,所述三度空间对象耦接到所述计算机。
71.根据权利要求68所述的方法,其中,所述检测包括检测所述对象的外推位置何时与虚拟空间相交,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间。
72.根据权利要求71所述的方法,其中,控制所述部件包括当所述外推位置与所述虚拟空间中的虚拟对象相交时控制所述虚拟对象。
73.根据权利要求51所述的方法,包括:控制所述检测和控制的比例缩放以生成虚拟空间与物理空间之间的一致性,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间,其中,所述物理空间包括由所述手占据的空间。
74.根据权利要求73所述的方法,包括:确定耦接到所述计算机的显示装置的所述物理空间中的尺度、取向和位置。
75.根据权利要求74所述的方法,包括:将所述显示装置所位于的所述物理空间作为投影动态地映射到耦接到所述计算机的至少一个应用的所述虚拟空间中。
76.根据权利要求73所述的方法,包括:在所述虚拟空间与所述物理空间之间翻译比例、角度、深度和尺度以适合于耦接到所述计算机的至少一个应用。
77.根据权利要求73所述的方法,包括:响应于至少一个物理对象在所述物理空间中的移动而控制所述虚拟空间中的至少一个虚拟对象。
78.根据权利要求73所述的方法,包括:响应于所述手在物理空间中相对于所述显示装置的位置的位置而控制所述显示装置上的图形渲染。
79.一种身体跟踪系统,包括:
至少一个光学检测器,所述至少一个光学检测器耦接到处理器;以及
所述处理器,
其中,所述处理器被构造成:
通过所述光学检测器接收姿势数据,所述姿势数据是在时间和空间中的一点处身体的瞬时状态的绝对三度空间数据,其中所述光学检测器包括输出多个视频帧的视频检测器,所述多个视频帧包括所述姿势数据,并且其中所述身体为手,
对所述多个视频帧中的每个视频帧进行预处理,其中,对于所述多个视频帧中的每个,所述处理器被构造成根据所述视频帧检测所述手的附肢,根据被检测到的所述附肢的数据来标识所述手位于其中的预测区域,并且在所述预测区域中搜索所述手,
通过使用所述手的所述检测到的附肢生成所述手的估计取向,
使用所述手的所述估计取向来跟踪所述手以确定所述手的运动,
使用所述姿势数据检测所述手的姿势,其中,所述姿势包括所述手的手姿态和所确定的运动中的至少一个,
使用姿势记号将所述姿势翻译成姿势信号,
使用所述姿势信号控制耦接到计算机的部件,
其中对于所述附肢的每个被检测到的实例生成与所述附肢对应的手预测。
80.根据权利要求79所述的系统,其中,由所述处理器执行的姿势部件使用所述姿势数据检测所述手的所述附肢并且标识所述附肢的段。
81.根据权利要求80所述的系统,其中,所述姿势部件通过如下方式检测所述手的所述附肢:区分包括所述附肢的至少一个第一像素区域与不存在所述附肢的至少一个第二像素区域。
82.根据权利要求80所述的系统,其中所述系统被构造成将每个视频帧转换成二进制图像。
83.根据权利要求80所述的系统,其中对所述多个视频帧中的每个视频帧进行预处理,所述预处理包括对所述附肢的所述检测以及对所述附肢的所述段的所述标识。
84.根据权利要求83所述的系统,其中,所述姿势部件使用所述段的数据生成所述手的估计取向。
85.根据权利要求80所述的系统,其中,所述姿势部件将所述多个视频帧中的每个视频帧与背景模型相比较。
86.根据权利要求85所述的系统,其中,所述姿势部件通过计算所述多个视频帧的适应运行平均来生成所述背景模型。
87.根据权利要求86所述的系统,其中,所述姿势部件将所述背景模型转换成背景二进制图像。
88.根据权利要求85所述的系统,其中,所述姿势部件对于所述视频帧的每个像素计算所述视频帧的相应像素的第一像素值与所述背景模型的每个相应对应像素的第二像素值之间的像素值差异。
89.根据权利要求88所述的系统,其中,所述姿势部件通过标记所述视频帧的如下每个像素来生成被标记的像素:对于所述每个像素而言的所述像素值差异超过阈值。
90.根据权利要求89所述的系统,其中,所述姿势部件生成包括所述被标记的像素的前景图像。
91.根据权利要求90所述的系统,其中,所述姿势部件从所述姿势数据中提取至少一个特征,其中,所述至少一个特征包括所述前景图像的至少一个像素。
92.根据权利要求91所述的系统,其中,所述检测包括:将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
93.根据权利要求91所述的系统,其中,所述至少一个特征包括至少一个盒子,其中,所述至少一个盒子是使用所述姿势数据的至少一个查询区域内的多个坐标来规定的。
94.根据权利要求93所述的系统,其中,所述姿势部件使用所述至少一个盒子的左上坐标和右下坐标来规定所述至少一个盒子。
95.根据权利要求93所述的系统,其中,所述至少一个盒子由所述至少一个前景图像的多个像素来表征。
96.根据权利要求93所述的系统,其中,所述至少一个特征包括至少一个环,其中,所述至少一个环是盒子内的未被填充的矩形区域。
97.根据权利要求96所述的系统,其中,所述姿势部件将所述至少一个特征依次施加到多个过滤器,并且当所述至少一个特征被所述多个过滤器中的所有过滤器接受时,将所述至少一个特征标识为包括所述附肢。
98.根据权利要求97所述的系统,其中,每个手预测包括与所述附肢对应的预测位置。
99.根据权利要求97所述的系统,其中,每个手预测包括与所述被检测到的区域对应的所述估计取向。
100.根据权利要求97所述的系统,其中,所述姿势部件生成手预测列表并且将每个手预测包括在所述手预测列表中,其中,所述手预测列表包括多个手预测。
101.根据权利要求100所述的系统,其中,所述姿势部件生成对于所述视频帧而言的边缘图像。
102.根据权利要求101所述的系统,其中,所述边缘图像的所述生成由边缘检测器提供。
103.根据权利要求101所述的系统,其中,所述姿势部件生成对于所述边缘图像的每个边缘像素而言的边缘取向图像。
104.根据权利要求103所述的系统,其中,所述边缘取向图像的所述生成包括计算由局部偏导数暗示的角度。
105.根据权利要求103所述的系统,其中,所述姿势部件当对所述手的跟踪在进行中时使用根据至少一个先前视频帧对所生成的手预测的先前估计来生成对于所述手预测而言的预测估计。
106.根据权利要求105所述的系统,其中,所述姿势部件当对多个手假设的跟踪在进行中时使用根据至少一个先前视频帧对所述手预测的先前估计来对于每个手假设生成对于所述手预测而言的预测估计。
107.根据权利要求105所述的系统,其中,所述姿势部件从所述手预测列表中移除与所述视频帧对应的所述手预测的复制件。
108.根据权利要求105所述的系统,其中,所述姿势部件对于每个预测估计标识最佳参数值。
109.根据权利要求108所述的系统,其中,所述姿势部件使用粒子群优化标识所述最佳参数值。
110.根据权利要求108所述的系统,其中,所述姿势部件使用一组手模型标识所述最佳参数值。
111.根据权利要求110所述的系统,其中,通过创建与多个姿态中的每个姿态中的手的形状匹配的轮廓来生成所述组手模型。
112.根据权利要求111所述的系统,通过使用二次b样条表示所述轮廓。
113.根据权利要求110所述的系统,其中,所述最佳参数值包括与所述组手模型中的手模型最佳地匹配的手预测的至少一个参数值,其中,所述手预测与所述姿势数据对应。
114.根据权利要求113所述的系统,其中,所述最佳参数值包括位置、比例和取向中的至少一个。
115.根据权利要求113所述的系统,其中,所述最佳参数值包括位置。
116.根据权利要求113所述的系统,其中,所述最佳参数值包括比例。
117.根据权利要求113所述的系统,其中,所述最佳参数值包括取向。
118.根据权利要求113所述的系统,其中,所述姿势部件对于每个参数值更新所述手模型的手样条的控制点。
119.根据权利要求118所述的系统,其中,所述更新包括通过平移、比例缩放和旋转中的至少一个来更新。
120.根据权利要求118所述的系统,其中,所述更新包括通过平移来更新。
121.根据权利要求118所述的系统,其中,所述更新包括通过比例缩放来更新。
122.根据权利要求118所述的系统,其中,所述更新包括通过旋转来更新。
123.根据权利要求118所述的系统,沿着所述手样条进行采样。
124.根据权利要求123所述的系统,其中,所述姿势部件将所述手样条的局部轮廓取向与所述视频帧的所述边缘取向图像的有取向的边缘相比较。
125.根据权利要求124所述的系统,其中,所述姿势部件通过沿着所述手样条的法线搜索具有匹配取向的、最靠近所生成的手预测的边缘来进行比较。
126.根据权利要求124所述的系统,其中,所述姿势部件使用所述最佳参数值更新所述多个预测估计。
127.根据权利要求126所述的系统,其中,当最高得分的预测估计超过阈值时,所述姿势部件将所述最高得分的预测估计报告为当前手位置。
128.根据权利要求127所述的系统,其中,当所述最高得分的预测估计小于所述阈值时,所述姿势部件报告对应的帧中不存在手。
129.根据权利要求80所述的系统,其中,所述姿势部件使用所述姿势数据检测所述手的姿势。
130.根据权利要求129所述的系统,其中,所述姿势包括所述手的姿态和运动中的至少一个。
131.根据权利要求130所述的系统,其中,所述姿势部件标识所述姿势,其中,所述标识包括标识所述手的一部分的姿态和取向。
132.根据权利要求131所述的系统,其中,所述检测包括生成表示所述姿势的三维空间点数据并且标记所述空间点数据。
133.根据权利要求132所述的系统,其中,所述翻译包括将所述空间点数据翻译成适合于所述计算机的配置的命令。
134.根据权利要求130所述的系统,其中,所述翻译包括将所述姿势的信息翻译成姿势记号。
135.根据权利要求134所述的系统,其中,所述姿势记号表示姿势词汇,并且所述姿势信号包括所述姿势词汇的通信。
136.根据权利要求135所述的系统,其中,所述姿势词汇以文本形式表示所述手的运动学联动机构的瞬时姿态状态。
137.根据权利要求135所述的系统,其中,所述姿势词汇以文本形式表示所述手的运动学联动机构的取向。
138.根据权利要求135所述的系统,其中,所述姿势词汇以文本形式表示所述手的运动学联动机构的取向的组合。
139.根据权利要求135所述的系统,其中,所述姿势词汇包括表示所述手的运动学联动机构的状态的字符串。
140.根据权利要求139所述的系统,其中,所述姿势部件将所述串中的每个位置分配给所述附肢。
141.根据权利要求140所述的系统,其中,所述姿势部件将多个字符中的字符分配给所述附肢的多个位置中的每个位置。
142.根据权利要求141所述的系统,其中,所述多个位置是相对于坐标原点建立的。
143.根据权利要求142所述的系统,其中,所述姿势部件使用如下位置建立所述坐标原点:所述位置选自于包括空间中的绝对位置和取向、交互地响应于所述手的动作的、以及不管所述手的总体位置和朝向如何而相对于所述手的固定位置和取向的组。
144.根据权利要求141所述的系统,其中,所述姿势部件将所述多个字符中的字符分配给所述附肢的多个取向中的每个取向。
145.根据权利要求130所述的系统,其中,控制所述部件包括通过将所述附肢的所述姿势映射到三度空间对象来同时以六个自由度控制所述三度空间对象。
146.根据权利要求130所述的系统,其中,控制所述部件包括通过三个平移自由度和三个旋转自由度来控制三度空间对象。
147.根据权利要求146所述的系统,其中,所述三度空间对象被呈现在耦接到所述计算机的显示装置上。
148.根据权利要求146所述的系统,其中,所述三度空间对象耦接到所述计算机。
149.根据权利要求146所述的系统,其中,所述检测包括检测所述对象的外推位置何时与虚拟空间相交,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间。
150.根据权利要求149所述的系统,其中,控制所述部件包括当所述外推位置与所述虚拟空间中的虚拟对象相交时控制所述虚拟对象。
151.根据权利要求129所述的系统,其中,所述身体跟踪系统被构造成控制所述检测的比例缩放并且控制以生成虚拟空间与物理空间之间的一致性,其中,所述虚拟空间包括被描绘在耦接到所述计算机的显示装置上的空间,其中,所述物理空间包括由所述手占据的空间。
152.根据权利要求151所述的系统,其中,所述身体跟踪系统被构造成确定耦接到所述计算机的显示装置的所述物理空间中的尺度、取向和位置。
153.根据权利要求152所述的系统,其中,所述身体跟踪系统被构造成将所述显示装置所位于的所述物理空间作为投影动态地映射到耦接到所述计算机的至少一个应用的所述虚拟空间中。
154.根据权利要求151所述的系统,其中,所述身体跟踪系统被构造成在所述虚拟空间与所述物理空间之间翻译比例、角度、深度和尺度以适合于耦接到所述计算机的至少一个应用。
155.根据权利要求151所述的系统,其中,所述身体跟踪系统被构造成响应于至少一个物理对象在所述物理空间中的移动而控制所述虚拟空间中的至少一个虚拟对象。
156.根据权利要求151所述的系统,其中,所述身体跟踪系统被构造成响应于所述手在物理空间中相对于所述显示装置的位置的位置而控制所述显示装置上的图形渲染。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161467738P | 2011-03-25 | 2011-03-25 | |
US61/467,738 | 2011-03-25 | ||
PCT/US2012/030628 WO2012135153A2 (en) | 2011-03-25 | 2012-03-26 | Fast fingertip detection for initializing a vision-based hand tracker |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103988150A CN103988150A (zh) | 2014-08-13 |
CN103988150B true CN103988150B (zh) | 2018-02-13 |
Family
ID=46932282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280025109.XA Expired - Fee Related CN103988150B (zh) | 2011-03-25 | 2012-03-26 | 用于初始化基于视觉的手跟踪器的快速指尖检测 |
Country Status (5)
Country | Link |
---|---|
US (4) | US8941588B2 (zh) |
EP (1) | EP2689413A4 (zh) |
KR (1) | KR20140033025A (zh) |
CN (1) | CN103988150B (zh) |
WO (1) | WO2012135153A2 (zh) |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8531396B2 (en) | 2006-02-08 | 2013-09-10 | Oblong Industries, Inc. | Control system for navigating a principal dimension of a data space |
US9207766B1 (en) * | 2009-01-30 | 2015-12-08 | Cyber Silence Technologies, Inc. | Method and apparatus for hand imaging device |
US8639020B1 (en) | 2010-06-16 | 2014-01-28 | Intel Corporation | Method and system for modeling subjects from a depth map |
US9857868B2 (en) | 2011-03-19 | 2018-01-02 | The Board Of Trustees Of The Leland Stanford Junior University | Method and system for ergonomic touch-free interface |
EP2689413A4 (en) * | 2011-03-25 | 2015-07-22 | Oblong Ind Inc | QUICK FINGER FINGER DETECTION TO INITIALIZE A VISION BASED HAND TRACER |
WO2012139268A1 (en) * | 2011-04-11 | 2012-10-18 | Intel Corporation | Gesture recognition using depth images |
US8840466B2 (en) | 2011-04-25 | 2014-09-23 | Aquifi, Inc. | Method and system to create three-dimensional mapping in a two-dimensional game |
JP6074170B2 (ja) | 2011-06-23 | 2017-02-01 | インテル・コーポレーション | 近距離動作のトラッキングのシステムおよび方法 |
US11048333B2 (en) | 2011-06-23 | 2021-06-29 | Intel Corporation | System and method for close-range movement tracking |
TW201313415A (zh) * | 2011-09-19 | 2013-04-01 | Hon Hai Prec Ind Co Ltd | 機械手臂的座標校正系統及方法 |
JP5917125B2 (ja) | 2011-12-16 | 2016-05-11 | キヤノン株式会社 | 画像処理装置、画像処理方法、撮像装置および表示装置 |
US8854433B1 (en) | 2012-02-03 | 2014-10-07 | Aquifi, Inc. | Method and system enabling natural user interface gestures with an electronic system |
US9477303B2 (en) | 2012-04-09 | 2016-10-25 | Intel Corporation | System and method for combining three-dimensional tracking with a three-dimensional display for a user interface |
US9111135B2 (en) | 2012-06-25 | 2015-08-18 | Aquifi, Inc. | Systems and methods for tracking human hands using parts based template matching using corresponding pixels in bounded regions of a sequence of frames that are a specified distance interval from a reference camera |
US8934675B2 (en) | 2012-06-25 | 2015-01-13 | Aquifi, Inc. | Systems and methods for tracking human hands by performing parts based template matching using images from multiple viewpoints |
JP5910379B2 (ja) * | 2012-07-12 | 2016-04-27 | ソニー株式会社 | 情報処理装置、情報処理方法、表示制御装置および表示制御方法 |
KR20140019950A (ko) * | 2012-08-07 | 2014-02-18 | 성균관대학교산학협력단 | 단말기의 모노 카메라에 입력된 손가락 영상을 이용한 3차원 좌표 생성 방법 및 모노 카메라에 입력된 손가락 영상을 이용하여 3차원 좌표를 생성하는 이동 단말기 |
US8836768B1 (en) | 2012-09-04 | 2014-09-16 | Aquifi, Inc. | Method and system enabling natural user interface gestures with user wearable glasses |
US10908929B2 (en) | 2012-10-15 | 2021-02-02 | Famous Industries, Inc. | Human versus bot detection using gesture fingerprinting |
US10877780B2 (en) | 2012-10-15 | 2020-12-29 | Famous Industries, Inc. | Visibility detection using gesture fingerprinting |
US9772889B2 (en) | 2012-10-15 | 2017-09-26 | Famous Industries, Inc. | Expedited processing and handling of events |
US9501171B1 (en) * | 2012-10-15 | 2016-11-22 | Famous Industries, Inc. | Gesture fingerprinting |
US11386257B2 (en) | 2012-10-15 | 2022-07-12 | Amaze Software, Inc. | Efficient manipulation of surfaces in multi-dimensional space using energy agents |
US9129155B2 (en) | 2013-01-30 | 2015-09-08 | Aquifi, Inc. | Systems and methods for initializing motion tracking of human hands using template matching within bounded regions determined using a depth map |
US9092665B2 (en) | 2013-01-30 | 2015-07-28 | Aquifi, Inc | Systems and methods for initializing motion tracking of human hands |
CN103971361B (zh) * | 2013-02-06 | 2017-05-10 | 富士通株式会社 | 图像处理装置和方法 |
EP2953878B1 (en) | 2013-02-07 | 2017-11-22 | KONE Corporation | Personalization of an elevator service |
US8994652B2 (en) * | 2013-02-15 | 2015-03-31 | Intel Corporation | Model-based multi-hypothesis target tracker |
US9477315B2 (en) | 2013-03-13 | 2016-10-25 | Honda Motor Co., Ltd. | Information query by pointing |
US9122916B2 (en) | 2013-03-14 | 2015-09-01 | Honda Motor Co., Ltd. | Three dimensional fingertip tracking |
US9298266B2 (en) | 2013-04-02 | 2016-03-29 | Aquifi, Inc. | Systems and methods for implementing three-dimensional (3D) gesture based graphical user interfaces (GUI) that incorporate gesture reactive interface objects |
US20140354540A1 (en) * | 2013-06-03 | 2014-12-04 | Khaled Barazi | Systems and methods for gesture recognition |
US20160162039A1 (en) * | 2013-07-21 | 2016-06-09 | Pointgrab Ltd. | Method and system for touchless activation of a device |
US9798388B1 (en) | 2013-07-31 | 2017-10-24 | Aquifi, Inc. | Vibrotactile system to augment 3D input systems |
US9400553B2 (en) | 2013-10-11 | 2016-07-26 | Microsoft Technology Licensing, Llc | User interface programmatic scaling |
JP6127958B2 (ja) * | 2013-12-19 | 2017-05-17 | ソニー株式会社 | 情報処理装置、情報処理方法、並びにプログラム |
US9507417B2 (en) | 2014-01-07 | 2016-11-29 | Aquifi, Inc. | Systems and methods for implementing head tracking based graphical user interfaces (GUI) that incorporate gesture reactive interface objects |
US9619105B1 (en) | 2014-01-30 | 2017-04-11 | Aquifi, Inc. | Systems and methods for gesture based interaction with viewpoint dependent user interfaces |
DE102014004675A1 (de) | 2014-03-31 | 2015-10-01 | Audi Ag | Gestenbewertungssystem, Verfahren zur Gestenbewertung und Fahrzeug |
CN104202547B (zh) * | 2014-08-27 | 2017-10-10 | 广东威创视讯科技股份有限公司 | 投影画面中提取目标物体的方法、投影互动方法及其系统 |
KR101982258B1 (ko) | 2014-09-19 | 2019-05-24 | 삼성전자주식회사 | 오브젝트 검출 방법 및 오브젝트 검출 장치 |
US9552070B2 (en) | 2014-09-23 | 2017-01-24 | Microsoft Technology Licensing, Llc | Tracking hand/body pose |
KR102337682B1 (ko) | 2014-10-01 | 2021-12-09 | 삼성전자주식회사 | 디스플레이 장치 및 그의 제어 방법 |
US10452195B2 (en) * | 2014-12-30 | 2019-10-22 | Samsung Electronics Co., Ltd. | Electronic system with gesture calibration mechanism and method of operation thereof |
CN104574443B (zh) * | 2015-01-15 | 2017-09-08 | 西安理工大学 | 一种全景摄像机间运动目标的协同跟踪方法 |
CN104820493B (zh) * | 2015-04-23 | 2018-09-14 | 北京小小牛创意科技有限公司 | 一种运动驱动效果的实现方法及实现系统 |
DE102015208611A1 (de) * | 2015-05-08 | 2016-11-10 | Volkswagen Aktiengesellschaft | Betätigung eines Schließelements eines Fahrzeugs mit Ultraschallsensor |
CN105718052B (zh) | 2016-01-18 | 2018-09-11 | 京东方科技集团股份有限公司 | 一种纠正体感交互追踪失败的指示方法及装置 |
US10459597B2 (en) * | 2016-02-03 | 2019-10-29 | Salesforce.Com, Inc. | System and method to navigate 3D data on mobile and desktop |
JP6728865B2 (ja) * | 2016-03-25 | 2020-07-22 | 富士ゼロックス株式会社 | 手上げ検出装置及び手上げ検出プログラム |
US10325610B2 (en) | 2016-03-30 | 2019-06-18 | Microsoft Technology Licensing, Llc | Adaptive audio rendering |
KR101976605B1 (ko) | 2016-05-20 | 2019-05-09 | 이탁건 | 전자기기 및 그 동작 방법 |
JP6652004B2 (ja) * | 2016-07-04 | 2020-02-19 | 富士通株式会社 | 情報処理装置、インタラクション方法、およびインタラクションプログラム |
US10372228B2 (en) | 2016-07-20 | 2019-08-06 | Usens, Inc. | Method and system for 3D hand skeleton tracking |
JP6822234B2 (ja) * | 2017-03-15 | 2021-01-27 | セイコーエプソン株式会社 | プロジェクターシステム |
KR102524586B1 (ko) * | 2018-04-30 | 2023-04-21 | 삼성전자주식회사 | 전자 장치 및 그 동작방법 |
CN108876889B (zh) * | 2018-05-31 | 2022-04-22 | 浙江大学 | 一种原位体绘制方法 |
US20200012350A1 (en) * | 2018-07-08 | 2020-01-09 | Youspace, Inc. | Systems and methods for refined gesture recognition |
CN109035190B (zh) * | 2018-07-30 | 2021-05-25 | 安徽慧视金瞳科技有限公司 | 一种汽车仪表表盘背景合成方法 |
CN109584299B (zh) * | 2018-11-13 | 2021-01-05 | 深圳前海达闼云端智能科技有限公司 | 一种定位方法、定位装置、终端及存储介质 |
CN109710978B (zh) * | 2018-11-30 | 2022-05-03 | 电子科技大学 | 一种分布式异构自适应粒子滤波直接跟踪方法 |
US11080532B2 (en) * | 2019-01-16 | 2021-08-03 | Mediatek Inc. | Highlight processing method using human pose based triggering scheme and associated system |
CN109785445B (zh) * | 2019-01-22 | 2024-03-08 | 京东方科技集团股份有限公司 | 交互方法、装置、系统及计算机可读存储介质 |
US11544865B1 (en) * | 2019-02-15 | 2023-01-03 | Apple Inc. | Posture detection and correction |
WO2020251385A1 (en) * | 2019-06-14 | 2020-12-17 | Ringcentral, Inc., (A Delaware Corporation) | System and method for capturing presentation gestures |
KR102334543B1 (ko) | 2019-09-24 | 2021-12-03 | 대한민국 | 가상현실 기반 주행형 농업기계의 안전교육을 위한 손 동작 추적 시스템 및 방법 |
US11341569B2 (en) * | 2019-10-25 | 2022-05-24 | 7-Eleven, Inc. | System and method for populating a virtual shopping cart based on video of a customer's shopping session at a physical store |
CN110856033B (zh) * | 2019-12-05 | 2021-12-10 | 米哈游科技(上海)有限公司 | 一种对象显示方法、装置、终端及存储介质 |
CN113077412B (zh) * | 2020-01-06 | 2024-09-24 | 淘宝(中国)软件有限公司 | 一种物品识别方法及装置 |
US11567492B2 (en) | 2020-01-17 | 2023-01-31 | Zimeno, Inc. | Vehicle control by a remote operator |
WO2022060579A1 (en) | 2020-09-16 | 2022-03-24 | Leibowitz Ian | Method and apparatus for sanitization of hand coverings |
CN114327047B (zh) * | 2021-12-01 | 2024-04-30 | 北京小米移动软件有限公司 | 设备控制方法、设备控制装置及存储介质 |
CN114911384B (zh) * | 2022-05-07 | 2023-05-12 | 青岛海信智慧生活科技股份有限公司 | 镜子显示器及其远程控制方法 |
CN114995753B (zh) * | 2022-05-25 | 2024-07-16 | 华中科技大学 | 一种提高3dnand固态硬盘可靠性的方法及装置 |
CN115082475B (zh) * | 2022-08-22 | 2022-12-02 | 张家港大裕橡胶制品有限公司 | 一种橡胶手套生产过程中污染检出方法及系统 |
CN117197754B (zh) * | 2023-10-19 | 2024-04-30 | 航天正通汇智(北京)科技股份有限公司 | 一种基于超清宽幅视频的安全监测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594469A (en) * | 1995-02-21 | 1997-01-14 | Mitsubishi Electric Information Technology Center America Inc. | Hand gesture machine control system |
CN101501614A (zh) * | 2006-08-08 | 2009-08-05 | 微软公司 | 用于视觉显示器的虚拟控制器 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2419433A (en) * | 2004-10-20 | 2006-04-26 | Glasgow School Of Art | Automated Gesture Recognition |
JP5631535B2 (ja) * | 2005-02-08 | 2014-11-26 | オブロング・インダストリーズ・インコーポレーテッド | ジェスチャベースの制御システムのためのシステムおよび方法 |
US9910497B2 (en) * | 2006-02-08 | 2018-03-06 | Oblong Industries, Inc. | Gestural control of autonomous and semi-autonomous systems |
US8531396B2 (en) * | 2006-02-08 | 2013-09-10 | Oblong Industries, Inc. | Control system for navigating a principal dimension of a data space |
JP4148281B2 (ja) * | 2006-06-19 | 2008-09-10 | ソニー株式会社 | モーションキャプチャ装置及びモーションキャプチャ方法、並びにモーションキャプチャプログラム |
US7701439B2 (en) * | 2006-07-13 | 2010-04-20 | Northrop Grumman Corporation | Gesture recognition simulation system and method |
US7971156B2 (en) * | 2007-01-12 | 2011-06-28 | International Business Machines Corporation | Controlling resource access based on user gesturing in a 3D captured image stream of the user |
WO2008134452A2 (en) * | 2007-04-24 | 2008-11-06 | Oblong Industries, Inc. | Proteins, pools, and slawx in processing environments |
US8267781B2 (en) * | 2009-01-30 | 2012-09-18 | Microsoft Corporation | Visual target tracking |
US9015638B2 (en) * | 2009-05-01 | 2015-04-21 | Microsoft Technology Licensing, Llc | Binding users to a gesture based system and providing feedback to the users |
US8542252B2 (en) * | 2009-05-29 | 2013-09-24 | Microsoft Corporation | Target digitization, extraction, and tracking |
CN101599177B (zh) * | 2009-07-01 | 2011-07-27 | 北京邮电大学 | 一种基于视频的人体肢体运动的跟踪方法 |
TW201104494A (en) * | 2009-07-20 | 2011-02-01 | J Touch Corp | Stereoscopic image interactive system |
CN101692284B (zh) * | 2009-07-24 | 2012-01-04 | 西安电子科技大学 | 基于量子免疫克隆算法的三维人体运动跟踪方法 |
EP2689413A4 (en) * | 2011-03-25 | 2015-07-22 | Oblong Ind Inc | QUICK FINGER FINGER DETECTION TO INITIALIZE A VISION BASED HAND TRACER |
-
2012
- 2012-03-26 EP EP12762913.7A patent/EP2689413A4/en not_active Withdrawn
- 2012-03-26 WO PCT/US2012/030628 patent/WO2012135153A2/en active Application Filing
- 2012-03-26 CN CN201280025109.XA patent/CN103988150B/zh not_active Expired - Fee Related
- 2012-03-26 US US13/430,509 patent/US8941588B2/en not_active Expired - Fee Related
- 2012-03-26 US US13/430,626 patent/US8896531B2/en not_active Expired - Fee Related
- 2012-03-26 KR KR1020137028333A patent/KR20140033025A/ko not_active Application Discontinuation
-
2014
- 2014-11-24 US US14/551,331 patent/US20150331497A1/en not_active Abandoned
-
2015
- 2015-01-27 US US14/606,283 patent/US20150316993A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594469A (en) * | 1995-02-21 | 1997-01-14 | Mitsubishi Electric Information Technology Center America Inc. | Hand gesture machine control system |
CN101501614A (zh) * | 2006-08-08 | 2009-08-05 | 微软公司 | 用于视觉显示器的虚拟控制器 |
Also Published As
Publication number | Publication date |
---|---|
US8896531B2 (en) | 2014-11-25 |
WO2012135153A3 (en) | 2014-05-01 |
US20150316993A1 (en) | 2015-11-05 |
US20120268364A1 (en) | 2012-10-25 |
CN103988150A (zh) | 2014-08-13 |
EP2689413A2 (en) | 2014-01-29 |
WO2012135153A2 (en) | 2012-10-04 |
US8941588B2 (en) | 2015-01-27 |
US20150331497A1 (en) | 2015-11-19 |
EP2689413A4 (en) | 2015-07-22 |
US20120326963A1 (en) | 2012-12-27 |
KR20140033025A (ko) | 2014-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103988150B (zh) | 用于初始化基于视觉的手跟踪器的快速指尖检测 | |
US10061392B2 (en) | Control system for navigating a principal dimension of a data space | |
CN103930944B (zh) | 用于空间输入装置的自适应跟踪系统 | |
US20190187801A1 (en) | Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes | |
KR101616591B1 (ko) | 데이터의 공간의 주요 치수를 항해하기 위한 제어 시스템 | |
US9471148B2 (en) | Control system for navigating a principal dimension of a data space | |
US8537112B2 (en) | Control system for navigating a principal dimension of a data space | |
CN102460510B (zh) | 用于与空间操作系统一起使用的空间多模式控制设备 | |
CN101536494B (zh) | 用于基于姿势的控制系统的系统和方法 | |
EP2427857B1 (en) | Gesture-based control systems including the representation, manipulation, and exchange of data | |
US20180173313A1 (en) | Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes | |
CN102047203B (zh) | 使用在扩展的景深内提取的三维信息进行的基于姿态的控制 | |
CN102224476A (zh) | 多进程交互系统和方法 | |
JP2015525381A (ja) | 相互ユーザ手追跡および形状認識ユーザ・インターフェース | |
Ogiela et al. | Natural user interfaces for exploring and modeling medical images and defining gesture description technology | |
CN102804206B (zh) | 包括数据表示、操作和交换的基于姿势的控制系统 | |
Chen | Supporting Customized Design with Generative Adversarial Networks and Augmented Reality in the Industry of Intangible Cultural Heritage | |
Sun | Finding Objects in Complex Scenes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180213 Termination date: 20210326 |
|
CF01 | Termination of patent right due to non-payment of annual fee |