结合传感器与Unity3D的定点移动增强现实方法转让专利

申请号 : CN201510409071.1

文献号 : CN105023294B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕朝辉阳星芸张岳沈萦华

申请人 : 中国传媒大学

摘要 :

本发明公开了一种结合传感器与Unity3D的定点移动增强现实方法,包括,步骤一、利用Unity3D中的WebCamTexture类获取摄像头图像,从而实时地将摄像头捕捉到的图像作为纹理贴到虚拟场景的物体上,实现增强现实系统中实际场景的获取,从而把现实场景与虚拟场景放在同一个空间内;步骤二、利用设备中的Gyroscope传感器控制虚拟摄像机在虚拟场景中的绕轴旋转动作,从而实现虚拟摄像机与实际设备同步同姿态的运动;步骤三、利用设备中的Orientation传感器进行设备方向偏差上的校正,对上述Gyroscope传感器产生的硬件误差进行校正。克服了现有技术存在的硬件局限性、计算量大以及造成现实场景的不自然性和不和谐感的问题。

权利要求 :

1.一种结合传感器与Unity3D的定点移动增强现实方法,其特征在于,包括,步骤一、利用Unity3D中的WebCamTexture类获取摄像头图像,从而实时地将摄像头捕捉到的图像作为纹理贴到虚拟场景的物体上,实现增强现实系统中实际场景的获取,从而把现实场景与虚拟场景放在同一个空间内;

步骤二、利用设备中的Gyroscope传感器控制虚拟摄像机在虚拟场景中的绕轴旋转动作,从而实现虚拟摄像机与实际设备同步同姿态的运动;

所述步骤二具体为:用Gyroscope传感器获取的设备角加速度值控制虚拟摄像机的旋转运动,即定义一个公共类型的对象变量来装载虚拟摄像机,在对象变量内有一个控制对象旋转的旋转变量,用来操控摄像机的绕轴运动,根据虚拟摄像机在Unity3D中的三轴位置关系,将Gyroscope传感器x、y、z上的值对应地分别赋给旋转变量;

步骤三、利用设备中的Orientation传感器进行设备方向偏差上的校正,对上述Gyroscope传感器产生的硬件误差进行校正;所述步骤三具体为:在增强现实系统启动的初始阶段记录设备的一次方向数值,作为校正的标准即原始数值,之后每一帧都会获取一次方向数值,并与原始数值比较,如果数值相同或在一段可允许的波动范围内则判定设备已回归到初始位置,于是将虚拟摄像机恢复到初始位置,并归零之前计算积累的旋转角度值;

利用事前获取的虚实之间的角度关系作为一种新型的视觉信息,通过Gyroscope传感器连接虚拟摄像机与实际摄像头,实现基于混合式跟踪注册的定点移动增强现实。

2.根据权利要求1所述的结合传感器与Unity3D的定点移动增强现实方法,其特征在于,上述步骤一具体为:创建Plane平面,且该Plane平面铺满整个设备显示屏,将获取的摄像头图像贴在Plane平面上,从而将获取的摄像头图像映射到Plane平面。

3.根据权利要求2所述的结合传感器与Unity3D的定点移动增强现实方法,其特征在于,使用Gyroscope传感器获取的设备角加速度值判断设备运动的判断条件为,前后两帧角加速度绝对差值以0.01为界,大于0.01则判定设备处于运动状态,反之则处于静止状态。

4.根据权利要求3所述的结合传感器与Unity3D的定点移动增强现实方法,其特征在于,上述数值相同或在一段可允许的波动范围内则判定实际设备已回归到初始位置中,波动范围为±2°。

说明书 :

结合传感器与Unity3D的定点移动增强现实方法

技术领域

[0001] 本发明涉及图像处理领域,具体地,涉及一种结合传感器与Unity3D的定点移动增强现实方法。

背景技术

[0002] 增强现实是一种将虚拟信息,包括文字、图像、虚拟物体等,添加到实际场景中的技术。在一套完整的增强现实系统中,核心技术包括了显示技术、注册技术和交互技术。其中,为了实现虚实之前无缝的连接,注册技术是关键,因此成为了增强现实研究领域的最大热点之一。所谓注册技术,就是研究如何在正确的地方或合适的时间将虚拟信息显示出来。目前常用的注册技术主要以特征点识别为主,即在室内的不同位置布置标记点,通过移动终端的摄像头扫描这些标记点获取感兴趣的位置信息,进而触发虚拟信息的显示。通过这种方法基本上可以实现虚拟场景与真实场景的精确对接,但是对于场景中存在的环境变量,如光线、阴影、遮挡等因素,不具有很强的鲁棒性,因此可能会出现识别错误或无法识别的情况。而本发明从另一个角度出发,以移动设备与注册地点的姿态方位为识别点,屏蔽了环境变化带来的干扰,进而实现虚实的融合。
[0003] 目前一般的移动增强现实系统中,分为基于硬件设备的跟踪注册技术,基于视觉的跟踪注册技术,以及综合上述两种的混合式跟踪注册技术。(1)基于硬件设备的跟踪注册技术主要是通过传感设备来测量摄像机实时的运动姿态与位置,以此作为触发虚拟信息出现的判断依据。这就可以避免一些环境因素,如光照、阴影带来的干扰。但是随着设备的长时间使用,会无法避免的因为硬件本身的局限性而产生误差,使得虚拟场景越来越偏离现实场景而无法融合。这是这种跟踪注册技术的缺陷性,目前只能通过不断提高硬件设备的制作工艺或使用一些新型材料来解决。(2)基于视觉的跟踪注册技术主要是以跟踪识别自然特征或辅助标识点来触发虚拟物体的出现。这样就可以解决基于硬件设备跟踪注册技术中由于硬件自身限制而导致的机械误差,然而因此产生的问题便是大量的计算。在基于自然特征的注册技术中,系统必须识别现实场景中存在的大量视觉信息,并且要保证这些视觉信息的完整性,即不能出现信息被遮挡的情况。因此这种技术只能适用于小范围、简单环境中的增强现实,否则难以达到注册要求的实时性与精确性。而基于辅助标志点的注册技术,核心点在于构造出一个具有特殊几何特征的标志点,目前常用是二维码注册。这种注册方法既解决了关于硬件设备局限性的问题,又解决了自然特征点大信息量的问题,是如今增强现实系统中最常用的注册技术。但是由于这种技术需要提供额外的人工标志点,会或多或少地造成现实场景的不自然性和不和谐感。另外,在利用辅助标志点注册的增强现实系统中,有几个需要解决的问题:如何定位到图像中的标志点?定位后怎么识别特征点?如何可以快速有效地匹配特征点?(3)混合式跟踪注册技术利用硬件跟踪技术完成一个大致范围内的定位,再通过视觉注册技术实现精确的虚实对接。目前,美国南加州大学的研究小组Yousuya通过将惯性跟踪器与视觉相结合的方法完成了高精度的三维跟踪注册。奥地利格拉茨理工大学的 Thomas等人则利用光学跟踪与电磁跟踪相混合的形式,使注册精度与单一通过光学或电磁跟踪时减少了一个数量级。然而这些混合式跟踪注册技术目前还没有成熟应用。

发明内容

[0004] 本发明的目的在于,针对上述问题,提出一种结合传感器与Unity3D的定点移动增强现实方法,以克服硬件局限和计算量大的问题。
[0005] 为实现上述目的,本发明采用的技术方案是:
[0006] 一种结合传感器与Unity3D的定点移动增强现实方法,包括,
[0007] 步骤一、利用Unity3D中的WebCamTexture类获取摄像头图像,从而实时地将摄像头捕捉到的图像作为纹理贴到虚拟场景的物体上,实现增强现实系统中实际场景的获取,从而把现实场景与虚拟场景放在同一个空间内;
[0008] 步骤二、利用设备中的Gyroscope传感器控制虚拟摄像机在虚拟场景中的绕轴旋转动作,从而实现虚拟摄像机与实际设备同步同姿态的运动;
[0009] 步骤三、利用设备中的Orientation传感器进行设备方向偏差上的校正,对上述Gyroscope传感器产生的硬件误差进行校正。
[0010] 优选的,上述步骤一具体为:创建Plane平面,且该Plane平面铺满整个设备显示屏,将获取的摄像头图像贴在Plane平面上,从而将获取的摄像头图像映射到Plane平面。
[0011] 优选的,所述步骤二具体为:用Gyroscope传感器获取的设备角加速度值控制虚拟摄像机的旋转运动,即定义一个公共类型的对象变量来装载虚拟摄像机,在对象变量内有一个控制对象旋转的旋转变量,可以用来操控摄像机的绕轴运动,根据虚拟摄像机在Unity3D中的三轴位置关系,将Gyroscope传感器x、y、z上的值对应地分别赋给旋转变量。
[0012] 优选的,使用Gyroscope传感器获取的设备角加速度值判断设备运动的判断条件为,前后两帧角加速度绝对差值以0.01为界,大于0.01则判定设备处于运动状态,反之则处于静止状态。
[0013] 优选的,所述步骤三具体为:在增强现实系统启动的初始阶段记录设备的一次方向数值,作为校正的标准即原始数值,之后每一帧都会获取一次方向数值,并与原始数值比较,如果数值相同或在一段可允许的波动范围内则判定设备已回归到初始位置,于是将虚拟摄像机恢复到初始位置,并归零之前计算积累的旋转角度值。
[0014] 优选的,上述数值相同或在一段可允许的波动范围内则判定实际设备已回归到初始位置中,波动范围为+2°。
[0015] 本发明的技术方案具有以下有益效果:
[0016] 本发明的技术方案,利用事前获取的虚实之间的角度关系作为一种新型的视觉信息,通过Gyroscope传感器连接虚拟摄像机与实际摄像头,从而实现一套基于混合式跟踪注册的定点移动增强现实方法,从而克服了现有技术存在的硬件局限性、计算量大以及造成现实场景的不自然性和不和谐感的问题。
[0017] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

[0018] 图1为本发明实施例所述的第一格画面;
[0019] 图2为本发明实施例所述的手机向右30°画面;
[0020] 图3为本发明实施例所述的手机向左30°画面;
[0021] 图4和图5为手机向左40°画面;
[0022] 图6a为手机0°画面;
[0023] 图6b为Unity中0°画面;
[0024] 图7a为手机向左30°画面;
[0025] 图7b为Unity中向左30°画面;
[0026] 图8a为手机向左45°画面;
[0027] 图8b为Unity中向左45°画面;
[0028] 图9a为手机向左60°画面;
[0029] 图9b为Unity中向左60°画面;
[0030] 图10a为手机向右30°画面;
[0031] 图10b为Unity中向右30°画面;
[0032] 图11a为手机向右45°画面;
[0033] 图11b为Unity中向右45°画面;
[0034] 图12a为手机向右60°画面;
[0035] 图12b为Unity中向右60°画面;
[0036] 图13为本发明实施例所述的结合传感器与Unity3D的定点移动增强现实方法的流程图。

具体实施方式

[0037] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0038] 如图13所示,一种结合传感器与Unity3D的定点移动增强现实方法,包括,[0039] 步骤一、利用Unity3D中的WebCamTexture类获取摄像头图像,从而实时地将摄像头捕捉到的图像作为纹理贴到虚拟场景的物体上,实现增强现实系统中实际场景的获取,从而把现实场景与虚拟场景放在同一个空间内;
[0040] 步骤二、利用设备中的Gyroscope传感器控制虚拟摄像机在虚拟场景中的绕轴旋转动作,从而实现虚拟摄像机与实际设备同步同姿态的运动;
[0041] 步骤三、利用设备中的Orientation传感器进行设备方向偏差上的校正,对上述Gyroscope传感器产生的硬件误差进行校正。
[0042] 步骤一具体为:创建Plane平面,且该Plane平面铺满整个设备显示屏,将获取的摄像头图像贴在Plane平面上,从而将获取的摄像头图像映射到Plane平面。
[0043] 步骤二具体为:用Gyroscope传感器获取的设备角加速度值控制虚拟摄像机的旋转运动,即定义一个公共类型的对象变量来装载虚拟摄像机,在对象变量内有一个控制对象旋转的旋转变量,可以用来操控摄像机的绕轴运动,根据虚拟摄像机在Unity3D中的三轴位置关系,将Gyroscope传感器x、y、z上的值对应地分别赋给旋转变量。
[0044] 使用Gyroscope传感器获取的设备角加速度值判断设备运动的判断条件为,前后两帧角加速度绝对差值以0.01为界,大于0.01则判定设备处于运动状态,反之则处于静止状态。
[0045] 步骤三具体为:在增强现实系统启动的初始阶段记录设备的一次方向数值,作为校正的标准即原始数值,之后每一帧都会获取一次方向数值,并与原始数值比较,如果数值相同或在一段可允许的波动范围内则判定设备已回归到初始位置,于是将虚拟摄像机恢复到初始位置,并归零之前计算积累的旋转角度值。数值相同或在一段可允许的波动范围内则判定实际设备已回归到初始位置中,波动范围为+2°。
[0046] 本发明技术方案具体实施如下:
[0047] (1)使用WebCamTexture类获取摄像头图像。WebCamTexture是Unity3D中属于Texture的一种特殊贴图,可以实时地将摄像头捕捉到的图像作为纹理贴到物体上。本技术方案中将获取的摄像头图像贴在事先定义的Plane平面上。在创建平面时,只需要将其尺寸拉至全屏大小,即铺满整个显示屏。这样,当摄像头图像映射到平面时,显示出来的效果如同没有经过平面贴图而是直接用摄像头拍摄后看到的一样。之所以需要进行这步处理,是因为在Unity中无法将摄像头拍摄到的图像直接显示在屏幕上。除此之外,为了之后可以更方便地对真实场景进行增强现实的效果,把现实场景与虚拟物体放在同一个空间,易于操作并查看效果。
[0048] (2)利用Gyroscope传感器获得设备旋转运动属性。由于Gyroscope传感器可以较为精确的给出设备实时的角加速度值,因此可以直接使用这些值来粗略地控制虚拟摄像机的旋转运动。在Unity3D的系统中,具体做法是:定义一个公共类型的对象变量来装载虚拟摄像机,在虚拟摄像机的变换属性中有一个控制对象旋转的变量,可以用来操控摄像机的绕轴运动。接下来只要根据虚拟摄像机在Unity中的三轴位置关系,将Gyroscope传感器x、y、z上的值对应地分别赋给旋转变量即可。需要注意的是,在程序设置中,一般将设备的运行姿势设定为landscape left,即测试手机的home键处于右方向。例如:实际设备左右旋转运动时,Gyroscope传感器显示的是x上的数值发生变化。为了使虚拟摄像机与实际设备同步同姿态的运动,那么在Unity中应让摄像机围绕y轴运动,即旋转变量中的y值变化,所以在编写控制代码时要将Gyroscope的x值赋给旋转变量的y值。在使用Gyroscope传感器控制虚拟摄像机的旋转运动后,为了获知设备实时的旋转姿态,以便之后触发隐藏的虚拟物体出现,需要对设备在三轴上的具体旋转角度值进行计算。计算中假定设备每一帧的旋转运动为匀速运动(由于每帧时间长度极短,可以做这样的假设),则三轴上每帧的旋转量分别为R=r*t,其中r为用Gyroscope传感器获取的三轴上每帧初始角加速度。
[0049] (3)利用Orientation传感器进行设备方向偏差上的校正。由于Gyroscope传感器会受到周围噪声的干扰而出现数值上的波动,因此在计算前需要进行一个预判。经过测试发现,Gyroscope传感器受环境影响而产生波动时的变化位数大概为小数点的后两位或更后面的小数位。因此,在设置判断条件时,前后两帧角加速度绝对差值以0.01为界,大于0.01则判定设备处于运动状态,反之则处于静止状态。另外,由于Gyroscope传感器随着使用时间的增长,会产生不可避免的硬件误差,从而导致计算的角度值越来越不精确。因此需要使用Orientation传感器每隔一段时间,进行一次方向上的校正。因为Orientation传感器是根据地磁场测量的绝对方向值,不会产生较大的错误。具体的矫正方法是:在程序刚启动的初始阶段会记录设备的一次方向数值,作为校正的标准。之后每一帧都会获取一次方向数值,并与原始数值比较,如果数值相同或在一段可允许的波动范围内(本系统以+2°作为可允许波动范围),则判定实际设备已回归到初始位置,于是将虚拟摄像机也恢复到初始位置,并归零之前计算积累的旋转角度值。通过这个方法,可以较为精确地控制虚拟场景与现实场景的吻合度,使虚拟与现实场景可以和谐的“相处”。
[0050] 为了验证本发明技术方案的实际应用效果,我们设定程序的测试平台为安卓系统,以三星SCH-N719手机为测试设备,设定程序的测试平台为安卓系统,对该系统进行了相关实验。实验中用于程序建模的软件为Unity3D,版本为5.0.0f4,并以Unity配套的编辑软件Monodevelop进行编程。另外,利用Autodesk 3ds Max 2012 32-bit - Simplified Chinese软件进行虚拟场景及物体的建模,最后通过Android SDK软件将程序发布到手机上完成测试。
[0051] 实验中设置了三部分虚拟场景,具体内容如下:
[0052] 1、正面(即程序开始后的第一格画面):不停走路的女人,如图1所示;
[0053] 2、右面30°到60°的范围内:树下两只相互对撞的兔子,如图2所示;
[0054] 3、左面30°到60°的范围内:树下的狐狸,如图3所示。
[0055] 程序中设置,当手机向左旋转的角度在35°到55°之间时,原本不动的狐狸会开始运动,如图4和图5所示。
[0056] 为了证明虚拟场景在手机中的出现位置与在Unity中安排的位置相同,下面将从左右两个方向,在0°、30°、45°、60°四种不同角度来进行论证:如图6a至图12b所示。
[0057] 本发明技术方案中的设备包括智能移动设备,如手机、平板等。
[0058] Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具。
[0059] 综上所述,本发明技术方案具有以下特点:
[0060] 1)利用Unity3D中WebCamTexture类实现增强现实系统中实际场景的获取,因为把现实场景与虚拟物体放在同一个空间内,让制作者能够易于操作并查看效果;2)利用Gyroscope传感器控制虚拟摄像机在虚拟场景中的绕轴旋转动作,鉴于Gyroscope传感器可以较为精确的给出设备实时的角加速度值,因此可以直接使用这些值来粗略地操作虚拟摄像机的旋转运动,从而实现虚拟摄像机与实际设备同步同姿态的运动;3)利用Orientation传感器进行设备方向偏差上的校正,解决了Gyroscope传感器由于长时间使用而产生不可避免的硬件误差的问题,从而维持了角度计算值的误差保持在一个合理的范围内,让虚拟与现实场景以一个和谐的方式相处;4)结合智能移动设备中的传感器模块,以Unity3D作为综合处理平台实现一个可以兼容多平台、多操作系统运行的定点式移动增强现实系统。
[0061] 最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。