增强现实环境下虚实物体遮挡判断方法研究

减小字体 增大字体 作者:俞文炯 何汉武 吴悦明  来源:www.zhonghualunwen.com  发布时间:2009-10-12 14:59:37

  
  0 引言
  
  增强现实技术(augment reality, AR)是借助三维显示技术,交互技术、多种传感技术、计算机视觉技术以及多媒体技术,把由计算机生成的二维或三维的虚拟信息融合到用户所要体验的真实环境中的一种技术,其目的在于实现对现实世界信息的补充,令用户从感官效果上确信虚拟环境是周围真实环境的组成部分[1~3]。在增强现实的环境中,使用者将计算机生成的增强信息实时地叠加到真实场景中。这种增强的信息包括虚拟物体和非几何信息。
  在增强现实系统中,真实物体与虚拟物体之间正确的遮挡关系是判断增强现实系统真实感强弱,使用户在与增强现实环境的交互过程中实现临场感强以及正确操作的关键技术之一。然而大多数增强现实系统只是简单地将虚拟物体叠加到真实场景中。图1为从不同视角观察手与苹果的位置关系。苹果是通过计算机系统生成的虚拟物体,其他物体(包括手)都是真实的物体。图1(a)中手在苹果前方,(b)中由于没有正确处理手与苹果的遮挡关系,导致手被虚拟的苹果遮挡,使用户错误地认为苹果是放置在手的前方。
  错误的遮挡关系容易导致用户在空间位置上的错乱和感官上的错判,严重影响用户与场景的正确交互,因此虚实物体间正确的遮挡关系对增强现实系统来说至关重要。
  朱杰杰等人[4]通过求解物体的深度信息判断遮挡关系,生成遮挡判断后的合成图像。该方法不适用于部分遮挡、部分不遮挡的变形物体。Yokoya等人[5]根据立体视觉计算出真实场景图像上物体的深度信息。由于深度信息求解的计算量大,求解只局限于绘制虚拟物体所在的区域内。倪剑等人[6]通过对深度信息建立稠密图,来判断遮挡关系。
  本文研究了两种虚实物体融合方法:基于三角面片的虚拟物体重构方法通过对组成虚拟物体的三角面片集合进行穿越测试和深度测试来重构虚拟物体;基于虚拟模型的虚实融合方法通过对可能发生遮挡关系的真实物体建立虚拟模型,把遮挡关系判断变换为虚拟物体与虚拟物体之间发生判断实现虚实物体融合。在发生遮挡判断的虚拟模型三角面片顶点数较少时,采用两种方法都可以。在模型顶点数较多情况下,采用后者的方法计算量小,实时性好。
  
  1 基于三角面片的虚拟物体重构
  
  由于三维物体的网格模型大部分由三角面片构成,即使原始模型是多边形网格,也可以对其进行三角化。本文通过三角面片穿越测试以及深度测试来判断三角面片是否可见,最后由通过测试的三角面片集合重构虚拟物体,达到虚实物体融合的效果。
  虚拟物体重构过程如图2所示。以下是主要实现步骤。
  1.1 获取真实物体二维投影坐标集合
  物体在摄像头投影平面的坐标集合采用层次包围盒方法中的AABB包围盒的方法[7]。该方法只需求出构成物体的基本几何元素集合中每个元素的顶点坐标在x、y轴上的最大值和最小值,计算速度快。图3为盘子W在T1时刻所处的位置,矩形ABCD关于原点对称,为W的包围盒,假设标志物A所在的中心O(x,y,z)为盘子W的坐标系原点。T2时,W所在位置如图3(a)所示,点O′(x′,y′,z′)坐标可由式(1)得到。
  X′Y′Z′1=TXYZ1(1)
  其中T为W在摄像头坐标系下的4×4旋转平移矩阵。假设Hx、Hy为光栅在轴x,y方向上的扫描间距,其值越小计算速度越慢,得到的显示效果更佳,这里均取为1,则物体W在摄像头坐标系下二维平面的坐标集合S可以简单地由式(2)得到。
  Sij=xo′+iHxyo′+jHy(2)
  其中:i∈(-a/Hx,a/Hx)∪i∈R,j∈(-b/Hy,b/Hy)∪j∈R。
  1.2 三角面片穿越测试
  图4中射线L通过视点与真实物体集合S中的点Si,如果射线L穿过三角面片,则表示该三角面片与真实物体发生了遮挡。
  远平面F和近平面N分别为视见体的两个远近平面,平面R为真实物体二维平面坐标集合所在的平面,平面V为虚拟物体三角面片集合中Mi所在的二维平面。假设组成虚拟物体的三角面片集合可由式(3)得到。
  F=Mi,Mi∈M,i=1,2,3,…,n(3)
     其中M为三角面片单元。由点Si反求得到该点在近平面N坐标点A和远平面F坐标点B,通过点A和B,得到穿过点Si和视点的射线L方程。
  射线L与三角面片相交测试可转换为判断射线L与三角面片所在平面交点P是否在三角面片内。Moller和Trumbore(1997)提出将线性对象定义为一个基点和一个方向向量[8]来判断交点P是否在三角面片内,这是由三个具有三个未知数的方程组成的线性系统。另一种方法是将射线与包含三角形的平面相交,再确定交点是否位于三角形之内。上述两种算法计算过于复杂,程序运行速度较慢。
  考虑算法的复杂性对运行效率的影响,采用如下近似方法。图5中,由三角面片三个顶点M1、M2、M3的坐标求得近似的三角面片Mi中心点O(x,y,z)可由式(4)得到。
  xoyozo=(xM1+xM2+xM3)/3(yM1+yM2+yM3)/3(zM1+zM2+zM3)/3(4)
  三角面片Mi近似中心点O到近平面N上的点A的距离loa由式(5)得到。
  loa=(xo-xA)2+(yo-yA)2+(zo-zA)2(5)
  三角面片Mi中心点O到直线L的距离H由式(6)得到。
  H=loa(1-cos2θ)(6)
  假设距离H近似于三角面片Mi的中心点O到射线L与平面V的交点P连线的距离,如果H小于等于三角面片的外接圆半径R,则该光束穿过三角面片Mi,继续对集合S中的其余点进行穿越测试。只有都通过测试后,该三角面片继续作深度测试。否则在集合F中去除该三角面片Mi,并选取其余的三角面片作穿越测试。

[1] [2] [3]  下一页

Tags:

作者:俞文炯 何汉武 吴悦明
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论