CN101322091B - 多目标检测和应用项目状态导航系统 - Google Patents

多目标检测和应用项目状态导航系统 Download PDF

Info

Publication number
CN101322091B
CN101322091B CN2006800431307A CN200680043130A CN101322091B CN 101322091 B CN101322091 B CN 101322091B CN 2006800431307 A CN2006800431307 A CN 2006800431307A CN 200680043130 A CN200680043130 A CN 200680043130A CN 101322091 B CN101322091 B CN 101322091B
Authority
CN
China
Prior art keywords
application item
target
data
application
action
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
Application number
CN2006800431307A
Other languages
English (en)
Other versions
CN101322091A (zh
Inventor
K·L·登普斯基
B·L·哈维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accenture Global Services Ltd
Accenture International LLC
Original Assignee
Accenture Global Services GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US11/409,538 external-priority patent/US8209620B2/en
Application filed by Accenture Global Services GmbH filed Critical Accenture Global Services GmbH
Priority claimed from PCT/IB2006/003994 external-priority patent/WO2007074403A2/en
Publication of CN101322091A publication Critical patent/CN101322091A/zh
Application granted granted Critical
Publication of CN101322091B publication Critical patent/CN101322091B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/042Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means
    • G06F3/0428Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means by sensing at the edges of the touch surface the interruption of optical paths, e.g. an illumination plane, parallel to the touch surface which may be virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images

Abstract

复杂的协作或决策支持应用项目执行复杂的设计或规划任务,通常具有很多组人长期的输入。时间和复杂性的组合经常会遮蔽过去的动作,使得很难记住影响计划任务的较早阶段的因素。如果一项任务涉及同时以及在不同的时间工作的许多人,则实际情况尤其会是这样。当多组人同时协作时,检测和跟踪用户或用户工具在表面(例如,平坦表面)上或表面附近的多个同时的触摸或移动是必不可少的能力。多目标检测和应用项目状态导航系统提供了一种独立于应用项目的机制,其允许操作者实时地操作应用项目,以及回顾应用项目的历史以便更好地理解(或记住)在过去采取的应用项目动作和那些动作的触发。

Description

多目标检测和应用项目状态导航系统
优先权要求
本申请要求于2005年11月18日提交的第11/282,349号美国专利申请、于2006年1月31日提交的第60/746,004号美国临时专利申请以及于2006年4月21日提交的第11/409,538号美国专利申请的优先权,通过引用将这些专利申请结合在本文中。
版权通告
本专利文件的一部分公开包含受版权保护的材料。当本专利文件或专利公开出现在专利商标局的专利文件或记录中时,版权所有人不反对任何人对它的拓制,否则不论何种情况都将保留所有版权。
技术领域
本发明涉及检测和跟踪诸如用户或用户工具在表面上或表面附近做出的触摸或移动这样的目标,以及跟踪和显示应用项目演化的历史。特别是,本发明涉及能够用三角测量同时检测和跟踪用户接口表面上的多个目标的系统,通过该系统,操作者可以在时间上导航通过应用项目状态、对应用项目采取的动作以及那些动作的触发,以观察处于选定的过去的时间点的应用项目。
背景技术
多群人经常长期地利用复杂的协作和决策支持工具来执行复杂的设计以及计划的动作和决策,该复杂的设计以及计划的动作和决策驱使应用项目(例如,化工厂工艺配置或复杂的物料分销链)达到其当前状态。在计算机被多于一个人访问、使用或查看的许多情形中,允许多个用户同时向系统输入数据会是很有用的。时间和复杂性的组合经常会遮蔽过去的动作和决策,使得很难记住影响计划中的较早阶段的因素。如果一项任务涉及许多人并且不同的人在不同的时间工作,则实际情况尤其会是这样。
因此,在过去,由于复杂的设计和计划的任务而产生的应用项目具有相对不透明的历史。对应用项目是如何达到其当前状态的任何理解经常受到个体的、经常是不精确的记忆、匆忙做出的笔记和贫乏的文件编制的限制。因此,很难拆解致使应用项目达到当前状态的设计和计划步骤的历史。
出于这些和其他原因,在提供对决策是如何和为什么做出、谁做出了决策以及那些决策是如何影响应用项目的当前状态这些问题的理解方面,存在着相当大的挑战。这些限制妨碍了对应用项目的进一步开发、改善和改变,还妨碍了理解应用项目如何到达其当前状态的尝试。这些限制还极大增加了有效地和高效地引入新人进行开发或为应用项目计划任务的难度。
同时,应用项目的历史所蕴含的大量数据提出了重大的显示、操纵和呈现的挑战。特别是,分布式数据采集和处理系统允许对大量数据(包括实时数据)进行收集、存储和操纵。实时数据是这样的数据,该数据以与它被接收到的速率相同的速率得到更新和处理。实时数据可以来源于各种源。其实例包括待监视的系统或环境中的传感器网络,和用于库存或资产的射频识别标签(RFID)跟踪系统。这些和其它相关技术已经使组织能够访问关于组织的运作的所有方面的大量实时信息。这些方面包括:例如,消费者行为、竞争者行为、员工生产率、供应链活动、制造、工作场所活动等等。
对于大规模的组织,该信息对于做出决策或者发展洞察力而言会是极其有价值的。总的来说,该信息可以揭示出不是立即就明显的模式或趋势。当随着时间的流逝来处理该信息时,该信息可以揭示出可用于未来预测的发展。采集和管理大量数据可以提供系统状态或操作的新的视观。
然而,庞大的数据量和互连密度使得难以轻松地使该信息在标准工作站上可视化。常规的工作站基于个人计算机技术,并且通常包括处理设备和用户接口,其中的用户接口包括:例如,显示屏、鼠标或其它输入设备。虽然多媒体能力可以增强信息的呈现,但是常规设备的尺寸小并且特性有限,这使得常规设备难以对信息进行有意义的呈现。
此外,数据处理和决策处理的复杂度使得必需在多个专家之间共享视观并进行协作。即使带有大屏幕和多媒体能力,也只有很少的人能够同时看到和与常规工作站进行交互。如果需要操纵鼠标或键盘,则只有一个人能够控制工作站,同时只有有限数量的其他参与者能够观看到该处理。
对这两个问题的一种解决方案是使专家们能够访问沉浸式环境,利用该沉浸式环境,他们能够观看、共享并物理地与信息进行交互。在一个实例中,这种环境由大型高分辨率显示器、个人数字助理(PDA)和三维(3-D)显示器,以及可选的交互通道(interaction modality)(诸如,触摸激活式屏幕、3-D鼠标、数据手套等)组成。
可触式显示器允许一个或多个用户或者结合使用鼠标、指示器等,或者作为鼠标、指示器等的替代,来直接与屏幕交互。这些显示器包括感测系统,该感测系统将关于用户的触摸或交互的状态信息传递给应用软件,该应用软件在应用项目的环境下解释该状态信息。可触式显示器可使用各种类型的传感器来检测接触或近接触。一种类型的可触式显示器可感测由于对屏幕的接触而导致的电容的改变。另一种类型的可触式显示器可使用照相机或其他类型的光传感器(例如,可视光和/或红外光传感器)来检测屏幕上的接触。基于照相机的可触式显示器通常是针对大尺寸显示器使用的。与电容性可触式系统不同,使用三角测量的基于照相机的系统被限制为检测屏幕上的单个目标。在屏幕的第二部分被同时或并发地接触的情况下,基于照相机的系统将具有未定义的或不合需要的效果。这是由于照相机不能够感测深度信息以及使用三角测量辨别接触位置的限制。
由于技术和形状因素(form factor)这二者的限制,这种环境需要能够将一个逻辑应用项目分布到组成沉浸式环境的多个计算机和显示系统上的系统。这种系统必须处理视觉显示和用户交互这二者的分布。
还没有出现提供必要能力的足以满足需要的系统。当前还没有用于构建跨越多台并且可能是不同种类的计算机、可能具有不同形状因素的多台显示器、以及多个交互通道的应用项目的标准架构、语言或协议。这种应用项目必须由管理多台计算机、多台显示器和多个交互通道之间的交互的应用项目开发者从头开始创建。一些市场上能够买到的系统典型地是使用允许信息和图形数据显示在屏幕上的昂贵的视频处理器来构建的,但是不一定被构建为一个内聚的应用项目。其实例可从Jupiter.com得到并且被定价为数十万美元。
对一种基于照相机的系统的需求已经长久存在,这种基于照相机的系统使用三角测量检测和跟踪多个同时存在的目标,使理解、回顾和设计复杂的应用项目变得容易,并且解决了与显示应用项目的历史所蕴含的潜在的大量数据相关的困难。
发明内容
给定复杂规划设计和导致复杂应用项目的规划的这种背景,多目标检测和应用项目导航系统提供了允许操作者实时地操作应用项目,和回顾应用项目的历史的独立于应用项目的机制。多目标检测和应用项目状态导航系统因此允许操作者更好地理解(或记住)在过去采取的动作和那些动作的触发。因为各个动作确定应用项目如何到达任何给定时间处的任何给定状态,所以多目标检测和应用项目状态导航系统允许操作者获得不仅理解应用项目的当前状态而且理解应用项目随时间改变的方式以及为什么会这样所必需的见识。此外,由相互协作的显示设备生成的显示图像可提供宽广的图形界面,用于传达应用项目历史、对应用项目采取的动作、同时期的环境数据或对理解应用项目的历史有用的任何其他数据。
多目标检测和应用项目状态导航系统可包括由多个图像拼片(image tile)和一时间选择接口元件形成的显示器。多目标检测和应用项目状态导航系统存储关于应用项目及其随时间的发展的历史数据。作为一个例子,历史动作数据库可存储动作记录,这些动作记录任选地通过对影响应用项目的动作负责的操作者来区分。动作记录可包括:定义在动作时间对应用项目采取的动作(例如,修改物料运输路线)的应用项目动作数据,识别对采取的动作负责的操作者的操作者识别符,和表示动作时间的应用项目动作时间戳。作为另一个例子,历史状态数据库可存储状态记录。状态记录可包括:定义应用项目在状态时间时的应用项目状态的应用项目状态数据,和表示状态时间的应用项目状态时间戳。作为第三个例子,历史环境数据库可存储定义在环境状态时间时应用项目的环境状态的环境数据,和表示环境状态时间的应用项目环境时间戳。
多目标检测和应用项目状态导航系统中的处理器执行多目标检测和应用项目状态导航系统的存储器中存储的程序。例如,接口输入程序可从时间选择接口元件获得时间选择(例如,“一周以前”)。时间索引程序可基于时间选择来启动数据库搜索。作为例子,时间索引程序可启动:历史动作数据库的动作搜索,这会产生检索出的应用项目动作数据;历史状态数据库的状态搜索,这会产生检索出的应用项目状态数据;以及历史环境数据库的环境搜索,这会产生检索出的环境数据。
输出程序然后可根据检索出的应用项目状态数据来呈递应用项目表现。可替换或追加的,多目标检测和应用项目状态导航系统可在给定了检索出的应用项目动作数据的情况下传播或重建应用项目状态。多目标检测和应用项目状态导航系统也可显示应用项目动作数据以便回顾。此外,多目标检测和应用项目状态导航系统可将检索出的环境数据输出以便为应用项目状态提供本地或远程视听上下文(audiovisualcontext)。
关于呈现应用项目历史的拼贴(tiled)输出显示,仅通过介绍的方式,目前公开的实施例提供了用于分布式信息处理和交互的系统和方法。在一个通常的实施例中,应用处理器对一个或多个软件应用程序做出响应以产生输出,使得各个输出一起形成系统输出。各个单独的处理器输出可以是显示设备上的显示,诸如对电子锁进行开锁的激励器的操作,或者是对数据库中的信息进行的改变。处理器输出可以像来自处理器的输出数据的改变一样简单。由处理器产生的每个改变或输出是各个处理器的本地状态的改变以及整个系统状态的改变。在状态改变消息中,将应用处理器的状态的每个改变报告给状态服务器。
状态服务器运行以使各个处理器的本地状态同步。状态服务器将从一个应用处理器接收到的状态改变消息反映给系统中的所有其它应用处理器。同样,任何系统输入也被报告给状态服务器,状态服务器再次将状态改变反映给所有应用处理器。用这种方式,应用处理器被保持在同步状态。通过将改变报告给状态服务器并将改变反映给所有其它处理器,应该被反映到其它处理器的输出中的一个处理器中的输出改变,被自动地并且无缝地这样得到处理。
在一个特定实施例中,每个应用处理器驱动产生拼贴输出显示的一个或多个图像拼片的显示设备。每个处理器使用来自状态服务器的状态改变消息来更新整个显示器的状态信息,即使处理器仅负责对显示器的指定部分进行显示。显示器的分配的、指定的部分是处理器的上下文。输入设备检测用户与显示器的交互,类似于鼠标运动和鼠标点击,但是在一个实施例中,这种交互是显示器前面的手的运动。检测到的用户交互被报告给状态服务器,并且关于用户交互的信息从状态服务器被反映给产生图像的应用处理器。基于来自状态服务器的信息对图像进行更新。
在研究过以下的附图和详细描述后,对于本领域技术人员来说,本发明的其它系统、方法、特征和优点将是或将变得显而易见。所有这些附加系统、方法、特征和优点都应包括在本说明书内,包括在本发明的范围内,并由所附权利要求保护。
附图说明
参考以下附图和描述,可以更好地理解本发明。图中的组件不必要依比例,而是将重点放在说明本发明的原理上。此外,在附图中,相似的附图标记在不同示图中始终指示相应的部分或元件。
图1是示出用于分布式信息呈现和交互的系统的架构的框图。
图2是示出图1的系统中的处理流程的流程图。
图3是图1所示系统的一个软件实施例的架构流程图。
图4示出了应用项目历史储存库(repository),其可向图1所示的信息处理系统提供历史上的应用项目状态数据、应用项目动作数据和环境数据。
图5示出了可为应用项目动作提供历史上的上下文数据的信息源。
图6示出了战略规划室,在该战略规划室中,多目标检测和应用项目状态导航系统允许操作者导航应用项目历史。
图7示出了用于导航应用项目状态的时间选择接口。
图8显示了用于导航应用项目状态的导航接口。
图9显示了导航接口在导航应用项目状态时可采取的动作。
图10显示了可向图1所示的信息处理系统提供历史上的应用项目状态数据、应用项目动作数据和环境数据的应用项目历史储存库。
图11显示了通过接口与应用设备连接的多目标检测器系统的配置。
图12显示了图11所示的多目标状态检测器的展开框图。
图13显示了多目标状态检测器为了确定潜在的目标位置可采取的动作。
图14继续显示图13所示的流程图并显示了多目标状态检测器为了确定潜在的目标位置可采取的动作。
图15是显示平面上的两个目标的示意图。
图16是显示图15中绘出的两个目标和为第一组遮挡(occlusion)确定的光线(ray)的示意图。
图17是显示图15中绘出的两个目标和为第二组遮挡确定的光线的示意图。
图18是显示图15中绘出的两个目标和为第三组遮挡确定的光线的示意图。
图19显示了由图15所示的两个照相机产生的感觉信息的示意图,所述感觉信息包括关于图15中绘出的两个目标的多个遮挡。
图20显示了多目标状态检测器可采取来缩小可能目标的列表的其它动作。
图21继续显示图20所示的流程图并显示了多目标状态检测器可采取来缩小可能目标的列表的其它动作。
图22显示了多目标状态检测器可采取来缩小可能目标的列表以及确定目标的移动的动作。
图23继续显示图22所示的流程图,显示了多目标状态检测器可采取来缩小可能目标的列表以及确定目标的移动的其它动作。
具体实施方式
各附图中所示的元件按照以下更详细解释的那样进行相互操作。然而,在阐述详细解释以前,应注意,无论正在描述的特定实现方案如何,以下的所有讨论在本质上都是示例性的,而不是限制性的。例如,尽管这些实现方案的选择的方面、特征或组成部分被描述为存储在存储器中,但与多目标检测和应用项目状态导航系统和方法相一致的系统和方法的全部或一部分可存储在以下介质上,分布在以下介质上,或从以下介质中读取:其他机器可读介质,例如诸如硬盘、软盘和CD-ROM的辅助存储设备;从网络接收到的信号;或目前已知的或未来开发出的其他形式的ROM或RAM。
此外,尽管将描述多目标检测和应用项目状态导航系统的具体部件,但与多目标检测和应用项目状态导航系统相一致的方法、系统和制造商品可包括附加的或不同的部件。例如,处理器可实现为微处理器、微控制器、专用集成电路(ASIC)、离散逻辑或其他类型的电路或逻辑的组合。类似的,存储器可以是DRAM、SRAM、闪存或任何其他类型的存储器。标记、数据、数据库、表格和其他数据结构可分开存储和管理,可以并入到单个存储器或数据库中,可以被分布,或可以以许多不同方式在逻辑上或物理上组织起来。程序可以是单个程序的一些部分、分开的多个程序或分布在几个存储器和处理器上。此外,也可以以硬件实现程序或程序的任何部分来作为替代。
本实施例提供了软件架构和统一的抽象层,该抽象层允许应用项目开发者创建数据密集型和协同型的应用项目,而不必明确关注应用项目可能会如何分布到沉浸式环境内的多个显示器和计算机上。该架构是通过包括以下五个机制的高级原语(primitive)实现的:(a)将应用项目或者应用项目的集合划分到多个机器和多个形状因素上,(b)提供用于配准输出部分(诸如不同计算机和/或诸如投影仪的不同输出设备上的显示段)的机制,(c)提供用于从可以由多个机器控制的多个输入设备收集用户交互的装置,使得应用项目具有用户交互的同步化的视观,(d)提供通信/同步机制,以使多个数据密集型和协同型的应用项目能够在单个计算环境内执行和协作,以及(e)提供使应用项目的多个用户能够在沉浸式环境内彼此进行交互的用户接口构造。
根据这些实施例的软件架构提供了统一的抽象层,用于构建用于沉浸式环境的数据密集型和协同型的应用项目。该统一的抽象层使应用项目开发者免于管理环境的低级别的细节,从而显著地提高他们的生产率和应用项目质量。该创新还使得应用项目开发者能够开发用于沉浸式环境的数据密集型和协同型的应用项目。
该架构被构建成支持分布式、沉浸式、多用户环境(典型的桌面操作构造所不支持的环境)中的应用项目和应用项目历史的回顾。因此,该架构被构建成使开发者不受环境的复杂度的影响,并使他们可以通过统一的抽象层来编写终端用户应用项目。该层假定任何应用项目都可能驻留在多于一个的物理计算机上。因此,其提供了对于将应用项目分段和使分段同步的透明支持。开发者创建应用项目,就好像该应用项目是单个计算机上的单个处理。该架构还假定若干应用项目可能在单独的环境或者多个位置内协作。因此,其提供了保持整个环境所需的甚至是跨越多个平台和通道的消息接发和同步机制。开发者仅需要确保每个不同的应用项目理解不同的状态。此外,该架构假定可以有若干种输入机制,并且输入机制中的一个或多个可能允许来自一个或多个用户的多个同时输入。该架构为终端应用项目提供了对所有输入的共同的同步化的视观。开发者仅需要(基于应用项目规则)将那些输入映射到状态改变,这些状态改变继而被该架构同步化。最后,该架构假定一些终端显示器可能由多个拼贴式投影仪组成。在这种情况下,该架构供应为精确配准和融合多个拼片的边缘所需的软件功能。这可以由用户在运行的时候完成,但是该复杂度对于应用项目开发者而言是隐藏的。每个组件的细节列出如下:
连网消息接发组件:该架构自动地将所有应用项目连接到控制同步和消息接发的集中式服务器。连网的复杂度对于开发者而言是隐藏的,并且该架构将消息直接传递给应用项目。结果,本地交互(诸如,来自附带的键盘)和连网交互(诸如,来自连网的控制设备)之间没有区别。此外,开发者以与Windows“消息映射”非常相似的方式处理消息,但是该架构处理将消息映射的结果分发给所有计算机的任务。消息可以来源于应用项目或者专用用户接口设备(诸如触摸屏或数据手套)。
连网时间同步:该架构还确保所有应用项目和/或应用项目碎片具有共同的、同步的时间。这对于动画和状态管理是至关紧要的。除了共同的时间数据外,该架构还提供“内插器”类别,其可被用于管理状态、动画和任何其它基于时间的数据。内插器对象可以被分配开始和结束时间、开始和结束值、以及确定这些值如何随时间改变的内插函数。一旦被创建,内插器就向动画和其它对时间敏感的特征供应时间同步的值。
应用项目分片(fragmentation):应用项目开发者可以编写单个应用项目,该单个应用项目将对象放置在单个非常大的虚拟画布上并制作其动画。每个主计算机均具有小数据文件,该小数据文件指定它们所控制的该虚拟画布的区域。这通常是由计算机的能力和屏幕的物理放置确定的。当应用项目在多个机器上运行时,该架构使用数据文件来绘制画布的适当部分。先前的两个特征确保所有碎片都是同步的并且将它们自身呈现为一个逻辑应用项目。
应用项目协调:在一些环境(特别是具有不同硬件平台的那些环境)中,若干单独的应用项目(与一个分片的应用项目相反)可能需要进行交互,以提供单个工作环境。这也被该架构支持。该架构使用连网消息接发组件来将环境状态改变发消息传送给所有登记的应用项目。每个应用项目可以根据其自己的标准做出响应。
屏幕配准:该架构支持使用拼贴式的投影图像来呈现显示输出。使用拼贴式投影的一个固有问题是,相邻的投影仪必须进行仔细的配准和边缘融合,以创建单个连续的显示空间。该架构使用上述的数据文件中的信息来确定图像是否必须被配准,以及必须如何进行配准。如果有必要进行配准,则该架构加载带有用户供应的配准数据的文件,并对应用项目输出执行必要的图像变形。该特征可以被扩展到投影仪之间的彩色校正。终端显示设备的细节对于应用项目开发者而言是被屏蔽的。
高级原语:该架构用一组公共高级原语使开发者免于受到底层图形技术的复杂度的影响。这些原语表示公共对象,诸如2D对象、3D对象、线、网眼(webcam)、图片、视频、声音、文本、图形,以及二进制数据对象。
场景封装:最后,应用项目开发者通过创建将所有对象、数据和逻辑封装到给定“场景”内的“控制器”对象的实例,来利用上述特征。该架构将每次显示一个控制器的输出,使控制器与“应用项目”或者“事件(episode)”几乎同步。然而,控制器还可以是嵌套的,并被另外用于将对象放置到单独的批处理(batch)中。这有助于应用项目开发者将开发工作分配到若干人上。由于不同的批处理可以在必要的时候以不同的频率得到更新,所以这还有助于提高整个图形性能。
现在参考附图,图1显示出用于分布式信息处理和交互的系统100,其支持复杂应用项目历史的导航。系统100包括状态服务器102、多个应用处理器或输出设备104,以及带有多个输入设备108的输入/输出(I/O)控制器106。系统100是跨越多个不同种类的计算机设备、多个输出设备和多个通道的架构的一个实施例。系统100对从输入设备108接收到的输入做出响应,以对输出设备104产生影响。所产生的影响可以对于一个或多个输出设备而言是相同的,或者所产生的影响可以取决于影响和特定输出设备而不同。如下面将会进一步详细描述的那样,对任何一个输出设备产生的影响将取决于输出设备和影响的性质。
通常,状态服务器102保持系统100的一个或多个状态,并确保输出设备104被同步化。状态服务器102通过发送消息与输出设备104通信,优选地是采用预定的消息协议。状态服务器102将其接收到的关于系统100的所有消息反映回给系统中所有适当的设备,特别是,反映回给所有输出设备104。状态服务器102从输入设备108接收输入信号并将消息发送给适当的输出设备104以便以下文中更详细讨论的方式使输出设备的状态同步化。输入设备108可以包括任何种类的传感器或数据采集设备。输出设备104可以包括任何种类的音频或视频或其它输出设备或系统,包括诸如平板PC的个人计算机(PC)、个人数字助理(PDA)或膝上型计算机或者其它专门的设备或处理器。输出设备104最通常地包括用于引起交互或环境中的结果的任何类型的激励器。
将在示例性系统的上下文中讨论图1的实施例,其中在示例性系统中,系统100在显示表面110上控制显示图像。显示图像由多个显示设备112组成。在示例性系统中,显示设备112是各个应用处理器116中的一个或多个的控制下的视频投影仪114,其中各个应用处理器116中的一个或多个被配置成将显示投影到形成显示表面112的玻璃幕墙120的面板118上。可以使用任何适合数量的投影仪114和玻璃面板118来形成显示图像。在图1的实例中,投影仪的2×4阵列一起在玻璃面板118的类似阵列上形成显示图像。在其它实施例中,可以使用其它数量的投影仪和其它数量的玻璃面板。在另外的其它实施例中,可以用其它类型的视频显示设备来作为替代,诸如平板显示器、等离子体显示器或者阴极射线管。本文中描述的原理不应该由任何特定技术限制,而是可以应用于最宽广种类的设备。
在图1的示例性实施例中,输入设备108包括一个或多个照相机122、数据手套124、指向设备126和红外传感器128。如附图中所指示的那样,与这些类似的其它输入设备或者其它类型的输入设备可以被添加到系统100中。照相机122是拍摄视频图像的设备。图像可以是任何适合格式(包括诸如jpeg(是指由联合照相专家组提出的标准数据格式)或者gif(图形交换格式)或者其它格式的数字格式)的单个图像,或者视频图像可以是电影图像,诸如根据诸如由运动图像专家组(MPEG或者其变体之一)提出的标准或者其它标准而被编码的数据文件。数据手套124是用于虚拟现实和其它数据处理设备的采取手套的形式的输入设备,该手套测量穿戴者的手指的运动并将它们传送给数据处理设备或计算机。高级的数据手套还测量手腕和肘的动作,或者也可以测量其它身体部分的运动。数据手套还可以包含控制按钮,或者充当输出设备,例如在计算机的控制下振动。用户通常看到数据手套的虚拟图像并可以指向或者抓住并且推动对象。指向设备126可以是任何数据输入和操纵设备,诸如计算机鼠标或手写板。红外传感器可以是对来自设备的热、能量或无线电辐射做出响应以产生图像的任何传感设备。
I/O控制器106充当系统100和输入设备108之间的数据采集接口。因此,I/O控制器106被配置成从各个输入设备108接收信号,并继而提供任何必要的信号。例如,为了接收来自照相机122的jpeg格式的文件,I/O控制器106通过向照相机122提供适当的网络握手信号,而从照相机122接收jpeg格式的文件并存储该文件。在另一实例中,该格式可以是来自另一照相机120或者来自数据手套124的流式数据。I/O控制器106向输入设备提供必要的握手信号,并存储接收到的数据用于观看,或者立即将数据提供给状态服务器102。I/O控制器106从输入设备108接收以各个输入设备中的每个所提供的格式表示的数据,并将数据格式化成状态服务器102和输出设备104所需的格式。
在系统100控制显示器表面110上的显示图像的示例性实施例中,输入设备108包括用于检测显示器表面附近的用户的手或者其它身体部分,并充当指向设备以操纵图像的一部分的传感设备。例如,在一个实施例中,输入设备108包括位于显示器表面110附近的用于检测用户的手的位置和运动的一组照相机,并与I/O处理器106结合来向状态服务器102提供信号,指示用户的手的位置和运动。信号被传达给各个应用处理器116,并被用于产生适当的显示或者显示中的改变。例如,如果手的运动应该被解释为左点击、右点击或者显示器表面110上的显示的其它鼠标激励,则各个应用处理器116中的每个将会通过处理手的运动,并且在适当的情况下,将手的运动反映到各个应用处理器所控制的显示器部分中,来适当地做出响应。
如上面提到的那样,在该实施例中,输出设备104包括一个或多个显示设备,其中该一个或多个显示设备被配置成显示系统的输出显示的各个显示部分。为了完成这个任务,显示器表面120的玻璃面板118和与它们相关联的投影仪114被拼贴,使得它们一起形成合成图像。每个投影仪产生的每个图像是唯一的,并且是在与显示设备相关联的应用处理器116的控制下产生的。
通常,应用处理器116是为特定应用软件定制以执行系统100中的特定功能的通用数据处理系统。应用处理器116通过数据链路被连接到状态服务器102。这些可以是有线线路或无线数据链路,或者是任何适合的数据通信设备。应用处理器116可以包括特定硬件组件或者与特定硬件组件相关联,其中的特定硬件组件用于产生特定的输出激励。用于通用输出设备的一个示例性的激励是打开远程位置的电控锁。在这种应用项目中,应用处理器116与伺服电机或者其它设备协作,以通过机械方法打开该锁。于是通常每个应用处理器被配置成处理应用程序,并对上下文信息做出响应。各个应用处理器中的每个与相关联的各个输出设备104进行数据通信,以控制输出设备104提供系统输出的输出部分。系统输出是所有输出设备104的输出部分的集合体。
在图1的特定示例性实施例中,应用处理器116被定制为用于处理系统100的输出显示的各个显示部分。因此,应用处理器从状态处理器102接收消息形式的数据和指令,并将控制信号提供给一个或多个相关联的投影仪114。图1显示出应用处理器的示例性的软件架构130。软件架构130包括核心组件132和应用层134。核心组件132是软件架构130的被所有为应用处理器116准备软件应用程序的开发者共享的各方面。其实例包括输入/输出驱动器、存储和检索例程,以及其它操作系统组件。应用层134包括函数、例程和其它组件,它们由每个软件开发者为应用处理器116定制,以为应用处理器创建独特的应用项目行为。
应用层134包括消息处理程序136和一个或多个对象138。消息处理程序136与状态服务器102通信。特别地,消息处理程序136从状态服务器102接收定义系统100中的改变的消息140以供各个应用服务器处理。此外,消息处理程序向状态服务器发送定义各个应用服务器处产生的系统中的改变,并且应该被反映给其它应用服务器116的消息142。优选地,根据预先定义的数据传输协议将消息格式化,包括:例如,带有源地址和目的地地址的信头,和包括定义系统中的状态改变的数据的净荷。然而,可以用任何适合的数据传输格式来作为替代。
对象138由应用层134的开发者例示。对象是可以被选择和操纵的离散项目,诸如屏幕上的图形。在面向对象的编程中,对象包括数据和对该数据进行操作所必要的步骤。在应用层134的控制下,应用处理器116的操作可以使对象被生成和工作。在所示出的实例中,对象138包括它们自己的消息处理程序,以与应用层的其它部分和状态服务器102通信。由对象138传递的消息可以接收影响单独的对象的对系统状态的更新,或者可以包含关于由对象检测到的或产生的改变的信息,该信息应该由状态服务器102反映给其它应用处理器116。
根据本发明,图1例示的架构支持多个处理器(诸如应用处理器116)和处理器116上活动的多个应用项目(诸如,应用层134)之间的共享状态。状态服务器102的工作确保应用处理器116的状态是同步化的。换言之,状态服务器102工作以确保所有状态改变都尽可能同时地被反映给所有处理器116。
本上下文中的同步是指,最通常地,每个应用处理器的状态达到这样的相同程度:这些状态包括相同的信息。对于运行同一应用程序的本地副本的应用处理器,当应用项目的每个副本具有相同的数据时,它们的状态相同。在各个应用项目中可能有偏差。例如,在本文描述的具体实例中,两个或多个应用处理器产生显示器上的图像的一些部分。每个处理器被分配以显示整个图像的指定部分,本文中称为其上下文。然而,每个处理器保持产生整个图像而不只是产生其上下文所必要的数据。基于对应用项目的处理并且基于从状态服务器接收到的同步信息,来对不是上下文的一部分的数据进行更新,以便使应用项目的本地副本同步化或者包含与具有其它上下文的其它副本相同的数据。
在本申请中,同步不仅仅是时间上的同步。所有同步包含公共框架。同步涉及应用处理器的本地状态。
在第一实例中,时间同步包括向指定当前时间的所有应用项目发送消息的服务器,例如因为服务器访问可以被认为是时间传感器的系统时钟。响应于该消息,一些应用处理器上的一些应用项目可能会简单地更新动画。其它应用项目可能会执行一些逻辑,以将新的时间映射到更高级别的状态改变(例如,映射到这样的指示:是火车到达的时间了),并使用该架构将该新状态反映给其它应用项目。其它处理器上的其它应用项目可能不具有任何与时间有关的方面,并且因此不对消息做出响应。不同的应用项目适当地对报告的状态改变做出响应。
在第二实例中,火车具有形成位置传感器的全球定位系统(GPS)接收器,和本文所描述的类型的应用处理器。火车及其应用处理器发送报告GPS位置数据作为火车的新状态的消息。该消息在状态服务器处被接收,并且被反映给若干其它铁路院(rail yard)应用项目。例如,在铁路院命令中心,消息中的该信息影响火车位置的显示的改变。在带有数据处理设备的计算机机房中,用数据库条目来处理消息。在铁路院中,另一处理器上的另一应用项目打开门。
在第三实例中,触摸屏传感器检测触摸的位置,并将该位置报告给状态服务器。服务器将关于状态改变的信息发送给系统中的所有应用项目。一个应用项目将该状态改变映射到更高级别的状态,“按钮已被按下”。另一应用项目将触摸映射到不同的更高级别的状态,“在命令中心中有人为活动”。再一次,每个应用项目接收相同的状态更新消息并适当地做出响应。
在这些实例中的每个实例中,时间是以在概念上与任何其它状态改变相同的方式被处理的。触摸、运动以及对系统的任何其它传感器输入(诸如,在读卡器中刷识别卡,或者使用指纹读取器),被报告给状态服务器并且全部以适合于系统中的每个应用处理器的相同的方式被处理。状态改变不是必须以相同方式来处理。一个应用项目可能会简单地更新显示器。另一个应用项目可能会促动机械手(robot)。
再次参考图1,在最通常的应用项目中,状态改变受各种传感器和/或程序逻辑的影响,并且状态的改变不限于用户交互。关于状态的改变的任何信息被传递给状态服务器102,该状态服务器102将该信息反射(mirror)或者重新传送给系统100中的其它设备,包括应用处理器116。应用处理器116或者任何其它输出设备104从状态服务器接收更新后的状态信息,并适当地做出响应。该响应可能是更新存储在输出设备104上的数据。该响应可能是改变显示的图像或者程序状态。该响应可能是提供一些适合的激励。在最通常的情况下,每个输出设备的响应被定制成适合于其操作或功能的性质和更新后的状态信息。
在图1所示的输出设备104包括应用控制器116控制下的投影仪114的特定应用项目中,状态改变受输入设备108或应用处理器116上运行的程序逻辑的影响。响应于由I/O处理器106检测到的输入信号,状态服务器102更新其状态信息,并将该信息反射或者重新传送给系统100中的其它设备,包括应用处理器116。也就是说,每个应用处理器116被配置成,响应于处理应用程序,将更新消息派送给状态服务器102,以产生形成应用处理器所产生的各个显示部分的图像中的改变。状态服务器102将消息反映给其它应用处理器116。应用处理器116从状态服务器102接收更新后的状态信息,并适当地做出响应。在图1的该特定应用项目中,每个应用处理器116的响应是改变与其相关联的显示屏幕118上所产生的显示。
在该特定实施例中,位于显示器表面120附近的照相机120作为输入检测器工作,其中的输入检测器被安置用来检测发生在由各显示面板118形成的显示设备之一附近的用户激活。响应于检测到的用户激活,输入检测器或照相机产生用户激活信号。例如,该信号可能是以x和y坐标定义用户的手在显示面板118的表面上所处的位置的数字数据。I/O处理器106与由照相机120形成的输入检测器和状态服务器102进行数据通信,以传达关于用户激活信号的信息。例如,I/O处理器可以简单地提供x和y坐标数据,或者数据可以用其它信息来增强或者格式化。
此外,在本文描述的特定实施例中,每个应用处理器116都运行基本上相同的程序,或者同样的应用程序。每个应用处理器116保持其自己的关于系统100的状态的副本(其响应于从状态服务器102接收到的状态消息而被更新)。基于其系统状态的本地副本,每个应用处理器116在分离的显示设备112上的预先定义的显示部分中显示应用程序的输出显示。应用项目的处理由作为同步器工作的状态服务器102同步化。在该系统中,各个应用处理器116中的每个控制各个显示设备112,以用于在各个显示设备112上显示输出显示的各个显示部分。
当检测到用户交互(诸如,靠近显示面板的手)时,在与各个显示设备相关联的各个应用处理器上,更新各个显示部分上的显示。作为同步器的状态服务器将关于用户交互的信息传达给各个应用处理器中的每个,其中每个应用处理器都具有所有系统数据。然而,应用处理器中的每个仅负责显示其各自的显示部分。因此,应用处理器仅在用户交互影响显示部分的情况下才更新其显示部分。例如,如果用户移动手部靠近2×4面板显示器(其中的每个面板由其各自的处理器来控制)中的最左边的面板,则手部运动所表示的用户交互被状态服务器报告给所有处理器。然而,只有控制最左边的面板的处理器才改变该面板上产生的显示,以反映用户交互。所有其它显示保持不变,尽管所有其它处理器具有同样的数据匹配。每个处理器保持其自己的上下文,并仅在上下文已经改变从而需要更新的情况下才更新其显示。上下文信息定义整个显示的什么样的显示部分是由处理器产生的。同样,如果用户交互需要改变多于一个显示面板(例如,因为在该显示器上打开了新的应用程序窗口)中的显示,则系统的状态将会反映出受到影响的每个应用处理器的各个上下文中的每个的改变。由于应用处理器的上下文内的改变,处理器的显示得到了更新。
图2是示出图1的系统中的处理流程的流程图。特别地,图2示出了图1的系统的特定实施例,在该系统中,使用一组独立的并且同步的应用处理器来显示和呈现信息。实现图1的系统的其它方法可以作为替代,并且对该实施例的变形可以容易地推出。
在图2中,该处理被实现为计算机代码,在该实例中,是被命名为RWExecutable.cpp的C++代码部分202。在流程块204,代码部分202首先创建被称为CRWApplication的对象的实例。在流程块206,代码部分202然后调用新创建的对象。如图2中的线指示的那样,控制然后转移到代码部分210,该代码部分210是CRWApplication的例示。在代码部分210的处理之后,在流程块208,CRWApplication的实例被代码部分202销毁。
代码部分210是C++对象CRWApplication的例示。该对象处理为图1的系统中的应用项目建立图形环境的任务。该对象还初始化和保持应用项目中所定义的所有CRWController的列表,这将在下文中进一步详细描述。倘若应用项目需要通过多投影仪系统来进行显示,则内容包括CRWScreenAlignmentObject。
代码部分或者应用项目210实现图2所示的流程图。在流程块212,应用项目210读取包含机器专用设置的任何文件。这种设置的实例包括,定义该机器负责处理各个显示部分的哪个片段。更宽泛地,机器专用设置定义什么样的输出设备将由机器控制。输出设备可以是显示设备、激励器或者任何其它适当的设备。
在流程块214,应用项目210建立用于任何所需的图形、视频、网络或音频能力的DirectX环境。DirectX是用于访问若干低级别功能(诸如,连网、图形、输入、音频以及视频)的库。所示实施例的系统最广泛地使用图形库,但是网络库被用于通信。
在流程块216,应用项目210创建和初始化一个或多个CRWController对象。控制器对象是对象的列表以及发送和从这些对象接收消息的逻辑。在流程块218,应用项目210创建被称为CRWScreenAligner的对象。这是允许使用多投影仪拼贴式系统的对象,其中在多投影仪拼贴式系统中,应用项目的显示被无缝地铺在许多被投影的区域上。通过扭曲实际被发送到投影仪的显示输出,该对象校正投影仪的失真,使投影区域之间的接缝最小化。校正的确切特性可通过该对象完全由用户配置。在流程块220,应用项目210初始化网络对象。该对象允许应用处理器通过网络与包括状态服务器的其它设备通信。
在流程块222,应用项目210检查退出消息或者指示应用应该被终止的其它数据。如果没有接收到这种消息,则在流程块224,任何待决消息从应用处理器被传送到状态服务器。在流程块226,被称为Render的对象被调用,以在显示器上渲染图像。控制停留在包括流程块222、224、226的循环中,直至接收到退出消息。响应于退出消息,控制前进到流程块228,在该流程块中,应用项目210向状态服务器发送终止消息,以停止与状态服务器的通信。在流程块230,应用通过销毁已经由应用创建的CRWController对象的所有实例来进行清理。在流程块232,所有DirectX资源都被释放,并且该应用终止。
图3示出了图1的系统的一个软件实施例的架构流程图。图3示出了由于图2的流程图中发生的动作而引起的操作。响应于图2的流程块216,在流程块304,代码部分302被调用以初始化专用于Controller对象的任何数据结构。同样,响应于流程块216,在流程块308、310,代码部分306被调用,以创建和初始化为应用所需的所有对象。
流程块308例示出了被称为CRWBaseController的接口312。CRWBaseController是定义Controller对象的基本属性的接口。控制器包含从CRWBaseObject得到的对象的列表,以及发送和从这些对象接收消息的逻辑。CRWBaseObject是定义通用对象(诸如,文本块(CRWSimpleTextObject)、图片(CRWTextured2DObject)、或者网眼供给(webcam feed)(CRWWebCamObject))的属性的接口。控制器创建并维护对象。对象具有初始化的能力,以便在每帧上绘制它们自己的内容,并且它们还能够对来自控制器的消息做出响应,以将应用写入系统中。开发者必须编写从CRWBaseController接口继承并实现CRWBaseController接口的类。开发者将对象填入控制器,并且通过指定对象的逻辑,他们定义应用的内容和行为。具体地,在流程块314,CRWBaseController接口允许应用处理器了解子区域或者整个输出显示的各个显示部分或者应用的几何结构的范围,并建立范围数据以存储该信息。这些范围在本文中也被称为该应用处理器的上下文。此外,在流程块316,CRWBaseController接口创建在其上绘制控制器内容的图形纹理。
流程块310创建并初始化该应用的所有对象。响应于流程块310,初始化对象318。在流程块320,调用对象CRWBaseObject 322。如上面所提到的,CRWBaseObject定义通用对象(例如,对象被“渲染”的一般想法)的功能。图片、视频等(CRWVideoObject和本文中描述的其它对象)从基本对象(例如,定义该特定类型的对象如何被渲染)继承并扩展基本对象。这样,CRWBaseObject定义所有对象都理解(初始化、渲染等)的命令的基本集合,并且每个对象类型定义对象如何对那些命令做出响应。这允许控制器向对象发送命令,而不需要理解它们确切是什么。控制器根据CRWBaseObject工作,但是每个专用对象用专用的行为做出响应。
在流程块322,创建并初始化对象。然而,在流程块324,如果应用项目开发者已经指示,该对象将永远不会被显示在副本所负责的子区域或者各个显示部分中,则抑制对象的创建。
再次参考流程块318,在流程块320的CRWBaseObject的初始化之后,在流程块326,初始化当前对象专用的任何资源。第一实例是CRWTextured2DObject,其是二维空间中的矩形,由两个角点定义。该矩形可以具有简单的颜色,或者其可容纳图像(“纹理”)。可用选项包括设置对象的颜色值、对其进行旋转、调整大小、设置其位置、改变其透明度。其它类似实例包括以下实例:
CRWLineObject,其是二维空间中的直线,由两个端点定义。除了适用于CRWTextured2DObject的所有属性和设置外,还可以对该直线的厚度和类型进行设置;
CRWMagLine,其是二维空间中的多边形,由四个角点定义。这使得可以实现比CRWTextured2DObject更灵活的几何结构,并主要被用于在视觉上将缩放的区域连接到未缩放的区域;
CRWWebCamObject,其是二维空间中的矩形,由两个角点定义。该对象显示从服务器或网眼取回的连续的图像供给。
CRWVideoTexture,其是处理从文件取得视频和向纹理写入视频的任务,以及处理对该文件进行的相关联的操作(诸如,解压缩)的对象。
CRWVideoObject,其类似于CRWTextured2DObject,但是容纳视频剪辑(见CRWVideoTexture)而不是静止的图像。
CRWCompoundObject,其是包含和管理对象的集合并将该集合绘制到2D纹理的对象,其中的2D纹理然后可以被绘制到屏幕上。用这种方式复合,该集合中的对象可以全部共享与整体坐标系统分离的坐标系统。改变复合对象的位置、缩放比例、旋转、颜色等会引起所有子对象的成比例的改变。
CRWSimpleTextObject,其是一块文本。设置包括边界矩形的大小和形状、字体高度和宽度、颜色和透明度,以及一些格式选项(例如,左对齐和右对齐)。
CRWSpriteScatter,其是空间中的点的集合,如同地图上的图钉。该集合的规模可以由用户设置成任意值。集合中的每个点可以具有一定大小,并且可任选地容纳图像。所有点具有相同的图像;在该上下文中,图像被称为“子画面”。各点的位置可以从位图图像中读取出来,这使得开发者可以在视觉上安置它们。
CRWVideoSpriteScatter,其类似于CRWSpriteScatter,但是每个点可以容纳视频图像,而不是静止的图像。
CRWStencilController。模板被用于定义绘制和不绘制对象的位置。CRWStencilController是定义模板和从属于该模板的各种对象的对象。该对象包含两个列表:将被用作模板的对象,和绘制的对象。
CRW3DObject,其与CRWTextured2DObject相似,但是其顶点出现在三维空间中,并且可以有许多的顶点。对象知道如何从文件加载顶点列表,并进行三维光照和三维变换。
RW3DRenderObject,其是包含和管理场景中的三维对象的集合并且将该场景绘制到二维纹理上的对象,其中该二维纹理然后可以被绘制到屏幕上。
RW3DBillBoardObject,其是在三维世界中创建二维对象并动态地更新其方向以使其始终面向观看者的对象。
CRWSoundPlayer,其是被绑定到磁盘上的音频文件的对象。方法包括播放、暂停、停止等。
CRWDataBundle,其是用于以行列格式容纳数据的对象。数据可以被用户功能性地插入,或者可以从适当格式化的文本文件中加载。数据内容也可以被写入格式化的文本文件。多个CRWDataBundle可以被用于提供一组数据,用于由CRWChat接口(诸如,CRWPieChart)的实施者进行显示。
CRWChart,其是定义所有图表对象共同具有的属性和方法(包括它们的数据基础)的抽象类(或者接口)。
CRWPieChart,其是饼形图对象,实现CRWChart接口。用CRWDataBundle来定义数据内容。
CRWLineChart,其是线图对象,实现CRWChart接口。用CRWDataBundle来定义数据内容。
CRWBarChart,其是条形图对象,实现CRWChart接口。用CRWDataBundle来定义数据内容。
CRWScatterPlotChart,其是散点图对象,实现CRWChart接口。用CRWDataBundle来定义数据内容。
CRWToggle,其是当被放置于触摸屏消息发送系统的上下文中时充当按钮的对象。该对象侦听与其边界相对应的坐标范围内的触摸消息;当被触发时,它发出某个预置的消息,该消息被传递给服务器并被转播给网络上的所有机器,从而提醒每个机器注意状态改变。对象知道其自己的状态,并且也控制其可以被触发的频繁程度。
CRWWhiteboardObject,其是容纳二维表面上设置的线或点的集合的对象。这些线或点代表白板上的“标记”。该对象的用户可以将标记添加到白板中或者从白板中除去标记。
CRWValueInterpolatorObject,其是起到类似于停表的作用的对象。用起始时间、持续时间及起始和停止值将其初始化。在该段持续时间内,其采取起始值并将起始值变成停止值(即,其“插入”该值)。各对象和各控制器使用该对象来帮助它们流畅地进行动画显示。
CRWBezierInterpolatorObject,其类似于CRWValueInterpolatorObject,但是使用专用的Bezier函数来进行插值。
在图2的流程块226中,对所有CRWController调用例程Render()。在这种情况下,控制前进至图3的流程块330处的开发者的代码。在流程块330,应用控制器在流程块332更新为正确绘制该帧所需的Controller数据,并在流程块334例示CRWBaseController对象以渲染该帧。CRWBaseController例示336循环访问控制器中的所有对象,并在流程块338对每个对象调用Render()方法。这会使所有对象都被绘制出来。
在图2的流程块224中,在状态服务器和控制器之间传送消息。在这种情况下,控制前进至开发者的代码340。代码340处理DistributeCommandMessage或者DistributeKeyMessage。在流程块342,调用用于该消息类型的CRWBaseController 344。在流程块346,该对象循环访问控制器中的所有对象,并调用适当的对象348以处理用于每个对象的消息。这样,在流程块350,对象348在流程块352调用相对应的CRWBaseObject方法,并在流程块354处理与一些高级对象相关联的特定响应。
在开发者的代码340对流程块342进行处理之后,在流程块360,处理所有系统消息以创建系统的行为的细节。
根据前文,可以看出目前公开的实施例提供了用于分布式信息处理和交互的系统和方法。在一个一般实施例中,应用处理器对一个或多个软件应用做出响应以产生输出,各个输出一起形成系统输出。应用处理器的状态中的每个改变在状态改变消息中被报告给状态服务器,状态服务器将该消息反映给系统中的所有其它应用处理器。同样,任何系统输入都被报告给状态服务器,状态服务器再次将状态改变反映给所有应用处理器。用这种方式,应用处理器被保持在同步状态。应该被反映到其它处理器的输出中的一个处理器中的输出改变,被自动地并且无缝地这样得到处理。
每个应用处理器可驱动产生拼贴输出显示的一个图像拼片的显示设备。应用处理器可以是任何数据处理设备,包括例如桌上型或膝上型计算机系统,PDA或任何其他处理设备。此外,图像拼片可在多个显示器上延伸。每个处理器使用来自状态服务器的状态改变消息来更新整个显示器的状态信息,即使处理器仅负责对显示器的指定部分进行显示。显示器的分配的、指定的部分是处理器的上下文。输入设备检测用户与显示器的交互,类似于鼠标运动和鼠标点击,但是在一个实施例中,这种交互是显示器前面的手的运动。检测到的用户交互被报告给状态服务器,并且关于用户交互的信息从状态服务器被反映给产生图像的应用处理器。基于来自状态服务器的信息对图像进行更新。
图4示出了应用项目历史储存库400。储存库400提供了一种用于存储有关应用项目随时间的发展的数据的机制。在以下的讨论中,应用项目是物料路线安排和配送应用项目,其协调将广泛的各种各样的物料配送到不同制造厂。然而,应有项目不限于物料路线安排。而是,应用项目实质上可以是任何应用项目,包括,例如,化学反应建模;能量(例如,油或气)供应路线安排;医院管理和工作分配及调度;模拟,诸如军事演习,病原体的传播,或原子核的相互作用;复杂结构(诸如手表、微处理器或飞机)的部件选择和组装;药物代谢的预测;心脏中毒的预测;企业结构的确定,诸如要建立多少个工厂或仓库以及在何处建立工厂或仓库,或者如何在工厂或仓库间分配资源;或土木工程任务,诸如规划新的道路或修改现有道路,包括估计或模拟的交通负荷和行程时间。
储存库400包括历史动作数据库402、历史状态数据库404和历史环境数据库406。数据处理器408执行数据库管理程序410,该数据库管理程序410在通信接口412接收到数据之后将数据存储到数据库402-406中。更具体而言,历史动作数据库402可存储动作记录414。每个动作记录可包括应用项目动作数据416、操作者识别符418和应用项目数据时间戳420。然而,在动作记录中可存在更多、更少或不同类型的数据。应用项目动作数据416表现在给定的动作时间对应用项目采取的动作。操作者识别符提供对动作负责的操作者的识别符(例如,字母数字字符串)。如果多个操作者联合对动作负责,则动作记录414可包括每个有责任的操作者的操作者识别符。应用项目数据时间戳420识别操作者对应用项目采取动作时的时间(“应用项目时间”)。
应用项目动作数据416可在用于表现对应用项目或关于应用项目采取的所有动作的类型、形式和内容方面变化很大。对物料装运路线安排应用项目采取的动作的实例包括:将物料分配给运输车辆(例如,火车、卡车或飞机);改变物料的配送时间表;改变运输车辆的可用性;改变需要物料的制造厂或工厂;改变制造厂所需的物料;改变需要物料的时间或日期;增加新的制造厂、产品、物料供应商、物料、运输车辆或运输路线;改变配送车辆的最大速度、最小速度或预期速度;改变运输、物料或产品当中的一种或多种的费用;设置或改变由制造厂制造的产品,或制造厂的制造量;对显示表面110上示出的显示做出注释;以及改变对制造厂、仓库、运输车辆或物料的标签、标记或其他描述符。
其他类型的应用项目动作也可被监视、跟踪和记录。作为例子,这样的动作可包括选择显示表面110上的地图的一部分;放大或缩小以观察地图上的额外的细节;促使报告被显示在显示表面110上;或滚动通过显示表面110上的信息。附加的例子包括移动指示物(例如,鼠标指针),点击按钮,输入键盘的键击,触摸显示表面110,或拖拽显示表面110上的指示物(例如,手指)。
通常,可当作应用项目动作的操作者的动作可被预先配置、在运行时选择或在应用项目执行的同时被改变。例如,系统的存储器中的动作偏好设置可识别那些被认为是应用项目动作的操作者动作。然后,作为操作者动作,系统可确定能当作应用项目动作的动作是否将被存储到历史动作数据库402中。
图4示出了这样一个例子:应用项目历史储存库400可包括存储动作偏好设置的存储器442。如图4中所示,动作偏好设置444指示对应用项目的键盘输入将被记录为历史动作数据库402中的应用项目动作。动作偏好设置446指示鼠标运动将不会被记录为历史动作数据库402中的应用项目动作。此外,在图4的例子中,动作偏好设置448、450、452和454指定:对制造厂、物料、车辆和车辆路线的更新(例如,名字、类型、位置或任何其他特征的改变)将被记录为历史动作数据库402中的应用项目动作。
这样,当操作者动作数据436到达时,处理器408可比较操作者动作数据(例如,包括动作识别符)与偏好设置,以确定数据库管理程序410是否应该将操作者动作作为应用项目动作保存在历史动作数据库402中。在其他实现方案中,操作者动作可在传输到应用项目历史储存库400以前被过滤。在那种情况下,应用项目历史储存库400可将每个操作者动作保存在历史动作数据库402中,或可使用存储器442中的本地动作偏好设置来执行附加过滤。
除了存储关于应用项目所采取的动作之外,应用项目历史储存库400还存储应用项目状态。特别是,历史状态数据库404存储状态记录422。状态记录422包括表现处于给定状态时间的应用项目状态的应用项目状态数据424和表现状态时间(即,捕获应用项目状态数据424表现的应用项目状态时的时间)的应用项目状态时间戳426。
当前应用项目状态可以以指定应用项目的任何部分的当前特征或属性的变量来反映。这样,应用项目状态数据424可表现作为应用项目在时间上的快照(snapshot)的应用项目状态,包括:例如,运输车辆的数目、类型、位置、速度和当前的货物;制造厂的数目、类型、位置和产品输出;一个或多个产品的当前配送时间表或预期;制造厂当前所需物料的数量、类型和成本;对物料的不足或过剩的当前预测,以及当前分配给每个制造厂或运输车辆的工人。应用项目状态还可包括表列数据,诸如与应用项目中示出或操纵的实体有关的数量、成本和信用。
应用项目状态还可包括系统100(例如,通过网络)接收到的数据。这种网络数据的一个例子包括由应用项目显示或集成到应用项目中的网页数据。其它例子是符号(例如,地图符号)、注释或对显示表面110上所示的应用项目做出的或添加到该应用项目上的修订。另一个例子是从外部天气报告系统接收到并覆盖到被合并到显示表面110上的应用项目中的地图上的实时的云层。
以下的讨论涉及反映应用项目所存在的上下文的环境数据。环境数据与应用项目状态之间的区别是灵活的。额外的或不同的区别或区别之间的划分线可在应用项目历史储存库400中确定和实现。这样,例如,门锁传感器可利用显示表面110提供关于室内的个人的环境数据。另一方面,显示可由操作者操纵的门锁接口的应用项目可具有的应用项目状态包括门锁及其控制的门的操作和状态。在一种实现方案中,可基于应用项目的核心功能来区分环境数据与应用项目状态。那么,环境数据可反映应用项目自始至终发生了什么,而应用项目状态可反映什么应用项目正在实际上被实施、被处理或被显示。
历史环境数据库406存储上下文数据。特别是,历史环境数据库406存储环境记录428。环境记录428可包括环境数据430和应用项目环境时间戳432。应用项目环境时间戳432表现捕获环境数据430时的时间和/或日期。
环境数据430提供应用项目动作发生的和应用项目状态存在的上下文。该上下文可以是本地的或远程的。环境数据的例子包括对应用项目被开发、研究、使用或修改的环境的音频捕获或视频捕获。环境数据可从附近的(例如,在同一建筑物中的不同房间中)或地理上分散的(例如,在洛杉矶、芝加哥和纽约的办公室中)的多个位置(例如,在分布式开发关境中)采集。本地环境数据的附加例子包括在一区域内(例如,在规划室中)的人的数目、身份和特征,一个或多个人已经在应用项目上工作的时间长度,房间温度、噪音级、天气状况和其他环境数据。其他环境数据可从生物传感器提供的上下文产生,所述生物传感器读取并报告诸如心率、血压、脑电波活动、体重、身高、体温的操作者生物数据或任何其他生物数据。
环境数据430还可包括来自于不一定直接与应用项目自身相关的其它信息源的信息。该附加的环境数据可以被加上时间戳以供存储和后来的检索和回放。其他信息源可代表网站、免费的或订阅的电子数据库、新闻组、电子新闻供给(news feeds)、期刊论文数据库、手动数据录入服务或其他信息源。
如图5所示,其他信息源的例子包括政府出版物信息源502、在线价格信息源504、财务报告信息源506以及本地和国家新闻信息源508。信息源还可包括一个或多个日志、在线讨论或USENET信息源510、分析报告信息源512、产品评论信息源514和商业新闻信息源516。信息源502-516仅仅是例子,并且储存库400可从任何其他信息源接收环境数据。
通常,这些源包括可在因特网上或诸如Lexis/Nexis之类的个人付费的订阅服务上获得的本地和国家的新报道。公司财务报告也可在公司网站或在政府报告网站上得到。产品的定价信息可经常在线获得,并且信息源可被监视以发现改变和引入新信息。附加的信息源包括政府出版物、产品评论、分析报告和商业新闻,以及可靠性较低的信息源,诸如网络日志和在线社区讨论公告板或聊天室。
返回到图4,通信接口412通过通信网络434接收关于在显示表面110上显示的应用项目的历史数据。作为例子,通信接口412可接收操作者动作数据436、应用项目状态数据438和环境数据440。如上所述,环境数据440可由本地或远程的上下文的源头来提供。操作者动作数据436可由系统100提供,系统100检测并响应操作者与其上显示应用项目的显示表面110的交互。例如,操作者动作可由通过输入设备108进行的操作者输入产生,或者由诸如与系统100通信的语音识别系统这样的其它输入设备产生。
应用项目状态数据438也可由系统100提供。特别是,系统100可在任意给定时间提供当前应用项目状态的快照并将该状态数据传递给储存库400。应用项目状态数据438可表现指定整个应用项目或应用项目的任何部分的特征或属性的变量。例如,响应于对保存应用项目状态的操作者请求,系统100可串行化每个应用项目对象以提供每个对象的二级制表示。应用项目对象可从其重建的二进制表示,然后可作为应用项目状态数据438被提供给储存库400。
如上所述,储存库400可用操作者识别符418来标记每个由动作记录414表示的应用项目动作。结果,应用项目的历史不仅在全球意义上得到跟踪,还针对潜在的许多个体行动者得到跟踪。换言之,操作者识别符418允许储存库在多个操作者之间进行区分并识别哪个操作者对任何给定的应用项目动作负责。对于大量的人员组为其工作的复杂应用项目,操作者标识(identification)会是在回顾应用项目历史时要具有的非常有益的附加的一条信息。操作者标识数据可与操作者动作数据436一起被包括。
图6示出了多目标检测和应用项目状态导航系统600的一种实现方案。多目标检测和应用项目状态导航系统600包括应用项目历史储存库400、导航接口系统800(将在下面描述)和包括显示表面110的分布式信息处理系统100的实现。多目标检测和应用项目状态导航系统600位于战略规划室602中,在该战略规划室602中,一个或多个操作者可研究、修改或评论显示表面110上显示的应用项目。如上所述,储存库可根据对动作负责的操作者存储每个应用项目动作。举例来说,定义每个应用项目动作的数据可由以下提到的传感器接收,由信息处理系统100封装到报告消息(例如,XML报告消息)中,并被传递给应用项目历史储存库400。
战略规划室602并入识别技术,该识别技术提供逐渐增多的关于操作者身份和他们的影响应用项目状态的应用项目动作的信息。对识别技术进行区分的一种方式是把它们当作多个类别(诸如在场类别(presence category)、使用类别(usage category)和输入类别)中的一部分。然而,识别技术可以以其它方式加以分类。
关于在场类别,操作者标识信息传达了给定操作者在应用项目动作期间在场以及操作者在场的时间。作为一个例子,钥匙卡门锁604(或其他门或锁传感器)可提供战略规划室602中的个人的身份和刷卡进入室602的时间。无论何时钥匙卡门锁604检测到刷卡,都可发布操作者标识更新。
作为另一个例子,操作者可佩戴证章(badge)606或其它可被感测到的标记。证章606向放置在室602周围的一个或多个检测器610发射ID信号608。在一个实现方案中,证章606是红外或RFID证章系统的一部分。检测器610可放置在室602的天花板上或墙壁上。证章606以红外或RF频谱发射唯一的操作者识别符。检测器610可向信息处理系统100或应用项目历史储存库400报告作为操作者标识数据的检测到的操作者识别符和任何可获得的附加信息,诸如操作者处于房间的哪一部分(例如,基于多个检测器610采用的三角测量或其他定位技术)。
使用类别中的识别技术可提供关于操作者身份的信息,例如何时知道操作者在场,以及何时存在更大程度的关于何时的确定性。通常,操作者实际上产生应用项目动作的更多证据是可获得的。作为一个例子,可采用局部化的标记系统(tagging system)。
局部化的标记系统可包括电子证章612和传感器614。证章612和传感器614可以以限定局部化区域的功率水平操作,该局部化区域例如是,与显示表面110相距0-48英寸、0-36英寸、0-24英寸或0-12英寸。标记系统可以在宽带频谱中操作,以支持操作者标识数据到储存库400的高带宽通信,该高带宽通信具有比更粗糙的传感器系统更高的精确性、更高的分辨率以及更高的频率。因此,标记系统可不仅检测操作者是否处于规划室602内,还检测哪些操作者在显示表面110本身附近。即使不可能精确地确定哪个操作者对应用项目动作负责,传感器614也可以提供可能已经采取了应用项目动作的人和可能已经目击、支持或对应用项目动作做出贡献的人的操作者识别符的列表。
输入类别中的识别技术可提供关于操作者身份、操作者采取应用项目动作的时间和操作者采取的特定应用项目动作的信息。这些识别技术更适合于明确地将应用项目动作与特定操作者关联起来。以下给出实例。
作为一个例子,操作者可携带识别输入设备,诸如铁笔(stylus)616,系统100可将其与其他铁笔或其他输入设备区分开。每个操作者的铁笔可通过颜色、形状、尺寸或其它特征而得以区分。结果是,照相机122可捕获铁笔的特征(例如,铁笔的形状或颜色),这允许确定操作者(已知使用铁笔的)与应用项目动作之间的对应关系。铁笔的识别特征然后可与操作者身份关联起来,并可被传递给储存库400。可替换的或追加的,铁笔可包括RFID标签或将操作者识别符传递给系统100或连接到系统上的传感器的其它电子识别机构。
作为另一个例子,信息处理系统100可从诸如膝上型计算机、PDA、桌上型计算机、蜂窝式电话这样的其他输入机构接收应用项目动作。这些输入机构可并入有认证系统(例如,用户名/密码,或公共密钥/私有密钥系统)。当例如膝上型计算机618连接到信息处理系统100(例如,通过WiFi、以太网或其他网络连接)时,信息处理系统100可认证和识别膝上型计算机618的操作者或膝上型计算机618自身。结果,任何通过膝上型计算机618采取的或提交的应用项目动作可被识别为由与膝上型计算机618相关联的操作者造成(或者被识别为来源于膝上型计算机618自身)。
如图6所示,储存库400可与信息处理系统100通信。响应于操作者对导航通过应用项目历史的请求,信息处理系统100可向储存库400中的数据库查询历史动作数据、应用项目状态数据和环境数据。可替换的,对应用项目导航的请求可来自于另一个源(例如,直接来自于操作者),而储存库400响应该请求并将历史数据提供给信息处理系统100。
在一个实现方案中,信息处理系统100生成时间选择接口元件。操作者可使用时间选择接口元件来导航通过应用项目历史。图7示出了信息处理系统100在其上生成时间选择接口元件702的显示表面110的实例。
在这种情况下,时间选择接口元件702是在显示表面110上呈递的滚动条。在其他实现方案中,时间选择接口可包括语音识别系统、菜单选择、鼠标轮或任何其它输入机构。时间选择接口允许操作者提供一个或多个关于在哪观看应用项目历史的时间选择(即,时间和/或日期)。
时间选择接口元件遵守使用语义704。如图7所示,使用语义704建立:滚动条的中心表示应用项目的当前状态,向左滚动会在时间上向后导航,而向右滚动会在时间上向前导航应用项目。响应于从时间选择接口元件702获得的时间选择(例如,“一周以前”,“从现在开始一个小时后”,或“现在”),信息处理系统100生成显示表面110上的应用项目表现。
应用项目表现是处于时间接口元件702选择的时间处的应用项目的呈递。为了创建应用项目表现,信息处理系统100可启动对储存库400中的数据库402-406的查询。查询可指定时间选择,从而导致检索到的应用项目状态数据、应用项目动作数据和环境数据。
当应用项目状态数据包括处于时间选择所指定的(或处于预先选择的操作者或系统选择的时间阈值内的)时间处的应用项目状态的快照时,信息处理系统100可根据检索出的应用项目状态数据来呈递应用项目表现。当应用项目状态数据不包括指定时间处的应用项目的快照时,信息处理系统100可从在时间上接近于指定时间的应用项目状态数据开始。然后,信息处理系统100可应用检索出的应用项目动作数据所指定的随后的操作者动作,以得到指定时间处的应用项目状态。可替换的,信息处理系统100可在应用项目开始处开始,并重新应用每个应用项目动作直至指定时间,以达到将在显示表面110上呈递的应用项目状态。
此外,信息处理系统100可回放操作者动作和回放或传达在每个操作者动作和/或应用项目状态期间存在的环境。这样,例如,当信息处理系统100应用操作者动作时,信息处理系统100可显示应用项目动作。作为例子,信息处理系统可显示鼠标光标移动到选择菜单并挑选选项,或者可打印描述应用项目动作及其参数的文本消息。另外,信息处理系统100可输出检索出的环境数据。例如,信息处理系统100可输出与应用项目动作同时期地从规划室602捕获的音频或视频数据,任选地由从图5所示的信息源获得的同时期的新闻报道或其他上下文信息进行补充。
再次参考图7,该图显示了导航实例706,其中操作者已经提供了时间选择720,该时间选择720指定在应用项目开发的开始附近的时间。结果,应用项目表现708显示应用项目开始附近的应用项目状态(例如,带有表示与其他部件的相关性的连线的三个部件库存水平)。如导航实例706中所示,部件库存水平726和728表示两个部件的库存丰足,而库存水平730显示第三个部件还没有库存。
图7也显示出第二导航实例710。在第二个实例710中,操作者已经提供了指定当前的时间选择722。因此,信息处理系统100显示应用项目表现712,该应用项目表现712示出当前的应用项目状态。在当前的应用项目状态中,第一部件的库存水平726保持丰足,而第二库存水平728已经降低到一半的容量。另外,第三存储水平730显示对第三部件的供应已经到达一半的容量。
图7也显示出第三导航实例716,其中操作者已经指定对应于未来时间(即明天)的时间选择724。作为响应,信息处理系统100可应用预测建模、增长预测、外插或内插技术来获得对未来应用项目状态的预测。作为一个例子,信息处理系统100可基于部件消耗、制造和补给的历史水平来预测库存部件水平。在预测的应用项目状态中,第一和第二库存水平726和728显示一半容量,而第三库存水平730显示丰足的容量。
作为另一个例子,信息处理系统100可通过对运输车辆的当前速度进行外插、咨询已建立的行程时间表或使用其他因素来预测运输车辆的位置。作为又一个例子,信息处理系统100可取决于历史的制造增长速率来预测将会存在的工厂数目。应用项目表现718响应于预测建模、增长预测、外插、内插或其他预测技术,而显示预测出的处于时间选择代表的时间处的应用项目的未来状态。
可替换的,信息处理系统100可将应用项目的当前状态与未来时间选择724一起传递给分离的预测建模系统。预测建模系统然后可对当前状态应用任何预测建模、增长预测、外插或内插技术。所产生的预测的未来应用项目状态被传递给信息处理系统100以便在显示表面100上呈递或作为未来的应用项目状态存储在应用项目历史储存库400中。
在图8中,操作者导航接口系统800接收导航请求和时间选择,并使应用项目状态的显示与信息处理系统100协调。在其他实现方案中,图8所示的硬件和软件可被并入到状态服务器102中,或者可在与信息处理系统100和/或应用项目历史储存库400通信的其他处理系统上实现。
导航接口系统800包括存储器802、处理器804和显示器806。导航接口还包括通信接口808,该通信接口808通过网络434与应用项目历史储存库400和信息处理系统100通信。导航接口系统800从应用项目操作者、从信息处理系统100或从另一个源接收时间选择812。
更具体而言,在存储器802中运行的接口输入程序814获得时间选择812。接口输入程序814可以是设备驱动器,例如,其接收鼠标、键盘或触摸屏输入。作为其他例子,接口输入程序814可以是语音识别系统,或接收来自信息处理系统100的操作者输入数据的消息接收器。在后一种情况下,接口输入程序814可从信息处理系统100接收消息,这些消息指示操作者已经使用显示表面110上的时间选择接口702做出了时间选择。
响应于该时间选择,时间索引程序816启动应用项目历史储存库400中的数据库402-406的搜索。时间索引程序816指定用于搜索的时间选择。搜索可包括以下搜索的任何组合中的一个或多个:对历史动作数据库402的动作搜索,其产生检索出的应用项目动作数据818;对历史状态数据库404的状态搜索,其产生检索出的应用项目状态数据820;以及对历史环境数据库406的环境搜索,其产生检索出的环境数据822。
输出程序824将检索出的数据818-822提供给信息处理系统100。信息处理系统100然后可基于上述的时间选择在显示表面110上呈递应用项目表现。显示表面110不必要被用来显示应用项目历史。而是,诸如显示器806这样的任何其他显示器可显示包括应用项目状态、应用项目动作和环境数据的应用项目历史的全部或一部分。输出程序824也可辅助信息处理系统100传达应用项目历史。例如,输出程序可包括音频和/或视频编码器/解码器以再现与任何应用项目动作或应用项目状态同时期的音频和视频上下文数据。
图9示出了导航接口系统800和程序814、816和824可采取的动作的实例。接口输入程序814监视一个或多个时间输入选择设备(动作902)。接口输入程序814获得操作者已经使用时间选择接口元件指定(动作904)的时间选择。可替换的,接口输入程序814可获得来自信息处理系统100或来自另一个源的消息中的时间选择。接口输入程序814将时间选择提供给时间索引程序816(动作906)。
时间索引程序816启动对历史动作数据库402的动作搜索(动作908)。产生检索出的应用项目动作数据818。时间索引程序816也启动对历史状态数据库404的状态索引(动作910)。产生检索出的应用项目状态数据820。另外,时间索引程序816启动对历史环境数据库406的环境索引以获得检索出的环境数据822(动作912)。
输出程序824将检索出的搜索数据818-822传递给信息处理系统100(动作914)。信息处理系统100然后可在显示表面110上重建和呈递应用项目状态。然而,如上所述,输出程序824或导航接口系统800中的其他逻辑可输出包括应用项目状态、应用项目动作和环境数据的应用项目历史的全部或一部分。
可基于单独或组合的操作者偏好或预置文件(profile)来建立动作偏好设置。此外,可取决于为应用项目工作的特定操作者来建立或修改信息处理系统100、应用项目历史储存库400、多目标检测和应用项目状态导航系统600或导航接口系统800中的其他参数。例如,每个操作者(或每组操作者)可指定将被认为是那个操作者(那组操作者)的应用项目动作的动作。为了该目的,存储器422可包括在各个单独的操作者或多组操作者的基础上建立的多组偏好数据。可取决于操作者预置文件而变化的参数的其他例子包括:为每个应用项目动作回放的环境数据的数量、类型和时间间隔,为得到指定的以前或未来的应用项目状态而显示和/或应用历史应用项目动作的速率,以及用于确定应用项目状态记录何时匹配指定的时间选择的阈值(例如,带有处于指定的时间选择的12个小时内的时间戳426的应用项目状态记录422将被认为是匹配的)。
操作者预置文件可被当作用户预置文件的具体实例。用户预置文件可在管理角色、监督角色、操作者角色或任何其他角色中为个体建立系统配置参数。然后系统100和/或600可提供响应于用户预置文件的历史应用项目导航。例如,管理角色中的个体可请求应用项目导航。系统100和/或600可根据为管理个体建立的预置文件过滤历史应用项目数据。
图10显示了应用项目历史储存库1000的第二实例。储存库1000中的存储器422存储操作者预置文件1002和管理预置文件1004。操作者预置文件1002包括动作偏好1006和回放偏好1008。类似的,管理预置文件包括动作偏好1010和回放偏好1012。尽管预置文件1002和1004被显示在储存库1000中,但预置文件1002和1004可全部或部分地在其他系统中建立或维护,所述其他系统包括信息处理系统100。
动作偏好1006、1010可指定将为对应用项目动作负责的特定类型的用户(例如,操作者或管理个体)记录的应用项目动作(例如,如上面针对偏好设置444-454提到的那样)。回放偏好1008、1012可指定在特定类型的用户启动应用项目导航时将提供哪些应用项目动作和/或环境数据。可建立附加的偏好来管理系统100和/或600的任何其他方面针对任何特定类型的用户的行为。作为附加的例子,偏好可指定历史细节的级别以基于时间来提供所请求的应用项目导航的时间或回顾或其他上下文。举例来说,偏好可指定:回顾的非常详细的级别,其中每个应用项目动作和所有可用的环境数据都被回放;概要回顾,其中仅仅回放应用项目动作;或者任何其他回顾级别。
应用项目导航技术可结合用于确定平面上的多个目标的位置的技术(如以下结合多目标检测器系统所描述的那样)来使用。这些技术可用于区分或识别显示表面110上的输入(例如,触摸、笔写或其他输入)以精确地检测操作者输入。多目标检测和应用项目状态导航系统600然后可通过如上所述导航操作者通过应用项目状态和交互历史来对输入做出响应。可替换的或追加的,多目标检测和应用项目状态导航系统600可使用下面描述的多目标检测器系统来区分和识别对显示表面110的输入,以便帮助解析和指定操作者所采取的应用项目动作。
存在各种各样的用于多目标检测器系统的应用项目。例如,在大型交互地图(或其他数据)正在显示实时信息的命令中心中,多个用户可能会希望同时利用地图工作,从而选择地图表面上的对象。现有的基于照相机的目标系统,被限制为检测单个目标(诸如单个触摸、笔写等),需要每个用户依次触摸屏幕以便正确地检测用户的单个触摸。对于额外的触摸输入,现有的系统可能会具有未定义的或不合需要的效果。相反,下面描述的系统不受这样的限制。单个用户或多个用户可触摸屏幕多次,并且触摸的位置甚至利用基于照相机的触摸系统也能够正确地得到检测。
用于多目标检测器系统的消费者应用项目包括:例如,电影院大厅中的公共服务亭,其以几码宽的列表的格式显示关于当前放映的电影的信息,即一种数字布告板。多个、不相关的用户可同时走近和浏览该信息。多目标检测器系统允许可触摸的计算出的区域被当作所有用户可用的有效表面(active surface)(不需要用户获得诸如鼠标或指示工具这样的输入通道以便使用它的表面)对待。多目标检测器系统因此支持一种新型的有价值的多用户应用项目。
图11显示了通过接口与应用设备1110连接的多目标检测器系统1100的配置。多目标检测器系统1100可提供指示目标(即,单个用户(或多个用户)已经触摸了表面1102)的单个位置或多个位置的数据。表面1102可以是平坦的或基本上平坦的。平坦表面1102可由透明塑料或玻璃构成,并且可邻接单个或一系列显示屏幕(诸如LCD显示屏幕)。或者,平坦表面1102可涂覆在一侧上,而将显示投影到该表面1102的一侧上。表面1102可以是显示表面1102,并且在用于分布式信息处理和交互的系统100的控制下由一个或多个显示设备112显示图像。
多目标检测器系统1100还可包括一个或多个视觉传感器1104。视觉传感器1104可包括照相机,诸如基于CCD的照相机或其他图像采集设备。基于CCD的照相机可捕获电磁信息,诸如来自可视和/或红外光谱的电磁信息。CCD照相机的例子是Lumenera Lu275。基于CCD的照相机捕获的图像可以是任何适合格式(包括诸如jpeg(是指由联合照相专家组提出的标准数据格式)或者gif(图形交换格式)或者其它格式的数字格式)的单个图像,或者视频图像可以是电影图像,诸如根据诸如由运动图像专家组(MPEG或者其变体之一)提出的标准或者其它标准而被编码的数据文件。其他视觉传感器1104可包括红外传感器,其可以是对来自设备的热、能量或无线电辐射做出响应以产生图像的任何传感设备。
多目标检测器系统1100的配置的一个实例包括两个或多个沿着观察表面1102进行查看的照相机,所述照相机的视场平行于表面1102。示例性的基于照相机的系统被公开在2005年4月14日公开的美国专利申请第2005/0077452A1号(美国申请第10/312,983号)中,通过引用将其结合在本文中。一段黑胶带可沿着表面1102的底部和侧边放置,使得如果不存在任何接触,则感测表面1102附近的图像的照相机的那部分是黑的。实际上,当不存在接触时照相机仅可以“看到”黑带。当诸如用户的手指或肘、笔或类似物这样的目标接近或接触表面1102时,以黑胶带为背景观察到的手指在照相机的视场中登记一改变或遮挡(occlusion),该改变或遮挡可随后被处理。例如,遮挡可包括照相机内的视场内的亮点。这样,照相机可获得平面1102上多个同时出现的目标的图像。
来自照相机的信息可被发送给多目标状态检测器1106。多目标状态检测器1106因此被配置成从视觉传感器1104接收信号并反过来提供任何必要的信号。例如,为了从照相机接收jpeg格式文件,多目标状态检测器1106从照相机接收jpeg格式的文件并存储该文件,从而向照相机提供适当的网络握手信号。在另一个例子中,格式可以是来自另一照相机的流式数据。在任何一种情况下,格式可包括指示表面1102上多个同时出现的目标的图像的数据。
如以下更充分描述的那样,多目标状态检测器1106可感测表面1102上的单个目标的状态或表面1102上的多个目标的状态。如上所述,目标可包括手指、笔或者接近或接触平面1102的其他对象。目标的状态可包括目标的任何特征,诸如目标的位置、目标的尺寸或目标的移动(例如,总体移动(向上、向下、向左、向右)或速度)。
目标的状态可被发送给用于进行处理的应用设备1110。应用设备1110可包括从多目标状态检测器1106接收目标的所确定的状态的输入接口1112。此外,应用程序1114可使用目标的状态作为对程序的控制或历史导航的输入。应用程序然后可将其输出发送给显示程序1116。例如,显示程序1116可在表面1102上显示图像或其他呈递。如上所述,显示的图像可包括单个图像或拼贴输出显示的一系列图像拼片。这样,多目标检测器系统1100可检测用户的手的位置和移动,并与应用设备1110相结合地指示用户的手的位置和运动。例如,如果手部运动应被解释为左点击、右点击或对表面1102上的显示的其他鼠标激励,则应用设备1110将通过处理手部运动并在适当情况下在受控制的显示部分中反映手部运动来适当地做出响应。
图12显示了多目标状态检测器1106的展开框图。多目标状态检测器1106可包括具有处理单元1210、系统存储器1200和系统总线1212的通用计算设备,所述系统总线1212将包括系统存储器1200的各种系统部件连接到处理单元1210。处理单元1210可通过访问系统存储器1200来执行算术、逻辑和/或控制操作。系统存储器1200可以与处理单元1210相结合地存储供使用的信息和/或指令。系统存储器1200可包括易失性和非易失性存储器,诸如随机存取存储器(RAM)1202和只读存储器(ROM)1208。RAM 1202可包括状态检测器程序1204,该状态检测器程序1204可包括与图13-14、20-21和22-23中的流程图相对应的计算机可读编程。此外,RAM 1202可包括诸如用于执行状态检测器程序1204的数据这样的程序数据1206。基本输入/输出系统(BIOS)可存储在ROM 1208中。系统总线1212可以是包括使用各种总线架构中的任何总线架构的存储器总线或存储器控制器、外围总线和本地总线的几种总线结构中的任何总线结构。
多目标状态检测器1106可经由视觉传感器接口1214从视觉传感器1104接收输入。如以下更详细描述的那样,来自视觉传感器接口1214的输入可包括诸如图19中所示的数据那样的数据。多目标状态检测器1106还可包括用于数据存储的硬盘驱动1218,和用于从可移动外部磁盘1224读取或向可移动外部磁盘1224写入的外部磁盘驱动1222。可移动磁盘可以是用于磁盘驱动器的磁盘或用于光盘驱动的诸如CDROM这样的光盘。硬盘驱动1218和外部磁盘驱动1222可分别通过硬盘驱动接口1216和外部磁盘驱动接口1220连接到系统总线1212。驱动和与它们相关联的计算机可读介质提供用于多目标状态检测器1106的计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。也可以使用可存储能由计算机访问的数据的其他类型的计算机可读介质,诸如磁带盒、闪存卡、随机存取存储器、只读存储器等。尽管图12将RAM 1202描绘为存储状态检测器程序1204,但是硬盘1218、外部磁盘1224、ROM 1208或RAM 1202中的任何一个、任何组合或全部都可以存储状态检测器程序1204。
系统可同时跟踪多个目标。最初,可能没有目标登记在系统中。当新的目标到达时,可一次一个地将目标添加到已知的活动目标的列表中,并可与其他预先存在的目标相独立地得到跟踪。多目标检测器系统1100可以不断地或周期性地向任何连接的客户软件(诸如应用设备1110)通知所有被跟踪的目标的状态。应用设备1110可包括适于接受这样的状态信息的任何程序,例如命令中心或电影服务亭应用程序。给定状态信息,应用程序的开发者被允许提供反映这些多个输入流的软件行为,诸如基于独立的用户输入在屏幕的不同部分上独立地移动两个目标。
在本发明的一个方面中,多目标检测器系统1100首先确定潜在位置。潜在位置既可包括对应于“真实”目标(例如,对应于实际接触的目标)的位置,又可包括对应于“幻影(ghost)”目标(例如,不对应于实际目标的目标)的位置。然后分析潜在位置以确定哪些是对应于“真实”目标的位置以及哪些是对应于“幻影”目标的位置。
图13和14显示了动作1300,多目标状态检测器1106可采取该动作1300来确定潜在位置以及潜在位置对应于“真实”目标还是“幻影”目标。多目标状态检测器1106确定是否存在任何遮挡(动作1302)。动作1302可以对从照相机接收到的每帧信息执行,或者可在接收到一组帧之后执行。如上所述,遮挡可以是照相机视场中的任何变化。例如,遮挡可包括视场中比相邻部分更亮的部分。如果目标出现在照相机获得的图像中,则遮挡可因此登记。如果存在遮挡,则选择其中一个照相机作为首要照相机(动作1304)。例如,视觉传感器1104可包括两个照相机,照相机A和照相机B。可首先将照相机A指定为首要照相机。对于选出的首要照相机,选择其视场中的其中一个遮挡(动作1306)。利用该遮挡,可被指定为首要光线的光线被确定为从照相机穿过目标的位置(动作1308)。
图15示出照相机A和照相机B以及平面1102上的两个目标1502、1504的实例。如上所述,照相机A登记遮挡。遮挡可登记为照相机A的视场中的亮点1910、1920,如图19所示。遮挡1910、1920指示两个目标1502、1504。因为照相机A不提供深度信息(即,触摸或目标距离照相机多远),所以照相机B提供用于对位置作三角测量的附加信息,如以下更详细描述的那样。类似地,照相机B可登记遮挡1930和1940,诸如图19中所示。遮挡1930、1940指示目标1502、1504。照相机A和照相机B被放置成使得每个视场延伸超出平面1102的外围边缘。用这种方式,整个平面1102都在照相机A和照相机B的视场内。
图19示出了照相机提供的一帧数据。在一个实施例中,照相机可编程为以近似135帧/秒的速度传递数据。可以顺序地发送各帧使得照相机提供顺序的图像信息。市场上能买到的基于照相机的可触摸显示器通常以低的多的帧速率工作,诸如大约30帧/秒。帧速率的增大可允许更好地确定表面1102上的目标。例如,对以前帧中的目标的分析潜在地允许更好地确定当前帧的目标,如以下更详细描述的那样。照相机的输出中的仅仅一部分需要被发送给多目标状态检测器1106以便进行处理,如图19所示。因此,可将照相机编程为仅发送处理所需的窄带数据,如图19所示。这可允许照相机增大发送的帧速率。
利用来自照相机A的遮挡,可计算出光线,该光线指示穿过潜在的目标。例如,如图19所示,其中一个遮挡是1910。利用查找表,遮挡可与光线1602关联起来,如图16所示。例如,图19中所示的CCD照相机的输出可包括与捕获的图像相对应的一组像素,诸如1到1,600。如果CCD照相机中的像素数目1350高于指示遮挡的预定亮度,则可访问查找表以确定与像素数目1350相关联的光线。可以以各种方式来表示光线,诸如利用沿着光线的两个点(x1,y1;x2,y2)或沿着光线的一个点和倾斜度(x,y;m)来表示光线。
查找表可在操作期间的任何时间处生成,诸如在初始化处理期间。例如,当视觉传感器1104是CCD照相机时,照相机生成的像素可与特定光线关联起来。如图19所示,发送的窄带数据可对应于离散数目个像素,诸如1600个像素。多个像素中的每一个或多组像素中的每一组可被分配给一光线。为了在初始化期间编译查找表,平面1102上的各个预先确定的点可被触摸(诸如通过将一个白色目标贴到平面1102上的一点上)。点亮的相应像素然后可被记录下来,并被分配给平面1102上的预先确定的点。利用该数据,可确定与每个像素或一组像素相对应的光线。如果照相机相对于屏幕发生偏移,则可能需要以上述的方式重新初始化或校准系统。
可在诸如照相机B的次要照相机中选择遮挡以便进行分析(动作1310)。例如,可选择遮挡1930。对于次要照相机,利用来自照相机B的遮挡,可计算出指示穿过潜在的触摸的光线(动作1312)。对于遮挡1930,光线1604穿过触摸1502。计算两条光线(首要光线和次要光线)的交点(动作1314)。可通过为两条光线算术地确定是否存在交叉点来计算交点。交叉点(1502)被认为是潜在位置。随后的分析确定潜在位置是“真实”目标的位置还是“幻影”目标的位置。在图16所示的情况中,随后的分析将确定潜在位置是“真实”目标的位置。在两个真实目标的情况下,有四个潜在位置生成,两个位置对应于“真实”目标并且两个位置对应于“幻影”目标。如图15和16所示,两个“真实”目标是1502和1504。在图17和18中,两个“幻影”目标被显示为1702和1802。系统也可确定多于两个真实目标(诸如三个、四个、五个或六个真实目标)的位置。
存在几种确定潜在位置是“真实”目标还是“幻影”目标的位置的方式,如图14所示,其中图14续自图13开始的流程图。一种方式是确定潜在位置是否处于平面1102的边界内(动作1316)。如果交叉点处于边界内,则交点可能是对应于真实目标的位置。因此,交叉点被添加到所有可能目标的全局列表中(动作1318)。目标的全局列表经受进一步的分析,如以下参考图20-21和图22-22描述的那样。在图16中,光线1602和1604的交叉点出现在目标1502处,该目标1502处于平面1102的边界内。因此,将潜在位置添加到所有潜在目标的全局列表中。
多目标状态检测器1106然后确定在次要照相机的视场中是否存在任何其他亮点(动作1320)。在图19中,例如,还有一个遮挡1940。因此,选择下一个斑点(动作1322)。图17示出了为照相机A的遮挡1910和照相机B的遮挡1940确定光线和交叉点的示意图。如上所述,光线1602是对应于遮挡1910的光线。光线1704是对应于遮挡1940的光线。图17显示了两条光线的交叉点,其可以如上所述算术地计算。在图17中指定为1702的交叉点处于平面1102的边界以外。因此,根据动作1316,交叉点被认为不是对应于“真实”目标的位置并且将不被添加到用于进一步分析的全局列表中。
然后分析来自首要照相机的输出以确定是否存在任何其他遮挡(动作1324)。如果有,则选择下一个遮挡(动作1326),并且重复处理。例如,图18显示了为来自照相机A的第二遮挡1920确定光线的情况。第二遮挡对应于光线1804。如上所述,遮挡1930对应于光线1604。两条光线产生交叉点1802。交叉点1802处于平面1102的边界内并因此根据动作1318被添加到可能目标的全局列表中。然而,因为交叉点并不与在该交叉点处的物理目标的存在相对应,所以该交叉点对应于“幻影”目标。在图20和21中描述的随后的处理进一步分析潜在位置对应于“真实”目标还是“幻影”目标。
在照相机B的所有遮挡都被分析之后,可分析其他照相机。例如,如果使用了第三照相机,诸如照相机C,则该方法可通过将照相机A选为首要照相机并将照相机C选为次要照相机,来重复类似的分析。在所有的次要照相机都被分析之后,确定是否存在任何照相机还没有被选择首要照相机(动作1328)。例如,如果照相机B还没有被选为首要照相机,则选择它(动作1330),并且重复该处理。通过这种方式,所有的潜在位置可得以确定。
可分析潜在位置的列表,以确定哪些是对应于“真实”目标的位置以及哪些是对应于“幻影”目标的位置。如上所述,可基于各种因素来进行分析。例如,关于潜在位置是否对应于“真实”目标的确定可以基于之前目标的历史(包括位置和/或速度历史)来进行。在一个方面中,可一次一个目标地编译历史,由此仅仅一个附加目标可被添加到处理的当前帧中的历史中。以这种方式,系统首先看到平面1102上没有目标,然后看到平面1102上的一个目标,然后看到平面1102上的多个目标。利用该次序,当看到多于一个的目标在平面1102上时,可利用历史(其包括至少一个目标)来检测屏幕1102上当前存在的多个目标,如在以下更详细描述的那样。
图20-21和图22-23显示了动作2000和2200,多目标状态检测器1106可采取这些动作来确定哪些当前的潜在位置对于用真实目标以及确定真实目标的状态信息。通常,多目标状态检测器1106编译真实目标的列表。该列表可在每次分析的开始处(诸如在每一帧被接收到之后)被清除。通过分析之前目标的各个方面(包括之前目标的位置和当前预期位置),可将潜在位置添加到列表中。例如,可以以各种方式来比较之前目标与潜在位置(对应于当前帧中的潜在目标)。具体而言,之前目标的位置和潜在位置之间的距离。作为另一个例子,外插至当前帧的之前目标的位置可与潜在位置相比较。作为又一个例子,可分析之前目标的位置和潜在位置之间形成的光线。此外,触摸的预期位置可与潜在位置相比较以确定哪个潜在位置对应于“真实”目标。例如,如果预期表面1102的某个部分具有触摸(诸如请求选择“打开”、“取消”等的弹出框),则可将表面1102的该部分与潜在位置进行比较。如果潜在位置处于表面1102的预期具有接触的其中一个部分内,则可认为潜在位置对应于“真实”目标;否则,潜在位置可被确定为对应于“幻影”目标。对于该分析,多目标状态检测器1106可从应用程序1114接收指示表面1102的哪些部分预期具有触摸的信息。
例如,图20和21显示了动作2000,多目标状态检测器1106可采取该动作2000来分析潜在位置。为了分析潜在位置,潜在位置(对应于当前帧中的潜在目标)被分析以确定潜在目标中的一个或一些是否与之前目标“相关”或相对应。例如,可认为潜在目标和之前目标通过“祖先-后代”关系而“相关”起来。“祖先目标”描述在之前的处理循环(诸如最后一个照相机帧)中对应于真实目标的交点。“后代目标”描述当前帧中“相关”的目标,诸如之前目标延续到当前帧中的目标。来自之前帧的“祖先目标”可被选择(动作2002)。可从之前的处理循环(诸如最后一个照相机帧)中编译和保存零个或更多个“祖先目标”的列表。在当前正处理的新帧中,一种分析模式是确定是否这个当前帧中的潜在目标中的任何一个与来自最后一帧的“祖先目标”相匹配。这可指示交点均指的是2D平面上的单个真实目标,即使该目标可从一个帧到另一帧移动。如果在过去的和现在的目标之间存在对应关系,则我们可定义这两个目标之间的祖先-后代关系。
预期位置可在当前帧中为选定的祖先目标导出(动作2004)。可以以各种方式确定预期位置,诸如基于祖先目标的位置和之前帧中的祖先目标的瞬时速度来确定。可确定之前帧中的祖先目标的位置与对应于潜在目标的每个潜在位置之间的距离(动作2006)。可以丢弃与之前帧中的祖先目标的位置相距的距离大于预定阈值的潜在目标(动作2008)。预定阈值可以是几个变量(诸如照相机的帧速率、屏幕的分辨率和/或目标将以多快的速度移动的假定)的函数。例如,如果照相机的帧速率更高,则阈值会更低。此外,如果CCD照相机提供像素信息,则阈值可以是屏幕的真实物理分辨率的函数。例如,如果我们假定一个人以仅仅1英寸每帧(即,近似1/100秒)的速度移动其手指,并且屏幕的分辨率为50像素/英寸,则阈值近似为50个像素。
对于未丢弃的潜在目标,确定根据动作2004的祖先目标的预期位置与每个未丢弃的可能目标之间的距离(动作2010)。位置最接近预期位置的潜在目标被指定为祖先目标的后代(动作2012)。这就完成并延续了祖先-后代关系,该祖先-后代关系可在许多个照相机帧中延续。该处理为任何其他祖先目标重复(动作2014),并且选择下一个祖先目标(动作2016)。(动作2014在图21中示出,图21延续了在图20中开始的流程图。)
此外,可计算在后代目标和它的相关祖先目标之间形成的光线(动作2018)。例如,后代目标与其潜在位置的一组坐标(诸如xC和yC)相关联。类似的,祖先目标与它在之前帧中的位置的一组坐标(诸如xA和yA)相关联。可计算包括两组坐标(xC,yC;xA,yA)的光线。对光线的分析可辅助确定潜在目标是否是“真实”目标。例如,如果两个后代目标共享相同的光线,则祖先-后代关系向过去追溯得更远的目标(具有更长历史的后代)胜出,而其它后代作为可能的幻影而被删除。作为另一个例子,如果一后代目标与一孤儿(orphan)共享任何光线,该孤儿可以是还没有与任何祖先成功匹配的新交叉点,则该后代目标胜出并且那个孤儿可作为幻影被删除。
多目标状态检测器1106确定是否有任何后代目标共享相同的光线(动作2020)。如果有,则具有更长的历史的后代目标被保留在列表上,而其他后代目标被作为幻影删除(动作2022)。此外,多目标状态检测器1106确定任何后代目标是否与孤儿共享相同的光线(动作2024)。如果是,则后代目标被保留在列表上,而孤儿作为可能的幻影被删除(动作2026)。保留下来的后代目标被因此指定为“真实的”交点(动作2028)。
图22和23还示出了动作2200,多目标状态检测器1106可采取该动作2200来分析包括潜在的孤儿目标的潜在目标以及分析目标的移动。从真实目标的列表中选出一目标(动作2202)。确定选出的目标是否具有相关联的祖先(动作2204)。如果是,则确定后代目标相对于它的相关联的祖先的距离和方向(动作2206)。该距离和方向信息以及其他移动信息可被存储以便在未来的分析中使用。例如,可利用该距离和方向信息来确定目标在下一帧中的预期位置。
为了确定目标是否已经被移走,诸如用户将他的手指从屏幕上抬起,确定是否任何祖先不与后代相匹配(动作2208)。此外,确定是否已经发生了超时(动作2210)。如果是,则从列表中除去祖先目标(动作2212),并且除去的祖先被指定为“升上去的目标(target up)”(动作2214)。取决于取样速率,超时可包括预定的期满时间段,诸如特定数目个毫秒或特定数目个帧。可选择超时使得给予目标在非常短暂的暂停(诸如由于振动或传感器错误引起)之后重新出现的机会。可在目标不再被登记的预定数目个帧中测量超时时间段。例如,超时时间段可包括目标不再被登记的3个帧(或者在如果各帧以每秒100帧的速度流动则近似为1秒的3/100)。作为另一个例子,超时时间段可包括1个帧。
多目标状态检测器1106可确定可能目标的列表上是否有任何可能的目标还没有与祖先匹配(动作2216)。(动作2216在图23中示出,图23延续了图22中开始的流程图)。这指示已经获得了新目标(即,没有祖先的孤儿)。例如,用户可能仅仅将他的手指放到平面1102上。未匹配的可能目标被移动到真实目标的列表中(动作2218)并被指定为“降下来的目标(target down)”(动作2220)。
确定真实目标的列表上的每个条目之间的距离(动作2222)。如果任何距离少于预定的最小值(动作2224),则来自真实目标的列表的历史较短的条目被除去(动作2226)。预定的距离充当同一目标从一帧移到另一帧(诸如同一手指从一帧移到下一帧)的度量。可基于CCD照相机的当前帧速率来选择预定的最小值。例如,如果帧速率较低(例如,每秒20帧),则一个人可在一个帧中移动他/她的手指的时间量大于更高的帧速率。因此,对于更慢的照相机,预定的最小值(其充当修剪处理的一部分)会更大。对于以每秒100帧的速率工作的照相机,预定的最小值可以是100个像素(为4096像素的近似10英尺的表面选择的)。
该序列除去了与更确定的目标相接近的潜在无意的目标。例如,用户可能用他的手指触摸了屏幕的一部分,并且其衬衫袖口无意中接触了屏幕。为了除去或剪除这些无意目标,建立合格目标之间的最小距离,使得该列表中的一些条目可被剪除。具有较长历史的目标,诸如维持了较久的祖先-后代关系的那些目标,相对于具有较年轻的祖先-后代关系的目标而言是更优选的。这可实现这样的启发(heuristic),即在平面1102上最稳固且持续时间最长的目标是对用户最重要的目标。
尽管已经描述了本发明的各种实施例,但对于本领域普通技术人员来说很明显的是,在本发明范围内还可以存在许多实施例和实现方案。因此,本发明除了所附权利要求及其等价物以外,并不受其他限制。

Claims (18)

1.一种用于应用项目的历史导航的多目标检测和应用项目状态导航系统,该系统包括:
多个输出设备,其被配置成产生系统输出的各个输出部分,各个输出部分中的每个由整个图像的指定部分定义;
多个应用处理器,每个应用处理器被配置成处理各个应用程序中的一个或多个,每个应用处理器对所述指定部分做出响应并与相关联的各个输出设备相连接,以控制所述相关联的各个输出设备产生所述各个输出部分;
状态服务器,其与所述多个应用处理器进行数据通信以将所述整个图像的所述指定部分提供给所述应用处理器;
包括历史状态数据库的应用项目历史储存库,所述历史状态数据库包括:定义所述应用项目在预定状态时间的应用项目状态的应用项目状态数据,和表示所述预定状态时间的应用项目状态时间戳;和
导航接口系统,其被连接到所述应用项目历史储存库和所述状态服务器,所述导航接口系统包括:
存储接口输入程序、时间索引程序和输出程序的存储器,所述接口输入程序可操作地获得时间选择,所述时间索引程序可操作地从所述应用项目历史储存库获得与所述时间选择相对应的检索出的应用项目状态数据,所述输出程序可操作地将所述应用项目状态数据提供给所述状态服务器以在所述多个输出设备上呈递与所述时间选择相对应的应用项目状态的应用项目表现;和
连接到所述存储器的处理器,其执行所述接口输入程序、所述输出程序和所述时间索引程序。
2.如权利要求1所述的系统,其中,所述应用项目历史储存库还包括历史动作数据库,该历史动作数据库包括多个操作者的动作记录,所述动作记录包括:定义在预定动作时间对所述应用项目采取的动作的应用项目动作数据,识别对采取的动作负责的操作者的操作者识别符,和表示所述预定动作时间的应用项目数据时间戳,并且其中:
所述时间索引程序还可操作地从所述历史动作数据库获得检索出的应用项目动作数据;并且
所述输出程序还可操作地将所述检索出的应用项目动作数据与所述应用项目状态数据一起提供给所述状态服务器。
3.如权利要求1所述的系统,其中,所述应用项目历史储存库还包括历史环境数据库,该历史环境数据库包括环境数据和应用项目环境时间戳,所述环境数据定义所述应用项目在预定环境状态时间的环境状态,所述应用项目环境时间戳表示所述预定环境状态时间,并且其中:
所述时间索引程序还可操作地从所述历史环境数据库获得检索出的环境数据;并且
所述输出程序还可操作地将所述检索出的环境数据与所述应用项目状态数据一起提供给所述状态服务器。
4.如权利要求2所述的系统,其中,所述检索出的应用项目状态数据与不同于所述时间选择的应用项目状态时间相对应,并且其中,所述检索出的应用项目动作数据定义在所述应用项目状态时间和所述时间选择之间采取的应用项目动作。
5.如权利要求3所述的系统,其中,所述检索出的环境数据包括在所述应用项目的开发期间相对于所述输出设备而言局部捕获的音频信息、视频信息或这两者。
6.如权利要求5所述的系统,还包括:
输入检测器,其被设置来检测操作者激活并响应于该操作者激励而产生操作者激活信号;和
输入处理器,其与所述输入检测器和所述状态服务器进行数据通信以传递关于所述操作者激活信号的信息以便由所述状态服务器处理。
7.如权利要求6所述的系统,其中,所述检索出的环境数据包括在所述应用项目的开发期间相对于所述输出设备而言局部捕获的音频信息、视频信息或这两者。
8.如权利要求1所述的系统,其中,所述多个输出设备包括显示器,所述显示器包括平面并且还包括:
至少两个照相机,其相对于所述平面设置以获取所述平面上的多个同时存在的目标的图像;并且其中,所述存储器还包括逻辑,该逻辑用于接收指示所述多个同时存在的目标的图像的数据,利用三角测量确定包括所述多个同时存在的目标的位置和不与所述平面上的触摸相关联的目标的位置的潜在位置,并分析所述潜在位置以确定所述潜在位置中的哪些潜在位置包括所述多个同时存在的目标的位置。
9.如权利要求8所述的系统,其中,目标被登记为由所述照相机获取的图像中的遮挡;并且
其中,利用三角测量确定潜在位置的逻辑被配置为选择所述至少两个照相机中的一个并针对选择的照相机的每个遮挡:
确定与所述选择的照相机的遮挡相对应的光线;
确定与未被选择的照相机的遮挡相对应的光线;和
对与所述选择的照相机的遮挡相对应的光线和与未被选择的照相机的遮挡相对应的光线进行三角测量以确定所述潜在位置。
10.如权利要求1所述的系统,其中:
所述时间索引程序还可操作地执行以下操作:
获得根据用户预置文件而被过滤的检索出的应用项目状态数据;
从所述应用项目历史储存库获得检索出的应用项目动作数据;和
从所述应用项目历史储存库获得检索出的环境数据;并且
所述输出程序还可操作地执行以下操作:
将所述检索出的应用项目动作数据与所述应用项目状态数据一起提供给所述状态服务器,其中,所述检索出的应用项目动作数据根据所述用户预置文件而被过滤;和
将所述检索出的环境数据与所述应用项目状态数据一起提供给所述状态服务器,其中,所述检索出的环境数据根据所述用户预置文件而被过滤。
11.如权利要求8所述的系统,其中,分析潜在位置以确定多个同时存在的目标的位置的所述逻辑包括用于确定所述潜在位置是否与之前识别的目标相关的逻辑。
12.如权利要求11所述的系统,其中,所述照相机以顺序的图像帧提供信息;并且
其中,所述之前识别的目标包括在之前的帧中识别的目标。
13.如权利要求12所述的系统,其中,在之前的帧中识别的目标包括之前的帧中的目标的位置;并且
其中,确定潜在位置是否与之前识别的目标相关的所述逻辑包括用于将所述潜在位置与所述之前的帧中的目标的位置进行比较的逻辑,该逻辑包括:
用于确定与之前的帧中的目标的位置最接近的潜在位置的逻辑;和
用于将与之前的帧中的目标的位置最接近的潜在位置指定为与之前的帧中的目标相关的逻辑。
14.如权利要求12所述的系统,其中,所述多个同时存在的目标在当前帧中被感测;并且
其中,确定潜在位置是否与之前识别的目标相关的所述逻辑包括用于将所述潜在位置与当前帧中的目标的预期位置进行比较的逻辑,该逻辑包括:
用于确定与之前的帧中的目标的预期位置最接近的潜在位置的逻辑;和
用于将与之前的帧中的目标的预期位置最接近的潜在位置指定为与之前的帧中的目标相关的逻辑。
15.如权利要求11所述的系统,其中,分析潜在位置以确定多个同时存在的目标的位置的所述逻辑包括用于执行以下操作的逻辑:
确定在所述潜在位置和之前识别的与所述潜在位置相关的目标之间形成的光线;和
比较所述光线以确定是否有任何光线是相同的。
16.如权利要求15所述的系统,其中,分析潜在位置以确定多个同时存在的目标的位置的所述逻辑还包括用于执行以下操作的逻辑:
为光线相同的潜在位置确定哪个潜在位置与之前识别的目标之间具有更长的历史;和
将与之前识别的目标之间具有更长的历史的潜在位置识别为所述多个同时存在的目标中的一个。
17.如权利要求8所述的系统,其中,分析潜在位置以确定多个同时存在的目标的位置的所述逻辑包括用于确定所述潜在位置是否处于所述平坦表面的2维边界内的逻辑。
18.如权利要求8所述的系统,还包括用于执行以下操作的逻辑:
确定所述多个同时存在的目标的位置之间的距离;
将所述距离与预定的最小距离进行比较;
如果所述距离小于所述预定的最小距离,则确定所述多个同时存在的目标中的哪个具有较短的历史;和
删除具有较短的历史的多个同时存在的目标。
CN2006800431307A 2005-11-18 2006-11-17 多目标检测和应用项目状态导航系统 Expired - Fee Related CN101322091B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US11/282,349 US7599520B2 (en) 2005-11-18 2005-11-18 Detection of multiple targets on a plane of interest
US11/282,349 2005-11-18
US76400406P 2006-01-31 2006-01-31
US60/764,004 2006-01-31
US11/409,538 US8209620B2 (en) 2006-01-31 2006-04-21 System for storage and navigation of application states and interactions
US11/409,538 2006-04-21
PCT/IB2006/003994 WO2007074403A2 (en) 2005-11-18 2006-11-17 Multiple target detection and application state navigation system

Publications (2)

Publication Number Publication Date
CN101322091A CN101322091A (zh) 2008-12-10
CN101322091B true CN101322091B (zh) 2010-12-01

Family

ID=38053596

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800431307A Expired - Fee Related CN101322091B (zh) 2005-11-18 2006-11-17 多目标检测和应用项目状态导航系统

Country Status (2)

Country Link
US (1) US7599520B2 (zh)
CN (1) CN101322091B (zh)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7712657B1 (en) * 2007-11-13 2010-05-11 Diebold Self-Service Systems Division Of Diebold, Incorporated Automated banking machine that enables multiple users to conduct concurrent transactions at different areas of a display surface
JP4052498B2 (ja) 1999-10-29 2008-02-27 株式会社リコー 座標入力装置および方法
JP2001184161A (ja) 1999-12-27 2001-07-06 Ricoh Co Ltd 情報入力方法、情報入力装置、筆記入力装置、筆記データ管理方法、表示制御方法、携帯型電子筆記装置および記録媒体
US6803906B1 (en) 2000-07-05 2004-10-12 Smart Technologies, Inc. Passive touch system and method of detecting user input
US6954197B2 (en) 2002-11-15 2005-10-11 Smart Technologies Inc. Size/scale and orientation determination of a pointer in a camera-based touch system
US7629967B2 (en) 2003-02-14 2009-12-08 Next Holdings Limited Touch screen signal processing
US8456447B2 (en) 2003-02-14 2013-06-04 Next Holdings Limited Touch screen signal processing
US8508508B2 (en) 2003-02-14 2013-08-13 Next Holdings Limited Touch screen signal processing with single-point calibration
US7532206B2 (en) * 2003-03-11 2009-05-12 Smart Technologies Ulc System and method for differentiating between pointers used to contact touch surface
US7274356B2 (en) 2003-10-09 2007-09-25 Smart Technologies Inc. Apparatus for determining the location of a pointer within a region of interest
US7355593B2 (en) 2004-01-02 2008-04-08 Smart Technologies, Inc. Pointer tracking across multiple overlapping coordinate input sub-regions defining a generally contiguous input region
US7232986B2 (en) * 2004-02-17 2007-06-19 Smart Technologies Inc. Apparatus for detecting a pointer within a region of interest
US7460110B2 (en) 2004-04-29 2008-12-02 Smart Technologies Ulc Dual mode touch system
US7538759B2 (en) 2004-05-07 2009-05-26 Next Holdings Limited Touch panel display system with illumination and detection provided from a single edge
US8120596B2 (en) 2004-05-21 2012-02-21 Smart Technologies Ulc Tiled touch system
US20070165007A1 (en) * 2006-01-13 2007-07-19 Gerald Morrison Interactive input system
KR100866484B1 (ko) * 2006-05-17 2008-11-03 삼성전자주식회사 다접점 터치 센서를 이용한 손가락의 이동 감지 장치 및방법
JP4757144B2 (ja) * 2006-08-22 2011-08-24 キヤノン株式会社 座標入力装置及びその制御方法、プログラム
US9442607B2 (en) 2006-12-04 2016-09-13 Smart Technologies Inc. Interactive input system and method
EP2135155B1 (en) 2007-04-11 2013-09-18 Next Holdings, Inc. Touch screen system with hover and click input methods
CA2591808A1 (en) * 2007-07-11 2009-01-11 Hsien-Hsiang Chiu Intelligent object tracking and gestures sensing input device
US8400407B2 (en) * 2007-07-18 2013-03-19 Smart Technologies Ulc Touch panel and interactive input system incorporating the same
US8094137B2 (en) 2007-07-23 2012-01-10 Smart Technologies Ulc System and method of detecting contact on a display
US8432377B2 (en) 2007-08-30 2013-04-30 Next Holdings Limited Optical touchscreen with improved illumination
US8384693B2 (en) 2007-08-30 2013-02-26 Next Holdings Limited Low profile touch panel systems
US8405636B2 (en) 2008-01-07 2013-03-26 Next Holdings Limited Optical position sensing system and optical position sensor assembly
EP2250546A2 (en) * 2008-02-11 2010-11-17 Next Holdings Limited Systems and methods for resolving multitouch scenarios for optical touchscreens
WO2009137355A2 (en) * 2008-05-06 2009-11-12 Next Holdings, Inc. Systems and methods for resolving multitouch scenarios using software filters
US8902193B2 (en) 2008-05-09 2014-12-02 Smart Technologies Ulc Interactive input system and bezel therefor
US9063615B2 (en) * 2008-08-07 2015-06-23 Rapt Ip Limited Detecting multitouch events in an optical touch-sensitive device using line images
US9092092B2 (en) * 2008-08-07 2015-07-28 Rapt Ip Limited Detecting multitouch events in an optical touch-sensitive device using touch event templates
TWI402793B (zh) * 2008-10-01 2013-07-21 Quanta Comp Inc 影像處理裝置之校正裝置及校正方法
US8339378B2 (en) * 2008-11-05 2012-12-25 Smart Technologies Ulc Interactive input system with multi-angle reflector
US20100295782A1 (en) 2009-05-21 2010-11-25 Yehuda Binder System and method for control based on face ore hand gesture detection
US8570305B2 (en) * 2009-07-07 2013-10-29 Microsoft Corporation Smoothing of touch input
US8692768B2 (en) 2009-07-10 2014-04-08 Smart Technologies Ulc Interactive input system
US20110095977A1 (en) * 2009-10-23 2011-04-28 Smart Technologies Ulc Interactive input system incorporating multi-angle reflecting structure
KR101070864B1 (ko) * 2009-12-11 2011-10-10 김성한 광학식 터치스크린
US8427451B2 (en) * 2009-12-30 2013-04-23 Wacom Co., Ltd. Multi-touch sensor apparatus and method
US8977972B2 (en) 2009-12-31 2015-03-10 Intel Corporation Using multi-modal input to control multiple objects on a display
US8334842B2 (en) * 2010-01-15 2012-12-18 Microsoft Corporation Recognizing user intent in motion capture system
US8933884B2 (en) * 2010-01-15 2015-01-13 Microsoft Corporation Tracking groups of users in motion capture system
US9262041B2 (en) * 2010-03-16 2016-02-16 Nokia Technologies Oy Methods and apparatus for determining a selection region
TW201137704A (en) * 2010-04-23 2011-11-01 Sunplus Innovation Technology Inc Optical touch-control screen system and method for recognizing relative distance of objects
US8731240B1 (en) * 2010-08-05 2014-05-20 Lockheed Martin Corporation System and method for optics detection
CN102402339B (zh) * 2010-09-07 2014-11-05 北京汇冠新技术股份有限公司 触摸定位方法、触摸屏、触摸系统和显示器
TWI450155B (zh) * 2011-02-15 2014-08-21 Wistron Corp 應用於光學式觸控裝置之校正資訊計算方法及系統
US8600107B2 (en) 2011-03-31 2013-12-03 Smart Technologies Ulc Interactive input system and method
TWI454995B (zh) * 2011-08-11 2014-10-01 Wistron Corp 光學式觸控裝置及其偵測觸控點座標之方法
US8971572B1 (en) 2011-08-12 2015-03-03 The Research Foundation For The State University Of New York Hand pointing estimation for human computer interaction
US20130159027A1 (en) * 2011-12-19 2013-06-20 Amir Naor Methods and systems for travel booking and management
TWI479391B (zh) * 2012-03-22 2015-04-01 Wistron Corp 光學式觸控裝置及判斷觸控座標之方法
US9298071B2 (en) * 2012-07-12 2016-03-29 Cj Cgv Co., Ltd. Multi-projection system
TWI470512B (zh) * 2012-07-13 2015-01-21 Wistron Corp 光學觸控方法及其系統
US9424239B2 (en) * 2013-09-06 2016-08-23 Microsoft Technology Licensing, Llc Managing shared state information produced by applications
CN104714718B (zh) * 2013-12-16 2018-01-05 腾讯科技(深圳)有限公司 交互应用中标记可操作图标的方法和装置
US10013262B2 (en) 2013-12-16 2018-07-03 Tencent Technology (Shenzhen) Company Limited Method and device for adding indicative icon in interactive application
US9672349B2 (en) * 2014-07-11 2017-06-06 Microsoft Technology Licensing, Llc Multiple-key feature toggles for compliance
TWI536229B (zh) * 2014-08-07 2016-06-01 緯創資通股份有限公司 光學觸控面板及其偵測方法
CN107820593B (zh) * 2017-07-28 2020-04-17 深圳市瑞立视多媒体科技有限公司 一种虚拟现实交互方法、装置及系统
CN110278411A (zh) * 2019-05-27 2019-09-24 云南大学 一种天文望远镜图像远程监视系统及方法
CN113177980B (zh) * 2021-04-29 2023-12-26 北京百度网讯科技有限公司 用于自动驾驶的目标对象速度确定方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5454075A (en) * 1992-09-01 1995-09-26 Kabushiki Kaisha Toshiba Device and method for multiple display system having storage means for enlarged images
US6760749B1 (en) * 2000-05-10 2004-07-06 Polycom, Inc. Interactive conference content distribution device and methods of use thereof
EP1591879A2 (en) * 2004-03-02 2005-11-02 Microsoft Corporation System and method for moving computer displayable content into a preferred user interactive focus area

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4595990A (en) 1980-12-31 1986-06-17 International Business Machines Corporation Eye controlled information transfer
US4746770A (en) * 1987-02-17 1988-05-24 Sensor Frame Incorporated Method and apparatus for isolating and manipulating graphic objects on computer video monitor
US4988981B1 (en) 1987-03-17 1999-05-18 Vpl Newco Inc Computer data entry and manipulation apparatus and method
EP0450196B1 (en) 1990-04-02 1998-09-09 Koninklijke Philips Electronics N.V. Data processing system using gesture-based input data
JPH03292524A (ja) 1990-04-11 1991-12-24 Oki Electric Ind Co Ltd カーソル移動方式
US5341155A (en) 1990-11-02 1994-08-23 Xerox Corporation Method for correction of position location indicator for a large area display system
GB9201949D0 (en) 1992-01-30 1992-03-18 Jenkin Michael Large-scale,touch-sensitive video display
US5757358A (en) 1992-03-31 1998-05-26 The United States Of America As Represented By The Secretary Of The Navy Method and apparatus for enhancing computer-user selection of computer-displayed objects through dynamic selection area and constant visual feedback
US5496353A (en) * 1993-09-23 1996-03-05 Grandjean; Pierre A. End-of-life indication system for implantable pulse generator
US6594688B2 (en) 1993-10-01 2003-07-15 Collaboration Properties, Inc. Dedicated echo canceler for a workstation
US5395252A (en) 1993-10-27 1995-03-07 Burndy Corporation Area and edge array electrical connectors
JP3419050B2 (ja) 1993-11-19 2003-06-23 株式会社日立製作所 入力装置
US5686940A (en) 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
CA2140164A1 (en) 1994-01-27 1995-07-28 Kenneth R. Robertson System and method for computer cursor control
US5808604A (en) 1994-03-10 1998-09-15 Microsoft Corporation Apparatus and method for automatically positioning a cursor on a control
US5491743A (en) 1994-05-24 1996-02-13 International Business Machines Corporation Virtual conference system and terminal apparatus therefor
ATE261150T1 (de) 1994-06-09 2004-03-15 Corp For Nat Res Initiatives Hinweisvorrichtungsschittstelle
US5594469A (en) 1995-02-21 1997-01-14 Mitsubishi Electric Information Technology Center America Inc. Hand gesture machine control system
GB9505916D0 (en) 1995-03-23 1995-05-10 Norton John M Controller
US6176782B1 (en) 1997-12-22 2001-01-23 Philips Electronics North America Corp. Motion-based command generation technology
US6034652A (en) 1996-03-22 2000-03-07 Interval Research Corporation Attention manager for occupying the peripheral attention of a person in the vicinity of a display device
US5848396A (en) 1996-04-26 1998-12-08 Freedom Of Information, Inc. Method and apparatus for determining behavioral profile of a computer user
US6680714B2 (en) 1996-06-14 2004-01-20 Charles E. Wilmore Interactive multi-user display arrangement for displaying goods and services
US5886683A (en) 1996-06-25 1999-03-23 Sun Microsystems, Inc. Method and apparatus for eyetrack-driven information retrieval
US5850211A (en) 1996-06-26 1998-12-15 Sun Microsystems, Inc. Eyetrack-driven scrolling
US6002808A (en) 1996-07-26 1999-12-14 Mitsubishi Electric Information Technology Center America, Inc. Hand gesture control system
US5816820A (en) 1996-09-18 1998-10-06 Kelly Properties, Inc. Simulation generation system
US5790114A (en) 1996-10-04 1998-08-04 Microtouch Systems, Inc. Electronic whiteboard with multi-functional user interface
US5870079A (en) 1996-11-12 1999-02-09 Legaltech, Inc. Computer input device and controller therefor
US6072494A (en) 1997-10-15 2000-06-06 Electric Planet, Inc. Method and apparatus for real-time gesture recognition
KR100595920B1 (ko) 1998-01-26 2006-07-05 웨인 웨스터만 수동 입력 통합 방법 및 장치
JP4033582B2 (ja) 1998-06-09 2008-01-16 株式会社リコー 座標入力/検出装置および電子黒板システム
US6388680B1 (en) 1998-06-29 2002-05-14 Sony Corporation Multi-user extension mechanisms for client-server system
JP2000077702A (ja) * 1998-08-31 2000-03-14 Oki Electric Ind Co Ltd 半導体受光素子、半導体受光素子の製造方法および受光素子モジュール
US6215498B1 (en) 1998-09-10 2001-04-10 Lionhearth Technologies, Inc. Virtual command post
JP2002528798A (ja) 1998-10-21 2002-09-03 ファーエルゲー バーチャル レーザー システムズ ゲゼルシャフト ミット ベシュレンクテル ハフツング コンピュータ用入力装置
US6204852B1 (en) 1998-12-09 2001-03-20 Lucent Technologies Inc. Video hand image three-dimensional computer interface
US6147678A (en) 1998-12-09 2000-11-14 Lucent Technologies Inc. Video hand image-three-dimensional computer interface with multiple degrees of freedom
US6774868B1 (en) 1999-01-15 2004-08-10 Microsoft Corporation Method for tiling multiple displays to generate a large area display of moving data
EP1043671A3 (en) 1999-03-19 2003-07-16 International Business Machines Corporation Message broker providing a publish/subscribe service and method of processing messages in a publish/subscribe environment
US6545669B1 (en) 1999-03-26 2003-04-08 Husam Kinawi Object-drag continuity between discontinuous touch-screens
US6674447B1 (en) 1999-12-06 2004-01-06 Oridus, Inc. Method and apparatus for automatically recording snapshots of a computer screen during a computer session for later playback
US7822878B2 (en) * 2000-02-17 2010-10-26 Siemens Industry, Inc. Device, system, and method for the automatic configuration of a network communications device
JP3934846B2 (ja) 2000-03-06 2007-06-20 株式会社リコー 座標入力/検出装置、電子黒板システム、受光素子の位置ズレ補正方法及び記憶媒体
JP2001265516A (ja) 2000-03-16 2001-09-28 Ricoh Co Ltd 座標入力装置
AU2001268199A1 (en) 2000-06-05 2001-12-17 Altoweb Systems, Inc. System and method for integrating multiple applications
US20020039111A1 (en) 2000-06-27 2002-04-04 James Gips Automated visual tracking for computer access
JP5042437B2 (ja) 2000-07-05 2012-10-03 スマート テクノロジーズ ユーエルシー カメラベースのタッチシステム
US6803906B1 (en) 2000-07-05 2004-10-12 Smart Technologies, Inc. Passive touch system and method of detecting user input
JP2002033503A (ja) * 2000-07-13 2002-01-31 Oki Electric Ind Co Ltd 半導体受光素子
US20020075334A1 (en) 2000-10-06 2002-06-20 Yfantis Evangelos A. Hand gestures and hand motion for replacing computer mouse events
US7095401B2 (en) 2000-11-02 2006-08-22 Siemens Corporate Research, Inc. System and method for gesture interface
US6601021B2 (en) 2000-12-08 2003-07-29 Xerox Corporation System and method for analyzing eyetracker data
US6964022B2 (en) 2000-12-22 2005-11-08 Xerox Corporation Electronic board system
US6931596B2 (en) 2001-03-05 2005-08-16 Koninklijke Philips Electronics N.V. Automatic positioning of display depending upon the viewer's location
US6804396B2 (en) 2001-03-28 2004-10-12 Honda Giken Kogyo Kabushiki Kaisha Gesture recognition system
US20030009578A1 (en) 2001-07-03 2003-01-09 Apostolopoulos John G. Method and system for delivering streaming media to fixed clients or mobile clients with multiple description bitstreams
US7254775B2 (en) 2001-10-03 2007-08-07 3M Innovative Properties Company Touch panel system and method for distinguishing multiple touch inputs
US20030095154A1 (en) 2001-11-19 2003-05-22 Koninklijke Philips Electronics N.V. Method and apparatus for a gesture-based user interface
US7203911B2 (en) 2002-05-13 2007-04-10 Microsoft Corporation Altering a display on a viewing device based upon a user proximity to the viewing device
JP3837505B2 (ja) 2002-05-20 2006-10-25 独立行政法人産業技術総合研究所 ジェスチャ認識による制御装置のジェスチャの登録方法
US7023427B2 (en) 2002-06-28 2006-04-04 Microsoft Corporation Method and system for detecting multiple touches on a touch-sensitive screen
EP1567234A4 (en) 2002-11-05 2006-01-04 Disney Entpr Inc VIDEO INTERACTIVE ENVIRONMENT
US7050078B2 (en) 2002-12-19 2006-05-23 Accenture Global Services Gmbh Arbitrary object tracking augmented reality applications
FR2849511A1 (fr) 2002-12-26 2004-07-02 Jacques Albert Molho Album multimedia a ecran tactile
US6864901B2 (en) 2003-02-11 2005-03-08 Academia Sinica Real-time screen recording system
US6947032B2 (en) 2003-03-11 2005-09-20 Smart Technologies Inc. Touch system and method for determining pointer contacts on a touch surface
US7665041B2 (en) 2003-03-25 2010-02-16 Microsoft Corporation Architecture for controlling a computer using hand gestures
US20050068253A1 (en) 2003-05-30 2005-03-31 Gunnar Bartels System and method for extending the display viewing range of a computing device
US7391888B2 (en) 2003-05-30 2008-06-24 Microsoft Corporation Head pose assessment methods and systems
US7694223B2 (en) 2003-06-04 2010-04-06 Sony Computer Entertainment Inc. Methods and systems for recording user actions in computer programs
US8046701B2 (en) 2003-08-07 2011-10-25 Fuji Xerox Co., Ltd. Peer to peer gesture based modular presentation system
US20050052427A1 (en) 2003-09-10 2005-03-10 Wu Michael Chi Hung Hand gesture interaction with touch surface
FI117308B (fi) 2004-02-06 2006-08-31 Nokia Corp Eleohjausjärjestelmä
US20050212716A1 (en) 2004-03-25 2005-09-29 International Business Machines Corporation Wall-sized computer display
US7519223B2 (en) 2004-06-28 2009-04-14 Microsoft Corporation Recognizing gestures and using gestures for interacting with software applications
US7728821B2 (en) 2004-08-06 2010-06-01 Touchtable, Inc. Touch detecting interactive display

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5454075A (en) * 1992-09-01 1995-09-26 Kabushiki Kaisha Toshiba Device and method for multiple display system having storage means for enlarged images
US6760749B1 (en) * 2000-05-10 2004-07-06 Polycom, Inc. Interactive conference content distribution device and methods of use thereof
EP1591879A2 (en) * 2004-03-02 2005-11-02 Microsoft Corporation System and method for moving computer displayable content into a preferred user interactive focus area

Also Published As

Publication number Publication date
US7599520B2 (en) 2009-10-06
CN101322091A (zh) 2008-12-10
US20070116333A1 (en) 2007-05-24

Similar Documents

Publication Publication Date Title
CN101322091B (zh) 多目标检测和应用项目状态导航系统
US9575640B2 (en) System for storage and navigation of application states and interactions
CN101095110B (zh) 用于分布式信息呈现和交互的系统
Willett et al. Embedded data representations
Wang Using augmented reality to plan virtual construction worksite
US8225226B2 (en) Virtual control panel
US8636209B2 (en) System and method for interactive marketing to consumers
Zhang et al. RFID-assisted assembly guidance system in an augmented reality environment
US20100228602A1 (en) Event information tracking and communication tool
CN104106066B (zh) 用于查看和操纵在时间参考点处的产物的系统
US20110134204A1 (en) System and methods for facilitating collaboration of a group
CN101685295A (zh) 在工业自动化环境中根据境况和状态信息动态产生可视化图像
JP2008519340A5 (zh)
Lee et al. Design patterns for situated visualization in augmented reality
KR102311567B1 (ko) 전자지도 기반으로 생성된 마커를 통한 공간정보에서 복수 레이어상에 특정위치정보 열람서비스 방법
EP1955132B1 (en) Multiple target detection and application state navigation system
CN101510141A (zh) 触摸屏信息显示方法
US5617548A (en) Method of interacting with computer graphics
EP1628211B1 (en) Method for providing a user interface
Thomas et al. Investigating the Implementation of Augmented Reality in Logistics
Tan Development of an augmented reality based facility layout planning and optimization/Tan Chee Hau
Hau Development of an Augmented Reality Based Facility Layout Planning and Optimization
Mujber Development of VR-simulator software for manufacturing systems as a decision making and simulation tool
Southard Object-level parallelism in a virtual environment architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ACCENTURE INTERNATIONAL CO., LTD.

Free format text: FORMER OWNER: ACCENTURE GLOBAL SERVICES GMBH

Effective date: 20101203

Owner name: ACCENTURE GLOBAL SERVICES GMBH

Free format text: FORMER OWNER: ACCENTURE INTERNATIONAL CO., LTD.

Effective date: 20101203

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: SCHAFFHAUSEN, SWITZERLAND TO: LUXEMBOURG

Free format text: CORRECT: ADDRESS; FROM: LUXEMBOURG TO: DUBLIN, IRELAND

TA01 Transfer of patent application right

Effective date of registration: 20101203

Address after: Dublin, Ireland

Applicant after: ACCENTURE GLOBAL SERVICES Ltd.

Address before: Luxemburg Luxemburg

Applicant before: Accenture international LLC

Effective date of registration: 20101203

Address after: Luxemburg Luxemburg

Applicant after: Accenture international LLC

Address before: Schaffhausen

Applicant before: Accenture Global Services GmbH

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101201