相机参数的矫正方法、装置及虚拟现实设备与流程

文档序号:14943022发布日期:2018-07-13 21:33

本发明涉及相机定位技术领域,更具体地,本发明涉及一种相机参数的矫正方法、装置及虚拟现实设备。



背景技术:

随着近年来虚拟现实(Virtual Reality,简称VR)行业的蓬勃发展,对于空间定位的需求日益增加。由于使用相机实现空间定位有着成本低廉、搭建方便等优势,所以其被广泛应用于虚拟现实行业的空间定位产品。

使用相机进行空间定位往往会受到一些光学器件指标的限制。如果产品想获得更为广阔的使用场景,就需要选用视角更大的镜头;然而广角的镜头会存在光学畸变,导致空间坐标运算的不准确。所以在镜头选取时,往往会在畸变程度和视角两者之间做折中,视角不会选择太大,导致用户的活动范围比较窄,在用户站立体验时,垂直活动范围的限制尤为明显。如果将相机置于例如是2m的高度并且使其姿态向下,形成一种用户的使用空间被相机“俯视”的效果,这样就可以保证视角一定的情况下,用户的体验不会受到太大的限制。

即使不让相机做“俯视”姿态,由于用户使用场景的复杂性,也无法保证相机完全竖直的摆放,即相机的镜头无法平行于重力方向。

如果相机的镜头不平行于重力方向,会使得通过相机定位的测试物的坐标不准确,从而导致虚拟现实设备的游戏场景中地面倾斜的现象,影响用户体验。



技术实现要素:

本发明的一个目的是提供一种至少能够解决上述问题之一的新的技术方案。

根据本发明的第一方面,提供了相机参数的矫正方法,包括:

获取相机的重力传感器采集的当前重力向量;

计算所述当前重力向量与平行于所述重力传感器的重力方向的单位向量之间的旋转矩阵;

根据所述相机采集的初始图像中发光器件的初始坐标和所述旋转矩阵,确定所述相机与地面之间的垂直距离,其中,所述初始图像为所述发光器件设置在所述地面上时所述相机采集的图像;

根据所述垂直距离与所述旋转矩阵计算得到矫正矩阵,确定所述相机采集所述发光器件图像的相机参数。

可选的是,所述获取相机的重力传感器采集的当前重力向量包括:

获取所述重力传感器连续采集的多个重力向量;

计算所述多个重力向量的平均值,作为所述当前重力向量。

可选的是,发光器件所述相机的光轴与所述重力传感器的重力方向垂直。

可选的是,所述根据所述垂直距离与所述旋转矩阵计算得到矫正矩阵包括:

根据所述垂直距离和单位矩阵确定转换矩阵;

根据所述转换矩阵和所述旋转矩阵计算得到所述矫正矩阵。

根据本发明的第二方面,提供了一种相机参数的矫正装置,包括:

重力向量获取模块,用于获取相机的重力传感器采集的当前重力向量;

旋转矩阵计算模块,用于计算所述当前重力向量与平行于所述重力传感器的重力方向的单位向量之间的旋转矩阵;

距离计算模块,用于根据所述相机采集的初始图像中发光器件的初始坐标和所述旋转矩阵,确定所述相机与地面之间的垂直距离,其中,所述初始图像为所述发光器件设置在所述地面上时所述相机采集的图像;以及,

矫正模块,用于根据所述垂直距离与所述旋转矩阵计算得到矫正矩阵,确定所述相机采集所述发光器件图像的相机参数。

可选的是,所述重力向量获取模块还用于:

获取所述重力传感器连续采集的多个重力向量;

计算所述多个重力向量的平均值,作为所述当前重力向量。

可选的是,所述相机的光轴与所述重力传感器的重力方向垂直。

可选的是,所述矫正模块还用于:

根据所述垂直距离和单位矩阵确定转换矩阵;

根据所述转换矩阵和所述旋转矩阵计算得到所述矫正矩阵。

根据本发明的第三方面,提供了一种虚拟现实设备,包括根据本发明第二方面所述的矫正装置。

根据本发明的第四方面,提供了一种虚拟现实设备,包括存储器和处理器,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行根据本发明第一方面所述的矫正方法。

本发明的一个有益效果在于,通过本发明的矫正方法,可以在相机的镜头向下倾斜的情况下,使得到的发光器件坐标更加准确。虚拟现实设备的游戏场景中不会发生倾斜的情况,进而可以提升客户体验。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1为根据本发明一种相机参数的矫正方法的一种实施方式的流程图;

图2为根据本发明一种相机参数的矫正装置的一种实施结构的方框原理图;

图3为根据本发明一种虚拟现实设备的一种实施结果的方框原理图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本发明的实施例中涉及的虚拟现实设备包括相机、设置在相机上的重力传感器、设置有发光器件的手柄或者是头戴显示器。相机通过采集包含发光器件的图像确定发光器件的位置,进而确定设置有发光器件的手柄或者是头戴显示器的运动轨迹。

预先建立世界直角坐标系,世界直角坐标系包括相互垂直于一点的第一横轴、第一竖轴和第一纵轴,且第一竖轴平行于重力方向且方向相同,相机的光轴平行于第一横轴。重力传感器采集的数据为对应该世界直角坐标系的重力向量。其中,第一横轴和第一纵轴所在的平面为水平面。

根据相机采集的图像通过定位算法可以确定发光器件的三维坐标。该三维坐标对应相机直角坐标系,该相机直角坐标系包括互相垂直于一点的第二横轴、第二竖轴和第二纵轴,且第一横轴与第一横轴平行,第二竖轴平行于相机的镜头。

通过调整相机的俯仰角可以调整第二竖轴与重力方向之间的角度。在第二竖轴平行于重力方向的情况下,第二竖轴的方向与第一竖轴的方向相反,第一横轴与第二横轴平行且方向相反,第一纵轴和第二纵轴平行且方向相同。

然而,在相机在使用过程中,无法保证相机完全竖直的摆放,即第二竖轴可能无法平行于重力方向,这会使得通过相机定位得到的发光器件的坐标不准确,从而导致虚拟现实设备的游戏场景中地面倾斜的现象。

图1为根据本发明一种相机参数的矫正方法的一种实施方式的流程图。

根据图1所示,该矫正方法包括以下步骤:

步骤S110,获取相机的重力传感器采集的当前重力向量。

其中,相机的光轴与重力传感器的重力方向垂直。重力向量包括相对于世界直角坐标系中第一横轴、第一竖轴和第一纵轴的重力分量,例如可以是(x1,y1,z1)。

进一步地,该当前重力向量可以是重力传感器连续多次采集的数据的平均值。具体的,可以是先获取重力传感器连续采集的多个重力向量;再计算这多个重力向量的平均值,作为当前重力向量。

步骤S120,计算当前重力向量与平行于重力传感器的重力方向的单位向量之间的旋转矩阵。

在此基础上,执行步骤S120的方法可以包括如下步骤S121~S123。

步骤S121,计算重力向量与平行于重力传感器的重力方向的单位向量的叉乘积,得到法向量。

其中,平行于重力方向的单位向量相当于是平行于世界坐标系中第一竖轴的单位向量,该单位向量为(0,1,0)。那么,重力向量(x1,y1,z1)与单位向量(0,1,0)之间的叉乘积可以是:

(x1,y1,z1)×(0,1,0)=(a,b,c)

其中,(a,b,c)为法向量。

步骤S122,计算重力向量与单位向量的点乘积,得到重力向量与单位向量之间的夹角。

重力向量(x1,y1,z1)与单位向量(0,1,0)之间的点乘积为:

(x1,y1,z1)·(0,1,0)=|m||n|cosθ

其中,|m|为重力向量(x1,y1,z1)的模,|n|为单位向量(0,1,0)的模,θ为重力向量(x1,y1,z1)与单位向量(0,1,0)之间夹角。

步骤S123,根据法向量和夹角计算得到旋转矩阵。

旋转矩阵[R]的计算公式可以为:

步骤S130,根据相机采集的初始图像中发光器件的初始坐标和旋转矩阵,确定相机与地面之间的垂直距离。

具体的,可以是预先将发光器件放置在地面上,初始图像为发光器件放置在地面上时相机采集的图像。

根据初始图像确定的发光器件位于地面上时的初始坐标可以为(x0,y0,z0),该初始坐标是相对于相机空间直角坐标系而言的,那么,执行步骤S120的具体方法可以包括如下步骤S131~S132。

步骤S131,将旋转矩阵左乘初始坐标,得到发光器件在世界空间直角坐标系中的初始世界坐标。

初始世界坐标(x2,y2,z2)的计算公式可以为:

(x2,y2,z2)=[R]*(x0,y0,z0)

步骤S132,将初始世界坐标对应第一竖轴的分量的相反数作为相机与地面之间的距离。

那么,相机与地面之间的距离h=-y2。

步骤S140,根据垂直距离与旋转矩阵计算得到矫正矩阵,确定相机采集发光器件图像的相机参数。

执行步骤S140的具体方法包括如下步骤S141~S144。

步骤S141,根据该距离和单位矩阵确定转换矩阵。

单位矩阵为由于第一横轴和第二横轴的方向相反,第一竖轴和第二竖轴的方向相反,第一纵轴和第二纵轴的方向相同,因此,可以得到转换矩阵

步骤S142,计算旋转矩阵的逆矩阵,得到旋转逆矩阵。

旋转矩阵的逆矩阵为[R]-1

步骤S143,将旋转逆矩阵左乘转换矩阵得到矫正矩阵。

矫正矩阵[E]的计算公式为:

步骤S144,将矫正矩阵保存至相机参数中。

在后续相机根据采集的发光器件图像确定发光器件的位置时,可以直接调用相机参数中矫正矩阵。其中,发光器件图像具体为包含有发光器件的图像。

这样,通过本发明的矫正方法,可以在相机的镜头向下倾斜的情况下,使得到的发光器件坐标更加准确。虚拟现实设备的游戏场景中不会发生倾斜的情况,进而可以提升客户体验。

具体的,根据定位算法确定相机后续采集的发光器件图像中发光器件的当前坐标为(x3,y3,z3)。根据相机采集的发光器件图像通过定位算法确定发光器件坐标的方法为现有技术,在此不再赘述。

根据相机参数中的矫正矩阵矫正后的当前坐标为(x4,y4,z4),计算矫正后的当前坐标的方法包括:计算矫正矩阵的逆矩阵得到矫正逆矩阵[E]-1,将矫正逆矩阵左乘当前坐标。

矫正后的当前坐标(x4,y4,z4)的计算公式可以为:

(x4,y4,z4)=[R]-1*(x3,y3,z3)

与上述矫正方法相对应的,本发明还提供了一种相机参数的矫正装置。图2为根据本发明一种相机参数的矫正装置的一种实施结构的方框原理图。

根据图2所示,该矫正装置包括重力向量获取模块210、旋转矩阵计算模块220、距离计算模块230和矫正模块240。该重力向量获取模块210用于获取相机的重力传感器采集的当前重力向量;该旋转矩阵计算模块220用于计算当前重力向量与平行于重力传感器的重力方向的单位向量之间的旋转矩阵;该距离计算模块230用于根据相机采集的初始图像中发光器件的初始坐标和旋转矩阵,确定相机与地面之间的垂直距离,其中,初始图像为发光器件设置在地面上时相机采集的图像;该矫正模块240用于根据垂直距离与旋转矩阵计算得到矫正矩阵,确定相机采集发光器件图像的相机参数。

具体的,重力向量获取模块还用于:获取重力传感器连续采集的多个重力向量;计算多个重力向量的平均值,作为当前重力向量。

进一步地,相机的光轴与重力传感器的重力方向垂直。

在此基础上,矫正模块240还用于:根据垂直距离和单位矩阵确定转换矩阵;根据转换矩阵和旋转矩阵计算得到矫正矩阵。

本发明还提供了一种虚拟现实设备,根据一方面,该虚拟现实设备包括前述的矫正装置。

图3为根据本发明另一方面的该虚拟现实设备的实施结构的方框原理图。

根据图3所示,该虚拟现实设备300包括存储器301和处理器302,该存储器301用于存储指令,该指令用于控制处理器302进行操作以执行前述的矫正方法。

该处理器例如可以是中央处理器CPU、微处理器MCU等。该存储器例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。

除此之外,根据图3所示,该虚拟现实设备300还可以包括接口装置303、输入装置304、显示装置305、通信装置306、相机307、重力传感器308等等。尽管在图3中示出了多个装置,但是,本发明投影设备可以仅涉及其中的部分装置,例如,处理器301、存储器302、相机307和重力传感器308等。

上述通信装置306例如能够进行有有线或无线通信。

上述接口装置303例如包括USB接口。

上述输入装置304例如可以包括触摸屏、按键等。

上述显示装置305例如是液晶显示屏、触摸显示屏等。

上述各实施例主要重点描述与其他实施例的不同之处,但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分相互参见即可,每个实施例重点说明的都是与其他实施例的不同之处,但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。另外,对于装置实施例而言,由于其是与方法实施例相对应,所以描述得比较简单,相关之处参见方法实施例的对应部分的说明即可。以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的。

本发明可以是装置、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

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