一种基于增强现实技术的地理信息显示方法_2

文档序号:9578539阅读:来源:国知局
57] 附图9是手机空间直角坐标系示意图;
[0058] 附图10是手机姿态角定义图;
[0059] 附图11是摄像机C、采集点B与基准点A在横截方向的几何关系图;
【具体实施方式】
[0060] 下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0061] 实施例:
[0062] 本实施例采用虚拟现实技术实现地物标签的展示,提且提供了一种地物标签位置 信息的显示和采集方案。本实施例中,这两种方案是结合使用的,从而使终即能显示地物标 签,又能采集地物信息。下面分别介绍显示和采集。
[0063] 一、地物标签显示
[0064] 将地物标签显示在三维场景中之前,需要先生成标签的图像数据,图像数据是一 个有填充色的矩形,矩形内有文字说明这个地物的地理信息,例如地物的名称、地址等。使 用OpenGL绘制标签的时候,画笔的朝向始终与东西方向垂直,也就是如果不作方向变换的 话,会绘制成附图1这种情况。所以我们要将绘制出来的标签旋转一个角度,使得每个标签 平面都面对手机,如图2所示。
[0065] 为达到上述效果,地物标签图像数据成功生成后,需要计算图片在三维场景中绕Z 轴旋转的角度,使图像平面法线方向指向手机位置C,如图3所示,线段AA'和线段BB'代表 两个地物的标签图像,线段ΑζΑζ'代表地物A标签图像平面的法方向,角RA表示地物A标 签图像需要旋转的角度。同理,线段BzBz'代表地物B标签图像平面的法方向,角RB表示 地物B标签图像需要旋转的角度。
[0066] 旋转角度的计算可以通过手机和地物的坐标来计算。首先,要建立手机三维坐标 系,将手机和待显示地物的经炜度坐标映射到手机三维坐标系中,然后根三维坐标系中的 手机坐标和地物坐标生成用于旋转地物标签的旋转矩阵,绘制地物标签并利用所述旋转矩 阵旋转地物标签至地物标签的平面法线方向指向手机所在位置。
[0067] 将经炜度坐标映射为手机三维坐标系的公式如下:
[0068] X=cos(B)Xcos(L)XH
[0069] Y=cos(B)Xsin(L)XH
[0070]Z=sin(B)XH
[0071] 式中,(X,Y,Z)是手机三维坐标系下的坐标,BLH是经炜度坐标中的经度、炜度和 高程。
[0072] 旋转矩阵的计算主要依靠地物和手机之间的位置,主要步骤如下:
[0073] 首先,基于下式计算地物A与手机C的距离L,
[0074]
[0075] 式中,(Ax,Ay)和(Cx,Cy)分别为地物A和手机C在手机三维坐标系中的坐标;
[0076] 然后,基于距离L以及地物A与手机C的坐标构造旋转矩阵R_A如下:
[0077]
[0078] 在OpenGL中绘制标签时,并不是直接使用旋转矩阵来对标签进行旋转,这里需 要再利用旋转矩阵构造一个绘制矩阵,利用绘制矩阵把标签的朝向转向手机,使得每个标 签的法线都指向手机,这样手机在旋转的过程中,才能看到正面对着用户的标签,而不是斜 面。
[0079] 绘制矩阵的构造如下:
[0080]
[0081]即将3维的R_A矩阵转换为一个4维的绘制矩阵,其转换过程只需要将第4行第 4列的元素设为1,其余最后一列的前三个元素,以及最后一行的前三个元素均填充为零即 可。
[0082] 在获得了绘制矩阵后,就可以调用OpenGL的绘制函数来绘制标签,步骤如下:
[0083] 步骤1,设置绘制坐标系朝向,此时,调用的函数为:gl.glMultMatrixf(mD, 0);
[0084] 步骤2,绘制标签,设置坐标数组,此时,调用的函数为: gl.glVertexPointer(3,GL10.GL_FIXED, 0,VertexBuffer);其中,VertexBuffer为标签角 点坐标数组;
[0085] 步骤3,绘制标签图像,其中,TextureBuffer为纹理角点坐标数组,bitmap为标签 纹理图像,调用的函数如下:
[0086] gl.glTexCoordPointer(2,GL10.GL_FL0AT, 0,TextureBuffer);
[0087]gl.glBindTexture(GL10.GL_TEXTURE_2D,bitmap);
[0088] gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 6);
[0089] 通过以上步骤,绘制出的地物标签均指向于用户,如图2所示。
[0090] 由于手机坐标系的轴向是基于手机竖直放置时设定的,而在现实场景中,应 用需要将手机横屏放置来符合人们的拍照操作习惯,此时,在构造绘制矩阵之前,需要 将旋转矩阵R_A进一步转化为适合横屏使用的旋转矩阵R_p。可使用安卓内置算法, 利用R_A矩阵参数执行手机竖屏坐标系到手机横屏坐标系的转换:SensorManager. remapCoordinateSystem(R_A,SensorManager.AXIS_Z,SensorManager.AXIS_MINUS_X,R_ P)。在得到R_P后,再利用R_P来构造绘制矩阵。
[0091] 在使用OpenGl绘制标签时,因为三维场景属于透视投影,为了避免近大远小的情 况出现,还需要对距离相机位置C较远的地物标签作放大处理,放大的比例与地物A和手机 位置C之间的距离L成正相关关系。要执行放大步骤,则使用以下方式来构造绘制矩阵:
[0092]
[0093] 其中,P为比例因子,P=Lt/L,Lt为常数,一般取值为300。采用上述方法后,在 手机上显示的地物标签如图4-5所示。
[0094] 二、地理信息采集
[0095] 本发明的地理信息采集方法中,需要一台具备GPS传感器、姿态传感器(方向传感 器、陀螺仪)、运动传感器(方向传感器)的移动设备,并安装具有传感器坐标采集的应用程 序。
[0096] 当用户启动传感器坐标采集功能时,应用程序将打开摄像头并启动GPS定位功 能;待用户设置相机高后,应用程序进入传感器坐标采集状态,如图6所示。用户将屏幕中 的十字丝准心(图6中间箭头位置)照准采集点,点击右下角红色按钮,即可完成一个坐标 点的采集工作。
[0097] 下面详细介绍本实施例的具体原理。
[0098] 1、坐标推导原理
[0099] 如图7所示,确定直角坐标系中一个坐标点(B)相对于另外一个已知坐标点(A) 的相对位置时,需要提供两个参数:方位角(Az)、距离(L)。
[0100] 根据三角关系原理,B点的绝对坐标推算公式如下:
[0101] Bx=Ax+LXsin(Az)
[0102] By=Ay+LXcos(Az)
[0103] 其中,x轴自西向东,y轴自南向北,Bx和By分别为B点的x坐标和y坐标,Ax和 Ay分别为A点的X坐标和y坐标。
[0104] 即当已知至少一个基准点的坐标时,目标点的坐标计算需要方位角(Az)和距离 (L)即可计算得出。计算多个目标点的坐标时,确定所有坐标点的方位角(Az)和距离(L) 后,逐个结算,如图8所示。
[0105] 根据上述,坐标B与坐标C的绝对坐标推算公式如下:
[0106] Bx=Ax+LiXsin(Az^
[0107] By=Ay+LiXcos(Az^
[0108] Cx=Ax+L2Xsin(Az2)
[0109]Cy=Ay+L2Xcos(Az2)
[0110] 2、移动终端实现原理
[0111] 移动端实现传感器采点法坐标计算分为三个个步骤:确定目标点的方位角(Az), 确定目标点到已知点的距离(L)以及确定基准点平面坐标(A)。
[0112] 方位角(Az)通过手机方向传感器直接获取;距离(L)结合手机传感器获得的翻滚 角(Roll)和用户设置的相机高计算得出;基准点坐标通过AGPS技术得出。
[0113] 2. 1手机坐标系建立
[0114] 首先,为手机建立空间直角坐标系,手机屏幕朝向天顶,手机顶部朝向磁北。其中, X轴自左向右;y轴自手机底部向手机顶部;Z轴自手机背面向手机正面,如图9所示。
[0115] 参考摄影测量頂U系统传感器姿态角的表
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1