一种实时虚拟现实加速方法及装置与流程

文档序号:11201085阅读:1519来源:国知局
一种实时虚拟现实加速方法及装置与流程

本发明涉及虚拟现实领域,具体涉及一种实时虚拟现实加速方法及装置。



背景技术:

vr头显镜片畸变能最大化覆盖人的视觉范围的扭曲,呈现更大的视场角,增强体验的沉浸感。显示屏上的图像在透过透镜放大时,图像会被畸变。为了抵消这个畸变,需要对图像进行拉伸扭曲,这样投影到视网膜上的就是没有变形的图像,该技术被称为反畸变。

白光通过三棱镜时射出的是一道彩虹,那是因为不同的颜色光线折射率不同,对于vr的透镜边缘也会有同样场景发生,为解决该问题,采用类似反畸变的做法,利用光路可逆原理,先在图像进入透镜前做一次反色散,这样经过透镜出来后的图像就正常了,这种技术就叫反色散。

异步时间扭曲是一种生成中间帧的技术,当游戏或视频图像不能保持足够帧率的时候,异步时间扭曲能产生中间帧,从而有效减少图像画面的抖动。在使用vr设备时,由于头部运动过快,而造成场景渲染的延迟,时间扭曲通过基于方向扭曲一副被送往显示器之前的图像,来解决这个延迟问题。异步时间扭曲技术被广泛用于vr等产品中,有效解决图像抖动、延迟,从而减少视频图像眩晕感。

现有实现方式大多是基于gpu加速的反畸变、反色散及异步时移,典型的有gearvr、oclulus的vr头显及cardbord的头显产品,这些产品都对gpu性能、ddr速度、显示时延及整机功耗提出了挑战。现有的技术主要存在以下缺点:反畸变、反色散、异步时间扭曲是分步通过gpu或软件运算进行的,计算反畸变、反色散、异步时间扭曲需要耗费gpu负载及系统负载;异步时间扭曲需要gpu硬件支持合理的抢占粒度,同时需要操作系统和驱动程序支持gpu抢占;实现时gpu是存储器-存储器方式,带宽消耗很大,从而导致功耗增加;且gpu采用的是离线方式,额外增加了处理延时,vr体验变差。



技术实现要素:

本发明解决其技术问题所采用的技术方案是:提供一种实时虚拟现实加速方法,包括:步骤1,获取输入图像;步骤2,将输出图像缓存划分成m行、n列的矩形网格块,并输出所述矩形网格块的顶点坐标;步骤3,根据反畸变、反色散及时间扭曲融合的算法模型计算出所述输出图像缓存网格块的顶点坐标对应的输入图像网格块的顶点坐标;步骤4,根据所述输出图像缓存网格块的顶点坐标和所述输入图像网格块中对应的顶点坐标计算所述输出图像缓存和所述输入图像中每对网格块的二维映射系数;步骤5,根据所述二维映射系数计算输出图像像素点对应在输入图像像素点的坐标;步骤6,选取与所述输出图像像素点对应在所述输入图像像素点的坐标临近的至少四个像素点的像素值,以计算所述输出图像像素点的像素值;步骤7,输出反畸变、反色散及异步时间扭曲后的图像。

所述步骤1中的输入图像是经过球形变换的视频图像。

所述步骤2中的m和n的取值为2的幂次。

所述步骤4具体为:根据所述输出图像缓存网格块的顶点坐标和所述输入图像网格块中对应的顶点坐标计算所述输出图像缓存和所述输入图像中每对网格块的r、g、b分量的二维映射系数。

所述步骤5具体为:根据所述r、g、b分量的二维映射系数分别计算输出图像缓存中的像素点的r、g、b分量对应在输入图像中像素点的r、g、b分量的坐标。

所述步骤5根据所述二维映射系数计算输出图像缓存中的像素点对应在输入图像中像素点的坐标由硬件电路完成。

所述步骤6选取与所述输出图像像素点对应在所述输入图像像素点的坐标临近的至少四个像素点的像素值,以计算所述输出图像像素点的像素值由硬件电路完成。

所述步骤6具体为:选取与所述输出图像像素点对应在所述输入图像像素点的坐标临近的至少四个像素点的像素值,采用双线性插值算法或双三次插值算法进行插值计算,以计算所述输出图像像素点的像素值。

所述步骤7输出反畸变、反色散及异步时间扭曲后的图像经过图像合成之后直接显示。

本发明还提供一种实时虚拟现实加速装置,包括输入图像缓存模块、输出图像缓存分块模块、映射系数计算模块、图像计算模块;输入图像缓存模块接收并保存输入图像;输出图像缓存分块模块将输出图像缓存划分成m行、n列的矩形网格块,并输出所有网格块的顶点坐标;映射系数计算模块根据反畸变、反色散及时间扭曲融合的算法模型计算所述输出图像缓存网格块的顶点坐标对应的输入图像中的顶点坐标,并根据所述输出图像缓存网格块的顶点坐标和所述输入图像网格块中对应的顶点坐标计算所述输出图像缓存和所述输入图像缓存中每对网格块的二维映射系数;图像计算模块根据所述二维映射系数计算所述输出图像像素点对应在所述输入图像像素点的坐标,选取与所述输出图像像素点对应在所述输入图像像素点的坐标临近的至少四个像素点的像素值,以计算所述输出图像像素点的像素值,以输出反畸变、反色散及异步时间扭曲后的图像。

所述输入图像是经过球形变换的视频图像。

所述m和n的取值为2的幂次。

所述映射系数计算模块包括顶点坐标计算单元和映射系数计算单元,顶点坐标计算单元根据反畸变、反色散及异步时间扭曲融合的算法模型计算所述输出图像缓存网格块的顶点坐标对应的所述输入图像中的顶点坐标;映射系数计算单元根据所述输出图像缓存网格块的顶点坐标和所述输入图像网格块中对应的顶点坐标计算所述输出图像缓存和所述输入图像中每对网格块的二维映射系数。

所述映射系数计算单元包括r分量映射系数计算单元、g分量映射系数计算单元和b分量映射系数计算单元。

所述图像计算模块根据所述二维映射系数计算所述输出图像像素点对应在所述输入图像像素点的坐标,并选取与所述输出图像像素点对应在所述输入图像像素点的坐标临近的至少四个像素点的像素值,以计算所述输出图像像素点的像素值由硬件电路完成。

所述图像计算模块包括坐标运算器、坐标判断器、取数器和图像插值生成器:坐标运算器根据所述二维映射系数计算所述输出图像像素点对应在所述输入图像像素点的坐标;坐标判断器判断所述坐标运算器得出的坐标是否有效,当所述坐标运算器计算出的坐标超过所述输入图像的坐标范围时,所述坐标判断器判断所述输出图像像素点对应在所述输入图像像素点的坐标无效,则所述输出图像像素点的像素值为0;取数器在输入图像中选取与所述坐标判断器判断的有效坐标临近的至少四个像素点的像素值;图像插值生成器根据所述取数器选取的像素值进行插值计算,以计算所述输出图像像素点的像素值,生成反畸变、反色散及异步时间扭曲后的图像。

所述坐标运算器包括r分量坐标运算单元、g分量坐标运算单元和b分量坐标运算单元。

当所述坐标运算器得出的r、g、b分量对应到输入图像的坐标超过所述输入图像的坐标范围时,所述坐标判断器判断所述坐标运算器得出的r、g、b分量对应到输入图像的坐标无效,则所述输出图像像素点的像素值为0。

所述图像插值生成器包括双线性插值计算器或双三次插值计算器,用于根据所述取数器选取的像素值进行插值计算,以计算所述输出图像像素点的像素值,以生成反畸变、反色散及异步时间扭曲后的图像。

所述图像计算模块输出的反畸变、反色散及异步时间扭曲后的图像经过图像合成后直接显示。

本发明的实时虚拟现实加速方法通过对输出图像缓存进行网格划分得到的顶点,再融合反畸变、反色散和异步时间扭曲三种功能由软件顶点渲染的方式得出对应输入图像网格顶点坐标,然后对输入输出图像对应每个网格块的顶点坐标采用二维映射方式计算出把反畸变、反色散和异步时间扭曲功能融合在一起的一套系数。最后再由输入图像插值的方式实现输出图像。该方法有效利用gpu顶点渲染优势,同时降低gpu插值大量运算,进而有效的解决了gpu负载,资源抢占的问题,并且插值算法可自适应调整,提高图像清晰度并优于gpu渲染。

本发明还提供实时虚拟现实加速装置,把输入图像及输出图像通过块映射系数(mxn)的方式进行二维映射,硬件以查找表方式完成目标图像在原图像的映射,最终以插值方式生产最终图像,提高了渲染速度,降低显示延迟,解放gpu并降低系统负载,同时灵活的把算法模型通过软件方式融入到顶点坐标中,能自适应多类反畸变、atw等模型,不需要硬件做任何改动。在线的图像加速处理,只需数据读取不需要数据写出,减少带宽消耗降低功耗,减少gpu及系统负载达到降低功耗,同时进一步降低时延,提升体验,无眩晕。

附图说明

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

图1是本发明一实施例的实时虚拟现实加速方法100的流程框图;

图2是本发明一实施例的输出图像缓存网格块与输入图像网格块的二维映射原理示意图;

图3是本发明一实施例的实时虚拟现实加速装置300的框图;

图4是本发明一实施例的映射系数计算模块400的框图;

图5是本发明一实施例的图像计算模块500的电路框图;

图6是本发明一实施例的实时虚拟现实加速装置600的框图;

图7是本发明一实施例的左右eyebuffer计算流程示意图。

图8是本发明一实施例的输入图像分块取数示意图。

具体实施方式

现结合附图,对本发明的较佳实施例作详细说明。

如图1所示,是本发明的一实施例的实时虚拟现实加速方法100的流程框图。步骤101首先获取输入图像,所述输入图像可为解码后的视频图像经过球形变换之后生成的图像,并保存在相应的缓存中;在具体实施方式中,可保存在eyebuffer中。步骤103将输出图像缓存划分成m行、n列的矩形网格块,并输出所述矩形网格块的顶点坐标。步骤105根据反畸变、反色散及异步时间扭曲融合的算法模型计算出输出图像缓存网格块的顶点坐标对应的输入图像网格块的顶点坐标;在具体实施方式中,现有技术中的多种反畸变、反色散及异步时间扭曲融合的算法模型都可以用于完成上述顶点坐标的计算。步骤107根据输出图像缓存网格块的顶点坐标和输入图像网格块中对应的顶点坐标计算输出图像缓存和输入图像中每对网格块的二维映射系数。在具体实施方式中,可分别计算每对网格块的r、g、b分量的映射系数。步骤109根据二维映射系数计算出输出图像像素点对应在输入图像中像素点的坐标;步骤111选取与输出图像像素点对应在输入图像像素点的坐标临近的至少四个像素点的像素值,以计算所述输出图像像素点的像素值。在具体实施方式中,可根据二维映射系数,对输出图像缓存中的网格块按照行扫描的方式计算输出图像缓存中的像素点对应在输入图像中像素点的坐标,并可按照行扫描的方式计算输出图像像素值。步骤113输出反畸变、反色散及异步时间扭曲后的图像。

通过对输出图像缓存进行网格划分,然后通过软件计算的方式,对输入输出图像块的顶点坐标采用二维映射方式插值实现反畸变、反色散和异步时间扭曲功能,并且把这三种功能通过一套系数融合在一起,一次性完成,实现vr加速,并有效的解决了gpu负载,资源抢占的问题,同时,灵活的把算法模型通过软件方式融入到顶点坐标中,能自适应多类反畸变、反色散和异步时间扭曲模型。

在一实施方式中,输入图像可以是经过球形变换的视频图像。

在一实施方式中,输出图像缓存划分的矩形网格块的边长m和n可取值为2的幂次,可节省计算量和计算时间。

在具体实施方式中,假设输出图像缓存网格块的顶点坐标为{x',y'},对应在输入图像中的坐标是{x,y},则满足以下公式:

a(x,y)=1+k1*(x*x)+k2*(y*y);

x=x'*a(x,y);

y=y'*a(x,y);

其中,a(x,y)表示(x,y)处坐标增益,k1、k2表示图像水平、垂直的畸变因子。当计算出输入图像中的坐标(x,y)后,设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)即为输出图像缓存网格块的顶点坐标对应的输入图像网格块的顶点坐标。

在一实施方式中,可根据输出图像缓存网格块的顶点坐标和输入图像网格块中对应的顶点坐标计算输出图像缓存和输入图像中每对网格块的r、g、b分量的二维映射系数。当只计算反畸变和异步时间扭曲算法时,可直接计算输出图像缓存和输入图像中每对网格块的二维映射系数。在具体实施方式中,为实现方便,二维映射系数的存放方式按照行扫描的方式,每块按像素分量存放其系数a(a(r)、a(g)、a(b)),b(b(r)、b(g)、b(b)),c(c(r)、c(g)、c(b)),d(d(r)、d(g)、d(b)),e(e(r)、e(g)、e(b)),f(f(r)、f(g)、f(b)),g(g(r)、g(g)、g(b)),h(h(r)、h(g)、h(b))、β(β(r)、β(g)、β(b)),,存放顺序为先存r分量8x32bits,接着为g的8x32bits,b的8x32bits,及常数项β分量8x32bits,然后下一个block数据。其中8x32bits是指8个(a,b,c,d,e,f,g,h)32bits数据,而β分量则只有r,g,b的3个32bits,设置成8x32bits是为了硬件设计对齐。

在一实施方式中,可根据r、g、b分量的二维映射系数分别计算输出图像缓存中的像素点的r、g、b分量对应在输入图像中像素点的r、g、b分量的坐标。

在一实施方式中,步骤109根据二维映射系数计算输出图像像素点对应在输入图像像素点的坐标可由硬件电路完成。步骤111选取与所述输出图像像素点对应在所述输入图像像素点的坐标临近的至少四个像素点的像素值,以计算所述输出图像像素点的像素值也可由硬件电路完成。通过将反畸变、atw及反色散算法模型融入到输入输出缓存网格坐标中,并通过硬件查表方式实现图像插值效果,在线实现反畸变、atw及反色散等过程,减少数据读写,降低带宽及功耗,降低时延及眩晕。

在一实施方式中,可采用双线性插值算法或双三次插值算法,选取与输出图像像素点对应在输入图像像素点的坐标临近的至少四个像素点的像素值,插值计算出输出图像对应像素点的像素值。通过划分网格顶点,采用二维映射方式进行插值计算,实现vr加速,插值算法可自适应调整,提高图像清晰度并优于gpu渲染。

在具体实施方式中,可根据不同的插值算法在输入图像中选取不同个数的像素点的值进行插值计算以得到输出图像像素点的像素值。当采用双线性插值算法时,可选取与输出图像像素点对应在输入图像像素点的坐标临近的四个像素点的像素值进行插值计算。当采用双三次插值算法时,可选取与输出图像像素点对应在输入图像像素点的坐标临近的十六个像素点的像素值进行插值计算。

在一实施方式中,输出的反畸变、反色散及时间扭曲后的图像在经过图像合成之后,可直接在显示设备显示。

图2是本发明的一实施例的输出图像缓存网格块与输入图像网格块的二维映射原理示意图。下面将结合图2详细说明图1所示的实时虚拟现实加速方法100的执行流程。

首先,步骤101接收经过球形变换的视频图像,并保存在输入缓存中,例如eyebuffer中。

第二步:步骤103将输出缓存切分成m*n块,并输出每个网格块的顶点坐标。例如,图2中右图,输出缓存中的网格块vd的四个顶点坐标分别为(i0,j0)、(i1,j1)、(i2,j2)、(i3,j3)。

第三步:步骤105根据反畸变、反色散及异步时间扭曲融合的算法模型,计算出输出图像缓存网格块的顶点坐标对应的输入图像网格块的顶点坐标,例如,图2中左图的vd对应的在输入图像中的网格块vs的四个顶点坐标分别为(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3)。

第四步:步骤107根据输出缓存中网格块的顶点坐标和对应的输入图像的网格块的顶点坐标计算输出缓存和输入图像中每对网格块的二维映射系数a,b,c,d,e,f,g,h。在具体实施方式中,为计算输出缓存中网格块vd和输入图像网格块vs的二维映射系数,可采用如下计算公式:

第五步:步骤109根据二维映射系数a,b,c,d,e,f,g,h,计算输出图像缓存中的每个像素点对应在输入图像中像素点的坐标。在具体实施方式中,为计算图2右图网格块vd中的像素点(i,j)对应的在输入图像网格块vs中的像素点(x,y),可采用如下计算公式:

χ=(a*i+b*j+c)/q

y=(d*i+e*j+f)/q

q=g*i+h*j+β

其中,β是归一化的常数。

第六步:步骤111根据步骤109选取与输入图像网格块vs中的像素点(x,y)临近的至少四个像素点的像素值,进行插值计算,得到输出缓存中像素点(i,j)的像素值。在具体实施方式中,可采用双线性插值算法,则在输入图像中选择与像素点(x,y)相邻的四个像素点,例如,像素点(x,y+1)、(x+1,y+1)、(x+1,y),(x-1,y-1)的像素值做双线性插值计算,得到输出buffer中像素点(i,j)的像素值。也可选择与像素点(x,y)相邻的十六个像素点的像素值做双三次插值计算,得到输出缓存中像素点(i,j)的像素值。

第七步:步骤111计算出输出缓存中所有像素点的像素值后,步骤113即输出反畸变、反色散及异步时间扭曲后的图像,再与其他图层进行合成叠加,最后通过显示通道直接送入屏端显示。本发明通过软件计算对出输入输出图像缓存进行网格划分,得出输入输出图像块的顶点坐标,然后采用二维映射方式得出对应网格映射系数,最后通过硬件插值实现反畸变、atw及反色散功能,并且把这三种功能通过一套系数融合在一起,一次性完成,实现vr加速。该方法有效地解决了gpu负载,资源抢占的问题,同时也可以灵活的把算法模型通过软件方式融入到顶点坐标中,能自适应各种反畸变、反色散和异步时间扭曲模型。

图3是本发明一实施例的实时虚拟现实加速装置300的框图,包括输入图像缓存模块301、输出图像缓存分块模块303、映射系数计算模块305、图像计算模块307。

输入图像缓存模块301接收并保存输入图像;在具体实施方式中,输入图像可以是经过球形变换后的视频图像,并可保存在eyebuffer中。输出图像缓存分块模块303将输出图像缓存划分成m行、n列的矩形网格块,并输出所有网格块的顶点坐标。映射系数计算模块305根据反畸变、反色散及异步时间扭曲融合的算法模型计算输出图像缓存网格块的顶点坐标对应的输入图像中的顶点坐标,并根据输出图像缓存网格块的顶点坐标和输入图像网格块中对应的顶点坐标,计算输出图像缓存和输入图像中每对网格块的二维映射系数;在具体实施方式中,反畸变、反色散及异步时间扭曲融合的算法模型可为现有技术中的各类算法模型。图像计算模块307根据二维映射系数计算输出图像像素点对应在输入图像像素点的坐标,并选取与输出图像像素点对应在输入图像像素点的坐标临近的至少四个像素点的像素值,以计算输出图像像素点的像素值。在具体实施方式中,可根据二维映射系数对输出图像按照行扫描的方式计算出该输出图像的像素点对应在输入图像缓存中的像素点坐标,并利用得到的输入图像像素用插值方式计算出输出图像的像素值。输出图像中所有像素点值计算完成,即输出反畸变、反色散及异步时间扭曲后的图像。

实时虚拟现实加速装置300通过对输入图像及输出图像缓存进行网格划分,然后对输入输出图像块的顶点坐标采用二维映射方式插值实现反畸变、反色散及异步时间扭曲功能,并且把这三种功能通过一套系数融合在一起,一次性完成。有效的解决了gpu负载消耗大、资源抢占的问题,可将图像计算模块通过硬件化实现在显示通路上,并通过硬件查表方式实现图像插值效果,减少数据读写,进一步减少了带宽,达到降低功耗及延迟,不眩晕的vr体验需求。

在一实施方式中,输入图像是经过球形变换的视频图像。

在一实施方式中,为硬件计算方便,输出图像缓存切分的网格块的m行和n列可取值为2的幂次,可节省计算量及计算时间。

在一实施方式中,如图4所示,映射系数计算模块400可包括顶点坐标计算单元401和映射系数计算单元403。顶点坐标计算单元401根据反畸变、反色散及异步时间扭曲融合的算法模型计算输出图像缓存网格块的顶点坐标对应的输入图像中的顶点坐标;映射系数计算单元403根据所述输出图像缓存网格块的顶点坐标和所述输入图像网格块中对应的顶点坐标计算所述输出图像缓存和所述输入图像中每对网格块的二维映射系数。通过划分网格顶点,采用二维映射方式进行插值实现vr加速。

在一实施方式中,映射系数计算单元可包括r分量映射系数计算单元、g分量映射系数计算单元和b分量映射系数计算单元。由输入输出网格坐标计算出r、g、b分量的二维映射系数。当只计算反畸变和异步时间扭曲算法时,可直接计算输出图像缓存和输入图像中每对网格块的二维映射系数。在具体实施方式中,为实现方便,映射系数计算模块307计算出的二维映射系数的存放方式按照行扫描的方式,每个网格块按像素分量存放其系数a(a(r)、a(g)、a(b)),b(b(r)、b(g)、b(b)),c(c(r)、c(g)、c(b)),d(d(r)、d(g)、d(b)),e(e(r)、e(g)、e(b)),f(f(r)、f(g)、f(b)),g(g(r)、g(g)、g(b)),h(h(r)、h(g)、h(b))、β(β(r)、β(g)、β(b)),存放顺序为先存r分量8x32bits,接着为g的8x32bits,b的8x32bits,及常数项β分量8x32bits,然后是下一个网格块的数据。其中,8x32bits是指8个(a,b,c,d,e,f,g,h)32bit数据,而β分量则只有r,g,b的3个32bits,设置成8x32bits是为了硬件设计对齐。

在一实施方式中,图像计算模块根据二维映射系数计算输出图像像素点对应在输入图像像素点的坐标,并选取与输出图像像素点对应在输入图像像素点的坐标临近的至少四个像素点的像素值,以计算输出图像像素点的像素值可由硬件电路完成。通过在线实现反畸变、反色散及异步时间扭曲的过程,只需数据读取不需要数据写入,降低带宽及功耗,降低时延及眩晕。

在一实施方式中,如图5所示,图像计算模块可包括坐标运算器501、坐标判断器503、取数器505和图像插值生成器507。坐标运算器501根据二维映射系数计算输出图像像素点对应在所述输入图像像素点的坐标;坐标判断器503判断坐标运算器501得出的输出图像像素点对应在所述输入图像像素点的坐标是否合理有效;当坐标运算器计算出的坐标超过输入图像的坐标范围时,坐标判断器判断输出图像像素点对应在输入图像像素点的坐标无效,此时,输出图像像素点的像素值为0。取数器505在输入图像中选取与坐标判断器503判断的有效坐标临近的至少四个像素点的像素值;图像插值生成器507根据取数器505提取的像素值进行插值计算,以计算输出图像像素点的像素值,生成反畸变、反色散及异步时间扭曲后的图像。

在一实施方式中,坐标运算器可包括r分量坐标运算单元、g分量坐标运算单元和b分量坐标运算单元,根据映射系数计算模块计算的r、g、b分量的二维映射系数分别计算输出图像缓存中的像素点的r、g、b分量对应在输入图像中像素点的r、g、b分量的坐标。

在一实施方式中,当坐标运算器得出的r、g、b分量对应到输入图像的坐标超过输入图像的坐标范围时,坐标判断器判断所述坐标运算器得出的r、g、b分量对应到输入图像的坐标无效,此时,输出图像像素点的像素值为0。

在一实施方式中,图像插值生成器可包括双线性插值计算器或双三次插值计算器,双线性插值计算器或双三次插值计算器根据取数器选取的像素值进行插值计算,以计算输出图像像素点的像素值,最终生成反畸变、反色散及异步时间扭曲后的图像。通过划分网格顶点,采用二维映射方式进行插值计算,实现vr加速,插值算法可自适应调整,提高图像清晰度并优于gpu渲染。

在具体实施方式中,可根据不同的插值计算器的算法在输入图像中选取不同个数的像素点的值进行插值计算以得到输出图像像素点的像素值。当采用双线性插值计算器时,可选取与输出图像像素点对应在输入图像像素点的坐标临近的四个像素点的像素值进行插值计算。当采用双三次插值计算器时,可选取与输出图像像素点对应在输入图像像素点的坐标临近的十六个像素点的像素值进行插值计算。

在一实施方式中,图像计算模块输出的反畸变、反色散及异步时间扭曲后的图像可在经过图像合成之后,直接在显示屏上显示。通过在线实现反畸变、反色散及时间扭曲的过程,减少数据读写,降低带宽及功耗,降低时延及眩晕。

图6是本发明一实施例的实时虚拟现实加速装置600的框图,包括输出图像缓存划分模块601、映射系数计算模块603和图像计算模块605。

输出图像缓存划分模块601将输出图像缓存划分成m行、n列的矩形网格块,并输出所有网格块的顶点坐标。

映射系数计算模块603包括了r分量映射系数计算单元、g分量映射系数计算单元和b分量映射系数计算单元,分别根据反畸变、反色散及异步时间扭曲融合的算法模型计算输出图像缓存网格块r、g、b的顶点坐标对应的输入图像中的r、g、b顶点坐标,并根据输出图像缓存网格块r、g、b的顶点坐标和输入图像网格块中对应的r、g、b顶点坐标,计算输出图像缓存和输入图像中每对网格块的二维映射系数。

图像计算模块605包括了取数器、坐标运算器、坐标判断器和图像插值生成器;坐标运算器包括r分量坐标运算单元、g分量坐标运算单元和b分量坐标运算单元,分别根据映射系数计算模块计算的r、g、b分量的二维映射系数分别计算输出图像缓存中的像素点的r、g、b分量对应在输入图像中像素点的r、g、b分量的坐标;当坐标运算器得出的r、g、b分量对应到输入图像的坐标超过输入图像的坐标范围时,坐标判断器判断所述坐标运算器得出的r、g、b分量对应到输入图像的坐标无效,此时,输出图像像素点的像素值为0;取数器根据坐标判断器判断有效的坐标在输入图像中提取用于插值计算的像素值;图像插值生成器根据取数器提取的数据进行插值计算,以生成输出图像像素值,最终生成反畸变、反色散及异步时间扭曲后的图像。在具体实施方式中,输出图像缓存划分模块601和映射系数计算模块603可由软件实现,图像计算模块605可由硬件电路直接完成,通过在线实现反畸变、反色散及异步时间扭曲的过程,只需数据读取不需要数据写入,降低带宽及功耗,降低时延及眩晕。

在一实施方式中,计算输出图像缓存的网格块与输入图像的网格块的二维映射系数时,对于单屏方案,可以采用图7中的方式,分左右eyebuffer,对于右侧eyebuffer的二维映射系数的计算,可不晚于7/16的帧时间完成即可,这样可以适当减轻计算系数的负担,同时不会产生图像延迟。

如图8右图所示,屏幕是按照逐行扫描显示输出,每输出一行数据对应到输入是图8左图的曲线对应的像素点,硬件在取数时为了存取数据,需要开辟linebuffer进行存储,则需要至少开辟如图8左图最顶端横线至曲线最底端的长方形区域的linebuffer,假设输入图像宽为200,曲线深度为40,那linebuffer的大小为200*40才能装载下曲线。

在一实施方式中,考虑到对于输出缓存是逐行扫描的方式,且需要在线输出,为减少linebuffer数量、降低面积,输入图像可依据图8所示分块方式进行取数。对输入曲线进行切块覆盖,则将减少开辟的linebuffer。假设图4中左图中每块大小为γ个像素,分块的高度可依据各类反畸变、反色散和异步时间扭曲的算法模型与γ值运算统计确定,其中,γ只是参考值,分块越小越能节省linebuffer的行数,这样就降低了linebuffer的行数成本,linebuffer总宽度则由输入图像分辨率的宽度与输出图像宽度的最大值决定,例如,要支持双屏1080p,则设置为1280pixel宽即可。

在具体实施方式中,假设图8左图中小块宽为32,则linebuffer总高度可能只需要16就够了,即只需要开辟linebuffer为200*16。如果块切的越细,如小块宽变成16,那linebuffer总高度可能变成8,从而开辟的linebuffer就变成200*8,这样就大大减少了硬件设计的linebuffer成本,节省设计面积。

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

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