专利名称:基于运动的跟踪的制作方法
基于运动的跟踪技术领域本公开部分地涉及图像处理,特别是涉及检测图像中的运动。
技术背景各种各样的系统投影或显示用户期望至少与之间接互动的信息。例如, 计算机经常在监视器上显示文档,和用户期望使用鼠标在显示的文档内定位 光标与所显示的文档间接互动。这样的计算机还可以使用投影仪将文档投影 到投影屏幕上,而不是在监视器上显示所述文档。作为另一个例子,触:l臭屏 计算机允许用户通过在由图像本身指示的位置处触摸监视器,例如,触摸显 示的图像中的特定要素以便选择该要素,更直接地与显示的图像执行互动。发明内容所披露一个的实施例通过4全测用户的运动,和基于该用户的运动生成输 入,允许用户直接与所显示的或投影的图像互动。例如,可以使用视频游戏 生成和显示图像,并且,在用户想选择某个图标的情况下,用户可以指向该 图像中的图标。所披露的系统检测用户的运动,将检测到的运动与图标的选 择相关联,和将表示用户已经选择的图标的输入提供给所述应用程序。该系 统使用相机;险测用户的运动。根据一个总体方面,访问首先捕捉到的图像。首先捕捉到的图像包括(l) 在第一时间点产生的第一显示,以及("与第一显示互动的、并且不是第一显 示的一部分的用户。访问其次捕捉到的图像,其次捕捉到的图像包括(l)在第 二时间点产生的第二显示,以及(2)与第二显示互动的、并且不是第二显示的 一部分的用户。比较首先捕捉到的图像和其次捕捉到的图像。根据对首先捕 捉到的图像和其次捕捉到的图像的比较结果,确定用户的运动。将用户的已 经确定的运动与首先和其次捕捉到的图像中的一个或多个中的部分图像相互 联系。
将确定的用户运动以及部分图像的表示提供给计算装置。附加或可选的,基 于所确定的运动以及部分图像,可以确定用于一组指令的输入。比较首先和其次捕捉到的图像可以包括对首先捕捉到的图像和其次捕捉 到的图像执行绝对差操作或光流操作。比较首先和其次捕捉到的图像可以包 括产生所述结果,和,所述结果可以是表示用户的运动和与第一和第二显示 中 一个或多个对象相关的运动的图像。可以对该结果执行几何变换操作。基于比较首先捕捉到的图像和其次捕捉到的图像的结果确定用户的运动 可以包括在该结果中使所述用户的运动和与第一和第二显示中的一个或多个 对象相关的运动相互隔离。可以访问表示与第一和第二显示中的一个或多个对象相关的运动的图 像。在所述结果中,使用户的运动与和第一和第二显示中的一个或多个对象 相关的运动相互隔离可以包括将所述结果与表示与第一和第二显示中的一个 或多个对象相关的运动的图像进行比较。访问表示与第一和第二显示中的一个或多个对象相关的运动的图i"象可以 包括访问与第一显示对应的第一显示图像;访问与第二显示对应的第二显 示图像;和,生成表示与所述第一和第二显示中的一个或多个对象相关的运 动的图像。通过对所述第 一显示图像和所述第二显示图像^l行绝对差4喿作, 可以生成表示与第一和第二显示中的一个或多个对象相关的运动的图像。可 选的,通过对第一显示图像和第二显示图像执行光流操作,可以生成表示与 所述第一和第二显示中的一个或多个对象相关的运动的图像。可以对表示与第一和第二显示中的一个或多个对象相关的运动的图像执 行等待时间补偿运算。按照另 一个总体方面,系统包括捕捉的运动图像检测模块和比较模块。 捕捉的运动图像检测模块被配置为,访问首先捕捉到的图像,其中,首先捕 捉到的图像包括(1)依据由计算装置执行的指令组,在第 一时间点产生的第一 显示,以及(2)与第一显示互动的,并且不是第一显示的一部分的用户。捕捉 的运动图像检测模块还被配置为,访问其次捕捉到的图像,其次捕捉到的图 像包括(l)依据由计算装置执行的指令组,在第二时间点产生的第二显示,以 及(2)与第二显示互动的、并且不是第二显示的一部分的用户。捕捉的运动图 像检测模块还被配置为,通过对首先捕捉到的图像和其次捕捉到的图像执行 比较,生成代表首先和其次捕捉到的图像之间的运动的图像。比较模块被配
置为,根据对代表关于第一和第二显示中的一个或多个对象的运动的图像与 代表第 一与其次捕捉到的图像之间的运动的图像执行比较的结果,生成代表 用户运动的图像。上述总体方面的实施例可以包括以下特性的一个或多个。例如,系统可 以包括显示图像运动检测模块,其被配置为访问所述第一显示图像,访问所 述第二显示图像,和,通过对所述第一显示图像与所述第二显示图像进行比较生成代表与所述第一和第二显示中的一个或多个对象相关的运动的图像。系统还可以包括相机,被配置为(l)捕捉所述首先捕捉到的图像,并且 将该首先捕捉到的图像提供给捕捉的运动图像检测模块,和,(2)捕捉所述其 次捕捉到的图像,并且将该其次捕捉到的图像提供给捕捉的运动图像检测模 块。另外或者可选的,系统可以包括显示图像的显示器以及计算装置,其被 配置为执行一组指令,以产生第一和第二显示图像。系统可以包括等待时间补偿模块,被配置为对代表关于第一和第二显示 中的一个或多个对象的运动的图像进行等待时间补偿运算。系统还可以包括 几何变换模块,被配置为对代表首先与其次捕捉到的图像之间的运动的图像 执行几何变换操作。即使这里仅用一个方式执行了以上描述,但是,可以以一个或多个方式 实现各个方面、实施例和特性。例如,可以使用方法、装置、用于执行方法 的装置或工具或处理设备、程序或其他指令组、包括程序或指令组的装置以 及计算机可读介质中的一个或多个,实现各个方面、实施例和特性。例如, 计算机可读介质可以包括指令、软件、图像和其他数据。在附图和以下描述中,对一个或多个实施例的细节执行阐述。根据描述 和附图,并且根据权利要求,将明白其他特性。
图1A示出了第一交互系统。 图1B示出了第二交互系统。 图1C示出了第三交互系统。 图1D示出了第四交互系统。 图1E示出了第五交互系统。图2为用于确定用户运动,并且将确定的运动用作对应用程序的输入的
处理的例子的流程图。图3为交互系统的结构的框图。图4A示出了第一显示图像。 图4B示出了第二显示图像。图4C示出了图4A-4B的第一和第二显示图像的合成图像。图4D示出了与图4A-4B的第一和第二显示图像对应的第一显示图^i^动图。图4E示出了与图4A-4B的第一和第二显示图像对应的第二显示图^^:动图。图5A示出了首先捕捉到的图像。 图5B示出了其次捕捉到的图像。图5C示出了图5A-5B的首先和其次捕捉到的图像的合成图像。 图5D示出了与图5A-5B的首先和其次捕捉到的图像对应的首先捕捉到的 图像运动图。图5E示出了与图5A-5B的捕捉图像对应的其次捕捉到的图像运动图。图6A示出了第一用户运动图。图6B示出了第二用户运动图。图7为交互系统的另一个结构的框图。
具体实施方式
在一个具体实施例中,视频游戏应用程序生成多个图像,和,计算机系 统该投影图像给用户。用户通过进入投影的图像前面和好像他们就是虚拟现 实显示一样与投影的图像互动来玩游戏。例如,用户可以对着作为对象被包 括在投影图像中的目标摇摆。在这个例子中,实施例对用户的摇摆执行检测, 确定用户正在对着目标摇摆,并且将表示用户对着目标摇摆的输入提供给视 频游戏应用程序。然后,视频游戏应用程序响应于接收到用户对着目标摇摆 的输入,生成适当的图像以进行投影。当用户摇摆时,该实施例还能够通过使用相机捕捉包括投影图像以及用 户的一序列图像检测用户的摇摆。该实施例还访问没有用户的一系列投影图 像。该实施例确定在每个序列图像中的运动,并且比较该序列图像中已经确 定的运动,以便将用户的运动隔离(也称为"分段")。该实施例使用其目标
位置的知识确定用户的运动确实试图对着目标摇摆,并且将这个确定作为输 入提供给视频游戏应用程序。因为投影图像必须相对于周围光线级别足够亮以便使人或相机感觉到, 所以,照明条件的变化会影响投影图像的显示质量。反之,投影图像的外观对比度(apparent contrast)可能太j氐,以至不能感觉到。相才几可能具有比人 眼低的动态范围。因此,为了使相机捕捉包括投影图像的图像,需要投影图 像的亮度比为了人能够感觉到而必须的亮度亮。例如,为了使相机捕捉包括 投影图像的图像,需要投影图像比周围光线的级别(例如,阳光或顶光)亮, 其中,周围光线的级别会(例如,随着太阳在一天之内下落)改变。将图像投 影得与周围光线的级别一样亮,或者比周围光线的级别亮可能是不切实际的, 并且/或者是昂贵的。但是,局部照明条件的变化明显不影响或降低实施例检测用户运动的能 力。这至少部分是由于这样的事实,即实施例是通过将用户运动与投影图像 中的运动隔离来确定用户运动的。局部照明条件的变化可以使投影图像的显 示质量下降,并且可以削弱相机捕捉投影图像的能力。但是,由于用户反射 足够多的光线,因此,局部照明条件的变化一般不会明显影响相机捕捉用户 运动的能力。因此,即使捕捉的序列图像不包括投影图像中的运动,捕捉的 序列图像仍然包括用户的运动。此外,在本实施例中,相机以一采样速率捕捉图像,使得照明条件在连 续帧之间的任何变化都可以忽略。照明条件的变化一般发生在几分钟或者几 小时内,而相机的采样速率可以是,例如,每秒钟三十张图像。因此,本实 施例通常在连续帕中捕捉到相似的照明条件,和,这些帧之间的运动确定通 常不会使照明方面的变化与运动混淆。局部照明条件的变化对本实施例检测 用户运动的能力没有明显影响,或者不会使本实施例检测用户运动的能力明 显降低的事实,允许本实施例当局部照明条件变化时,继续检测用户的运动。图1A-1E示出了不同的交互系统100、 120、 130、 140和150的例子。图 1A示出了包括将图像显示在显示屏幕104上(称为"显示图像")的显示装置 (例如,投影仪102和显示屏幕104)的系统100。相机110可以按照采样速率、 例如每秒钟30张图像、捕捉图像。可以由驻留在计算装置106上的应用程序 生成显示图像,或者,可以由外部应用程序生成显示图像。在本讨论中,将 显示图像说成"被显示"。但是,很清楚,图像也可以被投影。还应该清楚,其他实施例不必对图像执行投影。例如,可以使用液晶显示屏。用户108与显示屏幕104上的显示图像执行互动。相机110捕捉包括用 户108和显示在显示屏幕104上的显示图像。计算装置106对由相机110捕 捉的图像执行处理,将用户108的运动与显示器中的运动隔离(即,分段), 并且确定用户108的运动。用户108的确定的运动被用作生成显示图像的应 用程序的输入。交互系统100的部件可以按照很多不同配置布置,导致例如图1A-1E的 不同系统。参照图1A,显示屏幕104位于用户108前面,而投影仪102和相 机IIO位于用户108后面。因此,用户108位于投影仪102与显示屏幕104 之间。因此,用户108会遮挡或部分遮挡由投影仪102在显示屏幕104上投 影的显示图像。参照图1B,系统120具有位于用户108之上的投影4义102、位于用户108 前面的显示屏幕104以及位于用户108后面的相机110。这样的配置可以减 少或消除显示图像中被用户104遮挡的部分。参照图1C,系统130具有位于用户108之上的冲殳影仪102和相一几110, 而显示屏幕104位于用户108下面。如图1C所示,例如,显示屏幕可以是地 面。参照图1D,系统140具有位于用户108之上的4殳影仪102和相才几110, 以及位于桌面112上的显示屏幕104。用户108仍然会遮挡显示图像的有限 的、 一般减少到最小的部分。参照图1E,系统150具有位于桌子114里面的投影仪102。投影仪102 对显示图像执行投影,使得显示图像被反射装置116(例如,反射镜)反射, 并且显示在显示屏幕104上。显示屏幕104位于桌子114的桌面上,并且, 相机110位于用户108之上。用户108不遮挡显示图像。可以使计算装置106 可选地位于桌子114里面。可以考虑其他配置。可以有许多变化,其中,相机可以被放置在这样一 个位置,以使得该相机能够捕捉至少包括显示屏幕104以及与显示在显示屏 幕104上的显示图像互动的用户108的一部分的图像。如图1A-1E所示,显示装置包括投影仪102和显示屏幕104。但是,显 示装置也可以包括、例如、等离子显示器、液晶显示器(LCD)、阴极射线管(CRT) 显示器或者自动立体显示器。 参照图2,处理200可以用于确定用户108的运动,并且用于将确定的 用户108的运动用作对应用程序的输入。处理200可以使用包括系统100的 各种系统实施。尽管可以使用其他系统,但为表述清楚起见,结合系统100 描述处理200。在对处理200的实施例执行描述的过程中使用系统100,意图 不是对处理200执行限制。处理200包括访问首先捕捉到的图像(202)和访问其次捕捉到的图像 (204)。可以用相机IIO对至少一部分显示屏幕104的图像以及至少一部分与 显示屏幕104互动的用户108的图像执行捕捉。捕捉的图像可以存储在图像 缓沖器中,并且可以从图像緩冲器访问捕捉的图像。然后,对首先捕捉到的图像与其次捕捉到的图像执行比较(206)。根据对 首先捕捉到的图像与其次捕捉到的图像执行比较的结果,确定用户108的运 动(20S)。然后,使确定的用户运动与首先和其次捕捉到的图像中的一个或多 个的一部分相关(210)。以下在对图3执行描述的过程中,对处理200的实施 例的操作执行更充分的描述。参照图3,其示出了系统的结构300。虽然可以使用其他系统,但为表述 清楚起见,结合系统100来描述结构300。在描述结构300的该实施例中使 用系统100并不试图限制结构300。结构300包括应用程序302,应用程序302生成显示图像304,和将显示 图像304提供给计算装置106的显示图像运动检测模块306,以及提供给显 示装置310。显示图像304可以包括动画对象。换句话说,显示图像304中 的对象的位置可以随时间变化,由此创建动画效果(例如,运动)。例如,连 续显示图像304中的对象的位置之间的差异,定义了显示图像304中的运动。 如参照图4A-4E更充分说明的,显示图像运动检测模块306对显示图像304 执行比较,并且产生用于识别显示图像304中的运动的显示图像运动图308。同时,显示装置310显示(例如,投影)显示图像304。投影的显示图像 311被显示在显示屏幕104(没有示出)上,和,用户108(没有示出)与显示图 像304互动。在本实施例中,用户108通过运动与显示图像304互动。例如, 用户108可以将手伸向或者触摸显示图像304中的对象。相机IIO捕捉包括投影的显示图像311和用户108的图像311。相机110 将捕捉的图像314提供给计算装置106的捕捉的运动图像检测模块316。相 机110可以将捕捉图像314直接提供给捕捉的运动图像检测模块316。可选
的,捕捉的图象314可以被存储在图像緩冲器中,捕捉的运动图像检测模块316可以从该图像緩冲器访问捕捉的图像314。用户108在捕对足的图像314中 的位置随时间变化。例如,连续捕捉图像314中的用户108的位置之间的差 异定义了用户108的运动。如参照图5A-5E更充分说明的,捕捉的运动图像 检测模块316对捕捉图像314执行比较,并且产生用于识别捕捉图像314中 的运动的捕捉的运动图像图318。由于事实上捕捉图像314包括用户108和 显示图像304,因此在捕捉的运动图像图318中识别的运动包括用户108的 运动和显示图像304中的运动。在某些实施例中,同步模块312可以被用于使显示图像304的显示与相 机110捕捉图像同步。某些显示装置310(例如,包括数字光处理(digital light processing,DLP)的显示装置)可以顺序地显示所述显示图像304的红、 绿、蓝分量。当人眼不能检测出所述显示图像304的红、绿、蓝分量的顺序 显示时,相机110可以捕捉红、绿、蓝分量的可变部分。因此,在连续捕捉 的图像314内的捕捉的显示图像304的红、绿、蓝分量可能不同,从而导致 捕捉的运动图像检测模块316检测出捕捉图像314中的这样的运动,它不属 于显示图像304中的运动,但它是由显示装置310所创建的运动。因此,同 步模块312可以被用于保证相机110在每张捕捉图像314中捕捉红、绿、蓝 分量的一致部分。在某些实施例中,为了生成运动图,显示图像运动检测模块306和捕捉 的运动图像检测模块316对两个图像执行比较运算,例如,绝对差操作。对 于灰度图像,通过计算两个图像中的每个像素的值的差的幅值(例如,绝对 值),确定运动。或者,对于彩色图像,通过对用于两个图像中的每个像素的 每个彩色通道(例如,红、绿、蓝)的值的差的幅值求和,确定运动图。通过 对两个图像执行绝对差操作生成的运动图对在图像的区域内出现的运动执行 识别。例如,图像的灰度序列的区域中的运动将产生很大的绝对差,很大的 绝对差将在运动图中作为一个亮点出现。在其他实施例中,为了生成运动图,例如,显示图像运动检测模块306 和捕捉的运动图像检测模块316对两个图像执行光流操作。通常,光流算法 对图像内的运动(例如,已经在图像内改变位置的对象)执行辨别,并且构成 代表图像内被辨别的运动的速度的矢量(例如,方向/方位和幅值)。因此,光 流算法不仅确定在图像内出现运动,而且确定图像内的运动的方向和幅值。
因此,通过对两个图像执行光流操作生成的运动图对图像中的运动的出现、 方位以及幅<直#(^于识别。运动检测模块306和316还可以执行滤波运算。例如,可以将滤波用于 通过对两个图像执行绝对差操作而生成的运动图。在某些实施例中,运动检 测模块306和316使用均值核心滤波器滤波所述运动图。均值核心滤波器根 据运动图中的个别像素的周围像素的值,确定该个别像素的值。例如,如果 使用3x3均值核心滤波器,则个别像素的值等于这个个别像素与其周围8个 相邻像素的值的和或者平均值。用均值核心滤波器对运动图执行过滤,使运 动区域的边缘光滑,还降低了运动图中的噪声(例如,额外的运动区域)。另外,或者,运动检测模块306和316可以对运动图执行膨胀和侵蚀滤 波运算。膨胀和侵蚀滤波运算也根据个别像素的周围像素的值,确定这个个 别像素的值。在膨胀运算中,滤波窗口经过个别像素以及这个个别像素周围 的一组像素,并且使这个个别像素的值等于过滤窗口内具有最大值的像素的 值。在侵蚀运算中,滤波窗口经过个别像素以及这个个别像素周围的一组像 素,并且使这个个别像素的值等于滤波窗口内具有最小值的像素的值。运动^r测才莫块306和316还可以对运动图执行分类运算。例如,运动斗全 测模块306和316可以对运动图执行阈值运算。在阈值运算中,如果个别像 素的值大于预定值,则给这个个别像素赋予表示"真"的值,并且,如果个 别像素的值小于预定值,则给该个别像素赋予表示"假"的值。被赋予真值 的像素可以代表被分类为代表运动的像素,而被赋予假值的像素可以代表被 分类为不代表运动的像素。与此相反,被赋予真值的像素可以代表被分类为 不代表运动的像素,而被赋予假值的像素可以代表被分类为代表运动的像素。比较模块320通过将具体的显示图^i^动图308与对应的捕捉的运动图 像图318执行比较,确定用户108的运动。在显示图像运动图308和捕捉的 运动图像图318中都出现的运动被归于显示器中的运动,而只出现在捕捉的 运动图像图318中的运动被归于用户108的运动。因此,比较模块320通过 对显示图像运动图308与捕捉的运动图像图318执行比较,并且将用户108 的运动与显示器中运动隔离(即分段),创建用户运动图322,用于识别可以 单独(或主要)归于用户108的运动。在运动检测模块306和316执行绝对差操作的实施例中,代表显示图像 运动图308和捕捉的运动图像图318两者中的运动的像素属于显示器中的运 动。因此,这样的像素不被分类为代表用户运动图322中的运动。相反,只 代表捕捉的运动图像图318中的运动的像素被归于用户108的运动,因此, 这些像素被赋予代表用户运动图322中的运动的值。在运动检测模块306和316执行光流操作的实施例中,捕捉的运动图像 图318中的、明显不同于显示图像运动图308中的运动的运动被归于用户108 的运动,并且被保留在用户运动图322中。例如,(l)如果幅值方面的差异超 过幅值阈值;或者,(2)如果方位(例如方向)方面的差异超过方位阈值,则认 为捕捉的运动图像图318中的运动明显不同于显示图<^动图308中的运动。 因此,在这样的实施例中,甚至可以在也表现出显示器中的运动的区域内检 测出用户108的运动。存在用于将用户108的运动与显示器中的运动隔离的其他机制。例如, 可以从捕捉图像314中减去对应的显示图像304,从而生成用户图像。然后, 可以根据连续的用户图像,生成用户运动图。已经确定的用户108的运动(例如,如在用户运动图322中代表的)被用 作对应用程序302的用户输入。例如,应用程序302可以接收用户运动图322, 并且根据用户运动图322,确定用户108对着显示图像304中的目标摇摆。 响应于对用户108对着目标摇摆的确定,应用程序302生成适当的显示图像 304,并且将这个显示图像提供给显示图像检测模块306和显示装置310。可以用图4A-4E、 5A-5E和6A-6E中示出的图,对用于确定用户108的运 动的图像处理技术执行描述。例如,这样的图像处理技术可以由图3中示出 的结构300执行。因此,为表述清楚起见,尽管可以用其他结构和系统执行 相同的图像处理技术,但是,在图3中示出的结构300的情况下,对图4A-4E、 5A-5E和6A-6E中示出的图执行描述。对图4A-4E、 5A-5E和6A-6E中的图4丸 行讨论时参照图3中示出的结构300,意图不是对用于执行结合图4A-4E、 5A-5E和6A-6E中示出的图描述的图像处理技术的结构和系统执行限制。作为对图4A-4E的简要介绍,图4A-4B示出了序列显示图像。图4C示出 了在图4A-4B中示出的序列显示图像的合成图像,而图4D-4E示出用于识别 图4A-4B中示出的序列显示图像中的运动的显示图像运动图。作为对图5A-5E的简要介绍,图5A-5B示出了序列捕捉图像。图5C示出 了在图5A-5B中示出的序列捕捉图像的合成图像,而图5D-5E示出用于识别 图5A-5B中示出的序列捕捉图像中的运动的捕捉的运动图像图。
作为对图6A-6B的简要介绍,图6A-6B示出了与图4D-4E的显示图像运 动图和图5D-5E的捕捉的运动图像图对应的用户运动图。图4A示出了第一显示图像304 (a),图5A示出了包括第一显示图像304 (a) 以及与显示器互动的用户108的对应的首先捕捉到的图像314(a)。应用程序 302在时刻卜1生成第一显示图像304 (a),并且将第一显示图像304 (a)提供 给显示图像运动检测模块306和显示装置310。如图4A所示,第一显示图像 304 (a)包括球402。显示装置310将第一显示图像304 (a)显示在显示屏幕104 上,并且,用户108与显示器互动。相机110捕^t足包括第一显示图像304 (a) 以及与显示器互动的用户108的首先捕捉到的图像314(a)。因此,首先捕捉 到的图像314(a)包括用户108以及第一显示图像304 (a)的球402。图4B示出了第二显示图像304 (b),图5B示出了对应的、包括第二显示 图像304 (b)以及与显示器互动的用户108的其次捕捉到的图像314 (b)。应用 程序302在时刻t生成第二显示图像304 (b),并且将第二显示图像304 (b) 提供给显示图像运动检测模块306和显示装置310。如图4B所示,第二显示 图像304 (b)包括与第一显示图像304 (a)相同的球402。但是,相对于球402 在第一显示图像304 (a)中的位置,球402在第二显示图像3(M(b)中的位置靠 左。为了说明球402在第一显示图像304 (a)和第二显示图像304 (b)中的不同 位置,图4C示出了第一显示图像304 (a)和第二显示图像304 (b)的合成图像 403。出现在图4C中的合成图像403不是由结构300或者结构300的任何部 件生成的。相反它只是出于说明的目的而提出的,为的是示出球402在第一 显示图像304 (a)和第二显示图像304 (b)中的不同位置。虛线圆402 (a)代表 球402在第一显示图像304 (a)中的位置,而虚线圓402 (b)代表球402在第二 显示图像304 (b)中的位置。显示装置310在显示屏幕104上显示第二显示图像304 (b),并且,用户 108与显示器执行互动。相机IIO对包括第二显示图像304 (b)以及与显示器 互动的用户108的其次捕捉到的图像314(b)执行捕捉。因此,其次捕捉到的 图像314(b)包括用户108和第二显示图像304 (b)的球402。如图5B所示, 相对于用户108在首先捕捉到的图像314(a)中的位置,用户108在其次捕捉 到的图像314 (b)中的位置靠右,而相对于球402在首先捕捉到的图像314 (a) 中的位置,球402在其次捕捉到的图像314(b)中的位置靠左。为了说明用户 108和球402在首先捕捉到的图像314 (a)和其次捕捉到的图像314 (b)中的不 同位置,图5C示出了首先捕捉到的图像314(a)和其次捕捉到的图像314(b) 的合成图像501。出现在图5C中的合成图像501不是由结构300或者结构300 的任何部件生成的。相反,它只是出于说明的目的而提出的,为的是示出用 户108和球402在首先捕捉到的图像314 (a)和其次捕捉到的图像314 (b)中的 不同位置。虚线的用户轮廓108(a)代表用户108在首先捕捉到的图像314(a) 中的位置,虚线的用户轮廓108(b)代表用户108在其次捕捉到的图像314(b) 中的位置。虚线圓402 (c)代表球402在首先捕捉到的图像314(a)中的位置, 而虚线圆402 (d)代表球402在其次捕捉到的图像314 (b)中的位置。第二显示图像304 (b)与第一显示图像304 (a)之间的差异创建了显示器 中的动画外观(即,运动)。球402在第一显示图像3(M(a)中的位置与球402 在第二显示图像304 (b)中的位置之间的差异代表球在时刻卜l与时刻纟之间 的运动。更一般地说,第一显示图像304 (a)与第二显示图像304 (b)之间的差 异代表在时刻卜l与时刻f之间的、在显示器中的运动。将第一显示图像304 (a)和第二显示图像3(M(b)提供给显示图像运动检 测模块306,以确定显示图像304 (a)和304 (b)中的运动。显示图像运动检测 模块306将第一显示图像304(a)与第二显示图像304(b)执行比较,并且创建 用于对两个图像304 (a)和304 (b)中的运动执行识别的显示图像运动图308。 图4D示出了通过对第一显示图像304 (a)和第二显示图像304 (b)执行绝对差 操作而生成的显示图像运动图308 (a)的例子。由图4D可见,通过对第一显 示图像304(a)和第二显示图像304 (b)执行绝对差操作而生成的显示图像运 动图308 (a)识别出,在显示图像304 (a)和304 (b)的区域内存在运动404。图4E示出了通过对第一显示图像304 (a)和第二显示图像304 (b)执行光 流操作而生成的显示图^象运动图308 (b)的例子。由图4E可见,通过对第一 显示图像304 (a)和第二显示图像304 (b)执行光流操作而生成的显示图像运 动图308 (b),使用矢量406识别出在显示图像304 (a)和304 (b)内的运动的 存在、方向禾口幅4直。如以上讨论的,相对于用户108在首先捕捉到的图像314(a)中的位置, 用户108在其次捕捉到的图像314(b)中的位置靠右。在用户108的位置方面 的差异归于用户与显示器的互动。例如,好象执行模拟(例如,虚拟)排球比 赛一样,为了对球402执行击球,用户108靠近^求402。用户108在首先捕 捉到的图像314(a)中的位置与用户108在其次捕捉到的图像314(b)中的位置
之间的差异代表用户108在时刻卜l与时刻f之间的运动。将首先捕捉到的图像314(a)和其次捕捉到的图像314(b)提供给捕捉图 像检测模块316。捕捉图像检测模块316对首先捕捉到的图像314(a)和其次 捕捉到的图像314(b)执行比较,并且创建用于对两个图像314(a)和314(b) 中的运动执行识别的捕捉的运动图像图318。图5D示出了通过对首先捕捉到 的图像314(a)和其次捕捉到的图像314(b)执行绝对差操作而生成的捕捉的 运动图像图318(a)的例子。由图5D可见,捕捉的运动图像图318(a)识别出 归于用户的运动500以及显示器中的运动502。图5E示出了通过对首先捕才足 到的图像314(a)和其次捕捉到的图像314(b)执行光流操作而生成的捕捉的 运动图像图318(b)的例子。由图5E可见,捕捉的运动图像图318(b)使用矢 量识别出归于用户的运动504以及显示器中的运动506。用于生成捕捉的运 动图像图318(b)的光流算法可以辨别出首先捕捉到的图像314(a)和其次捕 捉到的图像314(b)中共有的对象(例如,用户108和球402),并且,对首先 捕捉到的图像314(a)和其次捕捉到的图像314(b)中共有的对象的位置执行 比较,以便生成用于识别图像314 (a)和314 (b)中的运动的矢量。比较模块320将显示图像运动图308与捕捉的运动图像图318执行比较, 生成用户运动图322。图6A示出了与显示图像运动图308 (a)和捕捉的运动图 像图318(a)对应的用户运动图322 (a)的例子。由图6A可见,用户运动图322 (a) 识别出只(或者主要)归于用户的运动500。图6B示出了与显示图像运动图 308 (b)和捕捉的运动图像图318(b)对应的用户运动图322 (b)的例子。由图 6B可见,用户运动图322 (b)识别出来只(或主要)归于用户的运动504。参照图7,示出了系统的结构700。除了以下指出的区别以外,结构700 与结合图3描述的结构300大致相同。在某些实施例中,捕捉的运动图像图318中的特征的位置与显示图像运 动图308中的对应特征的位置可能有偏差,例如,这是由于相机110相对显 示屏幕104旋转,并且投影仪102与相机IIO彼此不同轴(例如,如图1A所 示,相机110在投影仪102之上,因此投影仪102与相机110不共轴),或者, 由于用于生成捕捉的运动图像图318的捕捉图像314的分辨率与用于生成显 示图像运动图308的显示图^f象304的分辨率不同。因此,在某些实施例中, 计算装置106包括几何变换模块702,用于将捕捉的运动图像图318中的数 据变换(例如,变形、旋转、缩放、位移)为变换捕捉的运动图像图704,使
得变换捕捉的运动图像图704中的特征与显示图像运动图308中的对应特征 对准。因此,几何变换操作对颠倒安装的相机110执行补偿,对与投影仪102 不同轴安装的相机110执行补偿,或者,对被投影到反射镜116上的显示图 像执行补偿,其中,反射镜116将显示图像反射到显示屏幕104上。例如, 几何变换操作可以包括对像素执行移动或重新布置;对捕捉的运动图像图 318的尺寸执行缩放;对运动值执行内插;和/或,对运动值执行外插。可以将校准处理用于确定显示图像与包括显示图像的捕捉图像的坐标之 间的几何映射。然后,可以将几何映射用于确定将捕冲足的运动图像图318中 的特征与显示图像运动图308中的对应特征对准所需要的几何变换操作。校准处理可以包括在显示屏幕104上显示已知图案,例如,点栅格或棋 盘。相机110捕捉包括图案的图像,并且,计算捕捉图像内的图案的位置。 然后,针对捕捉图像内的每个像素,可以使用捕捉图像内的要素的,相对于 显示图像内的对应要素的位置,对捕捉图像的坐标与显示图像的坐标之间的 几何映射执行定义。另外,或者,校准处理可以包括在显示图案或者部分图案之前,短时显 示空白图像。捕捉的运动图像检测模块316可以通过检测捕捉图像内的变化 (例如,运动)来检测图案。如上所述,几何变换模块702对捕捉的运动图像图318执行几何变换操 作。但是,在另一个实施例中,在捕捉图像314被提供给捕捉的运动图像检 测模块316之前,几何变换模块702对捕捉图像314执行几何变换操作。将显示图像304从应用程序302发送到显示装置310的处理、对显示图 像执行显示的处理、用相机110捕捉图像的处理以及对捕捉图像执行处理的 处理一般导致等待时间(即,延迟)。因此,相机在时刻t捕捉的图像包括稍 早生成的显示图像。因此,在某些实施例中,计算装置106包括等待时间补 偿模块706,时间补偿模块706执行等待时间补偿运算,以保证比较模块320 将等待时间补偿显示图像运动图708与时间上彼此对应的变换捕捉的运动图 像图704执行比较。在某些实施例中,等待时间补偿模块706将显示图像运动图308存储在 缓冲器中一段时间,这个时间与将等待时间补偿显示图像运动图708提供给 比较模块320之前的等待时间相等。因此,等待时间补偿显示图像运动图708 与对应的变换捕捉的运动图像图704几乎同时达到比较模块320。在另一个
实施例中,等待时间补偿模块706将显示图像304存储在緩冲器中一段时间, 这个时间与将显示图像提供给显示图像运动检测模块306之前的等待时间相 等。另外,或者,可以将等待时间补偿模块706用于对显示装置310的帧速 率与相机110的采样速率之间的差异执行补偿。例如,显示装置310的帧速 率可能比相机110的采样速率(例如,曝光时间)大。因此,单个捕捉图像可 能包括对多个显示图像304的曝光。为了对显示装置310的帧速率与相机IIO 的采样速率之间的这种差异执行补偿,等待时间补偿模块706可以将多个连 续的显示图像运动图308组合成单个等待时间补偿显示图像运动图708。将 被组合以产生单个等待时间补偿显示图像运动图708的显示图像运动图308 的数量选择为与在相机110的一个采样周期(例如,曝光)期间显示的显示图 象的数量匹配。可以使用逻辑"OR"运算,对使用绝对差操作生成的显示图像运动图308 执行组合。换句话说,如果被组合以生成等待时间补偿显示图^^运动图708 的多个显示图^i^动图308中的任何一个中的像素被定义为代表运动,则等 待时间补偿显示图像运动图708中的对应像素将被定义为代表运动。或者,可以通过如下处理,对使用光流操作生成的显示图像运动图308 执行组合,即,给等待时间补偿显示图像运动图708中的每个像素赋予一个 运动范围,使得用于该像素的这个运动范围包括被组合以生成等待时间补偿 显示图像运动图708的多个显示图像运动图308中对应像素的运动。可以将校准处理用于确定显示图像^d送到显示装置310的时刻与对应 图像被相机110捕捉到的时刻之间的等待时间。校准处理可以包括将空白显 示图像显示一段时间,然后,显示包括图案的显示图像。对包括图案的显示 图像被发送到显示装置310的时刻执行记录,并且将该时刻与在对应的捕捉 图像中检测到图案的时刻执行比较,从而确定等待时间。在某些实施例中,应用程序302将显示图像运动图308直接提供给计算 装置106。在这样的实施例中,不需要显示图^i^动检测模块306。此外,尽 管图3和图7将应用程序302示出为在计算装置106以外,但是,在某些实 施例中,应用程序302驻留在计算装置106内,并且在其上运行。如这些实 施例阐明的,这里描述的功能可以在不同模块和不同装置中执行。因此,随 着功能被从一个装置转移到另一个装置,装置之间的接口会改变。在某些实施例中,在已经生成用户运动图322之后,将用户运动图322 作为输入提供给生成显示图像304的应用程序302。应用程序302使用用户 运动图322 ;险测用户108的互动。例如,如果在与用于一个或多个连续帧的对象的已知位置对应的区域中 检测到用户108的运动,则应用程序322可以确定用户108 "触摸"显示图 象304中的对象。举例来i兌,用户108也许能够通过"触摸,,4姿钮来选才奪按 钮(例如,使按钮"开"或"关")。应该理解,用户108不必为了应用程序 302确定用户108正在"触摸,,显示图像304中的对象而与显示屏幕104执 行物理触摸。尽管用户108可以与显示屏幕104执行物理触摸,但是,当用 户108的一部分身体在显示在显示屏幕104上的对象之上或附近摇摆或停留 时,应用程序302也可以确定用户108正在"触摸"显示图像304中的对象。此外,应用程序302可以通过确定与显示图像304中的对象对应的区域 的、被分类为包含用户108的运动的部分的面积,确定用户108在该区域中 的运动量。因此,应用程序302可以区分用户108的不同类型的运动(例如, 灵活的运动与慎重的运动),并且,使用用户108的不同类型的运动,对对象 的位置和/或行为执行控制。还应该清楚,实施例可以将不在显示图像中的感 兴趣的区域附近出现的用户运动忽略。或者,当应用程序302接收到光流用户运动图322时,应用程序302可 以#4居某个区域内的运动矢量的平均幅值或最大幅值,确定该区域中的运动 量。因此,应用程序322可以使用用户108的运动的速度,控制对象的位置 和/或行为。例如,如果对象在被用户108触摸之前具有初始速度,则应用程 序302可以改变对象被用户108触摸之后的速度,使得对象的合成速度综合 反映对象的初始速度与对象受用户108影响的速度。应用程序302还可以允许用户108使用运动对显示图像304中的对象的 外观执行变换。例如,应用程序可以允许用户"摩擦"显示屏幕104,从而 显露新的对象,代替原始对象。实施例可以以各种其4也方式确定用户运动。例如,可以在确定运动之前, 从捕捉图像314中"减去,,显示图像304。相似地,其他实施例可以重新排 列执行描述过的功能的顺序。计算装置106可以是计算机或其他类型的处理设备。例如,计算装置106 可以是运行微软视窗操作系统的个人计算机(PC)。此外,或者,计算装置106可以包括具有数字信号处理(DSP)芯片和/或可编程像素着色器 (programmable pixel-shader)的视频图形卡。此外,计算装置106可以是单 独的部件,或者,计算装置106可以被并入显示装置310。将计算装置106 并入显示装置310可以使在对显示图像执行发送、显示、捕捉以及处理的过 程中的、 一般固有的延迟减小。如果应用程序302驻留在计算装置106上,则应用程序可以-使用ActiveX 对象形式的Macromedia Flash。计算装置106可以将Windows Device Context 与显示图像緩冲器联系起来,并且,计算装置106可以将Device Context提 供给Macromedia Flash ActiveX对象,使得Macromedia Flash将图^^是供 到显示图像緩冲器中。或者,应用程序302可以在计算装置106以外。当应用程序302在计算 装置106以外时,碎见频信号(例如,视频图形阵列(video graphics array, VGA))可以被发送到显示装置31Q和视频捕捉装置(例如,VGA帧接收器)。视 频捕捉装置可以生成显示图像的表示,并且将显示图像的表示存储在显示图 像緩冲器中。实施例可以包括一个或多个被配置为执行一个或多个处理的装置。例如, 装置可以包括分立的或集成的硬件、固件和软件。例如,装置可以包括一般 称为处理设备的处理器,例如,处理器包括微处理器、集成电路或者可编程 逻辑器件。装置还可以包括一个或多个计算机可读介质,计算机可读介质具有用于 执行一个或多个处理的指令。例如,计算机可读介质可以包括存储装置,如 硬盘、光盘、随机存取存储器(RAM)、只读存储器(R0M)。例如,计算机可读 介质还可以包括对指令执行编码或发送的、经过格式化的电;兹波。例如,指 令可以在硬件、固件、软件中,并且可以在电磁波中。例如,可以在操作系 统、独立的应用程序或者二者的组合中找到指令。因此,处理器可以被特性 化为,例如,既是被配置为执行处理的装置,又是包括具有用于执行处理的 指令的计算机可读介质的装置。已经对若干实施例执行了描述。然而,应该理解,可以寺丸行各种修改。 例如,为了产生其他实施例,可以对不同实施例的要素执行组合、补充、修 改或去除。因此,其他实施例在以下的权利要求的范围内。
权利要求
1. 一种方法,包括访问首先捕捉到的图像,所述首先捕捉到的图像包括(l)由计算装置所执 行的一组指令在第一时间点产生的第一显示,以及(2)与所述第一显示互动 的、并且不是所述第一显示的一部分的用户;访问其次捕捉到的图像,所述其次捕捉到的图像包括(l)由该组该计算装 置所执行的指令在第二时间点产生的第二显示,以及("与所述第二显示交互 的、并且不是所述第二显示的一部分的所述用户;对所述首先捕捉到的图像和所述其次捕捉到的图像执行比较;基于对所述首先捕捉到的图像和所述其次捕捉到的图像执行比较的结 果,确定所述用户的运动;和使所述用户的已经确定的运动与所述首先和其次捕捉到的图像中的一个 或多个的部分图像相联系。
2. 如权利要求l所述的方法,还包括,将所述用户的已经确定的运动以 及所述部分图像的表示提供给所述计算装置。
3. 如权利要求l所述的方法,还包括,基于所述已经确定的运动以及所 述部分图像,确定用于该组指令的输入。
4. 如权利要求l所述的方法,其中,对所述首先和其次捕捉到的图像执 行比较的步骤包括对所述首先捕捉到的图像和所述其次捕捉到的图像执行绝 对差操作。
5. 如权利要求l所述的方法,其中,对所述首先和其次捕捉到的图像执 行比较的步骤包括对所述首先捕捉到的图像和所述其次捕捉到的图像执行光 流操作。
6. 如权利要求l所述的方法,其中,对所述首先和其次捕捉到的图傳4丸 行比较的步骤包括产生所述结果,和所述结果是表示所述用户的运动以及与 所述第一和第二显示中的一个或多个对象相关的运动的图像。
7. 如权利要求6所述的方法,还包括对所述结果执行几何变换操作。
8. 如权利要求6所述的方法,其中,基于对所述首先捕捉到的图像和所 述其次捕捉到的图像执行比较的结果确定所述用户的运动的步骤包括,在所 述结果中,将所述用户的运动和与所述第一和第二显示中的一个或多个对象相关的运动相互隔离。
9. 如权利要求8所述的方法,还包括访问表示与所述第 一和第二显示中的一个或多个对象相关的运动的图 像,和其中,在所述结果中,使所述用户的运动和与所述第一和第二显示中 的一个或多个对象相关的运动相互隔离的步骤包括将所述结果与表示和所述 第 一和第二显示中的 一个或多个对象相关的运动的所述图像执行比较。
10. 如权利要求9所述的方法,其中,访问表示与所述第一和第二显示 中的一个或多个对象相关的运动的所述图像的步骤包括访问与所述第 一显示对应的第 一显示图像; 访问与所述第二显示对应的第二显示图像;和通过对所述第一显示图像和所述第二显示图像执行绝对差操作,生成表 示与所述第一和第二显示中的一个或多个对象相关的运动的所述图像。
11. 如权利要求9所述的方法,其中,访问表示与所述第一和第二显示 中的一个或多个对象相关的运动的所述图像的步骤包括访问与所述第 一显示对应的第 一显示图像; 访问与所述第二显示对应的第二显示图像;和通过对所述第一显示图像和所述第二显示图像执行光流操作,生成表示 与所述第一和第二显示中的一个或多个对象相关的运动的所述图像。
12. 如权利要求9所述的方法,还包括,对表示与所述第一和第二显示 中的 一 个或多个对象相关的运动的所述图像执行等待时间补偿运算。
13. —种系统,包4舌 捕捉到的图像运动检测模块,被配置为访问首先捕捉到的图像,所述首先捕捉到的图像包括(l)由计算装 置所执行的 一组指令在第 一时间点产生的第 一显示,以及(2)与所述第 一显示 互动的、并且不是所述第一显示的一部分的用户;访问其次捕捉到的图像,所述其次捕捉到的图像包括(l)由所述计 算装置执行的该组指令在第二时间点产生的第二显示,以及(2)与所述第二显 示互动的、并且不是所述第二显示的一部分的所述用户;通过比较所述首先捕捉到的图像和所述其次捕捉到的图像,生成代 表所述首先和其次捕捉到的图像之间的运动的图像;以及比较模块,被配置为基于对代表与所述第 一和第二显示中的一个或多个 对象相关的运动的图像与代表所述首先和其次捕捉到的图像之间的运动的所 述图像执行比较的结果生成代表所述用户的运动的图像。
14. 如权利要求13所述的系统,还包括显示图像运动检测模块,^C配置为访问所述第一显示图像; 访问所述第二显示图像;和通过对所述第 一显示图像与所述第二显示图像执行比较,生成代表与所 述第一和第二显示中的一个或多个对象相关的运动的所述图^f象。
15. 如权利要求14所述的系统,还包括相机,被配置为,(l)捕捉所述首先捕捉到的图像,并且将所述首先捕捉 到的图像提供给所述捕捉的运动图像检测模块,并且,(2)捕捉所述其次捕捉 到的图像,并且将所述其次捕捉到的图像提供给所述捕捉的运动图像;险测模 块;显示器,用于显示图像;以及计算装置,被配置为执行一组指令,以产生所述第一和第二显示图像。
16. 如权利要求14所述的系统,还包括等待时间补偿模块,被配置为对 代表与所述第 一和第二显示中的一个或多个对象相关的运动的所述图像执行 等待时间补偿运算。
17. 如权利要求13所述的系统,还包括几何变换模块,被配置为^于代表 所述首先和其次捕捉到的图像之间的运动的所述图像执行几何变换操作。
18. —种装置,包括计算机可读介质,该计算机可读介质包括当由处理 设备执行时导致至少以下结果的指令访问首先捕捉到的图像,所述首先捕捉到的图像包括(l)由计算装置执行 的一组指令在第一时间点产生的第一显示,以及(2)与所述第一显示互动的、 并且不是所述第一显示的一部分的用户;访问其次捕捉到的图像,所述其次捕捉到的图像包括(l)由所述计算装置 执行的该组指令在第二时间点产生的第二显示,以及(2)与所述第二显示互动 的、并且不是所述第二显示的一部分的所述用户;对所述首先捕捉到的图像和所述其次捕捉到的图像执行比较;基于对所述首先捕捉到的图像和所述其次捕捉到的图像执行比较的结 果,确定所述用户的运动;并且 使所述用户的已经确定的运动与所述首先和其次捕捉到的图像中的一个 或多个中的部分图像相互联系。
全文摘要
在一个实施例中,访问首先捕捉到的图像(见图1)。首先捕捉到的图像包括(1)在第一时间点产生的第一显示,以及(2)与第一显示互动的、并且不是第一显示的一部分的用户。访问其次捕捉到的图像。其次捕捉到的图像包括(1)在第二时间点产生的第二显示,以及(2)与第二显示互动的、并且不是第二显示的一部分的用户。对首先捕捉到的图像和其次捕捉到的图像执行比较。根据对首先捕捉到的图像和其次捕捉到的图像执行比较的结果,确定用户的运动。将用户的已经确定的运动与首先和其次捕捉到的图像中的一个或多个中的部分图像联系起来。
文档编号G09G5/00GK101147188SQ200680009030
公开日2008年3月19日 申请日期2006年1月23日 优先权日2005年1月21日
发明者埃文·希尔德雷思 申请人:格斯图尔泰克股份有限公司