一种基于贝塞尔曲线的多视图投影方法

文档序号:26142784发布日期:2021-08-03 14:27阅读:189来源:国知局
一种基于贝塞尔曲线的多视图投影方法

本发明涉及图像领域,尤其是一种基于贝塞尔曲线的多视图投影方法。



背景技术:

考虑到一种用户与协作者并肩工作的交互式虚拟现实场景。协作者必须能够向用户指示工作区位置,以便让他们在一起工作时都能够看见它。由于他们的视点不同,协作者看到场景的一部分,而用户由于遮挡的存在看不到这部分内容,这样就会引起交流阻断。这样协作者使用虚拟指针指向该部分场景的内容,用户也看不见虚拟指示点。一个可行的解决方案是让用户自由移动让自身能够观察到虚拟指示点,但这需要花费一定的时间和精力,使协作效率不高。另一个可能的解决方案是让用户可以在他的视图和协作者的视图之间切换,然而这有一个缺点,即用户在使用协作者视图时看不见协作者的虚拟化身,例如,根据需要,可以看到协作者所做的手势,这就需要用户在正确的时间在两个视图之间来回切换,这样交流就越趋复杂。



技术实现要素:

为了解决上述技术问题,本发明基于贝塞尔曲线提出了一种新型的多视图投影相机模型,通过减少用户和协作者在观察虚拟现实场景时的差异来改善协作效率。通过该方法向用户展示了虚拟现实的多视图投影视图,从用户的视图逐渐过渡到协作者的视图。基于贝塞尔曲线的多视图投影相机模型将虚拟场景划分为工作区,过渡区和用户区。其中,工作区是用户和协作者共同工作的区域,用户区是离用户最近的部分,该区域包括协作者的虚拟化身,过渡区域是连接工作区和用户区的区域。这样,无论协作者的虚拟指示点在工作区的任何位置,只要协作者能看见它,用户通过使用本发明提出的相机模型对场景进行投影变换后也可以看到虚拟指示点,此外,用户可以根据自身需要通过头部的转动来查看协作者,例如查看协作者的姿势。基于贝塞尔的曲线相机模型是一种新型的带有弯曲光线的相机模型,它将用户和协作者的视图拼接在一起,从而生成多视图投影的可视化效果。虚拟场景首先根据新型相机进行扭曲,然后按照传统投影方法为用户的每个眼睛渲染扭曲后的虚拟场景。

本发明采用的技术方案为:一种基于贝塞尔曲线的多视图投影方法,其中,基于贝塞尔曲线的多视图投影相机模型称为交换相机,基于贝塞尔曲线的多视图投影方法主要包括以下三个步骤:

步骤(1)、计算构造交换相机的参数:视图提供者选择一个工作区的中心o,结合视图提供者的视点位置v2和视图接收者的视点位置v1在同一高度形成一个投影水平面π,在v2o之间按固定比例选取p2,在v1o之间按固定比例选取点p1,p2p1即为贝塞尔曲线的两个端点;

步骤(2)、优化贝塞尔曲线:控制点c2是位于p2v2的方向上的点,c1是位于p1o方向上的点,在p2v2方向上等距离地取c2的150个采样点,在p1o上取c1的100个采样点,进行两两组合,可以得到150*100条不同的贝塞尔曲线,接着对每条曲线进行评估,选择分数最好的那一条曲线作为交换相机的投影曲线;对于每条曲线的评估需要先计算以v1为视点的视景体,在曲线上以p2为起点,以p1为终点,按顺序在贝塞尔曲线上取一定数量的采样点,并且按顺序计算出过采样点的法线nk,即垂直于切线的直线。对于每一条法线,按顺序计算法线与用户视景体的交点,统计出错误交点的个数ek,用所有错误交点数的总和,计算被评估曲线的分数。最终选择分数最高的那一条作为最优解;

步骤(3)、对输入顶点使用交换相机进行投影,对于每一个输入的待渲染几何面片的顶点q,需要判断该顶点所属的区域,根据不同的区域采取不同的投影策略。具体包括:

对于用户区的顶点,不需要做任何变化,以用户的摄像机参数,以v1位视点按透视投影的方式直接投影得到投影点qp;

对于工作区的顶点,不需要做任何变化,以协作者的摄像机的参数,以v2为投影视点按传统的方式投影得到投影点qp;

对于过渡区的顶点,为了在工作区和用户区之间产生连续的变化,需要依赖贝塞尔曲线来投影;记输入的顶点为q,首先基于贝塞尔曲线的参数t通过二分查找法从贝塞尔曲线上找到一个包含点q的垂直平面,计算出一个满足条件的值t计算出垂直平面πt,同时计算出贝塞尔曲线上的对应的点pt和法线nt;然后计算q在平面πt上的以pt为坐标系原点的坐标(xt,yt),然后把(xt,yt)按比例缩小得到q1在π1上以p1为坐标系原点的坐标(x1,y1);其中比例因子f的计算公式为:

f=v1p1/(v2p2+(v1p1-v2p2)t);

在平面π1内以p1为坐标系原点,根据q1的坐标(x1,y1)计算出q1的坐标,最后投影点qp结合用户摄像机的投影参数按传统的投影方式计算得到;

所有三种类型的顶点q的投影点qp的深度z以用户视图下的顶点q的深度作为反投影点q′的深度,最后以用户摄像机的投影参数将qp反投影得到顶点变换的结果q′。

本发明的原理在于:

(1)根据传统的投影方法的投影原理可知视景体的远平面和近平面是通过一条直线相连接,并且该直线过两个平面的中心点,不过两个平面必须是平行的,这条直线就是光线的放射中心线。根据这个原理可以改进为使用一条三次贝塞尔曲线作为光的传播路径连接远平面和近平面,这样两个平面不一定需要平行,且曲线在两个端点处(p2,p1)的切线分别与远平面和近平面垂直。因此可以认为空间中的每一个点首先投影到远平面上,然后沿着贝塞尔曲线投影到近平面上,然后在按传统的投影方法投影到用户最终的视平面上。

(2)一条在视景体内扭曲度较小的贝塞尔曲线作为投影中心线,可以使位于过渡区域内的虚拟场景产生更小的扭曲,使场景具有更好的保真效果。

本发明与现有技术相比的优点在于:

1、与voicu团队提出的graphcamera方法相比,对于工作区的内容,使用相似三角形投影算法使用户和协作者视图对工作区的观察误差达到最小,本方法可以获得误差为零的投影图像,使用户和协作者对场景有相同的理解。

2、与传统的自由移动的方法相比,本方法可以减少用户完成任务的负担,且具有更高的效率。

3、与切换视图的方法相比,本方法可以让用户同时观察到工作区的内容和用户区的内容,而不用频繁地切换视图,另外,本方法可以避免引入协作者视图下的遮挡,可以获得更好的观察效果。

4、本发明提出基于贝塞尔曲线的相机模型,使用户可以平滑过渡到协作者的视图。

附图说明

图1为交换相机的构造和使用的流程图;

图2为交换相机各项参数分布示意图;

图3为交换相机构造伪代码;

图4为存在错误交点的贝塞尔曲线;

图5为不存在错误交点的贝塞尔曲线;

图6为贝塞尔曲线评估伪代码;

图7为交换相机投影算法伪代码;

图8为过渡区域投影示意图;

图9为本方法实际效果图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。

图1是交换相机的构造和使用的流程图,图2为交换相机各项参数分布示意图下,下面结合其他附图及具体实施方式进一步说明本发明。

1、交换相机的构造方法

相机的构造方法的流程如图3所示,构造算法的输入参数包括(1)以用户视点位置v1和视景体f1构成的用户主视图,(2)以协作者视点位置v2和协作者视景体f2构成的协作者主视图,(3)工作区的中心点o,(4)从用户到近平面的距离d1以及(5)从协作者到远平面的距离d2。算法的输出为构造好的相机。

步骤1、以v1,v2,o构造一个平面π,所有的构造参数都会限制在这个平面上;

步骤2、根据用户到近平面的距离d1,v1和o计算近平面π1,p1为v1o与π1的交点;同理根据d2,v2和o计算远平面π2,p2为v2o与π2的交点;

步骤3、计算一条由p1到p2的贝塞尔曲线,该曲线由控制点p2,c2,c1,p1构成。随着p1和p2的确定,选取不同的c1和c2就可以获得不同的贝塞尔曲线;

步骤4、为了从大量的曲线中寻找到符合条件的那一条,设计了枚举算法来枚举每一条曲线并对曲线进行评估,选取获得评分最高的一条曲线。

2、贝塞尔曲线的评估算法

本发明提出的交换相机需要计算一条尽可能平滑的贝塞尔曲线,用来作为过渡区域的投影曲线。如图4所示的贝塞尔曲线存在法线与法线相交的现象,因此该曲线不适合用于构造本发明所提出的相机模型,相反地,图5所示的贝塞尔曲线就是适合用于构造本发明所提出的相机模型。它们的唯一区别在于控制点c1和c2的位置。

在构造算法中通过使用如图6所示的评估流程来找到合适的控制点c1和c2。评估算法的输入包括(1)用户视点位置v1和视景体f1构成的用户主视图,(2)构造的平面π,(3)近平面π1和远平面π2,(4)待评估的贝塞尔曲线b;该算法返回对输入曲线b的评分。具体包括如下步骤:

步骤1、评估算法首先计算四边形l1l2r2r1,图4和图5中均展示了该四边形;

步骤2、从贝塞尔曲线b上选取一定数量的采样点并分别计算这些采样点上的法线在过渡区域内与边l1l2和r1r2的相交情况,统计错误交点的个数e。错误交点指的是超出过渡区域的交点或者比上一条没有产生错误交点的法线更靠近远平面π2的交点。采样点的遍历顺序为p2到p1,计算贝塞尔曲线的参数t由0开始以相同的增量δt进行递增。对于b上的每一个采样点,计算该采样点的法线nk,然后计算该法线与视景体的左右两边直线l1l2和r1r2的交点。法线nk产生的错误交点的个数ek与上一条没有错误的法线ng有关系。由定义可知,第一条法线l2r2是没有产生错误交点的,因此g被初始化为0,第一条法线n0(t=0)没有比较的对象;要完成错误交点的计数,首先需要计算法线nk与视景体的交点,以左边为例,如果交点lk在线段l1l2之外或者与上一条正确的法线ng与视景体的交点lg相比,更靠近l2,则lk是一个错误交点,对于右边的点也是类似的判断。例如,图4中的曲线中,从l2r2开始的前四条法线没有产生错误的交点,而第五条法线与上一条不产生错误交点的法线有交点,因此在右边产生了错误的交点;

步骤3、如果当前法线nk没有产生错误的交点,就更新上一条正确的法线ng为nk。错误交点的总数e由每一条法线产生的错误交点数ek累加而得。当曲线上所有采样点都遍历过之后,计算e+1的倒数作为被评估曲线的得分。

3、虚拟场景的投影算法

交换相机通过对场景中的每一个顶点按一定的规律进行位移得到经过变换的虚拟场景。然后分别使用vr头盔解析得到的左右眼摄像机的投影参数,将变换后的几何数据投影到用户头盔的左眼屏幕和右眼屏幕上。虚拟场景的顶点变换流程如图7所示。

该流程的输入是由第一步计算得到的基于贝塞尔曲线的多视图投影相机模型和需要变换的顶点q。该算法的目的是计算出点q在用户视图上的位置qp,然后基于用户传统的摄像机投影参数将qp反投影得到反投影点q′,流程步骤如下:

步骤1、判断点q所属的区域,如果q位于用户区域,即在π1下面的区域,则使用用户摄像机的投影参数(v1,f1)投影到用户视图上。如果q位于工作区,即π2上面的区域,则直接以协作者的摄像机参数(v2,f2)投影,并计算在屏幕上的坐标;

步骤2、如果q位于过渡区域,投影过程就依赖于第一步和第二步计算得到的贝塞尔曲线,这一步使位于过渡区域的顶点的投影效果介于工作区域和用户区域的顶点之间。如果q靠近π2,投影的算法类似于使用协作者的摄像机投影参数投影的算法,如果q靠近π1,则类似于使用用户摄像机的投影参数计算的结果。这一步使位于过渡区域的顶点的投影结果与工作区域和用户区域的顶点连续;

步骤3、过渡区域的顶点投影。如图8所示,首先基于贝塞尔曲线的参数t通过二分查找算法从贝塞尔曲线上找到一个包含点q的垂直平面。参数t的搜索区间被初始化为[0,1],二分查找算法的每一次迭代都将区间减半,并且保持点q位于远平面π2和近平面π1之间,最终会找到一个满足条件的值计算出垂直平面πt,同时可以计算出贝塞尔曲线上的点pt和法线nt。然后计算q在平面πt上的以pt为坐标系原点的坐标(xt,yt),然后把(xt,yt)按比例缩小得到q1在π1上以p1为坐标系原点的坐标(x1,y1)。比例因子f的计算公式为v1p1/(v2p2+(v1p1-v2p2)t)。在平面π1内以p1为坐标系原点,根据q1的坐标(x1,y1)可以计算出q1的坐标,最后投影点qp可以结合用户摄像机的投影参数按传统的投影方式计算得到;

步骤4、所有三种类型的顶点q的投影点qp的深度z以用户视图下的深度作为反投影点q′的深度。最后以用户摄像机的投影参数将qp反投影得到顶点变换的结果q′,将三种类型的投影结果以深度缓存方式进行光栅化计算,即可得到最终结果。

本方法为工作区,过渡区,用户区有针对性地设计了新的投影算法,将协作者在工作区的视图提供给用户并且具有非常微小的误差。在实验研究中,在相同任务场景下,比较该方法与传统方法的优劣,实验结果表明,该方法更高效,更有利于减少出错率。

根据本发明的具体实施例,进行用户实验,实验效果如图9所示。分为三组,由研究者担任协作者,参与者是用户。第一组实验的虚拟场景是一个工厂,协作者使用虚拟射线指向一个管道,用户需要选择管道对应的颜色。第二组实验的虚拟场景是同一个工厂,协作者指向一个管道,然后用手臂做一个手势,然后指向另一个管道,用户被要求在桌子上选择对应的“颜色-手势-颜色”的选项。第三组实验的虚拟场景是一个游戏场景,用户需要选择与协作者所指向的小球相连的按钮。实验有三类控制条件,第一种控制条件(cc1)下用户只能通过移动观察协作者的指向。第二种控制条件(cc2)下用户可以在自己的视图和协作者视图之间来回切换来进行观察。第三个条件为实验条件(ec),实验条件下用户可以使用本发明提出的基于贝塞尔曲线的多视图投影方法进行观察。对于实验一,对比cc1和ec的结果,对于实验二,对比cc2和ec的结果,对于实验三,对比cc1,cc2和ec的结果。实验结果表明通过使用基于贝塞尔曲线的多视图投影方法,用户可以以较少的负担来完成合作任务,并且获得更高的正确率。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1