一种智能机增强现实实现方法
技术领域
本发明涉及信息技术领域,具体涉及一种智能机增强现实实现方法。
背景技术
增强现实技术是将虚拟的目标标签叠加到现实场景中,提示信息给用户,并能支持用户与其进行交互。
近年来GPS,北斗定位技术日益成熟和受到关注。然而由于智能机姿态不一样,同样的定位位置看到的现实场景不一样,智能机姿态的精度影响导航路径方向的精度,避免南辕北辙,因此智能机姿态的精确测定具有同样重要的意义。
传统技术无法适应增强现实和任意姿态高精度导航需求。因为传统智能机姿态测定主要依赖方向传感器的单轴航向角信息,对智能机姿态摆放有特定要求,比如要求智能机摆放姿态平行于地面,或垂直于地面,而各种实际情况中用户手持智能机的姿态千变万化,用户手持或车载智能机并不一定严格平行或者垂直于地面,这将导致导航方位不准,此外用户增强现实应用中对智能机姿态精度的要求也越来越高,因此迫切需要一种考虑智能机X-Y-Z三轴旋转的姿态测定算法。
传统的以经纬度建立的2维坐标系进行定向和定位的技术,在纬度30度附近的中国区域近似正确,但在高纬度和赤道附近的其他国家和地区,则会出现较大误差。在增强现实应用中出现拍摄目标与其叠加标签的位置出现偏差会极大的影响用户体验。因此建立一种严谨支持全球任意区域的更加精确的增强现实三维定位方法是很有必要的。
基于位置的服务LBS日益受关注,但用户更关心的不仅是位置,而是自己与目标间的方向和距离。很多老年人和方向感不强的人很难将实际看到的生活场景与地图中的东南西北联系在一起,因此智能机任意角度摆放情况下,叠加在实景视频上的目标信息及其相关服务将给用户带来所见即所指的极大便利,将成为未来信息服务的发展新趋势,我们将这种服务称为“智能机全方位信息叠加服务”。
应用:
1.为商铺以及供需双方发布相对于其他海量用户的方位和距离提供视觉叠加;
2.为用户相对于指定地名,指定单位的方位与距离提供视觉叠加服务;
3.为用户之间相互联络提供方位和距离视觉叠加;
4.为车、船、物流提供货物相对于目的地的方位和距离视觉叠加。
传统的导航服务是地图导航服务,用户看到的是地图,用户需要费力的去把实景与地图联想起来才能得到正确的方向。另外传统的地图服务的更新主要是服务上定期下载,缺少用户的参与,不是动态的。
传统的姿态检测技术主要用于飞机,汽车等大型设备,追求很高精度,用于军事、工业等领域,而且非常贵重,而本发明主要考虑用廉价的智能机终端实现普通个人周边地区的视频信息叠加服务。
本发明不仅考虑方向传感器的value[0]得到的航向角,在有其他传感器,如重力加速度磁力计和陀螺仪情况下,还考虑了其他几种姿态传感器捕获到的数据,使得检测到的姿态更加精确,在没有这些传感器条件下也能得到粗略姿态。智能机的姿态对于全方位信息叠加有着重要作用。本发明可以在智能机,诸如Andriod,苹果系统上方便地实现查找好友,商铺的位置,商铺广告信息的叠加发布等功能。
本发明提供的是基于视频的实景智能机全方位信息叠加服务,用户看到的是智能机载相机拍摄的实景图像,地名,方向、用户需要查找的地名都可以在实景视频图像上作标注,智能机用户(手机、平板电脑或相机)客户端之间也可以进行方便的用视频实景预览观察相互之间的位置、方位关系。这样就为用户提供了一种非常便捷、直观的可视化信息服务,同时商铺也能借助服务平台广泛发布其广告信息。
本发明中智能机的含义包括内置相机、视频的手机系统,内置网络IP的摄像头系统,内置网络IP的相机系统,IPhone,平板电脑,以及各种同时植入摄像机和网络IP的系统等。
发明内容
本发明所要解决的问题是提供一种智能机增强现实实现方法,该方法可使用户在智能机上获得便捷、直观的可视化信息。
本发明提供的技术方案是,一种智能机增强现实实现方法,包括以下步骤:
1)通过智能机获取智能机周边目标i在局部坐标系的三维坐标(Xi,Yi,Zi);
其中局部坐标系是指原点在智能机,Z轴指向地球表面法方向,Y轴或X轴与纬线相平行的坐标系;
上述三维坐标(Xi,Yi,Zi)中的Xi,Yi,Zi可通过如下转换方法获取:
其中Rv=
θa是智能机纬度,是智能机经度;
Ti是目标i的地球坐标, 可通过地图资料预先测定得到或采用现有的已标定数据;
Ts是智能机的地球坐标,可通过智能机上的GPS信号接收模块或北斗接收模块获取:
Rearth是地球半径
ha是目标的高度
以上是球模型公式,也可以采用更加精确的地球模型公式,如椭球模型公式。
2)智能机系统的信息叠加:
确定目标i(Xi,Yi,Zi)在视频帧图像中显示的位置;在智能机可视化窗口中的目标i位置(ui,vi )处叠加显示目标i的信息和目标i相对智能机所在位置的距离Li;
其中Li=;
目标i(Xi,Yi,Zi)在视频帧图像中显示的位置(ui,vi)的确定:
(1)将智能机上摄像头的姿态矩阵R=和位移矢量T=设置为用于叠加显示的智能机模型绘制矩阵;
(2)(ui,vi)按如下公式计算:
(1)式中:
ZOi=
fx,fy为摄像头内部参数中的焦距像素长度, cx,cy为摄像头内部参数中的主点;
、 、、 、 、 、 、 和由下式得到:
其中R为智能机的摄像头的姿态矩阵,R=∆R×Rg;
∆R为智能机的摄像头姿态矩阵R和智能机姿态矩阵Rg之间的一个固定的方向的转换,取∆R=
Rg由下法之一获得:
方法一:在智能机仅有方向传感器的情况下
Rg=
其中,是方向传感器的航向角value[0]、θx是方向传感器的俯仰角、θy是方向传感器的翻滚角;
方法二:在智能机有重力传感器,同时有磁力计或方向传感器情况下
Rg=
其中
Rθ=
、、是智能机测出来的智能机所在位置的重力加速度的x、y、z局部坐标系下三个方向的分量,
L=
若智能机检测到的重力加速度传感器定义为负值:
当≤0时,s = 1,az>0时,s = -1;
若智能机检测到的重力加速度传感器定义为正值:
当≤0时,s = -1,az>0时,s = 1;
若采用方向传感器:= value[0];
若采用磁力计:磁力计检测到磁力方向m={mx,my,mz},计算
=
利用磁力计计算方位角的三角函数为:
通过上述步骤得到Rg,进而带入公式(1)得到目标i的像坐标ui,vi, 就可以在ui,vi处增强显示目标i的信息。在ui,vi或者ui,vi附近的位置,以标签字符串或纹理的形式显示目标i的名称或属性。或者用箭头将标签或纹理指向ui,vi坐标。
上述步骤2)中的目标i的信息包括目标i的名称、符号、角度 和/或高度。
步骤2)得到目标i的像坐标ui,vi坐标之后,在智能机屏幕坐标ui,vi区域附近设置感应区,等待接收用户触摸该区域的事件。当用户在智能机上点击ui,vi附近区域的时候,将执行与目标i相关联的操作。包括以下操作之一:
1.弹出目标i更详细的广告信息,资费信息,需求信息, 人气值;
2.向目标i发端信或者聊天或者打电话;
3.弹出与目标i关联的菜单或对话框;
4.向目标i发送请求;
5.获取目标i的数据;
6.向服务器发请求,使得目标i的人气值增加;
7.向服务器发请求,记录本次操作。
基于相同的构思,本发明还提供了一种智能机增强现实实现方法,包括以下步骤:
一、通过智能机获取智能机周边目标i在局部坐标系中的三维坐标(Xi,Yi,Zi);其中局部坐标系是指原点在智能机,Z轴指向地球表面法方向, Y轴或X轴与纬线相平行的坐标系;
上述三维坐标(Xi,Yi,Zi)中的Xi,Yi,Zi由下法得到:
其中Rv=
θa是智能机纬度,是智能机经度;
Ti是目标i的地球坐标;Ts是智能机的地球坐标;
二、通过智能机方向传感器的俯仰角value[1]或者智能机重力加速度传感器{ax,ay,az}中的az分量判断智能机是否处于水平放置状态;
若方向传感器的俯仰角的绝对值小于35度,或者重力加速度计中的az分量满足:>0.7,则智能机处于水平放置状态,否则智能机处于非水平状态;
当智能机处于水平放置状态时,在智能机显示屏上按Xi、,Yi坐标标示智能机附近区域的目标i;可以在地图上通过坐标Xi、,Yi坐标叠加目标i的信息。
当智能机处于非水平状态时,按下述进行智能机系统的目标信息叠加:
确定目标i(Xi,Yi,Zi)在视频帧图像中显示的位置;在智能机视频窗口中的目标i位置(ui,vi )处叠加显示目标i的信息;
目标i(Xi,Yi,Zi)在视频帧图像中显示的位置(ui,vi)
按如下公式计算:
式中:
ZOi=
fx,fy为摄像头内部参数中的焦距像素长度, cx,cy为摄像头内部参数中的主点;
、 、、 、 、 、 、 和由下式得到:
其中R为智能机的摄像头的姿态矩阵,R=∆R×Rg;
∆R为智能机的摄像头姿态矩阵R和智能机姿态矩阵Rg之间的一个固定的方向的转换,取∆R=
Rg由下法之一获得:
方法一:在智能机仅有方向传感器的情况下
Rg=
其中是智能机的航向角value[0]、θx是智能机的俯仰角、θy是智能机的翻滚角;
方法二:在智能机有重力传感器,同时有磁力计或方向传感器情况下
Rg=
其中
Rθ=
、、是智能机测出来的智能机所在位置的重力加速度的x、y、z在局部坐标系下的三个方向的分量,
L=
若智能机检测到的重力加速度传感器定义为负值:
当≤0时,s = 1,az>0时,s = -1;
若智能机检测到的重力加速度传感器定义为正值:
当≤0时,s = -1,az>0时,s = 1;
若采用方向传感器:= value[0];
若采用磁力计传感器:检测到磁力传感器矢量m={mx,my,mz},计算
=
利用磁力计直接计算航向角的三角函数为:
。
本发明不仅考虑方向传感器的value[0]得到的航向角,在有其他传感器,如重力加速度计,磁力计和陀螺仪情况下,还考虑了其他几种姿态传感器捕获到的数据,使得检测到的姿态更加精确,在没有这些传感器条件下也能得到粗略姿态。智能机的姿态对于全方位信息叠加有着重要作用,用户在三维空间中以任意的姿态摆放智能机都能在叠加信息窗口内观察到周边地理目标的正确方位和距离。本发明可以在智能机,诸如Andriod,苹果系统上方便地实现查找好友,商铺的位置,实现商铺广告信息的叠加发布,摄影测量测绘,实景游戏等功能。
本发明中智能机的含义包括一切包含显示窗口和姿态传感的智能设备,如手机,平板电脑,笔记本电脑,带显示屏和姿态传感的摄像头,相机,可穿戴设备,如眼镜,手套等设备。
本发明提供的是基于视频的实景智能机全方位信息叠加服务,用户看到的是智能机载相机拍摄的实景图像,地名,方向、用户需要查找的地名都可以在实景视频图像上作标注,智能机用户(手机、平板电脑或相机)客户端之间也可以方便的用视频实景预览观察相互之间的位置、方位关系。这样就为用户提供了一种非常便捷、直观的可视化信息服务,同时商铺也能借助服务平台广泛发布其广告信息。
本发明智能机姿态测定,其中利用方向传感器最简单,但稳定性和精度较差;若采样加速度计和磁力计配合,精度要比单独利用方向传感器高很多。
附图说明
图1为本发明手机坐标系图;其中屏幕正面z>0;
图2为相机坐标系图,摄像头拍摄方向z>0。
具体实施方式
本发明包括智能机周边地理数据的上传,智能机周边地理数据的获取及显示两大部分,智能机周边地理数据中需要用到智能机姿态矩阵R的计算方法。
智能机周边地理数据的上传
智能机将目标名称与本地经纬度,高程信息绑定在一起发送到服务器,服务器将绑定有单位名称、经纬度,高程信息的数据保存到数据库,数据库以经纬度为索引进行保存以便实现快速索引查找。
智能机周边地理数据的获取及显示
智能机有两种方法获取周边数据:
1.智能机将本地经纬度,高程信息周期性发到服务器,服务器收到以后查询改经纬度的周边目标列表信息,反馈包含GPS坐标的周边目标列表信息到客户端。
2.智能机定期从服务器下更新周边数据,在本地查找周边目标的位置信息和名称。
客户端收到周边目标列表信息中的经纬度、高程h后,通过现有技术转换成某个目标的三维地理坐标X,Y,Z。
客户端本身获取自身的经纬度、高程hs后,通过现有技术转换成某个目标的三维地理坐标Xs,Ys,Zs。
普通智能机系统的信息叠加方法
在其摄像头视频预览中动态叠加显示周边目标的信息。每个目标X,Y,Z在视频帧图像中显示的位置按如下公式计算:
假设
其中ZO= fx,fy为摄像头内参焦距,可选取 cx,cy为摄像头内参主点,可近似选取图像中心。
描述智能机载摄像机的姿态矩阵R=∆RRg
其中Rg用后面“智能机姿态矩阵Rg的计算”一节描述的方法实现。
∆R在“检校相机摄像头光心与视觉叠加客户端之间的位置关系”一节中作了定义。 在坐标u,v位置显示该目标X,Y,Z的信息,采用如下步骤实现:
1.根据上述“智能机姿态矩阵R的计算”介绍的方法得到相机的姿态矩阵R
2.根据“检校相机摄像头光心与视觉叠加客户端之间的位置关系”一节介绍的方法得到智能机相机的坐标Xs, Ys, Zs
3.逐个遍历周边数据集S中的每一个目标,根据其经纬度转换成局部坐标系3维坐标Xi,Yi,Zi,
4.利用公式 计算得到第i个目标的像坐标ui,vi。
5.将目标i绘制在智能机显示窗口的坐标ui,vi处,在ui,vi或者ui,vi附近的位置,以标签字符串或纹理的形式显示目标i的名称、属性,或者用箭头将标签或纹理指向ui,vi坐标。
6.将坐标系还原到地球坐标系,回到第3步,直到周边数据集S全部绘制完。
周边信息数据缓存
客户端的搜集到的周边目标集合U可按照某一关于客户端特性的函数F从大到小排序的,假设显示缓存长度最大是N,显示的时候从0~N-1循环遍历U中每一个不重复的目标,判断是否在图像视野范围内,若在,则搜集到集合S,当集合S大小超过单帧最大显示总数M,或者整个N长度全部遍历完了,则刷新显示S集合里每一个目标。
有OpenGL或者高版本OpenES的智能机系统的信息叠加方法可用上述”普通智能机系统的信息叠加方法”描述的方法,确定的目标在视频图像上叠加的位置进行叠加显示。也可以在有OpenGL或者高版本OpenES的智能机系统中采用如下步骤:实现
1.根据“智能机姿态矩阵R的计算”一节介绍的方法得到相机的姿态矩阵R;
2.根据下述“检校相机摄像头光心与视觉叠加客户端之间的位置关系”介绍的方法得到智能机相机的位置T;
3.将相机的R矩阵和T设置为模型绘制矩阵;
4.逐个遍历周边数据集S中的每一个目标,根据其经纬度转换成3维坐标Xi,Yi,Zi,并将模型绘图矩阵转换到Xi,Yi,Zi坐标处;
5.绘制一个对应于该目标的标记,并标上对应于该目标的文字;
6.将坐标系还原到地球坐标系,回到第2步,直到周边数据集S全部绘制完。
智能机姿态矩阵R的计算
姿态矩阵R的计算步骤
第1步初始状态时给定手机姿态Rg矩阵
(1)在仅有方向传感器的情况下
用公式Rg=
其中是方向传感器的value[0],
θxθy分别对应于value[1],value[2]
根据智能机的机型不同和纵屏、横屏显示模式的不同,value[1],value[2]的定义有所不同,有的智能机纵屏时θx= value[1]θy= value[2]横屏时θx= value[2]θx= value[1]
有的智能机则是与上相反的,具体实现要根据不同智能机型号进行具体调整。注:
由于value[1],value[2]容易搞混,也可不考虑智能机的俯仰角和翻滚角,也可近似取θx=θy=0
这样以上公式变成了
Rg =
可标明智能机的航向方向,但用户体验不了俯仰角和翻滚角的叠加效果。
在有重力传感器和磁力计或方向传感器情况下
用公式
Rg=
其中
Rθ=
ax,ay,az是智能机测出来的加速度的三个分量。
L=
当az≤0时 s = 1
az>0时,s = -1
对于有的智能机,正好是反的,则写成
当az≤0时 s = -1
az>0时,s = 1 (1)
若配合采用方向传感器,则方向角value[0]正好就是角。
若配合采用磁力计,假设检测到本体磁力方向m={mx,my,mz},计算
=
因此利用磁力计计算方位角的三角函数为:
可不断的检测重力加速度{ax,ay,az}和磁力计或方向传感器,代入到公式(1) 循环更新R姿态数据。
检校相机摄像头光心与视觉叠加客户端之间的位置关系
由于上述方法只能测得智能机的姿态Rg,而智能机上安装的相机姿态R和Rg之间存在一个固定的方向的转换∆R。同样的智能机上安装的相机位置T和手机GPS转换坐标Tgps之间存在一个固定的方向的转换∆T,可以测得∆T和∆R
那么当以后测得叠加客户端的GPS坐标Tgps陀螺仪姿态Rg时,实际相机的位姿可表示为 T=Tgps+∆T=[Xs Ys Zs]TR=∆RRg=
可通过Tgps-T得到∆T
RRg -1得到∆R
如图1-图2,近似情况下,也可取∆R≈,∆T≈0,那么
T≈Tgps R=≈Rg=
其中Rg=
本发明可通过智能机方向传感器的俯仰角value[1]或者智能机重力加速度传感器{ax,ay,az}中的az分量判断智能机是否处于水平放置状态;
若方向传感器的俯仰角的绝对值小于35度,或者重力加速度计中的az分量满足:>0.7,则智能机处于水平放置状态,否则智能机处于非水平状态;
当智能机处于水平放置状态时,在智能机显示屏上按Xi、,Yi坐标标示智能机附近区域的目标i;可以在地图上通过坐标Xi、,Yi坐标,叠加目标i的信息。
当智能机处于非水平状态时,按下述进行智能机系统的目标信息叠加:
确定目标i(Xi,Yi,Zi)在视频帧图像中显示的位置;在智能机视频窗口中的目标i位置(ui,vi )处叠加显示目标i的信息;
目标i(Xi,Yi,Zi)在视频帧图像中显示的位置(ui,vi)
按如下公式计算:
。