专利名称:增强的基于相机的输入的制作方法
技术领域:
本公开一般涉及计算机输入,并且根据一个具体实施方式
,涉及基于相机的人机界面。
背景技术:
在用户界面的领域中,控件(或微件)是计算机用户与之交互的界面元素,例如窗口或文本框。在一些情况下,控件(例如虚拟按钮)可具有与该控件的物理对应物相似的功能和外观。典型地,用户使用计算机鼠标或键盘与控件交互。
发明内容
根据一个一般实施方式,在此描述的增强控件可以用于便于从项目组中选择项目,例如在构成字母表的字母组中选择字母,或者在大量的功能中选择功能。通过沿基准线确定这些项目朝向或对准这些项目,这些项目可以显示得不重叠、不妨碍或不使也显示在用户界面中的一部分目标不清楚,从而使用户能够直观地选择项目。可以通过将光标悬停在项目上持续设定的一段时期,或在光标定位在项目上方的同时通过选择诸如鼠标按键或键盘按键的物理控件,或通过其它方法,来出现选择。项目的选择或潜在选择可导致项目改变其外观(也就是I敫活的’或‘突出的’),从而沿基准线将项目彼此区分开并且减少选择错误。给基准线的定义或定位提供基础的目标可以自己与项目交互,例如在输入装置或其它用户输入的动作映射到由沿基准线对准的项目所围绕的化身的手臂动作的情况下。根据一个一般实施方式,计算机执行的处理包括在用户界面中相对于目标定义基准线,以及在不模糊目标的条件下显示与基准线对准的项目。该处理还包括基于接收对所显示项目其中一个的选择而输出所选择的项目。实施方式可包括一个或多个下列特征。例如,选择可以是基于光标的用户选择。可以确定目标在用户界面中的位置,其中基准线可以动态地定义为围绕所确定的位置的至少一部分。在用户界面中可以检测第二目标,其中基准线可以动态地定义为在与第二目标相对的目标的一侧上。可以检测所确定的位置的改变,并且可以基于所确定的改变相对于目标重新定义基准线。在另一例子中,基准线可以是直的、弯曲的、圆形的、多边形的或锯齿形的基准线,其中每个项目可以是文字数字式字符、符号、背景或名称。输出所选择的项目还可以包括突出所选择的项目,例如通过改变所选择的项目的颜色、不透明度或大小。改变所选择的项目的颜色、不透明度或大小还可以包括将所选择的项目的颜色、不透明度或大小改变为第一级别,并且将与所选择的项目邻接的项目的颜色、不透明度或大小改变为第二级另IJ。显示项目还可包括沿基准线均匀地分布项目。目标可以是用户界面中的空白区域或化身。基准线的起点和终点可以水平地或垂直地对准。在另外的例子中,定义基准线 还可以包括确定化身的控制部分的动作范围,以及在控制部分的动作范围内定义基准线,其中该基准线可以定义为沿控制部分的动作范围的外边缘。可以指定化身的第一或第二潜在控制部分为控制部分,指定的控制部分可以被活动起来,并且可以将控制部分指定从第一潜在控制部分交换到第二潜在控制部分,或从第二潜在控制部分交换到第一潜在控制部分。根据另一一般实施方式,计算机程序产品有形地具体体现在机器可读介质中。计算机程序产品包括这样的指令:当由机器读取时运行以致使数据处理设备在用户界面中相对于目标定义基准线,用以在不模糊目标的条件下显示与基准线对准的项目,以及用以基于接收对所显示的项目中的一个的选择而输出所选择的项目。根据另外的一般实施方式,一种装置包括处理器和用户界面。处理器在用户界面中相对于目标定义基准线。用户界面在不模糊目标的条件下显示与基准线对准的项目,以及基于接收对所显示项目中的一个的选择而输出所选择的项目。在再--般实施方式中,用户例如通过在他们身体周围的空间中摆动或有目的地
确定他们的一只手臂或两只手臂的位置来做示意动作。相机拍摄用户的图像,并且从图像确定用户的位置。使用该位置,在用户周围定义这样的检测区域:如果用户打算执行输入示意动作,那么用户的手或手臂将可能在该检测区域中。通过检查该定义的检测区域来检测用户的手或手臂,并且这些检测到的控制目标的位置或动作映射到计算机应用的输入。在一个实例中,并且基于对用户身体的能力和限制定义或建模的解剖模型,检测区域定义为在用户头部上方图像的区域中,并且向外延伸到用户体侧。检测到的控制目标的位置或动作可以被映射到光标、化身、表现、鼠标事件或其它元素,以与用户界面上的控件(例如,滚动条、按钮、虚拟键盘、下拉菜单或任何其它控件)交互。根据再一一般实施方式,在场景内用户的图像中定义围绕用户的检测区域,并且检测目标(例如手)在检测区域内的位置。另外,基于检测到的目标的位置与用户界面中的控件(例如虚拟键盘的按键)交互。与控件交互还可以包括选择字符。实施方式可包括一个或多个下列特征。例如,可以检测用户的约定示意动作(engagement gesture),其中可以基于检测约定示意动作来检测目标的位置。用户界面还可以包括用户的代表,其中控件可以包括与相对于代表定义的基准线对准的项目,并且在不模糊代表的条件下显示项目。用户的代表还可以包括这样的化身或光标,其中基于检测到的目标的位置使化身活动起来以模仿用户的动作。控件可以显示在用户界面内代表的上方或旁边。在再一例子中,定义检测区域还可以包括确定用户的头部或躯干的位置,以及基于所确定的头部或躯干的位置定义检测区域不包括躯干。可以使用图像分割来确定用户的躯干位置,并且可以使用面部检测确定用户的头部位置。可替换地,定义检测区域还可以包括确定用户手臂的到达范围,以及基于所确定的手臂的到达范围,定义检测区域不包括手臂不能达到的图像区域的至少一部分。相反地,定义检测区域还可以包括基于所确定的躯干的位置,确定目标不能到达的、图像的不能到达区域,以及定义检测区域不包括所确定的图像的不能到达区域。用户的手臂的到达范围可以是基于用户的躯干、头部或肩部的所确定的位置。在再一例子中,图像可以被裁剪且显示在用户界面内。用户的图像可以居中,其中可以基于将图像居中来裁剪图像。可以确定放大倍数,该放大倍数使得在居中的图像内用户可到达控件,其中可以基于放大倍数来裁剪图像。可以使用解剖模型确定放大倍数。可以检测用户的面部,可以基于检测到的面部确定用户的身份,并且可以基于用户的身份调整控件。可以检测第二目标在检测区域内的位置,并且可以基于检测到的第二目标的位置与用户界面内的第二控件交互,或可以基于第二目标的位置调整控件。在再一例子中,可以使用相机拍摄图像。检测区域可以成形为用户上方的弧形检测子区域,该弧形检测子区域与两个直线形检测子区域邻近,每个直线形检测子区域位于用户一侧。可以检测目标关于映射的基准线在检测区域内的位置。可以显示经分割的图像作为用户的代表。根据再一一般实施方式,计算机可读介质通过计算机程序产品编码。计算机程序产品包括这样的指令:当执行该指令时运行以使得计算机在场景内用户的图像中定义围绕用户的检测区域,并且检测目标在检测区域内的位置。计算机程序产品还包括这样的指令:当机器读取该指令时运行以使得数据处理设备基于检测到的目标的位置与用户界面中的控件交互。根据再一一般实施方式,装置包括处理器。处理器配置成适合于或可操作以在场景内用户的图像中定义围绕用户的检测区域,以及检测目标在检测区域内的位置。处理器还配置成基于检测到的目标的位置与用户界面内的控件交互。提供了该简短概要,以便能够快速理解通过本文件描述的各种构想和实施方式。通过参考下面的详细描述以及附图可以获得更加全面的理解。应该理解,可以采用其它实施方式并且可以进行改变。
图1是示出增强的基于相机的输入的概念示意图。图2是用于执行增强的基于相机的输入的装置的框图。图3示出了使用增强的基于相机的输入的示例性处理过程。图4示出了用于拍摄用户的图像的示例性系统。图5描述了使用图4的系统拍摄的用户的示例性图像。图6描述了在图5中示出的图像内定义的示例性检测区域。图7示出了通过对较大图像进行居中和裁剪产生较小的图像。图8示出了在包括两个候选用户的场景中在控制用户周围定义的检测区域。图9示出了示意动作到控件输入的示例性映射。
图10是使用示例性增强控件的用户界面的概念示意图。图11示出了包括目标和示例性增强控件的用户界面,该示例性增强控件还包括基准线(guide line)。图12至图19示出了示例性基准线布置以及基准线和目标之间的示例性关系。图20至图38示出了沿基准线对准的项目的示例性选择。图39示出了包括一个或多个示例性增强控件的用户界面。图40示出了使用基于相机的输入的其它示例性控件。图41示出了计算装置的外观的例子。图42是示出图41中所示的计算机的内部结构的框图。
具体实施例方式根据一个一般实施方式,在此描述的增强控件可以用于便于从项目组中选择项目,例如在构成字母表的字母组中选择字母,或者在大量的功能中选择功能。通过沿基准线定位或对准这些项目,这些项目可以显示得不重叠、不妨碍或不以其它方式模糊也显示在用户界面中的目标的一部分,从而使用户能够直观地选择项目。另外,使用在此描述的增强方法,用户可以通过在他们身体周围的空间中摆动或以其它方式定位他们的一只手臂或两只手臂而用示意动作表达。相机拍摄用户的图像,并且从图像中确定用户的位置。使用该位置,在用户周围定义这样的检测区域:如果用户打算给计算机应用输入命令,那么在检测区域中很可能发现用户的手或手臂。通过检查定义区域来检测用户的手或手臂,并且这些检测到的控制目标的位置或动作用作给计算机应用的输入。在一个实例中,并且基于定义或模拟用户身体的能力和限制的解剖模型,检测区域定义在用户头部上方并且向外延伸到用户体侧的区域中。检测到的控制目标的位置或动作可以被映射到光标、化身、代表、鼠标事件或其它元素,以与用户界面上的控件(例如,滚动条、按钮、虚拟键盘、下拉菜单或任何其它微件)交互。图1是示出增强的基于相机的输入的概念示意图。场景100包括用户101,用户101坐在机顶盒104前面的沙发102上,观看电视节目或听音乐。机顶盒104连接到电视105和相机106。作为与机顶盒104交互的一种方法,用户可伸展他的左手107超过他的头部109,并且使用相机106生成场景100的图像110。该图像可以是用静态相机拍摄的单个图像,或者是使用摄影机拍摄的一系列图像中的一个或多个图像。在场景100的图像110中,定义用户101周围的检测区域111。在该例子中,检测区域111包括用户101上方的弧形检测子区域111a,该弧形检测子区域Illa与用户101两侦_直线形检测子区域Illb和Illc邻接。检测区域111可以表示图像110的这样一部分:其中除了命令输入示意动作之外不太可能出现其它动作。例如,检测区域111可以不包括与用户的躯干或头部相关联的图像区域,因为这些区域会经历与输入示意动作无关的正常身体运动所引起的动作的很大部分。类似地,也可以不包括接近于躯干的这些区域:在用户101下意识地移动或仅仅调整他们自己的位置时,手臂或头部可能占据在该区域中。另外,用户101身体不能够到达的图像区域也可以不包括在检测区域111中。
因此,检测区域111占据图像的这样一部分:在该区域内检测到的控制目标将较可能表示用户101输入命令的故意示意动作。在这点上,在后续的检查检测区域111以确定控制目标是否位于该区域内的处理操作中,可以仅对于检测区域111或对于小于整个图像但包括检测区域111的那些图像部分来执行这些操作。因此,检测区域111可定义为相机106的视场内这样的区域:在该区域中用户101可以通过身体部分的动作来表明他们正在执行命令输入、发信号或做示意动作。然而,类似地,检测区域111可以定义为也不包括相机106的这样一部分视场:其中动作发生地如此频繁以至于难于辨别不打算作为命令输入的示意动作与打算作为命令输入的示意动作。在这点上,在调整(setup)或校准操作中,对于图像中的每个像素,像素图可以量化装置工作期间视场内每个单独的像素经历的动作数量。使用该像素图,检测区域可以通过将经历的动作数量小于特定最小阈值的那些像素排除在外定义,因为这些像素可能表示用户到达范围之外的背景或像素。类似地,检测区域可以定义为不包括经历的动作数量大于特定的最大阈值的那些像素,因为这些像素可能表示经历不表示命令输入的频繁动作的像素。不表示命令输入的示意动作或动作的例子可以包括,由呼吸导致的用户胸膛的动作,在对内容、身体语言反应时用户的眼睛或面部的活动,或者下意识的身体移动、颤搐或抖动。可以基于解剖模型(anatomical model)定义检测区域111。例如,可以估计或测量用户头部的高度或宽度,并且用户的手的正常到达范围可以估计为该测量值的三倍。使用该估计,弧形检测区域可以定义在远离用户胸部两倍到三倍该测量值的距离处。通过该估计,可以忽略小于该距离发生的、表示身体或躯干运动的动作,以及该距离之外发生的、表示不可能由用户手臂产生的背景运动的动作。在这方面,图像110包括不能到达区域113,该不能达到区域113包括图像110的那些这样的部分:基于解剖模型并假设用户的就座位置将保持相对固定而确定为手107不能够到达的部分。图像110还包括由躯干占据的躯干区域114,预期该躯干区域114包括这样的背景目标或用户动作:与检测到的其它目标(例如检测区域111内检测到的手107)的动作或位置相比,这些背景目标或用户动作与基于相机的输入不太相关或是基于相机的输入的干扰。由于相机106可以保持固定,因此检测区域111可以以直接方式映射到另一图像或其它图像上,例如后续图像。一旦将检测区域111映射到另一图像,那么就可以从其它图像中检测出手107在检测区域111内的绝对位置或相对位置。可替换地,因为动作可能比位置更易于检测到,因此可以检测出手107在检测区域111中的动作。另外,如果检测区域111被划分成或定义为多个离散的块,例如块112a至112g,那么可以输出哪个指示块最接近于手107或由于手107而最模糊的指示。例如,如果手107使块112e比使任何其它块更模糊,那么可以输出块112e是所选择的块的指示。该指示可以包括标识该块的唯一标识符。在用户界面114中,手107在检测区域111内的位置映射到与控件117交互的光标位置、代表(representation)或虚拟控制目标,例如化身116的虚拟手115。在控制控件117或与控件117交互中,手107在检测区域111内的运动可使化身116活动起来,从而使得与控件117的交互对于用户而言更直观并且视觉上愉快。通过与控件117交互,用户101选择项目119(字母“R”),该项目119出现在用户界面114的输出区域120中。
化身可以用图像110拍摄用户的身体外观的一部分来包装。通过该方法,对于用户101而言看起来似乎他们在用户界面114中操作装置或物理上与装置交互。换一种说法,相机106可以拍摄用户101的外观图像,并将该外观图像覆盖到构成化身的三维线框上,将用户101的外观赋予该化身。用户101的动作到化身116的动作的映射能够以1:1的关系出现,可以将动作镜像,可以采用加速,或者可以将化身的动作强制到特定的“锁定(snap to)”点。另外,在速度模式中,控制目标在检测区域内的位置还可以表示这样的速度:化身应该以该速度继续移动直到控制目标的位置改变。根据所期望的具体配置,例如,用户101的动作和化身116的动作可以相互镜像,以使得用户抬闻左手107会使化身的右手121抬闻。图2是用于实现增强的基于相机的输入的装置200的框图。简言之,除其它部件之外,装置200包括用户界面201、存储介质202、输入单元204和处理器205。使用装置200,增强的基于相机的输入可以用于便于与用户界面的控件交互,例如使得用户能够选择项目。与控件交互并不需要用户手握任何专门的目标,例如他们手中的回射器(retro-ref lector)、陀螺仪装置(gyroscopic device)或遥感控制器,而是直观地将手臂或手的动作映射到光标或其它输入。用户界面201是用于使得用户能够与装置或与由装置调用的应用交互的机构。用户界面201既可以影响输入也可以影响输出,使得用户能够操作装置或使得装置产生用户的操作的效果。装置200可以采用任何类型的用户界面201,例如图形用户界面(GUI)、声音用户界面或触摸的或触觉的用户界面。用户界面201可以配置成呈现视觉显示图像。例如,用户界面201可以是监视器、电视机、液晶显示器(IXD)、等离子显示装置、具有投影屏幕的投影机、自动立体显示器、阴极射线管(CRT)显示器、数字光处理(DLP)显示器或配置成呈现显示图像的任何其它类型的显示装置。用户界面201可以包括一个或多个显示装置。在一些构造中,用户界面201可以配置成显示与应用相关联的图像,例如由应用生成的显示图像,包括控件和诸如化身的目标。存储介质202存储和记录信息或数据,并且可以是光学存储介质、磁存储介质、闪存或任何其它存储介质类型。相机204是用于拍摄图像的装置,将图像拍摄为静止照片或一系列运动图像。相机204可以使用可见光谱的光或电磁频谱的其它部分,例如红外线。例如,相机204可以是数码相机、数码摄像机或配置成拍摄图像的任何其它类型的装置。相机204可以包括一个或多个相机。在一些例子中,相机204可以配置成拍摄与应用交互的目标或用户的图像。例如,相机204可以配置成拍摄在相机204的视场内物理上与应用交互的用户或人的图像。相机可以是立体相机(stereo camera)、飞行时间(time_of-flight)相机或任何其它相机。例如,相机204可以是能够对背景图像采样的图像检测器,以便检测用户的动作以及类似地,用户的示意动作。相机204可生成灰度图像、彩色图像或距离图像(distanceimage),例如能够生成距离图像的立体相机或飞行时间相机。立体相机可以包括在稍有不同的视点处获取图像的两个图像传感器,在立体相机中处理器比较从不同视点获得的图像以计算图像部分的距离。飞行时间相机可以包括生成光脉冲的发射器,该光可以是红外光,在飞行时间相机中光脉冲从发射器到目标并且返回到传感器的时间被测量以计算图像部分的距离。
装置200经过有线或无线路径电连接到相机204和用户界面201,并且配置成控制处理器205的操作以提供基于相机的输入。在一个构造中,装置200使用处理器205或其它控制电路以执行提供用于增强的基于相机的输入的应用。具体地,装置接收来自相机204的输入并且处理接收的输入,以计算用户的代表在用户界面201中的位置和运动,并且基于这些运动与控件交互。在一个示例的实施方式中,通过使用相机检测做示意动作的用户的图像来产生输入。例如,移动电话可以置于桌上并且可以是可操作用于使用面前(face-forward)的相机生成用户的图像。可替换地,使用相机204可以检测或识别示意动作,例如通过使用光流(optical flow)或一些其它方法检测“向左(tilt left)倾斜”示意动作,以及使用检测到的示意动作以向左移动用户的代表且选择位于控件的左侧的项目,或通过检测“向前和向右倾斜”示意动作,以向上移动用户的代表且移动到中心位置的右方,从而选择位于控件的上部右侧的项目。因此,相机204还可以包括或替换成能够检测装置200的角位置的一些其它类型的输入装置或模块,例如陀螺仪(gyroscope)、加速计(accelerometer)或光流追踪器(optical flow tracker)。在这点上,相机可以补充以倾斜传感器输入或用倾斜传感器输入替换,以执行用户期望的功能或命令。同样地,可以不使用相机而发生用户示意动作的检测。例如,通过以在用户界面上的控件上可视化的相同类型的笔划模式(stroke pattern)移动装置,用户能够以直接的、直觉的和视觉上愉快且刺激的方式控制相同的界面或应用。尽管已经将装置200描述为个人计算机(PC)或机顶盒,但是这样的描述仅仅是为了简明,并且还可构思其它实施方式或表现形式。例如,装置200可以实现为电视机、超便携式个人计算机(ultra-mobile personal computer, UMPC)、移动互联网设备(MID)、数码相框(digital picture frame,DPF)、便携式媒体播放器(PMP)、通用计算机(例如:台式计算机、工作站或笔记本计算机)、服务器、游戏设备或控制台,或包括处理器或配置成执行指令的其它控制电路的任何其它类型的电子装置,或包括用户界面的任何其它设备。图3示出了实时地或接近实时地使用增强的基于相机的输入的处理过程300。周围检测区域可以与用户重叠或可以不与用户重叠,包括用户的频繁移动部分。简言之,处理过程300包括在场景内用户的图像中定义围绕用户的检测区域,以及检测目标在检测区域内的位置。另外,处理过程300包括基于检测到的目标的位置与用户界面内的控件交互。更详细地,当处理过程300开始(S301)时,在场景内用户的图像中定义围绕用户的检测区域(S302)。简要地参考前述,图4示出了用于拍摄用户410 (从侧面示出)的图像的示例性系统400,并且图5描述了使用相同的示例性系统400拍摄的用户410 (从正面示出)的示例性图像500。具体地,系统400包括机顶盒401、相机402和电视机404。相机402拍摄其视场403内的某一场景的图像,其中该场景例如包括伸展的右手405、头部406、躯干407和用户410的两条腿409的一部分、用户410坐在其上的沙发411以及用户410和沙发411后面的
背景,例如墙壁。可以使用任何数量的图像压缩技术中一种或多种来压缩或存储图像500,该图像500是静止图像或来自一系列运动图像中的一幅图像。图像500可以是用于触摸检测的经分割的相机图像,也用于确定和显示用户界面中的用户代表。使用相机402拍摄图像之后,可以在网络上传输该图像。在用户执行约定示意动作之后,可以定义围绕用户的检测区域。约定示意动作激活或调用这样的功能:监控用于基于示意动作的命令输入的其它图像,以及忽略、过滤或排除随机的、无意识的身体动作或者没有定义命令输入的其它身体动作或背景动作。如此处始终使用的那样,“示意动作”意在指代通过人体的部分或整体或多个人体进行的非语言(non-verbal)交流形式,并且与诸如讲话这样的语言交流形成对照。例如,可以通过在第一位置、姿势或表情与第二姿势、位置或表情之间的移动、改变或变换来定义示意动作。示例性的示意动作例如包括:“打引号(air quote) ”手势、輔躬姿势、屈膝礼、面颊亲吻、手指或手动作、跪拜、头部摇动或移动、击掌、点头、悲伤的面部、举起的拳头、敬礼、击打或摇动动作、竖起大拇指的动作或手指指向示意动作。约定示意动作可以是保持预定量时间的、在显示器前面的相机跟踪区域中用手势表达的特定手势或手动作序列。一个示例性的手势是:这样一个手势:保持竖直位置且所有的手指和拇指充分地分开。另一例子是通过在用户面前伸展他们的手臂,并且在用户头部前方呈圆形地移动他们的手臂而完成的圆形手动作。实质上,约定示意动作向生成用户界面的装置说明用户已准备好发生更进一步的基于相机的输入。为了减少错误,约定示意动作可以是非典型的示意动作,例如在正常交谈期间不会下意识地用身体语言做出的示意动作,或在正常人类活动的通常表现中不会做出的示意动作。因而,从这两幅图像可以得到定义了用户的想法、意见、情感、交流、命令、示范或表情的示意动作。例如,用户的示意动作可以是单个或多个手指姿势;单个手姿势;单个手和手臂姿势;单个手和手臂以及身体姿势;双手姿势;头部姿势或姿态的改变;眼睛位置的改变;面部表情的改变;身体姿势或姿态的改变或任何其它表达性的身体状态的转换。为了简洁,用于执行相关示意动作的身体部分或多个身体部分通常称为“控制目标”。例如,用户可以使用他们的整个身体或用其他身体目标表达命令,在此情况下,他们的整个身体或其他身体目标可以是控制目标。用户可以通过眨眼睛、通过扩鼻孔或通过摆动手指,更加微妙地表达命令,在此情况下,眼睑、鼻子或手指可以是控制目标。单个图像中或两个图像之间用户的示意动作可以是启动或“约定”示意动作的表示。控制目标还可以是物理装置,例如红外手指光、回射器或遥控装置。存在从相机图像中确定用户示意动作的许多方式。例如,通过使用手、手臂、身体、头部或其它目标位置信息的示意动作分析和检测处理,可以检测“在空中画圆”或“将手挥到一侧”的示意动作。尽管示意动作可以包括两维或三维位置转移,例如当做出挥动手势时,但是在其它情况下示意动作包括没有伴随的位置转移的转换。例如,如果通过伸直五个手指、手掌向前用手发出“停止”信号,那么如果所有五个手指缩回成球并且手掌保持向前,则即使是手或手臂的整体位置保持固定,用户的姿势也发生改变并由此表达示意动作。可以使用启发式技术检测示意动作,例如通过确定手位置信息是否通过明确(explicit)的规则集。例如,如果下面的示意动作检测规则得以满足:(1)经过小于预定限度的时间间隔,水平位置的改变大于预定距离;(2)经过该时间间隔,水平位置单调地改变;(3)经过该时间间隔,垂直位置的改变小于预定距离;以及(4)在该时间间隔的结束时的位置比在该时间间隔的开始时的位置更靠近检测区域的边界(或在检测区域的边界上),那么可以识别“将手挥到一侧”的示意动作。一些示意动作采用以明确的次序被执行且满足的多个规则集,其中规则集的满足致使系统改变到应用不同规则集的状态。这样的系统可能不能够检测微妙的示意动作,在此情况下可以使用隐马尔可夫模型(Hidden MarkovModel),因为这些模型使得能够检测一系列具体动作,并且还考虑这些动作充分符合某一示意动作的整体可能性。除了身体、手臂或手的示意动作之外,可以从一个或多个图像中识别出手指指向示意动作。例如,“指向左”的示意动作可以用用户手指的指尖做出,并且通过分析手指图像来检测。指纹分析或其它方法可以用于确定指向指尖的方向。在其它示例性的实施方式中,并且如上所述,可以不使用相机来检测示意动作,例如在示意动作是语言示意动作的情况下或者使用倾斜传感器或加速计来检测时。在相机拍摄的用户图像中,用户的手臂可以被识别为做出从向下第一位置到伸开的手掌向前的第二位置的手势。用户执行该约定示意动作可以致使用户的代表连同控件一起显示在用户界面内。因为当执行该示意动作时,用户可能不在相机视场的中心,因此在约定之后可以调用重新对准、裁剪、重新确定中心或放大处理。在一个示例性实施方式中,图像500是抠像相机图像,例如所获得的位于彩色背景前面的用户410的图像。抠像处理识别图像500的那些颜色与背景颜色匹配的部分并且将那些部分分类为背景。图像500的那些颜色偏离背景颜色的部分较可能是用户410的部分,并且被分类为前景。在其它示例性实施方式中,图像500是深度键相机图像。典型地,通过能够确定深度或距离的相机来获得深度键相机图像,例如飞行时间相机(例如由生产的相机)或立体相机(例如由生产的相机)。对于一个不例性的飞行时间相机,红外发射器发射红外光脉冲,光学传感器测量光行进到目标并且返回到相机所花费的时间,并且基于该时间计算目标的距离。对于一个示例性的立体相机,多个光学传感器从多个视角拍摄场景的图像。于是立体相机能够比较多个图像,以确定多个视角之间目标位置的差异,并且基于该差异计算目标的距离。基于该距离将图像部分分类为前景和背景。分类处理可以包括将该距离与阈值进行比较,从而,如果该距离小于阈值则将这些部分分类为前景,并且如果该距离大于阈值则将这些部分分类为背景。分类处理还可以包括将该距离与背景模型进行比较,由此背景模型表示没有用户的场景部分(例如地板和家具)的深度。如果该距离短于模型的相应部分,则这些部分可以分类为前景,并且如果该距离等于或长于模型的相应部分,则这些部分可以分类为背景。在另一例子中,图像500使用背景颜色模型。例如,图像500可以与表示背景的期望外观的背景颜色模型进行比较。通过存储没有用户的场景图像可以获取背景颜色模型。如果相机图像的某部分的颜色与背景颜色模型的相应部分的颜色相似,那么就将该部分分类为背景。如果相机图像的某部分的颜色不与背景颜色模型的相应部分的颜色相似,那么就将该部分分类为前景。在另外的例子中,使用皮肤颜色模型对图像500进行分割。例如,可以将图像500与表示用户皮肤的期望外观的皮肤颜色模型进行比较。可以预先定义皮肤颜色模型,并且基于大量的人的图像中采样的皮肤颜色。还可以基于用户皮肤的图像来定义皮肤颜色模型。如果相机图像的某部分的颜色与皮肤颜色模型内的颜色相似,那么就将该部分分类为前景。如果颜色不与皮肤颜色模型内出现的任何颜色相似,那么就将该部分分类为背景。另外,图像500可以是动作图像,从而包括动作的图像部分被分类为前景,并且看起来静态的图像部分被分类为背景。通过动作划分相机图像可以包括获取一系列相机图像,计算连续图像之间的差异,以及将该差异与阈值进行比较。可以使用用于检测一个或多个图像中的动作的其它技术,例如光流。尽管上文已经描述数个用于产生经分割的相机图像的示例性方法,但是实际上可以构思其它方法或技术,并且这些其它方法或技术可以取代所述方法、作为所述方法的补充或结合所述方法使用。因为随后可以使用用户410的位置(“身体位置”)(除了别的之外)来定义检测区域的位置,用以定义控件在用户界面内的位置,或用以裁剪或放大图像,因此在图像500内检测身体位置。身体位置可以是使用面部检测确定的头部406的位置。面部检测可以扫描相机图像的各部分以检测与人面部外观相应的特征。身体位置还可以是:用户的手臂位置,使得所有的项目都在手臂容易到达范围内;躯干407、腿部409、重心或躯干中心的位置;或者该位置可以与用户410的其它部分或方面相关,例如肩部位置。身体位置可以定义为点、线或定义为包括用户身体的全部或一部分的区域或范围。为了计算效率,身体位置可以定义为简单的形状,例如方形或圆形。例如,在图5中,可以将位置501 (示出为加号(+))确定、计算或估计为身体位置。如图6所示,在用户410的图像500中定义用户410周围的检测区域600。一般地,检测区域表示检测到控制目标(也就是手或手臂)的图像部分,因此一般不包括图像500中控制目标不可能位于的的部分以及其中的背景、动作或其它因素使得难以发现控制目标或计算昂贵的图像部分。因此,将图像500例如分割成检测区域600、不可到达区域601和躯干区域602。由于用户躯干或头部这些身体部分运动频繁,因此检测区域600可以不包括与用户躯干或头部相关联的躯干区域602。躯干区域602还包括图像500的这些区域:该区域接近躯干,在用户410下意识地运动或仅仅调整他们自己的位置时手臂或手也可能占据该区域。另外,用户410身体不能够到达的不可到达区域601不包括在检测区域600中。剩余的检测区域600占据这样一部分图像:在该区域内检测的控制目标应当更可能表明用户410的故意身体运动或命令输入。在这点上,在检查检测区域600以确定控制目标是否位于该区域内的后续处理操作中,可以仅对于检测区域600或者对于小于整个图像但包括检测区域600的那些图像部分来执行这些处理操作。可以根据用户的动作范围对检测区域600定位。动作范围的确定可以基于复杂的解剖模型,例如模仿生物运动(bio-kinetic)限制或人类身体的能力并且将这些能力应用于用户的模型。在一些情况下,也可以使用较简单的拇指规则(rules-of-thumb),例如估计用户手臂可到达的距离等于用户头部的大小乘以某一乘数的方法。在其它情况下,可以基于用户身份(例如,使用面部识别而确定)以及存储在装置内关于用户的信息(例如,用户的年龄和性别)来估计用户手臂到达范围。在任何情况下,通过用户的一些方面来定义检测区域600的具体定位。照此,假定用户被检测区域600围绕。因此,可以将检测区域600定义为在相机的视场内这样的区域中:在该区域中对于用户410而言,通过身体部分的动作来表明他们在执行命令输入、发信号或打手势是可行的或可能的。然而,类似地,可以将检测区域600定义为在相机的这样一部分视场外:在该部分中动作发生得如此频繁以至于难于将有意图的命令输入示意动作与非命令输入动作区分开来。可以将基准线604定位在检测区域600中。例如,基准线604可以确定为平行于检测区域600的边界603的线(或与之具有其它的空间关系)。如下面更加详细的描述,可以沿基准线604设置可选择项目。例如,在图10中,沿用户界面1000内的基准线1009设置可选择项目IOlOa至ΙΟΙΟζ。
图7示出了通过对较大图像进行居中和裁剪来产生较小图像。具体地,类似于图像500的图像700已经以用户头部701的头部位置703为中心且被放大,以产生经裁剪的图像702。使相机图像的某些部分居中或放大能够使得控制目标(例如手704)的运动能够更加直观地或容易地映射到最后所得到的用户界面内的用户的代表上。可以在用户界面内显示裁剪的图像702或裁剪的图像702的放大视图。可以使用户的图像居中,其中可以基于将图像居中对图像进行裁剪。可以确定使得居中的图像内控件对用户是可到达的放大倍数,其中可以基于该放大倍数而进一步裁剪图像。可以使用解剖模型确定放大倍数。在图7中,对图像700拍全景或进行缩放使得身体位置相对于例如在用户界面中示出的控件的组件这样的一些项目进行定位。通过这样的处理可以模拟拍全景或缩放:拍摄全相机图像700,以及从全相机图像700中选择将放大或缩小以适合显示的经裁剪的图像702。将经裁剪的图像702按比例缩放以填充用户界面的显示图像,并且存储或丢弃全相机图像的剩余部分。如下文进一步详细地描述,坐标,例如身体位置703或手位置704的坐标,可以相应地映射到在用户界面上显示的用户的代表上的特征。检测区域可以包括用户上方的弧形检测子区域,该弧形检测子区域与两个直线形检测子区域邻接,每个直线形检测子区域位于用户一侧。尽管上文已经将检测区域描述和示出为马蹄形,但是还可以基于制造商的预先设置或用户设置使用其它形状,或者可以动态地确定检测区域的形状。例如,检测区域可以是圆形形状,仅仅直线形状或包括对称或非对称形状的任何其它形状。检测区域还可以定义多个非邻近区域,例如对于具有虚拟键盘控件的用户(例如参见图40)。图8示出了在包括两个候选用户的场景中,在控制用户周围定义的检测区域。具体地,一旦在图像800中检测到两个候选用户801和802时,检测区域804可以定义成考虑非控制用户802的手臂的动作范围805。换种说法,如果在检测区域804的某一部分中能够检测到非控制用户802(或非控制用户802的控制目标),那么就可以不将该部分从检测区域中排除在外。另外,可以针对用户界面800内每个用户定义检测区域,其中在那些不然就将出现检测区域重叠的图像区域处,裁剪(或者对于具体的处理操作,标记)每个检测区域的边界。结果是,检测区域804可以采用更加复杂的、动态定义的形状。可替换地,可以将较少计算花费的规则应用于图像,以便基于图像的主题或场景定义检测区域。例如,如果用户接近墙壁或其他人,那么在墙壁或其他人的相反侧,可以接近于用户定义直线形的或其它形状的检测区域。
可以将交互项目设置在检测区域804中。可以计算项目的位置和大小以使得所有的项目至少部分地设置在检测区域804中,并且当改变检测区域定义时,例如为了避免非控制用户802的手臂,可以重新计算,以使得所有的项目保持在检测区域内。可以沿检测区域804内的基准线设置项目,并且可以使项目的位置活动起来以沿基准线移动,使得所有的项目出现在经裁剪的检测区域内。检测目标(例如手)在检测区域内的位置(S304)。通过将先前定义的检测区域应用或叠在新图像上,可以检测在同一图像或另一图像或其它图像中,例如后续图像中的目标的位置。例如,检测区域可以定义在场景的区域内或图像的区域内。如果相机或用户在移动,那么可以从图像到图像地调整检测区域以补偿该运动。为了与用户界面中的控件交互,确定用户的控制部分的位置(“用户位置”),用于映射到用户界面内的光标、标记、化身或用户的其它代表。可以以若干方式表达控制目标的位置。例如并且如图9的图像900所示,用户902的手位置901可以表达为绝对或相对坐标(X,y),或者表达为角度Θ或离已知点904(例如身体位置)的角度Θ和绝对或相对距离d。另外,如果检测区域905被划分成多个子区域(例如子区域905a至905h)或与多个交互元素相关联,那么控制目标的位置可以表达为子区域的唯一标识符或者与手位置901重叠或最靠近手位置901的交互元素。在图9中,例如,因为手位置901重叠子区域905e,所以控制目标的位置可以简单地表达为与子区域905e相关联的标识符。还可以使用以一维、两维或三维表达目标位置的其它方法。确定用户位置可以包括分析经分割的相机图像,其中相机图像被分割成前景部分和背景部分。例如,可能表示用户的部分图像(例如像素)分类为前景,不可能表示用户的部分分类为背景。使用经分割的相机图像确定用户位置将基准线上方的图像部分考虑在内,并且选择地,可以包括基准线下方的短距离。可以将用户位置计算为区域内所有前景部分的平均位置。使用经分割的相机图像确定用户位置可以包括对区域内前景部分的数量进行计数,以及将该计数与阈值进行比较,并且如果该计数大于阈值则根据所找到的用户位置对用户位置分类。使用经分割的相机图像确定用户位置还可以包括将区域内的前景部分聚集成簇,选择簇(cluster),以及将用户位置计算为簇内所有前景部分(例如像素)的平均位置。计算平均位置可以包括计算加权平均,其中对于越在基准线上方的部分,该部分的权重越大。通过对越在基准线上方的部分加权越大,平均位置较可能是基准线上方的一部分用户。在一些实施方式中,系统可以配置成使得与用户界面交互的用户位置大部分是在基准线下方。在这些实施方式中,系统可以配置成使得用户能够通过将用户的手定位在头上并且在基准线上方而选择字符。另外,在这些实施方式中,通过对越在基准线上方的部分加权越大,用户的检测到的平均位置较可能是表示用户的手的指尖。在其它实施方式中,使用经分割的相机图像确定用户位置包括分析经分割的相机图像的前景部分的形状。分析前景部分的形状可以包括识别顶端前景部分,以及将用户位置计算为顶端前景部分的位置。可替换地,分析经分割的相机图像的前景部分的形状可以包括生成前景部分的轮廓,识别轮廓的形状特征,以及确定形状特征是否是手。可以将用户位置计算为手位置。另外,确定用 户位置可以包括分析相机图像以识别用户的手,以及确定手的位置。识别相机图像内的手位置可以包括将部分相机图像与表示用户皮肤的期望外观的皮肤颜色模型进行比较。如果部分相机图像的颜色类似于皮肤颜色模型内的颜色,那么就将该部分分类为皮肤。被分类为皮肤的部分聚集成部分簇,并且将总体位置和大小满足一个或多个标准的部分簇分类为手。可以使用识别相机图像内的手位置的各种方法,并且应该理解,可以采用其它手跟踪方法。用户界面可以采用区域集合。区域集合可以包括关于集合中每个项目的区域。确定每个区域的触摸状态可以包括确定是否有被分类为前景的经分割的相机图像(例如用户)的部分在区域内。在其它例子中,确定每个区域的触摸状态可以包括确定被分类为用户的手的、经分割的相机图像的一部分是否在区域内。该区域集合可以包括关于子集的每个项目的区域。区域集合可以基于用户的交互而变动(例如,在显示图像内移动)。显示用户的代表可以包括显示这样的化身:其外观可以由用户配置。例如,用户可以配置化身的性别、大小、面部特征和衣服。显示用户的代表可以包括检测用户的身份,以及显示与检测到的用户的身份相应的用户代表。可以使用面部识别检测用户的身份。与检测到的用户的身份相应的用户代表可以包括化身,其外观由用户配置。显示用户的代表可以包括显示相机图像,例如覆盖到化身上的用户的纹理图像。例如,从摄像机获取视频图像并且呈现在显示器中。视频图像可以包括用户的图像以及用户所在的房间(以及用户周围的其它事物)。包括子集的项目和文本的前景图形集合可以呈现在视频相机图像上,部分地遮住相机图像。显示用户的代表可以包括显示经分割的相机图像,其中相机图像分割成前景部分和背景部分。例如,很可能代表用户的图像部分被分类为前景,较不可能代表用户的部分被分类为背景。显示经分割的相机图像可以包括仅仅呈现分类为前景的部分。仅仅呈现分类为前景的部分可以包括生成表示不 透明度(opacity)的阿尔法通道(alphachannel),以及使用阿尔法通道将相机图像与背景图形集合组合,其中前景部分定义为不透明的,并且背景部分定义为透明的。因此,用户界面可以显示前景元素和背景元素。前景元素可以遮住背景元素。包括子集的项目和文本的前景图形集合呈现在前景元素和背景图形上,部分地与前景元素和背景元素重叠。可以通过应用生成另外的前景元素和背景元素或图形。基于检测到的目标的位置,与用户界面中的控件(例如虚拟键盘的按键)交互(S305),并且处理过程300结束(S306)。在一个例子中,控件是虚拟键盘或鼠标。在另一例子中,控件可以包括与相对于代表定义的基准线对准的项目,其中在不使代表模糊的条件下显示项目。再次返回到图9,控制目标的位置被映射到控制输入。例如,可以基于将手位置901 (表达为(x,y),Θ,θ+d,子区域或交互元素标识符或一些其它标记)输入到查找表、数据库或公式,来确定光标位置。例如,在用户界面910中,光标位置911可以表达为绝对或相对屏幕坐标(x’,y’),或角度Θ ’或远离已知位置(例如化身身体位置912)的角度Θ ’加距离d’。可替换地,如果用户界面910定义多个区域914,那么输出光标位置911可以标识为与输入子区域或交互元素标识符相应的区域的唯一标识符。在示出的例子中,因为区域914d相应于子区域905e,因此光标位置911显示在区域914d内。
于是,通过调用与光标位置相关联的功能性而发生与控件交互。例如,调用的功能性可以选择或挑选靠近光标位置的项目、运行应用、执行媒体集线器功能、触发鼠标事件、改变控件的状态或执行任何其它人机输入。输入位置参数(例如x,y,Θ或d)可以与输出位置参数相同或可以与之处于1:1的关系。例如,用户手臂的角度Θ可以与化身手臂的角度Θ ’相同或与之镜像。例如在用户界面920中,将光标位置921设置在相对于化身身体位置922的角度Θ处。因此化身(或光标)可以表示用户,并且可以位于控件的上方、下方或旁边。基于检测到的目标的位置,可以使化身活动起来以模仿用户的动作。可以检测用户的面部,可以基于检测到的面部确定用户的身份,并且可以基于用户的身份调整控件。可以检测检测区域内第二目标的位置,并且可以基于检测到的第二目标的位置与用户界面内的第二控件交互。上文的图1至图9示出了可以将基于相机的输入应用于增强的控件,例如通过将图像中拍摄到的用户手臂动作映射到用户界面内的光标或用户的其它代表。在这点上,下文中图10至图39示出了一种增强的控件的非限制性例子,其可以通过基于相机的输入使用,或者适配为接受基于相机的输入。不同控件也可以使用基于相机的输入,例如图40或其它图中示出的控件。图10是在状态1004a至1004d中示出的使用示例性增强的控件1002的用户界面1000的概念示意图,该增强的控件1002使用基于相机的输入。在状态1004a中,用户界面1000包括(除了其它之外)化身1006和设置在化身1006上方的控件1002,其中该状态1004a出现在检测约定示意动 作之前,或者在检测约定示意动作之后但在所定义的检测区域内检测到控制目标之前。控件1002包括基准线1009(在状态1004a中示为虚线),以及每一个都表示英文字母表中的字母的项目IOlOa至ΙΟΙΟζ。尽管将项目IOlOa至IOlOz示出为表示字母,但是它们也可以表示其它的,例如图标、功能、图像、目标、符号、应用、字符或者相似或不相似的项目的组或簇。在状态1004a中,因为还没有检测到用户输入(也就是,在图像中用户周围的定义区域内没有检测到用户的手或手臂),所化身1006描绘成处于松弛(neutral)或放松位置,其中化身1006的手臂IOlla和IOllb放松地沿靠着化身1006的躯干1012。化身1006可以具有类似人的外观,并且能够在虚拟世界里操纵(navigate)。化身的例子包括类似于由BLIZZARD出品的WORLD OF的视频游戏以及诸如由LINDEN RESEARCH,出品的SECOND的虚拟世界中的可以游戏的字符。可以将基于相机的输入映射到目标的控制部分,例如化身的手,用化身的动作在用户身体周围的空间中镜像或模仿他们的动作。通过用相机拍摄用户的纹理图像以及将该图像重叠到化身1006上,化身1006可以具有用户的外观。“项目”意在指代用户可能想从单元或元素集合中选择的任何单元或元素,包括但不限于与该项目类似或不类似的单元或元素。该集合可以包括少至没有项目或多至数百、数千或数百万个项目。在一个简单的例子中,项目是字母字符,并且项目集合包括英文字母表中的26个字母,或52个大小写字母。类似地,该集合可以由符号字符组成或包括符号字符,例如符号!、@、#、$、%、~、&、*、(、)、{、}、〈、>、:、;、‘、“、 、/、 、',或一般经由键盘或小键盘选择不可得到的其它符号。其它集合可以包括从名称、图标、功能或设置的列表中可以选择的名称,例如人名或地名,该设置例如是媒体设置(例如,“播放”、“音量调大”、“关闭”、“记录系列”等)。在这点上,项目可以包括数字(O至9);字母(例如,英文字母表的字母A至Z,或日文文字中的假名(kana)字符);文本符号(例如,空格“”,连字符句号,,);预定的或动态确定的文本短语(例如,com”,“.0rg”,“常见问题解答”、“主菜单”、“发送”、“接听电话”、“播放DVD”、“关机”等);名称;标题;时间;日期;操作、事件、处理或功能(例如,“保存游戏”、“载入游戏”、“开始应用”、“传输数据”、“媒体播放器”、“照片浏览器”、“漆刷”、“电子邮件”、“地图”);配置选项(例如,“640X480分辨率模式”、“800X600分辨率模式”、“专家模式”、“新手模式”、“训练模式”、“作弊模式”);或任何其它信息或信息组合。当在用户周围的定义区域内检测到用户的诸如手的控制目标时,出现状态1004b。该位置被映射到用加号示出的光标位置,其通过项目IOlOz所处的用户界面1000区域上方,并由此定义与鼠标悬停情形相类似的情形。一旦检测到鼠标悬停情形,就使化身1006的手臂IOllb活动起来以看起来似乎化身1006指向或抓取项目ΙΟΙΟζ。另外,当项目IOlOz的大小增大时它变得突出,如同邻近项目IOlOy真的变小一样。在项目IOlOz上方的鼠标悬停情形还导致输出项目ΙΟΙΟζ,例如通过在输出区域1014中显示项目ΙΟΙΟζ,或通过使用文本语音转换器以使用扬声器发出项目IOlOz的音。因此鼠标悬停情形可以将相关联的项目置于预先选择的、激活的或突出的状态,尽管项目的预先选择或突出没有严格地要求项目改变其外观。当用户在他们身体周围的空间中将他伸展的手移动到接近他的头部上方的定义区域内的位置时,并且当检测到该更加垂直的位置时,用户界面1000过渡到状态1004c。该手位置映射到控件1002的项目1010s上方沿基准线1009的新光标位置。使化身1006的手臂IOllb活动起来,并且跟随用户的手在空间中的运动。由于用户的代表接近项目或越过基准线1009,因此被接近的项目通过增大尺寸而变得突出,并且随着代表远离突出的项目行进,项目减小尺寸。
当用户选择物理按钮或执行另外的选择示意动作(例如用他的另一只手执行的示意动作,或通过改变他的手姿势)时,可以输出激活的项目1010s。也可以通过将代表悬停在字母上方持续预定时间段,或者通过在标签式光标位于字母上方的同时选择键盘按键,来出现选择。字母的选择(或潜在选择)可以导致项目变得突出,从而沿基准线将字母区分开。化身或用于定义基准线位置的其它目标可以自身与项目交互,如同用户的运动映射到化身1006的手臂IOllb的动作的情况一样。在状态1004d中,已经选择项目1010s。一旦选择,项目就返回到它们初始的非突出的情形。另外,化身1006的手臂IOllb返回到其邻近躯干1012的初始放松位置。例如在输出区域1014中输出选择的项目1010s。如各种状态所示,可以使用增强的控件,以便于从组成字母表的字母组中选择一个字母或多个字母。通过将这些项目沿基准线定向或对准,这些项目显示得不重叠、不阻塞或不以其它方式模糊化身或其它目标,从而使得用户能够直观地选择项目。使用图2所示的装置,可以调用、输出和使用增强的控件。简言之,该处理可以包括相对于用户界面内的一个目标定义基准线,以及在不使目标模糊的条件下显示以基准线对准的项目。另外,基于接收选择所显示项目中的一个项目可以输出所选择的项目。
更具体地,可以相对于用户界面内的一个目标定义基准线。这可以在当用户手动地表明应该显示增强的控件时、或者当确定项目是将输入的项目时(例如用户前进到文本输入区时)开始。因为,通过增大突出的项目的大小,可以使用增强的控件以沿着基准线显示更多的项目,其中如果所有的项目具有相同的尺度,那么该基准线通常将适合于用户界面内,因此,也可以在确定了在不使用增强的控件条件下所有的项目无法有效地显示在用户界面内之后开始基准线的定义。这样做,增强的控件为项目子集提供以充分的或有效的大小显示,以使得用户能够容易且可靠地选择特定项目。简要地参考前述,图11示出了用户界面1101,该用户界面1101包括目标1102(用虚线描述)和还包括基准线1104的控件1105。尽管在图11中将基准线1104示出为虚线,但是在其它示例性的实施方式中,基准线1104描述为实线或完全不描述。控件1105使得能够直观地选择或输出诸如字母1106的项目,同时使得能够在邻接、靠近、部分地或完全地由基准线1104界定或围绕或定义的区域中示出一部分或全部目标1102。当确定将输出或所选择的项目时,例如当用户选择要求文本数据输入的输入字段时,控件定位在用户界面1101中这样的位置:该位置使得能够显示项目1106和目标1102,并且由此相对于、对于、基于或关于目标1102定义。换种说法,目标1102的位置可以表示这样的锚位置:基准线1104和控件1105的其它元素可以关于该锚位置定向或对准,或其它元素可以相对于该锚位置定位。为了确定该锚位置,确定将通过其来定义基准线1104的目标和该目标的位置。在一些情况下,可以预先确定或预定义目标,这些情况例如连同化身、用户的图像、旋钮、图标、列表、数据表、数据图形、文本输入字段、另外的控件或微件、或用户界面1101的已知空白区域一起输出控件1105或者控件1105包括上述的情况。在其它情况下,当将输出控件1105时,动态地确定目标,这些情况例如在用户跳格到文本字段并且该文本字段用作目标的情况,在基于用户界面1101的当前状态对用户界面1101的空白区域定位的情况,在动态地确定屏幕上最大的、突出的、最鲜艳或最不鲜艳的目标成为目标的情况,或动态地确定焦点对准的元素、区域或窗口为目标的情况。在这些或其它情况中,检测目标1102的大小、形状、位置、边界或其它背景,并且关于这些检测到的背景定义基准线1104。例如,可以将基准线1104定义成与目标或一部分目标具有重叠或非重叠的关系、平分的关系、划分的关系、空间约束或限制的关系、或任何其它关系,例如基于目标1102的大小、形状、比例或解剖模型的关系。总之,除了其它之外,用户界面1101包括可以是用户代表的目标1102以及组成项目集合的项目1106。可以以动态的方式显示项目1106,使得项目1106显示的大小和位置使得用户能够便利地且可靠地选择每个项目。因为可能不能够使得每一个项目1106都适合于用户界面1101或以大尺寸与基准线1104对准,因此可以以较大的尺寸呈现项目1106的子集。图12和图13示出了示例性的基准线布置以及基准线和目标之间的示例性关系。在图12中,基准线1201是直的,并且定义成与目标1202重叠,或划分目标1202的顶部三分之一,或使目标的头部1204与目标1202的躯干1205分开。在图13中,基准线1301是弯曲的,并且定义成顶部距目标1302上方某个像素的距离,或者不使目标1302变模糊,或者在目标1302的手臂1304(或其它控制部分)的动作范围内。
可以相对于目标定义基准线,使得以基准线对准的项目在目标的到达范围内。如图13所示,弯曲的基准线1301形成弧形,使得化身1302的其中一个伸展的手臂1304能够到达任何单个项目或项目子集。在一些情况下,基于化身1302的手臂1304的长度可以确定弯曲的基准线1301的曲率半径,以使得当其中一个手臂1304处于伸展和头顶上的位置时,弯曲的基准线1301的位置相应于其中一个手臂1304的自然摆动。在其它情况下,可以基于输入装置的范围(例如,倾斜传感器的倾斜角度的范围,或视频游戏控制器上方向键的运动范围)确定弯曲的基准线1301的曲率半径。在其它情况下,基于用户的动作范围(例如,根据用户手臂的长度)可以确定弯曲的基准线1301的曲率半径。确定用户的动作范围可以包括检测用户的身份(使用面部检测),以及基于特定用户的年龄、性别或关于用户的其它信息来估计该用户的动作范围。尽管已经将基准线描述为位于项目下方,其中光标在基准线上方移动以选择项目,但是可以是其它布局和配置。例如,基准线可以定位在可选择项目的上方,或可选择项目的侧面,并且可以水平地、垂直地或对角地朝向。除了图12和图13中示出的直的和弯曲的基准线之外,基准线可以采用锯齿形、圆形、多边形或任何其它形状。基准线的起点和终点可以水平地或垂直地对准,或者这些点可以不处于任何类型的对准中。基准线可以是圆形的和连续的,从而基准线没有受限的起点或终点(或没有出现起点或终点),或起点和终点是一致的。基准线自身可以是运动的或被活动起来的目标,使得沿基准线对准的项目自身恒定地或间歇地运动或活动。可以基于复杂的解剖模型确定动作范围,例如模仿生物运动限制或人体能力并且将这些能力应用于化身或用户的模型。还可以使用更简单的拇指规则,例如化身手臂可到达的距离等于化身头部的大小乘以乘数的估计方法。在任何情况下,通过目标的一些方面来定义基准线的具体定位、定向、对准、或构造。为此,可以说目标1302由基准线1301包围。基于目标的位置,可以动态地将基准线定义为围绕一部分已确定的位置。如果目标或目标的一部分位于圆周内,并且基准线定义为该圆周的任何一部分的弧线,那么可以将基准线视为围绕目标。例如如图13所示,如果延伸的话,那么基准线1301将形成围绕大部分目标1302的圆周,除了表示目标1302的手指的、将伸到圆周之外的小区域之外。由于基准线的定义可以是动态的,因而可以实时地或接近实时地重新定义基准线,使得用户可以察觉或观察基准线的重新定义或重新定位。例如,当检测到没有其它目标邻近目标时,基准线可以初始地定义为在该目标上方,如图13所示。如图14所示,如果第二目标1401进入控制目标1404的左侧的用户界面1402内,那么可以对基准线1405重新定义或重新定位以远离第二目标1401,或者被动态地定义为在与第二目标1401相对的控制目标1404的一侧。第二目标可以相应于相机图像中的第二用户、通过网络控制的第二用户的化身、通过程序控制的非参与人物的化身或其它类型的目标。该特征可以有利地使增强的控件能够更加有效地应用于具有多个运动目标的非静态用户界面。定义基准线还可以包括确定化身的控制部分的动作范围,以及在控制部分的动作范围内定义基准线,其中可以沿控制部分的动作范围的外边缘来定义基准线。例如,可以基于化身的手臂长度确定垂直朝向的基准线1405的曲率半径,使得当手臂处于到一侧的伸展位置时,垂直定向的基准线1405的位置相应于化身的手臂的自然摆动。
在另一例子中,例如在项目的数量太大而不能与单个基准线相关联的情况下,或者在用户界面挤满其它元素的情况下,每个项目可能实际上表示多个项目或项目簇,或者可以将基准线划分成多个部分并且由此可以定义不连续的部分,或者可以定义多个基准线。在图15中,因为用户界面1500包括几乎占据其整个垂直长度的目标1501,因此基准线1502定义有非连续的部分或区域1504 (如虚线所示),从而有效地将基准线1502划分成基准线部分1502a和1502b。在图16中,因为待选择或输出的项目的数量大,并且可能使得难以在单个基准线上显示或选择项目或不直观,因此在用户界面内定义两个基准线1601和1602。尽管基准线1601和1602示出为具有相同的一般形状且平行,但是不是必须采用这两个特征。例如,基准线1601可以是一般沿目标1604的左侧垂直对准的锯齿形基准线,基准线1602可以是定义成与目标1604自身的躯干重叠的六边形基准线,或在所有侧完全围绕目标1604的圆形基准线。第一基准线上的项目的选择可以产生与第二基准线对准的项目的显示或定义,例如在第一基准线用于字母字符的选择的情况下,在这种情况下,一旦选定了字母字符,以第一基准线上显示的字母字符开始的名称(或其它项目类型)就在第二基准线上显示或输出。代替相对于目标来定义基准线,还可以基于用户界面的边界来定义或定位基准线。例如,基准线可以定义成从用户界面的一个边缘(或靠近一个边缘的点)延伸到相对的边缘(或靠近相对边缘的点)。可以基于用户界面的位置或其它部件,例如,相对于桌面图标、用户界面按钮、或虚拟世界内的目标,来定义或定位基准线。基准线可以是关于用户界面的边界对称的或不对称的。可以在模糊目标或不模糊目标的条件下显示与基准线对准的项目。如果每个项目的底部、中间、右侧、左侧、中心或其它部分在基准线上,或设置成平行于基准线上与项目相应的点,那么项目可以与基准线对准。例如在图11中,因为各个项目的一部分平行于基准线1104,所以即使项目1106a和1106z没有彼此严格地对准,项目1106a和1106z也都各自与基准线1104对准。当显示时,对准的项目1106整体上呈现基准线1104自身的通常形状或外表。图12还示出了与基准线1201对准的项目,因为基准线1201是直的,因此第一项目1206a和最后的项目1206z —般也彼此对准。如图17的用户界面1700所示,在每个项目的中心或其它内部点与基准线1701对准的情况下,每个项目可以绕其中心旋转,以给予所显示的项目不那么完全一样或者看起来比较随机化。还可以通过将项目偏移到基准线上方和下方(或平行于基准线的一些其它线)来进一步强调该随机化,使得一些项目出现在基准线上方而一些项目出现在基准线的下方,虽然成批的项目一般仍与基准线对准,或呈现由基准线定义的一般外表、感觉、方向、配置或布置。项目可以沿基准线均匀地分布或者也可以不均匀分布。例如,项目可以初始地均匀分布,然后当光标悬停在具体项目上且该项目调整大小时不均匀地重新分布。可替换地,默认或优选的项目可以沿基准线分布,以看起来与较不优选的项目相比较为突出。另外,通过模板或算术函数可以确定项目之间的间隔,或者该间隔可以是完全地随机化的。因为当显示目标时,目标或至少一部分目标是可见的,因此认为目标是不模糊的。换种说法,通过在不模糊目标的条件下显示项目,项目不会完全重叠或者妨碍目标的可见性。项目的一些特征,例如项目的透明性、颜色或线宽可以改变(或选择性地改变,例如在项目将重叠目标的地方),以使得目标差不多是可见的。在第一时间点可以在不模糊目标的条件下显示项目,例如初始地显示项目的时间,并且在早于或晚于第一时间点的第二时间点,项目可以模糊、遮蔽、使暗淡、妨碍或重叠目标或一部分目标。举例来说,图12和图13中分别示出了在不模糊各个目标的条件下显示的项目,因为各个目标的至少一部分在用户界面内是可见的。在另一例子中,图16示出了在不模糊相关联的目标的条件下显示的项目,因为任一项目都没有哪一部分重叠、妨碍或干预用户界面内相关联的目标的任何部分的可见性。例如使用鼠标或相机输入,可以接收对所显示的项目其中之一的选择。在一个实施方式中,用户界面可以定义围绕每个项目的这样的区域:其中如果在一个项目的相关联区域内检测到光标或目标的控制部分,那么就选择该项目。可以基于用户的交互动态地重新定义该区域,例如,基于鼠标悬停情形或者当检测到光标已经越过基准线时就增大尺寸,或者当光标远离、突出不同的项目或再次越过了基准线时就减小区域的尺寸。如下文更详细的描述,根据用户使用的实现选择的输入单元类型,可以经由多种方法出现项目的选择。例如,该选择可以是使用鼠标的、基于光标的用户选择,其中用户将鼠标的光标定位或悬停在将选择的项目上方(导致鼠标悬停事件),压下鼠标按键(导致鼠标按下事件),以及释放鼠标按键(导致鼠标释放(mouseup)事件)。也可以使用其它鼠标事件,以便使用鼠标选择项目,例如点击事件,连按(双击)事件,或仅鼠标悬停事件。使用键盘,用户可以从一个项目跳格到另一个项目,并且选择另外的键盘按键(例如,空格键或返回键)以选择突出的项目,或者用户可以开始键入字符以缩减期望的项目或识别期望的项目以进行选择。使用视频游戏控制器或手持式遥控器,用户可以压下方向键来改变突出的项目,或压下按钮来选择突出的项目。使用具有倾斜传感器的移动装置,用户可以使装置向左、向右、向上或向下倾斜,以向左、向右、向上或向下移动光标或其它指示器,直至突出期望的项目,然后压下按键或摇动移动装置以记录该选择。使用触摸屏装置,用户可以直接地触摸输出期望项目的用户界面X和Y坐标。使用语音界面,用户可以说出命令,例如“tab (跳格)”、“left (左)”、“right (右)”、“select (选择)”或者使光标在项目之间移动的其它相似语音命令,并且选择期望的项目。用户可以使用鼠标或视频游戏控制器来直接地控制化身。例如,使用视频游戏控制器,用户可以移动模拟控制棒来移动化身的手臂,从而将模拟控制棒的角度映射到化身的手臂的角度。用户可以使用动作拍摄装置来直接地控制化身,从而化身的手臂模仿用户真实的手臂动作。在此描述的增强的控件与基于控制系统的视频相兼容。具体地,相机可以检测图像,例如用户的图像,并且图像的部分、图像内的动作或从图像识别的示意动作可以实时地或接近实时地动态映射到光标。例如,围绕用户的检测区域可以定义为在场景内用户的图像中,并且可以检测目标(例如手)在检测区域内的位置。基于检测到的目标的位置与增强的控件交互。尽管为了简要省略了其它输入机制、方法或技术的进一步描述,但是可以说,可以使用任何想到的方法、技术或机制来自动地或手动地选择项目。
目标可以是用户的代表,例如化身。通过在用户界面内显示用户的代表,减少了训练需求,这是因为,用户可以容易地识别目标相对于项目位置的位置,并且可以快速地移动光标或化身的控制部分(例如手)的位置,以与期望的项目位置相一致。在此方面,光标或化身的控制部分的位置用于检测对用户界面中显示的项目的选择或“触摸”。在目标是化身的情况下,可以将化身的潜在控制部分指定为将被活动起来的控制部分。例如,控制部分可以是化身的一个或多个手臂、腿、肘、膝盖、手或手指;或化身的头部或躯干;或化身的身体特征,例如鼻子、眼睛、耳朵、肚脐、颈部或头发;或化身的衣服、佩戴物或其它穿着,例如衣服、珠宝或其它个人物品。随着接收到用户输入,指定的控制部分被活动起来以与项目交互或给出与项目交互的景象。在目标具有旋钮或开关外观的情况下,控制部分可以是从目标主体延伸的箭头,并且目标可以旋转到朝向项目的点。在目标包括粒子系统效应的情况下,例如火焰、等离子体、闪电的模拟或液体,粒子可以形成指向项目的延伸,例如闪电或水滴的变形,从而给出与项目交互的景象。例如在图13中,目标1302是化身,并且化身的手臂1304a指定为控制部分。随着用户移动或使他们的手臂在他们身体周围的空间中向左或向右运动,手臂1304a被活动起来以分别地向左或向右移动,并且基于项目接近手臂,或更具体地来说接近手臂上的手或手指,来选择项目。类似地,手1307也可以指定为控制部分。在相似的配置中,用户的单只手或双手在他们身体周围的空间中向上或向下的动作可以致使手臂1304a或手1305向上或向下运动,例如以与人的动作相合的方式。
因为在手臂1304a或手1305没有接近项目或基准线(或没有与之交互)的一些情况下,这些向上或向下的动作可以使手臂1304a或手1305远离项目,因此项目表面上的“选择”将不会导致输出项目。通过定义基准线使得化身大部分在基准线下方,通过将化身的手定位在化身的头部上方并且在基准线上方,可以出现由目标进行的字符或项目的选择。指定化身的潜在控制部分作为控制部分可以动态地交换到另外的控制部分。例如并且再次参考图13,如果用户交换他们用作控制目标的手臂,或向右移动单个手臂经过与项目1306η相关联的位置,那么控制部分就可以从左臂1304a转换到右臂1304b,使得左臂1304a能够沿基准线1301与项目1306η左侧的所有项目交互并进行选择,以及使得右臂1304b能够沿基准线1301与项目1306ο右侧的所有项目交互并进行选择。这样的特征可以增加用户体验的视觉愉悦性,因为代替仅仅使用简单的鼠标光标沿着项目选择项目,用户看起来像是控制以现实和直观方式反应的化身。如果出现交换,并且不再将左臂1304a指定为控制目标,那么使左臂1304a活动起来以返回到松弛的、休息的或放松的位置,例如沿目标1302的体侧的位置。相反地,这样的交换将导致右臂1304b被无痕迹地活动起来,以沿着目标1302的体侧从放松位置移动到之前由手臂1304a占据的位置,或邻近该位置的位置。继续该例子,如果用户沿基准线在由项目1306η和1306ο限制的空间之间来回地快速移动他们的手臂或双臂,那么化身将以愉悦的、幽默的或视觉上刺激的方式交替地使他们的手臂从目标1302的侧部摆动到目标1302的头上。在另一例子中,可以将化身的眼睛指定为控制目标,并且他们可以看起来可以沿基准线凝视或跟随项目,该基准线可以围绕目标。没有指定为控制目标的其它部分化身也可以被活动起来,例如看起来对突出的项目反应,或基于突出的项目将化身定位在期望的姿势或更加现实的姿势中。在一个实施方式中,可以使化身的嘴活动起来,以看起来似乎在说话或用语言表达所选择的或突出的项目,或者可以使化身的颈部或头部活动起来以伸长脖子,从而增加强调化身正在尽力看或考虑突出的目标的景象。以类似的方式,如果在用户界面中显示多个目标(例如,多个化身),那么当接近于突出的字母或增强的控制时,可以基于用户选择或基于任何其它因素换入第二目标作为控制目标。因此,控制部分或控制目标的指定可以从第一潜在控制部分或目标交换到第二潜在控制部分或目标,或从第二潜在控制部分或目标交换到第一潜在控制部分或目标。可以输出所选择的项目。输出所选择的项目还可以包括显示所选择的项目,输出所选择的项目的电子标记,或通过在用户界面内改变所选择的项目的颜色、不透明度或大小来突出所选择的项目。所选择的项目或所选择的项目的标记可以输出到另外的装置或存储介质以供后续使用。在图11中,所选择的项目1106r的颜色、不透明度或大小已经改变到第一级别或程度,从而使得所选择的项目11061■在沿基准线1104显示的所有项目中看起来最大,并且与所选择的项目1106r等距且邻接的项目1106p和1106t的颜色、不透明性或大小已经改变到第二较低级别或程度。仍然通过改变邻接项目的颜色、不透明度、大小或其它特征,用户能够较容易地识别光标的位置或所选择的项目的位置,增加直观特性和控制器的易于使用性。即使在没有明确地呈现光标图像的情况下,项目的颜色、不透明度、大小或其它特征也可以指示光标位置。因为增强的控件使得在给定时间点能够选择少量的项目,从而大部分项目保持未选择,所以可以减小未选择项目的大小以使得能够在用户界面内显示大量的项目。然而,增大考虑选择的某些项目的大小可能会增大考虑选择的项目的整体识别或可读性,从而提高控件的可靠性。换 种说法,通过减小未选择项目的大小,能够比分开地选择或触摸给用户呈现数量更多的可选择项目。如下面更加详细地描述,在用户界面1101的输出区域1107中可以连同之前选择的项目1106f以及预测项目1109 —起输出所选择的项目1106r,预测项目1109是基于当前选择的项目和之前选择的项目,使用预测或预言试探法动态地确定的。增强的控件提供了从项目集合中屏幕(on-screen)选择项目,例如从字母表中选择字母。显示用户代表,以使得代表可以便利地且可靠地触摸沿基准线或相对于代表动态定位的弧线对准的可选择项目。可以在代表的一部分与沿基准线的项目区域交互的情况下确定触摸。当代表的一部分进入触摸区域时,可以放大或突出接近该触摸区域的项目。尽管在上文中将基准线描述为相对于用户界面的边界或目标在二维中定义,但是也可以在三维中定义基准线。例如,并且如图18所示,基准线1801可以具有一般在与用户界面相同的X-Y平面内定义的第一基准线部分1802,以及一般在Z平面内定义的第二基准线部分1804,Z平面看起来相对于用户界面的X-Y平面正交地延伸。可以使用其它平面或轴。使用三维的基准线,能够用控件显示的项目数量会呈指数增长。例如,除了通过左右移动化身1806的手臂来选择基准线1801上的项目“O”之外,用户可以在空间中向前或向后移动他们的手臂来选择其它项目,当该其它项目被选择时在输出区域1809中显示,例如字符“”1807。基准线部分1802和1804这两者都定义在化身1806的手臂的三维方向上可以到达范围内。另外,尽管上文已经将基准线描述为包括离散的起点和终点,但是在其它实施方式中,基准线可以不具有起点和终点,或可以具有没有起点和终点的外观,或起点和终点可以一致。例如,图19中的用户界面1900包括用于选择项目1902a至1902g的圆形基准线1901。圆形基准线包括起点1905和终点1906,然而这些点相一致,且与任何其它点相比在基准线1901上没有突出或可见。另外,并且与一些其它示例性控件不同,项目1902a至1902g各自相应于将由应用调用的功能,如图标所示。例如,当化身1904选择地球图标1902a时,可以调用映射应用。同样地,可以以直观地且视觉上愉悦的方式使用在此描述的增强的控件,用于字符的选择以及用于调用更复杂的功能性。其它图标可以表示其它功能,包括诸如音量调大和调小功能的媒体功能、发送邮件功能、禁止控制功能或图像浏览功能。图20至图24示出了在沿基准线2002对准的项目集合2001中具体项目的示例性选择。在图20中,映射到且描述为化身的手的光标2004朝向感兴趣的项目2001r移动。在图21中,光标2004的位置越过基准线2002。越过基准线2002可以起动进一步的检测处理,该检测处理基于每个项目和光标2004之间的距离,选择或识别项目2001的子集2101。基于用户的手在围绕他们身体的空间中的位置来确定光标2004的位置,如在相机图像中检测一样。以更大的尺寸或字体比例显示项目2001的子集2101,便于用户更容易选择。可以响应于检测到光标2004已经越过基准线2002,出现项目2001的子集2101的选择以及项目2001的子集2101的放大显示,或者不管光标2004相对于基准线2002的位置为何都可以出现。当在基本位置2102检测到光标2004越过基准线2001或者检测到已经选择项目时,就可以生成用户反馈,包括例如声音、肖像和/或诸如振动的触觉输出。在图22中,用户选择感兴趣的项目2001r。突出子集2101使得用户能够选择包括感兴趣项目2001r的一般区域,“放大”该区域内的项目,以及可靠地且便利地选择感兴趣的项目2001r,该项目2001r表示字母“R”。可以使用鼠标事件、键盘或键区敲击、示意动作识另O、基于相机的输入或通过许多其它方法来出现选择。可以用许多方式检测基本位置2102的位置,该基本位置表示光标2004已经越过基准线2001的位置。例如,并且如图23所示,基本位置2102的位置可以确定为基准线2001上这样的位置:该位置是在检测出光标2004在基准线2001上方之后的时刻观察到的最靠近光标2004的位置,或最靠近诸如项目2001r的突出项目的位置。也可以使用其它方法检测基本位置。例如,可以在光标2004越过基准线2001时,或者在越过基准线2001之前和之后的时间使用光标2004的位置,检测基本位置2102的位置。例如,图24示出了端点2401以及端点2402,端点2401表示在越过基准线2002之前的时间观察的光标2004的位置,端点2402表示在越过基准线2002之后的时间观察的光标2004的位置。基本位置可以确定为由端点2401和2402定义的线段2404与基准线2001的交叉点。突出项目2001的子集2101可以包括确定沿组成子集2101的项目的基准线2001的位置。在一些实施方式中,选择位于接近基本位置2102的项目为项目2001的子集2101的将突出(例如,以大尺寸显示)的部分,使得接近基本位置2102的项目保持在或接近它们初始的非突出的位置,并且更加远离基本位置2102的项目向外移动,以适合项目2001的子集2101的尺寸增大。下面的方程(I)可以用于在已经突出子集2101之后确定不在子集2101内的项目的位置。Xi' = Xb+(X1-Xb).(Si'Si) — (I)在方程(I)中,Xi表示在初始状态下项目i沿基准线的位置-X i表示在放大状态下项目i沿基准线的位置;xb表示沿基准线的基本位置;Si表示在初始状态下项目i的基本尺寸;并且s' i表示在放大状态下项目i的尺寸。图25示出了在突出项目的子集之前的第一状态2501中以及在突出项目的子集之后的第二状态2502中项目的子集。例如,如果光标2505最初越过项目“S”下方的基准线2505 (使得基本位置2506与项目“S”相一致),那么项目“S”就保持在其初始位置,而项目“R”相对于其初始位置左移距离2507。因此,第二状态2502表明在突出显示后项目的缩放大小和位置。图26示出了在突出项目的子集之前的第一状态2601中以及在突出项目的子集之后的第二状态2602中项目的子集。例如,如果光标2604越过项目“Q”下方的基准线2605 (使得基本位置2606与项目“Q”相一致),那么项目“Q”将保持在其初始位置,并且项目“R”相对于其初始位置右移距离2607。因此,第二状态2602表明在突出显示后经缩放的项目。因而,用于选择具体项目的光标2604的位置可以取决于光标2604最初地越过基准线2605的位置。图27示出了在与突出项目子集相关联的状态2701至2704下项目的子集。具体地,图27示出了项目2710的第一子集2706至第三子集2708的选择和突出的概况。可以根据相对于第一子集2706和第二子集2707的光标2711的位置,分别对第二子集2707和第三子集2708定位。在第一状态2701中,项目2710反映它们初始的没有突出的大小和位置。在状态2702中,已经选择和突出项目2710的第一子集2706。在状态2703中,已经选择和突出项目2710的第二子集2707。在状态2704中,已经选择和突出项目2710的第三子集2708。在状态2702中,光标2711最初地越过项目“S”下方的基准线2712(使得基本位置与项目“S”相一致),项目“S”保持在其初始位置,并且周围的字母从它们的初始位置向外移。从状态2702过渡到状态2703,如果光标2711向右移动,那么选择光标2711的距离内项目2710的第二子集2707。在状态2703中,如果光标2711沿基准线2712移动以与放大的项目“T”相一致,那么项目“T”保持在其放大的位置,并且沿基准线2712进一步朝向右侧移动距离2715来突出项目“V”。如果在基准线2712上没有足够的空间用于某些项目,例如项目“W”至“Z”,那么这些项目就被“推出”基准线的末端,并且不显示。从状态2703过渡到状态2704,如果光标2711朝向基准线2712的右端继续移动,那么也可能没有足够的空间显示作为第二子集2707的一部分的另外的项目,并且可以组成第三子集2708 (作为第二子集2707的子集)。为了选择第二子集2707的右侧部分上的项目,例如项目“U”,或已经被“推出”基准线的末端的项目,例如项目“W”至“Z”,用户可以用光标2711再次越过基准线2712,并且第三次越过基准线2712以建立更靠近期望项目的新基本位置。另外,代替将项目“推出”基准线2712的右端,而可以将基准线左端上的项目“推出”,以容纳否则将被“推出”右端的项目的显示。在一些实施方式中,代替“推出”项目,可以根据基准线上可用的空间来减小项目大小,使得所有的项目显示在基准线上。在其它实施方式中,被“推出”基准线右端的项目可以再次出现在基准线左端。在采用连续的(例如圆形的)基准线的实施方式中,项目可以绕基准线推进。因此,在用户可以绕连续的基准线顺时针移动光标的圆形基准线的例子中,排除在项目的当前子集中以外的项目可以以比光标更小的角速度顺时针流动(它们为项目腾出空间以便当增加到子集时提高速度的)。在该例子中,对于项目绕基准线的一次回转,光标可以绕基准线移动多次回转。可以使用滚动(scrolling)以便于选择否则将被推出基准线末端的项目。滚动可以包括检测光标2711是否在基准线2712末端的预定距离内,并且将某一速度应用于项目位置。在相对于基本位置来计算项目位置的情况下(参见上文中的方程(I)),可以将速度应用于基本位置,并且因此可以移动项目。图28示出了示例性的速度函数,其中横轴2801表示沿基准线的位置,并且纵轴2802表示速度。使用该速度函数,当光标位置接近基准线末端时,通过施加速度来移动或转移项目,当光标位置在基准线的中间时,不移动或转移项目(因为速度是零)。图29示出了这样的示例性缩放函数,其用于基于光标位置相对于基准线的距离(由横轴2902反映),缩放项目子集中的项目的大小(由纵轴2901反映)。如曲线2904所示,项目(S' i)的大小因此可以是光标的当前位置的函数。通过参考点2905确定与非突出项目或所有项目(如果光标没有越过基准线的话)相关联的基本尺寸(Si),而线2906定义与突出项目相关联的最大尺寸。在一个示例性的实施方式中,曲线2904靠近点2905的斜率大约是1:1,因此随着与光标接近距离的减小,项目大小看起来线性地且按比例地增大。项目将开始增大接近最大尺寸,以随着光标变得逐渐接近于突出的项目而产生审美愉悦的过渡。图30和图31示出了增强的控件的缩放特征的使用,特别是出现在光标3001越过基准线3002时。高度3004表示光标3001的位置和基准线3002之间的距离,并且高度2005表示子集3007中的项目的大小,例如项目3006r。子集3007中项目的高度3005基于高度3004而缩放,使得项目在图30中看起来比在图31中更大,在图30中,光标3001已经越过基准线3002较小量,而在图31中,光标3001已经越过基准线3002更小的量。如上,可以使用基于相机的输入来确定光标3001的位置。图32和图33示出了示例性的基准线,其中突出了项目的子集。具体地,图32示出了示例性的基准线3201,其中以放大的方式显示项目3204的子集3202。选择项目3204的子集3202可以包括选择预定数量的项目,或基于项目的大小动态地一定数量的项目以包括在子集3202内。可以动态地选择包括在子集3202内的一定数量的项目,使得子集3202的项目跨越基准线3201的整个长度3207,或者它们可以跨越一部分基准线3201。如图32所示,也可以沿基准线3201显示不包括在子集3202中的项目3205a和3205b。可以基于子集内项目的大小改变子集3202中项目的数量,例如子集3007(图30中)显示五个项目,而子集3007 (图31中)显示三个项目,即使子集3007的宽度保持一样。通过以大尺寸显示子集的项目来突出项目可以包括以相同的大尺寸显示所有突出项目,如图32所示,或通过在子集内以这样的大小显示各个项目:该尺寸取决于各个项目相对于光标位置沿基准线的位置,如图25所示。图33示出了这样的示例性基准线3301:其中以变化的项目大小显示项目3304的子集3302。例如,在子集3302端处的项目3305p和3305t (分别表示字母“P”和“T”)的大小可以比子集3302中心处的一个项目或多个项目要小,例如比项目33051■(表示字母“R”)小。用变化的尺寸显示子集3302中的项目可以产生愉悦的审美外观,并且可以更加直观地使用增强的控件。如图33所示,也可以沿基准线3301显示不包括在子集3302中的项目3305a 和 3305b。以大尺寸显示子集3202和3302的项目可以包括使项目活动起来。使项目活动起来可以包括放大子集的项目以及经过短的时间段沿基准线平移项目的位置(例如,保持项目垂直于基准线)。可以使不包括在子集3202和3302中的项目活动起来以收缩尺寸并沿基准线朝外移动,从而为子集3202和3302 “腾出空间”。“推出”基准线末 端的项目可以简单地消失,或者可以被活动为以跌出基准线的边缘,或以视觉上刺激或幽默的方式消灭,例如通过燃烧、内爆、蒸发、爆炸、液化、压碎或其它技术。类似地,由于在基准线上产生空间而再次出现的先前被“推出”项目可以简单地重新出现,或者可以被活动为从用户界面的顶部落下返回到基准线,或以视觉上刺激或幽默的方式自发生成。在基准线不连续的情况下,可以使项目活动起来以移动越过不连续处。可以使项目活动为以高速移动越过间歇,或可以使用任何上述视觉效应而被活动为被“推出”和“重新出现”。同样地,可以被“推出”基准线的一端以重新出现在相对端上的项目活动为在基准线端点之间高速移动,或可以使用任何上述视觉效应而被活动为被“推出”和“重新出现”。图34描述了项目沿基准线的激活,其中“激活”或“突出” 一般地涉及确定项目以进行选择。确定项目以进行选择的系统可以使用滞后现象。选择可以包括确定当光标初始地越过基准线时初始选择的项目,其中初始选择的项目可以是其位置在距离上最靠近基本位置的项目。此后,为了减小当光标放置在两个相邻项目之间时项目之间非有意的闪烁,选择可以包括每当光标移动超出相邻项目之间的中点预定距离就确定新选择的项目。例如,由线3404r和3404s示出两个项目3402r和3402s沿基准线3401的位置,由线3405示出项目3402r和3402s之间的中点位置,并且距离3406表示预定义距离。例如,如果项目3402s (也就是字母“S”)是初始选择的项目,那么用户将光标移动到线3407左侧沿朝向项目3402r (也就是字母“R”)的方向超过中点3405的预定义距离3406,以选择项目3402r。如果随后选择了项目3402r,那么为了重新选择项目3402s,用户就将光标移动到线3409的右侧沿朝向项目3402s的方向超过中点3405的预定义距离3406。考虑由无意的身体颤动或输入单元的限制而导致的用户运动的影响,可以基于预期最大距离定义所述预定义距离,所述预期最大距离是在用户尝试保持静止的同时,可能预期光标摇摆或摇动的距离。当光标的位置在基准线下方时,或当没有找到光标或光标不在特定用户界面内或者不在由增强的控件占据的用户界面区域内时,可以取消选择项目。项目的选择还可以生成用户反馈,包括例如声音、肖像和/或诸如振动的触觉输出。显示子集的项目可以包括显示项目以使得它们的外观给用户提供关于它们的选择状态的反馈。例如,可以以唯一的颜色显示所选择的项目,或用诸如增大外观的视觉效果来显示所选择的项目。当项目处于选择状态持续的时间长于第一预定持续阈值时,可以激活或突出当前所选择的项目。在这点上,当光标保持在项目上方持续一时间段时激活该项目。如果所选择的项目保持被选择持续的时间长于第二预定持续阈值,就可以重复激活或取消激活。另外,当光标的位置是固定的且持续一时间段时,可以激活或突出项目。当平行于基准线的分量的位置改变小于预定距离阈值且持续时间长于预定时间阈值时,光标可以分类为固定的。例如,识别和激活最靠近光标位置的项目。如果光标保持分类为固定的且持续时间长于第二预定持续阈值,那么可以重复激活或取消激活。另外地,可以基于光标的位置之间且相对于基准线的距离来激活项目。例如,可以在该距离超过预定距离阈值时激活项目。在其它例子中,可以在选择项目之后通过另外类型的用户输入导致激活项目。例如,用户可以提供另外类型的用户输入以激活所选择的项目。在这些例子中,为了激活所选择的项目,用户可以触摸用户输入按钮(例如,在控制器上),提供听觉的输入(例如,说“激活”),执行另外类型的示意动作(例如,朝向显示器移动用于选择项目的手,或移动用户的另一只手到显示图像的另外部分以激活所选择的项目),或提供任何其它类型的用户输入。图35至图38示出了示例性的项目集合。在图35中,具有来自英文字母表的字符的项目3501包括项目3502,当激活或选择该项目3502时,该项目3502打开第二项目集合。当选择时,可以沿基准线3504出现具有项目3501或项目3501 —部分的第二项目集合,或第二项目集合可以替换基准线3504上的项目3501。从用于表示项目3502的符号中,用户可以直观地确定第二项目集合包括数字。图36示出了与基准线3602对准的项目3601。当选择图35中的项目3502时显示项目3601。一旦选择第二项目集合,移除基准线3602下方的光标或从显示项目3601的用户界面中移除光标就可以导致重新选择或重新激活项目3501。项目3601包括项目3604,当项目3604被激活时重新打开、重新激活或重新选择项目3501。从用于表示项目3604的符号中,用户可以直观地确定项目3501包括来自英文字母表的字符。图37示出了与基准线3701对准的项目3701,其中这些项目各自表示已知与标准电话键区上的按键相关联的数字和字母的结合。图38示出了项目3801,当选择项目3701的项目3702(参见图37)时显示该项目3801,并且该项目3801包括与标准电话键区上的数字键“7”相关联的字符和数字“7”的结合。使用图35至图38中示出的项目,可以提供基于相机的文本输入机制,例如通过顺序地将组成词的字母填入到文本字段中。一旦激活数字、字母、文本符号或预定文本,数字、字母、文本符号或预定文本就可以附到已经输入的字符串中。可替换地,项目(例如图35中来自项目3501的项目)的激活可以显示更多的项目,更多项目的项目激活可以将激活的字符附到字符串。其中一个项目可以是退格项目,以便于从项目串中去除最近的项目。
基于相机的文本输入机制可以包括组合字符以组成复合字符。用于日文文本输入的文本输入机制可以包括结合假名字符以组成日文汉字字符(以对于日本个人计算机键盘的用户来说熟悉的方法)。第一项目集合可以包括表示假名的项目。当激活假名项目时,将相应的假名字符附到字符串上。项目集合可以包括表示操作的项目,该项目在被激活时激活将串的最近假名字符转换成日文汉字的处理。将串的最近假名字符转换成日文汉字的处理可以包括显示候选的日文汉字项目的第二集合。激活日文汉字项目激活这样的处理:其中用激活的日文汉字替换串的最近假名字符。该基于相机的文本输入方法可以延伸到其它语言。用于日文文本输入的替换方法可以包括显示表示假名的第一项目集合。当激活假名项目时,显示第二项目集合。第二项目集合可以包括日文汉字,激活的假名组成该日文汉字的一部分。该集合可以大于上述的第二集合。该文本输入方法可以延伸到其它语言。文本输入机制可以包括确认项目集合中的项目。经确认的项目在被激活时激活处理,由此将字符串提供给应用。另外,文本输入机构可以包括预测(predictive)文本完成处理。预测文本完成处理可以检索字典以发现包括字符串的字符的最可能文本。可以在输出字段中显示该最可能文本。可以基于其中使用了文本输入机制的上下文来选择用于预测文本完成处理的字典。例如,当文本输入机构用于输入名称时,字典可以包括名称。根据应用的状态,应用处理可以确定用于用户界面的项目。激活项目可以将消息提供给应用处理。基于该消息可以控制该应用处理。图39示出了包括基于相机输入和示例性增强的控件的示例性用户界面3900。由于用户可以访问用户界面3900上各种文本输入字段,因此文本输入字段用作定义基准线的目标,并且适合于文本输入字段的项目显示为与基准线对准而不使文本输入字段本身模糊。用户可以选择与基准线对准的项目,以填充相关联的文本输入字段。尽管用户界面3900看起来同时示出多个可见的增强的控件,但是这样的模拟显示仅仅是示例性的,并且用于示出可能的控制位置、构造、对准和项目类型。例如在其它的用户界面中,每次将显示一个增强的控件。例如,如果用户访问文本输入字段3901,例如通过跳格到该字段,通过用鼠标光标选择该字段,或通过做出合适的示意动作,则相对于文本输入字段3901定义基准线3902,并且项目3904显示成与基准线3902对准,以使得不模糊文本输入字段3901。因为文本输入字段3901接受文本或字符数据,因此增强的控件自动确定字母字符项目3904适合于目标类型。当用户从项目3904中选择项目时,文本输入字段3901填充有所选择的项目。代替从基准线3902选择项目,用户还可以使用围绕化身3906定义的增强的控件3905,用于用项目填充各种字段。根据用户打手势以跳格或者访问用户界面3900中的其它字段,可以动态地定义其它增强的控件,输出项目用于选择。例如,访问社会保障号码字段3907可以致使在字段3907上方显示数字项目3909 ;访问性别字段3910可以致使在字段3910上方动态地输出性别项目3911 ;访问国籍字段3912可以致使在两个基准线3914和3915上显示国家项目3913,这两个基准线3914和3915分别在字段3912的上方和下方;访问婚姻状态字段3917可以致使在字段3917的右侧的基准线3910上显示婚姻状态指示器项目3919,其中由于空间限制、用户偏好或其它原因,基准线3910可以动态地定义在右侧;访问街道地址字段3920可以致使在字段3920上方的基准线3924上显示项目3921,项目3921包括数字以及沿基准线3924用字母字符替换数字的字母符号3922 ;以及访问状态字段3925可以致使在定义于字段3925上方的两个基准线3927和3929上显示包括状态名称的项目3926。虽然在上文中已经将增强的基于相机的输入描述为使用具体类型的控件,但是也可以使用其它类型的控件。例如,如图40所示,基于相机的输入可以用于与控件4001交互,该控件4001包括基准线部分4002(如上所述)以及虚拟的按钮部分4004。控件4005包括在化身4007的任一侧对准的多个按钮4006a至4006h。控件4008是这样的示意动作轮控件(gesture wheelcontrol):其中通过用户代表(在此情况下是手4010)选择交互元素(例如交互元素4009)致使交互元素进一步显示字符或由交互元素表示的其它项目。另外,控件4012是一个虚拟键盘,该虚拟键盘包括以QWERTY键盘构造布置在用户界面上的虚拟按键4014。控件4012可以不需要用户代表出现在用户界面上。例如,代替示出作为用户代表的手或化身,当空间中的用户控制目标占据与虚拟按键相应的检测区域内的位置时,虚拟按键4014中的每一个都可以点亮。控件4015是一个标准窗口应用桌面,包括可以使用代表4019与之交互的图标4016a至4016c以及功能元素4017。控件4020包括用户4021的一个代表,该代表可以是被交互元素4022a至4022c围绕的、用户的相机图像,这些交互元素分别表示向左滚动、向右滚动以及调用功能。使用基于相机的输入,用户4021的代表致使调用与交互元素4022a至4022c相关联的功能性。在该例子中,滚动功能使得用户能够从在用户界面底部显示的应用条中选择应用4024,并且调用所选择的应用。在显示的例子中,已经选择代表4021以调用照片浏览应用4024d。图41示出了计算装置4101的外在外观的例子,该计算装置4101还包括处理器和用户界面。处理器被配置、适配或可以操作为在场景内的用户图像中定义围绕用户的检测区域,并且检测目标在检测区域内的位置。处理器还被配置成基于检测到的目标的位置与用户界面内的控件交互。更详细地,计算装置4101的硬件环境包括:用于显示文本和图像以与用户交互的监视器4108,用于将文本数据和用户命令输入到计算装置4101的键盘4109,用于指向、选择和操作在监视器4108上显示的目标的鼠标4110,固定磁盘驱动器4111,可移动磁盘驱动器4112,磁带机4114,硬拷贝输出装置,计算机网络连接和数字输入装置4117。监视器4108显示这样的图形、图像和文本:其包括用于由计算装置4101使用的软件应用的用户界面,以及需要操作计算装置4101的操作系统程序。用户使用键盘4109输入命令和数据,以操作和控制计算机操作系统程序以及应用程序。鼠标4110可以是任何类型的指向装置,并且可以是操作杆、轨迹球、触摸板或其它指向装置。在诸如固定磁盘驱动器4111的计算机可读存储介质中,本地地存储有用于显示用户界面以及使得用户能够输入或选择文本、数字或从选项菜单中选择的软件。在另外的实施方式中,固定磁盘驱动器4111自身可以包括大量的物理驱动单元,例如独立磁盘的冗余阵列(“RAID”),或可以是物理上位于分立的计算单元中的磁盘阵列或磁盘驱动器场所。这样的计算机可读存储介质允许计算装置4101访问存储在可移动的和不可移动的存储介质中的计算机可执行处理步骤、应用程序等。计算机网络连接可以是调制解调器连接,包括以太网的局域网(“LAN”)连接,或诸如数字用户线(“DSL”)、电缆高速因特网连接、拨号连接、T-1线、T-3线、光纤连接或卫星连接的宽带广域网(“WAN”)连接。网络4106可以是LAN网络、公司或政府WAN网络、因特网或其它网络。计算机网络连接可以是有线或无线连接器。无线连接器的例子例如包括:INFRARED DATA无线连接器、光学无线连接器、INSTITUTE OF ELECTRICAL AND ELECTRONICS标准802.11无线连接器、无线连接器、正交频分复用(“0FDM”)超宽带(“UWB”)无线连接器、时间调制超宽带(“TM-UWB”)无线连接器、或其它无线连接器。有线连接器的例子例如包括:-1394连接器、通用串行总线(“USB”)连接器、串行端口连接器、并行端口连接器或其它有线连接器。可移动磁盘驱动器4112是用于从计算装置4101下载数据或将数据上载到计算装置4101的可移动存储装置。可移动磁盘驱动器4112可以是软盘驱动器、驱动器、只读光盘存储器(“CD-ROM”)驱动器、可记录光盘驱动器(“CD-R”)、可重写光盘驱动器(“CD-RW”)、闪存、USB闪存存储器、闪盘(thumb drive)、pen drive、key drive、高密度数字多功能光盘(“HD-DVD”)光盘驱动器、蓝光光盘驱动器、全息数字数据存储(“HDDS”)光盘驱动器或各种可记录的或可重写的数字多功能光盘(“DVD”)驱动器中的任何一种,例如可记录的 DVD( “DVD-R” 或 “DVD+R”)、可重写的 DVD( “DVD-RW” 或 “DVD+RW”)或 DVD-RAM。操作系统程序、应用和各种数据文件存储在磁盘中,这些磁盘存储在固定磁盘驱动器4111上或存储在用于可移动磁盘驱动器4112的可移动介质上。磁带机4114是用于从计算装置4101下载数据或将数据上载到计算装置4101的磁带存储装置。该磁带机4114可以是四分之一英寸盘式磁带(“QIC”)、4mm数字音频磁带(“DAT”)、8mm数字线性磁带(“DLT”)驱动器或其它类型的磁带。另外,尽管在上文中将计算装置4101描述为桌面PC,但是在另外的实施方式中,计算装置4101可以是膝上型计算机、工作站、中型计算机、大型机、嵌入系统、电话、掌上计算机或平板计算机、PDA、游戏装置或控制台、数码相框、电线会议装置或其它类型的计算机。图42是示出图41中所示的计算机的内部结构的框图。现在描述计算装置4101的示例性内部结构。计算环境包括:计算机中央处理单元(“CPU”)4201,其中处理包括操作系统或应用的计算机指令;提供通信界面以及用于在监视器4108上呈现图形、图像和文本的处理功能的显示界面4202 ;给键盘4109提供通信界面的键盘界面4204 ;给鼠标4110提供通信界面的指向装置界面4205或等效的指向装置;给数字输入装置4117提供通信界面的数字输入界面4206 ;给硬拷贝输出装置提供通信界面的硬拷贝输出装置界面;随机存取存储器(“RAM”)4210,其中计算机指令和数据存储在易失性存储装置中用于由计算机CPU4201处理;只读存储器(“R0M”)4211,其中用于基本系统功能的不变低级系统代码或数据存储在非易失性存储装置中,该基本系统功能例如是基本的输入和输出(“I/O”)、启动或接收来自键盘4109的按键输入;以及存储器4220或其它合适类型的存储器(例如,随机存取存储器(“RAM”)、只读存储器(“ROM”)、可编程的只读存储器(“PR0M”)、可擦写可编程只读存储器(“EPR0M”)、电可擦写可编程只读存储器(“EEPR0M”)、磁盘、光盘、软盘、硬盘、可移动磁带、闪存驱动器),其中存储包括操作系统4221、应用程序4222(包括增强的基于相机的输入应用4223,以及根据需要的其它应用4224)的文件和数据文件4225 ;经由计算机网络连接给网络提供通信界面的计算机网络界面。组成装置和计算机CPU4201通过计算机总线4227而彼此通信。根据另一一般实施方式,通过计算机程序产品而编码计算机可读介质。计算机程序产品包括这样的指令:当执行该指令时运行以使得计算机在场景内的用户图像中定义围绕用户的检测区域,以及检测目标在检测区域内的位置。计算机程序产品还包括这样的指令:当机器读取该指令时运行以使得数据处理设备基于检测到的目标的位置与用户界面内的控件交互。RAM4210与计算机总线4227交互,以在执行诸如操作系统应用程序之类的软件程序期间,将提供快速RAM存储给计算机CPU4201以及装置驱动器。更具体地,计算机CPU4201将来自固定磁盘驱动器4111或其它存储介质中的计算机可执行处理步骤载入到RAM4210的字段中,以为了执行软件程序。数据这样存储在RAM4210中:其中在执行期间通过计算机CPU4201访问数据。计算装置4101存储用于操作系统4221、应用程序4222的计算机可以执行代码,应用程序4222例如是文字处理、电子数据表、介绍、游戏或其它应用。尽管可以使用上述的实施方式提供基于相机的输入,但是还可以将根据本公开的这些功能实现为动态链接库(“DLL”)或者插入到其它应用程序,例如诸如MIGROSOTT Internet Explorer网页浏览器的因特网网页浏览器。计算机CPU4201是大量的高性能计算机处理器中的一个,这些高性能计算机处理
器包括INTEL 或AMD 处理器、POWERPG 处理器、MIPS 精简指令集计算机
(“Rise”)处理器、SPARC 处理器、ACORN#Risc机器(“ARM ,,)构架处理器、
HP ALPHASERVER 处理器或用于大型机的专用计算机处理器。在另外的配置中,计
算机CPU3301是多于一个的处理单元,包括在高性能工作站和服务器中的多个CPU构造,或大型机中的多个可扩展处理单元。操作系统4221 可以是MICROSOFT WINDOWS NT /WINDOWS 2 0 0 0 / WINDOWS X P 工作站;WINDOWSNT /WINDOWS :
2000/ WINDOWS XP服务器;各种UNTX 风格的操作系统,包括用于IBM 工作站和服务器的AEK 、用于SUN 工作站和服务器的SUNOS 、用于INTEL 基于cpu的工作站和服务器的LINUX 、用于HP 工作站和服务器的HP uxWORKLOAD MANAGER 、用于SGI 工作站和服务器的IRIX 、用于数字设备公司计算机的vax/vms、用于HP ALPHASERVER 基于计算机的GPENVMS 、用于POWERPC 基础工作站和服务器的MACOS : X、用于移动装置的Symbian OS ,
windows MOBILE 或 windows CE 、PALM 、NOKIA 丨os( “nos”)、oSE 或
EPOC ,或用于计算机的专用操作系统或嵌入系统。用于操作系统4221的应用开发或框架可以是:BINARYRUNTIME ENVIRONMENT FOR WIRELESS ( “BREW ” ); Java 平台、MicroEdition(“Java ME”)或Java2平台、Micro Edition( “J2MF,” ) ;PYTHON >FLASH LITE 或MICROSOFT .NET Compact。虽然图41和42示出了计算装置的一个可能实施方式,该计算装置执行程序代码或程序或处理步骤,并被配置成提供增强的控件以使得用户能够直观地且容易地输入文本、数字或从大量的项目中进行选择,但是也可以使用其它类型的计算机或实施方式。已经描述了大量的实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下可以进行各种修改。因而,其它实施方式都在所附权利要求的范围内。
权利要求
1.一种有形地具体体现在机器可读介质中的计算机程序产品,所述计算机程序产品包括指令,当机器读取所述指令时运行以使得数据处理设备: 在用户界面内确定化身的位置; 动态定义弯曲的基准线以围绕所确定的所述化身的位置的至少部分,进一步包括: 确定所述化身的手臂的动作范围,以及 在所述手臂的所述动作范围内定义所述基准线; 在不模糊所述化身的条件下,显示与所述基准线对准的字母数字字符; 接收对所显示的字母数字字符中的一个的基于光标的用户选择; 基于所述基于光标的用户选择使所述化身的所述手臂活动起来;以及 基于接收所述选择,突出所选择的字母数字字符,进一步包括: 将所选择的字母数字字符的大小增大至第一范围;以及 将所选择的字母数字字符的每侧的字母数字字符的大小增大至小于所述第一范围的第二范围。
2.一种计算机实现的方法,其包括: 在用户界面内相对于目标定义基准线; 在不模糊所述目标的情况下显示与所述基准线对准的项目; 接收对所显示的项目中的一个的选择; 基于接收对所显示的项 目的一个的所述选择,沿着所述基准线来动态重新定位未选择的项目;以及 基于接收对所显示的项目中的一个的所述选择来输出所选择的项目。
3.根据权利要求2所述的方法,还包括在所述用户界面内确定所述目标的位置,其中动态地定义所述基准线为围绕所确定的位置的至少一部分。
4.根据权利要求3所述的方法,还包括在所述用户界面内检测第二目标,其中动态地定义所述基准线为在与所述第二目标相对的所述目标的一侧上。
5.根据权利要求3所述的方法,还包括: 确定所确定的位置的改变,以及 基于所确定的改变相对于所述目标重新定义所述基准线。
6.根据权利要求2所述的方法,其中所述基准线包括直的、圆形的、弯曲的、多边形的或锯齿形的基准线。
7.根据权利要求2所述的方法,其中每个项目包括字母数字字符、符号、设置或名称。
8.根据权利要求2所述的方法,其中输出所选择的项目还包括突出所选择的项目。
9.根据权利要求8所述的方法,其中突出所选择的项目还包括改变所选择的项目的颜色、不透明度或大小。
10.根据权利要求9所述的方法,其中改变所选择的项目的颜色、不透明度或大小还包括: 将选择的项目的颜色、不透明度或大小改变到第一级别;以及 将与所选择的项目邻近的项目的颜色、不透明度或大小改变到第二级别。
11.根据权利要求2所述的方法,其中显示所述项目还包括沿所述基准线均匀地分布所述项目。
12.根据权利要求2所述的方法,其中所述目标是所述用户界面中的空白区域。
13.根据权利要求2所述的方法,其中所述基准线的起点和终点水平地或垂直地对准。
14.根据权利要求2所述的方法,其中所述目标包括化身。
15.根据权利要求14所述的方法,其中定义所述基准线还包括: 确定所述化身的控制部分的动作范围;以及 在所述控制部分的动作范围内定义所述基准线。
16.根据权利要求15所述的方法,其中沿所述控制部分的动作范围的外边缘定义所述基准线。
17.根据权利要求14所述的方法,还包括: 指定所述化身的第一潜在控制部分或第二潜在控制部分作为控制部分; 使所指定的控制部分活动起来;以及 将所述控制部分的指定从所述第一潜 在控制部分交换到所述第二潜在控制部分或从所述第二潜在控制部分交换到所述第一潜在控制部分。
18.根据权利要求2所述的方法,进一步包括接收对所述未选择的项目沿所述基准线动态重新定位的位置处的所述未选择的项目中的一个的选择。
19.根据权利要求2所述的方法,其中基于接收所显示的项目中的一个的所述选择,沿所述基准线动态重新定位未选择的项目包括:动态增大所述未选择的项目的显示大小,以及,以与增大所述未选择的项目的显示大小相一致的方式,动态增大所述未选择的项目的触摸区域,所述触摸区域为图像中的区域,其中,目标的展示被解释为对应所述触摸区域的项目的触摸。
20.—种系统,其包括: 一个或多个计算机;以及 计算机可读介质,其耦合到所述一个或多个计算机,所述计算机可读介质上存储有当被所述一个或多个计算机执行时使所述一个或多个计算机执行操作的指令,所述操作包括: 在用户界面内相对于目标定义基准线; 在不模糊所述目标的情况下显示与所述基准线对准的项目; 接收对所显示的项目中的一个的选择; 基于接收对所显示的项目中的一个的所述选择,沿所述基准线来动态重新定位未选择的项目;以及 基于接收对所显示的项目中的一个的选择来输出所选择的项目。
21.一种由计算机程序编码的计算机存储介质,所述程序包括被一个或多个计算机执行时使所述一个或多个计算机执行操作的指令,所述操作包括: 在用户界面内相对于目标定义基准线; 在不模糊所述目标的情况下显示与所述基准线对准的项目; 接收对所显示的项目中的一个的选择; 基于接收对所显示的项目中的一个的所述选择,沿所述基准线来动态重新定位未选择的项目;以及 基于接收对所显示的项目中的一个的选择来输出所选择的项目。
22.一种装置,其包括: 用于在用户界面内相对于目标定义基准线的设备; 用于在不模糊所述目标的情况下显示与所述基准线对准的项目的设备; 用于接收对所显示的项目中的一个的选择的设备; 用于基于接收对所显示的项目中的一个的所述选择,沿所述基准线来动态重新定位未选择的项目的设备;以及 用于基于接收对所显示的项目中的一个的选择来输出所选择的项目的设备。
全文摘要
本发明涉及一种增强的基于相机的输入,其中在场景内用户的图像定义围绕用户的检测区域,并且检测目标(例如手)在检测区域内的位置。另外,基于检测到的目标的位置与用户界面中的控件(例如虚拟键盘的按键)交互。
文档编号G06F3/01GK103218041SQ20131007250
公开日2013年7月24日 申请日期2008年7月25日 优先权日2007年7月27日
发明者埃文·希尔德雷思 申请人:高通股份有限公司