基于云端计算的标定方法、装置、电子设备和计算机程序产品
技术领域
本申请涉及增强现实技术领域,特别涉及基于云端计算的标定方法、装置、电子设备和计算机程序产品。
背景技术
AR(augmented reality,增强现实)技术是在用户观察到的真实自然环境中添加计算机生成的文字、3D模型等信息的技术,通过AR技术用户不仅可以与真实环境交互,而且可在感官上接近自然环境的几何、色彩等信息,增强用户对真实环境的感知能力。AR需要设置真实摄像机和虚拟摄像机,当用户观察自然世界的视角改变时,虚拟摄像机参数必须与真实摄像机参数保持一致,同时需要实时跟踪真实物体的位置和姿态参数,利用这些参数去更新虚拟物体的位置和姿态。在虚实对准过程中,***中某些设备(如摄像机)的内部参数以及***某些设备之间的相对位置方向等参数始终保持不变,因而可以提前对这些参数进行测量或者标定。
AR***中有2种常用的显示设备:一种是VSTHMD(video see through headmounted displays,视频透射头盔显示器);另一种是OSTHMD(optical see through headmounted displays,光学透射头盔显示器)。因为OSTHMD***是用户使用自身人眼透过半透明目镜直接获得自然环境中的物体,因此其标定不能像VSTHMD一样可以直接、方便地处理真实物体图像中的特征;同时OSTHMD标定主要是对由人眼和OSTHMD构成的虚拟摄像机进行标定,用户的不同次使用以及用户身份的改变都将导致人眼位置的潜在变化,这些人为的因素不可避免地增大了OSTHMD标定的难度。可见相对于VSTHMD,OSTHMD的标定更复杂、更困难。
佩戴OSTHMD后,用户看到的景象是人眼和OSTHMD共同作用的结果,因此将光学透视头盔显示器与人眼的结合定义为虚拟摄像机来进行标定。图1示出了OSTHMD***各坐标系间转换关系示意图,如图1所示,OSTHMD涉及3个坐标系:摄像机的跟踪坐标系、人工标识的世界坐标系以及光学头盔的虚拟坐标系。F为已知的世界坐标系到跟踪坐标系的转换关系,其可以通过摄像头对人工标识的识别实时得到,并且F=[RF|TF],其中RF代表世界坐标系到跟踪坐标系的旋转转换,TF代表世界坐标系到跟踪坐标系的平移转换;G为未知的跟踪坐标系到虚拟坐标系的转换关系,并且G可表示为G=KG[RG|TG],其中KG代表虚拟相机的内参,可将虚拟坐标系3D空间中的点投影到2D屏幕上,RG代表跟踪坐标系到虚拟坐标系的旋转,TG代表跟踪坐标系到虚拟坐标系的平移;H为已知的。
标定的最终效果是使得虚拟物体可以正确叠加在实际位置之上。若有一个真实3D位置Pw处于世界坐标系下和一个虚拟位置Pv处于虚拟坐标系下,若标定成功,则它们最终在真实3D世界的位置应当一致,即F-1*G-1*Pv=Pw。对于同一个佩戴者,G是不变并且未知的,即需要在H=F*G的约束条件下求取G,因此OSTHMD的标定主要为求取跟踪坐标系到虚拟坐标系之间的转换关系G。
2000年,Tuceryan等提出了一个用户友好的SPAAM(Single Point ActiveAlignment Method,单点主动对准方法)来标定OSTHMD。其原理为:利用真实场景中的一个校准标靶点进行OSTHMD标定。用户人眼透过OSTHMD屏幕观察该校准点,然后转动头部,使之与观察屏幕上的校准点对准,通过按下确认键等方式进行确认,收集该组对准数据。因为靶标虚像与靶标实像的对准牵涉到靶标物体的平移旋转变换,即一个点集从一个坐标系到另一个坐标系的转换,需用到齐次坐标变换,因此设经过标定的跟踪摄像头在跟踪坐标系下的齐次坐标为P=(x y z 1)T。经过虚拟摄像头的投影变换,对应的图像点在虚拟摄像机坐标系下的齐次坐标为(u v 1)T,则有:
上式(1)中s为比例因子,是不为0的常数。G反映了跟踪坐标系到虚拟摄像机坐标系的投影变换关系,即标定OSTHMD的3*4投影矩阵G,用g1 T,g2 T,g3 T分别表示G的3行,则有:
进一步可得到:
因为3*4投影矩阵共有12个需要确定的未知参数,由上式(3)可知,每个标定点可以确定两个独立的约束方程。所以至少需要六次单点对准的过程组成12个方程组,并且12个方程组必须线性无关,之后计算12个未知参数进而得到3*4投影矩阵G的解,从而完成对OSTHMD的标定。
因为整个标定都需要人为使靶标对准,可能存在一定的误差,使得最后解方程组产生退化,所以在实际标定过程中对SPAAM进行更多次数的靶标标定来减少退化影响,实际操作进行标定时,通常为每个用户的左右两眼分别收集20组对准数据。此外,因为不同佩戴者的眼睛瞳距、视力度数等都不同,导致各用户的眼睛和OSTHMD组成的虚拟相机是不同的,也即G是不同的,所以需要针对每个OSTHMD佩戴者进行多组对准数据的收集以完成标定。
现有技术的不足在于:
现有基于SPAAM实现OSTHMD标定的方案中,每个进行标定的用户都涉及过多的对准数据收集,操作繁琐,耗时长。
发明内容
本申请实施例提出了基于云端计算的标定方法、装置、设备和计算机程序产品,主要用以在OSTHMD标定过程中减少对准数据的收集,简化操作,缩短标定时间。
在一个方面,本申请实施例提供了一种基于云端计算的标定方法,其特征在于,所述方法包括:确定已有的转换参数G,所述转换参数G是基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数;获取当前用户的对准数据;根据所述当前用户的对准数据和所述转换参数G计算当前用户的跟踪坐标系到虚拟坐标系的转换参数G’。
在另一个方面,本申请实施例提供了一种基于云端计算的标定装置,其特征在于,所述装置包括:已有参数确定模块,用于确定已有的转换参数G,所述转换参数G是基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数;对准数据获取模块,用于获取当前用户的对准数据;当前参数计算模块,用于根据所述当前用户的对准数据和所述转换参数G计算当前用户的跟踪坐标系到虚拟坐标系的转换参数G’。
在另一个方面,本申请实施例提供了一种电子设备,其特征在于,所述电子设备包括:存储器,一个或多个处理器;以及一个或多个模块,所述一个或多个模块被存储在所述存储器中,并被配置成由所述一个或多个处理器执行,所述一个或多个模块包括用于执行上述方法中各个步骤的指令。
在另一个方面,本申请实施例提供了一种与电子设备结合使用的计算机程序产品,所述计算机程序产品包括内嵌于计算机可读的存储介质中的计算机程序,所述计算机程序包括用于使所述电子设备执行上述方法中的各个步骤的指令。
本申请实施例的有益效果如下:
本申请中,能够利用已有的标定数据完成当前用户的OSTHMD标定,无需对当前用户进行完整的SPAAM标定,只需收集较少的对准数据,简化了操作,消耗时间短。
附图说明
下面将参照附图描述本申请的具体实施例,其中:
图1示出了OSTHMD***各坐标系间转换关系示意图;
图2示出了本申请实施例中基于云端计算的标定方法的流程示意图;
图3示出了本申请实施例中不同用户间虚拟坐标系成像变化示意图;
图4示出了本申请实施例二中基于云端计算的标定装置的结构示意图;
图5示出了本申请实施例三中电子设备的结构示意图。
具体实施方式
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
发明人在发明过程中注意到:现有基于SPAAM实现OSTHMD标定的方案中,每个进行标定的用户都涉及过多的对准数据收集,操作繁琐,耗时长。
针对上述不足,本申请提供了一种基于云端计算的标定方法,获取已有的基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数G,结合当前用户的少量对准数据得到当前用户转换参数G’,完成当前用户的标定。本申请中,能够利用已有的标定数据完成当前用户的OSTHMD标定,无需对当前用户进行完整的SPAAM标定,只需收集较少的对准数据,简化了操作,消耗时间短。
以下通过具体示例,进一步阐明本发明实施例技术方案的实质。
实施例一:
图2示出了本申请实施例一中基于云端计算的标定方法流程示意图,如图2所示,所述基于云端计算的标定方法包括:
步骤101,确定已有的转换参数G,所述转换参数G是基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数;
步骤102,获取当前用户的对准数据;
步骤103,根据所述当前用户的对准数据和所述转换参数G计算当前用户的跟踪坐标系到虚拟坐标系的转换参数G’。
在步骤101中,确定已有的转换参数G,所述转换参数G是基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数。
对各已有用户来说,基于SPAAM实现对OSTHMD标定的标定结果通常是计算得到的各用户使用OSTHMD时跟踪坐标系到虚拟坐标系的转换参数G。在本实施例中,确定一已有的转换参数G,该参数可以是其他用户使用该OSTHMD(或者参数完全相同的OSTHMD)并基于SPAAM完成标定得到的转换参数,也可以是当前用户使用该OSTHMD(或者参数完全相同的OSTHMD)基于SPAAM完成标定曾经得到的转换参数。所述转换参数G通常为一3*4的矩阵,用以表征由跟踪坐标系到虚拟坐标系的投影变换关系。
当同一个用户视力情况没有发生较大变化,佩戴相同OSTHMD时的转换参数G通常是不变的,而另一个人佩戴同样的OSTHMD时,因为每个人的瞳距和视力情况是不同的,因此转换参数G通常也是不同的,其中瞳距影响了跟踪坐标系到虚拟坐标系的旋转和平移,导致图像位置的改变,视力影响了图像的大小。
对于一个点P,其在跟踪坐标系下的齐次坐标为P=(x y z 1)T,则已有用户在虚拟坐标系成像的齐次坐标为PC=(xC,yC,1)T。设当前用户对于该P点在虚拟坐标系成像的齐次坐标为PE=(xE,yE,1)T,则存在如下关系:
其中αu和αv为互相垂直的拉伸比例因子;u0和v0为互相垂直的平移比例因子,如图3所示。
上式(4)的矩阵表示为
其中矩阵K为修正参数。
可见,根据式(1),对于已有用户,有:
s*PC=G*P (6)
上式(6)中s为比例因子,是不为0的常数。G反映了已有用户经标定的跟踪坐标系到虚拟摄像机坐标系的投影变换关系。
同样根据式(1),对于当前用户,有:
s*PE=G’*P (7)
上式(7)中s为与上式(6)中相同的比例因子。G’反映了待标定的当前用户跟踪坐标系到虚拟摄像机坐标系的投影变换关系。
联立上述(6)和(7)两式,得到:
G-1*PC=(G’)-1*PE (8)
将上式(8)带入上式(5),得到:
G’=KG (9)
在步骤102中,获取当前用户的对准数据。
分别对当前用户的左眼和右眼收集数据,收集数据的方式与SPAAM相同,利用真实场景中的一个校准标靶点进行OSTHMD标定,用户人眼透过OSTHMD屏幕观察该校准点,然后转动头部,使之与观察屏幕上的校准点对准,通过按下确认键等方式进行确认,收集当前的该对准数据。
为计算αu、αv、u0和v0进而得到修正参数K,需要至少收集当前用户的2组数据,即PE,1和PE,2,并根据对应的已有用户标定数据计算得到相应P点的PC,1和PC,2,得到:
在理想情况下,仅收集当前用户的2组标定数据带入上式(10)即可求解出αu、αv、u0和v0,进而得到修正参数K。
在步骤103中,根据上式(9)和修正参数K即可利用已有用户的标定数据中的转换参数矩阵G计算当前用的转换参数矩阵G’,完成当前用户的OSTHMD标定。
需要说明的是,当前用户与已有用户因视力情况差异导致的PE与PC间的变换关系除可以用拉伸比例因子αu和αv以及平移比例因子u0和v0表示外,还可以采用旋转与拉伸或者旋转与平移等相结合的方式完成转换,或者采用其他函数关系表征二者之间的转换关系,在这些情况下修正参数矩阵K可能有其他表达方式,并且计算过程不同,需要当前用户采集的对准数据数量也可能不同。但是可以理解,利用已有用户的已知转换参数G,基于当前用户采集的对准数据对已知的G进行修正,得到当前用户的转换参数G’将无需对当前用户进行完整的SPAAM标定,只需收集较少的对准数据,简化了操作,消耗时间短。
在一些实施方式中,在所述步骤101中,根据当前用户的视力情况确定已有的转换参数G,所述转换参数G是基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数。
对于不同视力状况的用户,其所感知的成像的尺度和位置有所不同,因为在SPAAM的基础上利用先验数据对新的佩戴者来进行标定,考虑到视力情况越相近,两用户感知的成像尺度和位置的差距越小,因此根据当前用户的视力情况,选择与其视力情况更接近的用户的已有标定数据能够进一步提高当前用户标定的精度。
所述视力情况通常需要参考用户的近视/远视度数、双眼间瞳距确定。在已有的标定数据中,通常需要记录用户与已有标定数据的对应关系,同时记录已有标定数据对应的用户视力情况,例如该用户标准视力度数和瞳距。
在当前用户标定之前,可要求用户登录其自己的账号,若为历史用户,则其账号中保存有已有的标定数据和其用户视力情况,直接采用已有标定数据。若当前用户为新注册用户,则需要由OSTHMD测量或者用户自己输入其视力情况,例如由OSTHMD检测得到用户瞳距值,同时由用户自己输入双眼的视力度数;OSTHMD根据用户的视力情况在数据库中搜索各已有标定数据的用户的视力情况,选择与当前用户视力情况最接近的用户的已有标定数据作为先验数据,例如先确定与当前用户瞳距相同或者最接近的已有用户,在这些用户中确定双眼视力与当前用户相同或者差距最小的已有用户,将该已有用户的已有标定数据中的跟踪坐标系到虚拟坐标系的转换参数G作为本实施例中后续步骤的计算基础,以完成当前用户的标定。当存在多个视力情况与当前用户最接近的已有用户时,随机选用其中一个用户的已标定数据。
当建立起庞大的已有用户的标定数据库后,将能够很容易为当前新用户找到与其视力情况相近的已有用户的标定数据以完成当前用户的标定。所述标定数据库可以存储在云端服务器,并由云端服务器进行视力情况接近的用户的选择。
在一些实施方式中,在所述步骤101进一步包括:
步骤1011,确定已有的各转换参数对应的视力情况评分;
步骤1012,确定当前用户的视力情况评分;
步骤1013,确定所述当前用户的视力情况评分预设分数范围内的任一评分对应的转换参数为所述已有的转换参数G,或者,确定与所述当前用户的视力情况评分最接近的评分对应的转换参数为所述已有的转换参数G。
上述步骤1011和步骤1012执行的先后顺序不限,在步骤1011中确定已有用户的视力情况评分以及各用户的标定数据(其中包括基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数G)。在步骤1012中确定当前用户的视力情况评分,该评分可以是当前用户预先测试并输入的,也可以是OSTHMD对当前用户进行检测和计算得到的。这里的视力情况评分为综合考虑用户各方面的视力情况,例如近视/远视度数、双眼间瞳距等通过预设算法进行计算得到的评分,表征了用的视力情况。视力情况完全相同的用户具有完全相同的视力情况评分,视力情况差距越大的两个用户间,视力情况评分差距越大。
在步骤1013中,根据预设分数范围确定已有的转换参数G,或者确定与当前用户的视力情况评分最接近的用户的转换参数G完成后续步骤。
在基于预设分数范围确定已有的转换参数G的方案中,所述范围可以为基于阈值简单的确定,例如,预设阈值记为threshold,当前用户的视力情况评分为score,在云端数据库中寻找视力评分在[score-threshold,score+threshold]范围内的用户,若在该范围中无符合的用户,扩大阈值threshold,继续寻找,直到找到。从视力评分在阈值范围内的用户中随机选择一个,并以其标定数据中的转换参数G作为本实施例中后续步骤的计算基础。所述预设分数范围也可以基于相对复杂的方式确定,例如根据“四分法剔除极端值”法确定预设分数范围,即在云端数据库中寻找视力评分在[score-threshold,score+threshold]范围内的用户,将各用户的视力情况评分记为scorei,下标i代表第i个符合条件的用户。将这些数据从小到大排序得到{score1,score2,score3,…,scoren},然后将数据等分成两组数据,得到{score1,…,scorem,}和{scorem+1,…,scoren},分别取得两组数据的中间值记为m1和m2,将视力情况评分小于m1-(m2-m1)*0.5或者视力情况评分大于m2+(m2-m1)*0.5的评分剔除,在之后的分数范围内随机选择一个分数对应的用户,并以其标定数据中的转换参数G作为本实施例中后续步骤的计算基础。
此外也可以直接确定与当前用户的视力情况评分最接近的视力情况评分,以该评分所属用户的已有标定数据中的转换参数G作为本实施例中后续步骤的计算基础。
本申请中,能够利用已有的标定数据完成当前用户的OSTHMD标定,无需对当前用户进行完整的SPAAM标定,只需收集较少的对准数据,简化了操作,消耗时间短。在选择已有的标定数据时,能够选择与当前用户视力情况更接近的用户的已有标定数据,提高当前用户标定准确程度;以视力情况评分表征用户的视力情况能够更简化用户的操作,并且在用户更换不同种类的OSTHMD时,能够更简单的使OSTHMD获取用户的多维度的视力情况信息,尽快完成相关标定流程。
实施例二:
基于同一发明构思,本申请实施例中还提供了一种基于云端计算的标定装置,由于这些装置解决问题的原理与基于云端计算的标定方法相似,因此这些装置的实施可以参见方法的实施,重复之处不再赘述。如图4所示,所述基于云端计算的标定装置200包括:
已有参数确定模块201,用于确定已有的转换参数G,所述转换参数G是基于SPAAM对OSTHMD标定得到的跟踪坐标系到虚拟坐标系的转换参数;
对准数据获取模块202,用于获取当前用户的对准数据;
当前参数计算模块203,用于根据所述当前用户的对准数据和所述转换参数G计算当前用户的跟踪坐标系到虚拟坐标系的转换参数G’。
在一些实施方式中,所述已有参数确定模块201,用于根据当前用户的视力情况确定已有的转换参数G。
在一些实施方式中,所述已有参数确定模块201包括:
第一确定单元2011,用于确定已有的各转换参数对应的视力情况评分;
第二确定单元2012,用于确定当前用户的视力情况评分;
已有参数确定单元2013,用于确定所述当前用户的视力情况评分预设分数范围内的任一评分对应的转换参数为所述已有的转换参数G,或者,确定与所述当前用户的视力情况评分最接近的评分对应的转换参数为所述已有的转换参数G。
在一些实施方式中,所述当前参数计算模块203包括:
修正参数计算单元2031,用于根据所述当前用户的对准数据和所述转换参数G计算修正参数K;
转换参数计算单元2032,用于根据所述修正参数K和所述转换参数G计算当前用户的跟踪坐标系到虚拟坐标系的转换参数G’。
在一些实施方式中,所述修正参数K为:
其中αu和αv为互相垂直的拉伸比例因子;u0和v0为互相垂直的平移比例因子;
所述转换参数计算单元2032,用于基于G’=K*G,根据所述修正参数K和所述转换参数G计算当前用户的跟踪坐标系到虚拟坐标系的转换参数G’。
实施例三:
基于同一发明构思,本申请实施例中还提供了一种电子设备,由于其原理与基于云端计算的标定方法相似,因此其实施可以参见方法的实施,重复之处不再赘述。如图5所示,所述电子设备300包括:存储器301,一个或多个处理器302;以及一个或多个模块,所述一个或多个模块被存储在所述存储器中,并被配置成由所述一个或多个处理器执行,所述一个或多个模块包括用于执行任一上述方法中各个步骤的指令。
实施例四:
基于同一发明构思,本申请实施例还提供了一种与电子设备结合使用的计算机程序产品,所述计算机程序产品包括内嵌于计算机可读的存储介质中的计算机程序,所述计算机程序包括用于使所述电子设备执行任一上述方法中的各个步骤的指令。
为了描述的方便,以上所述装置的各部分以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。