全景视频渲染方法和装置
技术领域
本发明涉及多媒体技术领域,尤其涉及一种全景视频渲染方法和装置。
背景技术
目前在移动终端的视频播放器中,渲染全景视频的原理为:通过构建虚拟球体,将全景图像映射到球体的内平面(内球面),此时从球心处观察内球面可以获得360度观看的体验。
仅针对全景视频渲染领域,目前的解决方案存在运算量大的缺点,仅能较好的支持高端设备,并且,不能灵活运用设备的运算特性。尤其是,在低端设备上无法像在高端设备一样流畅地播放全景视频。
发明内容
技术问题
有鉴于此,本发明要解决的技术问题是,如何在终端设备上流畅的播放全景图像。
解决方案
为了解决上述技术问题,根据本发明的一实施例,提供了一种全景视频渲染方法,包括:
计算虚拟球体的第一顶点坐标以及映射图案需要的第一纹理坐标;
根据所述第一顶点坐标和所述第一纹理坐标对待处理视频进行全景渲染,并计算所述全景渲染所花费的实际时间;
根据所述实际时间和待处理视频的每帧渲染所花费的最大时间,确定是否重新计算所述第一顶点坐标和所述第一纹理坐标,以适应终端设备的当前处理能力。
对于上述方法,在一种可能的实现方式中,还包括:
根据所述待处理视频的帧率,计算所述最大时间。
对于上述方法,在一种可能的实现方式中,根据所述第一顶点坐标和所述第一纹理坐标对所述待处理视频进行全景渲染,并计算所述全景渲染所花费的实际时间,包括:
根据终端设备的控制参数,对所述第一顶点坐标进行预处理;
根据预处理后的第二顶点坐标创建球体,并根据所述第一纹理坐标在所创建的球体的表面创建全景图像纹理;
计算所述待处理视频的RGB数据,并将所述RGB数据和所述全景图像纹理映射到所创建的球体表面,以生成全景图像;
计算从预处理步骤到生成全景图像步骤所花费的实际时间。
对于上述方法,在一种可能的实现方式中,计算虚拟球体的第一顶点坐标以及映射图案需要的第一纹理坐标,包括:
采用下式2至式4计算所述第一顶点坐标;
采用下式5至式6计算所述第一纹理坐标;
Sx=cos((Av+Sv)*PI/180)*sin(Ah*PI/180) 式2,
Sy=sin((Av+Sv)*PI/180) 式3,
Sz=cos((Av+Sv)*PI/180)*cos(Ah*PI/180) 式4,
Tx=Ah/360 式5,
Ty=(Av+Sv)/180+0.5 式6,
其中,Sx,Sy,Sz是所述第一顶点坐标;Tx,Ty是所述第一纹理坐标;PI=π;Av是当前纵向构建角度,取值范围是0至180度;Ah为当前横向构建角度,取值范围是0至360度;Sv为角度增幅,能够自定义。
对于上述方法,在一种可能的实现方式中,根据终端设备的控制参数,对所述第一顶点坐标进行预处理,包括:
根据所述终端设备的控制参数构建控制矩阵;
根据所述第一顶点坐标和所述控制矩阵得到所述第二顶点坐标。
对于上述方法,在一种可能的实现方式中,计算所述待处理视频的RGB数据,包括:
从所述待处理视频中获取YUV数据;
对所述YUV数据进行色彩空间转化,得到所述RGB数据。
为了解决上述技术问题,根据本发明的另一实施例,提供了一种一种全景视频渲染装置,包括:
第一坐标计算模块,用于计算虚拟球体的第一顶点坐标以及映射图案需要的第一纹理坐标;
全景渲染模块,与所述第一坐标计算模块连接,用于根据所述第一顶点坐标和所述第一纹理坐标对待处理视频进行全景渲染,并计算所述全景渲染所花费的实际时间;
校正模块,与所述第一坐标计算模块和全景渲染模块分别连接,用于根据所述实际时间和待处理视频的每帧渲染所花费的最大时间,确定是否使所述第一坐标计算模块重新计算所述第一顶点坐标和所述第一纹理坐标,以适应终端设备的当前处理能力。
对于上述装置,在一种可能的实现方式中,还包括:
最大时间计算模块,与所述校正模块连接,用于根据所述待处理视频的帧率,计算所述最大时间。
对于上述装置,在一种可能的实现方式中,所述全景渲染模块包括:
预处理单元,用于根据终端设备的控制参数,对所述第一顶点坐标进行预处理;
创建单元,与所述预处理单元连接,用于根据预处理后的第二顶点坐标创建球体,并根据所述第一纹理坐标在所创建的球体的表面创建全景图像纹理;
RGB数据计算单元,用于计算所述待处理视频的RGB数据;
全景图像生成单元,与所述创建单元和所述RGB数据计算单元分别连接,用于将所述RGB数据和所述全景图像纹理映射到所创建的球体表面,以生成全景图像;
实际时间计算单元,与所述预处理单元、所述创建单元、所述RGB数据计算单元和所述全景图像生成单元分别连接,用于计算从所述预处理单元进行预处理到所述全景图像生成单元生成全景图像所花费的实际时间。
对于上述装置,在一种可能的实现方式中,所述第一坐标计算模块具体用于:
采用下式2至式4计算所述第一顶点坐标;
采用下式5至式6计算所述第一纹理坐标;
Sx=cos((Av+Sv)*PI/180)*sin(Ah*PI/180) 式2,
Sy=sin((Av+Sv)*PI/180) 式3,
Sz=cos((Av+Sv)*PI/180)*cos(Ah*PI/180) 式4,
Tx=Ah/360 式5,
Ty=(Av+Sv)/180+0.5 式6,
其中,Sx,Sy,Sz是所述第一顶点坐标;Tx,Ty是所述第一纹理坐标;PI=π;Av是当前纵向构建角度,取值范围是0至180度;Ah为当前横向构建角度,取值范围是0至360度;Sv为角度增幅,能够自定义。
对于上述装置,在一种可能的实现方式中,所述预处理单元具体用于根据所述终端设备的控制参数构建控制矩阵;根据所述第一顶点坐标和所述控制矩阵得到所述第二顶点坐标。
对于上述装置,在一种可能的实现方式中,所述RGB数据计算单元具体用于从所述待处理视频中获取YUV数据;对所述YUV数据进行色彩空间转化,得到所述RGB数据。
有益效果
本发明实施例能够根据终端设备的处理能力,动态调整虚拟球体的顶点坐标和纹理坐标,有利于灵活的适配各种类型的终端设备,从而根据终端设备的计算能力生成较好的球体构建方案,以在各种终端设备上流畅的播放全景图像。
进一步地,本发明实施例能够在流畅播放全景视频的前提下,还可以实时响应终端设备的外界需求,根据终端设备的控制参数对顶点坐标进行预处理,以实现交互式渲染,从而灵活调整终端设备的当前全景视频播放状态,以提供更好的观影体验。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出根据本发明一实施例的全景视频渲染方法的流程图;
图2示出根据本发明一实施例的全景视频渲染方法的步骤102的流程图;
图3示出根据本发明另一实施例的全景视频渲染方法的流程图;
图4示出根据本发明一实施例的全景视频渲染装置的结构示意图;
图5示出根据本发明另一实施例的全景视频渲染装置的结构示意图;
图6示出根据本发明另一实施例的全景视频渲染装置的结构示意图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
实施例1
图1示出根据本发明一实施例的全景视频渲染方法的流程图。如图1所示,该全景视频渲染方法主要可以包括:
步骤101、计算虚拟球体的第一顶点坐标以及映射图案需要的第一纹理坐标。
步骤102、根据所述第一顶点坐标和所述第一纹理坐标对待处理视频进行全景渲染,并计算所述全景渲染所花费的实际时间。
步骤103、根据所述实际时间和待处理视频的每帧渲染所花费的最大时间,确定是否重新计算所述第一顶点坐标和所述第一纹理坐标,以适应终端设备的当前处理能力。
具体而言,在采用终端设备例如手机、电脑、掌上电脑等智能设备对待处理视频进行全景渲染的过程中,需要构建虚拟球体。本实施例不限定终端设备的具体类型,只要能够具有全景渲染功能的设备均可以使用。本实施例中,在步骤102构建虚拟球体的顶点坐标和映射图案的纹理坐标后,采用所构建的虚拟球体的顶点坐标和映射图案的纹理坐标进行全景渲染。如果全景渲染所花费的时间小于或等于该待处理视频在该终端设备上每帧渲染所花费的最大时间,则可以判定该终端设备的当前处理能力能够流畅的播放该待处理视频的全景图像。如果全景渲染所花费的时间大于该待处理视频在该终端设备上每帧渲染所花费的最大时间,则可以判定该终端设备的当前处理能力不能流畅的播放该待处理视频的全景图像。在终端设备处理能力不够的情况下,可以执行步骤101重新计算虚拟球体的顶点坐标和映射图案的纹理坐标,本次计算时所计算的顶点坐标和纹理坐标计算量可以适当减少,从而适应终端设备的当前处理能力。
在一种可能的实现方式中,该全景视频渲染方法还可以包括:
步骤100、根据待处理视频的帧率,计算待处理视频的每帧渲染所花费的最大时间。
举例而言,计算渲染时间tmax如下式1:
tmax=1000/f 式1,
其中,f为所述待处理视频的帧率,在本示例中f的单位是fps(Frames PerSecond,每秒传输帧数),采用式1可以计算出该待处理视频在该终端设备上每帧渲染所花费的最大时间。
在一种可能的实现方式中,步骤101具体可以包括:采用下式2至式4计算所述第一顶点坐标;采用下式5至式6计算所述第一纹理坐标;
Sx=cos((Av+Sv)*PI/180)*sin(Ah*PI/180) 式2,
Sy=sin((Av+Sv)*PI/180) 式3,
Sz=cos((Av+Sv)*PI/180)*cos(Ah*PI/180) 式4,
Tx=Ah/360 式5,
Ty=(Av+Sv)/180+0.5 式6,
其中,Sx,Sy,Sz是所述第一顶点坐标;Tx,Ty是所述第一纹理坐标;PI=π;Av是当前纵向构建角度,取值范围是0至180度;Ah为当前横向构建角度,取值范围是0至360度;Sv为角度增幅,能够自定义,以动态调整需要计算的Sx,Sy,Sz和Tx,Ty的个数,从而控制终端设备的计算量。其中,Ah可以从0度开始取值,Av可以从0度开始取值,Sv的初始取值可以设置一个预定值,例如Sv的初始取值为10。其中,Sv的初始取值为10仅是一种示例,并非限定,具体可以根据经验选择Sv的初始取值。举例而言,假设Sv的初始取值为10,则Av的初始取值为19个,分别为(0,10,20,30,……160,170,180);Ah的初始取值为37个,分别为(0,10,20,30,……,340,350,360)。将Sv、Av、Ah的各个初始取值分别代入式2至式6,可以计算出初始的虚拟球体的第一顶点坐标Sx,Sy,Sz和第一纹理坐标Tx,Ty。
在一种可能的实现方式中,如图2所示,步骤102具体可以包括:
步骤201、根据终端设备的控制参数,对所述第一顶点坐标进行预处理;
步骤202、根据预处理后的第二顶点坐标创建球体,并根据所述第一纹理坐标在所创建的球体的表面创建全景图像纹理;
步骤203、计算所述待处理视频的RGB数据;
步骤204、将所述RGB数据和所述全景图像纹理映射到所创建的球体表面,以生成全景图像;
步骤205、计算从预处理步骤201到生成全景图像步骤204所花费的实际时间。
在一种可能的实现方式中,步骤201具体可以包括:根据所述终端设备的控制参数构建控制矩阵;根据所述第一顶点坐标和所述控制矩阵得到所述第二顶点坐标。
在一种可能的实现方式中,步骤203具体可以包括:从所述待处理视频中获取YUV数据;对所述YUV数据进行色彩空间转化,得到所述RGB数据。
其中,YUV和RGB是两种不同的色彩空间格式,二者之间能够转换,本实施例采用转换后的RGB数据生成全景图像。
在步骤103中,如果计算出的全景渲染所花费的实际时间大于每帧渲染所花费的最大时间,可以通过调整Sv的值来控制角度增幅,从而动态地调整虚拟球体的顶点坐标和纹理坐标的计算量。
其中,Sv的调整幅度可以根据实际时间和最大时间来确定。例如,采用式来确定Sv的当前取值,以所确定的Sv的当前取值来重新计算虚拟球体的第一顶点坐标和第一纹理坐标。其中,tr为上述的实际时间,tmax为上述的最大时间,Sv初始为Sv的初始取值,Sv当前为Sv的当前取值。例如,在Sv的初始取值为10、实际时间为60s、最大时间为40的情况下,则Sv的当前取值为15。这样,调整后Av的当前取值为13个,分别为(0,15,30,……150,165,180);Ah的当前取值为25个,分别为(0,15,30,……,330,345,360)。将调整后的将Sv、Av、Ah的各个当前取值分别代入式2至式6,可以计算出当前的虚拟球体的第一顶点坐标Sx,Sy,Sz和第一纹理坐标Tx,Ty。由于调整后的Av、Ah的当前取值个数减少,减少了所计算的顶点坐标和纹理坐标计算量,通常也可以减少当前全景渲染所花费的实际时间,以更好的适应根据终端设备的当前实际处理能力。
本实施例的全景视频渲染方法基于帧率计算待处理视频在终端设备上每帧渲染所花费的最大时间,属于一种基于频域的智能交互式全景视频渲染方法,通过比较终端设备对待处理视频进行全景渲染所花费的实际时间,以及待处理视频在该终端设备中每帧渲染所花费的最大时间,能够确定终端设备的处理能力,从而根据终端设备的处理能力,动态调整虚拟球体的顶点坐标和纹理坐标。本发明实施例有利于灵活的适配各种类型的终端设备,从而根据终端设备的计算能力生成较好的球体构建方案,以在各种终端设备上流畅的播放全景图像。
进一步地,本发明实施例能够在流畅播放全景视频的前提下,还可以实时响应终端设备的外界需求,根据终端设备的控制参数对顶点坐标进行预处理,以实现交互式渲染,从而灵活调整终端设备的当前全景视频播放状态,以提供更好的观影体验。
实施例2
图3示出根据本发明另一实施例的全景视频渲染方法的流程图。如图3所示,在全景视频渲染方法中,虚拟球体的构建方法可以决定全景视频渲染的质量和运算量。通过在球体表面生成不同位置的点来构建三角面,进而模拟生成球体面。具体而言,该全景视频渲染方法的基本步骤包括:
S1、根据待处理视频的帧率计算每帧渲染最多可花费时间。
S2、计算初始的虚拟球体的顶点坐标,以及映射图像需要的纹理坐标。
S3、接收外部例如终端设备的控制参数,对顶点坐标进行预处理。举例而言,控制参数可以是表示终端设备目前的位置和姿势等信息的参数。
S4、根据预处理后的顶点坐标创建球体,以及根据纹理坐标在所构建的球体表面例如内表面构建全景图像纹理。
S5、计算待处理视频的RGB数据,将全景图像映射到所构建的球体表面。
S6、输出全景图像,并计算当前渲染花费的实际时间。例如可以计算采用当前的虚拟球体执行步骤S3至步骤S5对待处理视频进行渲染所花费的实际时间。
S7、根据渲染花费的实际时间和最多可花费时间,可以判断是否需要重新设定球体顶点坐标和纹理坐标。
具体而言,如果实际时间大于最多可花费时间,表明目前所用的顶点坐标和纹理坐标不合适,需要减少计算量。这种情况下,可以进入步骤S2,重新初始的虚拟球体的顶点坐标和映射图像需要的纹理坐标。并且,在计算时可以参见下式2至6,增加角度增幅Sv的数值,从而减少计算得到的Sx,Sy,Sz以及Tx,Ty的个数,以减少终端设备的运算量。如果实际时间小于或等于最多可花费时间,表明采用当前的虚拟球体与终端设备的当前处理能力适配,终端设备目前可以流畅播放待处理视频的全景图像。
其中,步骤S1计算渲染时间tmax如式1:
tmax=1000/f 式1,
其中,f为待处理视频的帧率。
在步骤S2中,采用式2至式4计算初始的虚拟球体的顶点坐标,并采用式5和式6计算纹理坐标:
Sx=cos((Av+Sv)*PI/180)*sin(Ah*PI/180) 式2,
Sy=sin((Av+Sv)*PI/180) 式3,
Sz=cos((Av+Sv)*PI/180)*cos(Ah*PI/180) 式4,
Tx=Ah/360 式5,
Ty=(Av+Sv)/180+0.5 式6,
其中,Sx,Sy,Sz是初始的虚拟球体的顶点坐标;Tx,Ty是映射图像需要的纹理坐标;PI=π。Av是当前纵向构建角度,取值范围是0至180度;Ah为当前横向构建角度,取值范围是0至360度;Sv为角度增幅。通过控制这几个变量我们可以控制生成的球体顶点坐标及纹理坐标的个数,从而控制运算量。具体而言,用户能够自定义Sv的数值,以控制Av和Ah的增幅,从而控制计算出的Sx,Sy,Sz以及Tx,Ty的个数,例如:从7千至4万个不等。对应具有不同运算性能的终端设备,可以选择不同的Sv,以适应各种终端设备的性能。
进一步地,步骤S3可以包括以下子步骤:
S31、获取当前的球体顶点坐标postion:
postion=(Sx,Sy,Sz) 式7,
S32、根据所获得的控制参数,构建3x3控制矩阵:
S33、根据控制矩阵对顶点坐标进行预处理,得到预处理后的顶点坐标:
postion*projection 式9,
进一步地,步骤S5包括以下子步骤:
S51、获取待处理视频的YUV数据,并对所获取的YUV数据进行色彩空间转化,得到RGB数据。其中,YUV到RGB的转化矩阵的示例如下:
S52、将转换后的RGB数据添加到步骤S4得到的全景图像纹理中,构建得到全景图像(或称为全景视频图像)。
实施例3
图4示出根据本发明一实施例的全景视频渲染装置的结构示意图。如图4所示,该全景视频渲染装置主要可以包括:
第一坐标计算模块41,用于计算虚拟球体的第一顶点坐标以及映射图案需要的第一纹理坐标;
全景渲染模块43,与所述第一坐标计算模块41连接,用于根据所述第一顶点坐标和所述第一纹理坐标对待处理视频进行全景渲染,并计算所述全景渲染所花费的实际时间;
校正模块45,与所述第一坐标计算模块41和全景渲染模块43分别连接,用于根据所述实际时间和待处理视频的每帧渲染所花费的最大时间,确定是否使所述第一坐标计算模块41重新计算所述第一顶点坐标和所述第一纹理坐标,以适应终端设备的当前处理能力。
实施例4
图5示出根据本发明另一实施例的全景视频渲染装置的结构示意图。图5中标号与图4相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。
如图5所示,与上一实施例的主要区别在于,该全景视频渲染装置还可以包括:
最大时间计算模块47,与所述校正模块45连接,用于根据所述待处理视频的帧率,计算所述最大时间。
在一种可能的实现方式中,所述全景渲染模块43包括:
预处理单元431,用于根据终端设备的控制参数,对所述第一顶点坐标进行预处理;
创建单元433,与所述预处理单元431连接,用于根据预处理后的第二顶点坐标创建球体,并根据所述第一纹理坐标在所创建的球体的表面创建全景图像纹理;
RGB数据计算单元435,用于计算所述待处理视频的RGB数据;
全景图像生成单元437,与所述创建单元433和所述RGB数据计算单元435分别连接,用于将所述RGB数据和所述全景图像纹理映射到所创建的球体表面,以生成全景图像;
实际时间计算单元439,与所述预处理单元431、所述创建单元433、所述RGB数据计算单元435和所述全景图像生成单元437分别连接,用于计算从所述预处理单元431进行预处理到所述全景图像生成单元437生成全景图像所花费的实际时间。
在一种可能的实现方式中,所述第一坐标计算模块41具体用于:采用下式2至式4计算所述第一顶点坐标;采用下式5至式6计算所述第一纹理坐标;
Sx=cos((Av+Sv)*PI/180)*sin(Ah*PI/180) 式2,
Sy=sin((Av+Sv)*PI/180) 式3,
Sz=cos((Av+Sv)*PI/180)*cos(Ah*PI/180) 式4,
Tx=Ah/360 式5,
Ty=(Av+Sv)/180+0.5 式6,
其中,Sx,Sy,Sz是所述第一顶点坐标;Tx,Ty是所述第一纹理坐标;PI=π;Av是当前纵向构建角度,取值范围是0至180度;Ah为当前横向构建角度,取值范围是0至360度;Sv为角度增幅,能够自定义。
在一种可能的实现方式中,所述预处理单元431具体用于根据所述终端设备的控制参数构建控制矩阵;根据所述第一顶点坐标和所述控制矩阵得到所述第二顶点坐标。
在一种可能的实现方式中,所述RGB数据计算单元435具体用于从所述待处理视频中获取YUV数据;对所述YUV数据进行色彩空间转化,得到所述RGB数据。
本发明实施例的全景视频渲染装置的各模块能够执行上述实施例1和实施例2中全景视频渲染方法的步骤。具体执行过程和示例,可以参见上述示例的相关描述,在此不再赘述。
实施例5
图6示出根据本发明的另一实施例的全景视频渲染装置的结构示意图。所述全景视频渲染装置1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述全景视频渲染装置1100包括处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:执行实施例1和实施例2所述的全景视频渲染方法。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。