用于确定便携式设备的位置的方法与流程

文档序号:11451149阅读:265来源:国知局
用于确定便携式设备的位置的方法与流程

一些版本可以涉及确定包括显示器和相机的便携式设备的位置。



背景技术:

便携式设备可以包括显示器和相机。点云可以代表设备的环境。由相机捕获的图像帧可以包括多个视觉特征。可以通过将视觉特征与点云进行比较来确定便携式设备的位置。便携式设备可以被使用在例如增强现实应用中。



技术实现要素:

一些版本可以涉及一种用于确定便携式设备的位置的方法。一些版本可以涉及一种便携式设备。一些版本可以涉及一种用于确定便携式设备的位置的计算机程序。一些版本可以涉及一种用于确定便携式设备的位置的计算机程序产品。一些版本可以涉及一种用于在便携式设备的显示器上显示信息的方法。一些版本可以涉及用户接口。

根据一个方面,提供了一种方法,包括:

-从便携式设备的相机中获取所捕获的图像帧的序列,

-通过使用便携式设备的惯性传感器来获取移动数据,

-根据移动数据确定采样帧速率,

-根据采样帧速率,从所捕获的图像帧中选择跟踪图像,

-通过将跟踪图像与点云进行比较来确定便携式设备的位置,以及

-基于所确定的位置在设备的显示器上显示信息。

根据一个方面,提供了一种便携式设备,包括:

-显示器,

-相机,被布置为捕获图像帧序列,

-惯性传感器,用于提供移动数据,

-控制单元,用于根据移动数据确定采样帧速率,用于通过将跟踪图像与点云进行比较来确定便携式设备的位置,并且用于基于所确定的位置控制在显示器上显示信息。

根据一个方面,提供了一种计算机程序,包括计算机代码,该计算机代码被配置为当在至少一个处理器上执行时使得装置或系统:

-从便携式设备的相机中获取捕获的图像帧的序列,

-从便携式设备的惯性传感器中获取移动数据,

-根据移动数据确定采样帧速率,

-根据采样帧速率,从所捕获的图像帧中选择跟踪图像,

-通过将跟踪图像与点云进行比较来确定便携式设备的位置,以及

-基于所确定的位置在设备的显示器上显示信息。

根据一个方面,提供了一种用于显示信息的装置,包括:

-用于从便携式设备的相机中获取捕获的图像帧的序列的部件,

-用于从便携式设备的惯性传感器中获取移动数据的部件,

-用于根据移动数据确定采样帧速率的部件,

-用于根据采样帧速率从所捕获的图像帧中选择跟踪图像的部件,

-用于通过将跟踪图像与点云进行比较来确定便携式设备的位置的部件,以及

-用于基于所确定的位置在设备的显示器上显示信息的部件。

可以通过捕获外部物体的图像,并且通过将该图像与代表所述外部物体的点云进行比较,来测量便携式设备的位置。然而,所述比较可以包含大量跟踪运算,这又可能消耗来自便携式设备的电池的电能。

可以使用从运动传感器获得的运动传感器数据来减少视觉跟踪计算的次数,例如,当跟踪的图像没有明显变化和/或当视觉跟踪可能失败时。减少视觉跟踪计算的次数可以降低设备的功耗。

便携式设备可以由电池供电。降低平均功耗可以允许减小电池的尺寸。降低功耗可以增加便携式设备单次充电的操作时间。降低功耗可以明显延长电池供电的增强现实设备的使用时间。降低平均功耗可以促进便携式设备的电池的无线再充电。

当图像帧与点云的比较指示缓慢的变化时,可以降低视觉跟踪计算的帧速率。在这种情况下,运动传感器数据可以被用于确定位置的细微变化。

可以降低视觉跟踪计算的帧速率,例如,当连续图像之间的差异很小时。在这种情况下,通过使用运动传感器数据可以确定便携式设备的位置的细微变化。

可以仅通过使用不会由于相机的移动而太模糊的那些特征来执行特征匹配。

视觉质量评估方法可以可选地用于监控视觉跟踪质量。只要视觉跟踪质量保持在某一阈值以上,则可以降低图像分析的帧速率。如果视觉跟踪质量太低,则可以增加图像分析的帧速率。

附图说明

在以下示例中,将参考附图更详细地描述若干变型,其中:

图1a以示例的方式示出了环境中的便携式设备,

图1b以示例的方式示出了环境中的头戴式设备,

图2以示例的方式示出了便携式设备的功能单元,

图3a以示例的方式示出了从由便携式设备的相机捕获的视频序列的图像帧中对跟踪图像的采样,

图3b以示例的方式示出了从由便携式设备的相机捕获的图像帧中选择跟踪图像,

图4a以示例的方式示出了通过将跟踪图像的视觉特征与点云的点进行比较来确定便携式设备的位置,

图4b以示例的方式示出了选择点到点云的子集,

图5a以示例的方式示出了用于选择跟踪图像和用于确定便携式设备的位置的方法步骤,

图5b以示例的方式示出了用于选择跟踪图像、用于形成点云的子集和用于确定便携式设备的位置的方法步骤,

图5c以示例的方式示出了用于选择跟踪图像、用于形成点云的子集和用于推断便携式设备的位置的方法步骤,

图6以示例的方式示出了用于监控跟踪的鲁棒性的方法步骤,

图7a以示例的方式示出了通信系统,以及

图7b以示例的方式示出了便携式设备。

具体实施方式

参照图1a,在环境env1中可以移动和使用便携式设备500。环境env1可以包括一个或多个实际物体obj1、obj2、obj3、obj4。该物体可以包括特征f1、f2。设备500可以包括相机cam1,相机cam1被布置为捕获视觉特征f1、f2的图像。设备500可以包括用于捕获外部物体的图像的相机cam1。设备500可以被布置为通过将视觉特征f1、f2与点云pc进行比较来确定设备500的位置pos。点云pc可以代表环境的物体obj1、obj2,并且点云pc可以被存储在例如设备500的存储器中。所确定的设备500的位置pos随后可以用于例如控制设备500的操作。

点云pck可以包括多个点p。该点可以代表一个或多个物体obj1、obj2。设备500可以包括用于存储点云pck的存储器。设备500可以被配置为通过将跟踪图像imgk与点云pck进行比较来确定设备的瞬时位置posk。

设备500可以包括用于显示所捕获的图像和信息inf1、inf2的显示器disp1。该显示器disp1可以为例如触摸屏。

设备500可以被布置为在显示器disp1上显示信息inf1、inf2,使得基于所确定的设备500的位置pos从数据库中选择信息inf1、inf2。设备500可以被布置为显示信息inf1、inf2,使得基于所确定的设备500的位置来选择在显示器disp1上所显示的信息inf1、inf2的位置。所确定的位置pos可以被用作在设备500上运行的应用的用户输入。

所确定的位置pos可以用作用户输入,以控制例如在设备500上运行的增强现实应用。例如,设备可以确定设备靠近与信息inf1(例如“abc”)相关联的商店的门obj1。设备可以基于所确定的设备的位置从数据库中搜索相关信息。可以基于所确定的位置pos从数据库中检索信息inf1。设备500可以将门obj1的图像sub1与信息inf1一起显示,以向设备500的用户提供附加信息。例如,设备可以确定设备靠近地铁站的门obj3。设备500可以将门obj3的图像sub3与信息inf2(例如“m”)一起显示,以向设备500的用户提供附加信息。显示器disp1可以被配置为显示图像dimg1。所显示的图像dimg1可以包括在设备500的视野中的物体的图像。所显示的图像dimg1可以包括所显示的信息inf1、inf2。物体obj1、obj3的图像sub1、sub3可以被称为例如子图像。

物体obj1、obj2、obj3、obj4和设备500可以具有在由正交方向sx、sy和sz以及固定参考点ref1限定的实际空间中的位置。设备500的位置可以指设备500的预定点c1的位置。点c1可以例如在相机cam1的镜头lns1的中心处。设备500可以在三个空间维度和三个角维度内移动。在时间tk设备500的位置posk可以通过指定设备500的空间位置以及通过定义设备500的角位置来完全定义。空间位置可以通过三个空间坐标(xk,yk,zk)来指定,并且角位置可以由三个角坐标(αk,βk,γk)来指定。设备500可以具有由正交方向su、sv、sw限定的移动坐标系。移动坐标系固定在设备500上并与设备500一起移动。

参见图1b,设备500可以是头戴式设备500。头戴式设备500可以包括用于向用户u1显示虚拟图像vob1、vob2的虚拟显示器disp1。用户u1可以佩戴设备500。相机cam1可以被布置成捕获位于头戴式设备500的用户u1的视野中的物体obj1、obj2的图像imgk。

虚拟显示器disp1可以包括第一光学引擎10a。虚拟显示器disp1可以可选地包括出射光瞳扩展器(epe)20a,用于扩展光学引擎10a的出射光瞳。出射光瞳扩展器也可以称为例如光束扩展器。虚拟显示器disp1可以生成一个或多个光束b1,其可以撞击用户u1的眼睛e1,以便在用户u1的眼睛e1的视网膜上形成光学图像。光束b1可以在视网膜上形成光学图像。虚拟显示器disp1可以被布置为向用户u1显示一个或多个虚拟图像vob1、vob2。设备500可以被布置为基于所确定的设备500的位置在显示器disp1上显示信息inf1、inf2。虚拟图像vob1可以表示信息inf1,并且虚拟图像vob1可以表示信息inf2。设备500可以显示虚拟图像vob1,使得当由设备500的用户u1查看时,虚拟图像vob1的位置与实际物体obj1的位置相匹配,以向设备500的用户提供附加信息。设备500可以显示虚拟图像vob1,使得当由设备500的用户u1察看时,虚拟图像vob1的位置与实际物体obj1的位置相关。

对于增强现实应用,出射光瞳扩展器20a可以至少部分是透明的,使得用户u1可以通过出射光瞳扩展器20a来察看环境env1的实际物体。然而,虚拟显示器disp1还可以向用户u1显示环境env1的真实物体的图像。在这种情况下,出射光瞳扩展器20a不需要允许通过出射光瞳扩展器20a直接察看实际物体。

设备500可以可选地包括用于向用户u1的另一只眼睛e2显示虚拟图像的第二光学引擎10b和/或第二出射光瞳扩展器20b。虚拟显示器disp1可以生成一个或多个光束b2,其可以撞击用户u1的第二只眼睛e2,以便在用户u1的眼睛e2的视网膜上形成光学图像。光束b2可以在视网膜上形成光学图像。光学引擎10a、10b可以被布置为针对双眼e1、e2生成相同的图像。光学引擎10a可以被布置为向眼睛e1生成第一图像,并且光学引擎10b可以被布置为向眼睛e2生成不同的第二图像,以便显示立体图像。

设备500可以可选地包括例如一个或多个头戴式耳机91a、91b以便于佩戴设备500。设备500也可以附接到例如头饰或头盔。

参见图2,设备500可以包括用于处理数据和/或用于控制设备500的操作的控制单元cnt1。控制单元cnt1可以包括一个或多个数据处理器。

设备500可以包括用于捕获视频的相机cam1。相机cam1可以捕获图像序列seq1,其包括外部物体obj1、obj2的多个连续图像帧fj、fj+、fj+2...。相机cam1可以包括成像光学器件lns1和图像传感器det1。图像传感器det1可以包括二维检测器像素阵列。图像传感器det1可以是例如cmos器件(互补金属氧化物半导体)或ccd器件(电荷耦合器件)。

设备500可以包括传感器sen1、传感器sen2和/或传感器sen3,其可以被布置为提供移动数据mdat。移动数据mdat也可以被称为运动传感器数据。

设备500可以包括惯性传感器sen1,其包括陀螺仪。陀螺仪可以是例如激光陀螺仪或振动结构陀螺仪。惯性传感器sen1可以例如通过使用微机电系统(mems)来实现。惯性传感器sen1可以被布置为提供传感器信号smv,其指示角速度ωu、ωv和/或ωw。从惯性传感器sen1获得的传感器信号smv可以包括指示角速度ωu、ωv和/或ωw的移动数据mdat。ωu表示围绕轴su的角速度。ωv表示围绕轴线sv的角速度。ωw表示围绕轴线sw的角速度。陀螺仪可以是三轴陀螺仪。

设备500可以包括惯性传感器sen2,其包括加速度传感器。惯性传感器sen2可以例如通过使用微机电系统(mems)来实现。惯性传感器sen2可以被布置为提供传感器信号smv,其指示加速度au、av和/或aw。从惯性传感器sen2获得的传感器信号smv可以包括指示加速度au、av和/或aw的移动数据mdat。au表示沿su方向的加速度。av表示沿sv方向的加速度。aw表示沿sw方向的加速度。惯性传感器sen2可以是三轴加速度传感器。加速度传感器sen2还可以提供用于确定重力方向的信息。

设备500可以包括磁罗盘sen3。磁罗盘sen3可以被布置为提供传感器信号smv,其指示设备500的取向角α、β和/或γ。从磁罗盘sen3获得的传感器信号smv可以包括指示设备500的取向角α、β和/或γ的移动数据mdat。设备500相对于方向sx、sy和sz的取向可以通过测量设备500相对于地球的磁场和相对于重力的方向的取向来测量。设备500的角速度可以根据设备500的取向角α、β和/或γ的变化速率来确定。设备500可以被配置为根据从传感器sen3获得的传感器信号smv来确定一个或多个角速度值。设备500可以被配置为根据从传感器sen3获得的移动数据mdat来确定一个或多个角速度值。

设备500可以包括用户接口uif1。用户接口uif1可以包括显示器disp1。显示器disp1可以是例如虚拟显示器或触摸屏。用户接口uif1可以包括用于接收来自用户u1的用户输入的输入单元key1。输入单元key1可以包括例如触摸屏、一个或多个键、鼠标、视线跟踪单元和/或语音识别单元(和麦克风)。也可以根据设备500的位置pos来确定用户输入。例如,以某种方式摇动设备500可以表示预定的用户输入。

设备500可以包括用于从第二设备接收数据和用于向第二设备发送数据的通信单元rxtx1。第二设备可以是例如互联网服务器serv1。com1表示通信信号。

设备500可以包括用于向设备500的其他单元提供电能的电池bat1。电池可以是例如可充电锂离子电池或可充电镍氢电池。特别地,电池bat1可以向控制单元cnt1提供能量。

设备500可以包括用于存储用于控制设备500的操作的计算机程序prog1的存储器mem1。设备500可以包括用于存储点云pck的存储器mem2。设备500可以包括用于存储例如所确定的设备500的位置的存储器mem3。

参见图3a,相机cam1可以捕获包括多个连续图像帧fj-2,...fj,fj+,fj+2,...,fj+11的图像序列seq1。当从设备500的瞬时位置察看时,每个图像帧可以表示环境env1的瞬时视图。图像帧fj-2,...fj,fj+,fj+2,...,fj+11可以以帧速率fseq1来捕获。

视觉跟踪通常以相机cam1的帧速率fseq1运行。帧速率fseq1可以是例如在24hz至120hz的范围内。如果相机cam1没有实际移动或旋转,则连续图像之间的差异可能很小,并且大部分跟踪计算可能变得多余。如果传感器信号smv指示有很小的旋转或者没有旋转,这也指示连续图像帧之间的差异可能很小。在这种情况下,与相机cam1的帧速率fseq1相比,可以减小用于视觉跟踪计算的帧速率fa。

可以通过将跟踪图像img的视觉特征f1、f2与点云pc进行比较来确定设备500的位置。可以根据帧采样速率fa从连续图像帧fj-2,...fj,fj+,fj+2,...,fj+11中选择跟踪图像imgk-1、imgk、imgk+1、imgk+2、imgk+3、imgk+4。帧采样速率fa可以是例如帧速率fseq1的1/2、1/3、1/4、1/6、1/6、1/7或1/8倍。可以以第一帧速率fseq1捕获序列seq1,并且采样帧速率fa可以等于第一帧速率除以整数ndiv。可以确定采样帧速率fa,使得采样帧速率fa等于帧速率fseq1除以整数ndiv。整数ndiv可以在第一时间段期间具有第一值,并且整数ndiv可以在第二时间段期间具有不同的第二值。例如,在从tk-1到tk+1的第一时间段期间,整数ndiv可以等于3,并且在从tk+1到tk+4的第二时间段期间,整数ndiv可以等于2。

可以通过使用惯性传感器sen1和/或sen2来检测便携式设备500的移动。惯性传感器可以包括例如三轴加速计和/或三轴陀螺仪。陀螺仪可以是例如激光陀螺仪或振动结构陀螺仪。惯性传感器sen1可以例如通过使用微机电系统(mems)来实现。惯性传感器sen1可以被布置为提供指示便携式设备的移动的传感器信号smv。传感器信号smv可以包括指定便携式设备500的移动的移动数据mdat。移动数据mdat可以指定在一个方向(例如在方向su)上的设备500的加速度ak,和/或围绕轴(例如围绕方向su)的设备500的角速度ωk。

传感器信号smv还可以包括从罗盘获得的移动数据mdat。传感器信号可以包括从磁罗盘获得的移动数据mdat。

用于视觉跟踪的帧速率fa可以是例如通过分析由相机cam1捕获的每个第二图像帧的帧速率fseq1的1/2。用于视觉跟踪的帧速率fa可以是例如通过分析由相机cam1捕获的每个第三图像帧的帧速率fseq1的1/3。用于视觉跟踪的帧速率fa可以是例如通过分析由相机cam1捕获的每个第四图像帧的帧速率fseq1的1/4。用于视觉跟踪的帧速率fa可以是例如帧速率fseq1的1/2、1/3、1/4、1/5、1/6、1/7、1/8、..、1/15、1/16、1/17...1/31、1/32、1/33...。可以根据传感器信号来确定便携式设备500的位置。便携式设备500的位置可以通过根据图像帧确定先前位置以及根据传感器信号确定位置的变化来进行推断。当传感器信号指示便携式设备500开始移动或者转动更快时,可以增加用于视觉跟踪的帧速率fa。可以增加帧速率fa,使得用于视觉跟踪的帧速率fa等于相机cam1的帧速率fseq1,即可以分析由相机cam1捕获的每个图像帧。在一个实施例中,相机cam1的帧速率fseq1可以从标称帧速率f0减小。

跟踪图像imgk-1可以是在时间tk-1捕获的图像帧f。跟踪图像imgk可以是在时间tk捕获的图像帧f。跟踪图像imgk+1可以是在时间tk+1捕获的图像帧f。

点云可以被重建或更新。可以通过更新先前的点云pck-1来确定点云pck。可以通过更新点云pck来确定下一点云pck+1。

点云pck可以已经通过分析多个先前捕获的图像imgk-2、imgk-1而形成。点云pck可以是重新构造的点云。可以基于对所捕获的图像imgk的分析来更新点云pck。可以根据先前的点云pck并且基于对一个或多个先前图像imgk-2、imgk-1、imgk的分析来确定更新的点云pck+1。

点云pck或pck+1也可以例如从数据库或者从第二设备的存储器中获得。点云pck或pck+1可以被传送到设备500,例如经由互联网或者经由移动通信系统。

可以将在时间tk-1,tk,tk+1,tk+2,tk+3,tk+4…捕获的图像帧用作跟踪图像imgk,imgk+1,imgk+2,imgk+3,imgk+4,…。该方法可以包括确定对应于时间tk-1,tk,tk+1,tk+2,tk+3,tk+4,...的多个连续点云pck-1,pck+1,pck+2,pck+3,pck+4。当采样帧速率fa低于帧速率fseq1时,一个或多个所捕获的图像帧不被用作跟踪图像。例如,所捕获的图像帧fj+1和fj+4可以用作跟踪图像imgk,imgk+1,使得图像帧fj+2和fj+3不被用作跟踪图像。图像帧fj+3可以在时间tj+3被捕获。在捕获图像帧fj+1之后并且在捕获图像帧fj+4之前可以捕获图像帧fj+3。

跟踪图像与点云的比较可能会消耗电力。帧采样速率fa可以低于帧速率fseq1,以便节省能量。可以基于从惯性传感器sen1获得的传感器信号smv来调整帧采样速率fa。可以基于从惯性传感器sen2获得的传感器信号smv来调整帧采样速率fa。可以基于从磁罗盘sen3获得的传感器信号smv来调整帧采样速率fa。

参见图3b,当从设备500的瞬时位置察看时,序列seq1的图像帧可以表示环境env1的瞬时视图。可以根据帧采样速率fa从图像帧fj-1、fj、fj+1、fj+2中选择跟踪图像imgk。跟踪图像的数量可以低于序列seq1的图像帧的数量。此外,最近的跟踪图像可以是如下图像帧:其不是由相机cam1捕获的最近的图像帧。

参见图4a,跟踪图像imgk可以包括多个特征f1,f2,…。特征f1,f2,…可以被称为例如视觉特征,并且图像imgk可以被称为例如跟踪图像。图像imgk的特征f1,f2,…可以是环境env1的实际物体obj1、obj2的特征f1、f2的子图像。

点云pck可以包括三维虚拟空间中的多个点。点云的每个点可以表示出现在图像帧中的候选特征。

虚拟空间可以由正交方向sx',sy',sz'和参考点ref2定义。点云pck的每个点p的空间位置可以由空间坐标(x',y',z')定义。设备500可以包括用于存储点云pck的点的位置的存储器。

设备500在虚拟空间中可以具有虚拟位置pos2k。可以通过指定设备500的虚拟空间位置以及通过定义设备500的虚拟角位置来定义设备500的虚拟位置pos2k。空间位置可以由三个空间坐标(x',y',z')指定,并且角位置可以由三个角坐标(α',β',γ')指定。

设备500可以被配置为通过将跟踪图像imgk的视觉特征f1,f2,...与点云pck的点p进行比较来确定虚拟位置pos2k。设备500可以被配置为确定设备500在虚拟空间中的虚拟位置pos2k,使得跟踪图像imgk的视觉特征f1,f2,…与点云pck的点p匹配到足够程度。位置pos2k可以指定设备相对于点云pck的点p的位置,即在虚拟空间中的位置。随后可以通过坐标变换根据虚拟位置pos2k确定设备500在环境env1中的位置posk。也可以选择虚拟空间的坐标系,使得设备500的位置posk等于虚拟位置pos2k。在这种情况下,不需要坐标变换。

设备500可以被配置为根据点云pck确定一个或多个候选图像。当从虚拟位置pos2k察看点p时,候选图像意味着点云pck的点p的图像。点云pck的每个点p可以对应于候选图像的一个点。设备500可以被配置为计算候选图像的多个点,并且检查候选的点是否与跟踪图像imgk的点匹配。

换句话说,设备500可以被配置为进行跟踪运算。当从不同的方向察看时,点云pck通常看起来不同。设备500可以被配置为确定位置pos2k,使得候选图像的点与跟踪图像的特征f1、f2相匹配。

设备的位置可以通过一种方法确定,该方法包括:

-从便携式设备500的相机cam1获取所捕获的图像帧fj、fj+1、fj+2的序列seq,

-通过使用惯性传感器sen1、通过使用惯性传感器sen2和/或通过使用便携式设备500的罗盘sen3来获取移动数据mdat,

-根据移动数据mdat确定采样帧速率fa,

-根据采样帧速率fa从所捕获的图像帧fj、fj+1、fj+2中选择跟踪图像imgk,以及

-通过将跟踪图像imgk与点云pck进行比较,来确定便携式设备500的位置posk、posk2。

基于所确定的位置posk、pos2k,信息inf1、inf2随后可以被显示在设备500的显示器disp1上。显示器disp1可以为例如虚拟显示器或者触摸屏。

如果将跟踪图像imgk的每个视觉特征与点云pck的每个点进行比较,则跟踪图像imgk的比较可能需要大量的数据处理。

为了便于比较,可以形成点云pck的子集sck。子集sck的点的数量可以远远小于点云pck的点的数量。

例如,视觉特征f1可以表示靠近设备的物体obj1的点,以及视觉特征f2可以表示远离设备500的物体obj3的点。如果设备500快速移动,则与视觉特征f2相比,视觉特征f1在跟踪图像imgk中更可能被模糊。在设备500平移运动的情况下,与远距离的物体obj3的视觉特征f2相比,视觉特征f1在跟踪图像imgk中更可能被模糊。设备500可以通过省略与模糊特征相关的比较操作来节省电力。

设备500可以被配置为通过选择可能对应于跟踪图像imgk中的尖锐特征的点p来形成点云pck的子集sck。设备500可以被配置为通过丢弃可能对应于跟踪图像imgk中的模糊特征的点p来形成点云pck的子集sck。设备500可以被配置为确定针对点云pck的每个点的模糊值bv。点的模糊值bv可以指示对应于所述点的特征的估计的模糊程度。

当相机转动或移动太快时,出现在图像帧中的特征可能会被模糊。在这种情况下,视觉跟踪可能会失败。有时根本无法识别视觉特征。然而,可以基于传感器信号来计算对应于点云的点的特征的模糊程度。模糊程度可以例如由模糊值指定。如果特征的模糊值超过阈值,则这可能表示该特征太模糊以致无法识别。在跟踪计算中可以忽略与模糊特征相关联的点。特征匹配可以仅对对应于相对尖锐特征的那些点进行。传感器信号可用于确定便携式设备在快速移动期间的位置。阈值可以取决于例如相机的分辨率和/或相机的曝光时间。

设备500可以以速度vk移动和/或设备可以以角速度ωk旋转。如果速度vk和/或如果角速度ωk太高,则可能会使跟踪图像imgk的一个或多个视觉特征f1、f2模糊。例如,穿戴设备500的用户u1可能跑或转动他的头部,使得跟踪图像imgk包括模糊的视觉特征f1、f2。如果相机cam1快速加速,则也可能使跟踪图像imgk的一个或多个视觉特征f1、f2模糊。物体的特征的模糊程度可以取决于相机cam1和物体obj1、obj2之间的距离。模糊程度也可能取决于相机cam1的分辨率和/或照明条件。

设备500可以包括用于提供一个或多个传感器信号smv的惯性传感器sen1、sen2。设备500可以包括用于提供传感器信号smv的一个或多个惯性传感器sen1、sen2。惯性传感器sen1、sen2可以是例如加速度传感器和陀螺仪。传感器信号smv可以指示设备500的加速度和/或角速度ωk。速度vk可以通过对设备500的加速度进行积分来确定。

参见图4b,设备500可以具有先前的虚拟位置pos2k-1。点云pck的每个点p可以与所述点p和先前的虚拟位置pos2k-1之间的距离l'相关联。可以基于所述点p的空间坐标(x',y',z')来计算设备500的点p和先前的虚拟位置pos2k-1之间的距离l'。该点p的模糊值bv可以通过使用角速度ωk、速度vk和/或加速度ak以及通过使用距离l'来计算。如果所述点的模糊值bv超过限定值bvblur,则点p可以从子集sck被丢弃。

设备500可以被配置为通过将跟踪图像imgk的视觉特征f1,f2,…与子集sck的点p进行比较来确定设备500的虚拟位置pos2k。设备500可以被配置为确定设备500在虚拟空间中的虚拟位置pos2k,使得跟踪图像imgk的视觉特征f1,f2,…与子集sck的点p匹配到足够的程度。

图5a示出了用于选择跟踪图像以及用于通过将跟踪图像的视觉特征与点云进行比较来确定设备500的位置的方法步骤。

在步骤810中,可以从设备500的相机cam1获取所捕获的图像帧fj、fj+1、fj+2的序列。传感器信号smv可以从传感器sen1、sen2和/或sen3获得。移动数据mdat可以从传感器sen1、sen2和/或sen3获得。

在步骤815中,可以基于传感器信号smv来确定帧采样速率fa。可以基于移动数据mdat来确定帧采样速率fa。例如,帧采样速率fa可以根据设备的加速度和角速度来确定。例如,帧采样速率fa可以被确定为低于序列seq1的帧速率,例如当设备500的加速度低于预定限制alim1并且设备的角速度低于预定限制ωlim1时。例如,当设备500的加速度高于限制alim2和/或设备的角速度高于预定限制ωlim2时,可以将帧采样速率fa确定为等于序列seq1的帧速率fseq1。

可以确定采样帧速率fa,使得采样帧速率fa等于帧速率fseq1除以整数ndiv。当设备的角速度ω低于第一预定限制ωlim1并且设备的加速度低于第二预定限制alim1时,整数ndiv可以是例如大于或等于2。

在步骤820中,可以根据帧采样速率fa从序列seq1的图像帧中采样一个或多个跟踪图像。

在步骤850中,可以通过将跟踪图像imgk的视觉特征f1、f2与点云pck的点进行比较来确定设备500的位置posk。

在步骤890中,可以基于所确定的位置posk来控制设备500的操作。例如,可以基于位置posk从数据库检索信息。例如,可以在运行增强现实应用时,基于位置posk从数据库检索信息。例如,可以基于位置posk来选择所显示的信息inf1、inf2。例如,可以基于位置posk来确定信息在显示器上的位置。例如,所确定的位置posk可以用作用户输入,例如,用于从两个或多个选项进行选择。

参见图5b,可以通过使用点云的子集sck来减少比较操作的数量。在步骤825中,可以通过使用设备500的移动数据mdat和先前的(虚拟)位置pos2k-1来形成子集sck。点云pck的点p的模糊值bv可以通过使用角速度ωk、速度vk和/或加速度ak以及通过使用距离l'来计算。如果所述点的模糊值bv超过限定值bvblur,则点p可以从子集sck被丢弃。步骤825可以例如在步骤820之后、在步骤820之前、或在步骤815之前(但在步骤810之后)执行。

该方法可以包括:

-基于点云pck的点p的位置以及基于移动数据mdat来针对所述点p确定模糊值bv,

-如果模糊值bv超过预定限制bvblur,则从点云pck的子集sck中丢弃所述点p,以及

-通过将跟踪图像imgk与子集sck进行比较来确定便携式设备500的位置posk。

较高的模糊值bv可以指示较高的模糊程度。在这种情况下,如果所述点的模糊值bv高于预定限制bvblur,则点p可以被点云pck的子集sck丢弃。可选地,较低的模糊值bv可以指示较高的模糊程度。在这种情况下,如果所述点的模糊值bv低于预定限制bvblur,则可以从点云pck的子集sck丢弃点p。

该方法可以包括:

-基于点云pck的点p的位置以及基于移动数据mdat来针对所述点p确定模糊值bv,

-将所述模糊值bv与预定限制bvblur进行比较,

-基于该比较,将所述点选择到点云pck的子集sck或者从点云pck的子集sck丢弃所述点,以及

-通过将跟踪图像imgk与子集sck进行比较来确定便携式设备500的位置posk。

参见图5c,有时可以通过使用移动数据mdat来校正所确定的位置。δta可以表示当前时间t和捕获跟踪图像imgk的时间tk之间的时间延迟(t-tk)。如果时间延迟短(例如比限制lim1更短),则跟踪图像imgk可以表示当前的情况。如果时间延迟长,则通过分析跟踪图像imgk确定的位置posk可能不同于当前位置。

可以在步骤860中检查时间延迟δta。如果时间延迟δta小于预定值,则在步骤850中确定的中间位置posk可以用作设备500在时间t的位置pos(t)(步骤880)。如果时间延迟δta不小于预定值,则可以通过使用移动数据mdat来校正位置。在步骤865中,可以通过使用传感器信号smv并且基于时间延迟δta来计算设备的横向位移dpos和/或设备的取向的角度变化。可以通过使用从传感器sen1、sen2和/或sen3获得的移动数据mdat并且基于时间延迟δta来计算设备的横向位移dpos和/或设备的取向的角度变化。

该方法可以包括:

-通过使用移动数据mdat来确定位置dpos的变化,以及

-通过使用所述变化dpos和先前确定的位置posk来确定校正的位置pos(t)。

在步骤870中,随后可以通过将变化dpos添加到中间位置posk来确定设备500在时间t的瞬时位置pos(t)。

在步骤890中,可以基于所确定的瞬时位置pos(t)来控制设备500的操作。

参见图6,设备500可以被布置为自动适应更具挑战性的跟踪条件。

在步骤852中,可以对匹配点的数量nmp进行计数。在比较操作中可以找到点云pck的匹配点。因此,对匹配点的数量nmp进行计数可能需要非常低的或可忽略的数据处理能力。

在步骤855中可以检查数量nmp。如果匹配点的数量nmp低于预定值nmp,lim1,则在步骤856中可以暂时增大帧采样速率fa。在步骤856中还可以重置计时器值tim。

该方法可以包括:

-确定指示出现在图像帧中的匹配特征的数量的指示值nmp,以及

-当匹配特征的数量nmp小于预定限制nmp,lim1时,增大帧采样速率fa。

如果匹配点的数量nmp高于预定值,并且如果计时器值tim低于预定值interval1,则可以将帧采样速率fa保持在步骤815中确定的值。

计时器值tim可以随时间增大或者例如在步骤852中增大。可以在步骤857中检查计时器值tim。如果计时器值tim高于预定值interval1,则在步骤858中可以暂时减小帧采样速率fa。

如图5a、图5b或图5c所示,在图6的步骤850中确定的位置可以在步骤890中被用于控制设备500的操作。

可以监控视觉跟踪的鲁棒性。特别地,可以在设备500基本静止的情况下监控鲁棒性。当使用低帧速率进行分析时,鲁棒性可能会受到影响。例如由于可能引起图像噪音的低照明强度,鲁棒性可能会受到影响。如果视觉跟踪呈现出在传感器信号未指示明显运动时提供少量的匹配特征,则可以暂时增大用于跟踪的帧速率,直到恢复鲁棒跟踪。之后,可以减小用于跟踪的帧速率,以便测试是否可以以较低帧速率维持鲁棒跟踪。以这种方式,设备可以自动地适应于具有挑战性和/或变化的跟踪条件。视觉质量评估方法可以被用于监控视觉跟踪的质量。评估方法可以包括例如对匹配特征的数量进行计数。可以在不增加计算成本和/或功率消耗的情况下实现评估方法。

视频序列seq1可以通过使用数据压缩编解码器来存储和/或传送,例如通过使用mpeg-4part2编解码器、h.264/mpeg-4avc编解码器、h.265编解码器、window媒体视频(wmv)、divxpro编解码器或未来编解码器(例如,高效率视频编码、hevc、h.265)。视频数据vdata1、vdata2可以被编码和/或解码,例如通过使用mpeg-4part2编解码器,h.264/mpeg-4avc编解码器,h.265编解码器,windows媒体视频(wmv),divxpro编解码器,或未来编解码器(例如,高效率视频编码、hevc、h.265)。视频数据也可以被编码和/或解码,例如通过使用无损编解码器。

图7a以示例的方式示出了通信系统1000,其可以包括便携式设备500。系统1000可以包括多个设备500、600,这些设备可以被布置为彼此通信和/或与服务器1240进行通信。设备500、600可以是便携式的。一个或多个设备500可以包括用于接收用户输入的用户接口uif1。一个或多个设备500和/或服务器1240可以包括被配置为生成点云pck的一个或多个数据处理器。系统1000可以包括终端用户设备,例如一个或多个便携式设备500、600,移动电话或智能电话600,互联网接入设备(互联网平板电脑),个人计算机1260,显示器或图像投影仪1261(例如电视),和/或视频播放器1262。设备500或便携式相机中的一个或多个可以包括用于捕获图像数据的图像传感器det1。服务器、移动电话、智能电话、互联网接入设备或个人计算机可以被布置为分发图像数据、信息inf1、inf2和/或点云数据pck。可以在具有一个或多个服务器1240、1241、1242和一个或多个用户设备的网络服务框架中实现分发和/或存储数据。如图7a的示例所示,系统1000的不同设备可以经由诸如互联网或局域网(lan)的固定网络1210来连接。这些设备可以经由移动通信网络1220来连接,诸如全球移动通信系统(gsm)网络、第三代(3g)网络、第3.5代(3.5g)网络、第四代(4g)网络、无线局域网(wlan)、或其他当代和未来的网络。不同的网络可以借助于通信接口1280彼此连接。网络(1210和/或1220)可以包括诸如路由器和交换机的网络元件以处理数据(未示出)。网络可以包括诸如一个或多个基站1230和1231的通信接口,以向不同的设备提供对网络的访问。基站1230、1231本身可以经由固定连接1276和/或经由无线连接1277连接到移动通信网络1220。可以有多个服务器连接到网络。例如,用于提供诸如社交媒体服务的网络服务的服务器1240可以连接到网络1210。服务器1240可以针对在设备500上运行的增强现实应用生成和/或分发附加信息inf1、inf2。用于提供网络服务的第二服务器1241可以连接到网络1210。用于提供网络服务的服务器1242可以连接到移动通信网络1220。上述设备中的一些,例如服务器1240、1241、1242可以被布置为使得它们与驻留在网络1210中的通信元件一起组成互联网。设备500、600、1260、1261、1262也可以由多个部分组成。一个或多个设备可以经由无线连接1273连接到网络1210、1220。设备500与系统1000的第二设备之间的通信com1可以是固定和/或无线的。可以经由诸如固定连接1270、1271、1272和1280的通信连接将一个或多个设备连接到网络1210、1220。一个或多个设备可以经由无线连接1273连接到互联网。一个或多个设备可以经由固定连接1275连接到移动网络1220。设备500、600可以经由无线连接com1、1279和/或1282连接到移动网络1220。连接1271至1282可以借助于在通信连接的相应端部处的通信接口来实现。用户设备500、600或1260也可以像各种网络设备1240、1241和1242那样用作web服务服务器。该web服务服务器的功能可以分布在多个设备上。应用元素和库可以被实现为驻留在一个设备上的软件组件。可选地,软件组件可以分布在多个设备上。软件组件可以分布在多个设备上以形成云。

图7b示出了可以用作通信系统1000的一部分的便携式设备500。该设备可以为例如头戴式设备、虚拟显示器、移动电话、智能电话、通信器、便携式计算机、相机或个人数字助理(pda)。设备500可以包括控制单元cnt1,该控制单元用于确定设备500的位置、用于控制设备500的操作和/或用于根据所确定的设备500的位置显示信息inf1、inf2。该设备可以包括用于接收和/或发送数据的通信单元rxtx1。设备500可以通过使用通信单元rxtx1来接收信息inf1、inf2。设备500可以通过使用通信单元rxtx1将所确定的位置传送到通信系统1000的一个或多个其他设备。设备500可以包括用于捕获环境env1的外部物体的图像帧的一个或多个相机单元cam1。设备500可以包括用于提供移动数据mdat的传感器sen1。传感器sen1可以是非成像传感器。sen1可以是惯性传感器。该设备可以包括用于从用户u1接收命令的用户接口uif1。用户接口uif1可以包括显示器disp1。显示器disp1可以被布置为向用户u1显示虚拟图像。用户接口uif1可以包括例如触摸屏、触摸板、一个或多个键、鼠标、手势输入设备和/或语音识别单元。设备500可以包括用于存储计算机程序代码的存储器mem1。代码可以使得设备500例如确定设备500的位置、控制设备500的操作和/或根据所确定的设备500的位置显示信息inf1、inf2。设备500可以包括用于存储其他数据(例如,点云数据(图2))的存储器。便携式设备500可以包括用于向控制单元cnt1提供电能的电池bat1。

对于本领域技术人员来说,将清楚的是,根据本发明的设备和方法的修改和变化是可感知的。附图是示意性的。上面参考附图所描述的特定实施例仅是说明性的,并不旨在限制本发明的范围,本发明的范围由所附权利要求限定。

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