用于设备交互的空中手指指向检测的制作方法

文档序号:17980508发布日期:2019-06-22 00:04阅读:264来源:国知局
本申请要求2016年11月1日提交的题为“fingerpoint:towardsnon-intrusivemid-airinteractionforsmartglass”的第62/496,854号美国临时申请的优先权,该申请的全部内容通过引用合并于此。本公开通常涉及感测用户与设备的交互,包括经由指向手指的空中检测来感测用户与设备的交互。
背景技术
::近来,许多可穿戴计算设备(例如智能手表和智能眼镜)已出现在高科技商业产品中。这些设备的尺寸持续缩小,使得至少在很大程度上最终导致硬件界面元件(例如按钮、触摸板和触摸屏)将被逐步淘汰。例如,智能眼镜是方便的,因为除了其他特征之外,智能眼镜还可以显示包括增强信息的虚拟内容。然而,与智能眼镜的交互相对受阻并且存在问题。举例来说,显示器上的虚拟内容是不可触摸的,因此直接操作可能是疲劳且容易出错的任务。其次,与智能手机相比,现代智能眼镜还存在其他挑战性的问题,例如显示尺寸缩小,输入界面小,计算能力有限以及电池寿命短。智能眼镜的可用输入方法限制了其交互的有效性。一种这样的设备要求用户通过单独的有形手持设备进行交互。另一种设备依赖于语音命令作为输入源,这通常是不适当的或不方便的,例如在公共区域中当用户隐私成为问题时,或者发出语音命令因噪声太多而在社交上不合适或者很困难时。另一种智能眼镜设备包括迷你轨迹球,其提供小区域用于轻击和点击,然而,迷你轨迹球的小区域上的当前输入选项可以触发不需要的操作,例如无意的点击,并且在想要连续的单次轻击的情况下却无意中感测到两次轻击。用于设备输入感测的另一解决方案是手势检测,其通过让用户穿戴专用的仪器手套和/或其他传感器来操作。然而,该解决方案使得用户需要握住或穿戴额外的装置/标记或身体附件。利用深度相机进行的手势检测是设备输入感测的另一种选择,然而深度相机通常在商业产品中不可用,这通常是因为其额外的成本使得诸如智能眼镜之类的设备对消费者以及制造商来说吸引力降低。技术实现要素:提供本
发明内容是为了以简化的形式介绍一些代表性概念,这些概念将在下面的具体实施方式中进一步描述。本
发明内容不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。简要地,本文描述的技术的一个或多个方面是针对将图像数据处理为指尖位置。各方面包括:处理与包括具有指向手指的手的捕获图像相对应的相机图像数据。所述处理包括:对所述相机图像数据执行图像分割,以获得分割图像数据,所述分割图像数据将具有指向手指的手的像素与其他像素区分开;以及使用滑动窗口扫描所述分割图像数据,所述扫描包括使用当前位置处的滑动窗口来确定当前位置处的滑动窗口内的像素的第一值是否满足具有指向手指的手的选择标准。响应于确定满足选择标准,各方面包括:将表示该像素的顶点节点添加到图集,并执行对所述图集中的与所述顶点节点相关的一个或多个其他节点的搜索。响应于确定不满足选择标准并且直到使用所述滑动窗口中的每个位置,其他方面包括使用另一位置处的滑动窗口来确定另一位置处的滑动窗口内的下一像素的下一值是否满足所述选择标准。各方面包括估计具有指向手指的手的指尖的位置,所述估计包括基于所述图集中的与其他图形相关的节点的数量从所述图集中识别选中图形,以及根据选中图形的根节点来获取指尖的位置。从以下结合附图的详细描述,其他优点将变得明显。附图说明本文描述的技术通过示例的方式示出,并且不限于附图,附图中相同的附图标记表示类似的元件,附图中:图1是根据一个或多个示例实施方式的被配置为确定和使用用于用户输入的指尖位置的设备的示例框图表示。图2是根据一个或多个示例实施方式的用于通过徒手(freehand)的空中指尖检测进行光标移动的手势控制的示例表示。图3是根据一个或多个示例实施方式的用于光标移动的手势控制和设备相机前方的相应交互范围的示例表示。图4和图5是根据一个或多个示例表示用于估计指尖位置的逻辑和数据结构的示例框图表示。图6和图7是根据一个或多个示例实施方式的用于检测图像内的指尖位置的滑动窗口的示例表示。图8是表示根据一个或多个示例实施方式的用于将图像数据处理成指尖坐标的示例操作的流程图。图9是表示根据一个或多个示例实施方式的图像分割阶段的示例操作的流程图。图10至图13包括表示根据一个或多个示例实施方式的图形构建阶段的示例操作的流程图。图14示出了根据一个或多个示例实施方式的可操作以执行所公开的系统和方法的计算系统的框图。具体实施方式本文描述的技术的各个方面通常涉及图像捕获和处理,其允许用户执行空手(barehanded)的空中指向操作以定位目标对象。该技术利用人类的自然本能来精确地定位物体。在一个或多个方面,可通过单目相机(例如嵌入智能眼镜(或其他合适设备)中的相机)在图像内捕获用户的手和指尖。然后可以将图像数据处理成指尖位置。例如,可以根据当前相机捕获的和计算的用户的指尖位置来移动在投影显示器内显示的光标;当光标移动到期望的目标位置时,用户可以(例如,通过轻击触摸板或迷你轨迹球)进一步指示硬件界面来选择目标对象(例如,光标下面的图标等)。还可以检测用于选择等的空中轻击。如将理解的,该技术提供了非侵入无缝式空中交互技术,包括用于人类-智能眼镜交互的空中交互技术,而无需任何附加的环境传感器和/或仪器手套。实际上,本文描述的技术已成功地实施在googleglasstm1.0版(cpu1.2ghz双核,ram1.0gb,16gb存储容量,500万像素摄像头,570mah电池续航时间;操作系统android4.4.0)和madgaze(cpu1.2ghz四核,ram512mb,4gb存储容量,500万像素摄像头和370mah电池续航时间;操作系统android4.2.2;请参阅http://madgaze.com/ares/specs)上。所描述的技术的一个或多个实施方式实现平均每秒20帧,其高于实际系统交互的最小要求(执行比硬件界面的交互快1.82倍),而仅消耗额外的14.18%的能量并且仅占cpu资源的19.30%。应当理解,本文的任何示例均为非限制性的。例如,指尖指向/位置检测的实施方式在本文中示出为并入智能眼镜设备中,然而具有相机的其他设备(包括智能电话、智能电视、具有相机的监视器等)可受益于本文描述的技术。照此,本文描述的技术不限于本文描述的任何特定实施方式、实施例、方面、概念、结构、功能或示例。而是,本文描述的任何实施方式、实施例、方面、概念、结构、功能或示例是非限制性的,并且该技术可以以通常在用户交互检测中提供益处和优点的各种方式使用。通常并且如图1的示例所示,设备102包括用户界面104,例如经由智能眼镜设备投射的“抬头”显示器。用户手动地在空气中(如绘制的手和手指106所示)指向显示在用户界面104上的要素。设备相机108(其可以是置于设备102中的传统单目相机)捕获包括用户的手和手指106以及背景图像的图像数据110的相机帧,如捕获图像112所示;(注意,通常相机108不捕获投影图像,因为这仅对用户可见)。如本文所描述的,经由手指指向位置检测逻辑112将得到的图像数据110处理成用户界面输入数据114,例如估计的指尖位置的x坐标和y坐标。诸如操作系统或应用的程序116消耗数据114,由此当用户改变他或她的指尖位置时,能够在用户界面104内移动用户界面光标等。当选择传感器114动作时,诸如接触敏感触摸板、接近传感器或其他合适的传感器之类的选择传感器118引起其他用户界面输入数据114;(注意,可以使用任何类型的选择传感器,包括基于声音、手势、伴随设备输入等的选择)。以这种方式,例如,在传感器动作时,指尖坐标可以被映射到输入对象(例如,由出现在投影显示器上的图标所表示的输入对象),由此用户进行该对象的选择;一旦应用程序运行,可以类似地获得该应用程序的用户输入。图2表示转换为用户界面显示器220上的光标移动的手指在空中的示例移动。用户经由智能眼镜设备222看到用户界面显示220,并且(在该示例中左手食指的指尖)从第一空中位置224a移动到第二空中位置224b。如本文所述的捕获和处理该指尖移动,导致光标从表示应用程序(app1)的图标226(1)移动到表示应用程序(app9)的图标226(9)。当光标位于图标226(9)上方时,用户可以通过使传感器228动作(例如,适当地轻击智能眼镜设备222)来启动该应用程序app(9)。图3示出了用于光标移动的姿势控制以及设备相机前面的相应的交互范围的示例。可以看出,用户手指的指尖成为交互中的重要特征,并且在界面330中与鼠标状光标(或其他指示指示器)同时映射。指尖的滑动(通过箭头332示出)驱动光标从标记为334(1)的图标1移动到标记为334(2)的图标2。为此,如本文所述,智能眼镜338的主体上的单目相机336检测和跟踪指尖。在该示例中,用户在三维空间中自由地移动他或她的左手,这使得能够以舒适自然的姿势进行空中交互。在该示例中,移动的手位于相机前方,距离约为10至15厘米。用户的手部移动保持最小,水平方向约为24至32厘米,垂直方向约为16至21厘米。转到与确定指尖位置有关的方面,图4和图5示出了基于图像分割阶段、不交并树状构造(disjionunionarborescenceconstruction)阶段和指尖位置估计阶段的指尖位置的示例实施方式。图4示出了这些阶段和各种得到的数据结构,图5示出了应用于图像帧的数据处理的相应表示。在图4中,图1的设备相机108例如以每秒20帧的速率输出图像数据440,如图5中的相机帧540所示。由图5的图像541表示一个这样的帧。在一个或多个实施方式中,首先经由图像分割阶段处理捕获的图像数据。在图像分割阶段,图像分割逻辑442将图像从其标准颜色空间转换为更适合于处理的空间/模式。例如,在一个或多个示例实施方式中,图像分割逻辑442将android标准颜色空间(yuv420sp)转换为hsv(色调饱和值颜色)模式。然后,图像分割逻辑442应用阈值来提取肤色并返回二进制图像(阵列),如图4中的分割图像数据444所示,并且如图5的二进制图像545所示。为此,用{0,1}的二进制函数$i(x,y)表示图像分割的输出,使得0<=x<w,0<=y<h,其中w和h分别表示图像的宽度和高度。当且仅当位置(x,y)处的像素属于肤色时,二进制函数i(x,y)=1;其他情况下,i(x,y)=0。对于不同的用户肤色,可以基于每个用户和/或每个组来校准肤色阈值。本文参考图9描述图像分割阶段/逻辑的附加描述。为了从得到的阈值图像545中移除伪像,可以在某些实施方式中使用形态变换(morphologicaltransformation)。然而,由于传统智能眼镜的计算能力有限,因此形态学操作(具体是打开和关闭)是不实用的。因此,本文描述了一种去除伪像的滤波方法,其中输出用于下一阶段中不交并树状构造。在该示例中的下一处理阶段中,不交并树状构建逻辑446构建了树状图(如图4中的具有图5中的“映射图”表示549的不交并树状图数据448所示)来表示二进制图像中的与满足肤色阈值的各像素相对应的路径。请注意,在图论中,树状图是有向无环图,其中从根节点到图形中的每个其他节点只有一条路径。设a(v,e)表示顶点集为v和边集为e的树状图。设集合da={a1(v,e),a2(v,e),...,am(v,e)}表示一组m个树状图,其中da中任意两个树状图的顶点集是不相交的。集合da在本文中被称为不交并树状集。本文描述的技术为要从i(x,y)构造的集合da创建有效的数据结构。节点vx;y属于根据以下标准的树状图a(v,e):其中f是一组坐标,其定义了尺寸为s的滤波器如下:f={(i,j)|i=0∧0≤j<s}∪{(i,j)|j=0∧0≤i<s}(2)如图6和图7所示,由不交并树状构造逻辑446使用尺寸为s的滑动窗口来扫描图像i(x,y)(标记为660)。对于每个滑动窗口,等式(1)的条件应用于窗口中心处的像素。如果为集合选择顶点vx;y,则将新的树状图添加到集合da,并且启动递归广度优先搜索以将滑动窗口指向具有潜在新节点的相邻窗口上,如图7中的虚线箭头所示(其中诸如窗口66的窗口中的“n”表示图形节点被添加到该集合中)。在一个或多个实施方式中,宽度优先搜索仅在同一扫描线或下面的线上移动滑动窗口,这是因为从顶行到底行来扫描图像。在广度优先搜索操作期间,算法递增地标记每个节点的深度,并更新属于每个深度级别的节点的数量。该算法还标记了已访问的滑动窗口(由图7中的一些窗口中的“v”示出),使得在将来的扫描中不再访问它们。结果,基于其数量已确定的滑动窗口的尺寸,以线性时间扫描图像;(例如,对于尺寸为320*240且滤波器尺寸s=10的图像,存在32*24=768个滑动窗口)。在本文中参考图10至图13描述不交并树状构造相位/逻辑的额外描述。应注意,在上述示例中,窗口/滤波器尺寸在水平方向和垂直方向上是相同的。然而,应理解,窗口/滤波器尺寸可具有不同的水平尺寸和垂直尺寸。在指尖位置估计阶段450(图4和图5)中,处理表示集合da的数据结构、以及每个节点的深度级别和任何给定深度处的节点数量。在该阶段,算法从集合da中选择具有最大节点数的树状图,并确定指尖位于选中图形的根节点处。在可选操作中,还可以计算手的定向。为此,手定向估计逻辑454(图4)从图中的根节点选择最长路径上的各节点,并找到将根节点连接到所述各节点的向量,通常如图5中的框553所示。转到对示例实施方式的解释,图8是示出作为各步骤而示例的包括上述各阶段的一般操作的流程图。步骤802表示捕获可包括指向手指的图像。步骤804表示图像分割阶段,参考图9进一步描述,从步骤902开始,将捕获的图像转换至hsv空间。例如,在指尖检测的一个实施方式中使用320×240像素的相机分辨率,因为它适合于图像分割处理,并且在保持性能的同时减少伪像。android中的颜色空间转换是从yuv420sp到hsv,并且可以例如在c++中实现以在单个步骤中执行转换,以获得更好的性能(而不是首先转换为bgr,然后转换为hsv)。步骤904表示清除二进制图像阵列,并且步骤906选择例如x坐标和y坐标为(0,0)的第一像素。步骤908评估像素是否满足肤色阈值。如果是,则步骤910将“1”值写入二进制图像阵列中的与位置(0,0)相对应的位置;否则,该值保持为“0”。步骤912和914针对每个其他像素重复该过程,直到二进制图像阵列完成为止。尽管未明确示出,但应理解,像素的评估可以在左上角到右下角方向上进行,但是也可以使用任何合适的方向。返回图8,步骤806表示对二进制图像阵列执行不交并树状构造。在图10的操作中举例说明该阶段的细节,从步骤1002开始,选择第一扫描窗口,例如最左侧最顶端的窗口,并且将指示当前选中窗口是否是在最后一行窗口中的变量设置为假(false)。步骤1004评估在扫描期间先前是否已经访问过当前选中窗口,此时对于第一窗口结论为否。因此,步骤1004分支到步骤1006,步骤1006中评估等式(1),包括当前选中窗口的中心处的像素是等于1的二进制值。如上所述,可以使用10×10像素的滤波器来创建扩展的不交并表示的数据结构;在没有精确中心的情况下,可以近似被认为是中心的像素,例如,向右的第五像素和向下的第五像素。如果不满足等式(1),则步骤1008分支到步骤1026,步骤1026中对右侧的下一窗口重复所述评估过程,然后对向下的下一行中最左侧的窗口重复所述评估过程,直到每个窗口都被访问过为止。如果满足等式(1),则步骤1008分支到步骤1010,步骤1010中将节点添加到集合,从而例如维持如本文所述的像素坐标、节点的级别和其他信息。如本文所述,在递归广度优先搜索期间将更新节点的边缘数据。为了执行广度优先搜索,在步骤1014处,步骤1014调用检查左侧函数(图11),在调用检查左侧函数之前,在步骤1016处将当前窗口重置到其位置,并调用检查右侧函数(图12)。通常并且如下所述,这些调用以及递归会检查左侧的窗口/节点,然后检查右侧的窗口/节点,直到在每个方向上满足停止条件。在调用检查右侧功能之前,步骤1020将当前窗口重置到其位置。如果如步骤1022处所评估的不是最后一行窗口,则在步骤1024处,步骤1024通过调用检查下面函数来继续广度优先搜索。由于在步骤1022处已经达到最后一行或者在步骤1024处调用检查下面函数之后,步骤1026至步骤1030重复该过程,直到每个窗口都通过广度优先搜索或通过步骤1030已经被访问过为止。图11示出了用于检查左侧函数的各步骤形式的示例操作,从步骤1102开始,扫描处理检查是否存在左侧的窗口,即,当前选中窗口是否已经在第一列。如果是,则检查左侧函数完成;但是,可能需要检查当前选中窗口下面的窗口(如果有)。因此,执行步骤1120和步骤1122以检查当前选中窗口下面的窗口,除非当前选中窗口已经在最后一行窗口中(步骤1120)。如果存在左侧窗口,则步骤1104将当前选中窗口向左移动到下一窗口,并且步骤1106评估该窗口是否已被访问过。如果是,则该处理返回。如果不是,则步骤1108将该窗口标记为已访问。步骤1110评估该新窗口是否已满足等式(1),包括中心像素具有二进制值1。如果不满足,则检查左侧操作结束。如果等式(1)的标准已经满足,则步骤1112递增一级别值,因为该节点在调用检查左侧函数的窗口下面。步骤1112将节点添加到集合,并将父节点中的边缘引用放置到该节点。步骤1114将开始左侧窗口设置为当前窗口,并且步骤1116针对该新的当前窗口递归地调用检查左侧函数。可以容易地理解,通过递归,沿向左方向继续搜索,直到到达第一列为止(步骤1102)、到达已访问的窗口为止(步骤1106)、或者不满足等式(1)为止(步骤1110)。当检查左侧操作完成时,步骤1118将当前窗口重置到它向左移动之前的位置。步骤1120评估该窗口是否在最后一行窗口中,如果不是,则调用检查下面操作,如参考图13所述。然后该处理返回。图12示出了用于检查右侧函数的各步骤形式的示例操作,从步骤1202开始,扫描处理检查是否存在右侧的窗口,即,当前选中窗口是否已经在最后一列。如果是,则检查右侧函数完成;但是,可能需要检查当前选中窗口下面的窗口(如果有)。因此,执行步骤1220和步骤1222以检查当前选中窗口下面的窗口,除非当前选中窗口已经在最后一行窗口中(步骤1220)。如果存在右侧窗口,则步骤1204将当前选中窗口向右移动到下一窗口,并且步骤1206评估该窗口是否已被访问过。如果是,则该处理返回。如果不是,则步骤1208将该窗口标记为已访问。步骤1210评估该新窗口是否已满足等式(1),包括中心像素具有二进制值1。如果不满足,则检查右侧操作结束。如果等式(1)的标准已经满足,则步骤1212递增一级别值,因为该节点在调用检查右侧函数的窗口下面(该窗口的子节点)。步骤1212将节点添加到集合,并将父节点中的边缘引用放置到该节点。步骤1214将开始右侧窗口设置为当前窗口,并且步骤1216针对该新的当前窗口递归地调用检查右侧函数。可以容易地理解,通过递归,沿向右方向继续搜索,直到到达最后一列为止(步骤1202)、到达已访问过的窗口为止(步骤1206)、或者不满足等式(1)为止(步骤1210)。当检查右侧操作完成时,步骤1218将当前窗口重置为它向右移动之前的位置。步骤1220评估窗口是否在最后一行窗口中,如果不是,则调用检查下面操作,如参考图13所述。然后该处理返回。图13示出了用于检查下面函数的各步骤形式的示例操作,从步骤1302开始,扫描处理检查下面是否存在窗口,即,当前选中窗口是否已经在最后一行。如果是,则检查下面函数完成,并且步骤1328将最后一行变量设置为真(true);但是,可能需要检查当前选中窗口左侧和右侧的窗口(如果有)。因此,执行步骤1330、步骤1332和步骤1334(在步骤1336返回之前)以分别检查当前选中窗口的左侧窗口和右侧窗口。注意,调用检查左侧函数(步骤1330)和检查右侧函数(步骤1334)可以是递归的,但是不会检查下面,这是因为最后一行指示符变量被设置为true。如果不在最后一行,则步骤1302分支到步骤1304,步骤1304将当前选中窗口沿向下方向移动到下一窗口。步骤1306评估该窗口是否已被访问过。如果是,则该处理返回。如果不是,则步骤1308将该窗口标记为已访问。步骤1310评估针对该新窗口是否已满足等式(1),包括窗口的中心像素具有二进制值1。如果不满足,则检查下面操作结束,并且检查下面处理经由步骤1326返回。如果相反,等式(1)的标准已经满足,则步骤1312增加一级别值,因为该节点在调用检查下面函数的窗口下面(该窗口的子节点)。步骤1312还将该节点添加到集合,并将父节点中的边缘引用放置到该节点。步骤1314将开始下面窗口设置为当前窗口,并且步骤1316针对新的当前窗口调用检查左侧函数。可以容易地理解,通过递归,如上所述沿向左方向继续搜索。步骤1318和步骤1320沿向右方向执行搜索,并且在步骤1326处返回之前,步骤1322和步骤1324沿向下方向递归地执行搜索。可以看出,该技术使得能够利用可穿戴设备或其他移动设备(例如,智能眼镜)进行空中空手(徒手)交互。该技术能够利用设备上可用的相机(通常是单目相机)来检测指尖位置以及相应的手势输入和控制。该技术提供了计算高效且有效节能的方法,性能强大而实时,并且在任务性能的改进方面易于使用。通过仅将指尖直接移动到适当的位置,已经成功地测试了提供直观的人类-智能眼镜交互的所述技术。一个或多个方面涉及通过包括处理器的设备来处理与包括具有指向手指的手的捕获图像相对应的相机图像数据。该处理包括对相机图像数据执行图像分割以获得分割图像数据,所述分割图像数据将具有指向手指的手的各像素与其他像素区分开,并使用滑动窗口扫描分割图像数据,其包括使用当前位置的滑动窗口确定当前位置处的滑动窗口内的第一像素值是否满足具有指向手指的手的选择标准。响应于确定满足选择标准,各方面包括:将表示该像素的顶点节点添加到图集,并执行对所述图集中的与所述顶点节点相关的一个或多个其他节点的搜索。响应于确定不满足选择标准,并且直到使用所述滑动窗口的每个位置之前,其他方面包括使用另一位置处的滑动窗口来确定其他位置处的滑动窗口内的下一像素的下一值是否满足所述选择标准。各方面包括估计具有指向手指的手的指尖位置,所述估计包括基于所述图集中的与其他图形相关的节点的数量从所述图集中识别选中图形,以及根据选中图形的根节点获得指尖的位置。执行图像分割可以包括:将基于设备的颜色空间转换为色调饱和值颜色模式。执行图像分割还可以包括:基于每个像素是否满足肤色标准来输出像素中的每个像素的二进制值。使用滑动窗口扫描分割图像数据可以包括:从捕获图像的左上方到捕获图像的右下方扫描分割图像数据,并且执行搜索可以包括:通过以下步骤对与顶点节点相关的一个或多个节点执行广度优先搜索:将滑动窗口向右移动到同一扫描线上的新位置并使用滑动窗口扫描新位置,以及进一步将滑动窗口移动到所述同一扫描线下方的扫面线的另一新位置并使用滑动窗口扫描该另一新位置。其他各方面可以包括:标记每个节点的深度值,以及更新分别属于每个深度级别的多组节点。使用滑动窗口可以包括:使用水平滤波器尺寸值和垂直滤波器尺寸值来确定滑动窗口的另一位置。使用滑动窗口扫描分割图像数据可以包括:一旦滑动窗口的每个位置被使用,则将滑动窗口的每个位置标记为已访问的滑动窗口位置,并且不重新使用已访问的滑动窗口位置。基于图集中的与其他图形相关的节点的数量从图集中识别选中图形可以包括:选择包括与其他图形相关的最大数量的节点的图形。扫描分割图像数据以确定滑动窗口内的像素的第一值是否满足选择标准可以包括:评估滑动窗口的中心像素或近似中心像素的值。其他方面可以包括确定手的手定向,包括:确定图集中距离根节点的最长路径上的图集中的各节点、以及确定将根节点连接到最长路径上的各节点的向量。一个或多个方面涉及被配置为将图像数据处理成二进制图像数据的图像分割逻辑,其中由二进制图像数据表示的二进制值中的每个二进制值表示相应像素是否满足肤色阈值标准。图形构造逻辑被配置为:将二进制图像数据处理成多个图形、移动滑动窗口以定位满足肤色阈值标准的匹配像素、以及存储根图形节点和根图形节点中的与多个图形中的匹配像素相对应的低级别节点,其中图形节点和低级节点中的每个节点表示匹配像素中的对应像素的像素坐标和节点的深度级别值。指尖位置估计逻辑被配置为从多个图形中选择图形,其中选中图形相对于多个图形中的其他图形具有最大数量的节点,并且其中指尖位置估计逻辑还被配置为使用图形的根节点的根节点坐标来估计图像数据内指尖的位置。多个图形可包括一组树状图形。图形构造逻辑还可以被配置为维持表示在由图形节点的相应深度级别值表示的不同给定深度处的节点的相应数量的值。图像分割逻辑、图形构造逻辑和指尖位置估计逻辑可以合并到智能眼镜设备中。智能眼镜设备还可以包括捕获图像数据的设备相机。一个或多个实施方式可以包括手定向确定逻辑,其被配置为基于以下步骤来确定与指尖相关联的手的定向:选择距离与指尖位置相对应的根节点的最长路径上的各节点作为选中节点、以及找到将根节点连接到选中节点的向量。一个或多个方面涉及对代表手和手的指尖的相机图像数据执行图像分割,以生成包括二进制值的二进制图像数据,所述二进制值代表相机图像数据中的各像素是否满足肤色标准。各方面包括生成树状图,包括使用未访问的滑动窗口扫描二进制图像数据,包括:使用未访问的滑动窗口中的滑动窗口中的选中像素来确定二进制值中的与选中像素相对应的二进制值是否表示选中像素满足肤色标准、以及将滑动窗口标记为已访问。响应于选中像素的二进制值指示选中像素满足肤色标准,本文描述的是将图形的顶点节点添加到树状图;通过将滑动窗口移动到未访问的滑动窗口中的下一滑动窗口来执行对与顶点节点相关的一个或多个节点的搜索,直到未访问的滑动窗口中的每个滑动窗口都被访问为止;进一步扫描二进制图像数据;在下一选中像素满足肤色标准的情况下添加另一顶点节点;以及执行与另一顶点节点相关的一个或多个其他节点的另一搜索。各方面包括估计手的指尖的位置,其包括基于树状图中的与其他图形相关的节点的数量从树状图中选择图形、以及基于该图形中的根节点表示的信息来确定指尖的位置。其他方面可以包括:对于未访问的滑动窗口中的每个滑动窗口,选择滑动窗口的中心像素作为选中像素。移动滑动窗口可以包括:基于一个或多个滤波器值来改变与未访问的滑动窗口中的候选滑动窗口的水平位置和垂直位置相对应的坐标、以及确定候选滑动窗口是否已经被标记为已访问。其他方面可以包括确定手的定向,其包括选择距离图形中的根节点的最长路径上的各节点以及找到将根节点连接到最长路径上的各节点的向量。示例环境本文描述的技术可以应用于能够运行程序和处理的任何设备或一组设备(机器)。因此,可以理解,可穿戴设备、诸如智能眼镜的移动设备、包括物理机和/或虚拟机的服务器、个人计算机、膝上型计算机、手持式计算设备、便携式计算设备和其他计算设备以及包括手机、平板电脑(tablet/slatecomputer)、游戏/娱乐控制台等在内的各种计算对象与包括本文示例的那些实施方式的各种实施方式结合使用。因此,下面参考图14描述的通用计算机制仅是计算设备的一个示例。为了提供所公开主题的各个方面的背景,图14和以下讨论旨在提供其中可以实现所公开主题的各个方面的合适环境的简要、一般性描述。虽然上面已经在一个计算机和/或多个计算机上运行的计算机程序的计算机可执行指令的一般上下文中描述了主题,但是本领域技术人员将认识到,所公开的主题也可以与其他程序模块结合来实现。通常,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、数据结构等。在本说明书中,诸如“储存”、“储存器”、“数据储存”、“数据储存器”、“数据库”的术语以及与组件的操作和功能相关的实质上任何其他信息存储组件是指“存储器组件”、或体现在“存储器”中的各实体、或包括存储器的各组件。应当理解,本文描述的存储器组件可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器,作为说明而非限制,易失性存储器1420、非易失性存储器1422、磁盘存储器1424、固态存储器设备和存储储存器1446。此外,非易失性存储器可以被包括在只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除rom(eeprom)或闪存中。易失性存储器可以包括随机存取存储器(ram),其充当外部高速缓冲存储器。作为说明而非限制,ram可以有许多形式,例如同步ram(sram)、动态ram(dram)、同步dram(sdram)、双倍数据速率sdram(ddrsdram)、增强型sdram(esdram)、同步链路dram(sldram)和直接总线式ram(drram)。另外,本文所公开的系统或方法的存储器组件旨在包括但不限于包括这些和任何其他合适类型的存储器。此外,应当注意,所公开的主题可以用其他计算机系统配置来实践,这些计算机系统配置包括单处理器或多处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持计算设备(例如,pda、电话、手表、平板电脑、上网本电脑……)、基于微处理器消费工业电子设备或可编程的消费工业电子设备等。所示出的各方面还可以在分布式计算环境中实践,其中通过通信网络链接的各远程处理设备执行任务;然而,本主题公开的一些(如果不是全部)方面可以在单独的计算机上实施。在分布式计算环境中,程序模块可以位于本地存储器存储设备和远程存储器存储设备中。图14示出了计算系统1400的框图,该计算系统1400例如内置于智能眼镜设备中,可操作以执行根据实施例的所公开的系统和方法。计算机1412可以是例如系统1400的硬件的一部分,计算机1412包括处理单元1414、系统存储器1416和系统总线1418。系统总线1418将包括但不限于系统存储器1416的各系统组件耦接至处理单元1414。处理单元1414可以是各种可用处理器中的任何一种。双微处理器和其他多处理器架构也可以用作处理单元1414。系统总线1418可以是若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用总线架构的本地总线,所述可用总线架构包括但不限于:工业标准体系结构(isa)、微通道架构(msa)、扩展isa(eisa)、智能驱动电子设备、vesa本地总线(vlb)、外围组件互连(pci)、卡总线、通用串行总线(usb)、高级图形端口(agp)、个人计算机存储卡国际协会总线(pcmcia)、火线(ieee1494)和小型计算机系统接口(scsi)。系统存储器1416可以包括易失性存储器1420和非易失性存储器1422。包含例如在启动期间用于在计算机1412内的各元件之间传送信息的例程的基本输入/输出系统(bios)可以被存储在非易失性存储器1422中。作为说明而非限制,非易失性存储器1422可包括rom、prom、eprom、eeprom或闪存。易失性存储器1420包括ram,其用作外部高速缓冲存储器。作为说明而非限制,ram可以有多种形式,例如sram、动态ram(dram)、同步dram(sdram)、双倍数据速率sdram(ddrsdram)、增强型sdram(esdram)、同步链路dram(sldram)、总线式直接ram(rdram)、直接总线式动态ram(drdram)以及总线式动态ram(rdram)。计算机1412还可以包括可移动/不可移动计算机存储介质、易失性/非易失性计算机存储介质。图14示出了例如磁盘存储器1424。磁盘存储器1424包括但不限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、闪存卡或记忆棒之类的设备。另外,磁盘存储器1424可以单独地包括存储介质,或者与其他存储介质组合地包括存储介质,其他存储介质包括但不限于,诸如光盘rom设备(cd-rom)、cd可记录驱动器(cd-r驱动器)、cd可重写驱动器(cd-rw驱动器)或数字通用磁盘rom驱动器(dvd-rom)之类的的光盘驱动器。为了有助于将磁盘存储设备1424连接到系统总线1418,通常使用可移动或不可移动的接口,例如接口1426。计算设备通常包括各种介质,其可以包括计算机可读存储介质或通信介质,这两个术语在本文中彼此不同地使用如下。计算机可读存储介质可以是可由计算机访问的任何可用存储介质,并且包括易失性介质和非易失性介质、可移动介质和不可移动介质。作为示例而非限制,计算机可读存储介质可以与用于存储诸如计算机可读指令、程序模块、结构化数据或非结构化数据之类的信息的任何方法或技术结合来实现。计算机可读存储介质可包括但不限于:ram、rom、eeprom、闪存或其他存储器技术、cdrom、数字通用盘(dvd)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备,或可用于存储所需信息的其他有形介质。在这方面,本文中的可以应用于储存器、存储器或计算机可读介质的术语“有形”应理解为仅排除无形信号本身作为修饰语而传播,并且不放弃覆盖不止传播无形信号本身的所有标准储存器、存储器或计算机可读介质。在一个方面,有形介质可以包括非暂时性介质,其中本文中的可以应用于储存器、存储器或计算机可读介质的术语“非暂时性”应理解为仅排除暂时性信号本身作为修饰语而传播,并且不放弃覆盖不止传播暂时性信号本身的所有标准储存器、存储器或计算机可读介质。为避免疑义,本文使用和定义术语“计算机可读存储设备”以排除暂时性介质。计算机可读存储介质可以例如通过访问请求、查询或其他数据检索协议、由一个或多个本地或远程计算设备访问,以用于关于由介质存储的信息的各种操作。通信介质通常在数据信号(例如诸如载波的调制数据信号)或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他结构化数据或非结构化数据,并且包括任何信息传递介质或信息传输介质。术语“已调制的数据信号”或“信号”是指以在一个或多个信号中编码信息的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质(例如有线网络或直接有线连接)以及无线介质(例如声学介质、rf介质、红外介质和其他无线介质)。可以注意到,图14描述了在合适的操作环境1400中描述的用户与计算机资源之间充当中介的软件。这种软件包括操作系统1428。可以被存储在磁盘存储器1424上的操作系统1428用于控制和分配计算机系统1412的资源。系统应用程序1430通过存储在系统存储器1416或磁盘存储器1424上的程序模块1432和程序数据1434、利用操作系统1428管理资源。应当注意,所公开的主题可以用各种操作系统或各操作系统的组合来实现。用户可以通过输入设备1436(包括经由本文所述的指尖指向)将命令或信息输入到计算机1412中。作为示例,移动设备142和/或便携式设备144可以包括体现在触敏显示面板中的用户界面,以允许用户与计算机1412交互。输入设备1436包括但不限于:诸如鼠标的定位设备、轨迹球、手写笔、触摸板、键盘、麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、电视调谐卡、数码相机、数码摄像机、网络摄像头、手机、智能手机、平板电脑等。这些和其他输入设备借助于接口端口1438通过系统总线1418连接到处理单元1414。接口端口1438包括例如串行端口、并行端口、游戏端口、通用串行总线(usb)、红外端口、蓝牙端口、ip端口或与无线服务相关联的逻辑端口等。输出设备1440使用与输入设备1436相同类型的端口中的一些端口。因此,例如,usb端口可用于向计算机1412提供输入并将信息从计算机1412输出到输出设备1440。提供输出适配器1442以说明存在一些输出设备1440(例如监视器、扬声器和打印机)以及使用特殊适配器的其他输出设备1440。作为说明而非限制,输出适配器1442包括视频卡和声卡,其提供输出设备1440和系统总线1418之间的连接手段。应当注意,其他设备和/或设备系统提供输入能力和输出能力二者,例如远程计算机1444。计算机1412可以使用与一个或多个远程计算机(例如远程计算机1444)的逻辑连接在联网环境中操作。远程计算机1444可以是个人计算机、服务器、路由器、网络pc、云储存器、云服务、工作站、基于微处理器的设备、对等设备或其他公共网络节点等,并且通常包括相对于计算机1412描述的许多或所有元件。为了简洁起见,仅示出了远程计算机1444和存储器储存设备1446。远程计算机1444通过网络接口1448逻辑连接到计算机1412,然后借助于通信连接1450进行物理连接。网络接口1448包括有线通信网络和/或无线通信网络,例如局域网(lan)和广域网(wan)。lan技术包括光纤分布式数据接口(fddi)、铜质分布式数据接口(cddi)、以太网、令牌环等。wan技术包括但不限于:点对点链路、诸如综合服务数字网(isdn)的电路交换网络及其变体、分组交换网络和数字用户线(dsl)。如下所述,可以使用无线技术来补充或替代前述内容。通信连接1450是指用于将网络接口1448连接到总线1418的硬件/软件。虽然为了说明清楚而在计算机1412内示出了通信连接1450,但是它也可以在计算机1412外部。用于连接到网络接口1448的硬件/软件可以包括例如内部技术和外部技术,例如调制解调器,包括常规电话级调制解调器、电缆调制解调器和dsl调制解调器、isdn适配器和以太网卡。本主题公开的所示实施例的以上描述(包括摘要中所描述的内容)并非旨在穷举或将所公开的实施例限制为所公开的精确形式。尽管出于说明性目的在本文中描述了特定实施例和示例,但是如相关领域技术人员可以认识到的,可以在各种实施例和示例的范围内进行各种修改。就此而言,尽管已经结合各种实施例和相应的附图描述了所公开的主题,但是在适用的情况下,应该理解,可以使用其他类似的实施例,或者可以对所描述的实施例进行修改和添加,以用于执行所公开主题的相同、相似、可替代或替代功能,而不与其偏离。因此,所公开的主题不应限于本文所述的任何单个实施例,而应根据所附权利要求在广度和范围内进行解释。如在本说明书中所采用的,术语“处理器”可以指代实质上任何的计算处理单元或设备,包括但不限于包括:单核处理器;具有软件多线程执行能力的单核处理器;多核处理器;具有软件多线程执行能力的多核处理器;具有硬件多线程技术的多核处理器;并行平台;和具有分布式共享存储器的并行平台。另外,处理器可以指被设计用于执行本文所述功能的集成电路、专用集成电路(asic)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑控制器(plc)、复杂可编程逻辑器件(cpld)、离散栅或晶体管逻辑、分立的硬件组件或者他们的任何组合。处理器可以利用纳米级架构,例如但不限于,基于分子和量子点的晶体管、开关和门,以优化空间使用或增强用户设备的性能。处理器还可以实现为各计算处理单元的组合。在本说明书中,诸如“储存”、“储存器”、“数据储存”、“数据储存器”、“数据库”的术语以及与组件的操作和功能相关的实质上任何其他信息存储组件是指“存储器组件”或体现在“存储器”中的各实体或包括存储器的各组件。应当理解,本文描述的存储器组件可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器二者。如在本申请中所使用的,术语“组件”、“系统”、“平台”、“层”、“选择器”、“接口”等旨在指代与计算机相关的实体或与具有一个或多个特定功能的操作装置相关的实体,其中该实体可以是硬件、硬件和软件的组合、软件或执行中的软件。作为示例,组件可以是但不限于是,处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。作为说明而非限制,在服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。另外,可以从各种计算机可读介质、设备可读储存设备或其上储存有各种数据结构的机器可读介质执行这些组件。各组件可以例如根据具有一个或多个数据分组(例如,来自一个组件的数据,该一个组件经由该信号与本地系统、分布式系统和/或诸如具有其他系统的因特网的网络中的另一个组件交互)的信号、经由本地进程和/或远程进程进行通信。作为另一个示例,组件可以是具有由电子或电子电路操作的机械部件提供的特定功能的设备,其由处理器执行的软件或固件应用程序操作,其中处理器可以在设备的内部或外部,并且执行软件或固件应用程序的至少一部分。作为又一个示例,组件可以是通过电子组件而非机械部件提供特定功能的装置,电子组件可以在其中包括处理器以执行至少部分地赋予电子组件的功能的软件或固件。此外,术语“或”旨在表示包含性的“或”而不是排他性的“或”。即,除非另有说明或从上下文中清楚,否则“x采用a或b”旨在表示意味着任何自然的包容性排列。也就是说,如果x采用a;x采用b;或者x采用a和b两者,然后在任何前述情况下“x采用a或b”都满足。此外,在主题说明书和附图中使用的冠词“一”和“一个”通常应该被解释为表示“一个或多个”,除非另有说明或从上下文清楚地指向单数形式。结论虽然本发明易于进行各种修改和替换构造,但是其某些图示的实施方式在附图中示出并且已在上面详细描述。然而,应该理解,并不意图将本发明限制于所公开的具体形式,相反,其目的是涵盖落入本发明的精神和范围内的所有修改、替代构造和等同物。除了本文描述的各种实施方式之外,应当理解,可以使用其他类似的实施方式,或者可以在没有偏离的情况下,对所描述的实施方式进行各种修改和添加,以执行相应实施方式的相同功能或等同功能。因此,本发明不限于任何单个实施方式,而是根据所附权利要求在广度、精神和范围上进行解释。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1