编解码方法和装置与流程
未命名
09-23
阅读:81
评论:0
1.本技术实施例涉及媒体技术领域,尤其涉及编解码方法和装置。
背景技术:
2.随着软硬件技术的发展,人们对于计算机渲染系统产生的画面的质量追求越来越高,从以往的仅有直接光照逐渐过渡到有更多和更真实的光照效果。探针是渲染系统中模拟光照效果的常用手段之一。在实际应用中单个场景的探针数量时常达到上千上万,对于大规模场景甚至可达到几十万。由于探针的数据可以随时间的变化而改变,存储、访问和传输探针数据会产生大量的开销。为此需要通过压缩探针数据以降低探针数据的存储、访问和传输的开销。
3.然而,压缩探针数据会影响渲染效果造成渲染损失。如何减少压缩探针数据造成的渲染损失是本领域技术人员急需解决的问题之一。
技术实现要素:
4.本技术实施例提供了编解码方法和装置,能够减少压缩探针数据造成的渲染损失。为达到上述目的,本技术实施例采用如下技术方案:
5.第一方面,本技术实施例提供了一种编码方法,该方法包括:首先确定探针数据组的目标归一化组合,然后根据所述目标归一化组合对所述探针数据组进行归一化以得到归一化探针数据组,之后将所述归一化探针数据组编入码流。其中,所述目标归一化组合为多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合,所述目标归一化组合包括目标归一化方法和目标归一化参数。
6.其中,探针数据与三维场景中的一个或多个探针对应,用于在渲染过程中确定所述三维场景中对象的着色效果。探针数据组可以包括一帧或多帧中的单行探针的探针数据、一帧或多帧中的单个探针的探针数据、一帧或多帧中的单个通道探针的探针数据或一帧或多帧中的所有探针的探针数据。
7.可以看出,本技术实施例提供的编码方法在归一化过程中,不使用某种固定的归一化方法和归一化参数,而是从多个归一化方法和归一化参数的组合中,选取使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合。相较于使用固定的归一化方法和归一化参数,使用使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合进行归一化,能够减少压缩探针数据造成的渲染损失。
8.可选地,探针数据(probe data)组对应的渲染损失(rendering loss),可以是探针数据组对应的渲染效果与探针数据组经过编解码后对应的渲染效果之间的误差。比如,上述渲染损失可以用峰值信噪比(peak signal to noise ratio,psnr)进行度量,也可以用均方根误差(mean squared error,mse)或其他参数进行度量,本技术实施例对此不作限定。
9.在一种可能的实现方式中,所述确定探针数据组的目标归一化组合,可以包括:确
定所述多个归一化组合中每个归一化组合对于所述探针数据组对应的渲染损失;将所述多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合确定为所述目标归一化组合。
10.可以理解的是,通过确定多个归一化组合中每个归一化组合对于探针数据组对应的渲染损失,然后将多个归一化组合中使探针数据组对应的渲染损失最小的归一化组合确定为目标归一化组合,之后使用使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合(即目标归一化组合)进行归一化,能够减少压缩(归一化)探针数据造成的渲染损失。
11.在一种可能的实现方式中,上述确定所述多个归一化组合中每个归一化组合对于所述探针数据组对应的渲染损失,可以包括:根据所述每个归一化组合对所述探针数据组进行目标操作以得到所述每个归一化组合对于所述探针数据组的渲染结果;根据所述探针数据组经所述目标操作进行渲染得到的渲染结果和所述探针数据组未经所述目标操作进行渲染得到的渲染结果确定所述每个归一化组合对于所述探针数据组对应的渲染损失。其中,目标操作包括归一化、编解码和反归一化。
12.其中,上述编解码的具体方法可以采用本领域技术人员能够想到的任何一种方法进行处理,本技术实施例对此不作具体限定。例如,编解码的具体方法可以为高效率视频编码(high efficiency video coding,hevc)、模拟编解码、低分辨率编解码、快速编解码等编解码方法。
13.可以理解的是,根据每个归一化组合对所述探针数据组进行目标操作可以得到每个归一化组合对应的渲染结果,然后通过对比探针数据组经目标操作得到的渲染结果和探针数据未经目标操作得到的渲染结果可以得到每个归一化组合对于探针数据组对应的渲染损失。之后使用使探针数据对应的渲染损失最小的归一化组合进行归一化,能够减少压缩(归一化)探针数据造成的渲染损失。
14.在一种可能的实现方式中,上述方法还可以包括:将所述目标归一化组合编入所述码流。
15.可以理解的是,将探针数据组的目标归一化组合编入码流后,解码端可以通过解码该码流快速获取探针数据组的目标归一化组合,然后通过该目标归一化组合对归一化探针数据组进行反归一化得到探针数据组。
16.在一种可能的实现方式中,上述将所述目标归一化组合编入码流,可以包括:在所述探针数据组为通过帧内编码的探针数据组的情况下,将所述目标归一化组合编入所述码流。
17.帧内编码为编码当前帧时只使用了当前帧信息的编码方式,示例性的,可以使用he vc的帧内编码来完成探针数据组的帧内编码;帧间编码为编码当前帧时使用了非当前帧信息的编码方式,示例性的,可以使用hevc的帧间编码来完成探针数据组的帧间编码。
18.在一种可能的实现方式中,上述方法还可以包括:根据所述探针数据组的目标归一化参数和参考目标归一化参数确定所述探针数据组的归一化参数变化量;将所述归一化参数变化量编入所述码流。其中,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数。
19.其中,判断一个探针数据组是否与当前探针数据组是相关的,可以通过多种度量
方式进行度量,本技术实施例对此不作限定,其包括但不限于,计算两个探针数据组之间的皮尔逊相关系数,如果皮尔逊相关系数大于第二预设阈值,则认为两组探针数据组中的一组与另一组是相关的;此外,也可以计算两个探针数据组之间的psnr,如果psnr大于预设阈值,则认为两组探针数据组中的一组与另一组是相关的。
20.可以理解的是,相较于将探针数据组的目标归一化组合编入码流,将探针数据组的归一化参数变化量编入码流可以降低开销,且在将探针数据组的归一化参数变化量编入码流后,解码端可以通过解码该码流快速获取探针数据组的归一化参数变化量,然后通过该归一化参数变化量确定探针数据组的目标归一化组合,之后通过该目标归一化组合对归一化探针数据组进行反归一化得到探针数据组。
21.在一种可能的实现方式中,上述将所述归一化参数变化量编入所述码流,可以包括:在所述探针数据组为通过帧间编码的探针数据组的情况下,将所述归一化参数变化量编入所述码流。
22.在一种可能的实现方式中,上述方法还可以包括:根据所述探针数据组的目标归一化参数和参考目标归一化参数确定所述探针数据组的归一化参数变化量,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数;将第一信息编入所述码流中,所述第一信息用于指示所述探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化。
23.可选地,当前帧的探针数据组的参考目标归一化参数可以为当前帧的上一帧的探针数据组的目标归一化参数。
24.可选地,第一信息可以用不同的标记位指示所述探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化。
25.在一种可能的实现方式中,上述方法还可以包括:在所述第一信息指示所述探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,将所述归一化参数变化量编入所述码流。
26.可以理解的是,在探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,相较于将探针数据组的目标归一化组合编入码流,将探针数据组的归一化参数变化量编入码流可以降低开销,且在将探针数据组的归一化参数变化量编入码流后,解码端可以通过解码该码流快速获取探针数据组的归一化参数变化量,然后通过该归一化参数变化量确定探针数据组的目标归一化组合,之后通过该目标归一化组合对归一化探针数据组进行反归一化得到探针数据组。
27.在一种可能的实现方式中,上述方法还可以包括:将索引信息编入所述码流,所述索引信息包括探针数据组的标识和所述探针数据组的归一化参数变化量。
28.在一种可能的实现方式中,上述方法还可以包括:根据所述参考目标归一化参数确定所述多个归一化组合中的归一化参数,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数。
29.可选地,探针数据组的目标归一化参数可以在参考目标归一化参数的目标归一化参数的1/(1+∈)倍至1+∈倍的范围以内。其中,∈的范围可以为0.01~0.05。
30.可选地,上述多个归一化组合可以为由最小最大归一化方法和多个归一化参数组成的归一化组合。
31.在一种可能的实现方式中,归一化参数可以包括最大归一化参数和最小归一化参数,归一化公式可以满足:
32.m为最大归一化参数,m为最小归一化参数。
33.可选地,当前帧的探针数据组的目标归一化参数(如m和m)可以在上一帧的探针数据组的目标归一化参数的1/(1+∈)倍至1+∈倍的范围以内。其中,∈的范围可以为0.01~0.05。
34.示例性地,假设当前帧的上一帧的探针数据组的目标归一化参数m为1,∈为0.01,则当前帧的探针数据组的目标归一化参数m的取值范围的下限为1/(1+0.01)*1≈0.99,当前帧的探针数据的目标归一化参数m的取值范围的上限为(1+0.01)*1=1.01,即当前帧的探针数据的目标归一化参数m的取值范围为0.99~1.01。
35.可选地,目标归一化方法也可以为其他归一化方法。例如,预设最大值归一化方法或标准分数(z-score)归一化方法。
36.可选地,上述探针数据包括探针的周遭环境数据,所述周遭环境数据包括光照数据、颜色、可见性数据(包括距离数据、距离数据的方差和距离数据的平方等数据)、材质、法向或纹理坐标中的至少一项。
37.需要说明的是,探针数据包括探针的周遭环境数据和探针的属性数据。由于探针的属性数据占用存储空间通常远远少于周遭环境数据,因此本技术实施例提供的方法可以仅对探针的周遭环境数据进行处理。
38.第二方面,本技术实施例还提供了一种解码方法,该方法包括:先解码码流以得到归一化探针数据组。然后根据第一探针数据组的目标归一化组合对所述归一化探针数据组进行反归一化以得到第二探针数据组。之后根据所述第二探针数据组进行渲染。其中,所述目标归一化组合为多个归一化组合中对于所述第一探针数据组对应的渲染损失最小的归一化组合,所述第一探针数据组为归一化前的所述归一化探针数据组,所述目标归一化组合包括目标归一化方法和目标归一化参数。
39.本技术实施例提供的解码方法在反归一化过程中,可以通过解码码流得到归一化后的探针数据。然后使用使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合进行反归一化得到探针数据,相较于使用固定的归一化方法和归一化参数进行反归一化,得到的探针数据,使用使探针数据对应的渲染损失最小的归一化组合得到探针数据,在渲染时带来的渲染损失较小,从而能够减少压缩探针数据造成的渲染损失。
40.可选地,探针数据(probe data)组对应的渲染损失(rendering loss),可以是探针数据组对应的渲染效果与探针数据组经过编解码后对应的渲染效果之间的误差。比如,上述渲染损失可以用峰值信噪比(peak signal to noise ratio,psnr)进行度量,也可以用均方根误差(mean squared error,mse)或其他参数进行度量,本技术实施例对此不作限定。
41.在一种可能的实现方式中,上述方法还可以包括:获取所述目标归一化组合。
42.在一种可能的实现方式中,上述获取所述目标归一化组合可以包括:获取目标信息,所述信息包括所述目标归一化组合。
43.在另一种可能的实现方式中,上述获取所述目标归一化组合可以包括:解码所述
码流以得到所述目标归一化组合。
44.可以看出,本技术实施例提供的解码方法可以通过解码码流得到归一化后的探针数据和使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合。然后使用该归一化组合进行反归一化得到探针数据,相较于使用固定的归一化方法和归一化参数进行反归一化,得到的探针数据,使用使探针数据对应的渲染损失最小的归一化组合得到探针数据,在渲染时带来的渲染损失较小,从而能够减少压缩探针数据造成的渲染损失。
45.在一种可能的实现方式中,上述获取所述目标归一化组合,可以包括:解码所述码流以得到所述第一探针数据组的归一化参数变化量;根据所述归一化参数变化量和参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合。
46.可选地,所述目标归一化组合中的目标归一化方法可以与所述参考归一化组合中的目标归一化方法相同。
47.可以看出,本技术实施例提供的解码方法可以通过解码码流得到归一化后的探针数据和归一化参数变化量,然后通过该归一化参数变化量和参考归一化组合得到使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合。然后使用该归一化组合进行反归一化得到探针数据,相较于使用固定的归一化方法和归一化参数进行反归一化,得到的探针数据,使用使探针数据对应的渲染损失最小的归一化组合得到探针数据,在渲染时带来的渲染损失较小,从而能够减少压缩探针数据造成的渲染损失。
48.在另一种可能的实现方式中,上述获取所述目标归一化组合,可以包括:解码所述码流以得到第一信息,所述第一信息用于指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化,所述参考目标归一化参数为与所述第一探针数据组相关的探针数据组的目标归一化参数;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数未发生变化的情况下,根据参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,解码所述码流以得到第二信息,所述第二信息用于指示所述第一探针数据组的归一化参数变化量并根据所述归一化参数变化量和所述参考归一化组合确定所述目标归一化组合。
49.可选地,所述目标归一化组合可以与所述参考归一化组合相同。例如,在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数未发生变化的情况下,所述目标归一化组合可以与所述参考归一化组合相同。
50.可以看出,本技术实施例提供的解码方法可以通过解码码流得到归一化后的探针数据和目标信息,然后通过目标信息得到使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合。然后使用该归一化组合进行反归一化得到探针数据,相较于使用固定的归一化方法和归一化参数进行反归一化,得到的探针数据,使用使探针数据对应的渲染损失最小的归一化组合得到探针数据,在渲染时带来的渲染损失较小,从而能够减少压缩探针数据造成的渲染损失。
51.第三方面,本技术实施例还提供了一种编码装置,该装置包括:数据形式转换模块和编码模块;所述数据形式转换模块,用于确定探针数据组的目标归一化组合并根据所述
目标归一化组合对所述探针数据组进行归一化以得到归一化探针数据组,所述目标归一化组合为多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合,所述目标归一化组合包括目标归一化方法和目标归一化参数;所述编码模块,用于将所述归一化探针数据组编入码流。
52.在一种可能的实现方式中,所述数据形式转换模块具体用于:确定所述多个归一化组合中每个归一化组合对于所述探针数据组对应的渲染损失;将所述多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合确定为所述目标归一化组合。
53.在一种可能的实现方式中,所述数据形式转换模块具体用于:根据所述每个归一化组合对所述探针数据组进行目标操作以得到所述每个归一化组合对于所述探针数据组的渲染结果,所述目标操作包括归一化、编解码和反归一化;根据所述探针数据组经所述目标操作进行渲染得到的渲染结果和所述探针数据组未经所述目标操作进行渲染得到的渲染结果确定所述每个归一化组合对于所述探针数据组对应的渲染损失。
54.在一种可能的实现方式中,所述编码模块还用于:将所述目标归一化组合编入所述码流。
55.在一种可能的实现方式中,所述数据形式转换模块还用于:根据所述探针数据组的目标归一化参数和参考目标归一化参数确定所述探针数据组的归一化参数变化量,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数;
56.在一种可能的实现方式中,所述编码模块,还用于将所述归一化参数变化量编入所述码流。
57.在一种可能的实现方式中,所述编码模块,还用于将第一信息编入所述码流中,所述第一信息用于指示所述探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化。
58.在一种可能的实现方式中,所述编码模块还用于:在所述第一信息指示所述探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,将所述归一化参数变化量编入所述码流。
59.在一种可能的实现方式中,所述编码模块还用于:将索引信息编入所述码流,所述索引信息包括探针数据组的标识和所述探针数据组的归一化参数变化量。
60.在一种可能的实现方式中,所述数据形式转换模块还用于:根据所述参考目标归一化参数确定所述多个归一化组合中的归一化参数,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数。
61.在一种可能的实现方式中,所述探针数据组包括探针的周遭环境数据,所述周遭环境数据包括光照数据、颜色、可见性数据、材质、法向或纹理坐标中的至少一项。
62.第四方面,本技术实施例还提供了一种解码装置,该装置包括:解码模块和数据形式转换模块;所述解码模块,用于解码码流以得到归一化探针数据组;所述数据形式转换模块,用于根据第一探针数据组的目标归一化组合对所述归一化探针数据组进行反归一化以得到第二探针数据组并根据所述第二探针数据组进行渲染,所述目标归一化组合为多个归一化组合中对于所述第一探针数据组对应的渲染损失最小的归一化组合,所述第一探针数据组为归一化前的所述归一化探针数据组,所述目标归一化组合包括目标归一化方法和目标归一化参数。
63.在一种可能的实现方式中,所述解码模块还用于:获取所述目标归一化组合。
64.在一种可能的实现方式中,所述解码模块具体用于:解码所述码流以得到所述目标归一化组合。
65.在一种可能的实现方式中,所述解码模块具体用于:解码所述码流以得到所述第一探针数据组的归一化参数变化量;根据所述归一化参数变化量和参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合。
66.在一种可能的实现方式中,所述解码模块具体用于:解码所述码流以得到第一信息,所述第一信息用于指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化,所述参考目标归一化参数为与所述第一探针数据组相关的探针数据组的目标归一化参数;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数未发生变化的情况下,根据参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,解码所述码流以得到所述第一探针数据组的归一化参数变化量并根据所述归一化参数变化量和所述参考归一化组合确定所述目标归一化组合。
67.第五方面,本技术实施例还提供一种编码装置,该装置包括:至少一个处理器,当所述至少一个处理器执行程序代码或指令时,实现上述第一方面或其任意可能的实现方式中所述的方法。
68.可选地,该装置还可以包括至少一个存储器,该至少一个存储器用于存储该程序代码或指令。
69.第六方面,本技术实施例还提供一种解码装置,该装置包括:至少一个处理器,当所述至少一个处理器执行程序代码或指令时,实现上述第二方面或其任意可能的实现方式中所述的方法。
70.可选地,该装置还可以包括至少一个存储器,该至少一个存储器用于存储该程序代码或指令。
71.第七方面,本技术实施例还提供一种芯片,包括:输入接口、输出接口、至少一个处理器。可选地,该芯片还包括存储器。该至少一个处理器用于执行该存储器中的代码,当该至少一个处理器执行该代码时,该芯片实现上述第一方面或其任意可能的实现方式中所述的方法。
72.可选地,上述芯片还可以为集成电路。
73.第八方面,本技术实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于实现上述第一方面或其任意可能的实现方式中所述的方法。
74.第九方面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述第一方面或其任意可能的实现方式中所述的方法。
75.本实施例提供的编解码装置、计算机存储介质、计算机程序产品和芯片均用于执行上文所提供的编解码方法,因此,其所能达到的有益效果可参考上文所提供的编解码方法中的有益效果,此处不再赘述。
附图说明
76.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
77.图1a为本技术实施例提供的编解码系统的一种示例性框图;
78.图1b为本技术实施例提供的视频编解码系统的一种示例性框图;
79.图2为本技术实施例提供的视频编码器的一种示例性框图;
80.图3为本技术实施例提供的视频解码器的一种示例性框图;
81.图4为本技术实施例提供的候选图像块的一种示例性的示意图;
82.图5为本技术实施例提供的视频译码设备的一种示例性框图;
83.图6为本技术实施例提供的装置的一种示例性框图;
84.图7a为本技术实施例提供的一种系统框架示意图;
85.图7b为本技术实施例提供的一种三维场景中探针分布示意图;
86.图8a为本技术实施例提供的一种编码框架示意图;
87.图8b为本技术实施例提供的一种数据形式转换模块结构示意图;
88.图9a为本技术实施例提供的一种解码框架示意图;
89.图9b为本技术实施例提供的另一种数据形式转换模块结构示意图;
90.图10为本技术实施例提供的一种编码方法的流程示意图;
91.图11为本技术实施例提供的另一种编码方法的流程示意图;
92.图12为本技术实施例提供的一种渲染损失确定方法的流程示意图;
93.图13为本技术实施例提供的一种编码的流程示意图;
94.图14为本技术实施例提供的另一种编码的流程示意图;
95.图15为本技术实施例提供的一种解码方法的流程示意图;
96.图16为本技术实施例提供的另一种解码方法的流程示意图
97.图17为本技术实施例提供的一种芯片的结构示意图。
具体实施方式
98.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术实施例一部分实施例,而不是全部的实施例。基于本技术实施例中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术实施例保护的范围。
99.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
100.本技术实施例的说明书以及附图中的术语“第一”和“第二”等是用于区别不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。
101.此外,本技术实施例的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括其他没有列出的步骤或单元,或
可选的还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
102.需要说明的是,本技术实施例的描述中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优先或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
103.在本技术实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
104.首先对本技术实施例涉及的术语进行解释。
105.反射探针:反射探针是典型的光照探针,它记录了光照数据:以探针为中心,看到的四周的光照情况。其本质是与球面同胚的表面上的数据,可以是球面数据,也可以是立方体表面数据,如图3所示。在使用场景中,反射探针放置在金属球中心,并与金属球面绑定。在渲染时,算法通过计算得到出射的角度,再从探针存储的数据中取出射角度对应的值,即可得到反射之后的应当看到的画面。
106.动态漫反射全局光照(dynamic diffuse global illumination,ddgi):使用了多个探针构成的探针体(probe volume)。探针体用于记录光照时,也称为light field probe或irradiance volume。此外,探针体在precomputed radiance transfer等技术中也有所应用。在ddgi中每个探针与反射探针一样,都会记录各个角度的光照,除此之外,每个探针还会记录可见性数据,即各个角度的物体与这个探针的距离的分布数据,包括每个角度的距离的均值、距离的平方和距离的方差等数据。ddgi数据的存储方式为:单个探针以八面体展开的方式展开成一个正方形图像、多个探针的图像排列成一幅大的图像。为了使用时方便对纹理进行插值,每个探针的正方形图像上下左右会各添加一列冗余的边界数据。
107.归一化,在探针数据的压缩通过限定数据范围,剔除一些失效数据。在探针数据的压缩、传输和解压缩过程中,是否有归一化、如何进行归一化都会影响渲染的效果。
108.预设最大值归一化:将数据x变为其中,m为预设的最大值,超出最大值的数据会被截断。预设m可以为1~4之间的实数。在此方案中m即为归一化的参数。
109.最大最小归一化:将数据x变为归一化到[0,1]之间。归一化参数为max{x}和min{x}。max{x}为数据x中的最大值,min{x}为数据x中的最小值。
[0110]
z-score归一化:将数据x变为其中为x的均值,σ为x的标准差。归一化参数为和σ。
[0111]
数据编解码包括数据编码和数据解码两部分。数据编码在源侧(或通常称为编码器侧)执行,通常包括处理(例如,压缩)原始数据以减少表示该原始数据所需的数据量(从而更高效存储和/或传输)。数据解码在目的地侧(或通常称为解码器侧)执行,通常包括相对于编码器侧作逆处理,以重建原始数据。本技术实施例涉及的数据的“编解码”应理解为数据的“编码”或“解码”。编码部分和解码部分也合称为编解码器(编码和解码,codec)。
[0112]
在无损数据编码情况下,可以进行重建数据,即重建得到的数据与原始数据具有相同的质量(假设存储或传输期间没有传输损耗或其他数据丢失)。在有损数据编码情况下,通过量化等执行进一步压缩,来减少表示原始数据所需的数据量,而解码器侧无法完全重建原始数据,即重建的原始数据的质量比原始数据的质量低或差。
[0113]
本技术实施例可以应用于对视频数据以及其他具有压缩/解压缩需求的数据等。以下以视频数据的编码(简称视频编码)为例对本技术实施例进行说明,其他类型的数据(例如图像数据、音频数据、整数型数据以及其他具有压缩/解压缩需求的数据)可以参考以下描述,本技术实施例对此不再赘述。需要说明的是,相对于视频编码,音频数据以及整数型数据等数据的编码过程中无需将数据分割为块,而是可以直接对数据进行编码。
[0114]
视频编码通常是指处理形成视频或视频序列的图像序列。在视频编码领域,术语“图像(picture)”、“帧(frame)”或“图片(image)”可以用作同义词。
[0115]
几个视频编码标准属于“有损混合型视频编解码”(即,将像素域中的空间和时间预测与变换域中用于应用量化的2d变换编码结合)。视频序列中的每个图像通常分割成不重叠的块集合,通常在块级上进行编码。换句话说,编码器通常在块(视频块)级处理即编码视频,例如,通过空间(帧内)预测和时间(帧间)预测来产生预测块;从当前块(当前处理/待处理的块)中减去预测块,得到残差块;在变换域中变换残差块并量化残差块,以减少待传输(压缩)的数据量,而解码器侧将相对于编码器的逆处理部分应用于编码或压缩的块,以重建用于表示的当前块。另外,编码器需要重复解码器的处理步骤,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建像素,用于处理,即编码后续块。
[0116]
在以下编解码系统10的实施例中,编码器20和解码器30根据图1a至图3进行描述。
[0117]
图1a为本技术实施例提供的编解码系统10的一种示例性框图,例如可以利用本技术实施例技术的视频编解码系统10(或简称为编解码系统10)。视频编解码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)代表可用于根据本技术实施例中描述的各种示例执行各技术的设备等。
[0118]
如图1a所示,编解码系统10包括源设备12,源设备12用于将编码图像等编码图像数据21提供给用于对编码图像数据21进行解码的目的设备14。
[0119]
源设备12包括编码器20,另外即可选地,可包括图像源16、图像预处理器等预处理器(或预处理单元)18、通信接口(或通信单元)22。
[0120]
图像源16可包括或可以为任意类型的用于捕获现实世界图像等的图像捕获设备,和/或任意类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器或任意类型的用于获取和/或提供现实世界图像、计算机生成图像例如,屏幕内容、虚拟现实(virtual reality,vr)图像和/或其任意组合(例如增强现实(augmented reality,ar)图像)的设备。所述图像源可以为存储上述图像中的任意图像的任意类型的内存或存储器。
[0121]
为了区分预处理器(或预处理单元)18执行的处理,图像(或图像数据)17也可称为原始图像(或原始图像数据)17。
[0122]
预处理器18用于接收原始图像数据17,并对原始图像数据17进行预处理,得到预处理图像(或预处理图像数据)19。例如,预处理器18执行的预处理可包括修剪、颜色格式转换(例如从rgb转换为ycbcr)、调色或去噪。可以理解的是,预处理单元18可以为可选组件。
[0123]
视频编码器(或编码器)20用于接收预处理图像数据19并提供编码图像数据21(下面将根据图2等进一步描述)。
[0124]
源设备12中的通信接口22可用于:接收编码图像数据21并通过通信信道13向目的设备14等另一设备或任何其他设备发送编码图像数据21(或其他任意处理后的版本),以便存储或直接重建。
[0125]
目的设备14包括解码器30,另外即可选地,可包括通信接口(或通信单元)28、后处理器(或后处理单元)32和显示设备34。
[0126]
目的设备14中的通信接口28用于直接从源设备12或从存储设备等任意其他源设备接收编码图像数据21(或其他任意处理后的版本),例如,存储设备为编码图像数据存储设备,并将编码图像数据21提供给解码器30。
[0127]
通信接口22和通信接口28可用于通过源设备12与目的设备14之间的直连通信链路,例如直接有线或无线连接等,或者通过任意类型的网络,例如有线网络、无线网络或其任意组合、任意类型的私网和公网或其任意类型的组合,发送或接收编码图像数据(或编码数据)21。
[0128]
例如,通信接口22可用于将编码图像数据21封装为报文等合适的格式,和/或使用任意类型的传输编码或处理来处理所述编码后的图像数据,以便在通信链路或通信网络上进行传输。
[0129]
通信接口28与通信接口22对应,例如,可用于接收传输数据,并使用任意类型的对应传输解码或处理和/或解封装对传输数据进行处理,得到编码图像数据21。
[0130]
通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的设备14的对应通信信道13的箭头所指示的单向通信接口,或双向通信接口,并且可用于发送和接收消息等,以建立连接,确认并交换与通信链路和/或例如编码后的图像数据传输等数据传输相关的任何其他信息,等等。
[0131]
视频解码器(或解码器)30用于接收编码图像数据21并提供解码图像数据(或解码图像数据)31(下面将根据图3等进一步描述)。
[0132]
后处理器32用于对解码后的图像等解码图像数据31(也称为重建后的图像数据)进行后处理,得到后处理后的图像等后处理图像数据33。后处理单元32执行的后处理可以包括例如颜色格式转换(例如从ycbcr转换为rgb)、调色、修剪或重采样,或者用于产生供显示设备34等显示的解码图像数据31等任何其他处理。
[0133]
显示设备34用于接收后处理图像数据33,以向用户或观看者等显示图像。显示设备34可以为或包括任意类型的用于表示重建后图像的显示器,例如,集成或外部显示屏或显示器。例如,显示屏可包括液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light emitting diode,oled)显示器、等离子显示器、投影仪、微型led显示器、硅基液晶显示器(liquid crystal on silicon,lcos)、数字光处理器(digital light processor,dlp)或任意类型的其他显示屏。
[0134]
编解码系统10还包括训练引擎25,训练引擎25用于训练编码器20(尤其是编码器20中的熵编码单元270)或解码器30(尤其是解码器30中的熵解码单元304),以根据估计得到的估计概率分布对待编码图像块进行熵编码,训练引擎25的详细说明请参考下述方法测实施例。
[0135]
尽管图1a示出了源设备12和目的设备14作为独立的设备,但设备实施例也可以同时包括源设备12和目的设备14或同时包括源设备12和目的设备14的功能,即同时包括源设备12或对应功能和目的设备14或对应功能。在这些实施例中,源设备12或对应功能和目的设备14或对应功能可以使用相同硬件和/或软件或通过单独的硬件和/或软件或其任意组合来实现。
[0136]
根据描述,图1a所示的源设备12和/或目的设备14中的不同单元或功能的存在和(准确)划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。
[0137]
请参考图1b,图1b为本技术实施例提供的视频编解码系统40的一种示例性框图,编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过如图1b所示的视频编解码系统40中的处理电路实现,例如一个或多个微处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、离散逻辑、硬件、视频编码专用处理器或其任意组合。请参考图2和图3,图2为本技术实施例提供的视频编码器的一种示例性框图,图3为本技术实施例提供的视频解码器的一种示例性框图。编码器20可以通过处理电路46实现,以包含参照图2编码器20论述的各种模块和/或本文描述的任何其他编码器系统或子系统。解码器30可以通过处理电路46实现,以包含参照图3解码器30论述的各种模块和/或本文描述的任何其他解码器系统或子系统。所述处理电路46可用于执行下文论述的各种操作。如图5所示,如果部分技术在软件中实施,则设备可以将软件的指令存储在合适的非瞬时性计算机可读存储介质中,并且使用一个或多个处理器在硬件中执行指令,从而执行本技术实施例技术。视频编码器20和视频解码器30中的其中一个可作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。
[0138]
源设备12和目的设备14可包括各种设备中的任一种,包括任意类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、相机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(例如,内容业务服务器或内容分发服务器)、广播接收设备、广播发射设备以及监控设备等等,并可以不使用或使用任意类型的操作系统。源设备12和目的设备14也可以是云计算场景中的设备,例如云计算场景中的虚拟机等。在一些情况下,源设备12和目的设备14可配备用于无线通信的组件。因此,源设备12和目的设备14可以是无线通信设备。
[0139]
源设备12和目的设备14可以安装虚拟现实(virtual reality,vr)应用、增强现实(augmented reality,ar)应用或者混合现实(mixed reality,mr)应用等虚拟场景应用程序(application,app),并可以基于用户的操作(例如点击、触摸、滑动、抖动、声控等)运行vr应用、ar应用或者mr应用。源设备12和目的设备14可以通过摄像头和/或传感器采集环境中任意物体的图像/视频,再根据采集的图像/视频在显示设备上显示虚拟物体,该虚拟物体可以是vr场景、ar场景或mr场景中的虚拟物体(即虚拟环境中的物体)。
[0140]
需要说明的是,本技术实施例中,源设备12和目的设备14中的虚拟场景应用程序可以是源设备12和目的设备14自身内置的应用程序,也可以是用户自行安装的第三方服务商提供的应用程序,对此不做具体限定。
[0141]
此外,源设备12和目的设备14可以安装实时视频传输应用,例如直播应用。源设备12和目的设备14可以通过摄像头采集图像/视频,再将采集的图像/视频在显示设备上显示。
[0142]
在一些情况下,图1a所示的视频编解码系统10仅仅是示例性的,本技术实施例提供的技术可适用于视频编码设置(例如,视频编码或视频解码),这些设置不一定包括编码设备与解码设备之间的任何数据通信。在其他示例中,数据从本地存储器中检索,通过网络发送,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码
设备可以从存储器中检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是编码数据到存储器和/或从存储器中检索并解码数据的设备来执行。
[0143]
请参考图1b,图1b为本技术实施例提供的视频编解码系统40的一种示例性框图,如图1b所示,视频编解码系统40可以包含成像设备41、视频编码器20、视频解码器30(和/或藉由处理电路46实施的视频编/解码器)、天线42、一个或多个处理器43、一个或多个内存存储器44和/或显示设备45。
[0144]
如图1b所示,成像设备41、天线42、处理电路46、视频编码器20、视频解码器30、处理器43、内存存储器44和/或显示设备45能够互相通信。在不同实例中,视频编解码系统40可以只包含视频编码器20或只包含视频解码器30。
[0145]
在一些实例中,天线42可以用于传输或接收视频数据的经编码比特流。另外,在一些实例中,显示设备45可以用于呈现视频数据。处理电路46可以包含专用集成电路(application-specific integrated circuit,asic)逻辑、图形处理器、通用处理器等。视频编解码系统40也可以包含可选的处理器43,该可选处理器43类似的可以包含专用集成电路(application-specific integrated circuit,asic)逻辑、图形处理器、通用处理器等。另外,内存存储器44可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(static random access memory,sram)、动态随机存储器(dynamic random access memory,dram)等)或非易失性存储器(例如,闪存等)等。在非限制性实例中,内存存储器44可以由超速缓存内存实施。在其他实例中,处理电路46可以包含存储器(例如,缓存等)用于实施图像缓冲器等。
[0146]
在一些实例中,通过逻辑电路实施的视频编码器20可以包含(例如,通过处理电路46或内存存储器44实施的)图像缓冲器和(例如,通过处理电路46实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过处理电路46实施的视频编码器20,以实施参照图2和/或本文中所描述的任何其他编码器系统或子系统所论述的各种模块。逻辑电路可以用于执行本文所论述的各种操作。
[0147]
在一些实例中,视频解码器30可以以类似方式通过处理电路46实施,以实施参照图3的视频解码器30和/或本文中所描述的任何其他解码器系统或子系统所论述的各种模块。在一些实例中,逻辑电路实施的视频解码器30可以包含(通过处理电路46或内存存储器44实施的)图像缓冲器和(例如,通过处理电路46实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过处理电路46实施的视频解码器30,以实施参照图3和/或本文中所描述的任何其他解码器系统或子系统所论述的各种模块。
[0148]
在一些实例中,天线42可以用于接收视频数据的经编码比特流。如所论述,经编码比特流可以包含本文所论述的与编码视频帧相关的数据、指示符、索引值、模式选择数据等,例如与编码分割相关的数据(例如,变换系数或经量化变换系数,(如所论述的)可选指示符,和/或定义编码分割的数据)。视频编解码系统40还可包含耦合至天线42并用于解码经编码比特流的视频解码器30。显示设备45用于呈现视频帧。
[0149]
应理解,本技术实施例中对于参考视频编码器20所描述的实例,视频解码器30可以用于执行相反过程。关于信令语法元素,视频解码器30可以用于接收并解析这种语法元素,相应地解码相关视频数据。在一些例子中,视频编码器20可以将语法元素熵编码成经编码视频比特流。在此类实例中,视频解码器30可以解析这种语法元素,并相应地解码相关视
频数据。
[0150]
为便于描述,参考通用视频编码(versatile video coding,vvc)参考软件或由itu-t视频编码专家组(video coding experts group,vceg)和iso/iec运动图像专家组(motion picture experts group,mpeg)的视频编码联合工作组(joint collaboration team on video coding,jct-vc)开发的高性能视频编码(high-efficiency video coding,hevc)描述本技术实施例。本领域普通技术人员理解本技术实施例不限于hevc或vvc。
[0151]
编码器和编码方法
[0152]
如图2所示,视频编码器20包括输入端(或输入接口)201、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、模式选择单元260、熵编码单元270和输出端(或输出接口)272。模式选择单元260可包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可包括运动估计单元和运动补偿单元(未示出)。图2所示的视频编码器20也可称为混合型视频编码器或基于混合型视频编解码器的视频编码器。
[0153]
参见图2,帧间预测单元为经过训练的目标模型(亦称为神经网络),该神经网络用于处理输入图像或图像区域或图像块,以生成输入图像块的预测值。例如,用于帧间预测的神经网络用于接收输入的图像或图像区域或图像块,并且生成输入的图像或图像区域或图像块的预测值。
[0154]
残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径,而反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元244和帧内预测单元254组成编码器的后向信号路径,其中编码器20的后向信号路径对应于解码器的信号路径(参见图3中的解码器30)。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
[0155]
图像和图像分割(图像和块)
[0156]
编码器20可用于通过输入端201等接收图像(或图像数据)17,例如,形成视频或视频序列的图像序列中的图像。接收的图像或图像数据也可以是预处理后的图像(或预处理后的图像数据)19。为简单起见,以下描述使用图像17。图像17也可称为当前图像或待编码的图像(尤其是在视频编码中将当前图像与其他图像区分开时,其它图像例如同一视频序列,即也包括当前图像的视频序列,中的之前编码后图像和/或解码后图像)。
[0157]
(数字)图像为或可以视为具有强度值的像素点组成的二维阵列或矩阵。阵列中的像素点也可以称为像素(pixel或pel)(图像元素的简称)。阵列或图像在水平方向和垂直方向(或轴线)上的像素点数量决定了图像的大小和/或分辨率。为了表示颜色,通常采用三个颜色分量,即图像可以表示为或包括三个像素点阵列。在rbg格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点阵列。但是,在视频编码中,每个像素通常以亮度/色度格式或颜色空间表示,例如ycbcr,包括y指示的亮度分量(有时也用l表示)以及cb、cr表示的两个色度分量。亮度(luma)分量y表示亮度或灰度水平强度(例如,在灰度等级图像中两者相
同),而两个色度(chrominance,简写为chroma)分量cb和cr表示色度或颜色信息分量。相应地,ycbcr格式的图像包括亮度像素点值(y)的亮度像素点阵列和色度值(cb和cr)的两个色度像素点阵列。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是黑白的,则该图像可以只包括亮度像素点阵列。相应地,图像可以为例如单色格式的亮度像素点阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度像素点阵列和两个相应的色度像素点阵列。
[0158]
在一个实施例中,视频编码器20的实施例可包括图像分割单元(图2中未示出),用于将图像17分割成多个(通常不重叠)图像块203。这些块在h.265/hevc和vvc标准中也可以称为根块、宏块(h.264/avc)或编码树块(coding tree block,ctb),或编码树单元(coding tree unit,ctu)。分割单元可用于对视频序列中的所有图像使用相同的块大小和使用限定块大小的对应网格,或在图像或图像子集或图像组之间改变块大小,并将每个图像分割成对应块。
[0159]
在其他实施例中,视频编码器可用于直接接收图像17的块203,例如,组成所述图像17的一个、几个或所有块。图像块203也可以称为当前图像块或待编码图像块。
[0160]
与图像17一样,图像块203同样是或可认为是具有强度值(像素点值)的像素点组成的二维阵列或矩阵,但是图像块203的比图像17的小。换句话说,块203可包括一个像素点阵列(例如,单色图像17情况下的亮度阵列或彩色图像情况下的亮度阵列或色度阵列)或三个像素点阵列(例如,彩色图像17情况下的一个亮度阵列和两个色度阵列)或根据所采用的颜色格式的任何其他数量和/或类型的阵列。块203的水平方向和垂直方向(或轴线)上的像素点数量限定了块203的大小。相应地,块可以为m
×
n(m列
×
n行)个像素点阵列,或m
×
n个变换系数阵列等。
[0161]
在一个实施例中,图2所示的视频编码器20用于逐块对图像17进行编码,例如,对每个块203执行编码和预测。
[0162]
在一个实施例中,图2所示的视频编码器20还可以用于使用片(也称为视频片)分割和/或编码图像,其中图像可以使用一个或多个片(通常为不重叠的)进行分割或编码。每个片可包括一个或多个块(例如,编码树单元ctu)或一个或多个块组(例如h.265/hevc/vvc标准中的编码区块(tile)和vvc标准中的砖(brick)。
[0163]
在一个实施例中,图2所示的视频编码器20还可以用于使用片/编码区块组(也称为视频编码区块组)和/或编码区块(也称为视频编码区块)对图像进行分割和/或编码,其中图像可以使用一个或多个片/编码区块组(通常为不重叠的)进行分割或编码,每个片/编码区块组可包括一个或多个块(例如ctu)或一个或多个编码区块等,其中每个编码区块可以为矩形等形状,可包括一个或多个完整或部分块(例如ctu)。
[0164]
残差计算
[0165]
残差计算单元204用于通过如下方式根据图像块(或原始块)203和预测块265来计算残差块205(后续详细介绍了预测块265):例如,逐个像素点(逐个像素)从图像块203的像素点值中减去预测块265的像素点值,得到像素域中的残差块205。
[0166]
变换
[0167]
变换处理单元206用于对残差块205的像素点值执行离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sine transform,dst)等,得到变换域
中的变换系数207。变换系数207也可称为变换残差系数,表示变换域中的残差块205。
[0168]
变换处理单元206可用于应用dct/dst的整数化近似,例如为h.265/hevc指定的变换。与正交dct变换相比,这种整数化近似通常由某一因子按比例缩放。为了维持经过正变换和逆变换处理的残差块的范数,使用其他比例缩放因子作为变换过程的一部分。比例缩放因子通常是根据某些约束条件来选择的,例如比例缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的权衡等。例如,在编码器20侧通过逆变换处理单元212为逆变换(以及在解码器30侧通过例如逆变换处理单元312为对应逆变换)指定具体的比例缩放因子,以及相应地,可以在编码器20侧通过变换处理单元206为正变换指定对应比例缩放因子。
[0169]
在一个实施例中,视频编码器20(对应地,变换处理单元206)可用于输出一种或多种变换的类型等变换参数,例如,直接输出或由熵编码单元270进行编码或压缩后输出,例如使得视频解码器30可接收并使用变换参数进行解码。
[0170]
量化
[0171]
量化单元208用于通过例如标量量化或矢量量化对变换系数207进行量化,得到量化变换系数209。量化变换系数209也可称为量化残差系数209。
[0172]
量化过程可减少与部分或全部变换系数207有关的位深度。例如,可在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m。可通过调整量化参数(quantization parameter,qp)修改量化程度。例如,对于标量量化,可以应用不同程度的比例来实现较细或较粗的量化。较小量化步长对应较细量化,而较大量化步长对应较粗量化。可通过量化参数(quantization parameter,qp)指示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可对应精细量化(较小量化步长),较大的量化参数可对应粗糙量化(较大量化步长),反之亦然。量化可包括除以量化步长,而反量化单元210等执行的对应或逆解量化可包括乘以量化步长。根据例如hevc一些标准的实施例可用于使用量化参数来确定量化步长。一般而言,可以根据量化参数使用包含除法的等式的定点近似来计算量化步长。可以引入其他比例缩放因子来进行量化和解量化,以恢复可能由于在用于量化步长和量化参数的等式的定点近似中使用的比例而修改的残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的比例。或者,可以使用自定义量化表并在比特流中等将其从编码器向解码器指示。量化是有损操作,其中量化步长越大,损耗越大。
[0173]
在一个实施例中,视频编码器20(对应地,量化单元208)可用于输出量化参数(quantization parameter,qp),例如,直接输出或由熵编码单元270进行编码或压缩后输出,例如使得视频解码器30可接收并使用量化参数进行解码。
[0174]
反量化
[0175]
反量化单元210用于对量化系数执行量化单元208的反量化,得到解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可称为解量化残差系数211,对应于变换系数207,但是由于量化造成损耗,反量化系数211通常与变换系数不完全相同。
[0176]
逆变换
[0177]
逆变换处理单元212用于执行变换处理单元206执行的变换的逆变换,例如,逆离
散余弦变换(discrete cosine transform,dct)或逆离散正弦变换(discrete sine transform,dst),以在像素域中得到重建残差块213(或对应的解量化系数213)。重建残差块213也可称为变换块213。
[0178]
重建
[0179]
重建单元214(例如,求和器214)用于将变换块213(即重建残差块213)添加到预测块265,以在像素域中得到重建块215,例如,将重建残差块213的像素点值和预测块265的像素点值相加。
[0180]
滤波
[0181]
环路滤波器单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,得到滤波块221,或通常用于对重建像素点进行滤波以得到滤波像素点值。例如,环路滤波器单元用于顺利进行像素转变或提高视频质量。环路滤波器单元220可包括一个或多个环路滤波器,例如去块滤波器、像素点自适应偏移(sample-adaptive offset,sao)滤波器或一个或多个其他滤波器,例如自适应环路滤波器(adaptive loop filter,alf)、噪声抑制滤波器(noise suppression filter,nsf)或任意组合。例如,环路滤波器单元220可以包括去块滤波器、sao滤波器和alf滤波器。滤波过程的顺序可以是去块滤波器、sao滤波器和alf滤波器。再例如,增加一个称为具有色度缩放的亮度映射(luma mapping with chroma scaling,lmcs)(即自适应环内整形器)的过程。该过程在去块之前执行。再例如,去块滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、atmvp子块边缘、子块变换(sub-block transform,sbt)边缘和内子部分(intra sub-partition,isp)边缘。尽管环路滤波器单元220在图2中示为环路滤波器,但在其他配置中,环路滤波器单元220可以实现为环后滤波器。滤波块221也可称为滤波重建块221。
[0182]
在一个实施例中,视频编码器20(对应地,环路滤波器单元220)可用于输出环路滤波器参数(例如sao滤波参数、alf滤波参数或lmcs参数),例如,直接输出或由熵编码单元270进行熵编码后输出,例如使得解码器30可接收并使用相同或不同的环路滤波器参数进行解码。
[0183]
解码图像缓冲器
[0184]
解码图像缓冲器(decoded picture buffer,dpb)230可以是存储参考图像数据以供视频编码器20在编码视频数据时使用的参考图像存储器。dpb 230可以由多种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random access memory,dram),包括同步dram(synchronous dram,sdram)、磁阻ram(magnetoresistive ram,mram)、电阻ram(resistive ram,rram)或其他类型的存储设备。解码图像缓冲器230可用于存储一个或多个滤波块221。解码图像缓冲器230还可用于存储同一当前图像或例如之前的重建图像等不同图像的其他之前的滤波块,例如之前重建和滤波的块221,并可提供完整的之前重建即解码图像(和对应参考块和像素点)和/或部分重建的当前图像(和对应参考块和像素点),例如用于帧间预测。解码图像缓冲器230还可用于存储一个或多个未经滤波的重建块215,或一般存储未经滤波的重建像素点,例如,未被环路滤波单元220滤波的重建块215,或未进行任何其他处理的重建块或重建像素点。
[0185]
模式选择(分割和预测)
[0186]
模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,用于
从解码图像缓冲器230或其他缓冲器(例如,列缓冲器,图2中未显示)接收或获得原始块203(当前图像17的当前块203)和重建图像数据等原始图像数据,例如,同一(当前)图像和/或一个或多个之前解码图像的滤波和/或未经滤波的重建像素点或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以得到预测块265或预测值265。
[0187]
模式选择单元260可用于为当前块(包括不分割)和预测模式(例如帧内或帧间预测模式)确定或选择一种分割,生成对应的预测块265,以对残差块205进行计算和对重建块215进行重建。
[0188]
在一个实施例中,模式选择单元260可用于选择分割和预测模式(例如,从模式选择单元260支持的或可用的预测模式中),所述预测模式提供最佳匹配或者说最小残差(最小残差是指传输或存储中更好的压缩),或者提供最小信令开销(最小信令开销是指传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可用于根据码率失真优化(rate distortion optimization,rdo)确定分割和预测模式,即选择提供最小码率失真优化的预测模式。本文“最佳”、“最低”、“最优”等术语不一定指总体上“最佳”、“最低”、“最优”的,但也可以指满足终止或选择标准的情况,例如,超过或低于阈值的值或其他限制可能导致“次优选择”,但会降低复杂度和处理时间。
[0189]
换言之,分割单元262可用于将视频序列中的图像分割为编码树单元(coding tree unit,ctu)序列,ctu 203可进一步被分割成较小的块部分或子块(再次形成块),例如,通过迭代使用四叉树(quad-tree partitioning,qt)分割、二叉树(binary-tree partitioning,bt)分割或三叉树(triple-tree partitioning,tt)分割或其任意组合,并且用于例如对块部分或子块中的每一个执行预测,其中模式选择包括选择分割块203的树结构和选择应用于块部分或子块中的每一个的预测模式。
[0190]
下文将详细地描述由视频编码器20执行的分割(例如,由分割单元262执行)和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
[0191]
分割
[0192]
分割单元262可将一个图像块(或ctu)203分割(或划分)为较小的部分,例如正方形或矩形形状的小块。对于具有三个像素点阵列的图像,一个ctu由n
×
n个亮度像素点块和两个对应的色度像素点块组成。ctu中亮度块的最大允许大小在正在开发的通用视频编码(versatile video coding,vvc)标准中被指定为128
×
128,但是将来可指定为不同于128
×
128的值,例如256
×
256。图像的ctu可以集中/分组为片/编码区块组、编码区块或砖。一个编码区块覆盖着一个图像的矩形区域,一个编码区块可以分成一个或多个砖。一个砖由一个编码区块内的多个ctu行组成。没有分割为多个砖的编码区块可以称为砖。但是,砖是编码区块的真正子集,因此不称为编码区块。vvc支持两种编码区块组模式,分别为光栅扫描片/编码区块组模式和矩形片模式。在光栅扫描编码区块组模式,一个片/编码区块组包含一个图像的编码区块光栅扫描中的编码区块序列。在矩形片模式中,片包含一个图像的多个砖,这些砖共同组成图像的矩形区域。矩形片内的砖按照片的砖光栅扫描顺序排列。这些较小块(也可称为子块)可进一步分割为更小的部分。这也称为树分割或分层树分割,其中在根树级别0(层次级别0、深度0)等的根块可以递归的分割为两个或两个以上下一个较低树级别的块,例如树级别1(层次级别1、深度1)的节点。这些块可以又分割为两个或两个以上下一个较低级别的块,例如树级别2(层次级别2、深度2)等,直到分割结束(因为满足结
束标准,例如达到最大树深度或最小块大小)。未进一步分割的块也称为树的叶块或叶节点。分割为两个部分的树称为二叉树(binary-tree,bt),分割为三个部分的树称为三叉树(ternary-tree,tt),分割为四个部分的树称为四叉树(quad-tree,qt)。
[0193]
例如,编码树单元(ctu)可以为或包括亮度像素点的ctb、具有三个像素点阵列的图像的色度像素点的两个对应ctb或单色图像的像素点的ctb或使用三个独立颜色平面和语法结构(用于编码像素点)编码的图像的像素点的ctb。相应地,编码树块(ctb)可以为n
×
n个像素点块,其中n可以设为某个值使得分量划分为ctb,这就是分割。编码单元(coding unit,cu)可以为或包括亮度像素点的编码块、具有三个像素点阵列的图像的色度像素点的两个对应编码块或单色图像的像素点的编码块或使用三个独立颜色平面和语法结构(用于编码像素点)编码的图像的像素点的编码块。相应地,编码块(cb)可以为m
×
n个像素点块,其中m和n可以设为某个值使得ctb划分为编码块,这就是分割。
[0194]
例如,在实施例中,根据hevc可通过使用表示为编码树的四叉树结构将编码树单元(ctu)划分为多个cu。在叶cu级作出是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行编码的决定。每个叶cu可以根据pu划分类型进一步划分为一个、两个或四个pu。一个pu内使用相同的预测过程,并以pu为单位向解码器传输相关信息。在根据pu划分类型应用预测过程得到残差块之后,可以根据类似于用于cu的编码树的其他四叉树结构将叶cu分割为变换单元(tu)。
[0195]
例如,在实施例中,根据当前正在开发的最新视频编码标准(称为通用视频编码(vvc),使用嵌套多类型树(例如二叉树和三叉树)的组合四叉树来划分用于分割编码树单元的分段结构。在编码树单元内的编码树结构中,cu可以为正方形或矩形。例如,编码树单元(ctu)首先由四叉树结构进行分割。四叉树叶节点进一步由多类型树结构分割。多类型树形结构有四种划分类型:垂直二叉树划分(split_bt_ver)、水平二叉树划分(split_bt_hor)、垂直三叉树划分(split_tt_ver)和水平三叉树划分(split_tt_hor)。多类型树叶节点称为编码单元(cu),除非cu对于最大变换长度而言太大,这样的分段用于预测和变换处理,无需其他任何分割。在大多数情况下,这表示cu、pu和tu在四叉树嵌套多类型树的编码块结构中的块大小相同。当最大支持变换长度小于cu的彩色分量的宽度或高度时,就会出现该异常。vvc制定了具有四叉树嵌套多类型树的编码结构中的分割划分信息的唯一信令机制。在信令机制中,编码树单元(ctu)作为四叉树的根首先被四叉树结构分割。然后每个四叉树叶节点(当足够大可以被)被进一步分割为一个多类型树结构。在多类型树结构中,通过第一标识(mtt_split_cu_flag)指示节点是否进一步分割,当对节点进一步分割时,先用第二标识(mtt_split_cu_vertical_flag)指示划分方向,再用第三标识(mtt_split_cu_binary_flag)指示划分是二叉树划分或三叉树划分。根据mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag的值,解码器可以基于预定义规则或表格推导出cu的多类型树划分模式(mttsplitmode)。需要说明的是,对于某种设计,例如vvc硬件解码器中的64
×
64的亮度块和32
×
32的色度流水线设计,当亮度编码块的宽度或高度大于64时,不允许进行tt划分。当色度编码块的宽度或高度大于32时,也不允许tt划分。流水线设计将图像分为多个虚拟流水线数据单元(virtual pipeline data unit,vpdu),每个vpdu在图像中定义为互不重叠的单元。在硬件解码器中,连续的vpdu在多个流水线阶段同时处理。在大多数流水线阶段,vpdu大小与缓冲器大小大致成正比,因此需要保持较小的vpdu。在大多数硬件解码
器中,vpdu大小可以设置为最大变换块(transform block,tb)大小。但是,在vvc中,三叉树(tt)和二叉树(bt)的分割可能会增加vpdu的大小。
[0196]
另外,需要说明的是,当树节点块的一部分超出底部或图像右边界时,强制对该树节点块进行划分,直到每个编码cu的所有像素点都位于图像边界内。
[0197]
例如,所述帧内子分割(intra sub-partitions,isp)工具可以根据块大小将亮度帧内预测块垂直或水平的分为两个或四个子部分。
[0198]
在一个示例中,视频编码器20的模式选择单元260可以用于执行上文描述的分割技术的任意组合。
[0199]
如上所述,视频编码器20用于从(预定的)预测模式集合中确定或选择最好或最优的预测模式。预测模式集合可包括例如帧内预测模式和/或帧间预测模式。
[0200]
帧内预测
[0201]
帧内预测模式集合可包括35种不同的帧内预测模式,例如,像dc(或均值)模式和平面模式的非方向性模式,或如hevc定义的方向性模式,或者可包括67种不同的帧内预测模式,例如,像dc(或均值)模式和平面模式的非方向性模式,或如vvc中定义的方向性模式。例如,若干传统角度帧内预测模式自适应地替换为vvc中定义的非正方形块的广角帧内预测模式。又例如,为了避免dc预测的除法运算,仅使用较长边来计算非正方形块的平均值。并且,平面模式的帧内预测结果还可以使用位置决定的帧内预测组合(position dependent intra prediction combination,pdpc)方法修改。
[0202]
帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建像素点来生成帧内预测块265。
[0203]
帧内预测单元254(或通常为模式选择单元260)还用于输出帧内预测参数(或通常为指示块的选定帧内预测模式的信息)以语法元素266的形式发送到熵编码单元270,以包含到编码图像数据21中,从而视频解码器30可执行操作,例如接收并使用用于解码的预测参数。
[0204]
hevc中的帧内预测模式包括直流预测模式,平面预测模式和33种角度预测模式,共计35个候选预测模式。当前块可以使用左侧和上方已重建图像块的像素作为参考进行帧内预测。当前块的周边区域中用来对当前块进行帧内预测的图像块成为参考块,参考块中的像素称为参考像素。35个候选预测模式中,直流预测模式适用于当前块中纹理平坦的区域,该区域中所有像素均使用参考块中的参考像素的平均值作为预测;平面预测模式适用于纹理平滑变化的图像块,符合该条件的当前块使用参考块中的参考像素进行双线性插值作为当前块中的所有像素的预测;角度预测模式利用当前块的纹理与相邻已重建图像块的纹理高度相关的特性,沿某一角度复制对应的参考块中的参考像素的值作为当前块中的所有像素的预测。
[0205]
hevc编码器给当前块从35个候选预测模式中选择一个最优帧内预测模式,并将该最优帧内预测模式写入视频码流。为提升帧内预测的编码效率,编码器/解码器会从周边区域中、采用帧内预测的已重建图像块各自的最优帧内预测模式中推导出3个最可能模式,如果给当前块选择的最优帧内预测模式是这3个最可能模式的其中之一,则编码一个第一索引指示所选择的最优帧内预测模式是这3个最可能模式的其中之一;如果选中的最优帧内预测模式不是这3个最可能模式,则编码一个第二索引指示所选择的最优帧内预测模式是
其他32个模式(35个候选预测模式中除前述3个最可能模式外的其他模式)的其中之一。hevc标准使用5比特的定长码作为前述第二索引。
[0206]
hevc编码器推导出3个最可能模式的方法包括:选取当前块的左相邻图像块和上相邻图像块的最优帧内预测模式放入集合,如果这两个最优帧内预测模式相同,则集合中只保留一个即可。如果这两个最优帧内预测模式相同且均为角度预测模式,则再选取与该角度方向邻近的两个角度预测模式加入集合;否则,依次选择平面预测模式、直流模式和竖直预测模式加入集合,直到集合中的模式数量达到3。
[0207]
hevc解码器对码流做熵解码后,获得当前块的模式信息,该模式信息包括指示当前块的最优帧内预测模式是否在3个最可能模式中的指示标识,以及当前块的最优帧内预测模式在3个最可能模式中的索引或者当前块的最优帧内预测模式在其他32个模式中的索引。
[0208]
帧间预测
[0209]
在可能的实现中,帧间预测模式集合取决于可用参考图像(即,例如前述存储在dbp230中的至少部分之前解码的图像)和其他帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分,例如当前块的区域附近的搜索窗口区域,来搜索最佳匹配参考块,和/或例如取决于是否执行半像素、四分之一像素和/或16分之一内插的像素内插。
[0210]
除上述预测模式外,还可以采用跳过模式和/或直接模式。
[0211]
例如,扩展合并预测,这个模式的合并候选列表由以下五个候选类型按顺序组成:来自空间相邻cu的空间mvp、来自并置cu的时间mvp、来自fifo表的基于历史的mvp、成对平均mvp和零mv。可以使用基于双边匹配的解码器侧运动矢量修正(decoder side motion vector refinement,dmvr)来增加合并模式的mv的准确度。带有mvd的合并模式(merge mode with mvd,mmvd)来自有运动矢量差异的合并模式。在发送跳过标志和合并标志之后立即发送mmvd标志,以指定cu是否使用mmvd模式。可以使用cu级自适应运动矢量分辨率(adaptive motion vector resolution,amvr)方案。amvr支持cu的mvd以不同的精度进行编码。根据当前cu的预测模式,自适应地选择当前cu的mvd。当cu以合并模式进行编码时,可以将合并的帧间/帧内预测(combined inter/intra prediction,ciip)模式应用于当前cu。对帧间和帧内预测信号进行加权平均,得到ciip预测。对于仿射运动补偿预测,通过2个控制点(4参数)或3个控制点(6参数)运动矢量的运动信息来描述块的仿射运动场。基于子块的时间运动矢量预测(subblock-based temporal motion vector prediction,sbtmvp),与hevc中的时间运动矢量预测(temporal motion vector prediction,tmvp)类似,但预测的是当前cu内的子cu的运动矢量。双向光流(bi-directional optical flow,bdof)以前称为bio,是一种减少计算的简化版本,特别是在乘法次数和乘数大小方面的计算。在三角形分割模式中,cu以对角线划分和反对角线划分两种划分方式被均匀划分为两个三角形部分。此外,双向预测模式在简单平均的基础上进行了扩展,以支持两个预测信号的加权平均。
[0212]
帧间预测单元244可包括运动估计(motion estimation,me)单元和运动补偿(motion compensation,mc)单元(两者在图2中未示出)。运动估计单元可用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或至少一个或多个之前重建块,
例如,一个或多个其它/不同之前解码图像231的重建块,来进行运动估计。例如,视频序列可包括当前图像和之前的解码图像231,或换句话说,当前图像和之前的解码图像231可以为形成视频序列的图像序列的一部分或形成该图像序列。
[0213]
例如,编码器20可用于从多个其他图像中的同一或不同图像的多个参考块中选择参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。该偏移也称为运动矢量(motion vector,mv)。
[0214]
运动补偿单元用于获取,例如接收,帧间预测参数,并根据或使用该帧间预测参数执行帧间预测,得到帧间预测块246。由运动补偿单元执行的运动补偿可能包含根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可能包括对子像素精度执行内插。内插滤波可从已知像素的像素点中产生其他像素的像素点,从而潜在地增加可用于对图像块进行编码的候选预测块的数量。一旦接收到当前图像块的pu对应的运动矢量时,运动补偿单元可在其中一个参考图像列表中定位运动矢量指向的预测块。
[0215]
运动补偿单元还可以生成与块和视频片相关的语法元素,以供视频解码器30在解码视频片的图像块时使用。此外,或者作为片和相应语法元素的替代,可以生成或使用编码区块组和/或编码区块以及相应语法元素。
[0216]
在获取先进的运动矢量预测(advanced motion vector prediction,amvp)模式中的候选运动矢量列表的过程中,作为备选可以加入候选运动矢量列表的运动矢量(motion vector,mv)包括当前块的空域相邻和时域相邻的图像块的mv,其中空域相邻的图像块的mv又可以包括位于当前块左侧的左方候选图像块的mv和位于当前块上方的上方候选图像块的mv。示例性的,请参考图4,图4为本技术实施例提供的候选图像块的一种示例性的示意图,如图4所示,左方候选图像块的集合包括{a0,a1},上方候选图像块的集合包括{b0,b1,b2},时域相邻的候选图像块的集合包括{c,t},这三个集合均可以作为备选被加入到候选运动矢量列表中,但是根据现有编码标准,amvp的候选运动矢量列表的最大长度为2,因此需要根据规定的顺序从三个集合中确定在候选运动矢量列表中加入最多两个图像块的mv。该顺序可以是优先考虑当前块的左方候选图像块的集合{a0,a1}(先考虑a0,a0不可得再考虑a1),其次考虑当前块的上方候选图像块的集合{b0,b1,b2}(先考虑b0,b0不可得再考虑b1,b1不可得再考虑b2),最后考虑当前块的时域相邻的候选图像块的集合{c,t}(先考虑t,t不可得再考虑c)。
[0217]
得到上述候选运动矢量列表后,通过率失真代价(rate distortion cost,rd cost)从候选运动矢量列表中确定最优的mv,将rd cost最小的候选运动矢量作为当前块的运动矢量预测值(motion vector predictor,mvp)。率失真代价由以下公式计算获得:
[0218]
j=sad+λr
[0219]
其中,j表示rd cost,sad为使用候选运动矢量进行运动估计后得到的预测块的像素值与当前块的像素值之间的绝对误差和(sum of absolute differences,sad),r表示码率,λ表示拉格朗日乘子。
[0220]
编码端将确定出的mvp在候选运动矢量列表中的索引传递到解码端。进一步地,可以在mvp为中心的邻域内进行运动搜索获得当前块实际的运动矢量,编码端计算mvp与实际的运动矢量之间的运动矢量差值(motion vector difference,mvd),并将mvd也传递到解
码端。解码端解析索引,根据该索引在候选运动矢量列表中找到对应的mvp,解析mvd,将mvd与mvp相加得到当前块实际的运动矢量。
[0221]
在获取融合(merge)模式中的候选运动信息列表的过程中,作为备选可以加入候选运动信息列表的运动信息包括当前块的空域相邻或时域相邻的图像块的运动信息,其中空域相邻的图像块和时域相邻的图像块可参照图4,候选运动信息列表中对应于空域的候选运动信息来自于空间相邻的5个块(a0、a1、b0、b1和b2),若空域相邻块不可得或者为帧内预测,则其运动信息不加入候选运动信息列表。当前块的时域的候选运动信息根据参考帧和当前帧的图序计数(picture order count,poc)对参考帧中对应位置块的mv进行缩放后获得,先判断参考帧中位置为t的块是否可得,若不可得则选择位置为c的块。得到上述候选运动信息列表后,通过rd cost从候选运动信息列表中确定最优的运动信息作为当前块的运动信息。编码端将最优的运动信息在候选运动信息列表中位置的索引值(记为merge index)传递到解码端。
[0222]
熵编码
[0223]
熵编码单元270用于将熵编码算法或方案(例如,可变长度编码(variable length coding,vlc)方案、上下文自适应vlc方案(context adaptive vlc,calvc)、算术编码方案、二值化算法、上下文自适应二进制算术编码(context adaptive binary arithmetic coding,cabac)、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)编码或其它熵编码方法或技术)应用于量化残差系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其他语法元素,得到可以通过输出端272以编码比特流21等形式输出的编码图像数据21,使得视频解码器30等可以接收并使用用于解码的参数。可将编码比特流21传输到视频解码器30,或将其保存在存储器中稍后由视频解码器30传输或检索。
[0224]
视频编码器20的其他结构变体可用于对视频流进行编码。例如,基于非变换的编码器20可以在某些块或帧没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以具有组合成单个单元的量化单元208和反量化单元210。
[0225]
解码器和解码方法
[0226]
如图3所示,视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如编码比特流21),得到解码图像331。编码图像数据或比特流包括用于解码所述编码图像数据的信息,例如表示编码视频片(和/或编码区块组或编码区块)的图像块的数据和相关的语法元素。
[0227]
在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲器330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或包括运动补偿单元。在一些示例中,视频解码器30可执行大体上与参照图2的视频编码器100描述的编码过程相反的解码过程。
[0228]
如编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器dpb230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。相应地,反量化单元310在功能上可与反量化单元110相同,逆变换处理单元
312在功能上可与逆变换处理单元122相同,重建单元314在功能上可与重建单元214相同,环路滤波器320在功能上可与环路滤波器220相同,解码图像缓冲器330在功能上可与解码图像缓冲器230相同。因此,视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。
[0229]
熵解码
[0230]
熵解码单元304用于解析比特流21(或一般为编码图像数据21)并对编码图像数据21执行熵解码,得到量化系数309和/或解码后的编码参数(图3中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其他语法元素等中的任一个或全部。熵解码单元304可用于应用编码器20的熵编码单元270的编码方案对应的解码算法或方案。熵解码单元304还可用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其他语法元素,以及向解码器30的其他单元提供其他参数。视频解码器30可以接收视频片和/或视频块级的语法元素。此外,或者作为片和相应语法元素的替代,可以接收或使用编码区块组和/或编码区块以及相应语法元素。
[0231]
反量化
[0232]
反量化单元310可用于从编码图像数据21(例如通过熵解码单元304解析和/或解码)接收量化参数(quantization parameter,qp)(或一般为与反量化相关的信息)和量化系数,并基于所述量化参数对所述解码的量化系数309进行反量化以获得反量化系数311,所述反量化系数311也可以称为变换系数311。反量化过程可包括使用视频编码器20为视频片中的每个视频块计算的量化参数来确定量化程度,同样也确定需要执行的反量化的程度。
[0233]
逆变换
[0234]
逆变换处理单元312可用于接收解量化系数311,也称为变换系数311,并对解量化系数311应用变换以得到像素域中的重建残差块213。重建残差块213也可称为变换块313。变换可以为逆变换,例如逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从编码图像数据21(例如通过熵解码单元304解析和/或解码)接收变换参数或相应信息,以确定应用于解量化系数311的变换。
[0235]
重建
[0236]
重建单元314(例如,求和器314)用于将重建残差块313添加到预测块365,以在像素域中得到重建块315,例如,将重建残差块313的像素点值和预测块365的像素点值相加。
[0237]
滤波
[0238]
环路滤波器单元320(在编码环路中或之后)用于对重建块315进行滤波,得到滤波块321,从而顺利进行像素转变或提高视频质量等。环路滤波器单元320可包括一个或多个环路滤波器,例如去块滤波器、像素点自适应偏移(sample-adaptive offset,sao)滤波器或一个或多个其他滤波器,例如自适应环路滤波器(adaptive loop filter,alf)、噪声抑制滤波器(noise suppression filter,nsf)或任意组合。例如,环路滤波器单元220可以包括去块滤波器、sao滤波器和alf滤波器。滤波过程的顺序可以是去块滤波器、sao滤波器和alf滤波器。再例如,增加一个称为具有色度缩放的亮度映射(luma mapping with chroma scaling,lmcs)(即自适应环内整形器)的过程。该过程在去块之前执行。再例如,去块滤波
过程也可以应用于内部子块边缘,例如仿射子块边缘、atmvp子块边缘、子块变换(sub-block transform,sbt)边缘和内子部分(intra sub-partition,isp)边缘。尽管环路滤波器单元320在图3中示为环路滤波器,但在其他配置中,环路滤波器单元320可以实现为环后滤波器。
[0239]
解码图像缓冲器
[0240]
随后将一个图像中的解码视频块321存储在解码图像缓冲器330中,解码图像缓冲器330存储作为参考图像的解码图像331,参考图像用于其他图像和/或分别输出显示的后续运动补偿。
[0241]
解码器30用于通过输出端312等输出解码图像311,向用户显示或供用户查看。
[0242]
预测
[0243]
帧间预测单元344在功能上可与帧间预测单元244(特别是运动补偿单元)相同,帧内预测单元354在功能上可与帧间预测单元254相同,并基于从编码图像数据21(例如通过熵解码单元304解析和/或解码)接收的分割和/或预测参数或相应信息决定划分或分割和执行预测。模式应用单元360可用于根据重建图像、块或相应的像素点(已滤波或未滤波)执行每个块的预测(帧内或帧间预测),得到预测块365。
[0244]
当将视频片编码为帧内编码(intra coded,i)片时,模式应用单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的之前解码块的数据生成用于当前视频片的图像块的预测块365。当视频图像编码为帧间编码(即,b或p)片时,模式应用单元360中的帧间预测单元344(例如运动补偿单元)用于根据运动矢量和从熵解码单元304接收的其他语法元素生成用于当前视频片的视频块的预测块365。对于帧间预测,可从其中一个参考图像列表中的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在dpb 330中的参考图像,使用默认构建技术来构建参考帧列表0和列表1。除了片(例如视频片)或作为片的替代,相同或类似的过程可应用于编码区块组(例如视频编码区块组)和/或编码区块(例如视频编码区块)的实施例,例如视频可以使用i、p或b编码区块组和/或编码区块进行编码。
[0245]
模式应用单元360用于通过解析运动矢量和其他语法元素,确定用于当前视频片的视频块的预测信息,并使用预测信息产生用于正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素确定用于编码视频片的视频块的预测模式(例如帧内预测或帧间预测)、帧间预测片类型(例如b片、p片或gpb片)、用于片的一个或多个参考图像列表的构建信息、用于片的每个帧间编码视频块的运动矢量、用于片的每个帧间编码视频块的帧间预测状态、其它信息,以解码当前视频片内的视频块。除了片(例如视频片)或作为片的替代,相同或类似的过程可应用于编码区块组(例如视频编码区块组)和/或编码区块(例如视频编码区块)的实施例,例如视频可以使用i、p或b编码区块组和/或编码区块进行编码。
[0246]
在一个实施例中,图3的视频编码器30还可以用于使用片(也称为视频片)分割和/或解码图像,其中图像可以使用一个或多个片(通常为不重叠的)进行分割或解码。每个片可包括一个或多个块(例如ctu)或一个或多个块组(例如h.265/hevc/vvc标准中的编码区块和vvc标准中的砖。
[0247]
在一个实施例中,图3所示的视频解码器30还可以用于使用片/编码区块组(也称
为视频编码区块组)和/或编码区块(也称为视频编码区块)对图像进行分割和/或解码,其中图像可以使用一个或多个片/编码区块组(通常为不重叠的)进行分割或解码,每个片/编码区块组可包括一个或多个块(例如ctu)或一个或多个编码区块等,其中每个编码区块可以为矩形等形状,可包括一个或多个完整或部分块(例如ctu)。
[0248]
视频解码器30的其他变型可用于对编码图像数据21进行解码。例如,解码器30可以在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在某些块或帧没有逆变换处理单元312的情况下直接反量化残差信号。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。
[0249]
应理解,在编码器20和解码器30中,可以对当前步骤的处理结果进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量推导或环路滤波之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进行进一步的运算,例如裁剪(clip)或移位(shift)运算。
[0250]
应该注意的是,可以对当前块的推导运动矢量(包括但不限于仿射模式的控制点运动矢量、仿射、平面、atmvp模式的子块运动矢量、时间运动矢量等)进行进一步运算。例如,根据运动矢量的表示位将运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitdepth,则范围为-2^(bitdepth-1)至2^(bitdepth-1)-1,其中“^”表示幂次方。例如,如果bitdepth设置为16,则范围为-32768~32767;如果bitdepth设置为18,则范围为-131072~131071。例如,推导运动矢量的值(例如一个8
×
8块中的4个4
×
4子块的mv)被限制,使得所述4个4
×
4子块mv的整数部分之间的最大差值不超过n个像素,例如不超过1个像素。这里提供了两种根据bitdepth限制运动矢量的方法。
[0251]
尽管上述实施例主要描述了视频编解码,但应注意的是,编解码系统10、编码器20和解码器30的实施例以及本文描述的其他实施例也可以用于静止图像处理或编解码,即视频编解码中独立于任何先前或连续图像的单个图像的处理或编解码。一般情况下,如果图像处理仅限于单个图像17,帧间预测单元244(编码器)和帧间预测单元344(解码器)可能不可用。视频编码器20和视频解码器30的所有其他功能(也称为工具或技术)同样可用于静态图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。
[0252]
请参考图5,图5为本技术实施例提供的视频译码设备500的一种示例性框图。视频译码设备500适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备500可以是解码器,例如图1a中的视频解码器30,也可以是编码器,例如图1a中的视频编码器20。
[0253]
视频译码设备500包括:用于接收数据的入端口510(或输入端口510)和接收单元(receiver unit,rx)520;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,cpu)530;例如,这里的处理器530可以是神经网络处理器530;用于传输数据的发送单元(transmitter unit,tx)540和出端口550(或输出端口550);用于存储数据的存储器560。视频译码设备500还可包括耦合到入端口510、接收单元520、发送单元540和出端口550的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,用于光信号或电信号的出口或入口。
[0254]
处理器530通过硬件和软件实现。处理器530可实现为一个或多个处理器芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器530与入端口510、接收单元520、发送单元540、出端口550和存储器560通信。处理器530包括译码模块570(例如,基于神经网络的译码
模块570)。译码模块570实施上文所公开的实施例。例如,译码模块570执行、处理、准备或提供各种编码操作。因此,通过译码模块570为视频译码设备500的功能提供了实质性的改进,并且影响了视频译码设备500到不同状态的切换。或者,以存储在存储器560中并由处理器530执行的指令来实现译码模块570。
[0255]
存储器560包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择执行程序时存储此类程序,并且存储在程序执行过程中读取的指令和数据。存储器560可以是易失性和/或非易失性的,可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、三态内容寻址存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0256]
请参考图6,图6为本技术实施例提供的装置600的一种示例性框图,装置600可用作图1a中的源设备12和目的设备14中的任一个或两个。
[0257]
装置600中的处理器602可以是中央处理器。或者,处理器602可以是现有的或今后将研发出的能够操控或处理信息的任何其他类型设备或多个设备。虽然可以使用如图所示的处理器602等单个处理器来实施已公开的实现方式,但使用一个以上的处理器速度更快和效率更高。
[0258]
在一种实现方式中,装置600中的存储器604可以是只读存储器(rom)设备或随机存取存储器(ram)设备。任何其他合适类型的存储设备都可以用作存储器604。存储器604可以包括处理器602通过总线612访问的代码和数据606。存储器604还可包括操作系统608和应用程序610,应用程序610包括允许处理器602执行本文所述方法的至少一个程序。例如,应用程序610可以包括应用1至n,还包括执行本文所述方法的视频译码应用。
[0259]
装置600还可以包括一个或多个输出设备,例如显示器618。在一个示例中,显示器618可以是将显示器与可用于感测触摸输入的触敏元件组合的触敏显示器。显示器618可以通过总线612耦合到处理器602。
[0260]
虽然装置600中的总线612在本文中描述为单个总线,但是总线612可以包括多个总线。此外,辅助储存器可以直接耦合到装置600的其他组件或通过网络访问,并且可以包括存储卡等单个集成单元或多个存储卡等多个单元。因此,装置600可以具有各种各样的配置。
[0261]
本技术实施例提供的编解码方法可以应用于各种编解码场景。
[0262]
示例性地,本技术实施例提供的编解码方法可应用到n端(也就是n个设备)协同渲染的场景中,其中,n为大于1的整数。
[0263]
一种可能的场景中,可以由1个设备生成渲染输入信息(渲染输入信息可以包括三维物体模型(也可以称为3d(3-dimension,三维)物体模型)、探针数据等中的一种或多种,本技术实施例对此不作限制;本技术实施例以渲染输入信息为探针数据为例进行示例性说明),然后将探针数据分发给其他n-1个设备。n-1个设备接收到的探针数据后,在渲染过程中可以根据探针数据,确定三维场景中对象(与三维物体模型对应)的着色效果;待渲染完成后,可以得到渲染后的图像。
[0264]
一种可能的场景中,可以由n1(n1的取值范围为2~n,其中,n1可以等于2或n,n1为整数)个设备协同生成探针数据,其中,n1个设备中每个设备生成探针数据的一部分。接着,
这n1个设备中每个设备将自身生成的部分探针数据,分发给其他n-1个设备。其中,n1个设备接收到探针数据后,在渲染过程中,可以根据接收到的探针数据和自身生成的部分探针数据,确定三维场景中对象的着色效果;待渲染完成后,可以得到渲染后的图像。n-n1个设备接收到探针数据后,在渲染过程中,可以根据接收到的探针数据,确定三维场景中对象的着色效果;待渲染完成后,可以得到渲染后的图像。
[0265]
为了便于说明,可以将n端协同渲染场景中生成探针数据的设备,称为第一设备,将用于渲染,且在渲染过程中根据探针数据确定三维场景中对象的着色效果的设备,称为第二设备;一个设备既可以是第一设备,也可以是第二设备,本技术对此不作限制。其中,第一设备可以是服务器,也可以是终端;第二设备可以是终端。
[0266]
图7a为示例性示出的系统框架示意图。在图7a的实施例中,第一设备为布设在云端的计算中心服务器,第二设备为客户端,图7a为示例性示出的端云协同渲染系统框架示意图。
[0267]
参照图7a,示例性地,端云协同渲染系统可以包括:计算中心服务器、边缘服务器和客户端;其中,边缘服务器可以包括n(n为大于1的整数)个,客户端可以包括k1+k2+......+kn个,k1、k2......kn,均为正整数。计算中心服务器与n个边缘服务器连接,每个边缘服务器与至少一个客户端连接。如图7a所示,边缘服务器1与客户端11、客户端12、......、客户端k1这k1个客户端连接,边缘服务器2与客户端21、客户端22、......、客户端k2这k2个客户端连接,......,边缘服务器n与客户端n1、客户端n2、......、客户端kn这kn个客户端连接。
[0268]
示例性地,计算中心服务器可以是一个服务器,也可以是服务器集群,本技术实施例对此不作限制。
[0269]
示例性地,本技术实施例不限制边缘服务器的数量n,具体可以根据实际应用场景设置,本技术实施例对此不作限制。
[0270]
示例性地,本技术实施例不限制每个边缘服务器所连接的客户端的数量,具体可以根据实际应用场景设置。此外,每个边缘服务器所连接的客户端的数量可以相同,也可以不同(即k1、k2......kn可以相等,也可以不等),具体可以根据实际应用场景设置,本技术实施例对此也不作限制。
[0271]
示例性地,客户端可以包括但不限于:个人电脑、手机、vr(virtual reality,虚拟现实)穿戴设备等终端设备。
[0272]
应该理解的是,图7a所示的端云协同渲染系统框架仅是本技术实施例端云协同渲染系统框架的一个示例,本技术实施例的端云协同渲染系统中,计算中心服务器和边缘服务器可以是同一个服务器;或者本技术实施例的端云协同渲染系统不包含边缘服务器,而是计算中心服务器与各客户端连接,本技术实施例对此不作限制。本技术实施例以图7a所示的端云协同渲染系统框架为例进行示例性说明。
[0273]
示例性地,计算中心服务器,可以用于生成探针数据。
[0274]
示例性地,边缘服务器,可以用于分发探针数据。
[0275]
示例性地,客户端,可以用于渲染以及显示渲染后的图像;其中,在渲染过程中,可以根据探针数据确定三维场景中对象的着色效果。
[0276]
示例性地,云游戏、云展览、室内装修、服装设计、建筑设计等多端协同渲染的场
景,均可以采用图7a所示的端云协同渲染系统框架实现。
[0277]
例如,云游戏场景中,计算中心服务器接收到客户端11发送的视角切换指示后,可以生成目标视角对应游戏场景的探针数据;然后将探针数据发送给边缘服务器1,由边缘服务器1将该探针数据发送给客户端11。客户端11接收到探针数据后可以进行渲染,以及在渲染过程中根据接收到的探针数据,确定目标视角对应游戏场景中对象的着色效果;待渲染完成后,可以得到目标视角对应游戏场景的图像并显示。
[0278]
例如,室内装修场景中,计算中心服务器接收到客户端21发送的添加家具指示后,可以生成添加目标家具后的客厅场景对应的探针数据;然后将探针数据发送给与边缘服务器2,由边缘服务器2将该探针数据发送给客户端21。客户端21接收到探针数据后可以进行渲染,以及在渲染过程中根据接收到的探针数据,确定添加目标家具后的客厅场景中对象的着色效果;待渲染完成后,可以得到添加目标家具后的客厅图像并显示。
[0279]
为了便于后续说明,以下对计算中心服务器生成探针数据的过程,以及客户端在渲染过程中,根据探针数据确定三维场景中对象的着色效果的过程进行介绍。
[0280]
计算中心服务器生成探针数据的过程:
[0281]
示例性地,计算中心服务器的渲染过程可以如下:将三维物体模型(可以包括人的模型或物的模型)加载到三维场景(也可以称为3d场景)中(这样可以将三维物体模型转换为三维场景中的对象),接着,可以对三维场景中的对象进行渲染,以得到当前帧(也就是渲染后的图像)。为了模拟三维场景中光线进行多次反射后,三维场景中对象的着色效果,可以在对三维场景中的对象进行渲染过程中,在三维场景中放置多个探针,采用探针探测周围环境,以得到探针数据;然后,根据探针数据,确定三维场景中对象的着色效果。
[0282]
图7b为示例性示出的三维场景中探针分布示意图。图7b中每一个小球,代表一个探针,在图7b的实施例中,探针为ddgi探针。
[0283]
参照图7b,示例性地,每个探针在三维场景中放置的位置,以及每个探针与其他探针之间的位置关系可以按照需求设置,本技术实施例对此不作限制。例如,在图7b中,每个探针与其周围6个方向(正上方、正下方、正前方、正后方、正左方和正右方)上的6个探针之间的距离相等。此外,在三维场景中放置的探针的数量也可以按照需求设置,本技术实施例对此也不作限制。
[0284]
其中,在三维场景中放置多个探针后,可以按照场景需求,为每个探针配置对应的属性数据(该属性数据用于渲染过程中)。其中,属性数据包括但不限于:探针的类型(如反射探针、ddgi探针)、探针的启用标识、探针的位置、探针的位置偏移(例如,按照预设的方式放置探针后,可以得到各个探针的初始位置;为了获取更好的着色效果,可以调整部分探针的位置;这样,针对这些探针而言,调整后的位置与初始位置的偏移,可以称为探针的位置偏移。例如,按照图1b的方式放置探针后,每个探针与其周围6个探针之间的距离均相等;若调整了某一个探针的位置,则该探针与其周围6个探针之间的距离不等),等等;本技术对此不作限制。
[0285]
示例性的,在三维场景中放置多个探针后,每个探针可以探测以其自身为中心的周围环境,即探测三维场景中以其自身为中心的周围对象的特性,并记录这些特性,作为该探针的环境数据。其中,周遭环境数据包括光照数据、颜色、可见性数据、材质、法向或纹理坐标中的至少一项。光照数据可以用于描述探针周围对象的出射光照,可见性数据,即各个
角度的物体与这个探针的距离的分布数据,包括每个角度的距离的均值、距离的平方和距离的方差等数据。
[0286]
示例性的,可以采用ddgi算法,生成每个探针对应的光照数据和可见性数据;以下以当前帧的一个探针为例,对生成该探针的光照数据和可见性数据的过程进行说明。首先,采样若干条从该探针发出的光线,以及计算这若干条光线与三维场景中各对象的第一个交点。接着,计算探针的若干条光线中每条光线与三维场景中各对象的第一个交点之间的距离,得到初始距离数据;以及计算三维场景中各对象与若干条光线中每条光线的第一个交点的光照,得到初始光照数据。随后,可以将初始距离数据从离散域,转换成连续域的球面数据,具体的,可以在球面上使用cos^k核函数(k为正整数),对初始距离数据进行滤波处理,以得到候选距离数据。以及可以将初始距离数据的从离散域,转换成连续域的球面数据,类似地,可以在球面上使用cos^k核函数(k为正整数),对初始距离数据的平方进行滤波处理,以得到候选距离数据的平方。以及可以将初始光照数据从离散域,转换成连续域的球面数据,具体的,可以在球面上使用cos^k核函数(k为正整数),对初始光照数据进行滤波处理,以得到候选光照数据。然后,将该探针的候选距离数据,与上一帧的该探针的距离数据进行加权计算,得到当前帧的该探针的距离数据;将该探针的候选距离数据的平方,与上一帧的该探针的距离数据的平方进行加权计算,得到当前帧的该探针的距离数据的平方;以及将该探针的候选光照数据,与上一帧的该探针的光照数据进行加权计算,得到当前帧的该探针的光照数据。这样,可以得到当前帧的所有探针的光照数据和可见性数据。
[0287]
示例性的,用于渲染过程的属性数据和环境数据,可以组成探针的探针数据。
[0288]
示例性的,每个探针的光照数据和可见性数据,均可以采用二维图像表示,也可以采用球谐函数基底系数表示,还可以采用球面小波基底系数表示,本技术对此不作限制。
[0289]
需要说明的是,假设三维场景中包括m(m为正整数)个探针,其中,m1个探针具有光照数据、可见性数据和属性数据中的任意一种数据,m2个探针具有光照数据、可见性数据和属性数据中的任意两种数据,m3个探针具有光照数据、可见性数据和属性数据,m4个探针不具有探针数据。其中,m1+m2+m3+m4=m,m1、m2、m3和m1均为整数,m1、m2、m3和m4的数值,可以按照需求设置,本技术实施例对此不作限制。
[0290]
客户端在渲染过程中,根据探针数据确定三维场景中对象的着色效果的过程:
[0291]
示例性地,在客户端的渲染过程中,探针数据会被用于计算三维场景中对象的着色效果。具体来说,在渲染每个像素时,首先获取该像素对应的3d空间的坐标,然后查找包围该坐标的8个探针。接下来,通过探针的可见性数据计算每个探针对该像素的贡献权重,即通过距离判断探针与其3d坐标是否互相可见,若不可见,则权重为0,若可见,则再通过距离的平方计算探针的贡献权重。之后,使用贡献权重对探针的光照数据进行加权平均,得到该像素的着色结果。
[0292]
由于探针数据的数据量比较大,计算中心服务器可以将探针数据压缩后再发送给客户端,以降低网络带宽。
[0293]
图8a为示例性示出的编码框架示意图。
[0294]
参照图8a,示例性地,编码器可以包括:码流负载均衡模块,数据形式转换模块、第一重排布模块和编码模块。
[0295]
示例性地,码流负载均衡模块,可以用于确定探针数据的目标码率以及编码方式
(如帧内编码或帧间编码)。
[0296]
示例性的,数据形式转换模块,可以用于对环境数据进行数据形式转换,以将环境数据转换为更为紧凑的表示;或者增加渲染过程所需的重要性更高的数据在码流中占用的比特数。
[0297]
示例性地,第一重排布模块,可以用于对探针的属性数据进行重排布。
[0298]
其中,探针的属性数据可以包括用于数据形式转换的属性数据(后续称为第一属性数据),和上述用于渲染过程中的属性数据(后续称为第二属性数据)。
[0299]
示例性地,编码模块,用于编码,以得到码流。
[0300]
需要说明的是,码流负载均衡模块、数据形式转换模块和第一重排布模块执行的步骤,属于编码器编码流程中的步骤。
[0301]
应该理解的是,图8a仅是本技术实施例编码器的一个示例性,本技术实施例的编码器可以具有比图8a更少的模块。例如,编码器包括:码流负载均衡模块、数据形式转换模块以及编码模块;又例如,编码器包括:数据形式转换模块、第一重排布模块以及编码模块;还例如,编码器包括:数据形式转换模块和编码模块;等等。此外,本技术实施例的编码器可以具有比图8a更多的模块,本技术实施例对此不作限制。
[0302]
应该理解的是,图8a中的码流负载均衡模块,数据形式转换模块、第一重排布模块和编码模块可以是相互独立的模块,或者其中的任意两个及两个以上的模块是一个整体,本技术实施例对此不作限制。此外,码流负载均衡模块,数据形式转换模块、第一重排布模块和编码模块是逻辑模块,编码器还可以划分为其他模块或者这些模块采用其他名称,本技术实施例对此也不作限制。
[0303]
应该理解的是,编码器仅包括编码模块,码流负载均衡模块、数据形式转换模块和第一重排布模块,可以独立于编码器,本技术实施例对此不作限制。本技术实施例以图8a中的编码器为例进行示例性说明。
[0304]
图8b为示例性示出的数据形式转换模块结构示意图。
[0305]
参照图8b,示例性地,数据形式转换模块可以包括:量化模块、域转换模块和第二重排布模块。
[0306]
示例性地,量化模块,可以用于量化。
[0307]
示例性地,域转换模块,可以用于域转换。
[0308]
示例性地,域转换可以是指将数据的表示形式从一个域转换到另一个域。其中,域可以按照需求从不同角度进行划分,例如:
[0309]
从是否归一化的角度划分,可以划分为:归一化域和非归一化域。
[0310]
从色彩空间的角度划分,可以划分为:rgb域、yuv域、xyz域和lab域。
[0311]
从数值变化曲线的角度划分,可以划分为:线性域和非线性域,其中,非线性域可以如指数域、pq(perceptual quantization,感知量化)域、hlg(hybird log gamma,混合对数伽马)域等。
[0312]
从数值表示形式的角度划分,可以划分为:图像域和变换域。示例性的,图像域可以是指采用图像表示的域。示例性的,变换域可以是指使用基底函数与对应系数表示的域;对于变换基底域中的数据y(t),可以使用x个基底e_1(t)~e_x(t)对其进行近似,使得数据y(t)近似等于x个变换基底与对应变换系数相乘的和。其中,变换基底包括但不限于:球谐
函数基底、球面小波基底、特征向量等,本技术对此不作限制。
[0313]
示例性地,第二重排布模块,可以用于进行数据的重排布。
[0314]
应该理解的是,图8b仅是本技术实施例数据形式转换模块的一个示例性,本技术实施例的数据形式转换模块可以具有比图8b更少的模块,例如,数据形式转换模块仅包括域转换模块;又例如,数据形式转换模块仅包括量化模块和域转换模块;再例如,数据形式转换模块仅包括域转换模块和第二重排布模块,本技术实施例对此不作限制。此外,本技术实施例的数据形式转换模块可以具有比图8b更多的模块,本技术实施例对此也不作限制。
[0315]
应该理解的是,图8b中的量化模块、域转换模块和第二重排布模块可以是相互独立的模块,或者其中的任意两个及两个以上的模块是一个整体,本技术实施例对此不作限制。此外,量化模块、域转换模块和第二重排布模块是逻辑模块,数据形式转换模块还可以划分为其他模块或者这些模块采用其他名称,本技术实施例对此也不作限制。
[0316]
图9a为示例性示出的解码框架示意图。在图9a的实施例中,描述了与图8a中编码框架对应的解码框架。
[0317]
参照图9a,示例性地,解码器可以包括:数据形式转换模块、第一重排布模块和解码模块。
[0318]
示例性的,数据形式转换模块,可以用于对从码流中解码得到的部分数据进行数据形式转换,以得到探针数据。
[0319]
示例性的,第一重排模块,可以用于对从码流中解码得到的另一部分数据进行重排布,以得到探针的属性数据。其中,探针的属性数据可以包括用于数据形式转换的属性数据(后续称为第一属性数据),和上述用于渲染过程中的属性数据(后续称为第二属性数据)。
[0320]
示例性地,解码模块,用于对码流进行解码。
[0321]
应该理解的是,解码器中的数据形式转换模块的数据形式转换过程,是编码器中的数据形式转换模块的数据形式转换过程的逆过程;以及解码器中的第一重排布模块的重排布过程,是编码器中的第一重排布模块的重排布过程的逆过程。
[0322]
需要说明的是,数据形式转换模块和第一重排布模块执行的步骤,属于解码器解码流程中的步骤。
[0323]
应该理解的是,图9a仅是本技术实施例解码器的一个示例性,本技术实施例的解码器可以具有比图9a更少的模块,例如,解码器包括数据形式转换模块和解码模块,本技术实施例对此不作限制。或者,本技术实施例的解码器可以具有比图9a示出的更多的模块,本技术实施例对此不作限制。
[0324]
应该理解的是,图9a中的数据形式转换模块、第一重排布模块和解码模块可以是相互独立的模块,或者其中的任意两个及两个以上的模块是一个整体,本技术实施例对此不作限制。此外,数据形式转换模块、第一重排布模块和解码模块是逻辑模块,解码器还可以划分为其他模块或者这些模块采用其他名称,本技术实施例对此也不作限制。
[0325]
应该理解的是,解码器仅包括解码模块,数据形式转换模块和第一重排布模块,可以独立于解码器,本技术实施例对此不作限制。本技术实施例以图9a中的解码器为例进行示例性说明。
[0326]
图9b为示例性示出的数据形式转换模块结构示意图。
[0327]
参照图9b,示例性地,数据形式转换模块可以包括:反量化模块、域转换模块和第二重排布模块。
[0328]
示例性地,反量化模块,可以用于反量化。应该理解的是,解码器中反量化模块的反量化过程,是编码器中量化模块的量化过程的逆过程。
[0329]
示例性地,域转换模块,可以用于域转换。应该理解的是,解码器中域转换模块的域转换过程,是编码器中域转换模块的域转换过程的逆过程。
[0330]
示例性地,第二重排布模块,可以用于进行数据的重排布。应该理解的是,解码器中第二重排布模块的重排布过程,是编码器中第二重排布模块的重排布过程的逆过程。
[0331]
应该理解的是,图9b仅是本技术实施例数据形式转换模块的一个示例性,本技术实施例的数据形式转换模块可以具有比图9b更少的模块。例如,数据形式转换模块仅包括反量化模块和域转换模块,或者,数据形式转换模块仅包括域转换模块和第二重排布模块,本技术实施例对此不作限制。或者,本技术实施例的数据形式转换模块可以具有比图9b更多的模块,本技术实施例对此不作限制。
[0332]
应该理解的是,图9b中的反量化模块、域转换模块和第二重排布模块可以是相互独立的模块,或者其中的任意两个及两个以上的模块是一个整体,本技术实施例对此不作限制。此外,反量化模块、域转换模块和第二重排布模块是逻辑模块,数据形式转换模块还可以划分为其他模块或者这些模块采用其他名称,本技术实施例对此也不作限制。
[0333]
请参考图10和图11,图10和图11为本技术实施例提供的编码方法的流程图。该编码方法可由上述解码器执行。编码方法描述为一系列的步骤或操作,应当理解的是,编码方法可以以各种顺序执行和/或同时发生,不限于图10所示的执行顺序。如图10和图11所示,编码方法可以包括:
[0334]
s1001、确定探针数据组的目标归一化组合。
[0335]
其中,上述目标归一化组合为多个归一化组合中使上述探针数据组对应的渲染损失最小的归一化组合,上述目标归一化组合包括目标归一化方法和目标归一化参数。探针数据(probe data)组对应的渲染损失(rendering loss),可以是探针数据组对应的渲染效果与探针数据组经过编解码后对应的渲染效果之间的误差。比如,上述渲染损失可以用psnr进行度量,也可以用mse或其他参数进行度量,本技术实施例对此不作限定。
[0336]
探针数据组可以包括一帧或多帧中的单行探针的探针数据、一帧或多帧中的单个探针的探针数据、一帧或多帧中的单个通道探针的探针数据或一帧或多帧中的所有探针的探针数据。其中,探针数据与三维场景中的一个或多个探针对应,用于在渲染过程中确定所述三维场景中对象的着色效果,可以包括属性数据和周遭环境数据。探针数据中的周遭环境数据指的是每个探针处不同方向的属性数据,如光照数据、颜色、可见性数据、材质、法向、纹理坐标等信息。探针数据中的属性数据可以包括:探针的类型、探针是否启用、探针的位置、探针的相对初始位置的偏移、周遭环境数据在编码过程中所使用的参数等等,不一而足。
[0337]
示例性地,云游戏场景中,计算中心服务器接收到客户端发送的视角切换指示后,可以采用云游戏场景中放置的多个探针探测周围环境以生成目标视角对应游戏场景的探针数据;然后将由探针数据构成的探针数据组发送给边缘服务器。由边缘服务器确定探针数据组的目标归一化组合。
[0338]
又示例性地,室内装修场景中,计算中心服务器接收到客户端发送的添加家具指示后,可以采用室内装修场景中放置的多个探针探测周围环境以生成添加目标家具后的客厅场景对应的探针数据;然后将由探针数据构成的探针数据组发送给边缘服务器。由边缘服务器确定探针数据组的目标归一化组合。
[0339]
如图12所示,在一种可能的实现方式中,可以先确定上述多个归一化组合中每个归一化组合对于上述探针数据组对应的渲染损失。然后将上述多个归一化组合中使上述探针数据组对应的渲染损失最小的归一化组合确定为上述目标归一化组合。
[0340]
在一种可能的实现方式中,可以先根据上述每个归一化组合对上述探针数据组进行目标操作以得到上述每个归一化组合对于上述探针数据组的渲染结果。然后根据上述探针数据组经上述目标操作进行渲染得到的渲染结果和上述探针数据组未经上述目标操作进行渲染得到的渲染结果确定上述每个归一化组合对于上述探针数据组对应的渲染损失。其中,目标操作包括归一化、编解码和反归一化。
[0341]
其中,上述编解码的具体方法可以采用本领域技术人员能够想到的任何一种方法进行处理,本技术实施例对此不作具体限定。例如,编解码的具体方法可以为hevc、模拟编解码、低分辨率编解码、快速编解码等编解码方法。
[0342]
可选地,上述多个归一化组合可以为由最小最大归一化方法和多个归一化参数组成的归一化组合。
[0343]
m为最大归一化参数,m为最小归一化参数。
[0344]
在一种可能的实现方式中,该方法还可以包括:根据上述参考目标归一化参数确定上述多个归一化组合中的归一化参数,上述参考目标归一化参数为与上述探针数据组相关的探针数据组的目标归一化参数。
[0345]
例如,可以在参考目标归一化参数的1/(1+∈)倍至1+∈倍的范围以内选取多个数值作为上述多个归一化组合中的归一化参数。其中,∈的范围可以为0.01~0.05。
[0346]
可选地,当前帧的探针数据组的目标归一化参数(如m和m)可以在上一帧的探针数据组的目标归一化参数的1/(1+∈)倍至1+∈倍的范围以内。
[0347]
示例性地,假设当前帧的上一帧的探针数据组的目标归一化参数m为1,∈为0.01,则当前帧的探针数据组的目标归一化参数m的取值范围的下限为1/(1+0.01)*1≈0.99,当前帧的探针数据的目标归一化参数m的取值范围的上限为(1+0.01)*1=1.01,即当前帧的探针数据的目标归一化参数m的取值范围为0.99~1.01。
[0348]
可选地,上述多个归一化组合中的多个归一化参数可以为1。
[0349]
s1002、根据上述目标归一化组合对上述探针数据组进行归一化以得到归一化探针数据组。
[0350]
示例性地,云游戏场景中,计算中心服务器接收到客户端发送的视角切换指示后,可以采用云游戏场景中放置的多个探针探测周围环境以生成目标视角对应游戏场景的探针数据;然后将由探针数据构成的探针数据组发送给边缘服务器。由边缘服务器确定探针数据组的目标归一化组合,之后由根据该目标归一化组合对该探针数据组进行归一化以得到归一化探针数据组。
[0351]
又示例性地,室内装修场景中,计算中心服务器接收到客户端发送的添加家具指
示后,可以采用室内装修场景中放置的多个探针探测周围环境以生成添加目标家具后的客厅场景对应的探针数据;然后将由探针数据构成的探针数据组发送给边缘服务器。由边缘服务器确定探针数据组的目标归一化组合,之后由根据该目标归一化组合对该探针数据组进行归一化以得到归一化探针数据组。
[0352]
其中,根据上述目标归一化组合对上述探针数据组进行归一化以得到归一化探针数据组可以采用本领域技术人员能够想到的任何一种方法进行处理。
[0353]
例如,在上述目标归一化组合中的目标归一化方法为预设最大值归一化的情况下,使用预设最大值归一化和目标归一化参数对上述探针数据组进行归一化以得到归一化探针数据组。
[0354]
又例如,在上述目标归一化组合中的目标归一化方法为最大最小归一化的情况下,使用最大最小归一化和目标归一化参数对上述探针数据组进行归一化以得到归一化探针数据组。
[0355]
又例如,在上述目标归一化组合中的目标归一化方法为z-score归一化的情况下,使用0均值归一化和目标归一化参数对上述探针数据组进行归一化以得到归一化探针数据组。
[0356]
s1003、将上述归一化探针数据组编入码流。
[0357]
示例性地,云游戏场景中,边缘服务器可以在得到归一化的游戏场景的探针数据组后,可以将该数据组编入游戏场景的码流中。
[0358]
又示例性地,室内装修场景中,边缘服务器可以在得到归一化的客厅场景对应的探针数据组后,可以将该数据组编入客厅场景的码流中。
[0359]
在一种可能的实现方式中,还可以将上述目标归一化组合编入上述码流。
[0360]
在一种可能的实现方式中,还可以根据上述探针数据组的目标归一化参数和参考目标归一化参数确定上述探针数据组的归一化参数变化量;将上述归一化参数变化量编入上述码流。其中,上述参考目标归一化参数为与上述探针数据组相关的探针数据组的目标归一化参数。
[0361]
例如,在上述探针数据组为通过帧内编码方式编码的探针数据组的情况下,将上述目标归一化组合编入上述码流。
[0362]
在一种可能的实现方式中,上述方法还可以包括:发送归一化信息,上述归一化信息用于指示目标归一化组合。
[0363]
在一种可能的实现方式中,还可以根据上述探针数据组的目标归一化参数和参考目标归一化参数确定上述探针数据组的归一化参数变化量,将上述归一化参数变化量编入码流中。
[0364]
示例性地,如图13所示,可以在所述探针数据组为通过帧内编码的探针数据组的情况下,将所述目标归一化组合编入所述码流,可以在所述探针数据组为通过帧间编码的探针数据组的情况下,将所述归一化参数变化量编入所述码流。其中帧内编码为编码当前帧时只使用了当前帧信息的编码方式,示例性的,可以使用hevc的帧内编码来完成探针数据组的帧内编码;帧间编码为编码当前帧时使用了非当前帧信息的编码方式,示例性的,可以使用hevc的帧间编码来完成探针数据组的帧间编码。
[0365]
在一种可能的实现方式中,还可以根据上述探针数据组的目标归一化参数和参考
目标归一化参数确定上述探针数据组的归一化参数变化量,上述参考目标归一化参数为与上述探针数据组相关的探针数据组的目标归一化参数;将第一信息编入上述码流中,上述第一信息用于指示上述探针数据组的目标归一化参数较上述参考目标归一化参数是否发生变化。
[0366]
例如,可以在上述探针数据组为通过帧间编码方式编码的探针数据组的情况下,将第一信息编入上述码流中。
[0367]
可选地,帧间编码方式可以为除帧内编码方式外的其他编码方式。
[0368]
可选地,第一信息可以用不同的标记位指示上述探针数据组的目标归一化参数较上述参考目标归一化参数是否发生变化。
[0369]
在一种可能的实现方式中,上述方法还可以包括:在上述第一信息指示上述探针数据组的目标归一化参数较上述参考目标归一化参数发生变化的情况下,将上述归一化参数变化量编入上述码流。
[0370]
示例性地,如图14所示,可以在所述探针数据组为通过帧内编码的探针数据组的情况下,将所述目标归一化组合编入所述码流,可以在所述探针数据组为通过帧间编码的探针数据组的情况下,将目标归一化参数是否发生变化的标记编入码流,并在探针数据组的目标归一化参数较上述参考目标归一化参数发生变化的情况下,将上述归一化参数变化量编入上述码流。
[0371]
在一种可能的实现方式中,还可以包括将索引信息编入上述码流。其中,上述索引信息包括探针数据组的标识和上述探针数据组的归一化参数变化量。
[0372]
可以看出,本技术实施例提供的编码方法在归一化过程中,不使用某种固定的归一化方法和归一化参数,而是从多个归一化方法和归一化参数的组合中,选取对探针数据对应的渲染损失最小的归一化方法和归一化参数的组合。相较于使用固定的归一化方法和归一化参数,使用使探针数据对应的渲染损失最小的归一化方法和归一化参数的组合进行归一化,能够减少压缩探针数据造成的渲染损失。
[0373]
请参考图15和图16,图15和图16为本技术实施例提供的解码方法的流程图。该解码方法可由上述解码器执行。解码方法描述为一系列的步骤或操作,应当理解的是,解码方法可以以各种顺序执行和/或同时发生,不限于图15和图16所示的执行顺序。如图15和图16所示,解码方法可以包括:
[0374]
s1501、解码码流以得到归一化探针数据组。
[0375]
示例性地,云游戏场景中,客户端可以在获取到游戏场景的码流后,对该码流进行解码以得到归一化的游戏场景的探针数据组。
[0376]
又示例性地,室内装修场景中,客户端可以在获取到客厅场景的码流后,对该码流进行解码以得到归一化的客厅场景对应的探针数据组。
[0377]
s1502、根据探针数据组的目标归一化组合对上述归一化探针数据组进行反归一化以得到第二探针数据组。
[0378]
上述目标归一化组合为多个归一化组合中使上述第一探针数据组对应的渲染损失最小的归一化组合,上述第一探针数据组为归一化前的上述归一化探针数据组,上述目标归一化组合包括目标归一化方法和目标归一化参数。
[0379]
示例性地,云游戏场景中,客户端可以根据游戏场景的探针数据组的目标归一化
组合,对归一化的游戏场景的探针数据组进行反归一化以得到游戏场景的探针数据组。
[0380]
又示例性地,室内装修场景中,客户端可以根据客厅场景对应的探针数据组的目标归一化组合,对归一化的客厅场景对应的探针数据组进行反归一化以得到客厅场景对应的探针数据组。
[0381]
在一种可能的实现方式中,还可以获取上述目标归一化组合。
[0382]
在一种可能的实现方式中,可以通过获取归一化信息的方式获取上述目标归一化组合。其中,上述归一化信息用于指示目标归一化组合
[0383]
在另一种可能的实现方式中,可以通过解码上述码流以得到上述目标归一化组合。
[0384]
例如,在上述归一化探针数据组为通过帧内编码方式编码的探针数据组的情况下,可以通过解码上述码流以得到上述目标归一化组合。
[0385]
在一种可能的实现方式中,还可以先解码上述码流以得到上述第一探针数据组的归一化参数变化量。然后根据上述归一化参数变化量和参考归一化组合确定上述目标归一化组合。其中,参考归一化组合为与上述第一探针数据组相关的探针数据组的目标归一化组合。
[0386]
例如,可以在上述归一化探针数据组为通过帧间编码方式编码的探针数据组的情况下,根据上述第一探针数据组的目标归一化参数和参考目标归一化参数确定上述第一探针数据组的归一化参数变化量。
[0387]
其中,判断一个探针数据组是否与当前探针数据组是相关的,可以通过多种度量方式进行度量,本技术实施例对此不作限定,其包括但不限于,计算两个探针数据组之间的皮尔逊相关系数,如果皮尔逊相关系数大于第二预设阈值,则认为两组探针数据组中的一组与另一组是相关的;此外,也可以计算两个探针数据组之间的psnr,如果psnr大于预设阈值,则认为两组探针数据组中的一组与另一组是相关的。
[0388]
在又一种可能的实现方式中,还可以先解码上述码流以得到第一信息,在上述第一信息指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数未发生变化的情况下,根据参考归一化组合确定上述目标归一化组合。其中,上述第一信息用于指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数是否发生变化,上述参考归一化组合为与上述第一探针数据组相关的探针数据组的目标归一化组合。
[0389]
例如,可以在上述归一化探针数据组为通过帧间编码方式编码的探针数据组的情况下,先解码上述码流以得到第一信息,在上述第一信息指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数未发生变化的情况下,将参考归一化组合确定为上述目标归一化组合。
[0390]
在又一种可能的实现方式中,还可以先解码上述码流以得到第一信息,在上述第一信息指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数发生变化的情况下,解码上述码流以得到上述第一探针数据组的归一化参数变化量并根据上述归一化参数变化量和上述参考归一化组合确定上述目标归一化组合。
[0391]
例如,可以在上述归一化探针数据组为通过帧间编码方式编码的探针数据组的情况下,先解码上述码流以得到第一信息,在上述第一信息指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数未发生变化的情况下,解码上述码流以得到上述第
一探针数据组的归一化参数变化量并根据上述归一化参数变化量和上述参考归一化组合确定上述目标归一化组合。
[0392]
s1503、根据第二探针数据组进行渲染。
[0393]
其中,根据第二探针数据组进行渲染的具体方法可以采用本领域技术人员能够想到的任何一种方法进行处理,本技术实施例对此不作具体限定。
[0394]
示例性地,云游戏场景中,客户端可以根据游戏场景的探针数据组对游戏场景进行渲染。
[0395]
又示例性地,室内装修场景中,客户端可以根据客厅场景对应的探针数据组对客厅场景进行渲染。
[0396]
下面介绍用于执行上述解码方法的编码装置,如图8a所示,该编码装置可以包括:数据形式转换模块和编码模块。
[0397]
数据形式转换模块,用于确定探针数据组的目标归一化组合。其中,上述目标归一化组合为多个归一化组合中使上述探针数据组对应的渲染损失最小的归一化组合,上述目标归一化组合包括目标归一化方法和目标归一化参数。
[0398]
示例性地,数据形式转换模块可以用于执行上述编码方法中的s1001。
[0399]
数据形式转换模块,还用于根据上述目标归一化组合对上述探针数据组进行归一化以得到归一化探针数据组。
[0400]
示例性地,数据形式转换模块可以用于执行上述编码方法中的s1002。
[0401]
编码模块,用于将上述归一化探针数据组编入码流。
[0402]
示例性地,编码模块可以用于执行上述编码方法中的s1003。
[0403]
在一种可能的实现方式中,上述数据形式转换模块具体用于:确定上述多个归一化组合中每个归一化组合对于上述探针数据组对应的渲染损失;将上述多个归一化组合中使上述探针数据组对应的渲染损失最小的归一化组合确定为上述目标归一化组合。
[0404]
在一种可能的实现方式中,上述数据形式转换模块具体用于:根据上述每个归一化组合对上述探针数据组进行目标操作以得到上述每个归一化组合对于上述探针数据组的渲染结果,上述目标操作包括归一化、编解码和反归一化;根据上述探针数据组经上述目标操作进行渲染得到的渲染结果和上述探针数据组未经上述目标操作进行渲染得到的渲染结果确定上述每个归一化组合对于上述探针数据组对应的渲染损失。
[0405]
在一种可能的实现方式中,上述编码模块还用于:将上述目标归一化组合编入上述码流。
[0406]
在一种可能的实现方式中,上述数据形式转换模块还用于:根据上述探针数据组的目标归一化参数和参考目标归一化参数确定上述探针数据组的归一化参数变化量,上述参考目标归一化参数为与上述探针数据组相关的探针数据组的目标归一化参数;
[0407]
在一种可能的实现方式中,上述编码模块,还用于将上述归一化参数变化量编入上述码流。
[0408]
在一种可能的实现方式中,上述编码模块,还用于将第一信息编入上述码流中,上述第一信息用于指示上述探针数据组的目标归一化参数较上述参考目标归一化参数是否发生变化。
[0409]
在一种可能的实现方式中,上述编码模块还用于:在上述第一信息指示上述探针
数据组的目标归一化参数较上述参考目标归一化参数发生变化的情况下,将上述归一化参数变化量编入上述码流。
[0410]
在一种可能的实现方式中,上述编码模块还用于:将索引信息编入上述码流,上述索引信息包括探针数据组的标识和上述探针数据组的归一化参数变化量。
[0411]
在一种可能的实现方式中,上述数据形式转换模块还用于:根据上述参考目标归一化参数确定上述多个归一化组合中的归一化参数,上述参考目标归一化参数为与上述探针数据组相关的探针数据组的目标归一化参数。
[0412]
在一种可能的实现方式中,上述探针数据组包括探针的周遭环境数据,上述周遭环境数据包括光照数据、颜色、可见性数据、材质、法向或纹理坐标中的至少一项。
[0413]
下面介绍用于执行上述解码方法的解码装置。如图9a所示该解码装置可以包括:数据形式转换模块和数据形式转换模块。
[0414]
解码模块,用于解码码流以得到归一化探针数据组。
[0415]
示例性地,解码模块可以用于执行上述解码方法中的s1501。
[0416]
数据形式转换模块,用于根据第一探针数据组的目标归一化组合对所述归一化探针数据组进行反归一化以得到第二探针数据组,所述目标归一化组合为多个归一化组合中对于所述第一探针数据组对应的渲染损失最小的归一化组合,所述第一探针数据组为归一化前的所述归一化探针数据组,所述目标归一化组合包括目标归一化方法和目标归一化参数。
[0417]
示例性地,数据形式转换模块可以用于执行上述解码方法中的s1502。
[0418]
数据形式转换模块,还用于根据上述第二探针数据组进行渲染。
[0419]
示例性地,数据形式转换模块可以用于执行上述解码方法中的s1503。
[0420]
在一种可能的实现方式中,上述解码模块还用于:获取上述目标归一化组合。
[0421]
在一种可能的实现方式中,上述解码模块具体用于:解码上述码流以得到上述目标归一化组合。
[0422]
在一种可能的实现方式中,上述解码模块具体用于:解码上述码流以得到上述第一探针数据组的归一化参数变化量;根据上述归一化参数变化量和参考归一化组合确定上述目标归一化组合,上述参考归一化组合为与上述第一探针数据组相关的探针数据组的目标归一化组合。
[0423]
在一种可能的实现方式中,上述解码模块具体用于:解码上述码流以得到第一信息,上述第一信息用于指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数是否发生变化,上述参考目标归一化参数为与上述第一探针数据组相关的探针数据组的目标归一化参数;在上述第一信息指示上述第一探针数据组的目标归一化参数较上述参考目标归一化参数未发生变化的情况下,根据参考归一化组合确定上述目标归一化组合,上述参考归一化组合为与上述第一探针数据组相关的探针数据组的目标归一化组合;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,解码所述码流以得到第二信息,所述第二信息用于指示所述第一探针数据组的归一化参数变化量并根据所述归一化参数变化量和所述参考归一化组合确定所述目标归一化组合。
[0424]
本技术实施例还提供一种编码装置,该装置包括:至少一个处理器,当所述至少一
个处理器执行程序代码或指令时,实现上述相关方法步骤实现上述实施例中的编码方法。
[0425]
可选地,该装置还可以包括至少一个存储器,该至少一个存储器用于存储该程序代码或指令。
[0426]
本技术实施例还提供一种解码装置,该装置包括:至少一个处理器,当所述至少一个处理器执行程序代码或指令时,实现上述相关方法步骤实现上述实施例中的解码方法。
[0427]
可选地,该装置还可以包括至少一个存储器,该至少一个存储器用于存储该程序代码或指令。
[0428]
本技术实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在编码装置上运行时,使得编码装置执行上述相关方法步骤实现上述实施例中的编解码方法。
[0429]
本技术实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的编解码方法。
[0430]
本技术实施例还提供一种编解码装置,这个装置具体可以是芯片、集成电路、组件或模块。具体的,该装置可包括相连的处理器和用于存储指令的存储器,或者该装置包括至少一个处理器,用于从外部存储器获取指令。当装置运行时,处理器可执行指令,以使芯片执行上述各方法实施例中的编解码方法。
[0431]
图17示出了一种芯片1700的结构示意图。芯片1700包括一个或多个处理器1701以及接口电路1702。可选的,上述芯片1700还可以包含总线1703。
[0432]
处理器1701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述编解码方法的各步骤可以通过处理器1701中的硬件的集成逻辑电路或者软件形式的指令完成。
[0433]
可选地,上述的处理器1701可以是通用处理器、数字信号处理(digital signal proce ssing,dsp)器、集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0434]
接口电路1702可以用于数据、指令或者信息的发送或者接收,处理器1701可以利用接口电路1702接收的数据、指令或者其他信息,进行加工,可以将加工完成信息通过接口电路1702发送出去。
[0435]
可选的,芯片还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(non-vo latile random access memory,nvram)。
[0436]
可选的,存储器存储了可执行软件模块或者数据结构,处理器可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
[0437]
可选的,芯片可以使用在本技术实施例涉及的编码装置或dop中。可选的,接口电路1702可用于输出处理器1701的执行结果。关于本技术实施例的一个或多个实施例提供的编解码方法可参考前述各个实施例,这里不再赘述。
[0438]
需要说明的,处理器1701、接口电路1702各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
[0439]
其中,本实施例提供的装置、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0440]
应理解,在本技术实施例的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0441]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
[0442]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0443]
在本技术实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
[0444]
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0445]
另外,在本技术实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0446]
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术实施例各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0447]
以上所述,仅为本技术实施例的具体实施方式,但本技术实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术实施例的保护范围之内。因此,本技术实施例的保护范围应所述以权利要求的保护范围为准。
技术特征:
1.一种编码方法,其特征在于,包括:确定探针数据组的目标归一化组合,所述目标归一化组合为多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合,所述目标归一化组合包括目标归一化方法和目标归一化参数;根据所述目标归一化组合对所述探针数据组进行归一化以得到归一化探针数据组;将所述归一化探针数据组编入码流。2.根据权利要求1所述的方法,其特征在于,所述确定探针数据组的目标归一化组合,包括:确定所述多个归一化组合中每个归一化组合对于所述探针数据组对应的渲染损失;将所述多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合确定为所述目标归一化组合。3.根据权利要求2所述的方法,其特征在于,所述确定所述多个归一化组合中每个归一化组合对于所述探针数据组对应的渲染损失,包括:根据所述每个归一化组合对所述探针数据组进行目标操作以得到所述每个归一化组合对于所述探针数据组的渲染结果,所述目标操作包括归一化、编解码和反归一化;根据所述探针数据组经所述目标操作进行渲染得到的渲染结果和所述探针数据组未经所述目标操作进行渲染得到的渲染结果确定所述每个归一化组合对于所述探针数据组对应的渲染损失。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:将所述目标归一化组合编入所述码流。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:根据所述探针数据组的目标归一化参数和参考目标归一化参数确定所述探针数据组的归一化参数变化量,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数;将所述归一化参数变化量编入所述码流。6.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:根据所述探针数据组的目标归一化参数和参考目标归一化参数确定所述探针数据组的归一化参数变化量,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数;将第一信息编入所述码流中,所述第一信息用于指示所述探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:在所述第一信息指示所述探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,将所述归一化参数变化量编入所述码流。8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:将索引信息编入所述码流,所述索引信息包括所述探针数据组的标识和所述探针数据组的归一化参数变化量。9.根据权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:根据参考目标归一化参数确定所述多个归一化组合中的归一化参数,所述参考目标归
一化参数为与所述探针数据组相关的探针数据组的目标归一化参数。10.根据权利要求1至9中任一项所述的方法,其特征在于,所述探针数据组包括探针的周遭环境数据,所述周遭环境数据包括光照数据、颜色、可见性数据、材质、法向或纹理坐标中的至少一项。11.根据权利要求4所述的方法,其特征在于,所述将所述目标归一化组合编入所述码流,包括:在所述探针数据组为通过帧内编码的探针数据组的情况下,将所述目标归一化组合编入所述码流。12.根据权利要求5所述的方法,其特征在于,所述将所述归一化参数变化量编入所述码流,包括:在所述探针数据组为通过帧间编码的探针数据组的情况下,将所述归一化参数变化量编入所述码流。13.一种解码方法,其特征在于,包括:解码码流以得到归一化探针数据组;根据第一探针数据组的目标归一化组合对所述归一化探针数据组进行反归一化以得到第二探针数据组,所述目标归一化组合为多个归一化组合中使所述第一探针数据组对应的渲染损失最小的归一化组合,所述第一探针数据组为归一化前的所述归一化探针数据组,所述目标归一化组合包括目标归一化方法和目标归一化参数;根据所述第二探针数据组进行渲染。14.根据权利要求13所述的方法,其特征在于,所述方法还包括:解码所述码流以得到所述第一探针数据组的归一化参数变化量;根据所述归一化参数变化量和参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合。15.根据权利要求13所述的方法,其特征在于,所述方法还包括:解码所述码流以得到第一信息,所述第一信息用于指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数是否发生变化,所述参考目标归一化参数为与所述第一探针数据组相关的探针数据组的目标归一化参数;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数未发生变化的情况下,根据参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合;在所述第一信息指示所述第一探针数据组的目标归一化参数较所述参考目标归一化参数发生变化的情况下,解码所述码流以得到第二信息,所述第二信息用于指示所述第一探针数据组的归一化参数变化量并根据所述归一化参数变化量和所述参考归一化组合确定所述目标归一化组合。16.一种编码装置,其特征在于,包括:数据形式转换模块和编码模块;所述数据形式转换模块,用于确定探针数据组的目标归一化组合并根据所述目标归一化组合对所述探针数据组进行归一化以得到归一化探针数据组,所述目标归一化组合为多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合,所述目标归一化组合包括目标归一化方法和目标归一化参数;
所述编码模块,用于将所述归一化探针数据组编入码流。17.根据权利要求16所述的装置,其特征在于,所述数据形式转换模块具体用于:确定所述多个归一化组合中每个归一化组合对于所述探针数据组对应的渲染损失;将所述多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合确定为所述目标归一化组合。18.根据权利要求17所述的装置,其特征在于,所述数据形式转换模块具体用于:根据所述每个归一化组合对所述探针数据组进行目标操作以得到所述每个归一化组合对于所述探针数据组的渲染结果,所述目标操作包括归一化、编解码和反归一化;根据所述探针数据组经所述目标操作进行渲染得到的渲染结果和所述探针数据组未经所述目标操作进行渲染得到的渲染结果确定所述每个归一化组合对于所述探针数据组对应的渲染损失。19.根据权利要求16至18中任一项所述的装置,其特征在于,所述编码模块还用于:将所述目标归一化组合编入所述码流。20.根据权利要求16至18中任一项所述的装置,其特征在于,所述数据形式转换模块还用于:根据所述探针数据组的目标归一化参数和参考目标归一化参数确定所述探针数据组的归一化参数变化量,所述参考目标归一化参数为与所述探针数据组相关的探针数据组的目标归一化参数;所述编码模块,还用于将所述归一化参数变化量编入所述码流。21.一种解码装置,其特征在于,包括:解码模块和数据形式转换模块;所述解码模块,用于解码码流以得到归一化探针数据组;所述数据形式转换模块,用于根据第一探针数据组的目标归一化组合对所述归一化探针数据组进行反归一化以得到第二探针数据组,所述目标归一化组合为多个归一化组合中对于所述第一探针数据组对应的渲染损失最小的归一化组合,所述第一探针数据组为归一化前的所述归一化探针数据组,所述目标归一化组合包括目标归一化方法和目标归一化参数;所述数据形式转换模块,用于根据所述第二探针数据组进行渲染。22.根据权利要求21所述的装置,其特征在于,所述解码模块具体用于:解码所述码流以得到所述第一探针数据组的归一化参数变化量;根据所述归一化参数变化量和参考归一化组合确定所述目标归一化组合,所述参考归一化组合为与所述第一探针数据组相关的探针数据组的目标归一化组合。23.一种编码装置,包括至少一个处理器和存储器,其特征在于,所述至少一个处理器执行存储在存储器中的程序或指令,以使得所述编码装置实现上述权利要求1至12中任一项所述的方法24.一种解码装置,包括至少一个处理器和存储器,其特征在于,所述至少一个处理器执行存储在存储器中的程序或指令,以使得所述解码装置实现上述权利要求13至15中任一项所述的方法。25.一种计算机可读存储介质,用于存储计算机程序,其特征在于,当所述计算机程序在计算机或处理器运行时,使得所述计算机或所述处理器实现上述权利要求1至12中任一
项或权利要求13至15中任一项所述的方法。26.一种计算机程序产品,所述计算机程序产品中包含指令,其特征在于,当所述指令在计算机或处理器上运行时,使得所述计算机或所述处理器实现上述权利要求1至12中任一项或权利要求13至15中任一项所述的方法。
技术总结
本申请实施例公开了编解码方法和装置,涉及媒体技术领域,能够减少压缩探针数据造成的渲染损失。其中编码方法包括:首先确定探针数据组的目标归一化组合,然后根据所述目标归一化组合对所述探针数据组进行归一化以得到归一化探针数据组,之后将所述归一化探针数据组编入码流。其中,所述目标归一化组合为多个归一化组合中使所述探针数据组对应的渲染损失最小的归一化组合,所述目标归一化组合包括目标归一化方法和目标归一化参数。标归一化方法和目标归一化参数。标归一化方法和目标归一化参数。
技术研发人员:林泽辉 蔡康颖 陈虎 魏榕
受保护的技术使用者:华为技术有限公司
技术研发日:2022.03.15
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:智能玻璃的驱动系统和方法与流程 下一篇:一种供热管道安装支撑结构的制作方法