具体实施方式
在下面的描述中,将描述本发明的实施例的不同方面。为了解释的目的,陈述特定的配置和细节,以提供深入的理解。然而,对于本领域技术人员而言也明显的是,不具有在此呈现的特定细节也可以实现本发明。
本实施例公开一种对用户在3D系统中的点击姿势进行响应的方法。该方法定义了显示的按钮应当对用户点击姿势进行响应的概率值。根据当触发点击时手指的位置、依赖于用户眼睛位置的按钮位置和按钮大小来计算概率值。具有最高点击概率的按钮将被激活,作为对用户点击操作的响应。
图1图示根据本发明实施例的计算机交互系统的基本配置。两个相机10和11分别位于监视器12(例如60英寸对角屏幕尺寸的TV)的上表面的每一侧。相机连接至PC计算机13(相机可以集成至监视器中)。用户14通过佩戴一副红蓝眼镜(red-blue glasses)15、快门眼镜或其他类型的眼镜或者如果监视器12是自动立体显示器则无需佩戴任何眼镜,来观看监视器12上显示的立体内容。
在操作中,用户14通过在相机10和11的三维视场内做姿势来控制计算机13上运行的一个或多个应用。使用相机10和11来捕获姿势,并将姿势转换成视频信号。计算机13然后使用任何被编程以便对用户14做出的特定手势进行检测和识别的软件来处理视频信号。应用对控制信号进行响应并且将结果显示在监视器12上。
系统可以容易地运行在配备有廉价相机的标准家用或商业计算机上,并且因此对于大多数用户而言比其他已知系统更容易获得。此外,该系统可以使用于需要3D空间交互的任何类型的计算机应用。示例应用包含3D游戏和3D TV。
尽管图1结合传统的独立计算机13示出了交互系统的操作,但是该系统当然可以应用于其他类型的信息处理设备,例如膝上型便携电脑、工作站、平板电脑、电视、机顶盒等。如在此使用的术语“计算机”意欲包含这些设备和其他基于处理器的设备。
图2示出在示例性实施例中由交互系统所识别的一组姿势。所述系统使用识别技术(例如以手的边界分析为基础的那些识别技术)和跟踪技术以识别姿势。所识别的姿势可以被映射至诸如“点击”、“关门”、“向左滚动”、“向右翻”等的应用命令。容易识别诸如推、左挥、右挥之类的姿势。点击姿势也容易设别,但是比较难识别点击点相对于用户观看的3D用户界面的准确位置。
理论上,在双相机系统中,若给定相机的焦距和两个相机之间的距离,则可以通过在两个相机上的点的图像的位置来获得任何空间点的位置。然而,对于在场景中的相同对象,如果用户观看在不同位置上的立体内容,则用户可以认为对象位置在空间上是不同的。在图2中,使用右手来图示姿势,但是我们可以替代地使用左手或身体其它部分。
参考图3,使用针对远距点在屏幕平面上的左视图和右视图,来示出双眼视觉的几何模型。如在图3中所示,点31和30分别是在左视图和右视图中相同场景点的图像点。换言之,点31和30是在场景中的3D点在左屏幕平面和右屏幕平面上的投影点。当用户站在其中点34和35分别是左眼和右眼的位置时,用户将认为场景点位于点32的位置处,尽管左眼和右眼分别从点31和30处看到它。当用户站在其中点36和37分别是左眼和右眼的另一位置时,他将认为场景点位于点33的位置处。因此,对于相同的场景对象,用户将发现,所述场景对象的空间位置已经随着用户位置的变化而变化。当用户试图使用其手来“点击”对象时,他将在不同的空间位置处点击。结果,姿势识别系统将认为用户在不同的位置进行点击。计算机将识别出,用户正在在应用的不同项目上点击,并且因此将向应用发出不正确的命令。
解决该问题的常见方法是,系统显示“虚拟手”以向用户告知系统认为用户的手所处的位置。明显地,虚拟手将损坏裸手交互的逼真度(naturalness)。
另一解决该问题的常见方法是,用户每次改变其位置时,他将请求姿势识别系统重新校正它的坐标系,使得系统可以将用户的点击点正确地映射至界面对象(interface object)处。有时这是非常不方便的。在很多情况下,用户仅仅轻微地改变身体的姿态,而不改变用户的位置,并且在更多的情况下,用户仅仅改变其头部的位置,而他并没有意识到该改变。在这些情况下,每次用户眼睛的位置改变时都重新校正坐标系是不现实的。
此外,即使用户不改变其眼睛的位置,他也经常发现他不能总是准确地点击到对象上,尤其是当他点击相对小的对象时。原因是,在空间中点击是困难的。用户可能不是足够灵巧得能够精确地控制其食指的方向和速度,他的手可能颤抖,或者他的手指或手可能隐藏对象。姿势识别系统的准确性也影响点击命令的正确性。例如,手指可能过快地移动,而无法由相机跟踪系统准确地识别,尤其当用户远离相机时。
因此,存在强烈的需求,即,交互系统是容错的以使得用户眼睛位置的小变化和姿势识别系统的不准确性不会频繁地导致不正确的命令。也就是说,即使系统检测到用户没有在任何对象上点击,在一些情况下,系统对用户点击姿势进行响应以确定对象的激活也是合理的。明显地,点击点越靠近对象,对象对点击(例如激活)姿势做出响应的概率越高。
此外,明显的是,用户至相机的距离极大地影响姿势识别系统的准确性。如果用户远离相机,那么系统倾向于不正确地识别点击点。另一方面,按钮的大小或更一般地在屏幕上待激活的对象的大小也对正确性具有较大的影响。较大的对象更容易被用户点击。
因此,基于点击点与相机的距离、点击点与对象的距离和对象的大小来确定对象的响应度。
图4图示在相机2D图像坐标系(430和431)和3D真实世界坐标系400之间的关系。更具体地,3D真实世界坐标系400的原点被定义在在左侧相机节点A410和右侧相机节点B411之间的线的中心。分别用点P1(X′P1,Y′P1)440和P2(X″P2,Y″P2)441,来表示3D场景点P(XP,YP,ZP)460在左图像和右图像上的透视投影。点P1和P2的视差被定义为
dXP=X″P2-X′P1 等式(1)
和
dYP=Y″P2-Y′P1 等式(2)。
在实践中,以这样的方式布置相机,使得视差之一的值始终被认为是零。不失一般性地,在本发明中,图1中的两个相机10和11被水平地布置。因此,dYP=0。假设相机10和11是相同的并且因此具有相同的焦距£450。左图像和右图像之间的距离是两个相机的基线b420。
分别用点C(XP,O,ZP)461和D(XP,O,O)462,来表示3D场景点P(XP,YP,ZP)460在XZ平面和X轴上的透视投影。观察图4,点P1和P2之间的距离是b-dxp。观察三角形PAB,我们可以得到:
等式(3)
观察三角形PAC,我们可以得到:
等式(4)
观察三角形PDC,我们可以得到:
等式(5)
观察三角形ACD,我们可以得到:
等式(6)
根据等式(3)和(4),我们得到:
等式(7)
因此,我们得到
等式(8)
根据等式(5)和等式(8),我们得到:
等式(9)
根据等式(6)和(9),我们得到:
等式(10)
从等式(8)、(9)和(10)中,可以根据场景点在左和右图像中的2D图像坐标来计算场景点P的3D真实世界坐标(XP,YP,ZP)。
点击点至相机的距离是点击点在3D真实世界坐标系中的Z坐标值,其可以通过点击点在左图像和右图像中的2D图像坐标来计算。
图5图示在屏幕坐标系和3D真实世界坐标系之间的关系,以解释如何转换屏幕系统的坐标和3D真实世界坐标系的坐标。假设屏幕坐标系的原点Q的坐标在3D真实世界坐标系中是(XQ,YQ,ZQ)(这对于系统是已知的)。屏幕点P具有屏幕坐标(a,b)。那么,点P在3D真实世界坐标系中的坐标是P(XQ+a,YQ+b,ZQ)。因此,若给定屏幕坐标,我们可以将其转换至3D真实世界坐标。
接下来,图6图示以解释如何通过屏幕坐标和眼睛位置来计算3D真实世界坐标。在图6中,所有给定的坐标都是3D真实世界坐标。合理的是,假设用户左眼和右眼的Y和Z坐标分别是相同的。根据等式(8)、(9)和(10),可以通过眼睛在左侧和右侧相机图像中的图像坐标来计算用户左眼坐标EL(XEL,YE,ZE)510和右眼坐标ER(XER,YE,ZE)511。如上文中所描述的,可以通过其屏幕坐标来计算对象在左视图的坐标QL(XQL,YQ,ZQ)520和在右视图的坐标QR(XQR,YQ,ZQ)521。用户将感觉对象处于位置P(XP,YP,ZP)500处。
观察三角形ABD和FGD,我们可以得到:
等式(11)
观察三角形FDE和FAC,我们可以得到:
等式(12)
根据等式(11)和(12),我们得到:
因此
等式(13)
观察三角形FDE和FAC,我们得到
等式(14)
因此
等式(15)
根据等式(11)和(15),我们得到
也就是,
因此,我们得到
等式(16)
相似地,观察梯形QRFDP和QRFAER,我们得到:
等式(17)
因此,
等式(18)
根据等式(11)和(18),我们得到:
也就是,
因此,
等式(19)
从等式(13)、(16)和(19)中,可以通过对象在左和右视图中的屏幕坐标和用户左眼和右眼的位置来计算对象的3D真实世界坐标。
如上文中所描述的,根据点击点到相机的距离d、点击点到对象的距离C和对象的大小S,来确定对象的响应度。
可以通过点击点和对象在3D真实世界坐标系中的坐标来计算点击点到对象的距离C。假设点击点在3D真实世界坐标系中的坐标是(X1,Y1,Z1),所述坐标是通过点击点在左和右图像中的2D图像坐标计算的,并且假设对象在3D真实世界坐标系中的坐标是(X2,Y2,Z2),所述坐标是通过对象在左和右视图中的屏幕坐标以及用户左眼和右眼的3D真实世界坐标计算的。点击点(X1,Y1,Z1)到对象(X2,Y2,Z2)的距离可以被计算为:
等式(20)
点击点至相机的距离d是点击点在3D真实世界坐标系中的Z坐标值,其可以通过点击点在左图像和右图像中的2D图像坐标来计算。如在图4中图示的,3D真实世界坐标系的坐标轴X恰好是连接两个相机的线,并且原点是线的中心。因此,两个相机坐标系的X-Y平面与3D真实世界坐标系的X-Y平面重叠。结果,点击点到任何相机坐标系的X-Y平面的距离是点击点在3D真实世界坐标系中的Z坐标值。应当注意到,“d”的精确定义是“点击点到3D真实世界坐标系的X-Y平面的距离”或者“点击点到任何相机坐标系的X-Y平面的距离”。假设点击点在3D真实世界坐标系中的坐标是(X1,Y1,Z1),由于点击点在3D真实世界坐标系中的Z坐标值是Z1,那么点击点(X1,Y1,Z1)到相机的距离可以被计算为:
d=z1 等式(21)
一旦对象的3D真实世界坐标被计算,则可以计算对象的大小S。在计算机图形学中,包围盒(bouding box)是具有最小度量(面积、体积或在更高维度的超体积)的、完全包含对象的密闭盒。在本发明中,对象大小是对象的包围盒的度量的普通定义。在大多数情况下,“s”被定义为对象的包围盒的长度、宽度和高度中的最大者。
基于上述的点击点到相机的距离d、点击点到对象的距离C和对象的大小S,来对对象应当响应用户点击姿势的响应概率值进行定义。一般原则是,点击点越远离相机,或者点击点越接近对象,或者对象越小,则对象的响应概率就越大。如果点击点在对象的体积内,则该对象的响应概率是1并且该对象将肯定地响应点击姿势。
为了示例响应概率的计算,与点击点到相机的距离d有关的概率可以被计算为:
等式(22)
并且与点击点到对象的距离C有关的概率可以被计算为:
等式(23)
并且与对象的大小S有关的概率可以被计算为:
等式(24)
最终响应概率是上述三个概率的乘积。
P=P(d)P(c)P(s)
在此,a1、a2、a3、a4、a5、a6、a7、a8是常数值。
下面是关于a1、a2、a3、a4、a5、a6、a7、a8的实施例。
应当注意到,参数依赖于显示设备的类型,显示设备自身对在屏幕和用户之间的平均距离具有影响。例如,如果显示设备是TV系统,则在屏幕和用户之间的平均距离比在计算机系统或便携式游戏系统中的平均距离变得更长。
对于P(d),原则是,点击点越远离相机,对象的响应概率越大。最大的概率是1。当对象靠近用户眼睛时,用户可以容易地点击在对象上。对于特定的对象,用户离相机越近,对象距离用户的眼睛越近。因此,如果用户距离相机足够得近,但是他没有点击在对象上,他确实非常可能不想点击该对象。因此,当d小于特定值时并且系统检测到用户没有点击到对象上时,对象的响应概率将是极小的。
例如,在TV系统中,可以设计系统,使得当d是1米或更小时响应概率P(d)将是0.1,而当d是8米时P(d)将是0.99。也就是,a1=1,并且
当d=1时,
并且
当d=8时,
对于这两个等式,a2和a3被计算为a2=0.9693和a3=0.0707。
然而,在计算机系统中,用户将更接近屏幕。因此,可以设计系统,使得当d是20厘米或更小时响应概率P(d)将是0.1,而当d是2米时响应概率P(d)将是0.99。也就是,a1=0.2,并且
当d=0.2时,
并且
当d=2时,
然后,a2和a3被计算为a1=0.2、a2=0.1921和a3=0.0182。
对于P(c),如果用户在距离对象2厘米的位置处点击,则响应概率应当接近0.01。然后,可以设计系统,使得当c是2厘米或者更大时,响应概率P(c)是0.01。也就是,
a5=0.02,并且
exp(-a4×0.02)=0.01
然后,a5和a4被计算为a5=0.02和a4=230.2585。
相似地,对于P(s),可以设计系统,使得当对象的大小s是5厘米或者更大时,响应概率P(s)为0.01。也就是,
a6=0.01,并且
当a8=0.05时,
exp(-a7×0.05)=0.01
然后,a6、a7和a8被计算为a6=0.01、a7=92.1034和a8=0.05。
在该实施例中,当检测到点击操作时,将计算所有对象的响应概率。具有最大响应概率的对象将对用户点击操作进行响应。
图7是示出根据本发明实施例对3D真实世界坐标系中的用户点击操作进行响应的方法的流程图。下面参考图1、4、5和6来描述所述方法。
在步骤701,多个可选择对象显示在屏幕上。例如如图1所示,用户可以佩戴眼镜或者不佩戴眼镜地识别在3D真实世界坐标系中的每个可选择对象。然后用户点击一个可选择对象,以便实现用户想要做的任务。
在步骤702,使用设置在屏幕上的两个相机来捕获用户的点击操作,并且将点击操作转换为视频信号。然后计算机13使用任何被编程以便对用户的点击操作进行检测和识别的软件来处理视频信号。
在步骤703,如图4中所示,计算机13计算用户点击操作的位置的3D坐标。这些坐标根据场景点在左和右图像中的2D图像坐标来计算。
在步骤704,如图4所示,通过计算机13来计算用户眼睛位置的3D坐标。通过两个相机10和11来检测用户眼睛的位置。通过相机10和11所生成的视频信号捕获用户的眼睛位置。根据场景点在左和右图像中的2D图像坐标来计算3D坐标。
在步骤705,如图6所示,计算机13根据用户眼睛的位置计算所有在屏幕上的可选择对象的位置的3D坐标。
在步骤706,计算机计算点击点到相机的距离、点击点到每个可选择对象的距离和每个可选择对象的大小。
在步骤707,计算机13使用点击点到相机的距离、点击点到每个可选择对象的距离和每个可选择对象的大小,来计算对针对每个可选择对象的点击操作进行响应的概率值。
在步骤708,计算机13选择具有最大概率值的对象。
在步骤709,计算机13对具有最大概率值的选择对象的点击操作进行响应。因此,即使用户没有准确地点击在其想要点击的对象上,对象也可以对用户点击操作进行响应。
图8图示根据本发明的实施例的系统810的示例性方框图。系统810可以是3D电视机、计算机系统、平板电脑、便携式游戏机、智能手机等。系统810包含CPU(中央处理单元)811、图像捕获设备812、存储装置813、显示器814和用户输入模块815。如图8所述,诸如RAM(随机存取存储器)之类的存储器816可以连接至CPU811。
图像捕获设备812是用于捕获用户点击操作的单元。然后CPU811处理用户点击操作的视频信号,以便对用户的点击操作进行检测和识别。图像捕获设备812也捕获用户的眼睛,并且然后CPU811计算用户眼睛的位置。
显示器814被配置为向系统810的用户视觉呈现文字、图像、视频和任何其他内容。显示器814可以应用任何与3D内容相适应的类型。
存储装置813被配置为存储用于CPU811的软件程序和数据,以驱动和操作图像捕获设备812,并且以如上所说明的那样对检测和计算进行处理。
用户输入模块815可以包含用于输入字符或命令的键或按钮,并且也包含用于对使用键或按钮输入的字符或命令进行识别的功能。根据系统的使用应用,在系统中可以省略用户输入模块815。
根据本发明的实施例,系统是容错的。即使用户没有准确地点击在对象上,如果点击点靠近对象、对象非常小和/或点击点远离相机,对象也可以响应点击。
基于在此的教导,相关领域的普通技术人员可以容易地确定本发明的原理的这些其他特征和优点。要理解的是,可以以硬件、软件、固件、专用处理器或其组合的各种形式,来实现本发明的原理的教导。
最优选地,本发明的原理的教导被实施为硬件和软件的组合。此外,软件可以被实施为有形地实现在程序存储单元上的应用程序。应用程序可以被上载至包含任何合适架构的机器,并且由其执行。优选地,机器被实现在计算机平台上,该计算机平台具有诸如一个或中央处理单元(“CPU”)、随机存取存储器(“RAM”)和输入/输出(“I/O”)接口之类的硬件。计算机平台也可以包含操作系统和微指令代码。在此描述的各种过程和功能可以是可由CPU执行的微指令代码的部分或者是应用程序的部分,或者是其二者的组合。此外,各种其他外围单元可以连接至诸如附加数据存储单元之类的计算机平台。
还要理解的是,由于在附图中描述的一些组成系统部件和方法优选地实施为软件,因此根据本发明的原理被编程的方式,在系统组件或处理功能块之间的实际连接可能不同。给定在此的教导,相关领域的普通技术人员将能够想到本发明的原理的这些和相似的实施或配置。
尽管已经在此参考附图描述了示例性实施例,但要理解的是,本发明的原理并不局限于这些确切的实施例,并且其中相关领域的普通技术人员可以进行各种改变和修改,而不超出本发明的原理的范围或精神。如在所附权利要求中阐明的那样,所有这样的改变和修改意欲包含在本发明的原理的范围之内。