本申请是2013年9月23日提交的申请No.14/034,286,题为“交互式输入系统和方法”的部分继续申请,申请No.14/034,286是以2013年4月12日提交的临时申请No.61/811,680,题为“三维和二维交互式输入系统和方法”、以及2013年7月1日提交的临时申请No.61/841,864,题为“三维和二维交互式输入系统和方法”作为基础并要求其优先权权益。本申请还基于2013年8月25日提交的临时申请No.61/869,726,题为“三维和二维交互式输入系统和方法”并要求其优先权权益。在此上述申请以全文援引方式合并入本文。
具体实施方式
本公开的实施方式包括交互式输入系统和交互式输入方法。
下面将参照附图来描述本公开的具体实施方式。在附图中通篇将尽可能使用相同的参考标记来指代相同或相似的部分。
图1示意性示出了依据本公开具体实施方式的交互式系统100。交互式系统100包括感测装置102和计算机104。感测装置102被配置为感测对象运动,并通过安装在计算机104上的感测装置驱动器106将感测到的信息传输给计算机104。对象可以是,例如,用户的手或手指。感测信息可包括,例如,对象的三维(3D)位置、取向、或移动方向,或关于对象接触或悬停在另一个对象(如一表面)上的信息。感测装置驱动器106读取感测装置102的输出,即所检测的信息,处理所检测的信息,并输出追踪结果,例如3D追踪结果。感测装置驱动器106还控制感测装置102的操作。
计算机104可以包括其他组件,如CPU 108和内存110。其他应用,例如应用112,也可以安装在计算机104上。计算机104还连接到显示器114,这可以用来图形化地显示感测装置102输出的追踪结果。
图2显示了依据本公开具体实施方式的一个示例过程的流程图。在图2所示的示例过程中,被感测装置102检测的对象是用户的手。
在201,用户将感测装置102放到某个位置。例如,感测装置102可放置在桌面上并且面朝上。或者,感测装置102可以安装在计算机104或显示器114的顶部。
在202,感测装置102放置好后,交互式系统100开始环境校准过程。在一些实施方式中的环境校准过程中,交互式系统100检测背景环境信息并校准接触交互表面。接触交互表面的更多细节稍后将在本公开中描述。环境校准过程可以完全自动化检测某些已知环境对象,例如像显示器114、键盘或具有光学标志的接触板。另外,环境校准过程可以是手动的。例如,用户可以定义一个环境对象作为接触交互表面,或定义一个虚拟平面,即不是位于任何实际环境对象上的假想平面,作为接触交互表面。如果环境校准过程是手动的,指令可显示在例如显示器114上,或可通过例如扬声器(未显示)以音频方式传递给用户。
在203,在正常使用期间,交互式系统100连续检测前景对象,如用户的手或手指,并识别前景对象的3D结构以及相关的3D运动。交互式系统100还检测背景环境的变化并在需要时重校准背景。
在204,感测装置驱动器106将感测到的信息转化为“3D交互事件”并将事件发送给安装在计算机104上的应用以及计算机104的操作系统(OS)。例如,3D交互事件可能是3D位置、3D取向、尺寸(如长度或宽度)、以及前景对象(如用户的手或手指)的细节。应用和OS根据接收到的事件可以改变状态,并且可据此更新在显示器114上显示的图形用户界面(GUI)。
在205,感测装置驱动器106比较感测到的前景对象的3D位置与接触交互表面,并确定“对象到表面”的信息,例如,前景对象与表面之间的距离、表面上前景的二维(2D)投影位置。然后,感测装置驱动器106将“对象到表面”信息转换成接触事件、多点接触事件、或鼠标事件(206)。
在207,感测装置驱动器106将事件发送到应用程序或OS,并将接触事件转换成手写过程。由于交互式系统100可以在前景对象实际接触到接触交互表面之前感测出前景对象与接触交互表面的距离和前景对象在接触交互表面上的投影位置,因此交互式系统100能在发生真实接触前预测到接触,例如接触何时会发生以及在接触交互表面会发生接触的位置。交互式系统100还可以确定并在显示器114上显示“悬停”反馈。
在208,感测装置驱动器106将前景对象的位置与环境对象(如键盘的键的位置)的位置进行比较。交互式系统100可在用户实际按下键之前生成关于用户将要按下哪些键的悬停反馈。在一些实施方式中,交互式系统100可以在显示器114的GUI上显示虚拟键盘和这种悬停反馈。
根据本公开的具体实施方式,感测装置102可以是与计算机104分离的独立的设备,但可以通过有线连接(如USB线)或无线连接(如蓝牙或无线网络)连接到计算机104。在一些实施方式中,感测装置102被集成到计算机104中,即可以是计算机104的一部分。
根据本公开的具体实施方式,感测装置102可以包括多个成像传感器,如摄像头。成像传感器可以是可见光成像传感器,其对可见光响应更灵敏,或红外(IR)成像传感器,其对红外光线更灵敏。感测装置102还可以包括一个或多个照明源,根据成像传感器的类型提供各种波长的照明。照明源可以是,例如发光二极管(LED)或配置有散射器的激光器。在一些实施方式中,可以省略照明源并且成像传感器感测被对象反射的环境光或对象发出的光。
图3A和3B示意性示出了依据本公开具体实施方式的示例性感测装置300。感测装置300包括外壳302、多个成像传感器304、一个或多个照明源306。成像传感器304和一个或多个照明源306都形成于外壳302内或外壳302上。这样的设计在本公开中也称为一体化设计。
图3A中所示的感测装置300有一个照明源306,而图3B所示的感测设备300有六个照明源306。在图3A所示的示例中,照明源306被布置在成像传感器304之间,而在图3B所示的例子中,照明源306是均匀分布在外壳302上以提供更好的照明效果等,例如更广的覆盖范围或更均匀的照明。例如,如图3B所示,两个照明源306位于两个成像传感器304之间,两个照明源306位于外壳302的左半边,以及两个照明源306位于外壳302的右半边。
在本公开的附图中,照明源以LED为例来说明,正如上面所讨论的,也可以使用其他光源,如配置了散射器的激光器。
在一些实施方式中,需要红外光谱带宽内的照明。人裸眼可能看不到这种照明。在这些实施方式中,照明源306可以包括,例如发射红外光的LED。或者,照明源306可以包括发射包括可见光在内的更广频带的光的LED。在这样的情况下,每个照明源306可以例如在相应的照明源306前配置红外透射滤光器(图中未显示)。
在一些实施方式中,感测装置300可以还包括放置在成像传感器304前方的红外透射滤光器(图中未显示),以过滤掉可见光。在一些实施方式中,感测装置300可以还包括放置在成像传感器304前面的镜头(图中未显示),用来聚焦光。红外透射滤光器可放置在镜头前,或在镜头和成像传感器304之间。
根据本公开的具体实施方式,感测装置300可以还包括控制电路(图中未显示)。控制电路可以控制成像传感器304的操作参数,例如快门持续时间或增益。控制电路也可以控制两个或多个成像传感器304之间的同步。此外,控制电路可以控制照明源306的照明亮度,照明源306的开/关或照明持续时间,或照明源306和成像传感器304之间的同步。控制电路也可以执行其他功能,例如,电源管理、图像数据获取和处理、数据到其他设备(如计算机104)的输出,或来自其他设备(如计算机104)的命令的接收。
在一些实施方式中,感测装置300可以还包括配置为开/关或重置感测装置300或强制进行环境重校准的一个或多个按钮。例如一个按钮可以被配置为允许用户强行启动手动校准过程,以校准接触交互表面。
在一些实施方式中,感测装置300可以还包括显示感测装置300状态的一个或多个指示灯,例如显示出感测装置300是否打开或关闭,是否在执行环境校准,还是执行触交互表面校准。
图3A和3B所示的实施例中。感测装置300在外壳302中形成为一体。成像传感器304之间的距离是固定的。但是这样的距离是可调的。图4A-4C显示一示例性的感测装置400,它具有一体化设计,但具有可移动的成像传感器304。各个成像传感器304之间的距离可以通过某种机制进行调整。例如在感测装置400中,成像传感器304置于配置为允许成像传感器304在其上移动的引导件404上,从而各个成像传感器304之间的距离可以调整。这样的设计也称为可调的一体化设计。
图4A-4C显示了成像传感器304的不同状态,其中成像传感器304之间的距离是不同的。为简单起见,其他组件如照明源,没有显示在图4A-4C中。
在一些实施方式中,感测装置102可以具有多个分离单元,每个分离单元各有一个成像传感器。以下,这样的设计也称为分体设计。图5显示了根据本公开具体实施方式的示例性的具有分体设计的感测装置500。感测装置500包括两个感测单元502和504,每个感测单元具有一个成像传感器304和一个或多个照明源306。在图5所示的实施例中,感测单元502具有一个照明源304,而感测单元504具有两个照明源306。感测单元502和504可以都具有控制电路,用来控制相应的感测单元的操作。
感测单元502和504可各自包括一个或多个连接端口510,以便通过有线或无线连接到其他感测单元或直接连接到计算机104。图6A和6B示意性示出了感测单元502和504连接到计算机104的两个不同方案。图6显示了感测单元502和504直接连接到计算机104的并联连接。图6B显示了感测单元502连接至感测单元504且感测单元504进一步连接到计算机104的串联连接。在图6A所示设置中,感测单元502和504都是由计算机104控制和同步的。在图6B所示设置中,同步化可以从感测单元504传送到感测单元502,这样两个感测单元502和504被同步。
图7A和7B示意性示出了感测单元相对于显示器114的示例性布置。图7A和7B各自显示了三个感测单元702。
根据本公开的具体实施方式,为了感测、识别以及跟踪前景对象,如用户的手或手指,背景的亮度可能需要降低。也就是说可能需要创建一个暗的背景。
在一些实施方式中,暗的背景可以使用偏振光来创建。根据这些实施方式,背景表面可以涂有具有“非去偏振化”性质的反光材料,如图8A所示。从这样的材料反射的光可保持圆偏振入射光的性质。这样的材料可以是例如着银色的。在一些实施方式中,其他颜色的染料或颗粒可以与反光材料混合以创建所需的颜色、纹理、或图案,如图8B所示。在一些实施方式中,如图8A和图8B所示,可以在背景表面和非去偏振化材料涂层之间形成另一种涂层。
图9显示了根据该公开实施方式的感测装置900,具有第一偏振方向的第一偏振器902放置在照明源306的前面,具有第二偏振方向的第二偏振器906放置在每个成像传感器304的前面。第一和第二偏振方向可以彼此不一致。第一和第二偏振器902和906可以是圆偏振器。
照明源306发出的光经过第一偏振器902的偏振以具有第一偏振方向。当此偏振光被背景表面上涂覆有非去偏振化材料所反射时,偏振方向被保留。由于第二偏振器906的偏振方向与第一圆偏振器902不一致,反射光具有不改变的偏振方向,反射光或至少大部分反射光不能通过圆偏振器906到达成像传感器304。从而,对成像传感器304而言,背景表面表现为深色或黑色。
另一方面,当偏振光被前景对象,例如用户的手或手指,所反射时,偏振光将会去偏振化。这种去偏振化反射光可以通过第二偏振器906并由成像传感器304接收。也就是说,前景对象对成像传感器304表现为明亮的,因此成像传感器304可以“看见”前景对象。
根据本公开具体实施方式的另一个用来创建一个暗背景的方法是使用“隐形”标记。这种“隐形”标记可以是人裸眼不可见的,但可以被本公开具体实施方式的成像传感器感测到。图10A和10B显示了带有标记1004的背景表面1002。成像传感器拍摄到的背景1002的图像将显示标记1004,如图10A所示。另一方面,用户将只能看到一个正常的、没有标记的均匀表面,如图10B所示。
下面参考图11A和图11B描述根据本公开具体实施方式的用来创建具有“隐形”标记的背景表面的方法。所述方法包括使用两种类型的墨,即第一种墨和第二种墨,这两种墨对人裸眼来说都表现为某种颜色,例如黑色的。然而,第一种墨吸收或至少吸收大部分红外光线,而第二种墨不吸收而可以反射红外光线。因此,第一种墨对红外成像传感器而言表现为例如黑色,而第二种墨对红外成像传感器而言表现为例如白色。
根据本公开的具体实施方式,印在背景表面(例如织物)的第一图案使用第一种墨。第一图案可以是,例如图11A所示的图案,黑暗部分代表第一种墨覆盖的部分。在一些实施方式中,第一图案可以使用激光打印机打印,这是由于激光打印机的碳粉是以吸收红外光线的碳粒子为基质。然后第二图案是使用第二种墨印在相同的背景表面。第二图案可以是例如图11B所示的图案,黑暗的部分代表被第二种墨覆盖的部分。在一些实施方式中,第二图案可以使用喷墨打印机印制,由于喷墨打印机使用的黑色墨是基于非红外吸收的黑色染料。在一些实施方式中,第一和第二图案可以都使用铜版印刷印制。
在一些实施方式中,第一图案和第二图案基本是互相颠倒的。也就是说,在第一图案的一个点是暗的,第二图案中对应的点是明亮的。因此,对于人裸眼,背景表面展现出了均匀的没有图案的颜色,如图10B所示的背景表面1002。另一方面,如图10A所示,成像传感器可以感测背景表面上的图案。
在一些实施方式中,上述的印刷还可以是一个使用包含两种类型墨(即碳基墨和非碳基墨)的喷墨打印机的单阶段印刷过程。
下面描述根据本公开具体实施方式的交互式系统100的使用方法及相关算法。在一些实施方式中,成像传感器304可在使用前被校准。如果感测装置102采用一体化设计,如图3A或3B所示,则成像传感器304的校准可以在感测装置102的生产过程中执行。另一方面,如果感测装置102使用了可调一体化设计(如图4A、4B或4C所示)或分体设计(如图5所示),则用户可以定制每个成像传感器304的位置。在这样的情况下,每次感测装置102的位置发生变化时,可以执行成像传感器304的校准。
图12是概要示出根据本公开具体实施方式的感测过程的高级工艺流程图。在1202,校准环境,调整感测装置参数,并分析和记录背景。在1204,执行前景对象追踪。前景对象(如用户的手或手指)被持续地感测,并且感测到的信息被输出到计算机104,例如输出到计算机104上已安装的应用。在1206,交互式系统100连续监测在前景对象跟踪期间是否需要重校正环境。或者,用户可以手动强制重新启动校准过程。
根据本公开的具体实施方式,校准过程可以产生多传感器校准数据。多传感器校准数据可用于消除如从成像传感器中输出的图像的畸变,所述畸变可能由如有缺陷的镜头所导致。这可以使计算机视觉计算和图像处理更简单、更精确。多感测装置校准数据也可以用于通过使用成像传感器输出的图像中的点或对象的像素位置来计算该点或对象的3D位置。
在一些实施方式中,交互式系统100在使用之前可能会执行一个静态校准。静态校准使用校验板,并在用户移动校验板到不同位置/取向时,允许成像传感器304拍摄同步图像。交互式系统100分析拍摄的图像,并生成摄像头校准数据包括:例如,成像传感器304的固有信息,成像传感器304的畸变,多个成像传感器304的校正。
在一些实施方式中,在交互式系统100使用期间中可以使用自动校准。自动校准不需要校验板,也不需要在使用交互式系统100之前进行专门的校准过程。自动校准适用于在例如分体设计或可调一体设计中用户频繁改变成像传感器304的相对位置、或者用户添加定制透镜或定制的成像传感器304到交互式系统100中的情况。根据自动校准,当用户开始使用交互式系统100时,成像传感器304各自拍摄同步快照。交互式系统100在不同的成像传感器拍摄的快照之间发现匹配特性(如指尖),并记录出现在不同快照中的相同特征(例如相同的指尖)的成对像素坐标。重复此过程,以收集一组成对像素坐标,并且将这组成对像素坐标用于依据本公开具体实施方式的成像传感器校准算法。
图13显示了根据本公开具体实施方式的用于调整照明源306和成像传感器304并且估算背景的过程。
在1302,成像传感器304拍摄背景图像的视频或图像。
在1304,观测到环境光的亮度。照明源306的光照强度是可根据观察到的环境亮度调整的。在一些实施方式中,光照强度调整到足够低以节能但又足够高以从背景中区分出前景对象,如手或手指。
在1306,调整成像传感器的增益水平和快门持续时间,以便使最终的图像足够亮。更高的增益水平使得图像更亮但噪点多。长快门时间使得图像更亮,但前景对象移动时,图像可能模糊。在一些实施方式中,循环执行1304和1306,以找到照明源306的最佳照明强度和成像传感器304的参数。
在1308,分析并估算背景模型。在1310,记录背景模型。当追踪前景对象时,将新图像与所述背景模型进行比较,以将前景对象从背景中区分出来。
图14示意性示出了依据本公开具体实施方式的分析和记录背景模型的过程。可对每个成像传感器304执行所述过程。如图14所示,在1402,拍摄并累积多幅图像。累积图像的数量可以是预设的固定数量,例如100。或者,累积图像的数量可以是变量,取决于背景模型分析何时收敛。
在1404,基于累积图像,分析背景模型。在一些实施方式中,背景模型可以包括,例如每个像素的平均亮度和最大亮度,每个像素的亮度差异(即噪度),或每个像素的局部纹理性质和局部颜色性质。
在1406,存储背景模型,并且过程结束。
图15示意性示出了基于多个(2个或更多)成像传感器304识别和追踪前景对象(如手或手指)的过程。对于每个成像传感器304,拍摄图像(1502)。拍摄的图像与存储的背景模型相比较,以获得前景图像(1504)。在1506,分析前景图像并获得对象的2D结构。
然后,在1508,组合并处理来自每个成像传感器304的分析结果,以获得前景对象的3D结构。
图16示意性示出了根据本公开具体实施方式的用于每个成像传感器304的找到前景对象并识别前景对象的2D结构的过程。在图16中所示的实施例和相关图像中,讨论的是前景对象是用户的手的情形。
在1602,载入预先获得的背景模型。背景模型可以是,例如基于亮度的背景模型,其中存储了例如100幅初始帧中的每个像素的最大亮度。图17显示了示例性的背景模型图像。
再次参考图16,执行循环来拍摄新的图像,并分析前景对象的2D结构。在一些实施方式中,在1604,成像传感器304拍摄到新的2D输入图像。图18显示了在手追踪过程中拍摄的示例性的输入图像。
再次参考图16,获得输入图像之后,执行以下:1)找到前景对象(1606),2)分析前景对象的子结构(1608和1610),3)分析前景对象(1612和1614)的详细性质。如下描述该过程的细节。
在1606,比较来自成像传感器304的新的输入图像与背景模型,以提取前景区域。在背景模型中,每个像素位置(x,y)可以具有特征向量B(x,y)。例如,如果背景模型是基于强度/亮度的,则B是标量,且B(x,y)的值是位置(x,y)处的像素的亮度。如果背景模型是基于噪声度的,则B是标量,且B(x,y)的值是位置(x,y)处的方差。在一些实施方式中,对于新的输入图像,计算每个像素的特征向量——ln(x,y)。类似于B(x,y),ln(x,y)的值可能是亮度或方差,这取决于使用的背景模型。计算每个像素位置的ln(x,y)和B(x,y)的差值。如果在某个像素位置的差值大于某个阈值,则确定像素属于前景区域。否则,确定像素属于背景。
图19显示了示例性的前景区域,其中白色像素代表前景对象。
再次参考图16,在1608,在前景区域内,在每个像素位置(x,y)处计算:像素是指尖一部分的概率P_tip(x,y),像素是手指主体(finger trunk)一部分的概率P_finger(x,y),以及像素是手掌一部分的概率P_palm(x,y)。
在一些实施方式中,概率P_tip(x,y),P_finger(x,y)和P_palm(x,y)可以通过将在像素位置(x,y)周围的相邻区域内的亮度分布与一组预定义模板(如指尖模板、手指主体模板或手掌模板)进行比较来计算。像素是指尖、手指主体或手掌一部分的概率,即P_tip(x,y)、P_finger(x,y)或P_palm(x,y),可以由相邻区域多大程度上适合各自的模板(即手指指尖模板、手指主体模板或手掌模板)来定义。
在一些实施方式中,概率P_tip(x,y)、P_finger(x,y)和P_palm(x,y)可以通过在像素位置(x,y)的相邻区域执行函数/算子F来计算。函数/算子将相邻区域的亮度与手指或指尖的光反射模型进行拟合,如果分布接近手指主体的反射(柱形反射)或指尖的反射(半圆顶形反射),将会返回高值。
图20显示了以上讨论的概率计算的示例性结果。在图20,例如,有黑白马赛克的区域为指尖的概率很高,有竖直填充线的区域为手指主体的概率很高,白色区域很可能是手掌区域。
再次参考图16,在1610,概率P_tip(x,y)、P_finger(x,y)和P_palm(x,y)的计算用于划分前景对象,例如用户的手分为手指和手掌。图21显示了划分的结果。在图21中,阴影的区域是手指,而白色区域是手掌。
概率P_tip(x,y)、P_finger(x,y)和P_palm(x,y)以及划分结果可以用来计算手的结构,包括手指骨架信息。如在本公开中所用,手指骨架是对手指结构的抽象。在一些实施方式中,手指骨架信息可以包括,例如手指的中心线(也称为骨架线)、指尖的位置和手指的边界。
在一些实施方式,用户的手被分成手指和手掌后,可以获得手的子部分(例如手指或手掌)的2D边界。图22示意性示出了手的子部分的2D边界。正如上面所讨论的,手指的边界可是手指骨架信息的一部分。
再次参考图16,在1612,手指的中心线通过寻找和连接横跨整个手指的扫描线上的中心位置来计算。正如在此使用的,扫描线指在执行寻找中心位置过程中顺沿的那条线。扫描线可以是例如水平线。在一些实施方式中,对于手指中的扫描线L(y),使用概率P_finger(x,y)作为权重因子来计算水平线L(y)上的每个像素(x,y)的位置x的加权平均值。在扫描线L(y)上,所述位置x的加权平均值是中心位置,x_center=C(y),
当手指上所有的扫描线被处理后,得到扫描线L(y)上一系列中心位置C(y)。连接这些中心位置提供了手指中心线,即手指骨架的中心线。图23示意性示出了手指的中心线。
再次参考图16,同样在1612,计算指尖的位置(Tx,Ty)。指尖的位置可以限定为与指尖的形状和阴影相匹配的手指顶部区域的位置。在一些实施方式中,指尖的位置可以通过使用概率P_tip(x,y)作为权重因子来平均指尖中所有像素的位置来计算得到。例如
在其他实施例中,指尖的位置可以通过使用的概率P_finger(x,y)作为权重因子来平均手指顶部区域的像素的位置来计算。在生成的指尖位置(Tx,Ty)中,例如图24所示的结果,Tx和Ty都是浮点数字,具有亚像素分辨率。
图25显示了根据本公开具体实施方式的计算前景对象和前景对象子部分的3D信息的过程的高阶流程图。类似于图16,在图25所示的过程中,用户的手作为前景对象的实例。
在2502,比较来自不同成像传感器304的2D子结构结果(如手指或手掌),并且创建由不同的成像传感器304观测到的各前景对象的子部分之间的关联。例如,由成像传感器A观测到的手指A可与由成像传感器B观测到的手指C有关。在一些实施方式中,关联可以基于最小化所有手指对之间的总指尖距离做出,如图26所示。如图26所示的实施例,左半部分和右半部分分别显示被两个不同的成像传感器304拍摄到的手(即前景对象)的2D图像。
再次参考图25,在2504,已关联子部分的特性(如2D指尖、2D骨架线和2D边界点)进一步关联,以分别获得指尖对、骨架线对和边界点对。图27示意性示出了将第一成像传感器304拍摄的在第一2D图像(左上图像)中的第一手指的2D骨架线以及第二成像传感器304拍摄的在第二2D图像(右上图像)中的第二手指的2D骨架线关联起来的实施例。关联的结果是得到了骨架线对的图像(底部图像)。
再次参考图25,在2506、2508和2510中,计算3D骨架线、3D指尖和3D边界点(如手、手指或手掌的3D形状),更多细节分别在下面详述。
在2506,处理一指尖对T1(Tx1,Ty1)和T2(Tx2,Ty1)来获得3D信息,如相应指尖的3D位置T(Tx,Ty,Tz)。在一些实施方式中,3D再投影(reprojection)函数可用于计算3D指尖位置T(Tx,Ty,Tz)。3D再投影函数可使用指尖的2D位置(Tx1,Ty1)和(Tx2,Ty1),以及成像传感器304和透镜的信息,例如焦距、感测装置的间距(如每毫米像素数)、两个成像传感器304的距离(基线)。在一些实施方式中,算出间距d=Tx1–Tx2作为3D再投影函数的输入来使用。3D再投影函数的输出是指尖的3D位置(Tx,Ty,Tz)。3D位置(Tx,Ty,Tz)可以有物理单位,从而也可以表示为(fx,fy,fz)。
在一些实施方式中,3D再投影函数可以使用在成像传感器校准过程中获得的4×4透视变换矩阵来表示。这个矩阵可是间距对深度(disparity-to-depth)的映射矩阵。
在2508,使用如上所述获得的骨架线对,计算对应的手指的3D骨架线。在一些实施方式中,对于骨架线对,两个二维骨架线上的各像素根据其y方向匹配,以获得像素对。像素对可以类似上面描述的对指尖对的处理方式来处理,以获得对应像素对的点的3D位置,如图28所示。在处理完所有像素对后,由此产生的点连接起来以获取3D骨架线,如图28所示。
回到图25,在2510,基于两个不同的成像传感器304拍摄的图像上的边界点的2D位置,计算例如手指或手掌的边界点的3D位置。在一些实施方式,边界点的3D位置的计算方式可以类似于指尖的3D位置的计算方式。在计算边界点的3D位置后,3D空间中的对应点可以连接起来以获得3D边界。
图29显示了基于由两个不同的成像传感器304拍摄的两个2D图像中的手掌的2D边界的手掌的3D边界的计算。
如上所述获得的信息可以组合,以生成输出,例如图30所示的示例性输出,它显示了手指的3D指尖(图30中的圆圈)、手指的3D骨架线(图30中的线)以及手的3D形状。
对于某些应用程序,如绘画和雕塑,用户可能需要使用手指或钢笔作为工具。在这样的情况下,手指或钢笔可能需要被抽象为圆柱形,而且可能需要计算它的方向和长度。再次参考图25,在2512,计算手指的方向和长度。
在一些实施方式中,将手指抽象为圆柱形,而且它的长度定义为圆柱形的长度,这也可以称为手指圆柱长度。手指圆柱长度可被限定为手指骨架线的顶端点或指尖位置P0(x,y,z)与停止点P1(x,y,z)之间的距离。在一些实施方式中,停止点P1是骨架线的终点或骨架线从直线偏离的位置处(例如骨架线与直线的差值大于阈值的位置处)的点。同样,手指的方向可被定义为连接两点P1和P0的线的方向。
在2514,计算手掌的3D位置和取向。手掌的3D位置也可以被称为手掌的3D中心,这可通过例如平均化边界点(如图29所示)的3D位置来获得。图31示意性示出了计算出的手掌的3D中心。
手掌的尺寸和取向可以通过比较手掌3D的中心、手掌的边界点的3D位置、指尖的3D位置以及手指的方向获得。
上面讨论的实施方式是基于直接匹配由不同成像传感器304拍摄的多个视图(图像)做出的。以下讨论的具体实施方式涉及一种基于模型的架构。基于模型的架构可以提高手识别的可靠性。例如,基于模型的架构可在单个成像传感器304的情况下工作。也就是说,即使只使用一个成像传感器304,仍然可以实现手的3D识别,这是因为来自单个图像的手指的亮度和宽度可以用来获得3D手指位置的估算。此外,当手或手指在一个视图中仅部分可见,但在另一个视图中完全可见时,借助于基于模型的架构,交互式系统100可以可靠地产生3D手追踪结果。即使手指被遮住,例如一手指和另一手指合并在一起或弯曲到手掌区域中,而在所有视图中均不可见时,仍然可以连续预测该手指的位置。
根据本公开的具体实施方式,当前景对象只能被单一的成像传感器304观测到时,前景对象到成像传感器304的距离可以基于前景对象的亮度或前景对象的尺寸来估算。然后,这样的距离可以与在成像传感器304的视图中的前景对象的位置(即2D坐标)结合,以计算前景对象的3D位置(x,y,z)。
假设其他参数(如照明光强度和前景对象的反射比)都是一样的,前景对象的亮度B与对象到照明光的距离的平方成反比。在一些实施方式中,因为照明光接近成像传感器304,对象到照明光的距离约等于对象到成像传感器304的距离,即,Dobj-sensor。这种关系可以用下面的方程表示:
在上面的方程中,系数K结合有其他参数(如照明光的强度和前景对象的反射比)的效果,而且可为常数。上述方程可以改写为:
系数K可以在前景对象能够被两个或更多成像传感器304观测到时计算出来。在这种情况下,正如上面所讨论的,可以计算前景对象的3D位置,因此可以获得Dobj-sensor。可以持续监测距离Dobj-sensor,以记录在时间t时的Dobj-sensor,即Dobj-sensor(t)。与此同时,在时间t时的前景对象的亮度B(t)可以从由两个或多个成像传感器304拍摄到的图像中获得。将Dobj-sensor(t)和B(t)代入公式(2)或公式(3),可以计算出系数K。
然后,如果在时间t’,只有单个成像传感器304可以感测到前景对象,则前景对象在t’的亮度,即B(t’)以及系数K可以代入公式(3),以计算Dobj-sensor(t’)。
类似地,由成像传感器304拍摄的图像中的前景对象的尺寸也可以用来估算Dobj-sensor。由成像传感器304拍摄的图像中的前景对象的尺寸可以表示如下:
在此,系数K’综合了其他参数(如前景对象的实际尺寸)的效果。公式(4)可以改写为:
类似于使用前景对象的亮度来估算Dobj-sensor的实施方式,在使用成像传感器304拍摄的图像中的前景对象的尺寸来估算Dobj-sensor的实施方式中,系数K’可以在前景对象能够被两个或多个成像传感器304观测到计算,此时可以持续计算并监测距离Dobj-sensor以记录在时间t时的Dobj-sensor(t)。同时,在时间t被成像传感器304拍摄到的图像中的前景对象的尺寸L(t)可以从拍摄到的图像中获得。将Dobj-sensor(t)和L(t)代入到上面公式(4)或公式(5),可以计算出系数K’。
然后,如果在时间t’,只有单一成像传感器304可以感测到前景对象,拍摄的图像中的前景对象在t’时的尺寸即L(t’)和系数K’可以代入公式(5)来计算Dobj-sensor(t)。
在一些实施方式,上述用于估算Dobj-sensor的方法可以结合起来以提供更准确的结果。即分别基于亮度和大小得到的估算值Dobj-sensor_1和Dobj-sensor_2。然后,使用传感器融合(sensor fusion)方法,例如使用扩展卡尔曼滤波器的传感器融合,来结合Dobj-sensor_1和Dobj-sensor_2以获得Dobj-sensor。
根据本公开的具体实施方式,基于模型的架构可以适用于任意数量的视图,无论是一个视图、两个视图或更多的视图。图32显示了两个视图的情形。如下对根据一些具体实施方式的基于模型的框架的细节进行描述。
对于每个视图,执行2D手结构分析(在以前的架构中描述过)。2D手结构分析产生2D手结构(也称为新的2D手结构),包括2D手骨架。类似于手指骨架,手骨架是指对手的结构的抽象。
然后通过结合上次的2D手结构(在上一次更新获得的)和新的2D手结构(在如上所述的当前更新获得的)来实施追踪。追踪过程包括:1)对之前的结果应用过滤器,以“预测”预测的2D手结构;2)使用关联方法,以结合新的2D手结构与预测的2D手结构;3)使用结合得到的新结果,更新过滤器。这种跟踪过程可生成平滑的骨架位置,不会受视图中突然失去手指的影响,并可以提供一致的手指ID。正如本公开中所使用的,手指ID是指分配给感测到的手指的ID。手指一旦分配到手指ID,即使在更新后不可见,那只手指将仍携带相同的手指ID。例如在一次更新中,中指和食指被感测到。中指被分配到手指ID“手指#1”而食指被分配手指ID“手指#2”。在整个过程中,两者都带着分配到的手指ID,即使当其中一个或两个在之后的更新中不可见。
在一些实施方式中,对3D手模型执行过滤,产生平滑的3D的效果,包括3D手骨架,这会被重投射以在每个视图上创建投射的2D的手骨架。
然后,对于每个视图,新的2D手骨架和投射的2D骨架组合来获得各个手指ID之间的关联。
然后,两个视图的2D结果结合起来以计算手的新的3D位置和新的3D手指骨架。最终结果用作新的3D手模型,这可用于下次更新。
如上所述,交互式系统100可用于识别和追踪前景对象(如手或手指)的3D位置和取向等。使用该特征,用户可以与计算机104交互。例如用户可以在办公桌表面或桌子的表面点击并移动手指来控制光标移动和点击显示器114,好像用户在使用鼠标,但实际上不使用真实的鼠标,从而使用这样的表面作为物理接触表面。有了交互式系统100,用户也可以使用显示器114作为触摸屏幕,即使显示器114的屏幕不是真实的触摸屏。此外,用户可以在开放的空间(如空气中)指定虚拟表面作为虚拟触摸表面,即假想的接触表面。通过相对于虚拟触摸表面移动手指,用户可以与计算机104交互,就像在虚拟接触表面的位置有真实的接触表面一样。另外,通过结合眼睛位置跟踪(使用例如头追踪技术感测用户眼睛的3D的位置),可以创建用户感知的手指位置与在显示器114屏幕上的位置的直接关联。以下,这样的交互也称为2.5D接触交互,上面提到的用于实现交互的表面,无论是物理接触表面,还是虚拟的接触表面,或显示屏,也称为接触交互表面。根据本公开的具体实施方式,2.5D接触交互可以包括例如前景对象(如指尖)在接触交互表面上的2D投影位置、前景对象(如指尖)与接触交互表面之间的距离、前景对象(如手指)相对于接触交互表面的法线方向的3D取向等信息。
图33A和33B示意性示出了示例性的系统设置和不同类型的接触交互表面。在图33A所示的实施例中,感测装置102定位在桌子上方,例如在显示器114上面,并且面朝下。在一些实施方式中,感测装置102可能夹在显示器114顶部。例如感测装置102可以夹在显示器114顶端的中心、左边或右边。在一些实施方式中,感测装置102可以放置在独立的支架上,以支持感测装置102并使其位于桌子上面。在图33B所示的实施例中,感测装置102放在桌上并面朝上。除了通过与接触交互表面的交互而与计算机104交互以外,用户也可以通过图33A、33B所示的3D交互空间内的交互而与计算机104交互。这样的交互也可被称为3D交互。
根据本公开的具体实施方式,2.5D接触交互可以基于上述获得的前景对象的3D信息,以及通过将前景对象的悬停状态添加到标准的接触交互中来实现。根据本公开具体实施方式的2.5D接触交互可以提供前景对象(例如手指)在接触交互表面的投影(x,y)位置,以及前景对象和接触交互表面之间的距离。
图34显示了根据本公开的具体实施方式的用于实现一个使用例如手的2.5D接触交互的过程的高级流程图。在3402,定义环境以提供环境信息,包括自动或手动定义环境中的接触交互表面。在3404,执行3D手追踪来获取指尖的3D信息,如本公开前面描述的方法。在3406,3D信息被转换为2.5D接触信息。在3408,确定是否需要重新校准。如果是,进入3402。如果校准不需要重置,进入3410,在此确定是否校准需要改进。如果是这样,进入3412以改进校准。如果校准不需要改进,则进入3404。在一些实施方式中,当检测到表面的变化时,校准可以自动重置或改进。在一些实施方式中,用户可以手动强制重置或改进校准。
图35显示了根据本公开的具体实施方式的手动校准接触交互表面的过程的高级流程图。在3502,交互式系统100指导用户如何手动校准接触交互表面。可例如通过显示在显示器114屏幕上的GUI或通过音频设备(如扬声器)来发送指示。指示会让用户将手指移动到表面的特定位置,并且保持一段时间的稳定。然后检测用户手指或指尖的3D位置(3504)并且记录(3506)。然后流程返回3502来指导用户将手指移到另一表面位置上。重复这个过程,直到完成校准过程。然后所有记录下的校准触点的3D位置被用来限定接触交互表面。
在一些实施方式中,三个校准接触点足以限定接触交互表面。在一些实施方式中,四个或更多接触点可以用来限定接触交互表面。当用户试图限定一物理表面作为接触交互表面时,使用四个或多个接触点可以提高准确性。此外,使用四个或多个接触点也可以允许用户限定非平面的表面作为接触交互表面。
由于所限定的接触交互表面可以很大,交互式系统100还允许用户限定有效的交互区域,然后该区域可被映射到显示器114屏幕的尺寸。这个过程如图36所示。在3602,环境校准数据,包括校准接触点的3D位置,被输入和分析,以找到左上角(TL)、右上角(TR)、左下角(BL)和右下角(BR)的点,如图37示意性显示。在3604,通过计算区域中心和平面大小,获得接触交互表面的尺寸以及接触交互表面的中心位置。
根据本公开的具体实施方式,可以通过检测用户手指触及表面的行为自动的并逐步的检测接触交互表面。即交互式系统100检测用户手指敲击坚硬表面的事件,并自动登记这些敲击事件。当敲击事件发生时,交互式系统100在接触表面校准数据库储存指尖的3D位置。在一些实施方式中,交互式系统100可以动态重复校准过程,以提高对环境中表面的认定。使用这种方法,用户可以简单地多次在不同的地方敲击表面,交互式系统100将自动校准。因此,交互式系统100不需要显示指示来指导用户,用户不需要等待交互式系统100来告诉他何时把手指放到表面上或何时将手指转移到表面的另一地方。此外,在校准阶段后,当用户正常使用输入设备时,交互式系统100会继续监测敲击事件并在需要时更新表面校准。因此,接触交互表面的识别在用户的持续使用中变得越来越精确。此外,当环境变化时(如,现有表面的移除,或放置了新的表面),交互式系统100通过合并新的敲击事件与现有的数据库来自动更新接触交互表面。
下面描述了检测敲击事件的一种方法。根据本公开的具体实施方式,用户手指的3D位置被追踪,记录依赖时间的位置值。为了检测敲击事件,时间相关性位置值通过求导被转换为速度值。图38A和38B分别显示了当手指在空中移动及当手指点击固体表面时手指的3D速度。在图38A和38B中,只显示了y轴方向的速度分量。x和z方向的速度分量也可以以类似的方式来绘出。
在一些实施方式中,使用移动的窗口来检测下列条件:1)在非常短的时间内(短于第一时间阈值),速度从高值(高于第一速度阈值)下降到非常小的值(低于第二速度阈值,接近于零),2)速度保持在非常小的值的时间超过一段时间(超过第二时间阈值)。如果两个条件都满足,则确定敲击事件发生了。
当用户的手指撞击坚硬的表面,有时手指可能在表面上继续滑动而不是完全停止。在这样的情况下,如果满足以下两个条件,敲击事件被确定为已经发生:1)检测到在原来的移动方向上手指突然改变速度,2)手指随后的运动被限制在2D平面内。这可以这样计算:通过对在一时间窗口内的手指的3D位置数据应用降维计算方法(例如主成分分析(PCA)),将轨迹从物理3D坐标映射到新的3D坐标。PCA算法通过分析手指的3D位置数据产生新的3D坐标系统。新的3D坐标系统是由三个轴定义的。新的3D坐标系统中的每个轴都有特征值,与数据点沿着该轴的变化量相关。在三轴中,有最小的特征值的称为“最小轴”。如果最小轴的速度值保持相对较长时间(超过一段时间阈值)的低值(低于一定的速度阈值),那么手指速度突然发生改变的时间被记录为敲击事件发生的时间。
当检测到新的敲击事件时,新敲击发生的位置(称为新敲击位置)用于更新现有的接触敏感表面。根据本公开的具体实施方式,如果新敲击的位置与现有的接触交互表面是一致的,新敲击位置可用来增加现有的接触交互的分辨率和精度。如果新敲击位置与现有的接触交互表面冲突(这可能意味着用户稍微移动了表面),使用新敲击位置更新现有的接触交互表面或现有的接触交互表面被删除。如果新敲击位置不与现有的接触交互表面有关联,新的接触交互表面会被创建。
图39显示了根据本公开具体实施方式用于通过检测标记自动检测接触交互表面的过程的流程图。使用本公开上面描述的方法创建标记。如图39所示,在3902,用户在环境中如在一张桌子上放置了带有这样标记的一张纸。在3904,交互式系统100使用成像传感器304拍摄纸的图像并识别标记。在一些实施方式,交互式系统100记录图像中标记的3D位置。在3906,交互式系统100基于标记的3D位置计算纸的3D位置、取向、大小。计算结果保存为接触交互表面校准数据。
图40显示了根据本公开具体实施方式的用于自动检测和校准显示屏—例如显示器114—的屏幕并使用显示屏表面作为接触互动表面的过程的流程图。如图40所示,在4002,交互式系统100在显示屏幕上显示2D代码,如校验板,如图41所示。在4004,交互式系统100使用不同的成像传感器304拍摄图像。在4006,交互式系统100识别2D代码中的标记,并记录在每一图像中的标记的2D位置。在4008,交互式系统100计算标记的3D位置、取向和大小,并导出和记录显示屏的尺寸、3D位置和3D取向。在4010,交互式系统100显示表面的位置、方向和大小。之后,交互式系统100可以检测用户在显示屏上的接触交互。
图42显示了根据本公开具体实施方式的定义虚拟接触表面的过程流程图。虚拟接触表面可限定为在键盘上方、并在用户和显示屏之间,并且用户可以在空中与虚拟的接触表面交互作用,以控制计算机104。如图42所示,在4202,交互式系统100指示用户“接触”所限定的虚拟接触表面的四个角点,如示意图43所示。在4204,交互式系统100检测到用户手的3D位置。在4206,交互式系统100记录四个角点的位置。在一些实施例中,为了记录角点的位置,交互式系统100可以指示用户使用交互设备,例如键盘或鼠标,在图形用户界面输入命令,同时保持他/她的手的3D位置。该命令例如可以通过敲击键盘上的按键或点击鼠标的按钮输入。
交互式系统100记录四个角点的位置,在4208,交互式系统100计算和记录虚拟接触表面的尺寸、3D位置和3D取向。然后交互式系统100可以显示虚拟触摸表面的位置、方向和大小。
正如本领域的普通技术人员可以认识到的,三个点足以定义一个平面。因此,如果虚拟触摸表面是平面,只需要三个角点来定义该虚拟触摸表面。然而,这三个角点可以与第四角点一起使用来定义一个四边形作为交互区域。虚拟触摸表面和交互式区域被定义之后,交互式系统100将只检测和响应于对象在该交互区域内部或上方的动作。
当手动定义第四角点时,用户有时未必容易“触摸”到由其它三个角点定义的平面内的点。在一些实施例中,用户的触摸点在平面上的垂直投影可以用作第四角点。
相比电脑显示器的物理触摸屏,虚拟接触表面具有一定优点。例如对于笔记本电脑和台式电脑用户来说,与触摸屏的距离远,并且角度接近垂直(70度~80度)。在这样的距离和角度,这种屏幕不适合接触——很难够到,并容易引起疲劳。相反,根据本公开具体实施方式的虚拟接触表面可以限定为更贴近用户,并且倾斜成更容易操作的角度。
正如上面所讨论的,根据本公开具体实施方式的交互式系统可以用来实现2.5D接触交互。2.5D接触交互的细节描述如下。
在一些实施方式中,用户的手作为前景对象。交互式系统100使用手的3D追踪信息(例如,指尖的3D位置和手指的3D圆柱方向和长度信息)和环境校准数据执行3D到2.5D的转换,以便获得2D信息,例如根据上面描述的方法限定的从指尖到接触交互表面的距离、以及手指垂直于接触交互表面的方向。
图44显示了根据本公开具体实施方式的用于将前景对象(如手或手指)的3D信息转换为2.5D信息的过程流程图,在4402,基于接触交互表面的位置和方向计算接触交互表面的3D信息。接触交互表面的3D信息可以包括,例如接触交互表面的中心及垂直于接触交互表面的方向。在4404,前景对象的3D位置(x,y,z)投射到接触交互表面上,其中包括如从前景对象到接触交互表面的距离d以及接触交互表面上的投射点的2D位置的计算。接触交互表面上的投射点的2D位置可以使用定义在接触交互表面的2D坐标系统上的x’和y’坐标表示。在4406,接触交互表面上的投影点的2D位置(x’,y’)和接触交互表面的尺寸,用于将接触交互表面上的投影点的2D位置(x’,y’)换算到定义在显示器114屏幕上的2D坐标系的2D位置(x”,y”)。由于上述过程,前景对象的3D位置(x,y,z)转换为在显示器114屏幕上的2D位置(x”,y”)以及前景对象和接触交互表面之间的距离d。
图45显示了根据本公开具体实施方式的用于确定前景对象和接触交互表面之间的距离d的过程的流程图。如上所述,在环境校正阶段,环境校准数据被记录下来,包括用来定义接触交互表面的校准点的位置,即,P1(x1,y1,z1),P2(x2,y2,z2),等等。在4502,这种环境校准数据和前景对象的3D位置(x,y,z)被用来寻找在接触交互表面上最接近前景对象的位置为(x’,y’,z’)的点。然后将位置(x’,y’,z’)与位置(x,y,z)比较来确定距离d(4504)。
图46是根据本公开具体实施方式的用于寻找z’的过程的流程图。在图46所示的实施例中,接触交互表面可以使用多项式曲面拟合方程来估算:
a*x+b*y+c*z+d+e*x^2+f*y^2+…=0 (6)
在4602,所有的校准点的位置代入以下误差函数来获取误差值:
err=sum[sqr(a*x+b*y+c*z+d+e*x^2+f*y^2+…)] (7)
在一些实施方式,用回归方法找到使误差值“err”最小化的最佳参数值a,b,c,d,e,f…。在4604,前景对象的x,y坐标(具有(x,y,z)的3D位置)代入到多项式曲面拟合方程,在给定的x和y的情况下,计算z’。
图47显示了根据本公开具体实施方式的用于获得z’的过程的流程图。图47所示的实施例中,使用高斯过程回归的机器学习方法。如图47所示,在4702,使用所有校准点的3D位置计算协方差矩阵。在4704,回归用于在接触交互表面上投射问询点(即前景对象)并且获得z’。图47所示的方法适合接触交互表面不规则的情形,即接触交互表面不是平面或不接近平面,或者其环境测量数据不是很统一。
图48显示了根据本公开具体实施方式的用于寻找z’的过程的流程图。图48所示的实施例中,使用表面点云(surface point cloud)的方法。在4802,根据环境校准数据从点云重建3D接触交互表面。在4804,基于重建表面,计算在位置(x,y)处的表面z’值。
根据本公开具体实施方式获得的2.5D信息,如前所述,可用于各种应用程序。例如图49显示了使用接触交互表面进行手写的过程。在4902,指尖的3D位置被跟踪。在4904,获得的指尖的3D位置(x,y,z)被转换为2.5D信息x’,y’和d。在4906,确定d是否小于阈值距离。如果是,接触/拖动事件被记录(4908)。如果d不小于阈值距离,事件被释放(4910)。
图50显示了前景对象如用户的手指在键盘上的键的上方悬停的过程。在5002,键盘上的键被识别,并且每个键的3D位置被感测和记录。在5004,用户手指的3D位置与键的位置相比较,确定手指悬停在哪个键上方以及手指和那个键之间的距离。在5006,UI显示在显示器114的屏幕上,以表示手指悬停在那个键上方以及手指和那个键有多远的距离。
如上所述,交互式系统100可以追踪用户手或手指的位置。在一些实施方式中,交互式系统100还追踪用户眼睛的位置,并结合眼睛的位置信息及手或手指的位置信息,用于3D/2D输入。
根据本公开的具体实施方式,交互式系统100可以感测用户的眼睛的3D位置,类似于上面所述的用户的手或手指的3D位置的感测。眼睛、手或手指、以及显示器114屏幕的信息被关联起来,以创建“3D和2D直接操控”的互动方式。在本公开中,“直接操控”是指允许用户直接操控呈现给他们的对象。在用户的眼睛的看来,手或手指的位置和显示在屏幕上的被操纵对象的位置,如由常规的显示设备呈现的对象的2D位置或3D显示器呈现的对象3D位置,是一样的。
图51示意性显示了根据本公开具体实施方式的设置。如图51所示,感测装置102被放置成面对用户,并可以拍摄包括用户的头5102和手5104的图像。
结合头部追踪和手追踪,用户可以与2D屏幕上的内容交互、或通过虚拟接触表面与2D屏幕上的内容交互。用户还可以与3D显示器所呈现的3D内容交互。此外,可以实现头戴式3D显示(HMD)。
图52示意性示出了用户与2D物理屏幕5202上的内容交互的情形。在一些实施方式中,人脸识别和追踪方法用于识别眼睛5204在感测装置102坐标系中的3D位置E(x,y,z)。手追踪方法,如上面描述之一的,用于识别手5104在感测装置102的坐标系中的3D位置T(x,y,z)和手5104的动作。如上所述,在校正阶段,交互式系统100感测并记录屏幕5202在感测装置102坐标系的3D信息。这些信息可包括,例如屏幕5202的3D位置和3D取向、屏幕5202的尺寸(如宽度和高度)。这些信息可以替代的或另外的包括,例如屏幕5202的四个角的3D位置:左上(x,y,z),右上(x,y,z),左下(x,y,z)和右下(x,y,z)。利用眼睛5204的3D位置E(x,y,z)和手5104的3D位置T(x,y,z),创建从眼睛5204的3D位置延伸到手5104的3D位置的线。计算这条线与屏幕5202相交的交点I(x,y,z)。交点的坐标I(x,y,z)可以被转换成屏幕5202的2D坐标。如此获得使用屏幕5202的2D坐标表示的2D交点位置P(x”,y”)。用户在位置P(x”,y”)的动作信息被发送到操作系统或应用。
图53示意性示出了用户通过如上述的本公开具体实施方式的方法所定义的虚拟触摸表面5302与2D物理屏幕5202上的内容交互的情形。该情形中的计算类似于依据图52描述的情形,只不过是计算和记录连接眼睛5204和手5104的线与虚拟接触表面5302交叉的2D交点位置P(x’,y’),该位置使用虚拟接触表面5302的2D坐标表示。此外,手5104和虚拟接触表面5302之间的距离D被计算并报告给操作系统或应用。
图54示意性示出了用户与3D显示屏5402所呈现的3D内容(如虚拟3D对象5404)交互的情形。在一些实施方式中,交互式系统100使用面部识别和追踪算法来识别眼睛在感测装置102的坐标系中的3D位置E(x,y,z)。手追踪方法,如上面描述的方法之一,用于识别手5104在感测装置102的坐标系中的3D位置T(x,y,z)及手5104的动作。在校正阶段,交互式系统100感测并记录屏幕5402在感测装置102的坐标系中的3D信息。这些信息可以包括例如屏幕5402的3D位置和3D取向、屏幕5402的尺寸(如宽度和高度)。交互式系统100将眼睛5204的3D位置从感测装置102的坐标系中转换到屏幕5402所使用的坐标系,以呈现虚拟3D对象5404,Es(x,y,z),并将这些信息发送给操作系统和3D交互应用。3D交互式应用根据用户的眼睛5204的3D位置Es(x,y,z)呈现该虚拟3D对象5404。此外,交互式系统100将手5104的3D位置从感测装置102的坐标系转换到屏幕5402所使用的坐标系,以呈现虚拟3D对象5404,Ts(x,y,z),并将这些信息发送给操作系统和3D交互应用。3D交互应用使用Ts(x,y,z)信息,以允许用户与虚拟3D对象5404进行交互。
根据本公开具体实施方式的系统可以还包括头戴式3D显示器(HMD),实现虚拟现实交互,例如与虚拟接触表面的交互,与虚拟3D对象的交互,或与物理3D对象的虚拟交互。图55显示了根据本公开具体实施方式的HMD系统5500。HMD系统5500包括一副HMD眼镜5502和与HMD眼镜5502耦接的感测装置5504。感测装置5504可以安装在HMD眼镜5502的顶部、底部、左边或右边。在一些实施方式中,感测装置5504具有分体设计,并且感测装置5504的成像传感器安装在HMD眼镜5502的不同的地方。
利用HMD系统5500,用户可以与固定的2D显示器交互,类似于上述那些不使用HMD的情形。
图56和57分别显示了用户与虚拟接触表面交互的情形和用户与虚拟HMD系统5500所呈现的3D对象交互的情形。有关这些情形的方法与上面结合,例如图53和54,所描述的方法类似。
图58显示了HMD系统5800,用户可以用它与距离用户较远的物理对象5802进行交互。HMD系统5800包括HMD眼镜5502、感测装置5504和全球定位系统(GPS)5804。在一些实施方式,HMD系统5800在世界坐标系统中的3D位置被例如GPS 5804感测到。计算世界坐标系统中用户眼睛的3D位置Ew(x,y,z)。感测装置102感测手5104在感测装置102坐标系的3D位置T(x,y,z),然后其由HMD系统5800转换为世界坐标系的3D位置Tw(x,y,z)。在世界坐标系统中计算从用户眼睛延伸到手的3D位置的线。该线与物理对象5802之间的交点(HMD系统5800记录了物理对象5802在世界坐标系的3D位置)被感测,并且获得交点的位置信息,发送给操作系统或应用程序。
图59显示了HMD系统5900,用户可以用它与物理对象5902交互。HMD系统5900包括HMD眼镜5502、感测装置5504和摄像头5904。根据本公开具体实施方式,HMD系统5900使用摄像头5904或其他设备感测物理对象5902,并计算物理对象5902在HMD系统5900的坐标系的3D位置。HMD系统5900还感测手5104的3D位置T(x,y,z),并在HMD系统5900的坐标系统中计算从用户的眼睛延伸到手5104的线。HMD系统5900感测及计算该线与物理对象5902之间的交点在HMD系统5900坐标系的3D位置P(x,y,z),并且计算手的3D位置到交点的3D位置之间的距离D。获得的信息发送给操作系统或应用。
如上所述,使用根据本公开的三维交互式系统,如上面描述的交互式系统100,用户可以定义接触交互式表面(也被称为触摸表面)。如上所述,该接触交互式表面可以是在开放空间中定义的虚拟表面(例如,空气触摸面,如在图33A和33B中所示的虚拟触摸表面),计算机显示屏幕(如在图33A和33B中所示的显示器114的屏幕),或者任何物理表面(如图33A和33B中所示的物理触摸表面)。用户可使用接触交互式表面作为虚拟的“输入设备”和计算机进行交互,而不需要实际的触摸屏或触摸垫。经由接触交互式表面与计算机交互的方法的细节描述如下。
如上所指出的,接触交互式表面可以使用三个或更多个角点定义,如图60所示的四个角点Point3D_1、Point3D_2、Point3D_3和Point3D_4。在一些实施例中,下面的等式可用来定义接触交互式表面:
z=Ax+By+C
(8)
其中x、y和z是在空间中定义的三维坐标系(也称为空间坐标系)中的空间坐标(也称为三维坐标),A、B和C是需要确定的系数。空间坐标系的原点可以被定位在例如三维交互式系统上的一个点上,如交互式系统100的感测装置300的两个成像传感器304之间的中间点。空间中的点的三维坐标(x,y,z)可使用根据本公开的实施例的方法确定,如上文结合图12-31描述的方法。使用角点的位置信息,如图60中所示的角点,和系数A、B、C即可确定接触交互式表面。
在一些实施例中,接触交互式表面可以通过使用四个角点中的三个来确定,例如,接触交互式表面的法向量从而确定:
法向量=向量(Point3D_2,Point3D_1)×向量(Point3D_2,
Point3D_3) (9)
其中向量(Point3D_2,Point3D_1)表示从角点Point3D_2到角点Point3D_1的向量,向量(Point3D_2,Point3D_3)表示从角点Point3D_2到角点Point3D_3的向量,“×”表示向量叉积。
在一些实施例中,接触交互式表面可以使用奇异值分解(SVD)方法来拟合三维平面参数,也就是校准点,例如图60中所示的角点,的三维位置从而确定。
在上文中,接触交互式表面和向量都表示在空间坐标系中。使用上述向量,可以建立接触交互式表面上定义的二维坐标系(也被称为触摸表面坐标系)。这个二维坐标系可以使用,例如,角点Point3D_2作为原点,即触摸表面坐标系的原点。按如下方式计算的右向量和上向量可以定义为触摸表面坐标系的坐标轴:
右向量=Point3D_2-Point3D_1
(10)
上向量=右向量×法向量 (11)
其中法向量根据例如上面讨论的方法之一来计算,可以表示为法向量=(-A,-B,1)。计算的右向量和上向量如图61示意性所示。
基于上述定义的触摸表面坐标系,任何给定的三维点P(x,y,z)可以使用映射函数M投影到接触交互式表面。触摸表面坐标系中的投影点的坐标(u,v),以及从三维点P(x,y,z)到接触交互式表面的距离d,可以使用映射函数M来确定:
(u,v,d)=M(x,y,z) (12)
根据本公开的实施例,首先,将三维点P(x,y,z)投影到接触交互式表面上的一三维点P’(x’,y’,z’):
P’=P–(法向量*d)
(13)
其中,“*”表示标量乘法,距离d可以按如下计算:
d=(P–原点)·法向量 (14)
其中,“·”表示点积(也称为标量积)。注意在方程(13)和(14)中,计算仍然是在空间坐标系中进行的,因此每个点的坐标,即点P、P'和原点中的每一个,都是空间坐标系中的这一点的三维坐标。图62示意性示出点和向量之间的关系。
然后,P’在触摸表面坐标系中的二维坐标,即(u,v)可通过首先根据下面的式(15)计算向量Vec,然后分别通过式(16)和(17)的点积计算u和v来计算。
Vec=(P'–原点) (15)
u=Vec·右向量 (16)
v=Vec·上向量 (17)
在方程(15)-(17)中,点和向量仍然是在空间坐标系中表示的,但计算结果,即u和v是投影点P’在触摸表面坐标系中的二维坐标。图63示意性示出了原点和P’之间的关系。
如下讨论,触摸表面坐标系中的投影点P’的二维坐标(u,v)可接着被转化为显示屏幕上的二维坐标系(在本公开中也称为S坐标系)中的点的二维坐标。
首先,使用上述映射函数M,可将触摸交互表面的四个角点的每一个的三维坐标(x,y,z)转化为触摸表面坐标系的二维坐标(u,v),即:
P1’(u,v)=M(Point3D_1)
(18)
P2’(u,v)=M(Point3D_2)
(19)
P3’(u,v)=M(Point3D_3)
(20)
P4’(u,v)=M(Point3D_4)
(21)
注意,这里P1’、P2’、P3’和P4’每一个的距离d都是零(0),这是因为这些点都在接触交互式表面上。在一些实施例中,如上面讨论的实施例中,由于Point3D_2用作触摸表面坐标系的原点,P2’(u,v)为P2’(0,0)。图64示意性示出了这种转换的结果。
在一些实施例中,接触交互式表面的四个角点对应于显示屏幕的四个角,其可分别表示为S1(0,0)、S2(W,0)、S3(W,H)和S4(0,H)。在一些实施例中,S坐标系可以根据屏幕的实际物理尺寸来定义,其中W和H分别代表屏幕的实际物理宽度和高度,并因此有长度量纲(单位为,例如,英寸或毫米)。在一些实施例中,S坐标系可以根据屏幕的像素数目(这将是无量纲的),而不是物理尺寸来定义。例如,如果屏幕具有1920×1080的分辨率,则角的位置分别为(0,0)、(1919,0)、(0,1079)和(1919,1079)。类似地,屏幕上的点可以具有例如(800,500)的位置。在一些实施例中,S坐标系还可以定义为使得四个角点分别表示为S1(0,0)、S2(1,0)、S3(1,1)和S4(0,1),并且在屏幕上的点表示为宽度的百分比或分数和高度的百分百或分数。例如,坐标(0.5,0.5)表示屏幕的中心点。
图65示意性示出了接触交互式表面的角点和显示屏幕上的角点之间的对应关系。
使用上述对应关系,可以获得单应性变换矩阵H,即将触摸表面坐标系中的二维坐标(u,v)映射到S坐标系中的二维坐标(X,Y)。即,可以使用H矩阵将接触交互式表面上的任意点P'(U,V)变换为屏幕上S坐标系中的对应点s(X,Y):
s(X,Y) = perspectiveTransform(P’(u,v), H)
(22)
根据上面讨论的实施例,为了将投影点P'变换为屏幕上对应的点,首先,将投影点P'在空间坐标系中的三维坐标转换为投影点P'在触摸表面坐标系中的二维坐标,再将此二维坐标变换到S坐标系中的对应点的二维坐标。然而,在一些实施例(如下面讨论的实施例)中,把投影点P'在空间坐标系中的三维坐标转换为投影点P'在触摸表面坐标系中的二维坐标的步骤可以省略。
此外,在上述实施例中,将三维点P投影到接触交互式表面上包括正交投影,也即连接所述三维点P(物理点)和投影点P'(虚拟点)的线垂直于所述接触交互式表面。然而,在一些实施例中,该投影也可以是非正交投影,也即连接所述三维点P与投影点P'的线不垂直于所述接触交互式表面。例如,投影可这样进行,假设距离接触交互式表面一定距离的假想光源照亮三维点P,投影点P'即是三维点P在接触交互式表面上的阴影。作为另一个例子,该三维点可以通过下面的方式被投影到接触交互式表面上,即通过从用户的其中一只眼睛,或从用户两眼之间中间的点,穿过该三维点P投射一条线到该接触交互式表面,该线和所述接触交互式表面之间的相交点就是投影点P'。
图66示意性地示出了具有三维位置(x,y,z)的三维点P投影到接触交互式表面上具有三维位置(x’,y’,z’)的投影点P'。如上面所讨论的,在图66中所示的投影可以是正交投影或非正交投影。根据本公开的实施例,三维点P的三维位置(x,y,z)和投影点P'的三维位置(x’,y’,z’)在同一坐标系中定义,例如,空间坐标系。
根据本公开的实施例,还计算图66中示出的距离D。在一些实施例中,距离D表示从对象(如用户的手指)上的三维点P到接触交互式表面的距离。在这些实施例中,距离D与上文讨论的距离d相同。在其它一些实施例中,距离D表示对象上的三维点P与在接触交互式表面上对应的投影点P'之间的距离。在这些实施例中,距离D可以与上文讨论的距离d不同。应该注意的是,如果三维点P垂直投影到接触交互式表面,也即连接三维点P与投影点P'的线垂直于所述接触交互式表面,那么这两种类型的距离D实际上是相同的。
根据本公开的实施例,对象上的三维点P投影到接触交互式表面上的投影点P'可以表示为:
(x’,y’,z’;D)=PF(x,y,z) (23)
其中x、y和z表示三维点P在空间坐标系中的三维坐标,x’、y’和z’表示投影点P'在空间坐标系中的三维坐标,PF是投影函数。
在定位了投影点P'后,它在接触交互式表面上的位置(基于空间坐标系中的三维坐标表示)被映射到计算机实际显示屏幕上的位置,也就是在S坐标系中的点。在屏幕上显示二维位置指示符以模拟该投影点P'的该位置。
如上所述,接触交互式表面和接触交互式表面上的交互区域由四个角点定义。在一些实施例中,四个角点在空间坐标系中的位置可以分别表示为(x’0,y’0,z’0)、(x’1,y’1,z’1)、(x’2,y’2,z’2)和(x’3,y’3,z’3)。如上述讨论,接触交互式表面上的四个角点可以被映射到屏幕的四个角,这四个角分别具有在S坐标系中定义为(0,0)、(W,0)、(W,H)和(0,H)的位置。图67示意性地示出了接触交互式表面上的点映射到S坐标系。图67类似于图65,除了在图67中,接触交互式表面的四个角点的位置使用它们在空间坐标系中的三维坐标来表示,而不是它们在触摸表面坐标系中的二维坐标。
根据接触交互式表面上四个角点的三维坐标和屏幕上对应的四个角的二维坐标,可以通过例如拟合方法来得到映射函数F。利用这一映射函数F,接触交互式表面上具有位置(x',y',z')的任意点可以映射到屏幕上具有位置(X,Y)的对应点:
(X,Y)=F(x',y',z') (24)
在一些实施例中,映射函数F可以将接触交互式表面上的点与该四个角点成比例地映射到屏幕上。其结果是,可以基于和对象上的三维点P对应的接触交互式表面上的投影点P'的位置,使用映射函数F来确定屏幕上的二维位置指示符的位置。
根据本公开的实施方案,可以生成对象,例如手指,的图形表示,并将其显示在屏幕上。图68A和68B示出了手指的示例性图形表示。如图68A和68B所示,图形表示包括如上文讨论的二维位置指示符、以及对象阴影和对象指示符。在图68A和68B的示例中,对象指示符是具有手指形状的手指指示符。该对象阴影也具有手指形状。
根据本公开的实施例,图形表示随着对象(如手指)移动。对象阴影和对象指示符一起给用户创造了对象的位置及其到接触交互式表面的距离的真实感。改变对象和虚拟触摸表面之间的距离,对象阴影和/或对象指示符之间的透明度可以随之改变。例如,当对象向接触交互式表面移动时,对象阴影和/或对象指示符的透明度可以减小,甚至可以变为零,即当对象“接触”到接触交互式表面时,对象阴影和/或对象指示符变为不透明。此外,对象阴影和/或对象指示符的大小也可随着对象和接触交互式表面之间的距离改变而改变。例如,对象阴影和/或对象指示符的大小可以随着减小该距离而减小。图69A和69B示意性地示出了对象和接触交互式表面之间的距离对于对象阴影和对象指示符所产生的效果。
在一些实施方案中,对象与接触交互式表面之间的距离可以通过上述的距离d(或D)来表示。
在图69A中,对象阴影和对象指示符创造了对象及其对象阴影在虚拟触摸表面上的视觉效果。这为用户提供了接触交互式表面代表固体表面的感觉。另一方面,在图69B中,对象阴影和对象指示符创造了对象及其镜像的视觉效果。这为用户提供了接触交互式表面代表反射表面(如镜子)的感觉。
根据本公开的实施例,对象阴影的位置和对象指示符的位置可以由二维位置指示符的位置(X,Y)和距离d(或距离D)来确定。如在本公开中使用的,对象阴影或对象指示符的位置可以是与对象上的物理点对应的对象阴影或对象指示符上的点。例如,在图69A和69B中,对象阴影和对象指示符具有手指形状。因此,对象阴影或对象指示符的位置可被定义为相应的手指形状的指尖的位置。
在图69A所示的示例中,对象阴影的位置是(X,Y),该对象指示符的位置可被记为(X+offset_x,Y+offset_y),如图70A所示。参数offset_x和offset_y可以是距离d(或距离D)的函数。例如,offset_x和offset_y可以与距离d(或距离D)成比例,但具有不同的比例系数。
在图69B所示的示例中,对象阴影的位置可以被记为(X+offset_x1,Y+offset_y1),该对象指示符的位置可被记为(X+offset_x2,Y+offset_y2),如图70B所示。与图70A所示的示例类似,参数offset_x1,offset_y1,offset_x2和offset_y2可以是距离d(或距离D)的函数。例如,offset_x1,offset_y1,offset_x2和offset_y2可以与距离d(或距离D)成比例,但具有不同的比例系数。在一些实施例中,offset_x1可以等于负的offset_x2,且offset_y1可以等于负的offset_y2。
根据本公开的实施例,当交互式系统100检测到用户已经执行了“点击”或“敲击”的动作时,二维位置指示符可以激活,如通过改变尺寸、颜色或形状以确认检测到“点击”或“敲击”的动作。如本公开中所使用的,“点击”或“敲击”动作可以是对象(如手指)突然向接触交互式表面移动。当检测到这样的动作时,二维位置指示符的位置不会改变,尽管该对象的位置实际上已经改变了。其结果是可以实现更为精确的控制。
除了对象阴影和对象指示符的尺寸和位置以外,还可以增加其它视觉效果,如对象的三维方向,这可以根据上述讨论的方法来确定。在一些实施例中,对象的三维方向(在自由空间中)可转换成相对于接触交互式表面的三维方向。该对象阴影的方法和/或对象指示符的方向可以根据该对象相对于接触交互式表面的三维方向而动态地变化。
此外,对象(如手指)的位置可以和用户的头部位置结合起来以更为真实地呈现对象阴影和对象指示符。在一些实施例中,用户的头部位置(xH,yH,zH)被预先假定,并在交互式系统100中进行设置。在一些实施例中,交互式系统100还包括头部跟踪器,其动态地提供用户头部的位置(xH,yH,zH)。根据(xH,yH,zH)、对象的位置信息(如二维位置指示符的位置(X,Y)),以及距离d(或距离D),可以确定对象阴影和对象指示符的尺寸、角度和位置。
结合这里披露的本发明的说明和实践,本公开的其他实施例对于本领域技术人员都是易于想到和理解的。说明和实施例仅被认为是示例性的,本公开的真正范围和主旨均由权利要求所限定。