视频编码方法、装置、设备及存储介质与流程

文档序号:30800720发布日期:2022-07-19 21:56阅读:137来源:国知局
视频编码方法、装置、设备及存储介质与流程
视频编码方法、装置、设备及存储介质
1.本技术要求于2021年01月14日提交的申请号为202110048292.6、发明名称为“一种编码的方法、装置及系统”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及视频处理技术领域,特别涉及一种视频编码方法、装置、设备及存储介质。


背景技术:

3.随着互联网技术的快速发展,用户能够通过与云渲染计算平台实现网络连接的虚拟现实(virtual reality,vr)终端,来体验运行在云渲染计算平台上的vr应用。通常,云渲染计算平台在渲染每一帧视频时,都会生成具有一定视差的左、右眼视频帧,分别对应于用户的左眼视角和右眼视角,在对这两个视频帧进行编码后,将其发送至vr终端,由vr终端进行解码和显示,使得用户可以体验到立体视觉的效果。
4.相关技术中,云渲染计算平台在对左、右眼视频帧进行编码时,通常采用以下两种方法:方法一、将左、右眼视频帧进行拼接,得到一个视频帧,然后基于标准编码器对该视频帧进行编码,生成一路标准视频码流;方法二、基于标准编码器对左、右眼视频帧分别进行编码,生成两路标准视频码流。
5.在上述方法中,无论是将左、右眼视频帧拼接后进行一路视频编码,还是将左、右眼视频帧各进行一路视频编码,编码的计算量均较大,导致视频编码的速度较慢,进而导致视频编码的效率不高。


技术实现要素:

6.本技术实施例提供了一种视频编码方法、装置、设备及存储介质,能够有效提高视频编码效率,降低端到端时延。该技术方案如下:
7.第一方面,提供了一种视频编码方法,该方法包括:获取视频帧,以及该视频帧的参考帧,该视频帧和该参考帧来自多视角图像中的同一视角或者不同视角;基于第一渲染信息和第二渲染信息确定该视频帧中图像块的运动矢量;其中,该第一渲染信息为生成该视频帧时的渲染信息,该第二渲染信息为生成该参考帧时的渲染信息;基于该运动矢量编码该视频帧。
8.采用上述方法进行视频编码,能够大大减少运动估计的计算量,加快视频编码速度,提高视频编码效率,进而有效降低端到端时延。
9.可选地,该视频帧和该参考帧是运行虚拟现实vr应用时生成的,该视频帧编码后的数据用于在终端上解码显示,该第一位置、姿态信息,和该第二位置、姿态信息基于该终端的位置和姿态确定。
10.基于上述可选方式,可以基于终端来对服务器在运行虚拟现实vr应用所生成的数
据进行显示,且终端的位置和姿态可以影响服务器的渲染过程,从而实现vr显示的目的。
11.可选地,该终端为手机、平板、可穿戴设备或分体式设备,该分体式设备包括显示设备以及对应的控制设备。
12.基于上述可选方式,视频帧编码后的数据能够在多种不同形式的终端上解码显示,本技术具有较为广泛的适用性。
13.可选地,该可穿戴设备为头戴式显示器。
14.可选地,若该视频帧与该参考帧来自同一视角,则该第一渲染信息包括渲染该视频帧时虚拟相机的第一位置、姿态信息,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置、姿态信息,以及该参考帧的深度信息。
15.可选地,该基于第一渲染信息和第二渲染信息确定该视频帧与该参考帧之间的运动矢量,包括:基于该渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息、该渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,确定该视频帧中像素或图像块对应的二维坐标与该参考帧中像素或图像块对应的二维坐标;基于该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标,确定该运动矢量。
16.可选地,该确定该视频帧中像素或图像块对应的二维坐标与该参考帧中像素或图像块对应的二维坐标,包括:获取任一视频帧中像素或图像块对应的二维坐标与三维坐标之间的转换关系;获取该参考帧中像素或图像块对应的二维坐标,基于渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,应用该转换关系,将该参考帧中像素或图像块对应的二维坐标,转换为该参考帧中像素或图像块对应的三维坐标;基于渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息,以及该参考帧中像素或图像块对应的三维坐标,应用该转换关系,确定该视频帧中像素或图像块对应的二维坐标。
17.可选地,该基于该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标,确定该运动矢量,包括:获取该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标之间的坐标差;基于该坐标差,确定该运动矢量。
18.可选地,该基于该坐标差,确定该运动矢量,包括:将该坐标差确定为运动矢量。
19.可选地,该基于该坐标差,确定该运动矢量,还包括:基于该坐标差,按照第一搜索方式,在该参考帧中进行搜索,确定符合第一搜索条件的第一图像块,基于该第一图像块确定运动矢量。
20.基于上述可选方式,当视频帧与参考帧来自同一视角时,利用了同一视角前后时刻的视频帧和参考帧之间的相关性,通过渲染视频帧与渲染参考帧时虚拟相机的位置、姿态信息以及深度信息,计算得到视角位移矢量,将该视角位移矢量作为运动矢量,或,以该视角位移为初始运动矢量进行搜索,最终得到运动矢量,这种方式大大减少了运动估计的计算量,有效提高了视频编码效率。
21.可选地,若该视频帧与该参考帧来自不同视角,则该第一渲染信息包括渲染该视频帧时的焦距、虚拟相机的第一位置,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置;该基于第一渲染信息和第二渲染信息确定该视频帧与该参考帧之间的运动矢量,包括:基于该焦距、该第一位置与该第二位置之间的距离值以及该
深度信息,确定该运动矢量。
22.可选地,该基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该运动矢量,包括:基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该视频帧和该参考帧之间的视差区间;基于该视差区间,确定该视频帧中图像块对应的目标搜索范围;基于该目标搜索范围,确定该运动矢量。
23.可选地,该基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该视频帧和该第二参考视频帧之间的视差区间,包括:基于该深度信息,确定深度区间,该深度区间用于指示该视频帧中像素的深度值的取值范围;基于该焦距、该第一位置与该第二位置之间的距离值以及该深度区间,确定该视频帧和该参考帧之间的视差区间。
24.可选地,该基于该视差区间,确定该视频帧中图像块对应的目标搜索范围,包括:基于该视差区间,确定该视频帧中图像块对应的第一搜索范围,将该第一搜索范围作为目标搜索范围。
25.可选地,该基于该视差区间,确定该视频帧中图像块对应的目标搜索范围,包括:基于该视差区间,确定该视频帧中图像块对应的第一搜索范围;基于第二搜索方式,确定该视频帧中图像块对应的第二搜索范围;将该第一搜索范围与该第二搜索范围的交集,作为该目标搜索范围。
26.基于上述可选方式,当视频帧与参考帧来自不同视角时,利用了同一时刻不同视角的视频帧和参考帧之间的相关性,通过视频帧与参考帧之间的视差区间来确定运动矢量的目标搜索范围,或,通过该视差区间与默认搜索方式的搜索范围来进一步缩小运动矢量的目标搜索范围,最终得到运动矢量,大大减少了运动估计的计算量,有效提高了视频编码效率。
27.可选地,响应于获取到的视频帧为依赖视角,获取该视频帧的参考帧,该参考帧中既包括与该视频帧视角相同的参考帧,又包括与该视频帧视角不同的参考帧;对于该参考帧中与视频帧视角相同的参考帧,服务器基于渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息、渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,确定该视频帧中图像块对应的第一运动矢量;对于该参考帧中与视频帧视角不同的参考帧,服务器基于渲染该视频帧时的焦距和虚拟相机的第一位置、该视频帧的深度信息、渲染该参考帧时虚拟相机的第二位置,确定该视频帧中图像块对应的第二运动矢量;基于该第一运动矢量和第二运动矢量,确定目标运动矢量;基于该目标运动矢量编码该视频帧。
28.基于上述可选方式,根据视频帧的视角获取到相应的参考帧,既从时间维度(前后时刻)上考虑了视频帧与参考帧之间的相关性,又从空间维度(左右视角)上考虑了视频帧与参考帧之间的相关性,能够有效提高视频编码效率。
29.第二方面,提供了一种视频编码装置,该视频编码装置包括:
30.获取模块,用于获取视频帧,以及该视频帧的参考帧,该视频帧和该参考帧来自多视角图像中的同一视角或者不同视角;
31.确定模块,用于基于第一渲染信息和第二渲染信息确定该视频帧中图像块的运动矢量;其中,该第一渲染信息为生成该视频帧时的渲染信息,该第二渲染信息为生成该参考帧时的渲染信息;
32.编码模块,用于基于该运动矢量编码该视频帧。
33.可选地,若该视频帧与该参考帧来自同一视角,则该第一渲染信息包括渲染该视频帧时虚拟相机的第一位置、姿态信息,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置、姿态信息,以及该参考帧的深度信息。
34.可选地,若该视频帧与该参考帧来自不同视角,则该第一渲染信息包括渲染该视频帧时的焦距、虚拟相机的第一位置,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置;该确定模块还用于:基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该运动矢量。
35.可选地,该视频帧和该参考帧是运行虚拟现实vr应用时生成的,该视频帧编码后的数据用于在终端上解码显示,该第一位置、姿态信息,和该第二位置、姿态信息基于该终端的位置和姿态确定。
36.可选地,该终端为手机、平板、可穿戴设备或分体式设备,该分体式设备包括显示设备以及对应的控制设备。
37.可选地,该可穿戴设备为头戴式显示器。
38.可选地,该确定模块包括:
39.第一确定单元,用于基于该渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息、该渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,确定该视频帧中像素或图像块对应的二维坐标与该参考帧中像素或图像块对应的二维坐标;
40.第二确定单元,用于基于该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标,确定该运动矢量。
41.可选地,该第二确定单元用于:获取该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标之间的坐标差;基于该坐标差,确定该运动矢量。
42.可选地,该确定模块还包括:
43.第三确定单元,用于基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该视频帧和该参考帧之间的视差区间;
44.第四确定单元,用于基于该视差区间,确定该视频帧中图像块对应的目标搜索范围;
45.第五确定单元,用于基于该目标搜索范围,确定该运动矢量。
46.在一种可能的实现方式中,该第三确定单元用于:基于该深度信息,确定深度区间,该深度区间用于指示该视频帧中像素的深度值的取值范围;基于该焦距、该第一位置与该第二位置之间的距离值以及该深度区间,确定该视频帧和该参考帧之间的视差区间。
47.第三方面,提供了一种视频编码设备,该视频编码设备包括处理器和存储器,该存储器用于存储至少一段程序代码,该至少一段程序代码由该处理器加载并执行,以使得该视频编码设备执行上述第一方面或第一方面中任一种可选方式所提供的视频编码方法。
48.第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质用于存储至少一段程序代码,该至少一段程序代码由处理器加载并执行,以使得计算机执行上述第一方面或第一方面中任一种可选方式所提供的视频编码方法。
49.第五方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算
机程序包括程序代码,当其在视频编码设备上运行时,使得该视频编码设备执行上述第一方面或第一方面的各种可选实现方式中提供的视频编码方法。
附图说明
50.图1是本技术实施例提供的一种云vr渲染系统架构的示意图;
51.图2是本技术实施例提供的一种vr应用执行流程的示意图;
52.图3是本技术实施例提供的一种vr渲染投影的示意图;
53.图4是本技术实施例提供的一种图像渲染流程的示意图;
54.图5是本技术实施例提供的一种基于图像块的编码框架的示意图;
55.图6是本技术实施例提供的一种视频编码设备的硬件结构示意图;
56.图7是本技术实施例提供的一种视频编码方法的流程图;
57.图8是本技术实施例提供的一种运动估计的示意图;
58.图9是本技术实施例提供的一种钻石搜索法的示意图;
59.图10是本技术实施例提供的另一种视频编码方法的流程图;
60.图11是本技术实施例提供的另一种视频编码方法的流程图;
61.图12是本技术实施例提供的另一种视频编码方法的流程图;
62.图13是本技术实施例提供的另一种视频编码方法的流程图;
63.图14是本技术实施例提供的另一种视频编码方法的流程图;
64.图15是本技术实施例提供的另一种视频编码方法的流程图;
65.图16是本技术实施例提供的一种视频编码装置的结构示意图。
具体实施方式
66.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
67.为了方便理解,在介绍本技术实施例提供的技术方案之前,下面对本技术涉及的关键术语进行说明。
68.vr技术,是一种将虚拟和现实相互结合的技术。vr技术是一种可创建和体验虚拟世界的计算机系统。它以虚拟仿真的方式给用户创造一个实时反映实体对象变化与相互作用的三维虚拟世界,使用户沉浸到该三维虚拟世界中。
69.渲染,在计算机领域表示通过软件将模型生成图像的过程。模型是用数学语言或者数据结构进行定义的三维物体或虚拟场景的描述,它包括几何、视点、纹理、照明和阴影等信息。其中,图像为位图图像或矢量图像等数字图像。
70.云计算平台,也称为云平台,是指基于硬件资源和软件资源的服务,提供计算、网络和存储能力。云计算平台可以以较小的管理代价,或者用户与业务提供者较低的交互复杂度,实现可配置计算资源的快速发放与发布。应理解,云计算平台能够提供多种类型的服务,例如,用于提供实时渲染服务的云计算平台称为云渲染计算平台。需要说明的是,在本技术中,将这种云渲染计算平台称为服务器。
71.云vr,具体是指利用云计算平台强大的计算能力,将vr应用内容上云、渲染上云甚至制作上云,再通过互联网将沉浸式的vr体验传递至终端用户。本技术涉及云vr中强交互
的实时渲染场景,通常称为“云vr渲染”或者“vr云渲染”。
72.视频帧的深度信息,也称为图像的深度信息。例如,在视频帧的每个像素通过一组二进制数来进行描述的情况下,每个像素对应的二进制数中包含有多位表示颜色的二进制数,这些表示颜色的二进制数的位数,即称为深度信息。通常,一个视频帧对应的深度信息一般由相同大小的深度图(depth map)来描述,其中,深度图是指,将从图像采集器到三维场景中各点的距离作为像素值的图像,它直接反映了物体可见表面的几何形状。在本技术中,视频帧的深度信息能够用于反映三维场景中物体距离相机的远近。
73.视频编码,视频画面中存在大量的帧间冗余(也称时间冗余)和帧内冗余(也称空间冗余),视频编码即为通过去除帧内冗余和帧间冗余,对视频画面进行压缩,使得该视频画面便于存储和传输。相应地,视频编码包括帧间编码和帧内编码。
74.运动矢量,在帧间编码过程中,相邻时刻的不同视频帧中的景物存在着一定的相关性。因此,将一个视频帧分成许多互不重叠的图像块,并认为图像块内所有像素的位移量都相同,然后对每个图像块,在参考帧的某一给定搜索范围内,根据一定的匹配准则找出与当前图像块最相似的块,即匹配块,匹配块与当前图像块之间的相对位移即称为运动矢量(motion vector,mv)。
75.运动估计,运动估计的过程也即是获取运动矢量的过程。运动估计的好坏直接决定了视频编码的残差的大小,即直接影响视频编码的效率,因此运动估计是整个视频编码过程中最重要的部分之一。运动估计的过程,可以看成是利用匹配准则在各参考帧中寻找匹配块的过程,其最简单的方法是将当前图像块与参考帧中所有图像块进行匹配,从而得到最佳匹配块。相关搜索方法中采用了快速算法,通过在一定的范围内按照一定的路径进行搜索,例如钻石搜索法和六边形搜索法等,能够显著提升搜索效率。
76.视差矢量,该视差矢量可以看成是一种特殊的运动矢量。在上述运动估计的过程中,视频帧与参考帧属于同一视角,而当视频帧与参考帧属于不同视角时,基于视频帧与参考帧得到的图像块之间的相对位移即称为视差矢量。
77.视差估计,视差估计的过程也即是获取视差矢量的过程。相应地,视差估计也可以看成一种特殊的运动估计,两者最大的区别是参考帧的视角不一样,运动估计的参考帧与视频帧属于同一视角,视差估计的参考帧与视频帧则属于不同视角。视差估计的搜索方法包括全局搜索算法和局部搜索算法等。
78.渲染信息,是指服务器在运行vr应用的过程中,渲染生成视频帧时的相关信息。示意性地,在本技术实施例中,该渲染信息包括:终端的显示参数、vr应用中虚拟相机的位置、姿态信息、视频帧和参考帧的深度信息等。
79.率失真优化(rate distortion optimization,rdo),一种提高视频编码质量的方法。具体是指在一定码率的限制下,减少视频的失真量(视频质量损失)。该方法基于率失真优化算法确定预测模式,选择具有最小编码代价的预测模式,或,率失真满足选择标准的预测模式。
80.下面对本技术涉及的vr应用以及本技术的应用场景进行简要介绍。
81.在vr应用中,用户可以通过vr终端与vr应用所创建的三维虚拟世界进行交互,让用户如同身临其境一般置身于该三维虚拟世界中。
82.相比传统人机交互应用,vr应用主要包括以下两个特点:
83.第一、交互方式更加自然。传统的人机交互应用主要通过键盘、鼠标或手柄等设备,通过按键事件进行交互,而在vr应用中,交互的维度除了按键事件之外,还有定位传感事件;vr应用会结合用户头部、双手的位置、姿态信息等进行场景渲染,这样用户看到的画面会随着自己头部的转动或者位置的移动进行相应的切换和变化,从而达到一种更自然的交互方式。
84.第二、立体和沉浸式视觉。vr应用在渲染每一帧视频时,都会产生具有一定视差的两个视频帧,并且这两个视频帧最终会通过vr终端分别投入到用户的左右眼,达到立体视觉的效果;再加上vr终端采用封闭的场景将用户的视听觉和外界隔离,所以能让用户获得沉浸式的视听觉体验。
85.本技术实施例提供的视频编码方法能够应用在vr游戏、vr教学以及vr影院等这类vr应用场景下。示例性地,本技术实施例提供的视频编码方法能够应用的场景包括但不限于如下几种。
86.场景一、vr游戏
87.vr游戏以其高度真实的仿真性和体验感而越来越受到人们的追捧,用户能够通过使用vr终端,进入一个可交互的虚拟游戏世界,不论用户如何转动视线,始终位于该虚拟游戏世界中。在该场景下,运行有vr游戏应用的服务器需要根据用户的交互事件,实时渲染左、右眼游戏视频,并将渲染视频进行编码后发送给vr终端。
88.场景二、vr教学
89.目前,将vr技术应用于课堂教学或技能培训教学等场景是近些年来教育领域的一个重点方向。例如,利用vr技术建立vr实验室,学生能够通过使用vr终端,足不出户便可做各种实验,获得与真实实验一样的体会。再例如,利用vr技术建立vr课堂,当学生不便于出行时,仍然能够通过使用vr终端来参与到课堂中,保证了教学效果。在该场景下,运行有vr教学应用的服务器需要根据学生或老师的交互事件,实时渲染左、右眼教学视频,并将渲染视频进行编码后发送给vr终端。
90.场景三、vr影院
91.目前,在利用vr技术建立的vr影院中,用户能够通过使用vr终端,进入一个虚拟电影世界,不论用户如何转动视线,始终位于该虚拟电影世界中,使得用户如同身临其境一般置身于该虚拟电影世界中。在该场景下,运行有vr影院应用的服务器需要根据学生或老师的交互事件,实时渲染左、右眼电影视频,并将渲染视频进行编码后发送给vr终端。
92.需要说明的是,上述场景仅为示例性的描述,本技术实施例提供的视频编码方法还能够应用于其他vr应用场景中,例如,vr浏览器、vr看房以及vr医学等等,本技术实施例对此不作限定。
93.下面对本技术实施例提供的视频编码方法的系统框架进行介绍。
94.参考图1,图1是本技术实施例所适用的一种云vr渲染系统架构的示意图。如图1所示,本技术实施例提供的视频编码方法应用于云vr渲染系统100中。其中,云vr渲染系统100包括服务器110和终端120,服务器110和终端120能够通过无线网络或有线网络进行直接或间接地连接,本技术在此不做限制。
95.可选地,服务器110泛指多个服务器中的一个,或者多个服务器组成的集合,或者分布式系统;终端120泛指多个终端中的一个,或者多个终端组成的集合。图1所示仅为示意
性地,该云vr渲染系统100中包括一个服务器110和一个终端120,应理解,如果服务器110或者终端120是多台设备的集合,则云vr渲染系统100中还包括其他服务器或终端。本技术对云vr渲染系统100中服务器或终端的数量和类型不做限定。
96.可选地,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也能够是任何网络,包括但不限于局域网(local area network,lan)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超级文本标记语言(hyper text markup language,html)、可扩展标记语言(extensible markup language,xml)等的技术和/或格式来代表通过网络交换的数据。此外还能够使用诸如安全套接字层(secure socket layer,ssl)、传输层安全(transport layer security,tls)、虚拟专用网络(virtual private network,vpn)、网际协议安全(internet protocol security,ipsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还能够使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
97.示意性地,服务器110包括vr应用111、vr接口112以及vr驱动服务端113。
98.1、vr应用111
99.vr应用111用于获取用户当前的交互事件和渲染参数,并基于该交互事件和渲染参数进行图像渲染,生成视频帧后传输至vr接口112。
100.可选地,用户当前的交互事件包括按键输入、头/手的位置或姿态信息等。渲染参数包括渲染分辨率和左、右眼的投影矩阵等。
101.vr应用111的运行过程请参考图2,图2是本技术实施例所适用的一种vr应用执行流程的示意图。示意性地,以终端120包括头戴式显示器(head-mounted display,hmd)为例,vr应用111的运行过程包括以下两个阶段。
102.第一阶段、初始化阶段。该初始化阶段用于确定vr渲染的渲染参数。由于vr应用渲染生成的视频帧最终是提交到头戴式显示器上呈现的,而不同头戴式显示器的显示规格是有差异的,为了让渲染的视频帧能够在不同的头戴式显示器上进行合适的显示,vr应用在初始化时需要确定与当前头戴式显示器显示规格一致的渲染参数。
103.其中,渲染参数通常包括以下两个参数:一个是渲染分辨率,一般与头戴式显示器的显示分辨率一致,这样可以避免终端上的画面缩放操作。另一个是左、右眼的投影矩阵,需要根据头戴式显示器的视场角(field of view,fov)、瞳距(interpupillary distance,ipd)、显示分辨率以及vr应用的渲染深度范围(即z-near近裁剪平面,z-far远裁剪平面)来共同计算得到。vr应用根据上述渲染参数来渲染生成视频帧,可以使得视频帧的视角范围与头戴式显示器的fov一致;并且渲染的左、右眼视频帧的视差与头戴式显示器的ipd一致。示意性地,vr应用的渲染深度范围请参考图3,图3是本技术实施例所适用的一种vr渲染投影的示意图。
104.第二阶段、渲染阶段。该渲染阶段用于对每一vr视频帧进行渲染。在每一帧渲染之前,vr应用先获取用户当前的交互事件,进行应用逻辑处理,最后进行左、右眼视频帧的渲染和提交。
105.示意性地,下面参考图4,以vr游戏场景为例,对上述渲染阶段中的一次渲染流程进行简要说明。图4是本技术实施例所适用的一种图像渲染流程示意图。如图4所示,首先,
vr应用对游戏内容的相关事件进行数据处理,如位置计算、碰撞检测等;接着,vr应用将游戏数据(定点坐标,法向量,纹理及纹理坐标等)通过数据总线发送给图形程序接口,如opengl等;然后,vr应用将视频帧对应的三维坐标转换为屏幕的二维坐标;最后,vr应用进行图元组合、光栅化以及像素配色等,渲染出视频帧存入帧缓冲器中。
106.2、vr接口112
107.vr接口112用于获取显示参数和交互事件,进行渲染参数计算和交互事件处理,将得到的渲染参数和交互事件传输至vr应用111,并将从vr应用111接收到的视频帧传输至vr驱动服务端113。
108.其中,在vr应用111和终端120之间的数据交互上,为了避免两两适配,业界定义了统一标准接口,如openvr。示意性地,图1所示的vr接口112为vr runtime,vr runtime为vr应用111和终端120之间的适配层,其中,vr runtime与vr应用111之间,以及vr runtime与终端120之间可以采用上述标准接口实现;从而使得vr应用111和终端120之间能够以标准的方式进行交互,而不需要互相适配。如图1所示,vr接口112包括以下三个模块:渲染参数计算模块,用于根据vr应用112确定的渲染深度范围和终端120的显示参数计算得到前述的渲染参数;视频帧处理模块,用于对渲染生成的视频帧直接透传,或者是对视频帧进行额外处理(例如畸变校正)后再转发;交互事件处理模块,用于对交互事件直接透传,或者对交互事件进行额外处理(例如预测或平滑)后再转发。
109.需要说明的是,vr接口112在整个系统中并不是必须的,例如,某个vr应用是基于特定终端定制开发的,vr应用可以根据该终端的系统驱动提供的接口来获取显示参数和交互事件,并提交渲染的视频帧;如果没有vr接口,上述的渲染参数计算可以在vr应用侧,或者终端的系统驱动侧。
110.3、vr驱动服务端113
111.vr驱动服务端113用于接收终端120通过网络传输的显示参数和交互事件,将显示参数和交互事件传输至vr接口112,以及对vr应用111提交的视频帧进行编码,并将编码后的视频帧数据通过网络传输至终端120。
112.可选地,在云vr渲染系统100中,vr驱动服务端113采用视频编码的方式对左、右眼视频帧进行压缩。相关技术的视频压缩标准是基于图像块的编码框架,在该编码框架下,编码图像被划分为不重叠的图像块,以图像块为单位进行编码,例如,常见的h.26x系列编码标准即为基于图像块的混合编码方式。
113.示意性地,参考图5,图5是本技术实施例所适用的一种基于图像块的编码框架的示意图。如图5所示,在该编码框架下,由vr驱动服务端113中的编码器对待编码视频帧进行图像分块,然后基于参考帧,对图像块进行运动估计,得到运动矢量,然后根据该运动矢量进行运动补偿,得到残差数据,在对残差数据进行离散余弦变换(discrete cosine transform,dct)后,对相应的系数进行量化,并将量化后的dct系数转化为二进制码字,实现熵编码。另外,由编码器对量化后的dct系数进行反量化、反变换后得到重建的残差,结合运动补偿后的图像块,生成新的参考帧,存入帧缓冲器中。
114.示意性地,终端120包括交互设备121、系统驱动122以及vr驱动客户端123。
115.交互设备121用于采集用户当前的交互事件,并基于从服务器110接收到的视频帧数据,对该视频帧数据进行解码后呈现给用户。
116.可选地,以终端120具备显示功能和控制功能为例,交互设备121通常包含与用户相关的两个设备:头戴式显示器和控制器手柄。其中,在头戴式显示器和控制器手柄上均配置有定位传感器和输入按键。定位传感器用于感知和采集用户的头部和/或双手的位置信息(在三维空间中的位置坐标)和姿态信息(在三维空间中方位角度数据)。输入按键用于提供用户对vr应用的控制功能,例如,输入按键为控制器手柄上的按键、摇杆,或头戴式显示器上的按键,用户可通过操控这些按键来控制vr应用。
117.系统驱动122用于将用户当前的交互事件以及终端120的显示参数传输至vr驱动客户端123,以及将接收到的视频帧传输至交互设备121。
118.vr驱动客户端123用于将交互事件和显示参数通过网络传输至服务器110,以及对接收到的视频帧数据进行解码后传输至系统驱动122。
119.以上对云vr渲染系统架构中设备的各个功能模块进行了介绍,下面对服务器110的硬件结构进行简要说明。本技术实施例提供了一种视频编码设备,能够配置为上述云vr渲染系统架构中的服务器110。示意性地,参考图6,图6是本技术实施例提供的一种视频编码设备的硬件结构示意图。如图6所示,该视频编码设备600包括处理器601和存储器602,其中,该存储器602用于存储至少一段程序代码,该至少一段程序代码由该处理器601加载并执行下述实施例所示的视频编码方法。
120.处理器601可以是网络处理器(network processor,简称np)、中央处理器(central processing unit,cpu)、特定应用集成电路(application-specific integrated circuit,asic)或用于控制本技术方案程序执行的集成电路。该处理器601可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。该处理器601的数量可以是一个,也可以是多个。
121.存储器602可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。
122.其中,处理器601和存储器602可以分离设置,也可以集成在一起。
123.该服务器600还包括收发器。该收发器用于与其它设备或通信网络通信,网络通信的方式可以而不限于是以太网,无线接入网(ran),无线局域网(wireless local area networks,wlan)等。
124.下面对本技术实施例涉及的终端进行简要介绍。
125.在本技术实施例中,终端的位置、姿态由用户当前的交互事件决定。交互事件是指用户对终端的位置和姿态的调整事件中的任一项或组合。应理解,服务器在运行vr应用渲染生成视频帧时,使用vr应用中的虚拟相机来分别模拟用户的左右眼,也即是用虚拟相机拍摄的画面来模拟用户双眼看到的vr画面。其中,vr应用中虚拟相机的位置和姿态是由用户所使用的终端决定的,用户能够通过对终端的位置和姿态进行调整,以触发调整事件,从而使得虚拟相机的位置和姿态发生相应调整,以实现在终端上显示调整后的vr画面。
126.可选地,终端为手机、平板、可穿戴设备或分体式设备,该分体式设备包括显示设备以及对应的控制设备。
127.例如,终端为手机,手机与服务器通过网络进行连接,手机响应于用户对手机实施的点击、滑动以及移动等操作,生成交互事件并发送至服务器,由服务器根据接收到的交互事件调整vr应用中虚拟相机的位置和姿态,并渲染生成相应的视频帧,该视频帧编码后的数据能够在手机上解码进行显示。应理解,终端为平板时的实施方式与终端为手机时相似,故不再赘述。
128.又例如,终端为可穿戴设备,该可穿戴设备为头戴式显示器。该头戴式显示器与服务器通过网络进行连接,头戴式显示器响应于用户头部的旋转、点头等动作,生成交互事件并发送至服务器,由服务器根据接收到的交互事件调整vr应用中虚拟相机的位置和姿态,并渲染生成相应的视频帧,该视频帧编码后的数据能够在头戴式显示器上解码进行显示。
129.再例如,终端为分体式设备,该显示设备为手机、平板或电子显示屏,该控制设备为手柄或按键等。该分体式设备与服务器通过网络进行连接,该分体式设备响应于用户对控制设备的操作,生成交互事件并发送至服务器,由服务器根据接收到的交互事件调整vr应用中虚拟相机的位置和姿态,并渲染生成相应的视频帧,该视频帧编码后的数据能够在显示设备上解码进行显示。
130.在上述过程中,通过终端来对服务器在运行vr应用所生成的数据进行显示,且终端的位置和姿态可以影响服务器的渲染过程,从而实现vr显示的目的。进一步地,视频帧编码后的数据能够在多种不同形式的终端上解码显示,因此本技术具有较为广泛的适用性。
131.另外,需要说明的第一点是,在云vr渲染系统中,视频帧的编解码过程和传输过程会增加端到端时延,而vr应用是对时延极敏感的强交互类应用,时延是影响体验的一个重要指标;如果不考虑网络传输部分,云侧的处理时延会占整个端到端时延的至少60%以上;而在云侧的处理时延中,编码是与渲染耗时相当的环节。需要说明的第二点是,有损的视频编码过程会导致画质下降,影响最终的主观体验,这一点需要通过提高编码效率(压缩比)或者设置更高的编码码率来改善。因此,亟需一种提升云侧视频编码的性能(也即相同码率下提升画质)和速度的视频编码方法。
132.本技术基于上述云vr渲染系统的系统框架,提供了一种视频编码方法,在确定运动矢量的过程中,参考了服务器在渲染视频帧时所涉及到的渲染信息,从而能够基于时域运动估计和/或视点间运动估计得到运动矢量,来对视频帧进行编码,能够大大加快视频编码速度,进而有效提高视频编码效率,降低端到端时延。
133.下面,基于下述实施例对本技术实施例提供的视频编码方法进行介绍。
134.参考图7,图7是本技术实施例提供的一种视频编码方法的流程图。在本技术实施例中,该视频编码方法由如图1所示的服务器110执行,例如,该视频编码方法能够应用于服务器110的vr驱动服务端113中。示意性地,该视频编码方法包括如下步骤701至步骤703。
135.701、服务器获取视频帧,以及该视频帧的参考帧,该视频帧和该参考帧来自多视角图像中的同一视角。
136.在本技术实施例中,视频帧和参考帧为服务器运行vr应用时生成的。该视频帧为待编码的视频帧,该视频帧编码后的数据用于在终端上解码显示。该参考帧为已编码的视频帧,即为该待编码视频帧之前的视频帧。
137.其中,服务器在运行vr应用时,渲染同一时刻的vr画面需要生成至少一个多视角图像,其中包括左眼视角对应的视频帧和右眼视角对应的视频帧,该视频帧为纹理图像。需要说明的是,服务器获取到的视频帧来自左眼视角或右眼视角,本技术对此不作限定。
138.vr应用产生的左右眼画面是两个视角的画面,为了方便表述,将编码过程中只参考同视角视频帧的视角称为基准视角,将既参考同视角视频帧、又参考其他视角视频帧的视角称为依赖视角。下面以服务器获取到的视频帧为基准视角为例,对本步骤的具体实施方式进行说明。示意性地,本步骤701包括:服务器响应于获取到的视频帧为基准视角,获取该视频帧的参考帧,该视频帧与该参考帧的视角相同。
139.其中,服务器响应于获取到的视频帧为基准视角,从已编码的多视角图像中获取至少一个同为基准视角的视频帧,将这类视频帧作为该视频帧的参考帧。示意性地,以该视频帧为t时刻的基准视角对应的视频帧为例,服务器获取到的参考帧包括t-1、t-2
……
以及t-n时刻的基准视角对应的视频帧,其中,n大于1。也即是,服务器将t时刻之前的基准视角对应的视频帧作为参考帧。
140.在一些实施例中,视频帧均携带视角标识,该视角标识用于指示该视频帧的视角。服务器获取参考帧的过程包括:服务器基于该视频帧的视角标识确定该视频帧为基准视角,然后服务器以基准视角的视角标识为索引,在多视角图像中获取至少一个同为基准视角的视频帧,将这类视频帧作为该视频帧的参考帧。
141.需要说明的是,在vr应用场景下,同一视角前后时刻的视频帧的显示内容大部分是重合的,经过上述步骤701,服务器对于基准视角的视频帧,有针对性地获取了对应的参考帧,从时间维度(前后时刻)上考虑了视频帧与参考帧之间的相关性,能够有效提高视频编码效率。
142.702、服务器基于第一渲染信息和第二渲染信息确定该视频帧中图像块的运动矢量;其中,该第一渲染信息包括渲染该视频帧时虚拟相机的第一位置、姿态信息,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置、姿态信息,以及该参考帧的深度信息。
143.在本技术实施例中,该第一位置、姿态信息和该第二位置、姿态信息基于终端的位置和姿态确定。该第一位置和该第二位置为同一视角的虚拟相机在不同时刻下的位置。深度信息用于指示视频帧或参考帧中像素对应的深度值,由服务器运行vr应用时生成。
144.需要说明的是,服务器执行本步骤702来确定运动矢量的过程可以称为时域运动估计,也即是,服务器在时间维度上,对同一视角不同时刻的视频帧和参考帧之间进行运动估计。示意性地,参考图8,图8是本技术实施例提供的一种运动估计的示意图。如图8所示,服务器在获取到视频帧和参考帧后,若该视频帧与该参考帧来自同一视角,则进行时域运动估计,从而得到本技术的运动矢量。
145.在一些实施例中,本步骤702包括但不限于如下步骤7021和步骤7022。
146.7021、服务器基于渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息、渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,确定该视频帧中像素或图像块对应的二维坐标与该参考帧中像素或图像块对应的二维坐标。
147.在本技术实施例中,服务器提供针对运动矢量的计算功能。下面对本步骤7021进行详细说明,包括但不限于如下步骤7021-1至步骤7021-3。
148.7021-1、服务器获取任一视频帧中像素或图像块对应的二维坐标与三维坐标之间的转换关系。
149.其中,该转换关系是指把现实世界(采用世界坐标系)一个三维点(x,y,z)渲染到二维屏幕(采用相机坐标系)上的一个像素点(u,v)的转换公式。应理解,为简化计算,在视频编码过程中,视频帧的运动矢量通常是以图像块为单位进行计算的,一个图像块内所有像素的位移量认为相同的,也即是,对于视频帧中的任意一个图像块,该图像块对应的二维坐标与三维坐标可以基于该图像块中一个像素点对应的二维坐标与三维坐标来确定。
150.下面对该转换关系进行说明,参考下述公式(1):
[0151][0152]
式中,t表示世界坐标系到相机坐标系的转换矩阵,由相机在世界坐标系的位置、姿态决定。k表示相机标定矩阵,由相机的fov、显示分辨率等内置参数决定。d表示该像素点(u,v)的深度信息。
[0153]
7021-2、服务器获取该参考帧中像素或图像块对应的二维坐标,基于渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,应用该转换关系,将该参考帧中像素或图像块对应的二维坐标,转换为该参考帧中像素或图像块对应的三维坐标。
[0154]
7021-3、服务器基于渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息,以及该参考帧中像素或图像块对应的三维坐标,应用该转换关系,确定该视频帧中像素或图像块对应的二维坐标。
[0155]
其中,对于该视频帧中像素或图像块对应的二维坐标以及该参考帧中像素或图像块对应的二维坐标,这两个二维坐标对应于世界坐标系中的同一个三维坐标。
[0156]
下面以该参考帧中某一图像块(即像素点)对应的二维坐标为(u1,v1)、该视频帧中某一图像块(即像素点)对应的二维坐标为(u2,v2)为例,对上述步骤7021-2和步骤7021-3进行说明。
[0157]
示意性地,服务器基于渲染该参考帧时vr应用中虚拟相机的第二位置、姿态信息、该参考帧的深度信息,应用上述转换关系,得到下述公式(2),根据该公式(2),得到该二维坐标(u1,v1)对应的三维坐标(x,y,z)。进一步地,服务器基于渲染该视频帧时vr应用中虚拟相机的第一位置、姿态信息、该视频帧的深度信息,以及上述三维坐标(x,y,z),应用上述转换关系,得到下述公式(3)。公式(2)和公式(3)如下所示:
[0158][0159][0160]
上述公式(2)和公式(3)中,t1表示该参考帧对应的转换矩阵,d1表示该参考帧中某一图像块对应的深度值,t2表示该视频帧对应的转换矩阵,d2表示该视频帧中某一图像块对应的深度值。
[0161]
通过结合上述公式(2)和公式(3),能够得到下述公式(4):
[0162][0163]
根据上述公式(4),能够计算得到该视频帧中某一图像块对应的二维坐标(u2,v2)。
[0164]
需要说明的是,上述步骤7021-1至步骤7021-3是基于该参考帧中一个二维坐标对应的三维坐标,确定该三维坐标在该视频帧中的二维坐标,也即是,服务器能够通过上述步骤7021-1至步骤7021-3确定二维坐标(u1,v1)与二维坐标(u2,v2)之间的映射关系,为后续确定运动矢量提供了基础。
[0165]
7022、服务器基于该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标,确定该运动矢量。
[0166]
在本技术实施例中,本步骤7022包括但不限于如下步骤7022-1和步骤7022-2。
[0167]
7022-1、服务器获取该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标之间的坐标差。
[0168]
示意性地,以该参考帧中某一像素或图像块对应的二维坐标为(u1,v1)、该视频帧中某一像素或图像块对应的二维坐标为(u2,v2)为例,该坐标差为(u
1-u2,v
1-v2)。需要说明的是,此处的坐标差仅为示意性说明,在一些实施例中,该坐标差可以表示为(u
2-u1,v
2-v1);在另一些实施例中,该坐标差还可以表示为其他向量形式。本技术对于坐标差的计算方式以及表现形式不作限定。
[0169]
7022-2、服务器基于该坐标差,确定该运动矢量。
[0170]
在一些实施例中,服务器确定运动矢量的方式包括以下两种方式。
[0171]
第一种、服务器将该坐标差确定为运动矢量。
[0172]
应理解,在vr应用场景下,同一视角前后时刻的视频帧通常是在同一场景下,由于用户头部旋转很小的角度而产生的两幅图像,在两帧时间间隔下,用户头部旋转的角度通常不会太大,因此,大多数场景下前后时刻的两个视频帧的画面内容大部分是重合的,只存在较小的位移,服务器通过上述步骤7021得到的坐标差即为同一视角前后时刻下,该参考帧中图像块与该视频帧中图像块之间的位移矢量,也称为视角位移矢量。在本步骤7022-2中,服务器将该视角位移矢量作为运动矢量,用于后续对该视频帧进行编码。
[0173]
第二种、服务器基于该坐标差,按照第一搜索方式,在该参考帧中进行搜索,确定符合第一搜索条件的第一图像块,基于该第一图像块确定运动矢量。
[0174]
其中,服务器将该坐标差对应的视角位移矢量作为初始运动矢量,以该初始运动矢量为搜索起点,按照第一搜索方式在该参考帧中进行搜索。可选地,该第一搜索方式为钻石搜索法(diamond search,ds)、全局搜索法、六边形搜索法、矩形搜索法等等,本技术对此不作限定。
[0175]
在一些实施例中,当该参考帧的数量大于1时,对于该视频帧中任意一个图像块,服务器能够从每个参考帧中分别确定出符合第一搜索条件的第一图像块。服务器基于至少两个第一图像块,确定至少两个运动矢量,通过调用rdo算法,对该视频帧的编码代价进行预测,得到至少两个对应的预测模式,将该至少两个预测模式中,编码代价最小的预测模式所对应的运动矢量,作为本技术的运动矢量。
[0176]
下面以钻石搜索法为例,对服务器确定运动矢量的实施方式进行说明,示意性地,参考图9,图9是本技术实施例提供的一种钻石搜索法的示意图。如图9中左图所示,图中的第一中心位置即为初始运动矢量所对应的图像块,该钻石搜索法包括如下步骤一至步骤三。
[0177]
步骤一、服务器以该第一中心位置为起点,应用大钻石搜索模板(large diamond search proto,ldsp),从包括该第一中心位置在内的9个图像块中确定最小误差图像块(minimum block distortion,mbd),称为第一mbd,若该第一mbd为第一中心位置对应的图像块,则服务器执行下述步骤三,若否,则服务器执行下述步骤二。
[0178]
步骤二、服务器将该第一mbd作为第二中心位置,再次应用ldsp,从包括该第一mbd在内的9个图像块中确定第二mbd,若该第二mbd为该第二中心位置对应的图像块,则服务器执行下述步骤三,若否,则服务器重复执行本步骤二。
[0179]
步骤三、服务器将当前的mbd(第一mbd或第二mbd)作为第三中心位置,应用小钻石搜索模板(small diamond search proto,sdsp),从包括该当前的mbd在内的5个图像块中确定第三mbd,若该第三mbd为该第三中心位置对应的图像块,则服务器以该第三mbd计算运动矢量,若否,则服务器重复执行本步骤三。
[0180]
示意性地,继续参考图8,如图8所示,服务器在进行时域运动估计时,根据渲染视频帧与渲染参考帧时vr应用中虚拟相机的位置、姿态信息以及视频帧与参考帧的深度信息,进行视角位移矢量计算,得到视角位移矢量,并利用该视角位移矢量来确定运动矢量。
[0181]
需要说明的是,在上述步骤702中,服务器是根据该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标之间的坐标差,来确定运动矢量的。这种确定运动矢量的方式利用了同一视角前后时刻的视频帧和参考帧之间的相关性,通过渲染视频帧与渲染参考帧时vr应用中虚拟相机的位置、姿态信息以及深度信息,计算得到视角位移矢量,将该视角位移矢量作为运动矢量,或,以该视角位移为初始运动矢量进行搜索,最终得到运动矢量,这种方式大大减少了运动估计的计算量,有效提高了视频编码效率。
[0182]
703、服务器基于该运动矢量编码该视频帧。
[0183]
在本技术实施例中,服务器提供编码功能,能够基于该运动矢量对该视频帧进行编码。
[0184]
可选地,服务器的编码功能由编码器实现,该编码器可以是服务器上内置的编码器,例如,服务器上内置的硬件编码器等;也可以是安装于服务器上的软件编码器。本技术对此不作限定。其中,上述运动矢量的计算过程可以由编码器执行,也可以在编码器外部计算后到传递到该编码器中。应理解,在编码标准中,运动矢量的计算属于开放模块,编码标准并不对编码器的运动矢量计算方式进行限制,只要能输出指定格式的运动矢量即可。因此,本技术实施例提供的视频编码方法具有广泛的适用性,能够应用于相关技术的各个编码器中。
[0185]
在本技术实施例提供的视频编码方法中,在对视频帧进行编码时,根据生成该视频帧时的渲染信息,以及生成该视频帧的参考帧时的渲染信息,来确定该视频帧中图像块的运动矢量,并对该视频帧进行编码。采用这种方法进行视频编码,能够大大减少运动估计的计算量,加快运动估计的速度,也就加快了视频编码速度,提高了视频编码效率,进而有
效降低了端到端时延。
[0186]
上述图7所示的实施例是以视频帧与参考帧来自同一视角为例进行说明的。下面以视频帧与参考帧来自多视角图像中的不同视角为例,对本技术实施例提供的视频编码方法进行说明。参考图10,图10是本技术实施例提供的另一种视频编码方法的流程图。在本技术实施例中,该视频编码方法由如图1所示的服务器110执行,例如,该视频编码方法可应用于服务器110的vr驱动服务端113中。示意性地,该视频编码方法包括如下步骤1001至步骤1003。
[0187]
1001、服务器获取视频帧,以及该视频帧的参考帧,该视频帧和该参考帧来自多视角图像中的不同视角。
[0188]
下面以服务器获取到的视频帧为依赖视角为例,对本步骤的具体实施方式进行说明。示意性地,本步骤1001包括:服务器响应于获取到的视频帧为依赖视角,获取该视频帧的参考帧,该视频帧与该参考帧的视角不同。
[0189]
其中,服务器响应于获取到的视频帧为依赖视角,从已编码的多视角图像中获取当前时刻的基准视角的视频帧,将该基准视角的视频帧作为参考帧。示意性地,以该视频帧为t时刻的依赖视角对应的视频帧为例,服务器获取到的参考帧为t时刻的基准视角对应的视频帧。
[0190]
在一些实施例中,视频帧均携带视角标识,该视角标识用于指示该视频帧的视角。本步骤1001包括:服务器基于该视频帧的视角标识确定该视频帧为依赖视角,然后服务器以基准视角的视角标识为索引,在多视角图像中获取当前时刻基准视角的视频帧,将该视频帧作为参考帧。
[0191]
需要说明的是,在vr应用场景下,同一时刻不同视角的视频帧为vr应用模拟用户两只眼观察三维空间时所看到的画面,也即能够理解为具有相同参数的相机从两个有一定偏差的角度拍摄同一场景生成的两个图像,因此同一时刻不同视角的视频帧之间具有较大的相关性。经过上述步骤1001,服务器根据视频帧的视角获取相应的参考帧,从空间维度(左右视角)上考虑了视频帧与参考帧之间的相关性,能够有效提高视频编码效率。
[0192]
1002、服务器基于第一渲染信息和第二渲染信息确定该视频帧中图像块的运动矢量;其中,该第一渲染信息包括渲染该视频帧时的焦距、虚拟相机的第一位置,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置。
[0193]
其中,焦距基于终端的fov和显示分辨率确定。该第一位置与第二位置基于终端的位置和姿态决定。该第一位置和该第二位置为vr应用中不同视角的虚拟相机在同一时刻下的位置。也即是,该第一位置与该视频帧的视角相关,该第二位置与该参考帧的视角相关。示意性地,以该视频帧的视角为基准视角(左眼视角)为例,该第一位置对应于模拟用户左眼的虚拟相机,该第二位置对应于模拟用户右眼的虚拟相机。应理解,终端的fov和显示分辨率均属于终端的显示参数。
[0194]
需要说明的是,服务器执行本步骤1002来确定运动矢量的过程可以称为视点间运动估计(也称为视差估计),其中,视点对应基准视角(左眼视角)或依赖视角(右眼视角)。也即是,服务器在空间维度上,对同一时刻不同视角的视频帧和参考帧之间进行运动估计。
[0195]
示意性地,继续参考图8。如图8所示,服务器在获取到视频帧和参考帧后,若该视频帧与该参考帧来自不同视角,则进行视点间运动估计,最终得到本技术所需的运动矢量。
[0196]
下面对本步骤1002的具体实施方式进行说明,本步骤1002替换为:服务器基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该运动矢量。
[0197]
其中,在本技术实施例中,终端包括头戴式显示器,上述第一位置与第二位置之间的距离值也即是头戴式显示器的瞳距。示意性地,本步骤1002包括但不限于如下步骤1002-1至步骤1002-3。
[0198]
1002-1、服务器基于该焦距、该距离值以及该深度信息,确定该视频帧和该参考帧之间的视差区间。
[0199]
其中,根据立体视觉配准理论,在相机参数相同的情况下,两个相机所拍摄的图像之间的视差与深度信息之间的关系如下述公式(5)所示:
[0200][0201]
式中,δ表示视差,f为相机焦距,b为两个相机之间的距离值,d为像素的深度值。
[0202]
在本技术实施例中,服务器根据上述公式(5),确定该视频帧和该参考帧之间的视差区间。下面对这种确定视差区间的实施方式进行说明,包括如下两个步骤。
[0203]
步骤一、服务器基于该深度信息,确定深度区间,该深度区间用于指示该视频帧中像素的深度值的取值范围。
[0204]
其中,服务器根据该视频帧的深度信息,确定该视频帧中像素的最大深度值和最小深度值,也即确定了深度区间。示意性地,该深度区间表示为[dmin,dmax],本技术对此不作限定。
[0205]
步骤二、服务器基于该焦距、该距离值以及该深度区间,确定该视频帧和该参考帧之间的视差区间。
[0206]
其中,服务器将vr应用中虚拟相机的焦距、该距离值(也即头戴式显示器的瞳距)以及深度区间的区间值代入上述公式(5)中,得到该视频帧和该参考帧之间的视差区间。示意性地,该视差区间表示为[dvmin,dvmax],本技术对于视差区间的表现形式不作限定。
[0207]
1002-2、服务器基于该视差区间,确定该视频帧中图像块对应的目标搜索范围。
[0208]
在一些实施例中,服务器确定目标搜索范围的方式包括以下两种方式。
[0209]
第一种、服务器基于该视差区间,确定该视频帧中图像块对应的第一搜索范围,将该第一搜索范围作为目标搜索范围。
[0210]
其中,对于该视频帧中任意一个图像块,服务器基于该视差区间的端点值和该图像块在该视频帧中所处的位置,确定该第一搜索范围。示意性地,该图像块的位置表示为(mbx,mby),视差区间表示为[minx,maxx],则第一搜索范围表示为[mbx+minx,mby+maxx]。
[0211]
在一些实施例中,服务器将视差区间的端点值分别与预设系数进行相乘,得到扩大或缩小后的视差区间。例如,视差区间可以表示为[pminx,qmaxx],其中,p和q为预设系数,此时第一搜索范围表示为[mbx+pminx,mby+qmaxx]。应理解,该预设系数可以相同,也可以不同,本技术对此不作限定。
[0212]
第二种、服务器基于该视差区间,确定该视频帧中图像块对应的第一搜索范围;基于第二搜索方式,确定该视频帧中图像块对应的第二搜索范围;将该第一搜索范围与该第二搜索范围的交集,作为该目标搜索范围。
[0213]
其中,第二搜索方式为默认搜索方式,例如,该第二搜索方式为全局搜索法、钻石
搜索法以及六边形搜索法等等,本技术对此不作限定。
[0214]
通过这种可选地实现方式,能够进一步缩小该视频帧中图像块对应的目标搜索范围,从而减少了运动估计的计算量,大大加快了运动估计速度,有效提高了视频编码效率。
[0215]
1002-3、服务器基于该目标搜索范围,确定该运动矢量。
[0216]
在本技术实施例中,服务器以上述第二搜索方式的搜索起点和搜索路径作为运动矢量的搜索起点和搜索路径,按照该目标搜索范围,在参考帧中进行搜索,确定符合第二搜索条件的第二图像块,基于该第二图像块确定运动矢量。
[0217]
在一些实施例中,服务器中将该目标搜索范围发送至服务器中的编码器,由该编码器按照该目标搜索范围,在参考帧中进行搜索。本技术对此不作限定。
[0218]
示意性地,继续参考图8,如图8所示,服务器在进行视点间运动估计时,根据终端的显示参数和该视频帧的深度信息,进行视差区间计算,得到视差区间,并利用该视差区间来确定运动矢量。
[0219]
需要说明的是,在上述步骤1002中,服务器是根据终端的显示参数以及该视频帧的深度信息来缩小运动矢量的搜索范围的,从而确定了本技术所需的运动矢量。这种确定运动矢量的方式利用了同一时刻不同视角的视频帧和参考帧之间的相关性,通过视频帧与参考帧之间的视差区间来确定运动矢量的目标搜索范围,或,通过该视差区间与默认搜索方式的搜索范围来进一步缩小运动矢量的目标搜索范围,最终得到所需的运动矢量,大大减少了运动估计的计算量,有效提高了视频编码效率。
[0220]
1003、服务器基于该运动矢量编码该视频帧。
[0221]
在本技术实施例中,服务器提供编码功能,能够基于该运动矢量对该视频帧进行编码。需要说明的是,本步骤1003的可选实现方式与上述图7所示的步骤703中类似,故在此不再赘述。
[0222]
在本技术实施例提供的视频编码方法中,在对视频帧进行编码时,根据生成该视频帧时的渲染信息,以及生成该视频帧的参考帧时的渲染信息,来确定该视频帧中图像块的运动矢量,并对该视频帧进行编码。采用这种方法进行视频编码,能够大大减少运动估计的计算量,加快运动估计的速度,也就加快了视频编码速度,提高了视频编码效率,进而有效降低了端到端时延。
[0223]
上述图10所示的实施例是以视频帧与参考帧来自不同视角为例进行说明。下面以视频帧为依赖视角为例,对本技术实施例提供的视频编码方法进行举例说明。参考图11,图11是本技术实施例提供的另一种视频编码方法的流程图。在本技术实施例中,该视频编码方法由如图1所示的服务器110执行,例如,该视频编码方法可应用于服务器110的vr驱动服务端113中。示意性地,该视频编码方法包括如下步骤1101至步骤1105。
[0224]
1101、服务器响应于获取到的视频帧为依赖视角,获取该视频帧的参考帧,该参考帧中既包括与该视频帧视角相同的参考帧,又包括与该视频帧视角不同的参考帧。
[0225]
其中,服务器响应于获取到的视频帧为依赖视角,从已编码的多视角图像中获取至少一个同为依赖视角的视频帧,以及当前时刻的基准视角的视频帧,将这类视频帧作为该视频帧的参考帧。示意性地,以该视频帧为t时刻的依赖视角对应的视频帧为例,服务器获取到的参考帧包括t-1、t-2
……
以及t-n时刻的依赖视角对应的视频帧,以及t时刻的基准视角对应的视频帧。也即是,服务器将t时刻之前的依赖视角对应的视频帧以及t时刻的
基准视角对应的视频帧作为参考帧。
[0226]
在一些实施例中,视频帧均携带视角标识,该视角标识用于指示该视频帧的视角。本步骤1101包括:服务器基于该视频帧的视角标识确定该视频帧为依赖视角,然后服务器以基准视角的视角标识为索引,在多视角图像中获取当前时刻基准视角的视频帧,同时,服务器以依赖视角的视角标识为索引,在多视角图像中获取至少一个同为依赖视角的视频帧,将获取到的视频帧作为参考帧。
[0227]
需要说明的是,经过上述步骤1101,服务器根据视频帧的视角获取到相应的参考帧,既从时间维度(前后时刻)上考虑了视频帧与参考帧之间的相关性,又从空间维度(左右视角)上考虑了视频帧与参考帧之间的相关性,能够有效提高视频编码效率。
[0228]
1102、对于该参考帧中与视频帧视角相同的参考帧,服务器基于渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息、渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,确定该视频帧中图像块对应的第一运动矢量。
[0229]
其中,服务器确定第一运动矢量的方式可参考上述步骤702中对应的实施方式,也即是由服务器进行时域运功估计以得到第一运动矢量。本技术在此不再赘述。
[0230]
1103、对于该参考帧中与视频帧视角不同的参考帧,服务器基于渲染该视频帧时的焦距和虚拟相机的第一位置、该视频帧的深度信息、渲染该参考帧时虚拟相机的第二位置,确定该视频帧中图像块对应的第二运动矢量。
[0231]
其中,服务器确定第二运动矢量的方式可参考上述步骤1002中对应的实施方式,也即是由服务器进行视点间运功估计以得到第二运动矢量。本技术在此不再赘述。
[0232]
需要说明的是,在本技术实施例中,服务器是按照从前往后的顺序执行上述步骤1102和步骤1103的。在一些实施例中,服务器先执行步骤1103,再执行步骤1102。在另一些实施例中,服务器同步执行步骤1102和步骤1103。本技术实施例对于步骤1102和步骤1103的执行顺序不作限定。
[0233]
1104、服务器基于该第一运动矢量和第二运动矢量,确定目标运动矢量。
[0234]
其中,服务器调用rdo算法,基于该第一运动矢量和该第二运动矢量,对该视频帧的编码代价进行预测,得到至少两个预测模式;将该至少两个预测模式中,编码代价最小的预测模式所对应的运动矢量,作为目标运动矢量。
[0235]
需要说明的是,经过上述步骤1102至步骤1104,服务器针对不同类型的参考帧,采用不同的方式来确定运动矢量,进一步地,结合rdo算法来确定目标运动矢量,通过这种方式来确定运动矢量,能够得到对应编码代价最小的运动矢量,进而有效提高了视频编码的效率。
[0236]
1105、服务器基于该目标运动矢量编码该视频帧。
[0237]
在本技术实施例提供的视频编码方法中,在对视频帧进行编码时,根据生成该视频帧时的渲染信息,以及生成该视频帧的参考帧时的渲染信息,来确定该视频帧中图像块的运动矢量,并对该视频帧进行编码。采用这种方法进行视频编码,能够大大减少运动估计的计算量,加快视频编码速度,提高视频编码效率,进而有效降低端到端时延。
[0238]
下面参考图12和图13,以服务器和终端之间的交互为例,对本技术的视频编码方法进行举例说明。其中,图12是本技术实施例提供的另一种视频编码方法的流程图;图13是本技术实施例提供的另一种视频编码方法的流程图。示意性地,该视频编码方法包括如下
步骤1201至步骤1208。
[0239]
1201、终端将渲染参数发送至服务器,其中,该渲染参数包括但不限于渲染分辨率、左右眼投影矩阵以及终端的显示参数。
[0240]
1202、终端采集用户当前的交互事件,并将该交互事件发送至服务器,其中,该交互事件包括但不限于按键输入,以及头/手的位置、姿态信息。
[0241]
示意性地,上述步骤1201和步骤1203请参考图13,如图13所示,服务器与终端之间通过网络进行连接,终端将渲染参数和用户当前的交互事件发送至服务器。
[0242]
需要说明的是,本技术实施例对于上述步骤1201和步骤1202的执行顺序不作限定。在一些实施例中,终端先执行步骤1202,再执行步骤1201;在另一些实施例中,终端同步执行上述步骤1201和步骤1202。
[0243]
1203、服务器基于接收到的渲染参数和交互事件,运行vr应用,执行应用逻辑计算和图像渲染计算,生成渲染后的视频帧。
[0244]
1204、服务器中基于渲染参数、交互事件以及该视频帧的深度信息,进行运动矢量计算。
[0245]
其中,渲染参数、交互事件以及深度信息均属于渲染信息。服务器在进行运动矢量计算时包括以下两种场景:第一种是前后帧场景,也即是视频帧和参考帧为同一视角,在这种场景下,服务器确定运动矢量的方式请参考上述图7所示实施例中的步骤702,也即是进行视角位移矢量计算;第二种是视点间场景,也即是视频帧和参考帧为不同视角,在这种场景下,服务器确定运动矢量的方式请参考上述图10所示实施例中的步骤1002,也即是进行视差区间计算。本技术在此不再赘述。
[0246]
可选地,运动矢量计算包括初始运动矢量计算和目标运动矢量计算。其中,初始运动矢量计算用于执行视角位移矢量计算和视点间视差区间计算,服务器得到初始运动矢量的计算结果后,基于该计算结果,执行目标运动矢量计算(也可以理解为精确运动矢量计算),最终得到运动矢量。
[0247]
可选地,在前后帧场景下,服务器执行初始运动矢量计算得到视角位移矢量后,该视角位移矢量能够作为运动矢量直接用于后续服务器对视频帧的编码过程中,或者,服务器能够基于该视角位移矢量执行目标运动矢量计算;在视点间场景下,服务器执行初始运动矢量计算得到视差区间后,服务器能够基于该视差区间执行目标运动矢量计算,从而减少运动矢量的搜索范围,实现加速编码。
[0248]
可选地,上述运动矢量的计算过程可以由服务器的编码器执行,也可以在编码器外部计算后到传递到该编码器中。
[0249]
示意性地,上述步骤1203和步骤1204请继续参考图13,如图13所示,服务器在接收到终端发送的渲染参数和交互事件后,执行逻辑计算和图像渲染计算,生成渲染后的视频帧。服务器基于该视频帧的深度信息以及接收到的渲染参数和交互事件,进行运动矢量计算。然后服务器基于得到的运动矢量对视频帧进行编码,生成视频编码数据。
[0250]
1205、服务器基于计算得到的运动矢量,对该视频帧进行编码,生成视频编码数据。
[0251]
1206、服务器将该视频编码数据发送至终端。
[0252]
1207、终端根据该视频编码数据对该视频帧进行解码,将解码后的该视频帧通过
终端中的系统驱动提交至头戴式显示器进行显示。
[0253]
示意性地,上述步骤1206和步骤1207请继续参考图13,如图13所示,终端在接收到服务器发送的视频编码数据后,对该视频编码数据进行解码,并进行画面显示。
[0254]
在本技术实施例提供的视频编码方法中,在对视频帧进行编码时,在对视频帧进行编码时,根据生成该视频帧时的渲染信息,以及生成该视频帧的参考帧时的渲染信息,来确定该视频帧中图像块的运动矢量,并对该视频帧进行编码。采用这种方法进行视频编码,能够大大减少运动估计的计算量,加快视频编码速度,提高视频编码效率,进而有效降低端到端时延。其中,无论该视频帧为左眼视角还是右眼视角,都能采用上述方法来确定运动矢量;进一步地,无论该视频帧与该参考帧是否属于同一视角,也都能采用上述方法来确定运动矢量。
[0255]
以上实施例阐述了服务器对获取到的任意一个视频帧进行视频编码的具体实施方式。下面请参考图14,图14是本技术实施例提供的另一种视频编码方法的流程图。以服务器对一段时间内的多个视频帧进行编码,且一个视频帧为一个编码单元为例,对本技术的视频编码方法进行举例说明。示意性地,如图14所示,该视频编码方法由服务器执行,包括如下步骤1401至步骤1406。
[0256]
1401、服务器获取编码单元,判断当前编码单元是否为起始编码单元,是否为基准视角。
[0257]
其中,起始编码单元是指一定时间段内的首个视频帧。在本步骤1401中,服务器判断当前编码单元是否为基准视角的实施方式请参考上述图7所示实施例中的步骤701,本技术在此不再赘述。
[0258]
1402、若当前编码单元为起始编码单元且为基准视角,则服务器将该编码单元编码为关键帧。
[0259]
其中,关键帧是指一定时间段内的首个基准视角的视频帧。需要说明的是,由于该关键帧为一定时间内的首个视频帧,服务器在对该编码单元进行编码时不需要获取参考帧,而是对该编码单元直接进行编码。
[0260]
1403、若当前编码单元为起始编码单元但为依赖视角,则服务器获取与该编码单元对应的基准视角的视频帧,以该视频帧为参考,将该编码单元编码为非关键帧。
[0261]
其中,非关键帧是指一定时间段内,除首个基准视角的视频帧以外的其他视频帧。在本步骤1403中,服务器将当前编码单元编码为非关键帧的实施方式请参考上述图10所示实施例中的步骤1002和步骤1003,也即是由服务器进行视点间运动估计,得到运动矢量后对该视频帧进行编码。本技术在此不再赘述。
[0262]
1404、若当前编码单元不是起始编码单元但为基准视角,则服务器以此前单帧或数帧(根据配置决定)同为基准视角的视频帧作为参考帧,将该编码单元编码为非关键帧。
[0263]
其中,服务器将当前编码单元编码为非关键帧的实施方式,请参考上述图7所示实施例中的步骤702和步骤703,也即是由服务器进行时域运动估计,得到运动矢量后对该视频帧进行编码。本技术在此不再赘述。
[0264]
1405、若当前编码单元不是起始编码单元且不是基准视角,则服务器以此前单帧或数帧(根据配置决定)同为基准视角的视频帧作为参考帧,同时将当前编码单元对应的基准视角的视频帧作为参考帧,将该编码单元编码为非关键帧。
[0265]
其中,服务器将当前编码单元编码为非关键帧的实施方式请参考上述图11所示实施例中的步骤1102至步骤1105,也即是由服务器进行时域运动估计和视点间运动估计,得到运动矢量后对该视频帧进行编码。本技术在此不再赘述。
[0266]
1406、服务器重复以上步骤1401至步骤1405,直到所有编码单元编码完成。
[0267]
采用上述方法进行视频编码,能够大大减少运动估计的计算量,加快视频编码速度,提高视频编码效率,进而有效降低端到端时延。
[0268]
上述图14是以一个视频帧为一个编码单元为例进行说明的,下面请参考图15,图15是本技术实施例提供的另一种视频编码方法的流程图。以一个画面组(group pf pictures,gop)为一个编码单元为例,对本技术的视频编码方法进行举例说明。示意性地,如图15所示,t0时刻为该编码单元的起始编码时刻,一个gop包括t0时刻、t1时刻以及t2时刻对应的视频帧,其中,每个时刻均包括两个视频帧,分别对应基准视角和依赖视角。该视频编码方法由服务器执行,包括如下步骤1501至步骤1505。
[0269]
1501、服务器将t0时刻基准视角的视频帧编码为关键帧。
[0270]
其中,本步骤1501请参考上述图14所示实施例中的步骤1402,本技术在此不再赘述。
[0271]
1502、服务器将t0时刻基准视角的视频帧作为参考帧,将t0时刻依赖视角的视频帧编码为非关键帧。
[0272]
其中,本步骤1502请参考图10所示实施例中的步骤1002和步骤1003,也即是由服务器进行视点间运动估计,得到运动矢量后对该视频帧进行编码。本技术在此不再赘述。
[0273]
1503、服务器将t1时刻之前的基准视角的视频帧作为参考帧,将t1时刻基准视角的视频帧编码为非关键帧。
[0274]
其中,本步骤1503请参考上述图7所示实施例中的步骤702和步骤703,也即是由服务器进行时域运动估计,得到运动矢量后对该视频帧进行编码。本技术在此不再赘述。
[0275]
1504、服务器将t1时刻之前的依赖视角的视频帧、以及t1时刻基准视角的视频帧作为参考帧,将t1时刻依赖视角的视频帧编码为非关键帧。
[0276]
其中,本步骤1504请参考上述图11所示实施例中的步骤1102至步骤1105,也即是由服务器进行时域运动估计和视点间运动估计,得到运动矢量后对该视频帧进行编码。本技术在此不再赘述。
[0277]
1505、服务器按照t1时刻基准视角和依赖视角的视频帧的编码方式,对t2时刻的视频帧进行编码。
[0278]
需要说明的是,图15所示仅为示意性地,将左眼视角(l)作为基准视角,右眼视角(r)作为依赖视角,相应地,也可以反过来将右眼视角作为基准视角,左眼视角作为依赖视角。本技术对此不作限定。另外,图15在时域运动估计时仅选取前一时刻的视频帧作为参考帧,应理解,在时域运动估计时,还能够将当前时刻之前的所有视频帧均作为参考帧,例如,编码t2时刻基准视角的视频帧时,将t0时刻和t1时刻基准视角的视频帧均作为参考帧,本技术对此不作限定。
[0279]
采用上述方法进行视频编码,能够大大减少运动估计的计算量,加快视频编码速度,提高视频编码效率,进而有效降低端到端时延。
[0280]
图16是本技术实施例提供的一种视频编码装置的结构示意图,该视频编码装置用
于执行上述视频编码方法执行时的步骤,参见图16,该视频编码装置1600包括:获取模块1601、确定模块1602以及编码模块1603。
[0281]
获取模块1601,用于获取视频帧,以及该视频帧的参考帧,该视频帧和该参考帧来自多视角图像中的同一视角或者不同视角;
[0282]
确定模块1602,用于基于第一渲染信息和第二渲染信息确定该视频帧中图像块的运动矢量;其中,该第一渲染信息为生成该视频帧时的渲染信息,该第二渲染信息为生成该参考帧时的渲染信息;
[0283]
编码模块1603,用于基于该运动矢量编码该视频帧。
[0284]
在一种可能的实现方式中,若该视频帧与该参考帧来自同一视角,则该第一渲染信息包括渲染该视频帧时虚拟相机的第一位置、姿态信息,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置、姿态信息,以及该参考帧的深度信息。
[0285]
在一种可能的实现方式中,若该视频帧与该参考帧来自不同视角,则该第一渲染信息包括渲染该视频帧时的焦距、虚拟相机的第一位置,以及该视频帧的深度信息;该第二渲染信息包括渲染该参考帧时虚拟相机的第二位置;
[0286]
该确定模块1602还用于:基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该运动矢量。
[0287]
在一种可能的实现方式中,该视频帧和该参考帧是运行虚拟现实vr应用时生成的,该视频帧编码后的数据用于在终端上解码显示,该第一位置、姿态信息,和该第二位置、姿态信息基于该终端的位置和姿态确定。
[0288]
在一种可能的实现方式中,该终端为手机、平板、可穿戴设备或分体式设备,该分体式设备包括显示设备以及对应的控制设备。
[0289]
在一种可能的实现方式中,该可穿戴设备为头戴式显示器。
[0290]
在一种可能的实现方式中,该确定模块1602包括:
[0291]
第一确定单元,用于基于该渲染该视频帧时虚拟相机的第一位置、姿态信息、该视频帧的深度信息、该渲染该参考帧时虚拟相机的第二位置、姿态信息、该参考帧的深度信息,确定该视频帧中像素或图像块对应的二维坐标与该参考帧中像素或图像块对应的二维坐标;
[0292]
第二确定单元,用于基于该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标,确定该运动矢量。
[0293]
在一种可能的实现方式中,该第二确定单元用于:
[0294]
获取该视频帧中像素或图像块对应的二维坐标和该参考帧中像素或图像块对应的二维坐标之间的坐标差;
[0295]
基于该坐标差,确定该运动矢量。
[0296]
在一种可能的实现方式中,该确定模块1602还包括:
[0297]
第三确定单元,用于基于该焦距、该第一位置与该第二位置之间的距离值以及该深度信息,确定该视频帧和该参考帧之间的视差区间;
[0298]
第四确定单元,用于基于该视差区间,确定该视频帧中图像块对应的目标搜索范围;
[0299]
第五确定单元,用于基于该目标搜索范围,确定该运动矢量。
[0300]
在一种可能的实现方式中,该第三确定单元用于:
[0301]
基于该深度信息,确定深度区间,该深度区间用于指示该视频帧中像素的深度值的取值范围;
[0302]
基于该焦距、该第一位置与该第二位置之间的距离值以及该深度区间,确定该视频帧和该参考帧之间的视差区间。
[0303]
在本技术实施例提供的视频编码装置中,在对视频帧进行编码时,根据生成该视频帧时的渲染信息,以及生成该视频帧的参考帧时的渲染信息,来确定该视频帧中图像块的运动矢量,并对该视频帧进行编码。采用这种装置进行视频编码,能够大大减少运动估计的计算量,加快视频编码速度,提高视频编码效率,进而有效降低端到端时延。
[0304]
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由终端中的处理器执行,以使计算机完成上述实施例中的视频编码方法。例如,该计算机可读存储介质是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
[0305]
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序代码,当其在视频编码设备上运行时,使得该视频编码设备执行上述实施例中提供的视频编码方法。
[0306]
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0307]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
[0308]
本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一位置可以被称为第二位置,并且类似地,第二位置可以被称为第一位置。第一位置和第二位置都可以是位置,并且在某些情况下,可以是单独且不同的位置。
[0309]
本技术中术语“至少一个”的含义是指一个或多个,本技术中术语“多个”的含义是指两个或两个以上,例如,多个第二运动矢量是指两个或两个以上的第二运动矢量。本文中术语“系统”和“网络”经常可互换使用。
[0310]
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的
条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
[0311]
以上描述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
[0312]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0313]
该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,dvd)、或者半导体介质(例如固态硬盘))等。
[0314]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0315]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1