一种头部姿态补偿方法及装置与流程

文档序号:12801455阅读:245来源:国知局
一种头部姿态补偿方法及装置与流程

本发明涉及虚拟现实技术领域,具体涉及一种头部姿态补偿方法及装置。



背景技术:

虚拟现实技术通过计算机实时生成携带最新头部姿态信息的待显示图像帧,然后显示在显示屏上(显示图像帧),最后显示图像帧通过vr光学系统投射到人眼,给用户一种身临其境的沉浸体验。待显示图像帧和显示图像帧之间由于延时latency的存在,会引入感知头部姿态误差,另外常见的vr光学系统是单透镜光学系统,还会引入很大的畸变和色差。因此在虚拟现实技术中,存在一种异步时间扭曲技术(asynchronoustimewarptechnology,atw),atw技术能够在硬件扫描待显示图像帧之前,对图像施加头部姿态补偿以形成一幅新的待显示图像帧,新的待显示图像帧所携带的头部姿态通常将更加接近真实头部姿态,给予用户更好的虚拟现实体验。另外针对单镜片vr光学系统的光学畸变和色差,在对图像施加姿态补偿的同时,通常还会施加畸变色差补偿,让用户实际观看到的图像无畸变无色差。

现有技术的异步时间扭曲和畸变色差补偿采用gpu实现,需要gpu支持高优先任务抢占,任务抢占影响gpu吞吐率,提高了对gpu整体性能需求;同时,需要利用gpu将eyebuffer渲染到framebuffer上,再由显示硬件扫描到显示器上,增加一次gpu的额外读写操作;畸变色差补偿和头部姿态补偿分阶段完成,增加了vr系统的显示延时。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种头部姿态补偿方法,克服由于vr系统延时、vr系统丢帧、头部姿态预测算法引入的预测误差、行扫描硬件延时等因素所带来的感知头部姿态误差的缺陷。

本发明解决其技术问题所采用的技术方案是:提供一种头部姿态补偿方法,包括:步骤1:根据已渲染的至少两个图像帧的显示时间和待显示图像帧准备开始渲染时间t0,预测待显示图像帧的渲染完成时间t1;步骤2:根据所述预测的待显示图像帧的渲染完成时间t1计算待显示图像帧的开始显示时间t2,所述待显示图像帧的开始显示时间t2加显示周期t为所述待显示图像帧的结束显示时间t3;步骤3:根据所述待显示图像帧的开始显示时间t2和结束显示时间t3计算第一时间,预测所述第一时间的头部姿态q,根据所述第一时间的头部姿态q渲染所述待显示图像帧;步骤4:获取所述待显示图像帧和所述第一时间的头部姿态q,根据待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一显示周期的开始时间a计算待显示周期的开始时间t;步骤5:根据所述待显示周期的开始时间t和所述显示周期t计算第二时间,获取所述第二时间的头部姿态q’,根据所述第一时间的头部姿态q和所述第二时间点的头部姿态q’计算头部姿态补偿矩阵;步骤6:将所述待显示图像帧切分为m行、n列的网格块,根据所述姿态补偿矩阵对所述待显示图像帧的m行、n列的网格块做姿态补偿计算,根据所述姿态补偿后的网格块的顶点坐标与所述待显示图像帧的网格块的顶点坐标计算校正系数;步骤7:根据所述待显示图像帧和所述校正系数计算头部姿态补偿后的显示图像帧。

步骤1根据已渲染的至少两个图像帧的显示时间和待显示图像帧准备开始渲染时间t0预测待显示图像帧的渲染完成时间t1具体计算方法为:所述已渲染的至少两个图像帧的显示开始时间与显示完成时间的差值的均值,再与所述待显示图像帧准备开始渲染时间t0之和。

步骤2根据所述预测的待显示图像帧的渲染完成时间t1计算所述待显示图像帧的开始显示时间t2具体计算方法为:所述预测的待显示图像帧的渲染完成时间t1与已完成的任一显示周期的开始时间a的差值除以所述显示周期t再加1,再与所述显示周期t的乘积,再与所述已完成的任一显示周期的开始时间a之和。

步骤3中的根据所述待显示图像帧的开始显示时间t2和结束显示时间t3计算第一时间具体计算方法为:所述待显示图像帧的结束显示时间t3与所述待显示图像帧的开始显示时间t2的差值乘1/2,再与所述待显示图像帧的开始显示时间t2之和。

步骤4中根据所述待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一显示周期的开始时间a计算待显示周期的开始时间t具体计算方法为:所述待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c与已完成任一显示周期的开始时间a的差值除以所述显示周期t再加1,再与所述显示周期t的乘积,再与已完成的任一显示周期的开始时间a之和。

步骤5中根据所述待显示周期的开始时间t和所述显示周期t计算第二时间具体计算方法为:所述显示周期t乘1/2,再与所述待显示周期的开始时间t之和。

步骤5中的根据所述第一时间的头部姿态q和所述第二时间点的头部姿态q’计算头部姿态补偿矩阵具体计算方法为:所述第一时间的头部姿态q转换为第一旋转矩阵,所述第二时间的头部姿态q’转换为第二旋转矩阵,所述第一旋转矩阵的逆矩阵与所述第二旋转矩阵的乘积。

步骤6中所述头部姿态补偿后的矩形块的顶点坐标与所述待显示图像帧的矩形块的顶点坐标根据二维映射算法计算校正系数。

所述步骤6还包括:在[t-0.5t,t]之间计算所述待显示图像帧的左眼校正系数,在[t,t+0.5t]之间计算所述待显示图像帧的右眼校正系数。

所述步骤7根据所述待显示图像帧和所述校正系数采用插值算法计算头部姿态补偿后的显示图像帧。

所述步骤7根据所述待显示图像帧和所述校正系数采用插值算法计算头部姿态补偿后的显示图像帧具体计算方法为:根据所述校正系数计算所述显示图像帧中的像素点坐标对应在所述待显示图像帧中的像素点坐标;选取所述待显示图像帧中的像素点坐标相邻的至少四个像素点的像素值做插值计算,以生成所述显示图像帧中的像素点坐标的像素值,输出头部姿态补偿后的显示图像帧。

步骤7根据所述待显示图像帧和所述校正系数计算头部姿态补偿后的输出图像帧由硬件电路完成。

所述步骤7根据所述待显示图像帧和所述校正系数计算头部姿态补偿后的输出图像帧的硬件电路包括坐标运算器、数据提取器和插值运算器:坐标运算器根据所述校正系数计算所述显示图像帧中的像素点坐标对应在所述待显示图像帧中的像素点坐标;数据提取器选取所述待显示图像帧中的像素点坐标相邻的至少四个像素点的像素值;插值运算器根据所述数据提取器选取的至少四个像素点的像素值进行插值计算,以生成所述显示图像帧中的像素点坐标的像素值,输出头部姿态补偿后的显示图像帧。

所述步骤6还包括:根据畸变色差补偿算法对所述待显示图像帧的m行、n列的网格块进行畸变色差补偿。

本发明还提供一种图像显示方法,采用如权利要求1至14任一项所述的头部姿态补偿方法得到输出图像,并直接显示。

本发明还提供一种头部姿态补偿装置,包括待显示图像帧渲染模块、头部姿态补偿矩阵生成模块、校正系数计算模块和图像帧计算模块;待显示图像帧渲染模块根据已渲染的至少两个图像帧的显示时间计算第一时间,并预测所述第一时间的头部姿态q,根据所述第一时间的头部姿态q渲染所述待显示图像帧;头部姿态补偿矩阵生成模块获取所述待显示图像帧和所述第一时间的头部姿态q,根据待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算第二时间,获取所述第二时间的头部姿态q’,并根据所述第一时间的头部姿态q和所述第二时间的头部姿态q’计算头部姿态补偿矩阵;校正系数计算模块将所述待显示图像帧切分为m行、n列的网格块,根据所述头部姿态补偿矩阵对所述待显示图像帧的m行、n列的网格块做姿态补偿,根据所述姿态补偿后的网格块的顶点坐标与所述待显示图像帧的网格块的顶点坐标计算校正系数;图像帧计算模块根据所述待显示图像帧和所述校正系数计算头部姿态补偿后的显示图像帧。

待显示图像帧渲染模块包括显示图像帧渲染完成时间预测单元、头部姿态q预测单元、头部姿态q预测单元和待显示图像帧渲染单元;待显示图像帧渲染完成时间预测单元根据已渲染的至少两个图像帧的显示时间和所述待显示图像帧准备开始渲染时间t0,预测所述待显示图像帧的渲染完成时间t1;待显示图像帧开始显示时间计算单元根据所述预测的待显示图像帧的渲染完成时间t1计算待显示图像帧的开始显示时间t2,所述待显示图像帧的开始显示时间t2加显示周期t为所述待显示图像帧的结束显示时间t3;头部姿态q预测单元根据所述待显示图像帧的开始显示时间t2和结束显示时间t3计算第一时间,并预测所述第一时间的头部姿态q;待显示图像帧渲染单元根据所述头部姿态q渲染所述待显示图像帧。

所述待显示图像帧渲染完成时间预测单元根据已渲染的至少两个图像帧的显示时间和所述待显示图像帧准备开始渲染时间t0,预测所述待显示图像帧的渲染完成时间t1的计算方法为:所述已渲染的至少两个图像帧的显示开始时间与显示完成时间的差值的均值,再与所述待显示图像帧开始渲染时间t0之和。

所述待显示图像帧开始显示时间计算单元根据所述预测的待显示图像帧的渲染完成时间t1计算待显示图像帧的开始显示时间t2具体计算方法为:所述预测的待显示图像帧的渲染完成时间t1与已完成的任一显示周期的开始时间a的差值除以所述显示周期t再加1,再与所述显示周期t的乘积,再与所述已完成的任一显示周期的开始时间a之和。

所述头部姿态q预测单元根据所述待显示图像帧的开始显示时间t2和结束显示时间t3计算第一时间具体方法为:所述待显示图像帧的结束显示时间t3与所述待显示图像帧的开始显示时间t2的差值乘1/2,再与所述待显示图像帧的开始显示时间t2之和。

头部姿态补偿矩阵生成模块包括头部姿态q’预测单元和头部姿态补偿矩阵计算单元:头部姿态q’预测单元根据所述待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算第二时间,获取所述第二时间的头部姿态q’;头部姿态补偿矩阵计算单元根据所述第一时间的头部姿态q和所述第二时间的头部姿态q’计算所述头部姿态补偿矩阵。

所述头部姿态q’预测单元包括待显示周期开始时间t计算单元和第二时间计算单元:待显示周期开始时间t计算单元根据所述待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算待显示周期的开始时间t;第二时间计算单元根据所述待显示周期的开始时间t和显示周期t计算第二时间点,并获取所述第二时间点的头部姿态q’。

所述待显示周期开始时间t计算单元的计算方法为:所述待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c与所述已完成的任一显示周期的开始时间a的差值除以所述显示周期t再加1,再与所述显示周期t的乘积,再与所述已完成的显示周期的开始时间a之和。

所述第二时间的计算方法为:所述显示周期t乘1/2,再与所述待显示周期的开始时间t之和。

所述头部姿态补偿矩阵计算单元的计算方法为:所述第一时间的头部姿态q转换为第一旋转矩阵,所述第二时间的头部姿态q’转换为第二旋转矩阵,所述第一旋转矩阵的逆矩阵与所述第二旋转矩阵的乘积。

所述校正系数计算模块包括待显示图像帧分块单元、头部姿态补偿计算单元和校正系数计算单元:待显示图像帧分块单元将所述待显示图像帧切分为m行、n列的网格块;头部姿态补偿计算单元根据所述头部姿态补偿矩阵对所述待显示图像帧的m行、n列的网格块做姿态补偿计算;校正系数计算单元根据所述姿态补偿后的网格块的顶点坐标与所述待显示图像帧的网格块的顶点坐标计算校正系数。

所述校正系数计算单元根据二维映射算法计算所述姿态补偿后的网格块的顶点坐标与所述待显示图像帧的网格块的顶点坐标的校正系数。

所述校正系数计算单元包括左眼校正系数计算单元和右眼校正系数计算单元:左眼校正系数计算单元在[t-0.5t,t]之间计算所述待显示图像帧的左眼校正系数;右眼校正系数计算单元在[t,t+0.5t]之间计算所述待显示图像帧的右眼校正系数。

所述图像帧计算模块根据所述待显示图像帧和所述校正系数采用插值算法计算所述头部姿态补偿后的显示图像帧。

所述图像帧计算模块根据所述待显示图像帧和所述校正系数计算头部姿态补偿后的显示图像帧由硬件电路完成。

所述图像帧计算模块包括坐标运算器、数据提取器和插值运算器:坐标运算器根据所述校正系数计算所述显示图像帧中的像素点坐标对应在所述待显示图像帧中的像素点坐标;数据提取器选取所述待显示图像帧中的像素点坐标相邻的至少四个像素点的像素值;插值运算器根据所述数据提取器选取的至少四个像素点的像素值进行插值计算,以生成所述显示图像帧中的像素点坐标的像素值,输出头部姿态补偿后的显示图像帧。

所述校正系数计算模块还包括:畸变色差补偿计算单元,用于根据畸变色差补偿算法对所述待显示图像帧的m行、n列的网格块进行畸变色差补偿。

本发明还提供一种图像显示装置,采用如权利要求16至32任一项所述的头部姿态补偿装置得到输出图像,并直接显示。

本发明的有益效果在于,提供了一种优化的头部姿态补偿方法,通过对已渲染的至少两帧的显示时间性能统计来预测待显示图像帧的显示时间,并采用分别计算左右眼头部姿态补偿矩阵的方法,提高预测准确性,最终降低头部姿态q和q’之间的差值,也就使得头部姿态补偿矩阵得以优化,减小头部姿态补偿矩阵对应的平均欧拉角。实现了对vr系统中的待显示图像帧所携带的头部姿态进行精确补偿,校正了由于vr系统延时、vr系统丢帧、头部姿态预测算法引入的预测误差、行扫描硬件延时等因素所带来的感知头部姿态误差,保持了显示图像帧和实际用户头部姿态的一致性,最终降低了用户在使用vr系统时遇到的拖影现象和眩晕感。

同时,可以根据畸变色差补偿和姿态补偿后的矩形块的顶点坐标与待显示图像帧的矩形块的顶点坐标计算所述校正系数,则校正系数带有畸变色差和头部姿态补偿信息了,一套校正系数同时支持畸变色差补偿和头部姿态补偿,降低vr系统的性能要求和复杂度。可以对vr系统输出的图像帧所携带的头部姿态进行精确补偿和校正的同时,还能够校正单透镜vr光学系统带来的畸变误差和色差。另外,可以采用硬件根据校正系数直接插值运算出实际像素,并输出给屏幕,避免额外读写过程,降低了系统带宽、功耗和vr显示延迟。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明一实施例的头部姿态补偿方法100的流程框图;

图2是本发明一实施例的头部姿态补偿方法200的流程框图;

图3是本发明一实施例的头部姿态补偿装置300的框图;

图4是本发明一实施例的待显示图像帧渲染模块400的框图;

图5是本发明一实施例的头部姿态补偿矩阵计算模块500的框图;

图6是本发明一实施例的头部姿态q’计算单元600的框图;

图7是本发明一实施例的校正系数计算模块700的框图;

图8是本发明一实施例的图像帧计算模块800的电路框图;

图9是本发明一实施例的校正系数计算模块900的框图。

具体实施方式

现结合附图,对本发明的较佳实施例作详细说明。如图1所示,是本发明一实施例的头部姿态补偿方法100流程框图。

步骤101首先根据已经渲染的至少两个图像帧的显示时间和待显示图像帧准备开始渲染的时间t0预测待显示图像帧的渲染完成时间t1。其中,待显示图像帧准备开始渲染的时间t0到开始渲染这段时间很短,在这段时间内,会为准备好渲染f(n)所需要的头部姿态q,头部姿态q计算好后,就开始渲染了。

步骤103根据步骤101预测的待显示图像帧的渲染完成时间t1计算待显示图像帧的开始显示时间t2,待显示图像帧的开始显示时间t2加显示周期t即为待显示图像帧的结束显示时间t3。

步骤105根据步骤103计算的待显示图像帧的开始显示时间t2和结束显示时间t3计算第一时间,预测所述第一时间的头部姿态q,并根据第一时间的头部姿态q渲染待显示图像帧。在具体实施方式中,头部姿态q可以是四元数、欧拉角或旋转矩阵,作为优选的实施方式,头部姿态q可以是四元数。头部姿态q可以从头部跟踪算法模块获得,头部跟踪算法模块是对加速度、陀螺仪、磁场等数据进行融合,输出即时的头部姿态信息和头部转动速度信息。

步骤107获取待显示图像帧和第一时间的头部姿态q,根据待显示图像帧完成渲染的时间或待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算待显示周期的开始时间t。所述待显示图像帧完成渲染的时间是待显示图像帧实际完成渲染的时间。

步骤109根据步骤107计算的待显示周期的开始时间t和显示周期t计算第二时间,获取所述第二时间的头部姿态q’,并根据第一时间的头部姿态q和第二时间的头部姿态q’计算头部姿态补偿矩阵。在具体实施方式中,头部姿态q’可以是四元数、欧拉角或旋转矩阵,作为优选的实施方式,头部姿态q’可以是四元数。头部姿态q’同样也可以从头部跟踪算法模块获得,头部跟踪算法模块是对加速度、陀螺仪、磁场等数据进行融合,输出即时的头部姿态信息和头部转动速度信息。

步骤111将待显示图像帧切分为m行、n列的网格块,根据步骤109计算的头部姿态补偿矩阵对待显示图像帧的m行、n列的网格块进行姿态补偿计算,再根据姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标计算校正系数。在具体实施方式中,m和n的取值可以根据软件和硬件性能进行合理取值。

步骤113根据待显示图像帧和校正系数计算头部姿态补偿后的显示图像帧。在一实施方式中,可根据所述待显示图像帧和所述校正系数采用插值算法计算头部姿态补偿后的显示图像帧。在具体实施方式中,可根据校正系数计算显示图像帧中的像素点坐标对应在待显示图像帧中的像素点坐标;选取待显示图像帧中的像素点坐标相邻的至少四个像素点的像素值做插值计算,以生成显示图像帧中的像素点坐标的像素值,输出头部姿态补偿后的显示图像帧。在具体实施方式中,可以采用双线性插值或双三次插值算法完成插值计算。

提供了一种优化的头部姿态补偿方法,通过对已渲染的至少两帧的显示时间性能统计来预测待显示图像帧的显示时间,提高预测准确性,最终降低头部姿态q和q’之间的差值,也就使得头部姿态补偿矩阵得以优化,减小头部姿态补偿矩阵对应的平均欧拉角,例如优化前可能对应的平均旋转欧拉角是2m,优化后可以缩小到m,头部姿态补偿矩阵对应的欧拉角pitch,yaw,roll越大,生成的显示图像帧中无效像素点越多,边缘黑边和拉伸现象明显,用户体验不好,并将提高硬件设计的难度和成本。实现了对vr系统中的待显示图像帧所携带的头部姿态进行精确补偿,校正了由于vr系统延时、vr系统丢帧、头部姿态预测算法引入的预测误差、行扫描硬件延时等因素所带来的感知头部姿态误差,保持了显示图像帧和实际用户头部姿态的一致性,最终降低了用户在使用vr系统时遇到的拖影现象和眩晕感,降低了系统带宽、功耗和显示延迟,降低了对系统的整体性能需求,特别是对gpu的性能需求。

在一实施方式中,待显示图像帧的渲染完成时间t1具体计算方法可为:已渲染的至少两个图像帧的显示开始时间与显示完成时间的差值的均值,再与待显示图像帧准备开始渲染时间t0之和。在具体实施方式中,可使用已渲染的三个图像帧f(n-1),f(n-2),f(n-3)各自的完成渲染时间减去f(n-1),f(n-2),f(n-3)各自的开始渲染时间得到delta1、delta2、delta3,计算delta1、delta2、delta3的均值delta,则预测完成渲染时间t1=t0+delta,其中,t0为准备开始渲染时间。这样做,相当于做了一次低通滤波,delta的波动更小,使得预测时间长度delta大为缩小,例如通常的最大预测时间长度可能长达40ms,而采用本实施例中的方法来预测渲染完成时间,平均预测时间长度只有25ms,减小了预测时间,预测算法更准确,降低了预测带来的欧拉角误差,使得生成的显示图像帧中无效像素点越少,减小边缘黑边和拉伸现象,用户体验好。

在一实施方式中,待显示图像帧的开始显示时间t2具体计算方法可为:预测的待显示图像帧的渲染完成时间t1与已完成的任一显示周期的开始时间a的差值除以显示周期t再加1,再与显示周期t的乘积,再与已完成的任一显示周期的开始时间a之和,即,t2=((t1-a)/t+1)*t+a。显示周期t可以是显示设备的频率,例如显示设备的频率是60hz,则显示周期t是16.67ms。那么,第一时间具体计算方法可为:待显示图像帧的结束显示时间t3与待显示图像帧的开始显示时间t2的差值乘1/2,再与待显示图像帧的开始显示时间t2之和,即,第一时间=t2+(t3-t2)/2。其中,待显示图像帧的开始显示时间t2加显示周期t为待显示图像帧的结束显示时间t3。显示时的头部朝向为[q(t2),q(t2+t)],采用本实施例的方法,预测的是t2+0.5t时刻点的头部姿态q(t2+0.5t)来渲染待显示图像帧,异步时间扭曲只需要根据q(t2+0.5t)-q(t2)和q(t2+0.5t)-q(t2+t)来对待显示图像帧做补偿,而传统技术方案预测的是t1时刻点的头部姿态q(t1)来渲染f(n),异步时间扭曲需要根据q(t1)-q(t2)和q(t1)-q(t2+t)对待显示图像帧做补偿,在其他因素一致的情况下,{q(t2+0.5t)-q(t2),q(t2+0.5t)-q(t2+t)}对应的欧拉角范围应该小于{q(t1)-q(t2),q(t1)-q(t2+t)}。

通过对头部姿态q对应的第一时间的优化计算,即对过去至少两帧的显示时间的性能统计来预测待显示图像帧的显示时间,能够提高预测准确性,最终降低头部姿态q和q’之间的差值,也就使得头部姿态补偿矩阵得以优化,减小头部姿态补偿矩阵对应的平均欧拉角,使得生成的显示图像帧中无效像素点越少,减小边缘黑边和拉伸现象,用户体验好。

在一实施方式中,计算待显示周期的开始时间t具体计算方法可为:待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c与已完成任一显示周期开始时间a的差值除以显示周期t再加1,再与显示周期t的乘积,再与已完成的任一显示周期的开始时间a之和,即,t=((c-a)/t+1)*t+a。待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c可以通过标准系统函数接口获得,显示周期可以是显示设备的频率,例如显示设备的频率是60hz,则显示刷新周期t是16.67ms。

在一实施方式中,计算第二时间点的具体方法可以是:显示周期t乘1/2,再与待显示周期的开始时间t之和。

在一实施方式中,计算头部姿态补偿矩阵的方法可以是:第一时间的头部姿态q转换为第一旋转矩阵,第二时间的头部姿态q’转换为第二旋转矩阵,第一旋转矩阵的逆矩阵与第二旋转矩阵的乘积即为头部姿态补偿矩阵。在具体实施方式中,头部姿态q和q’可以是四元数,例如头部姿态q是四元数q=<w,x,y,z>,转换相对应的第一旋转矩阵mat为:

在一实施方式中,可根据二维映射算法计算待显示图像帧头部姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标的校正系数。需要保证在待显示周期的开始时间t时刻到来之前完成待显示图像帧的校正系数计算,这样在[t,t+t]时间内读取待显示图像帧的校正系数才不会出错。在具体实施方式中,假设经过头部姿态补偿之后的待显示图像帧中一个网格块的四个坐标点为(u1,v1)、(u2,v2)、(u3,v3)、(u4,v4),其对应待显示图像帧的网格块的坐标为(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),可用如下公式计算校正系数:

u1=(a*x1+b*y1+c)/(g*x1+h*y1+1);...(1)

v1=(d*x1+e*y1+f)/(g*x1+h*y1+1);...(2)

u2=(a*x2+b*y2+c)/(g*x2+h*y2+1);...(1)

v2=(d*x2+e*y2+f)/(g*x2+h*y2+1);...(2)

u3=(a*x3+b*y3+c)/(g*x3+h*y3+1);...(1)

v3=(d*x3+e*y3+f)/(g*x3+h*y3+1);...(2)

u4=(a*x4+b*y4+c)/(g*x4+h*y4+1);...(1)

v4=(d*x4+e*y4+f)/(g*x4+h*y4+1);...(2)

求解a,b,c,d,e,f,g,h这8个未知数即为待显示图像帧头部姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标的校正系数。

在一实施方式中,可在[t-0.5t,t]之间计算待显示图像帧的左眼校正系数,在[t,t+0.5t]之间计算待显示图像帧的右眼校正系数。这样分两次计算,一方面能够将软件系数更新时间更好的平均到一帧时间中,不容易出现显示扫描引擎(presentationengine,pe)读取校正系数的时候,校正系数还未完成更新所造成的问题。另一方面,分两次计算,左右眼可以有自己的头部姿态补偿矩阵,右眼的头部姿态补偿矩阵将在t时刻被计算,更加精确的同时,还能令头部姿态补偿矩阵所对应的欧拉角度更加小。

在一实施方式中,根据待显示图像帧和校正系数插值计算头部姿态补偿后的输出图像帧可由硬件电路完成。软件计算坐标参数,生成校正系数,硬件根据校正系数直接插值运算出实际像素,并输出给屏幕,避免额外读写过程,降低了系统带宽、功耗和vr显示延迟。

在一实施方式中,根据待显示图像帧和校正系数插值计算头部姿态补偿后的显示图像帧的硬件电路可包括坐标运算器、数据提取器和插值运算器。坐标运算器根据校正系数计算显示图像帧中的像素点坐标对应在待显示图像帧中的像素点坐标;数据提取器选取待显示图像帧中的像素点坐标相邻的至少四个像素点的像素值;插值运算器根据数据提取器选取的至少四个像素点的像素值进行插值计算,以生成所述显示图像帧中的像素点坐标的像素值,输出头部姿态补偿后的显示图像帧。在具体是方式中,插值运算器可以是双线性插值运算器或双三次插值运算器。

在一实施方式中,如图2所示,头部姿态补偿算法还可以进一步包括:根据畸变色差补偿算法对待显示图像帧的m行、n列的网格块进行畸变色差补偿。其中,步骤201至步骤209与图1中的步骤101至步骤109可以相同,步骤211将待显示图像帧切分为m行、n列的网格块,根据畸变色差补偿算法对待显示图像帧的m行、n列的网格块进行畸变色差补偿;步骤213再将畸变色差补偿后的网格块应用所述头部姿态补偿矩阵,再根据畸变色差补偿和姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标计算校正系数。步骤215根据待显示图像帧和步骤213计算的校正系数计算显示图像帧。在具体实施方式中,可加载畸变色差补偿预处理网格数据,针对不同的vr系统,在vr系统确定的情况下,畸变色差补偿网格通常会选取一个最优结果,然后保存为文件,后续每次vr系统启动只需要加载该文件即可。

畸变色差补偿网格可以是二维点的集合,设任意点p={x,y}是畸变补偿色差网格中的二维点,头部姿态补偿矩阵可以是4x4矩阵mat。畸变色差补偿后的网格块应用所述头部姿态补偿矩阵即为矩阵相乘,矩阵乘法要求p也为四维向量,所以可扩展p为p={x,y,-1,1},p现在在z=-1平面;q=p*mat;q是应用姿态补偿矩阵后的三维空间点。

设q={x',y',z',1},显然经过旋转得到q已经不在z=-1平面,所以我们需要将q映射回z=-1平面,这相当于计算直线(过q和原点)和平面(z=-1)的交点q,计算方法如下:

过空间点q的直线方程为:t=x/x'=y/y'=z/z',代入z=-1即可求出:

t=-1/z';

x=x'*t;

y=y'*t;

q={x'*t,y'*t,-1,1}

其中,(x'*t,y'*t)即为经过畸变色差补偿后的待显示图像帧中的(x,y)再经过头部姿态补偿之后的待显示图像帧的坐标点。再根据畸变色差补偿和姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标计算校正系数,则校正系数带有畸变色差补偿和头部姿态补偿信息了,一套校正系数同时支持畸变色差补偿和头部姿态补偿,降低vr系统的性能要求和复杂度,通过对vr系统中的待显示图像帧所携带的头部姿态进行精确补偿,校正了由于vr系统延时、vr系统丢帧、头部姿态预测算法引入的预测误差、行扫描硬件延时等因素所带来的感知头部姿态误差,同时还能够校正由单透镜vr光学系统所带来的畸变和色差,保证用户看到无畸变无色差图像帧的同时,还保持了显示图像帧和实际用户头部姿态的一致性,最终降低了用户在使用vr系统时遇到的拖影现象和眩晕感,降低了带宽需求、功耗和显示延迟。

在一实施方式中,可采用本发明提供的头部姿态补偿算法得到显示图像帧,并直接显示。不需要gpu来做像素实时生成,直接读取待显示图像帧,将实时计算出的结果直接显示,不需要中间memory的读写过程,一套校正系数同时支持畸变色差补偿和头部姿态补偿,降低vr系统的性能要求和复杂度,降低了带宽需求、功耗和显示延迟。

图3是本发明一实施例的头部姿态补偿装置300的框图,包括待显示图像帧渲染模块301、头部姿态补偿矩阵生成模块303、校正系数计算模块305和图像帧计算模块307。待显示图像帧渲染模块301根据已渲染的至少两个图像帧的显示时间计算第一时间,并预测第一时间的头部姿态q,根据第一时间的头部姿态q渲染待显示图像帧;头部姿态补偿矩阵生成模块303获取待显示图像帧和第一时间的头部姿态q,并根据待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算第二时间点,获取第二时间的头部姿态q’,根据第一时间点的头部姿态q和第二时间点的头部姿态q’计算头部姿态补偿矩阵;校正系数计算模块305将待显示图像帧切分为m行、n列的网格块,根据姿态补偿矩阵对待显示图像帧的m行、n列的网格块做姿态补偿计算,根据姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标计算校正系数;在具体实施方式中,m和n的取值可以根据软件和硬件性能进行合理取值。图像帧计算模块307根据待显示图像帧和校正系数计算头部姿态补偿后的显示图像帧。在一实施方式中,图像帧计算模块307可根据待显示图像帧和校正系数采用插值算法计算头部姿态补偿后的显示图像帧。在具体实施方式中,头部姿态q和q’可以是四元数、欧拉角或旋转矩阵,作为优选的实施方式,头部姿态q和q’可以是四元数。

通过对已渲染的至少两帧的显示时间性能统计来预测待显示图像帧的显示时间,提高预测准确性,最终降低头部姿态q和q’之间的差值,也就使得头部姿态补偿矩阵得以优化,减小头部姿态补偿矩阵对应的平均欧拉角。实现了对vr系统中的待显示图像帧所携带的头部姿态进行精确补偿,校正了由于vr系统延时、vr系统丢帧、头部姿态预测算法引入的预测误差、行扫描硬件延时等因素所带来的感知头部姿态误差,保持了显示图像帧和实际用户头部姿态的一致性,降低了用户在使用vr系统时遇到的拖影现象和眩晕感,降低了带宽需求、功耗和显示延迟。

在一实施方式中,如图4所示,待显示图像帧渲染模块400可包括待显示图像帧渲染完成时间预测单元401、待显示图像帧开始显示时间计算单元403、头部姿态q预测单元405和待显示图像帧渲染单元407。

待显示图像帧渲染完成时间预测单元401根据已渲染的至少两个图像帧的显示时间和待显示图像帧准备开始渲染时间t0,预测待显示图像帧的渲染完成时间t1。所述准备开始渲染时间t0到开始渲染这段时间很短,在这段时间内,会为准备好渲染f(n)所需要的头部姿态q,头部姿态q计算好后,就开始渲染了。

在一实施方式中,待显示图像帧的渲染完成时间t1的计算方法可为:已渲染的至少两个图像帧的显示开始时间与显示完成时间的差值的均值,再与待显示图像帧开始渲染时间t0之和。在具体实施方式中,可使用已渲染的三个图像帧f(n-1),f(n-2),f(n-3)各自的完成渲染时间减去f(n-1),f(n-2),f(n-3)各自的开始渲染时间得到delta1、delta2、delta3,计算delta1、delta2、delta3的均值delta,则预测完成渲染时间t1=t0+delta,其中,t0为准备开始渲染时间。这样做,相当于做了一次低通滤波,delta的波动更小,使得预测时间长度delta大为缩小,例如通常的最大预测时间长度可能长达40ms,而采用本实施例中的方法来预测渲染完成时间,平均预测时间长度只有25ms,减小了预测时间,预测算法更准确,降低了预测带来的欧拉角误差,使得生成的显示图像帧中无效像素点越少,减小边缘黑边和拉伸现象,用户体验好。

待显示图像帧开始显示时间计算单元403根据预测的待显示图像帧的渲染完成时间t1计算待显示图像帧的开始显示时间t2。在具体实施方式中,t2的计算方法可为:预测的待显示图像帧的渲染完成时间t1与已完成的任一显示周期的开始时间a的差值除以显示周期t再加1,再与显示周期t的乘积,再与已完成的任一显示周期的开始时间a之和,即t2=((t1-a)/t+1)*t+a。待显示图像帧的开始显示时间t2加显示周期t为所述待显示图像帧的结束显示时间t3。显示周期t可以是显示设备的频率,例如显示设备的频率是60hz,则显示周期t是16.67ms。

头部姿态q预测单元405根据待显示图像帧的开始显示时间t2和结束显示时间t3计算第一时间点,并预测第一时间的头部姿态q。在具体实施方式中,第一时间具体计算方法可为:待显示图像帧的结束显示时间t3与待显示图像帧的开始显示时间t2的差值乘1/2,再与待显示图像帧的开始显示时间t2之和,即,第一时间=t2+(t3-t2)/2。其中,待显示图像帧的开始显示时间t2加显示周期t为待显示图像帧的结束显示时间t3。假设显示时的头部朝向为[q(t2),q(t2+t)],采用本实施例的方法,预测的是t2+0.5t时刻点的头部姿态q(t2+0.5t)来渲染待显示图像帧,异步时间扭曲只需要根据q(t2+0.5t)-q(t2)和q(t2+0.5t)-q(t2+t)来对待显示图像帧做补偿,而传统技术方案预测的是t1时刻点的头部姿态q(t1)来渲染待显示图像帧,异步时间扭曲需要根据q(t1)-q(t2)和q(t1)-q(t2+t)对待显示图像帧做补偿,其他因素一致的情况下,{q(t2+0.5t)-q(t2),q(t2+0.5t)-q(t2+t)}对应的欧拉角范围应该小于{q(t1)-q(t2),q(t1)-q(t2+t)}。

待显示图像帧渲染单元407根据头部姿态q渲染待显示图像帧。

通过对头部姿态q对应的第一时间的优化计算,即对过去至少两帧的显示时间的性能统计来预测待显示图像帧的显示时间,能够提高预测准确性,最终降低头部姿态q和q’之间的差值,也就使得头部姿态补偿矩阵得以优化,减小头部姿态补偿矩阵对应的平均欧拉角。

在一实施方式中,如图5所示头部姿态补偿矩阵生成模块500可包括头部姿态q’预测单元501和头部姿态补偿矩阵计算单元503。头部姿态q’预测单元根据待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算第二时间,获取所述第二时间的头部姿态q’;头部姿态补偿矩阵计算单元根据第一时间的头部姿态q和第二时间的头部姿态q’计算头部姿态补偿矩阵。

在一实施方式中,如图6所示,头部姿态q’预测单元600可包括待显示周期开始时间t计算单元601和第二时间计算单元603。

待显示周期开始时间t计算单元601可根据所述待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c和已完成的任一个显示周期的开始时间a计算待显示周期的开始时间t。在具体实施方式中,时间t的计算方法可以是:待显示图像帧完成渲染的时间或所述待显示图像帧完成渲染之后的任一时间c与已完成的任一显示周期的开始时间a的差值除以显示周期t再加1,再与显示周期t的乘积,再与已完成的显示周期的开始时间a之和,即,t=((c-a)/t+1)*t+a。

第二时间计算单元603可根据待显示周期的开始时间t和显示周期t计算第二时间点,并获取第二时间点的头部姿态q’。在具体实施方式中,第二时间的计算方法可以是:显示周期t乘1/2,再与待显示周期的开始时间t之和,即第二时间=t+t/2。

在一实施方式中,头部姿态补偿矩阵计算单元的计算方法可以是:第一时间的头部姿态q转换为第一旋转矩阵,第二时间的头部姿态q’转换为第二旋转矩阵,第一旋转矩阵的逆矩阵与第二旋转矩阵的乘积即为头部姿态补偿矩阵。

在一实施方式中,如图7所示,校正系数计算模块700可包括待显示图像帧分块单元701、头部姿态补偿计算单元703和校正系数计算单元705。待显示图像帧分块单元701将所述待显示图像帧切分为m行、n列的网格块。在具体实施方式中,m和n可根据软件和硬件的需求进行合理的取值。头部姿态补偿计算单元703根据头部姿态补偿矩阵对待显示图像帧的m行、n列的网格块做姿态补偿。校正系数计算单元705根据所述姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标计算校正系数。

在一实施方式中,校正系数计算单元可根据二维映射算法计算姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标的校正系数。在具体实施方式中,假设经过头部姿态补偿之后的待显示图像帧中一个网格块的四个坐标点为(u1,v1)、(u2,v2)、(u3,v3)、(u4,v4),其对应待显示图像帧的网格块的坐标为(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),可用如下公式计算校正系数:

u1=(a*x1+b*y1+c)/(g*x1+h*y1+1);...(1)

v1=(d*x1+e*y1+f)/(g*x1+h*y1+1);...(2)

u2=(a*x2+b*y2+c)/(g*x2+h*y2+1);...(1)

v2=(d*x2+e*y2+f)/(g*x2+h*y2+1);...(2)

u3=(a*x3+b*y3+c)/(g*x3+h*y3+1);...(1)

v3=(d*x3+e*y3+f)/(g*x3+h*y3+1);...(2)

u4=(a*x4+b*y4+c)/(g*x4+h*y4+1);...(1)

v4=(d*x4+e*y4+f)/(g*x4+h*y4+1);...(2)

求解a,b,c,d,e,f,g,h这8个未知数即为待显示图像帧头部姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标的校正系数。

在一实施方式中,校正系数计算模块可包括左眼校正系数计算单元和右眼校正系数计算单元,左眼校正系数计算单元在[t-0.5t,t]之间计算所述待显示图像帧的左眼校正系数;右眼校正系数计算单元在[t,t+0.5t]之间计算所述待显示图像帧的右眼校正系数。这样分两个模块计算,一方面能够将软件系数更新时间更好的平均到一帧时间中,不容易出现显示扫描引擎(presentationengine,pe)读取校正系数的时候,校正系数还未完成更新所造成的问题。另一方面,分两次计算,左右眼可以有自己的头部姿态补偿矩阵,右眼的头部姿态补偿矩阵将在t时刻被计算,更加精确的同时,还能令头部姿态补偿矩阵所对应的欧拉角度更加小。

在一实施方式中,图像帧计算模块可由硬件电路完成。通过软件计算坐标参数,生成校正系数,硬件根据校正系数直接插值运算出实际像素,并输出给屏幕,避免额外读写过程,降低了系统带宽、功耗和vr显示延迟。

在一实施方式中,如图8所示,图像帧计算模块的硬件电路可包括坐标运算器801、数据提取器803和插值运算器805。坐标运算器801根据校正系数计算显示图像帧中的像素点坐标对应在待显示图像帧中的像素点坐标;数据提取器803选取待显示图像帧中的像素点坐标相邻的至少四个像素点的像素值;插值运算器805根据数据提取器803选取的至少四个像素点的像素值进行插值计算,以生成所述显示图像帧中的像素点坐标的像素值,输出头部姿态补偿后的显示图像帧。在具体实施方式中,插值运算器805可以是双线性插值运算器或双三次插值运算器。

在一实施方式中,如图9所示,校正系数计算模块还可以包括畸变色差补偿计算单元903。其中,待显示图像帧分块单元901、头部姿态补偿计算单元905和校正系数计算单元907可以图7中的待显示图像帧分块单元701、头部姿态补偿计算单元703和校正系数计算单元705相同。畸变色差补偿计算单元903根据畸变色差补偿算法对所述待显示图像帧的m行、n列的网格块进行畸变色差补偿;头部姿态补偿计算单元905再将畸变色差补偿后的网格块应用头部姿态补偿矩阵,以完成对待显示图像帧的头部姿态补偿;校正系数计算单元907再根据畸变色差补偿和姿态补偿后的网格块的顶点坐标与待显示图像帧的网格块的顶点坐标计算校正系数。则校正系数带有畸变色差补偿和头部姿态补偿信息了,一套校正系数同时支持畸变色差补偿和头部姿态补偿,降低vr系统的性能要求和复杂度。通过对vr系统中的待显示图像帧所携带的头部姿态进行精确补偿,校正了由于vr系统延时、vr系统丢帧、头部姿态预测算法引入的预测误差、行扫描硬件延时等因素所带来的感知头部姿态误差,同时还能够校正由单透镜vr光学系统所带来的畸变和色差,保证用户看到无畸变无色差图像帧的同时,还保持了显示图像帧和实际用户头部姿态的一致性,最终降低了用户在使用vr系统时遇到的拖影现象和眩晕感。

在具体实施方式中,可加载畸变色差补偿预处理网格数据,针对不同的vr系统,在vr系统确定的情况下,畸变色差补偿网格通常会选取一个最优结果,然后保存为文件,后续每次vr系统启动只需要加载该文件即可。

在一实施方式中,可采用本发明提供的头部姿态补偿装置得到输出图像帧,并直接显示。不需要gpu来做像素实时生成,直接读取待显示图像帧,将实时计算出的结果直接显示,不需要中间memory的读写过程,一套校正系数同时支持畸变色差补偿和头部姿态补偿,降低vr系统的性能要求和复杂度,降低了带宽需求、功耗和显示延迟。

应当理解的是,以上实施例仅用以说明本发明的技术方案,而非对其限制,对本领域技术人员来说,可以对上述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而所有这些修改和替换,都应属于本发明所附权利要求的保护范围。

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