视频流中的对象建模和替换的制作方法

文档序号:17433624发布日期:2019-04-17 03:49阅读:245来源:国知局
视频流中的对象建模和替换的制作方法

本申请要求于2016年6月30日提交的美国专利申请序列号15/199,482的优先权,其中每个申请的优先权的权益均在此要求保护,并且每个申请通过引用整体并入在此。

本公开的实施例一般涉及视频流的自动图像分割。更具体地,但不作为限制,本公开提出了用于分割视频流以生成对象的模型并替换视频流内的对象的描绘的系统和方法。



背景技术:

电信应用和装置可以使用各种媒体(诸如文本、图像、声音记录和/或视频记录)来提供多个用户之间的通信。例如,视频会议允许两个或更多个人使用软件应用、电信装置和电信网络的组合彼此通信。电信装置还可以记录视频流以作为在电信网络之间的消息进行发送。

视频游戏通常使用户能够控制在显示装置上描绘的交互元素以与编程的交会内的预定对象交互。玩视频游戏的用户经常在游戏会话开始之前确定的游戏环境中控制预定的角色或者通常在包括一组预编程的事件或挑战的预定的游戏比赛中进行。

附图说明

附图中的各个附图仅示出了本公开的示例实施例,并且不应被视为限制其范围。

图1是示出根据一些示例实施例的联网系统的框图。

图2是示出根据一些示例实施例的视频修改系统的图。

图3是示出根据一些示例实施例的用于分割视频流的部分并基于分割来修改视频流的部分的示例方法的流程图。

图4是示出根据一些示例实施例的用于分割视频流的部分并基于分割来修改视频流的部分的示例方法的流程图。

图5是示出根据一些示例实施例的用于分割视频流的部分并基于分割来修改视频流的部分的示例方法的流程图。

图6是示出根据一些示例实施例的用于分割视频流的部分并基于分割来修改视频流的部分的示例方法的流程图。

图7是示出根据一些示例实施例的用于分割视频流的部分并基于分割来修改视频流的部分的示例方法的流程图。

图8是描绘根据一些示例实施例的示例移动装置和移动操作系统界面的用户界面图。

图9是示出根据一些示例实施例的可以安装在机器上的软件架构的示例的框图。

图10是呈现根据示例实施例的计算机系统形式的机器的图形表示的框图,在计算机系统内可执行一组指令以使机器执行在此所讨论的任何方法。

在此提供的标题仅仅是为了方便,并不必须影响所用术语的范围或含义。

具体实施方式

以下描述包括说明本公开的实施例的系统、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实现本发明主题的实施例。通常,公知的指令实例、协议、结构和技术不必详细示出。

尽管存在电信应用和装置以提供两个装置之间的视频通信或单个装置内的视频记录操作,但是电信装置通常在视频流的修改中受到限制。例如,电信应用通常在显示视频流的修改版本的同时采集视频流期间采集、测量、建模以及修改视频流的各方面的操作中受到限制。通常为编辑或修改视频所接受的方法不会在采集视频或正在进行视频通信时建模或修改视频或视频通信。类似地,存在视频游戏应用和装置以在一组可能的模拟环境和预定的可能交互内提供预编程的游戏环境和交互。视频游戏应用和装置通常受限于预编程的交互和环境,而不能在采集视频流期间修改视频流以及不能在包含未修改或修改的视频流的游戏环境内进行交互。因此,本领域仍然需要改进在装置、视频采集和修改操作和装置与视频游戏应用和装置之间的视频通信。

在一个实施例中,在装置上操作的应用包括用于在视频流被装置采集的同时基于视频流生成视频游戏环境和交互的组件。应用识别在视频流的视场内的手和连接到手的手指。应用基于针对手指识别的位置来检测手指方向。视场内的手和手指可以是装置的用户的手和手指。应用在客户端装置处呈现视频流(例如,视频游戏会话期间的视频流)并生成图形界面元素,图形界面元素与手指的方向对准并且替换视频流内的手的至少一部分和手指。在一个实施例中,图形界面元素与手指的方向对准,使得图形界面元素的目标点表示由应用确定的手指的方向。应用通过手指和手中的一个或多个的移动,改变手指的方向和图形界面元素的对应目标点,实现与视频流和视频游戏环境的交互。

以上是一个具体示例。本公开的各种实施例涉及可以由装置的一个或多个处理器执行以识别视频流的至少一部分帧的视场内的关注对象并且在视频流的采集期间建模和修改由装置采集的视频流内描绘的关注对象的描绘的装置和指令。在一些实施例中,在采集视频流的同时将视频流发送到另一装置。在这些实施例中,接收装置可以是视频游戏环境服务器,其发送表示游戏元素的数据,用于在视频流内呈现以及使用修改的视频流的图形界面元素进行交互。在一些实施例中,采集视频流的装置生成并渲染视频流内的游戏元素,以在采集视频流期间在视频流内创建游戏环境。

描述了视频修改系统,其识别并跟踪存在于视频流的至少一部分中以及通过包括视频流的一组图像的关注对象。在各种示例实施例中,视频修改系统识别并跟踪手和视频流中描绘的一个或多个环境元素。基于手指方向的移动和图形界面元素的对应目标点的用户输入,视频修改系统可以渲染与图形界面元素和一个或多个环境元素交互的游戏元素。视频修改系统渲染图形界面元素、游戏元素及其交互,并且使得在采集视频流期间呈现在视频流内经渲染的元素和交互。尽管相对于识别手指的方向和图形界面元素的目标点进行了描述,但是应理解如下所讨论的视频修改系统可以跟踪任何关注对象。

图1是描绘根据一个实施例的网络系统100的网络图,网络系统100具有被配置为通过网络交换数据的客户端-服务器架构。例如,网络系统100可以是消息传递系统,其中客户端在网络系统100内传送和交换数据。数据可涉及各种功能(例如,发送和接收文本和媒体通信,确定地理位置等)和与网络系统100及其用户相关联的方面(例如,传送通信数据,接收和发送通信会话的指示等)。虽然在此将网络系统100示为具有客户端-服务器架构,但是其它实施例可以包括其它网络架构,诸如对等或分布式网络环境。

如图1中所示,网络系统100包括社交消息传递系统130。社交消息传递系统130通常基于三层架构,其由接口层124、应用逻辑层126和数据层128组成。如相关计算机和因特网相关领域的技术人员所理解的,图1中所示的每个模块、组件或引擎表示一组可执行软件指令和用于执行指令的对应硬件(例如,存储器和处理器),形成硬件实现的模块、组件或引擎,并在执行指令时用作被配置为执行一组特定功能的专用机器。为了避免不必要的细节模糊本发明的主题,从图1中省略了与传达对本发明主题的理解没有密切关系的各种功能模块、组件和引擎。当然,附加的功能模块、组件和引擎可以与社交消息传递系统(诸如图1中所示的社交消息传递系统)一起使用,以便于实现在此未具体描述的附加功能。此外,图1中描绘的各种功能模块、组件和引擎可以驻留在单个服务器计算机或客户端装置上,或者可以以各种布置分布在若干服务器计算机或客户端装置之间。此外,尽管图1中将社交消息传递系统130描绘为三层架构,但是本发明的主题决不限于这种架构。

如图1中所示,接口层124包括接口组件(例如,web服务器)140,其接收来自各种客户端计算装置和服务器(诸如执行客户端应用112的客户端装置110,和执行第三方应用122的第三方服务器120)的请求。响应于所接收的请求,接口组件140经由网络104向请求装置传送适当的响应。例如,接口组件140可以接收请求,诸如超文本传输协议(http)请求或其它基于web的应用编程接口(api)请求。

客户端装置110可以执行传统web浏览器应用或已经为特定平台开发以包括各种移动计算装置和移动专用操作系统(例如,iostm、androidtmphone)中的任何一个的应用(也称为“app”)。此外,在一些示例实施例中,客户端装置110形成视频修改系统160的全部或部分,使得视频修改系统160的组件配置客户端装置110以执行与视频修改系统160的操作相关的一组特定功能。

在示例中,客户端装置110执行客户端应用112。客户端应用112可以提供向用户106呈现信息以及经由网络104进行通信以与社交消息传递系统130交换信息的功能。此外,在一些示例中,客户端装置110执行视频修改系统160的功能以在采集视频流期间分割视频流的图像,修改视频流中描绘的对象,以及实时发送视频流(例如,基于视频流的被分割的图像而修改的图像数据)。

客户端装置110中的每一个可以包括计算装置,计算装置至少包括显示器和与网络104的通信能力以访问社交消息传递系统130、其它客户端装置和第三方服务器120。客户端装置110包括但不限于远程装置、工作站、计算机、通用计算机、因特网装置、手持装置、无线装置、便携式装置、可穿戴计算机、蜂窝或移动电话、个人数字助理(pda)、智能电话、平板计算机、超极本、上网本、膝上型计算机、台式机、多处理器系统、基于微处理器或可编程的消费型电子产品、游戏机、机顶盒、网络pc、小型计算机等。用户106可以是人、机器或与客户端装置110交互的其它部件。在一些实施例中,用户106经由客户端装置110与社交消息传递系统130交互。用户106可以不是网络系统100的一部分,但是可以与客户端装置110相关联。

如图1中所示,数据层128具有便于访问信息存储库或数据库134的数据库服务器132。数据库134是存储诸如如下数据的存储装置:成员简档数据、社交图数据(例如,社交消息传递系统130的成员之间的关系)、图像修改偏好数据、可访问性数据和其它用户数据。

个人可以采用社交消息传递系统130注册以成为社交消息传递系统130的成员。在注册后,成员可以在社交消息传递系统130上形成社交网络关系(例如,朋友、关注者或联系人),并且与社交消息传递系统130提供的广泛应用交互。

应用逻辑层126包括各种应用逻辑组件150,应用逻辑组件150与接口组件140结合采用从数据层128中的各种数据源或数据服务取得的数据来生成各种用户界面。各个应用逻辑组件150可用于实现与社交消息传递系统130的各种应用、服务和特征相关联的功能。例如,社交消息传递应用可以采用一个或多个应用逻辑组件150实现。社交消息传递应用为客户端装置110的用户提供用于发送和接收包括诸如图片和视频的文本和媒体内容的消息的消息传递机制。客户端装置110可以访问和查看来自社交消息传递应用的消息达指定的时间段(例如,限定的或非限定的)。在示例中,消息接收者可以访问特定消息达预定义的持续时间(例如,由消息发送者指定),预定义的持续时间在首次访问特定消息时开始。在预定义的持续时间过去之后,消息被删除,并且消息接收者不再能够访问该消息。当然,其它应用和服务可以分别体现在它们自己的应用逻辑组件150中。

如图1中所示,社交消息传递系统130可以包括视频修改系统160的至少一部分,视频修改系统160能够在客户端装置110采集视频数据期间识别、跟踪、建模和修改视频数据内的对象。类似地,如上所述,客户端装置110包括视频修改系统160的一部分。在其它示例中,客户端装置110可以包括整个视频修改系统160。在客户端装置110包括视频修改系统160的一部分(或全部)的情况下,客户端装置110可以单独工作或与社交消息传递系统130协作工作,以提供在此描述的视频修改系统160的功能。

在一些实施例中,社交消息传递系统130可以是能够实现短时通信的短暂消息系统,其中内容(例如,视频剪辑或图像)在诸如查看时间或查看完成的删除触发事件之后被删除。在该实施例中,装置在生成、发送、接收或显示短暂消息的方面的任何情况下使用在此描述的各种组件。例如,实现视频修改系统160的装置可以识别、跟踪、建模和修改关注对象,诸如视频流中描绘的手。装置可以在采集视频流期间修改关注对象作为短暂消息的内容生成的一部分,而无需在采集视频流之后进行图像处理。

在一些实施例中,视频修改系统160可以是视频游戏系统的一部分。视频修改系统160可以识别、跟踪和修改视频流内的关注对象。除了修改的关注对象之外,视频游戏系统的其它部分可以渲染视频流内的交互对象。在一些情况下,视频游戏系统的部分可以使用以下中的一个或多个来实现与交互对象的交互:关注对象的姿势或移动;移动计算装置的移动;移动计算装置的物理控制的选择;在移动计算装置的显示装置上呈现的虚拟或图形控件的选择;或其组合,以在游戏环境中提供修改的视频流、修改的关注对象和交互对象的显示。

图2是示出根据一些示例实施例的视频修改系统160的图。在各种实施例中,视频修改系统160可以结合客户端装置110实现,或作为独立系统实现,并且不必须包括在社交消息传递系统130中。视频修改系统160被示出为包括获取组件210、识别组件220、方向组件230、修改组件240、阈值组件250和二值化组件260。组件210-260中的全部或一些例如经由网络耦合、共享存储器等彼此通信。组件210-260中的每个组件可以实现为单个组件,组合到其它组件中,或者进一步细分为多个组件。也可以包括与示例实施例无关的其它组件,但未示出。

获取组件210接收或访问视频流中的一组图像(例如,帧)。在一些实施例中,获取组件210直接从客户端装置110的图像采集装置接收一组图像。在一些情况下,客户端装置110的应用或组件将一组图像传递给获取组件210以用于在此描述的一种或多种方法。

识别组件220确定或以其它方式识别与由获取组件210访问的一组图像内的关注对象相关的特征以及要插入到该组图像中的图形界面元素。在一些实施例中,识别组件220识别与关注对象相关联的各个像素。识别组件220可以基于与像素相关联的颜色值来识别各个像素。在一些实施例中,识别组件220使用一个或多个图像或对象识别过程或通过识别用于生成凸多边形的点来识别关注对象或关注对象的部分。在识别组件220识别凸多边形的情况下,识别组件220可以通过识别凸多边形内的缺陷(defect)来识别关注对象的分离的部分。缺陷可以表示关注对象上的位于距凸多边形的轮廓线一定距离处的点。

方向组件230确定在由获取组件210访问的视频流或一组图像的一个或多个帧内描绘的关注对象的一部分的方向。例如,在关注对象是手的情况下,方向组件230可以确定手的手指指向的方向。由方向组件230确定的方向可以包括沿x、y和z轴的模拟或实际三维值。例如,方向可以表示关注对象的部分的目标点。目标点可以指示一组图像的图像内的像素或区域,并且还可以指示图像内表示的深度。在一些实施例中,方向组件230可以将方向确定为方向线或矢量。方向线或矢量可以在沿着关注对象的部分识别的两个点之间延伸,方向值针对该关注对象的部分而确定。在一些情况下,方向组件230可以使用沿着关注对象的部分的三个或更多个点来确定方向。三个或更多个点可以连接在一起以形成用于确定关注对象的部分的方向的v形(chevron)。

修改组件240对由获取组件210访问的视频流内的图像执行修改操作。在一些实施例中,修改组件240修改视频流的图像或帧内的关注对象的描绘。修改组件240可以通过采用图形界面元素替换关注对象的至少一部分来修改关注对象的描绘。在一些情况下,修改组件240完全替换关注对象或者定位图形界面元素以模糊关注对象的一部分而不覆盖整体。例如,在关注对象是手并且图形界面元素是武器(诸如激光冲击波)的情况下,修改组件240可以定位激光冲击波(例如,图形界面元素),使得手看起来像是持有激光冲击波。在一些其它示例中,图形界面元素可以包括关注对象的一部分的表示。例如,图形界面元素可以描绘喷漆罐和保持罐在一定位置以接合喷嘴的手的一部分。在该示例中,图形界面元素可以与关注对象的至少一部分(诸如连接到手的手腕)对准,并且替换或以其它方式覆盖关注对象。

阈值组件250动态地修改在视频修改系统160内设置的阈值,以改进对视频流的帧的访问、解释和修改。在一些实施例中,阈值组件250动态地修改用于视频流内的图像的直方图阈值。阈值组件250可以用在质量保证操作中以去除不期望的或意外的移动、大小、比例或其它性能特征,这些特征可能抑制或不利地影响视频流的被修改的帧的显示、游戏玩法或其它呈现。

二值化组件260基于由获取组件210访问的一组图像生成二值图像。在一些情况下,二值化组件260针对一个或多个图像生成一个或多个二值化矩阵。二值化矩阵可以表示一个或多个图像的二值版本。在一些情况下,二值化组件260执行一个或多个二值化操作以生成二值化矩阵。尽管下面采用二值化操作的特定示例进行了描述,但是应理解,二值化组件260可以执行任何合适的二值化操作来生成二值化矩阵。

图3描绘了示出用于分割视频流的部分并基于分割来修改视频流的部分(例如,关注对象的表示或描绘)的示例方法300的流程图。方法300的操作可以由视频修改系统160的组件执行,并且为了说明的目的进行如下描述。

在操作310中,获取组件210接收或以其它方式访问视频流内的一组图像。一组图像可以由在图像采集装置的视场内描绘的一个或多个图像来表示。在一些情况下,获取组件210访问由与客户端装置110相关联的图像采集装置采集并且在客户端装置110(作为包括获取组件210的硬件的一部分)上呈现的视频流。在这些实施例中,获取组件210直接接收由图像采集装置采集的视频流。在一些情况下,如下面更详细描述的,获取组件210将视频流的全部或部分(例如,包括视频流的一组图像)传递到视频修改系统160的一个或多个组件。一组图像可以描绘关注对象的至少一部分。在一些情况下,如下面将更详细解释的,关注对象可以是手的至少一部分。

在一些情况下,操作310响应于视频游戏应用或通信应用的启动而发生。在启动应用后,应用可以接收在客户端装置110的显示装置处呈现的用户界面元素的一个或多个选择。例如,应用可以呈现并使得在显示装置上呈现“开始”按钮。操作310可以响应于应用接收对“开始”按钮的选择而启动。在一些情况下,选择“开始”按钮启动可操作地连接到客户端装置110的图像采集装置,诸如智能电话或平板计算机的相机。在启动图像采集装置后,图像采集装置开始采集视频流的图像或帧以供获取组件210访问。

在操作320中,识别组件220确定与关注对象对应的一组图像(例如,视频流)的一个或多个图像内的像素。在一些实施例中,关注对象是手的一部分。识别组件220可以在图像采集装置的视场的预定位置或区域中确定与关注对象对应的像素。在一些示例实施例中,操作320包括用于检测和生成关注对象的二值图像的过程的全部或部分。二值图像可以由二值化组件260生成。在关注对象是手的情况下,二值图像可以是检测视场内的皮肤的二值皮肤图像,如由与手对应的像素所表示的,并且无视存在于视频流的视场内的其它元素。

二值图像可以在视频游戏应用内生成,而无需呈现。在这些实施例中,视频修改系统160处理视频流以在接收视频流的同时实时识别关注对象,包括识别与关注对象对应的像素并从视频流内的帧生成二值图像。

在操作330中,识别组件220识别关注对象的一部分。所识别的关注对象的部分可以是从关注对象的另一部分延伸的关注对象的部分。在一些实施例中,关注对象的部分是手的手指部分。识别组件220可以使用如下来识别关注对象的部分:边缘检测或匹配,诸如canny边缘检测;基于特征的对象识别,诸如尺度不变特征变换(sift)或加速鲁棒特征(surf);或其它合适的对象识别过程、操作或算法。识别组件220可以使用对视频流的一个或多个帧(例如,图像)的一个或多个对象识别过程,被识别为与关注对象对应的像素,以及由二值化组件260使用颜色简档和与关注对象对应的像素从帧中生成的二值图像,来识别对象的部分。

在关注对象的部分是手指的情况下,识别组件220识别手的部分的手指位置。手指位置可以基于与手的部分对应的像素或使用与手的部分对应的像素从帧中产生的二值图像来识别。为了识别手指位置,识别组件220可以形成包围手的部分的至少一部分的凸多边形。

在一些情况下,识别组件220通过生成包围手的部分和手指的至少一部分的轮廓线来生成凸多边形。识别组件220识别轮廓线内的一组顶点。在一些实施例中,顶点可以通过轮廓线的方向的变化来指示。轮廓线的方向上的变化可以被识别为轮廓线改变方向或轮廓线形成超过预定角度阈值的角处的点或一组点。角度阈值可以由沿着轮廓线的具有大于1度至10度的角度的顶点表示,指示从180度到在179-170度之间或更小的变化。在一些情况下,角度阈值是表示轮廓线中具有大于90度的角的顶点的点或一组点。

在一些实施例中,识别组件220识别由二值图像内的白色和黑色像素的交点指示的手的轮廓附近或沿着手的轮廓线的边缘像素处的顶点。一组顶点的第一部分可被识别在轮廓线附近或沿着轮廓线。在一些情况下,识别出的一个或多个顶点(例如,一组顶点的第二部分)与轮廓线相距一定距离。

在形成凸多边形以及识别一组顶点之后,识别组件220识别凸多边形内的一个或多个缺陷。在一些情况下,缺陷指示位于手的部分上的两个手指之间的空间。缺陷可被识别为一组顶点的第二部分,其距离凸多边形的轮廓线一定距离。识别组件220可以通过确定沿着轮廓线定位的两个顶点和被测试作为缺陷的顶点之间的角度来确定顶点是凸多边形内的缺陷。顶点和缺陷顶点之间的角度可被测量为在位于轮廓线上的第一顶点和缺陷顶点之间延伸的第一线与在位于轮廓线上的第二顶点和该缺陷顶点之间延伸的第二线之间形成的角度。

识别组件220可以识别其中角度大于缺陷角度阈值处的缺陷顶点。例如,在一些情况下,缺陷角度阈值可被设定为五十度、八十度、九十度或其间的值。在角度超过缺陷角度阈值的情况下,识别组件220可以忽略该顶点(作为缺陷)。在一些情况下,在角度小于缺陷角度阈值的情况下,识别组件220可以确定位于距凸多边形的轮廓线一定距离处的顶点是手的部分上的两个手指之间的点。

在一些情况下,在识别组件220识别一个或多个缺陷后,识别组件220识别在沿着轮廓线的顶点和位于距轮廓线一定距离的顶点(例如,未被识别为缺陷的顶点)之间延伸的顶点连接。顶点连接可以由在两个顶点之间延伸的线表示。在一些情况下,识别组件220识别两个顶点连接,第一顶点连接是在沿轮廓线的顶点与距轮廓线一定距离的第一顶点之间,以及第二顶点连接是在沿轮廓线的顶点与距轮廓线一定距离且距第一顶点一定距离的第二顶点之间。在这些情况下,第一顶点连接和第二顶点连接在沿着轮廓线定位的顶点处接合。第一顶点连接和第二顶点连接的组合可以生成v形。v形可以在手指的尖端或附近的点与相邻手指之间的连接点之间延伸。在识别组件220生成v形的情况下,v形可以接近手指的位置。

在视频修改系统160是视频游戏应用的一部分的实施例中,操作330可以识别在视频流的一个或多个帧内从手的一部分延伸的手指。手和手指可被识别和跟踪以用作视频游戏应用的输入或控制。在一些情况下,手被定位在一个或多个帧的预定部分内,使得定位手在预定部分中来实现对手和手指的识别。

在操作340中,方向组件230确定关注对象的一部分的方向。在关注对象的部分是手指的情况下,方向组件230基于手指位置确定手指的方向。方向组件230可以至少部分地基于在操作330中确定的关注对象的位置来确定关注对象的部分的方向。在一些示例实施例中,方向组件230识别沿着关注对象的部分或在关注对象的部分内与关注对象的部分的位置和取向相关的点,以识别关注对象的部分的方向。方向组件230可以至少部分地基于被识别为与关注对象对应的像素来确定关注对象的部分的方向。在一些情况下,关注对象的部分的方向使用在与关注对象对应的像素中选择的两个或更多个像素或点来确定。

在一些示例实施例中,方向组件230通过识别关注对象的部分上的第一点和第二点来确定关注对象的部分的方向。例如,方向组件230可以识别在手的部分上描绘的手指的尖端。尖端可以表示手指的第一点。然后,方向组件230识别手指上的第二点。第二点可以沿着视场内描绘的手指与第一点间隔开一定距离。在一些情况下,第二点可以从与手指对应的像素中被选择。可以基于在操作330中确定的手指的位置从手指的像素中选择第二点。例如,第二点可以被选择为位于手指内的中间位置(相对于如视场内的像素所表示的手指的宽度)的像素。以此方式,第一点(位于手指的尖端)和第二点(相对于手指的宽度,位于手指的中间)可用于确定手指的方向。在第一顶点连接和第二顶点连接被确定的一些情况下,第二点可被选择为位于第一顶点连接和第二顶点连接之间的像素。第一顶点连接和第二顶点连接之间的距离可被确定,以便将第二点对准相对于如视场内的像素所表示的手指的宽度的中间位置。

在一些情况下,方向组件230生成在第一点和第二点之间延伸的方向线。方向线可以表示为在视场中的两个点之间延伸并且指示与方向线(例如,矢量)中的第一点分开一定距离的视场内的目标点的矢量。第一点和第二点可以与沿着手指的相对位置相关联,使得位置、方向(例如,沿着显示装置的x轴和y轴)和三维方向(例如,沿着从显示装置向内和向外延伸的z轴)中的变化调节沿着视场的手指的目标点。例如,在第一点的位置沿着显示装置的x轴向右移动多个像素并且第二点保持相对固定的情况下,目标点可被调节向右,而几乎没有沿y轴的目标点的位置上的变化。作为另一示例,在第一点的位置沿y轴向下移动并且第二点的位置沿y轴向上移动的情况下,目标点可沿z轴被调节以指示目标在显示装置上呈现的视场的背景内描绘的点。

在方向组件230生成用于从视频游戏应用内的手向远侧延伸的手指的方向的情况下,方向组件230可以识别相对于客户端装置的显示装置或帧的x轴和y轴的方向。z轴对应于针对方向确定的深度。在这些情况下,方向组件230可以在模拟的三维矩阵中识别手指在帧内的目标点。通过确定模拟的三维矩阵中的方向,方向组件230使得手指能够移动以提供用户对视频流的帧中描绘的视频游戏环境的控制。例如,手指在视频流的帧之间的移动可以使方向组件230重新计算手指的方向。手指的移动和目标点的修改可以另外使视频游戏应用生成或渲染帧内的交互元素,诸如目标、怪物、外星人和其它对象,用户可以使用从手指生成的目标点与其交互。

在一些实施例中,方向组件230使用第一顶点连接和第二顶点连接来确定关注对象的部分的方向。在这些情况下,方向组件230使用与轮廓线间隔开一定距离的第一顶点和第二顶点以及位于轮廓线上的顶点的位置和相对位置,来形成v形(例如,由第一顶点连接和第二顶点连接之间的成角度连接所形成的形状)。v形和形成v形的点的相关联顶点可用于计算手指的方向和目标点。如上所述,沿轮廓线的顶点与沿x、y和z轴与轮廓线间隔开一定距离的第一和第二顶点的相对运动可能导致目标点沿x、y和z轴的调节,如由显示装置在视场上呈现的。

方向组件230可以执行一个或多个操作以确保对关注对象的部分的平滑跟踪、转换和修改。在一些实施例中,方向组件230针对视频流的每个帧确定关注对象的部分的方向(例如,视场内的手的部分的手指)。使用针对每个帧确定的方向,方向组件230可以针对视频流内的给定帧或当前帧,确定一个或多个图像(例如,视频流的帧)的一组先前帧中的每个帧的关注对象的部分的方向。在一些情况下,在获取组件210接收视频流的新的帧时,方向组件230可以保持包括在每个帧中确定的方向信息(例如,矢量)的方向缓冲器。

在方向组件230已经采用用于一组先前帧的预定数量的帧的方向(例如,矢量)信息填入方向缓冲器后,方向组件230将用于一组先前帧的至少一部分的关注对象的部分的方向信息组合,以识别关注对象的部分的聚合方向。例如,在关注对象的部分是在视场中描绘的手的部分的手指并且方向缓冲器包括针对一组先前帧确定的手指的矢量信息的情况下,方向组件230可以识别手指的聚合方向,以便平均由于手指的移动而确定的方向变化。通过平均方向变化,方向组件230可以消除在视频流的单个帧中识别的伪像、抖动或其它错误的手指方向。

可以初始设定预定数量的帧,例如在视频流内的三到七帧。在一些情况下,响应于方向组件230的确定,可以动态地改变在平滑和跟踪操作内使用的帧的数量。例如,在手指移动时,方向组件230可以确定通过手指在视频流的帧之间的移动距离足以引起抖动、伪像或其它非期望的信号。方向组件230可以增加在平滑和跟踪操作中使用的帧的数量。在方向组件230确定帧的数量大于用于平滑和跟踪手指或关注对象的部分的移动的最小数量并且可能影响客户端装置110的存储器或其它资源消耗的情况下,方向组件230可以减少的帧的数量(其中在该帧之间对移动进行平均),以减少在客户端装置110内用于平滑和跟踪操作的资源消耗。

在操作350中,修改组件240采用与关注对象的部分的方向对准的图形界面元素替换关注对象的至少一部分。图形界面元素与关注对象的部分的方向(例如,手指方向)的对准可以通过修改组件240将图形界面元素的远端定位成靠近关注对象的部分(例如,手指)的远端来实现。例如,冲击波的枪口(例如,图形界面元素)可以定位在方向线的第一点处或附近或轮廓线上的顶点处或附近,并且被对准,使得冲击波的模拟的目标点定位于关注对象的部分的目标点处或附近。

在关注对象的部分是手指的情况下,修改组件240采用与手指的方向对准的图形界面元素替换至少手的一部分或手指。例如,图形界面元素可以是喷漆罐的表示。修改组件240可以通过在手中渲染喷漆罐来修改手的部分,其中喷漆罐的喷嘴与手指的方向对准,使得喷漆罐的目标点接近于手指的目标点。在一些实施例中,修改组件240可以通过采用握住喷漆罐的手的图形表示替换视场内描绘的手来修改手的部分。

在一些实施例中,图形界面元素可以是武器(例如,枪支、激光枪、冲击波、能量武器、球杆、矛、刀)。修改组件240通过在手中渲染武器来修改手的部分,其中武器的进攻端(例如,枪械枪口、刀刃点、球杆的头部)与手指的方向对准。在一些情况下,修改组件240通过采用武器的图形界面元素、图形界面元素的一部分或者描绘手的至少一部分的表示的图形界面元素的一部分替换视场内描绘的手来修改手的部分。

在一些实施例中,在修改组件240替换关注对象的部分之前,二值化组件260通过隔离与关注对象对应的像素来生成一个或多个二值图像。二值化组件260可通过将与关注对象的部分对应的像素转换为第一值并将视场内的剩余像素转换为第二值来隔离像素。

图4示出说明用于分割视频流的部分以及基于分割来修改视频流的部分(例如,关注对象的表示或描绘)的示例方法400的流程图。方法400的操作可以由视频修改系统160的组件执行。在一些情况下,方法400的某些操作可以使用方法300的一个或多个操作来执行,或者作为方法300的一个或多个操作的子操作来执行,如下面将更详细解释的。例如,如图4中所示,方法400的操作可以表示操作320的一组子操作。

在操作410中,识别组件220从图像采集装置的视场的部分内的一个或多个像素中采样一个或多个颜色值。在一些实施例中,识别组件220通过在图像采集装置的视场的部分内从一个或多个像素中采样一个或多个颜色值来确定与关注对象(例如,手的部分)对应的像素。识别组件220可以通过识别位于视频流的帧的视场的预定部分内的像素子集来对一个或多个颜色值采样。

识别组件220可以选择用于采样颜色值的预定数量的像素。在一些实施例中,识别组件220选择用于采样颜色值的像素,直到已经采样的像素与新采样的像素之间的颜色值上的平均变化低于预定的颜色变化阈值。识别组件220可以执行一个或多个操作或子操作以在视场的部分内从一个或多个像素中采样一个或多个颜色值,如下面更详细描述的。

在一些实施例中,在操作412中,操作410由识别组件220选择视场的部分内的第一像素来执行。识别组件220可随机从视场的部分内选择第一像素。在一些情况下,识别组件220在视场的部分内的预定位置处选择第一像素。尽管这里给出了选择第一像素的指定方法,但是应该理解,识别组件220可以使用任何合适的方法来选择第一像素。

在操作414中,识别组件220确定第一像素包括预定颜色值范围内的第一颜色值。期望的颜色范围可以基于期望的关注对象来选择。例如,在期望的关注对象是用户的手的情况下,期望的颜色范围包括与人体肤色相关联的颜色值。在一些情况下,在选择第一像素并确定颜色值在用于关注对象的期望的颜色范围内之后,识别组件220将颜色范围从第一颜色范围细化到第二颜色范围。第二颜色范围可以是第一颜色范围的一部分。例如,在第一颜色范围包括与人体皮肤相关联的颜色值的情况下,第二颜色范围可包括与人体皮肤相关联的颜色值的子集。第二颜色范围可以将预期颜色范围缩小到与更紧密地与第一像素的颜色值相关的人体皮肤的子集相关联的颜色值的范围。

在操作416中,识别组件220选择视场的部分内的第二像素。第二像素可以与第一像素间隔开一定距离并且保持在视场的部分内。可以与操作412中第一像素类似地或相同地选择第二像素。在一些情况下,识别组件220基于第一像素的位置来选择第二像素。在这些实施例中,可以在视场的部分内距第一像素预定距离来选择第二像素。例如,第二像素可以被选择为距第一像素一到一百个像素之间的距离,只要第一像素和第二像素之间的距离不将第二像素放置在视场的部分之外即可。

在操作418中,识别组件220确定第二像素包括预定颜色值范围内的第二颜色值。确定第二像素包括颜色值范围内的第二颜色值可以与在上述操作414中确定第一像素包括颜色值范围内的第一颜色值相似或相同地执行。

在操作420中,识别组件220比较第一颜色值和第二颜色值以确定第二颜色值在第一颜色值的颜色阈值内。在一些实施例中,颜色阈值是将第一颜色值和第二颜色值都放置在预定颜色值范围内的值,识别组件220确定第一颜色值包括在该预定颜色值范围内。在这些情况下,颜色阈值可以基于第一颜色值和预定颜色值范围动态地确定,使得如果第二颜色值落入预定颜色值范围(例如,预定阈值)内,则第二颜色值是可接受的。在一些示例实施例中,颜色阈值可以是预定颜色阈值。在这些情况下,在第二颜色值落在预定颜色阈值之外的情况下,尽管仍在预定颜色范围内,第二颜色值可被丢弃并且重新选择第二颜色值。

在操作430中,识别组件220基于从一个或多个像素(例如,第一像素和第二像素)中采样的一个或多个颜色值(例如,第一颜色值和第二颜色值)来确定用于手(例如,关注对象)的颜色简档。识别组件220包括基于第二颜色值在预定颜色阈值内在用于手的颜色简档中的第一颜色值和第二颜色值。颜色简档表示手的中间颜色值。中间颜色值可以是单个颜色值,诸如由识别组件220采样的颜色值的中点,或颜色值的范围,诸如包括由识别组件220采样的颜色值的颜色值的范围。

在一些实施例中,在识别组件220对一种或多种颜色进行采样并确定颜色简档之后,识别组件220可以识别视场的预定部分内具有与颜色简档相关联的颜色值的像素。识别组件220可以通过识别像素的颜色值在中间颜色值的预定范围内(例如,单个中间颜色值)或在颜色简档内的颜色值的范围内来确定像素具有与颜色简档相关联的颜色值。识别组件220可以识别与针对视频流的每个帧的视场的预定部分中的颜色简档相关联的像素。

在一些情况下,响应于识别与颜色简档相关联的像素,二值化组件260通过计算关注对象的二值图像来提取关注对象。在由二值化组件260计算的二值图像中,与颜色简档相关联的像素可被分配第一值,并且视场内的剩余像素可被分配第二值。例如,第一值可以是1,指示白色像素,并且第二值可以是0,指示黑色像素。二值化组件260还可以采用非线性中值模糊过滤器对每个帧的二值图像进行过滤,以去除伪像,包含物或其它错误像素转换。

在一些实施例中,识别组件220通过从在视场的部分内采样的一个或多个颜色值生成直方图来确定颜色简档。直方图可以表示由识别组件220采样的像素中具有指定颜色值的像素的分布。直方图可以是在诸如红色、绿色、蓝色(rgb);色调、饱和度、亮度(hls);以及色调、饱和度、值(hsv)等的三维颜色空间中生成的颜色直方图。可以使用能够从所选择的和颜色采样的像素中识别像素中出现的颜色值的频率的任何合适的频率识别操作或算法来生成直方图。

在一些情况下,直方图可以是二维直方图。二维直方图可以识别强度或值的组合以及具有所识别的强度或值的组合的多个像素。在一些示例实施例中,作为二维直方图生成的直方图识别具有在颜色采样期间识别的指定颜色值的像素的色调值和颜色饱和度值的组合。色调和颜色饱和度值可以从hsv颜色空间中提取。

响应于生成直方图,识别组件220移除直方图的预定像素阈值以下的一个或多个区间。直方图的区间可以被理解为直方图内的一组分区。每个区间可以表示视场的部分内从所选像素或的像素中采样的颜色值中的颜色值。区间可以指示与用于区间的指定颜色值相关联或描绘用于区间的指定颜色值的多个像素的值。在直方图是二维直方图的实施例中,直方图的区间指示色调和颜色饱和度值以及具有色调和颜色饱和度值的像素的数量。在这些实施例中,具有与颜色简档的色调和颜色饱和度值相关联的最大像素数量的区间与关注对象(例如,手)相关联。

预定像素阈值是用于估计与关注对象相关联或与其不相关的像素的阈值。预定像素阈值可被应用于直方图的区间,使得估计或确定具有高于预定像素阈值的多个像素的区间与关注对象相关联。具有高于预定像素阈值的多个像素的区间可以与针对关注对象识别的期望的颜色范围内的颜色值相关联。预定像素阈值可以是百分比值,诸如包括在指定区间中的视场部分内的像素总数的百分比。例如,预定像素阈值可以是视场部分内的总像素的百分之五、百分之十或百分之十五。在该示例中,分别包含少于百分之五、百分之十或百分之十五的总像素的区间可被确定包含与关注对象不相关的像素。在一些情况下,预定像素阈值是在区间内发生的像素的数值。例如,预定像素阈值可以在1,000和200,000像素之间。在该示例中,分别具有少于1,000个像素或200,000个像素的区间可被确定包含与关注对象不相关的像素。

识别组件220包括颜色简档中与具有高于预定像素阈值的像素的数量或百分比的区间相关联的颜色值。在一些情况下,二值化组件260生成二值图像,二值化组件260将区间中超过预定像素阈值的像素的颜色值转换为第一值,指示表示关注对象的一部分的白色像素。二值化组件260可以将区间中低于预定像素阈值的像素的颜色值转换为第二值,指示与关注对象不相关的黑色像素。

图5示出说明用于分割视频流的部分以及基于分割来修改视频流的部分(例如,关注对象的表示或描绘)的示例方法500的流程图。方法500的操作可以由视频修改系统160的组件来执行。在一些情况下,方法500的某些操作可以使用方法300或400的一个或多个操作来执行,或者作为方法300或400的一个或多个操作的子操作来执行,如下面将更详细解释的。例如,如图5中所示,方法400的操作可以表示操作320的一组子操作。

在操作510中,识别组件220确定第一组像素内的一组伪像超过伪像阈值。在一些实施例中,第一组像素由识别组件220在如上所述的操作320中确定。第一组像素可以对应于关注对象的部分(例如,手的部分上的手指)。在一些情况下,第一组像素可以对应于由识别组件220识别的整个关注对象。

在一些情况下,伪像阈值是凸多边形内的多个像素或像素区域,其具有与围绕伪像的像素或像素区域不同的值。例如,在凸多边形被识别并且二值图像被生成的情况下,伪像可以是凸多边形内具有零值(例如,黑色像素)并且被描绘在关注对象上的像素或像素区域。

尽管被描述为第一组像素内的伪像,但是伪像也可以在第一组像素之外被识别。在一些情况下,伪像可以是凸多边形之外的具有与周围像素或像素区域的值基本上不同的值的像素或像素区域。例如,凸多边形之外的伪像可以是在凸多边形或关注对象中的一个或多个之外具有值1(例如,白色像素)的像素或像素区域。

为了确定一组伪像超过伪像阈值,识别组件220可识别一组伪像中包括的像素的总数,并确定总像素计数超过伪像阈值的总像素计数。在一些情况下,识别组件220识别伪像数量(例如,具有类似值的像素的离散分组,其由具有基本上不同的值的像素围绕),并且确定所识别的伪像数量超过如伪像阈值计算的伪像的总数。

在操作520中,阈值组件250动态地修改直方图阈值,以识别与关注对象的部分对应的像素。在一些实施例中,阈值组件250基于关注对象的部分(例如,手指)的方向动态地修改直方图阈值。在一些实施例中,直方图阈值是预定颜色阈值。直方图阈值的调节可以增加或减小预定颜色阈值,以将更多或更少数量的颜色值包括在颜色阈值和直方图阈值内。在一些情况下,直方图阈值与预定像素阈值相关联。直方图阈值的修改可以增加或减小预定像素阈值,以包括与更多或更少数量的像素相关联的颜色值作为关注对象或颜色简档的一部分。

响应于确定伪像超过伪像阈值,阈值组件250或识别组件220可确定与一个或多个伪像相邻或邻近的像素的一个或多个颜色值。在一些实施例中,阈值组件250或识别组件220确定直方图内的一个或多个颜色值的位置。阈值组件250或识别组件220还可以确定一个或多个颜色值相对于预定颜色范围的位置。基于一个或多个颜色值的位置,阈值组件250修改直方图阈值以包括与相邻或邻近像素的一种或多种颜色相关联的附加颜色值。例如,在识别组件220或阈值组件250识别与位于直方图中的颜色阈值或像素阈值的低端的伪像相邻或邻近的一个或多个像素的一个或多个颜色值的情况下,阈值组件250可以增加颜色阈值或像素阈值的低端以包括先前从颜色阈值或像素阈值的低端排除的一个或多个颜色或一个或多个像素。

在操作530中,识别组件220确定与视场内描绘的关注对象(例如,手或手的一部分)对应的一个或多个图像内的第二组像素。第二组像素基于修改的直方图阈值被确定。在一些实施例中,第二组像素包括第一组像素的至少一部分。操作530可以与上面参考图3描述的操作320类似或相同地执行。

图6示出说明用于分割视频流的部分以及基于分割来修改视频流的部分(例如,关注对象的表示或描绘)的示例方法600的流程图。方法600的操作可以由视频修改系统160的组件执行。在一些情况下,方法600的某些操作可以使用方法300、400或500的一个或多个操作来执行,或者作为方法300、400或500的一个或多个操作的子操作来执行,如下面将更详细解释的。例如,方法600的操作可以表示响应于操作340的执行而执行的一组操作。

在操作610中,方向组件230从视场的指定角落确定关注对象的部分(例如,在手的部分上描绘的手指)的当前方向。指定角落可以是预定的角落、边、一组像素、像素、坐标或视场的其它部分。例如,在一些实施例中,指定角落可以被呈现为如在客户端装置110的显示装置上呈现的视场的左下角落。在一些实施例中,操作610与操作340类似或等同来执行。

在操作620中,方向组件230识别用于一个或多个图像(例如,视频流的一组先前帧)的关注对象的部分的组合方向,以指示先前的组合方向。在一些实施例中,方向组件230识别用于视频流的三个或更多个先前帧的关注对象的部分的组合方向。方向组件230识别针对一个或多个图像中的每一个图像确定的关注对象的部分的一个或多个方向。方向组件230可以平均一个或多个图像的一个或多个方向。在一些情况下,方向组件230通过生成表示一个或多个方向的一个或多个矢量的平均值来平均一个或多个方向。方向组件230可以生成一个或多个方向的加权移动平均值,其中两个或更多个方向或矢量彼此接近。在一些实施例中,加权移动平均值在对紧接在当前帧之前的帧确定的方向和当前识别的方向上放置更大的权重。

在操作630中,方向组件230确定当前方向与先前组合方向之间的位置上的变化超过位置阈值。方向组件230可通过比较组合方向和当前方向以确定位置上的变化,来确定位置上的变化超过位置阈值。位置上的变化可以以像素、度、弧度或沿着方向线在两个方向、矢量或点之间延伸的任何其它合适的测量来测量。响应于测量位置上的变化,方向组件230可以将测量与位置阈值进行比较。位置阈值可以是弧度值、度数值、像素值或其它阈值。在位置上的变化低于位置阈值的情况下,方向组件230可以忽略先前帧的组合方向。

在操作640中,方向组件230基于位置上的变化超过位置阈值,从一组第一方向识别操作和一组第二方向识别操作中选择。一组第一方向识别操作包括一个或多个阈值修改操作。一组第二方向识别操作包括从当前帧和先前帧中的两个或更多个帧中确定方向。

在一些实施例中,第一方向识别操作修改直方图阈值、颜色简档或像素阈值中的一个或多个。方向组件230单独或与阈值组件250和识别组件220中的一个或多个组合,可以以与上面关于图3-5描述的方式类似的方式修改直方图阈值、颜色简档或像素阈值。在一些情况下,响应于确定位置上的变化超过位置阈值,方向组件230可以识别与当前帧中和一个或多个先前帧中的方向线上的点相关联的像素的颜色值。方向组件230还可以识别与方向线上的点相邻或最近的像素或像素簇的颜色值。在方向组件230确定与方向线上的点相邻或最近的像素的颜色值和与高于像素阈值的多个像素相关联的直方图内的颜色简档或颜色值不相关的情况下,方向组件230可以忽略当前帧的方向。在这些情况下,方向组件230可以回复到先前帧中的方向。方向组件230还可以通过识别关注对象的部分上的点并生成新的方向线或矢量来重新计算方向线的方向。在一些实施例中,方向组件230、阈值组件250或识别组件220可以修改直方图阈值、颜色简档或像素阈值中的一个或多个,以去除关注对象和凸多边形中的一个或多个之外的伪像或误报(falsepositive)像素标识。例如,直方图阈值、颜色简档或像素阈值中的一个或多个的修改可以使得到的二值图像呈现具有第一像素值的较少伪像(例如,指示白色像素的值为1),其中帧在暗室中被采集或使用次优的国际标准化组织(iso)速度或光圈大小(例如,焦距比、f比、或f光圈)。

在一些情况下,一组第二方向识别操作使方向组件230单独或与识别组件220或阈值组件250组合,以修改先前帧阈值。先前帧阈值表示视频流的先前帧的数量,其用于计算关注对象的部分的方向的平均方向或加权移动平均值。在一些实施例中,方向组件230最初使用针对紧接在视频流的当前帧之前的三个帧计算的方向来计算平均方向。在位置上的变化超过位置阈值的情况下,方向组件230修改先前帧阈值以包括一个或多个附加帧并重新计算平均方向。在先前帧阈值的修改导致位置上的变化落入位置阈值内的情况下,方向组件230可以使用修改的先前帧阈值继续识别附加帧中的方向变化。

在一些实施例中,方向组件230识别在视频流的一组先前帧之间的方向上的变化指示高于关注对象或关注对象的部分的预定运动阈值的运动。在这些情况下,方向组件230终止或中断平均方向的计算和先前帧阈值的使用。响应于中断使用先前帧阈值或确定运动超过运动阈值,方向组件230确定方向线或矢量的角度上的变化以及方向线或矢量的位置上的变化,或者沿方向线或矢量的一个或多个点。响应于一个或多个位置上的变化以及方向线或矢量的角度上的变化超过修改的位置阈值或角度阈值,方向组件230可以修改或丢弃位置上的变化或角度上的变化。在方向组件230修改位置上的变化或角度上的变化的情况下,方向组件230可以将位置上的变化或角度上的变化与一个或多个先前帧中的位置或角度进行平均,并使用平均位置或平均角度作为当前帧的位置或角度。在方向组件230丢弃位置上的变化或角度上的变化的情况下,方向组件230可以采用当前帧的位置或角度替换先前帧的位置或角度。

图7示出说明用于分割视频流的部分以及基于分割来修改视频流的部分(例如,关注对象的表示或描绘)的示例方法700的流程图。方法700的操作可以由视频修改系统160的组件执行。在一些情况下,方法700的某些操作可以使用方法300、400、500或600的一个或多个操作来执行,或者作为方法300、400、500或600的一个或多个操作的子操作来执行,如下面将更详细解释的。例如,方法700的操作可以表示响应于操作320、330或340中的一个或多个的执行而执行的一组操作。

在操作710中,方向组件230确定关注对象的部分的方向。在关注对象的部分是手指的情况下,方向组件230基于手指位置确定手指的方向。手指的方向可以表示为在与手的部分对应的两个像素之间延伸的矢量(例如,沿着手指定位)。操作710可以与上面关于图3描述的操作340类似或相同地执行。

在操作720中,阈值组件250动态地修改直方图阈值。阈值组件250可以响应于确定关注对象的部分(例如,手指)的方向并且确定关注对象的错误、伪像或意外运动来修改直方图阈值。在一些实施例中,操作720与操作520类似或相同地执行。

在操作730中,阈值组件250识别矢量的第一性能特征。第一性能特征可以包括测量关注对象或方向线(例如,矢量)处的抖动的存在,关注对象上的伪像的存在,图形界面元素与关注对象的对准,图形界面元素对关注对象的覆盖,凸多边形的位置,凸多边形的轮廓尺寸,凸多边形的轮廓比例,以及其它合适的性能特征。伪像可以与上面描述的伪像类似,并且出现在关注对象的描绘内。

抖动的存在可以表示为在帧之间从关注对象的一个或多个点或边缘的第一位置到第二位置的移动和在时间上接近初始移动的后续帧中从第二位置到第一位置的后续移动。例如,当视频流被描绘为具有使用白色像素表示的关注对象的二值图像时,可以看到在视频流内快速、不稳定或不规则的移动中的抖动,经常在后续移动之前重复一次或多次。

图形界面元素与关注对象的对准可以基于用于手指(例如,关注对象的部分)的方向线或矢量和用于图形界面元素生成的方向线或矢量来确定。如上所述,用于图形界面元素的方向线或矢量可以与用于手指的方向线或矢量类似或相同地生成。例如,可以通过选择图形界面元素上描绘的两个或更多个点或像素(诸如靠近图形界面元素的远端的点(例如,冲击波的枪口)和与远端间隔开一定距离并朝向图形界面元素的近端的点)来生成用于图形界面元素的方向线或矢量。可以比较相对于参考点的手指和图形界面元素的方向线的角度,以生成性能特征的值。例如,方向组件230可以确定图形界面元素的方向线与手指的方向线的角度之间的百分比差异,并使用百分比差异作为性能特征值。

图形界面元素对关注对象的覆盖可以通过识别图形界面元素的两个或更多个边界来确定。识别组件220可将图形界面元素的边界识别为图形界面元素的一个或多个边缘或描绘图形界面元素的图像的一个或多个边缘。识别组件220可以基于从图形界面元素的两个或更多个边界向外延伸的关注对象的部分来确定图形界面元素未覆盖的关注对象的量。覆盖性能特征可以被赋予诸如图形界面元素所覆盖的关注对象的百分比的值。

凸多边形的位置可以通过识别组件220确定帧的预定部分的边界来识别。在一些情况下,边界是视频流的每个帧的矩形部分。帧的预定部分可以位于帧的左下角或侧面。识别组件220可识别轮廓线上的点的百分比、量或数量,或轮廓线的从帧的预定部分向外重叠或向外延伸的部分。多边形位置性能特征可以包括表示凸多边形是否在帧的预定部分中或者多少在帧的预定部分中的值。

凸多边形的轮廓尺寸可以关于帧的预定部分而识别。在一些实施例中,识别组件220确定凸多边形的尺寸。凸多边形的尺寸可以包括由凸多边形占据的面积(例如,像素面积),凸多边形的形状或边缘集合,或者凸多边形的任何其它合适的尺寸。凸多边形的面积可以由封装在凸多边形内的像素的数量来确定。在一些实施例中,凸多边形的轮廓尺寸被确定为帧的预定部分的百分比。与轮廓尺寸相关联的性能特征值可以是面积值、帧的预定部分的百分比,或描述轮廓尺寸的任何其它合适的值。

凸多边形的轮廓比例可以被识别为凸多边形的部分关于凸多边形的其它部分的预期比例比。例如,在由凸多边形限定的关注对象是手并且用于确定关注对象的方向的关注对象的部分是手指的情况下,轮廓比例可以落在手指和手的期望的比例比中。识别组件220可以识别关注对象的部分并且生成划分关注对象的部分与关注对象的其余部分的划分线。然后,识别组件220可以将关注对象的部分的面积或其它尺寸测量与关注对象的剩余部分进行比较,以生成轮廓比例。

在操作740中,阈值组件250确定性能特征超过特征阈值。特征阈值(阈值组件250比较其与性能特征值)可以特定于性能特征。例如,在性能特征值是凸多边形的轮廓尺寸的值的情况下,特征阈值可以是占据帧的预定部分的面积的凸多边形的最大期望面积值或最大百分比值。在一些情况下,阈值组件250通过识别哪个值、性能特征或特征阈值更大来确定性能特征超过特征阈值。例如,在性能特征是图形界面元素对关注对象覆盖的情况下,阈值组件250可以确定关注对象的百分之八十五由图形界面元素覆盖,留下百分之十五未被覆盖。在特征阈值是关注对象的百分之五的未覆盖区域的情况下,百分之十五的未覆盖区域超过特征阈值。

在操作750中,阈值组件250基于性能特征来修改直方图阈值。可以以与操作520中描述的方式类似或相同的方式修改直方图阈值。直方图阈值的修改可以包括或排除在关注对象或凸多边形中包含的像素。例如,在凸多边形具有占据帧的预定部分的更大部分(比期望的特征阈值)的轮廓尺寸的情况下,可以增加直方图阈值以减小凸多边形的识别大小或尺寸。

在操作760中,阈值组件250识别矢量的第二性能特征在特征阈值内。第二性能特征可以是与在操作730中识别的性能特征相同的性能特征,其中基于在操作750中执行的直方图阈值的修改来修改性能特征值。在阈值组件250确定在特征阈值内的性能特征后,视频修改系统160可以继续进行操作350。在一些实施例中,在视频修改系统160完成操作760或操作350之后,视频修改系统160可以继续修改视频流内的下一帧。

示例

为了更好地说明在此公开的设备和方法,这里提供了非限制性示例列表:

1.一种方法,包括:由一个或多个处理器接收描绘手的至少一部分的一个或多个图像;在图像采集装置的视场的预定部分中确定与手的部分对应的一个或多个图像内的像素,手的部分具有手指;基于与手的部分对应的像素,识别手指的手指位置;基于手指位置确定手指的方向;基于手指的方向,动态地修改直方图阈值以识别与手的部分对应的像素;以及采用与手指的方向对准的图形界面元素替换手的部分和手指。

2.根据示例1所述的方法,其中,识别手指位置进一步包括:形成包围手的部分的至少一部分的凸多边形;以及识别凸多边形内的一个或多个缺陷,缺陷指示位于手的部分上的两个手指之间的空间。

3.根据示例1或2所述的方法,其中,确定手指的方向进一步包括:识别手指的尖端,该尖端表示手指的第一点;识别手指上的第二点,该第二点沿手指与第一点间隔开;生成在第一点和第二点之间延伸的方向线;以及确定一个或多个图像内的方向线的方向。

4.根据示例1-3中任一项或多项所述的方法,其中,确定与手的部分对应的像素进一步包括:从图像采集装置的视场的部分内的一个或多个像素中采样一个或多个颜色值;以及基于从一个或多个像素采样的一个或多个颜色值确定用于手的颜色简档,颜色简档表示手的中间颜色值。

5.根据示例1-4中任一项或多项所述的方法,其中,采样一个或多个颜色值进一步包括:选择视场的部分内的第一像素;确定第一像素包括预定的颜色值范围内的第一颜色值;选择视场的部分内的第二像素,第二像素与第一像素间隔开并位于视场的部分内;确定第二像素包括预定的颜色值范围内的第二颜色值;比较第一颜色值和第二颜色值,以确定第二颜色值在第一颜色值的预定阈值内;以及将第一颜色值和第二颜色值包括在用于手的颜色简档中。

6.根据示例1-5中任一项或多项所述的方法,其中,确定颜色简档进一步包括:根据从视场的部分内采样的一个或多个颜色值生成直方图;去除与低于预定像素阈值的多个像素相关联的直方图的一个或多个区间;以及将直方图的一个或多个区间包括在与高于预定像素阈值的多个像素相关联的颜色简档内。

7.根据示例1-6中任一项或多项所述的方法,其中,该方法进一步包括:通过将与手的部分对应的像素转换为第一值并且将视场内的剩余像素转换为第二值,通过隔离与手的部分对应的像素,来生成一个或多个二值图像。

8.根据示例1-7中任一项或多项所述的方法,其中,确定手指的方向进一步包括:确定用于一个或多个图像的一组先前帧的每个帧的手指的方向;以及将用于该组先前帧的手指的方向组合,以识别手指的聚合方向。

9.根据示例1-8中任一项或多项所述的方法,其中,确定手指的方向进一步包括:从视场的指定角确定手指的当前方向;识别用于一个或多个图像的手指的组合方向,以指示先前的组合方向;确定当前方向与先前的组合方向之间的位置上的变化超过位置阈值;以及基于位置上的变化超过位置阈值,从一组第一方向识别操作和一组第二方向识别操作中选择。

10.根据示例1-9中任一项或多项所述的方法,其中,手指的方向由在与手的部分对应的两个像素之间延伸的矢量表示,并且动态地修改直方图阈值进一步包括:识别矢量的第一性能特征;确定第一性能特征超过特征阈值;基于第一性能特征,修改直方图阈值;以及基于直方图阈值的修改,识别矢量的第二性能特征在特征阈值内。

11.根据示例1-10中任一项或多项所述的方法,其中,确定与手的部分对应的一个或多个图像内的像素识别第一组像素,并且进一步包括:确定第一组像素内的一组伪像超过伪像阈值;以及基于修改直方图阈值,确定与手的部分对应的一个或多个图像内的第二组像素,该第二组像素包括第一组像素的至少一部分。

12.一种系统,包括:一个或多个处理器;以及存储处理器可执行指令的处理器可读存储装置,该处理器可执行指令当由一个或多个处理器执行时,使一个或多个处理器执行包括以下操作的操作:由一个或多个处理器接收描绘手的至少一部分的一个或多个图像;在图像采集装置的视场的预定部分中确定与手的部分对应的一个或多个图像内的像素,该手的部分具有手指;基于与手的部分对应的像素,识别手指的手指位置;基于手指位置确定手指的方向;基于手指的方向,动态地修改直方图阈值以识别与手的部分对应的像素;以及采用与手指的方向对准的图形界面元素替换手的部分和手指。

13.根据示例12所述的系统,其中,确定手指的方向进一步包括:识别手指的尖端,该尖端表示手指的第一点;识别手指上的第二点,该第二点沿手指与第一点间隔开;生成在第一点和第二点之间延伸的方向线;以及确定一个或多个图像内的方向线的方向。

14.根据示例12或13所述的系统,其中,确定与手的部分对应的像素进一步包括:从图像采集装置的视场的部分内的一个或多个像素中采样一个或多个颜色值;以及基于从一个或多个像素采样的一个或多个颜色值确定用于手的颜色简档,该颜色简档表示手的中间颜色值。

15.根据示例12-14中任一项或多项所述的系统,其中,确定颜色简档进一步包括:根据从视场的部分内采样的一个或多个颜色值生成直方图;去除与低于预定像素阈值的多个像素相关联的直方图的一个或多个区间;以及将直方图的一个或多个区间包括在与高于预定像素阈值的多个像素相关联的颜色简档内。

16.根据示例12-15中任一项或多项所述的系统,其中,确定手指的方向进一步包括:从视场的指定角确定手指的当前方向;识别用于一个或多个图像的手指的组合方向,以指示先前的组合方向;确定当前方向与先前的组合方向之间的位置上的变化超过位置阈值;以及基于位置上的变化超过位置阈值,从一组第一方向识别操作和一组第二方向识别操作中选择。

17.根据示例12-16中任一项或多项所述的系统,其中,手指的方向由在与手的部分对应的两个像素之间延伸的矢量表示,并且动态地修改直方图阈值进一步包括:识别矢量的第一性能特征;确定第一性能特征超过特征阈值;基于第一性能特征,修改直方图阈值;以及基于直方图阈值的修改,识别矢量的第二性能特征在特征阈值内。

18.一种存储处理器可执行指令的处理器可读存储装置,该处理器可执行指令当由机器的处理器执行时,使机器执行包括以下操作的操作:接收描绘手的至少一部分的一个或多个图像;在图像采集装置的视场的预定部分中确定与手的部分对应的一个或多个图像内的像素,该手的部分具有手指;基于与手的部分对应的像素,识别手指的手指位置;基于手指位置确定手指的方向;基于手指的方向,动态地修改直方图阈值以识别与手的部分对应的像素;以及采用与手指的方向对准的图形界面元素替换手的部分和手指。

19.根据示例18所述的处理器可读存储装置,其中,确定手指的方向进一步包括:识别手指的尖端,该尖端表示用于手指的第一点;识别手指上的第二点,该第二点沿手指与第一点间隔开;生成在第一点和第二点之间延伸的方向线;以及确定一个或多个图像内的方向线的方向。

20.根据示例18或19所述的处理器可读存储装置,其中,确定手指的方向进一步包括:从视场的指定角确定手指的当前方向;识别用于一个或多个图像的手指的组合方向以指示先前的组合方向;确定当前方向与先前组合方向之间的位置上的变化超过位置阈值;以及基于位置上的变化超过位置阈值,从一组第一方向识别操作和一组第二方向识别操作中选择。

21.一种承载处理器可执行指令的机器可读介质,该处理器可执行指令当由机器的一个或多个处理器执行时,使机器执行示例1至11中任一项所述的方法。

以上部分地在具体实施方式中阐述了本设备和方法的这些和其它示例和特征。

技术实现要素:
和示例旨在提供本主题的非限制性实施例。它无意提供排他性或详尽的解释。包括具体实施方式以提供关于本主题的进一步信息。

模块、组件和逻辑

在此将某些实施例描述为包括逻辑或多个组件、模块或机制。模块和组件可以构成硬件模块或组件。“硬件模块”或“硬件组件”是能够执行某些操作的有形单元,并且可以以某种物理方式配置或布置。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的硬件模块或硬件组件(例如,至少一个硬件处理器、处理器或一组处理器)由软件(例如,应用或应用部分)配置为用于执行如在此所述的某些操作的硬件模块或硬件组件。

在一些实施例中,硬件模块或硬件组件以机械、电子或其任何合适的组合实现。例如,硬件模块或硬件组件可以包括永久配置为执行某些操作的专用电路或逻辑。例如,硬件模块或硬件组件可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件模块或硬件组件还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件模块或硬件组件可以包括包含在通用处理器或其它可编程处理器内的软件。应当理解,可以通过成本和时间考虑来驱动机械地在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中实现硬件模块或硬件组件的决定。

因此,短语“硬件模块”或“硬件组件”应该被理解为包含有形实体,是物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)从而以某个方式操作或执行在此所述的某些操作的实体。如在此所使用的,“硬件实施的模块”或“硬件实现的组件”分别指的是硬件模块或硬件组件。考虑其中临时配置(例如,编程)硬件模块或硬件组件的实施例,不需要在任何一个时刻配置或实例化硬件模块或硬件组件中的每一个硬件模块或硬件组件。例如,在硬件模块或硬件组件包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间被配置为分别不同的专用处理器(例如,包括不同的硬件模块或硬件组件)。因此,软件可以配置特定的一个或多个处理器,例如,在一个时刻构成特定的硬件模块或硬件组件,并在不同的时刻构成不同的硬件模块或硬件组件。

硬件模块或硬件组件可以向其它硬件模块或硬件组件提供信息并从其接收信息。因此,所描述的硬件模块或硬件组件可以被视为通信地耦合。在同时存在多个硬件模块或硬件组件的情况下,可以通过在两个或更多个硬件模块或硬件组件之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件模块或硬件组件的实施例中,可以例如通过存储和检索多个硬件组件可访问的存储器结构中的信息来实现这些硬件模块或硬件组件之间的通信。例如,一个硬件模块或硬件组件执行操作并将该操作的输出存储在与其通信耦合的存储器装置中。然后,另一硬件模块或硬件组件可以稍后访问存储器装置以检索和处理存储的输出。硬件模块或硬件组件还可以发起与输入或输出装置的通信,并且可以在资源(例如,信息集合)上操作。

在此描述的示例方法的各种操作可以至少部分地由临时配置(例如,通过软件)或永久配置为执行相关操作的处理器来执行。无论是临时配置还是永久配置,这种处理器构成处理器实现的模块或组件,该模块或组件操作以执行在此所述的一个或多个操作或功能。如在此所使用的,“处理器实现的模块”或“处理器实现的组件”指的是使用处理器实现的硬件模块或硬件组件。

类似地,在此描述的方法可以至少部分地由处理器实现,其中特定的一个处理器或多个处理器是硬件的示例。例如,方法的操作中的至少一些操作可以由处理器、处理器实现的模块或处理器实现的组件执行。此外,处理器还可以操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(saas)。例如,操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)和经由适当的接口(例如,api)来访问。

某些操作的性能可以在处理器之间分配,不仅驻留在单个机器内,而且横跨多个机器部署。在一些示例实施例中,处理器或处理器实现的模块或组件位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其它示例实施例中,处理器或处理器实现的模块或组件横跨多个地理位置分布。

应用

图8示出与一些实施例一致的执行移动操作系统(例如,iostm、androidtmphone或其它移动操作系统)的示例移动装置800。在一个实施例中,移动装置800包括可操作来从用户802接收触知数据的触摸屏。例如,用户802可物理地触摸804移动装置800,并且响应于触摸804,移动装置800可以确定触知数据,诸如触摸位置、触摸力或手势动作。在各种示例实施例中,移动装置800显示主屏幕806(例如,iostm上的springboard),其可操作以启动应用或以其它方式管理移动装置800的各个方面。在一些示例实施例中,主屏幕806提供诸如电池寿命、连接性或其它硬件状态的状态信息。用户802可以通过触摸由相应的用户界面元素占据的区域来激活用户界面元素。以该方式,用户802与移动装置800的应用交互。例如,触摸主屏幕806中包括的特定图标占据的区域导致启动与特定图标对应的应用。

如图8中所示,移动装置800可以包括成像装置808。成像装置808可以是相机或耦接到能够采集视频流或一个或多个连续图像的移动装置800的任何其它装置。成像装置808可以由视频修改系统160或可选择的用户界面元素来触发,以启动对图像的视频流或连续体的采集,并将图像的视频流或连续体传递给视频修改系统160以根据在本公开中描述的一个或多个方法来处理。

可以在移动装置800上执行许多种类的应用(也称为“应用软件”),诸如本机应用(例如,在objective-c、swift中编程的应用,或在iostm上运行的另一适当语言,或在androidtm上运行的java中编程的应用)、移动web应用(例如,以超文本标记语言-5(html5)编写的应用)或混合应用(例如启动html5会话的本机壳应用)。例如,移动装置800包括消息传递应用软件、音频录制应用软件、相机应用软件、书籍阅读器应用软件、媒体应用软件、健身应用软件、文件管理应用软件、位置应用软件、浏览器应用软件、设置应用软件、联系人应用软件、电话呼叫应用软件或其它应用软件(例如,游戏应用软件、社交网络应用软件、生物度量监视应用软件)。在另一示例中,移动装置800包括诸如的社交消息传送应用软件810,其与一些实施例一致,允许用户交换包括媒体内容的短暂消息。在该示例中,社交消息传送应用软件810可以合并在此描述的实施例的各方面。例如,在一些实施例中,社交消息传递应用软件810包括由社交消息传递应用软件810的用户创建的短暂的媒体图库。这些图库可以由用户张贴并且可由用户的联系人(例如,“朋友”)查看的视频或图片组成。可替代地,公共图库可由社交消息传递应用的管理员创建,该应用软件810由来自应用的任何用户(并且可由所有用户访问)的媒体组成。在又一个实施例中,社交消息传递应用软件810可以包括“杂志”特征,其由发布者在社交消息传递应用软件810的平台上生成并可由任何用户访问的文章和其它内容组成。这些环境或平台中的任何一个都可以用来实现本公开的概念。

在一些实施例中,短暂消息传送系统可以包括具有短暂视频剪辑或图像的消息,该短暂视频剪辑或图像在诸如观看时间或观看完成的删除触发事件之后被删除。在这种实施例中,当短暂视频剪辑正被装置采集并且使用短暂消息系统将短暂视频剪辑发送到另一装置时,实现视频修改系统160的装置可以识别、跟踪并且在短暂的视频剪辑内修改关注的对象。

软件架构

图9是示出可以安装在上述装置上的软件902的架构的框图900。图9仅仅是软件架构的非限制性示例,并且将理解可以实现许多其它架构来促进在此所述的功能。在各种实施例中,软件902由诸如图10的机器1000的硬件来实现,该机器1000包括处理器1010、存储器1030和i/o组件1050。在该示例架构中,软件902可以被概念化为层的堆栈,其中每一个层可以提供特定的功能。例如,软件902包括诸如操作系统904、库906、帧908和应用910的层。操作上,与一些实施例一致,应用910通过软件堆栈调用应用编程接口(api)调用912,并响应于api调用912接收消息914。

在各种实施方式中,操作系统904管理硬件资源并提供公共服务。操作系统904包括例如内核920、服务922和驱动器924。与一些实施例一致,内核920作为硬件与其它软件层之间的抽象层。例如,内核920提供了存储器管理、处理器管理(例如调度)、组件管理、网络连接和安全设置等功能。服务922可以为其它软件层提供其它公共服务。根据一些实施例,驱动器924负责控制底层硬件或与底层硬件接口连接。例如,驱动器924可以包括显示器驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。

在一些实施例中,库906提供由应用910利用的低级通用基础设施。库906可以包括系统库930(例如,c标准库),其可以提供诸如存储器分配函数、字符串操作函数、数学函数等的函数。此外,库906可以包括api库932,诸如媒体库(例如,支持各种媒体格式(诸如运动图像专家组-4(mpeg4)、高级视频编码(h.264或avc)、运动图像专家组-3(mp3)、高级音频编码(aac)、自适应多速率(amr)音频编解码器、联合图像专家组(jpeg或jpg)或便携式网络图形(png))的呈现和操纵的库)、图形库(例如,用于在显示器上的图形内容中呈现二维(2d)和三维(3d)的opengl帧)、数据库库(例如,提供各种关系数据库功能的sqlite)、web库(例如,提供网页浏览功能的webkit)等。库906同样可以包括各种各样的其它库934,以向应用910提供许多其它api。

根据一些实施例,帧908提供可由应用910利用的高级公共架构。例如,帧908提供各种图形用户界面(gui)功能、高级别资源管理、高级位置节点等。帧908可以提供可由应用910利用的其它api的广泛范围,其中的一些可以特定于特定操作系统或平台。

在示例实施例中,应用910包括主页应用950、联系人应用952、浏览器应用954、书籍阅读器应用956、位置应用958、媒体应用960、消息传递应用962、游戏应用964以及诸如第三方应用966的其它广泛分类的应用。根据一些实施例,应用910是执行程序中定义的功能的程序。可以利用各种编程语言来创建以各种方式构造的应用910,诸如面向对象的编程语言(例如,objective-c、java或c++)或过程编程语言(例如,c或汇编语言)。在具体示例中,第三方应用966(例如,由特定平台的供应商之外的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用)可以是在移动操作系统(诸如iostm、androidtmphone或其它移动操作系统)上运行的移动软件。在该示例中,第三方应用966可以调用由操作系统904提供的api调用912以便于执行在此描述的功能。

示例机器架构和机器可读介质

图10是示出根据一些实施例能够从机器可读介质(例如,非暂态处理可读存储介质或处理器可读存储装置)读取指令(例如处理器可执行指令)并执行在此讨论的任何方法的机器1000的组件的框图。具体地,图10示出了以计算机系统的示例形式的机器1000的示意图,在该计算机系统内可以执行用于使机器1000执行在此讨论的任何一种或多种方法的指令1016(例如,软件、程序、应用、小程序、应用或其它可执行代码)。在替代实施例中,机器1000作为独立装置操作或者可以耦接(例如,网络连接)到其它机器。在联网部署中,机器1000可以以服务器-客户端网络环境中的服务器机器或客户端机器的能力操作,或者作为对等(或分布式)网络环境中的对等机器。机器1000可以包括但不限于服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能手机、移动装置、可穿戴装置(例如,智能手表)、智能家居装置(例如,智能家电)、其它智能装置、网络装置、网络路由器、网络交换机、网络桥接器、或者连续或以其它方式指定机器1000将采取的动作的能够执行指令1016的任何机器。此外,虽然只示出单个机器1000,但是术语“机器”同样可被认为包括单独或联合执行指令1016以执行在此所讨论的任何一种或多种方法的机器1000的集合。

在各种实施例中,机器1000包括处理器1010、存储器1030以及可被配置成经由总线1002彼此通信的i/o组件1050。在示例实施例中,处理器1010(例如,中央处理单元(cpu)、简化指令集计算(risc)处理器、复合指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、asic、射频集成电路(rfic)、另一个处理器或其任何合适的组合)包括例如可以执行指令1016的处理器1012和处理器1014。术语“处理器”旨在包括多核处理器,该多核处理器可以包括可以同时执行指令1016的两个以上独立处理器(同样称为“核”)。尽管图10示出了多个处理器1010,但是机器1000可以包括单个具有单核的处理器、单个具有多核的处理器(例如,多核处理器)、多个具有单核的处理器、多个具有多核的处理器或其任何组合。

根据一些实施例,存储器1030包括主存储器1032、静态存储器1034和经由总线1002可被处理器1010访问的存储单元1036。存储单元1036可以包括机器可读介质1038,在该机器可读介质1038上存储了体现在此所述的任何一种或多种方法或功能的指令1016。指令1016同样可以在由机器1000的其执行期间完全或至少部分地驻留在主存储器1032内、静态存储器1034内、处理器1010中的至少一个内(例如,在处理器的高速缓冲存储器内)或任何合适的组合。因此,在各种实施例中,主存储器1032、静态存储器1034和处理器1010被认为是机器可读介质1038。

如在此所使用的,术语“存储器”是指能够临时或永久地存储数据的机器可读介质1038,并且可以认为包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓存、闪存和高速缓存。虽然机器可读介质1038在示例实施例中被示出为单个介质,但术语“机器可读介质”应当被认为包括能够存储指令1016的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。术语“机器可读介质”同样可被视为包括能够存储指令(例如,指令1016)用于由机器(例如,机器1000)执行的任何介质或多个介质的组合,使得指令在由机器的一个或多个处理器(例如,处理器1010)执行时使机器执行在此描述的任何一种或多种方法。因此,“机器可读介质”是指单个存储装置或装置,以及包括多个存储装置或装置的“基于云”的存储系统或存储网络。因此,术语“机器可读介质”可被视为包括但不限于以固态存储器(例如,闪存)、光学介质、磁性介质、其它非易失性存储器(例如,可擦除可编程只读存储器(eprom))或其任何合适的组合的形式的一种或多种数据存储库。术语“机器可读介质”本身明确地排除非法定信号。

i/o组件1050包括用于接收输入、提供输出、产生输出、发送信息、交换信息、采集测量等的各种各样的组件。通常,可理解的是i/o组件1050可以包括图10中未示出的许多其它组件。i/o组件1050根据功能被分组,仅用于简化以下讨论,并且分组决不是限制性的。在各种示例实施例中,i/o组件1050包括输出组件1052和输入组件1054。输出组件1052包括视觉组件(例如,显示器,诸如等离子体显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、听觉组件(例如扬声器)、触觉组件(例如振动电动机)、其它信号发生器等。输入组件1054包括字母数字输入组件(例如,键盘、配置为接收字母数字输入的触摸屏、光电键盘或其它字母数字输入组件)、基于点的输入组件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其它指示仪器)、触知输入组件(例如,物理按钮、提供触摸或触摸手势的位置和力的触摸屏、或其它触知输入组件)、音频输入组件(例如,麦克风)等。

在一些另外的示例实施例中,i/o组件1050包括各种其它组件中的生物度量组件1056、运动组件1058、环境组件1060或位置组件1062。例如,生物度量组件1056包括检测表达(例如手部表达、面部表情、声音表达、身体姿势或嘴部姿势)、测量生物信号(例如,血压、心率、体温、汗水或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的组件。运动组件1058包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋转传感器组件(例如陀螺仪)等。环境组件1060包括例如照明传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近度传感器组件(例如,检测附近物体的红外传感器)、气体传感器组件(例如,机器嗅觉检测传感器、用于为了安全而检测危险气体浓度或测量大气中的污染物的气体检测传感器)或可能提供与周围物理环境相对应的指示、测量或信号的其它组件。位置组件1062包括定位传感器组件(例如,全球定位系统(gps)接收器组件)、高度传感器组件(例如,高度计或气压计,其可以检测可以从哪个高度导出的空气压力)、取向传感器组件(例如,磁力计)等。

通信可以使用各种各样的技术来实现。i/o组件1050可以包括通信组件1064,其可操作以分别经由耦接器1082和耦接器1072将机器1000耦接到网络1080或装置1070。例如,通信组件1064包括网络接口组件或与网络1080接口连接的另一合适装置。在另外的示例中,通信组件1064包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(nfc)组件、组件(例如,低功耗)、组件和经由其它模式提供通信的其它通信组件。装置1070可以是另一机器或各种各样的外围装置(例如,经由usb耦接的外围装置)中的任何一个。

此外,在一些实施例中,通信组件1064检测标识符或包括可操作以检测标识符的组件。例如,通信组件1064包括射频识别(rfid)标签读取器组件、nfc智能标签检测组件、光学读取器组件(例如,光学传感器,其用于检测诸如通用产品代码(upc)条形码的一维条形码、诸如快速响应(qr)代码、aztec代码、数据矩阵、数字图形、最大码、pdf417、超码、统一商业代码缩减空格符号(uccrss)-2d条形码和其它光学代码的多维条形码)、声学检测组件(例如,用于识别标记的音频信号的麦克风)或其任何合适的组合。此外,可以经由可以指示特定位置的通信组件1064来导出各种信息,诸如经由因特网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测或nfc信标信号的位置等。

传输介质

在各种示例实施例中,网络1080的一个或多个部分可以是自组织网络、内联网、外部网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、因特网、因特网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络,或两个以上此类网络的组合。例如,网络1080或网络1080的一部分可以包括无线或蜂窝网络,并且耦接1082可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或另一种类型的蜂窝或无线耦接。在该示例中,耦接1082可以实现各种类型的数据传输技术中的任何一种,诸如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线业务(gprs)技术、gsm演进增强型数据速率(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准制定组织定义的其它标准、其它远程协议或其它数据传输技术。

在示例实施例中,经由网络接口装置(例如,在通信组件1064中包括的网络接口组件)使用传输介质通过网络1080发送或接收指令1016,并且利用多个公知的传输协议(例如,http)中的任何一个。类似地,在其它示例实施例中,使用传输介质经由耦接1072(例如,对等耦接)向装置1070发送或接收指令1016。术语“传输介质”可被视为包括能够存储、编码或携带由机器1000执行的指令1016的任何无形介质,并且包括数字或模拟通信信号或其它无形介质以便于这种软件的通信实现。

此外,因为机器可读介质1038不体现传播信号,所以机器可读介质1038是非暂态的(换句话说,不具有任何短暂信号)。然而,将机器可读介质1038标记为“非暂态”不应被解释为意味着介质不能移动。介质应该被认为是可从一个物理位置传送到另一物理位置。另外,由于机器可读介质1038是有形的,因此介质可以被认为是机器可读装置。

语言

在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。虽然将一种或多种方法的单独操作示出和描述为单独的操作,但可以同时执行一个或多个单独的操作,并且不需要以所示顺序执行操作。作为示例配置中的单独组件呈现的结构和功能可以被实现为组合的结构或组件。类似地,作为单个组件呈现的结构和功能可以被实现为分离的多个组件。这些和其它变化、修改、添加和改进落入本文主题的范围内。

虽然已经参考具体示例实施例描述了本发明主题的概述,但是在不脱离本公开的实施例的更广泛范围的情况下,可以对这些实施例进行各种修改和改变。本发明主题的此类实施例在此可以单独地或集体地由术语“发明”指代,这仅仅为了方便,如果事实上公开了多于一个则不旨在将本申请的范围限制于任何单个公开内容或发明构思。

在此示出的实施例足够详细地描述,以使本领域技术人员能够实践所公开的教导。可以使用和从中导出其它实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。因此,具体实施方式不应被认为是限制性的,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围来限定。

如在此所使用的,术语“或”可以以包含或排除的方式来解释。此外,可以为在此所述的资源、操作或结构提供多个实例作为单个实例。此外,各种资源、操作、模块、组件、引擎和数据存储之间的边界是一定程度上任意的,并且在特定说明性配置的上下文中示出了特定的操作。可以设想功能的其它分配,并且这些其它分配可以落入本公开的各种实施例的范围内。通常,作为示例配置中的分离的资源呈现的结构和功能可以被实现为组合的结构或资源。类似地,作为单个资源呈现的结构和功能可以被实现为分离的资源。这些和其它变化、修改、添加和改进落入由所附权利要求所表示的本公开的实施例的范围内。因此,说明书和附图被认为是说明性的而不是限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1