用于指示色度量化参数映射函数的方法和装置与流程

文档序号:27945753发布日期:2021-12-11 13:53阅读:106来源:国知局
用于指示色度量化参数映射函数的方法和装置1.相关申请的交叉引用2.本专利申请要求2019年4月26日提交的美国临时专利申请号us62/839,6076、2019年6月21日提交的国际专利申请pct/ru2019/000444、2019年7月7日提交的美国临时专利申请号us62/871,197以及2019年7月9日提交的美国临时专利申请号62/872,238的优先权。上述专利申请的全部相应公开内容通过引用的方式并入本文中。
技术领域
:3.本技术(公开)的实施例大体上涉及图像和/或视频解码领域,更具体涉及用于色度量化参数指示的装置和方法。
背景技术
::4.视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字电视、基于互联网和移动网络的视频传输、视频聊天、视频会议等实时会话应用、dvd和蓝光光盘、视频内容采集和编辑系统以及可携式摄像机的安全应用。5.即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中传输或以其它方式传送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中传送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。技术实现要素:6.本技术实施例提供了独立权利要求所述的用于编码和解码的装置和方法。7.上述和其它目的是通过由独立权利要求请求保护的主题来实现。其它实现方式在从属权利要求、具体实施方式和附图中是显而易见的。8.本发明提供了一种根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的方法,其中,所述方法由解码器执行,包括:9.接收码流;10.解析所述码流,以获取所述亮度qp和关于将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的色度qp映射表的信息;11.至少部分地根据所述亮度qp获取所述qpi;12.根据所述获取的信息,获取所述色度qp映射表;13.根据所述获取的色度qp映射表和所述获取的qpi,获取所述qpc;14.根据所述获取的qpc,获取色度量化参数。15.在上述方法中,16.qpcb、qpcr和qpcbcr可推导如下:17.qpchroma=clip3(‑qpbdoffset,63,qpy);18.qpcb=chromaqptable[0][qpchroma];[0019]qpcr=chromaqptable[1][qpchroma];[0020]qpcbcr=chromaqptable[2][qpchroma];[0021]其中,cb分量和cr分量的色度量化参数qp'cb和qp'cr以及联合cb‑cr编码qp'cbcr可推导如下:[0022]qp'cb=clip3(‑qpbdoffset,63,qpcb+pps_cb_qp_offset+slice_cb_qp_offset+cuqpoffsetcb)+qpbdoffset;[0023]qp'cr=clip3(‑qpbdoffset,63,qpcr+pps_cr_qp_offset+slice_cr_qp_offset+cuqpoffsetcr)+qpbdoffset;[0024]qp'cbcr=clip3(‑qpbdoffset,63,qpcbcr+pps_joint_cbcr_qp_offset_value+[0025]slice_joint_cbcr_qp_offset+cuqpoffsetcbcr)+qpbdoffset;[0026]其中,chromaqptable是所述色度qp映射表;[0027]其中,qpi对应于qpchroma;[0028]其中,qpc对应于qpcb、qpcr和qpcbcr;[0029]其中,qpbdoffset是使用以下公式根据亮度和色度阵列样本的位深度计算的位深度偏移:[0030]qpbdoffset=6*bit_depth_minus8,[0031]其中,bit_depth_minus8的值应在0至8的范围内(包括端值);[0032]其中,pps_cb_qp_offset和pps_cr_qp_offset分别表示用于推导qp'cb和qp'cr的亮度量化参数qp'y的偏移;[0033]其中,pps_joint_cbcr_qp_offset_value表示用于推导qp'cbcr的所述亮度量化参数qp'y的所述偏移;[0034]其中,slice_cr_qp_offset表示在确定所述qp'cr量化参数的值时,待添加到pps_cr_qp_offset的值中的差值;[0035]其中,slice_cb_qp_offset表示在确定所述qp'cb量化参数的值时,待添加到pps_cb_qp_offset的值中的差值;[0036]其中,slice_joint_cbcr_qp_offset表示在确定所述qp'cbcr的值时,待添加到pps_joint_cbcr_qp_offset_value的值中的差值;[0037]其中,变量cuqpoffsetcb、cuqpoffsetcr和cuqpoffsetcbcr表示在确定所述解码器的所述qp'cb、所述qp'cr和所述qp'cbcr量化参数的相应值时待使用的值。[0038]在上述方法中,色度qp映射表可以将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x可以对应于所述解码器支持的允许qpi范围内的qpi,所述集合y对应于所述解码器支持的允许qpc范围内的qpc。[0039]在上述方法中,色度qp映射表的值可以满足映射函数。[0040]在上述方法中,所述映射函数可以是单调递增函数。[0041]在上述方法中,所述集合x可以包括子集a,在所述子集a上,所述映射函数f不递增,即:[0042]对于所述子集a中的任一x,f(x)‑f(x‑1)=0。[0043]在上述方法中,集合x可以包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,a+b=x,c是不小于1的自然数。[0044]在上述方法中,集合x可以包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是不小于1的自然数。[0045]在上述方法中,所述子集b上的所述映射函数f可以定义为:对于所述子集b中的任一x,f(x)‑f(x‑1)=1。[0046]在上述方法中,所述映射函数的信息可以包括所述子集a的大小(sizea)和所述子集a中的元素ai的信息。[0047]在上述方法中,所述映射函数的信息可以包括所述子集a的大小。[0048]在上述方法中,所述映射函数的信息可以包括所述子集a中的元素ai的直接值。[0049]在上述方法中,所述映射函数的信息可以包括所述元素的当前值ai与所述元素的前一值ai‑1之间的差值(delta_ai),所述值ai通过以下方式得到:[0050]ai=ai‑1+delta_ai,其中,任一i>0。[0051]在上述方法中,所述映射函数的信息可以包括第一值a0与起点值之间的差值(delta_a0),所述起点值由starting_point_value表示,其中,所述子集a的所述第一值a0是根据所述差值(delta_a0)得到的,如下所示:[0052]a0=starting_point_value+delta_a0,[0053]其中,所述起点值starting_point_value在所述码流中指示,或者是预定义值。[0054]在上述方法中,所述起点值starting_point_value是0、21、30、maxqpi>>1中的一个,其中,maxqpi是所述解码器支持的最大qpi值。[0055]在上述方法中,所述映射函数的信息可以在所述码流中使用以下代码中的任何一种指示:二进制码、定长码、一元码、截断一元码、截断二进制码、哥伦布(golomb)码或指数哥伦布(exp‑golomb)码。[0056]在上述方法中,所述映射函数可以使用在子集a和子集b上的定义的函数行为得到的,即:[0057]对于所述子集b中的任一输入参数x,所述映射函数增加等于或大于1的整数值;[0058]对于所述子集a中的任一输入参数x,所述映射函数是平坦的,例如,f(x)‑f(x‑1)=0;[0059]其中,假设映射函数的对应于x=0的第一值为0。[0060]在上述方法中,所述函数行为可以使用以下伪代码迭代地实现:[0061][0062][0063]在上述方法中,所述映射函数的信息可以包括所述子集b的值b的信息,所述子集a通过a=x‑b得到。[0064]在上述方法中,子集b可以包括一个或多个子子集bk,其中,所述子子集bk包括元素x,在所述x处,所述映射函数具有相同增量ck:如果x∈bk,则f(x)‑f(x‑1)=ck,其中,ck是自然数。[0065]在上述方法中,所述映射函数的信息可以包括所述子子集bk中的至少一个子子集的大小(sizebk)和所述子子集bk中的至少一个子子集中的元素bi的信息。[0066]在上述方法中,所述映射函数的信息可以包括所述映射函数在所述子子集bk的点处的增量值的信息。[0067]在上述方法中,所述映射函数的信息可以包括所述子子集bk的数量的信息。[0068]在上述方法中,所述映射函数的信息的表示所述子子集bk的信息的至少一部分可以通过以下语法获取:[0069][0070]在上述方法中,所述映射函数的信息的表示所述子子集bk的信息的至少一部分可以通过以下语法获取:parameter,qp)获取色度分量的色度qp,所述解码器包括:[0092]接收单元,用于接收码流;[0093]解析单元,用于解析所述码流,以获取所述亮度qp和关于将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的色度qp映射表的信息;[0094]第一获取单元,用于至少部分地根据所述亮度qp获取所述qpi;[0095]第二获取单元,用于根据所述获取的信息,获取所述色度qp映射表;[0096]第三获取单元,用于根据所述获取的色度qp映射表和所述获取的qpi,获取所述qpc;[0097]第四获取单元,用于根据所述获取的qpc,获取色度量化参数。[0098]在码流中具有关于色度qp映射表的信息能够调整输入视频信号的特定属性(如sdr或hdr)或亮度和色度信道上的不同强度和分布,并因此提高压缩效率并改善重建视频信号中的色度分量与亮度分量之间的平衡。[0099]在上述解码器中,[0100]qpcb、qpcr和qpcbcr可推导如下:[0101]qpchroma=clip3(‑qpbdoffset,63,qpy);[0102]qpcb=chromaqptable[0][qpchroma];[0103]qpcr=chromaqptable[1][qpchroma];[0104]qpcbcr=chromaqptable[2][qpchroma];[0105]其中,cb分量和cr分量的色度量化参数qp'cb和qp'cr以及联合cb‑cr编码qp'cbcr推导如下:[0106]qp'cb=clip3(‑qpbdoffset,63,qpcb+pps_cb_qp_offset+slice_cb_qp_offset+cuqpoffsetcb)+qpbdoffset;[0107]qp'cr=clip3(‑qpbdoffset,63,qpcr+pps_cr_qp_offset+slice_cr_qp_offset+cuqpoffsetcr)+qpbdoffset;[0108]qp'cbcr=clip3(‑qpbdoffset,63,qpcbcr+pps_joint_cbcr_qp_offset_value+[0109]slice_joint_cbcr_qp_offset+cuqpoffsetcbcr)+qpbdoffset;[0110]其中,chromaqptable是所述色度qp映射表;[0111]其中,qpi对应于qpchroma;[0112]其中,qpc对应于qpcb、qpcr和qpcbcr;[0113]其中,qpbdoffset是使用以下公式根据亮度和色度阵列样本的位深度计算的位深度偏移:[0114]qpbdoffset=6*bit_depth_minus8,[0115]其中,bit_depth_minus8的值应在0至8的范围内(包括端值);[0116]其中,pps_cb_qp_offset和pps_cr_qp_offset分别表示用于推导qp'cb和qp'cr的亮度量化参数qp'y的偏移;[0117]其中,pps_joint_cbcr_qp_offset_value表示用于推导qp'cbcr的所述亮度量化参数qp'y的所述偏移;[0118]其中,slice_cr_qp_offset表示在确定所述qp'cr量化参数的值时,待添加到pps_cr_qp_offset的值中的差值;[0119]其中,slice_cb_qp_offset表示在确定所述qp'cb量化参数的值时,待添加到pps_cb_qp_offset的值中的差值;[0120]其中,slice_joint_cbcr_qp_offset表示在确定所述qp'cbcr的值时,待添加到pps_joint_cbcr_qp_offset_value的值中的差值;[0121]其中,变量cuqpoffsetcb、cuqpoffsetcr和cuqpoffsetcbcr表示在确定所述解码器的所述qp'cb、所述qp'cr和所述qp'cbcr量化参数的相应值时待使用的值。[0122]在上述解码器中,色度qp映射表可以将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x可以对应于所述解码器支持的允许qpi范围内的qpi,所述集合y对应于所述解码器支持的允许qpc范围内的qpc。[0123]在上述解码器中,色度qp映射表的值可以满足映射函数f。[0124]在上述解码器中,所述映射函数可以是单调递增函数。[0125]对映射函数施加此限制可以避免当色度qp随着亮度qp的增加而降低时,映射函数出现“反常”行为,例如,意外和不期望的行为,即,避免了色度质量随着亮度质量的降低而增加的情况。具有单调递增约束可以使亮度质量和色度质量同步。其它优点在于这种限制可以通过避免描述函数负向递增来节省指示映射函数信息的位。[0126]在上述解码器中,所述集合x可以包括子集a,在所述子集a上,所述映射函数f不递增,即:[0127]对于所述子集a中的任一x,f(x)‑f(x‑1)=0。[0128]在上述解码器中,集合x可以包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,a+b=x,c是不小于1的自然数。[0129]在上述解码器中,集合x可以包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是不小于1的自然数。[0130]在上述解码器中,所述子集b上的所述映射函数f可以定义为:对于所述子集b中的任一x,f(x)‑f(x‑1)=1。[0131]在上述解码器中,所述映射函数的信息可以包括所述子集a的大小(sizea)和所述子集a中的元素ai的信息。[0132]在上述解码器中,所述映射函数的信息可以包括所述子集a的大小。[0133]在上述解码器中,所述映射函数的信息可以包括所述子集a中的元素ai的直接值。[0134]仅关于子集a的点的指示信息可以将指示开销保持在合理的水平,假设映射函数的大多数点保持预定义的行为(例如f(x)‑f(x‑1)=c),不需要进行指示(子集b)。这可以通过仅指示那些函数行为不同于预定义行为的点,以最小化指示开销获取具有qpi支持值的整个集合x的函数行为。[0135]在上述解码器中,所述映射函数的信息可以包括所述元素的当前值ai与所述元素的前一值ai‑1之间的差值(delta_ai),所述值ai通过以下方式得到:ai=ai‑1+delta_ai,其中,任一i>0。[0136]指示差值而不是直接值可以额外节省位。[0137]在上述解码器中,所述映射函数的信息可以包括第一值a0与起点值之间的差值(delta_a0),所述起点值由starting_point_value表示,其中,所述子集a的所述第一值a0是根据所述差值(delta_a0)得到的,如下所示:[0138]a0=starting_point_value+delta_a0,[0139]其中,所述起点值starting_point_value在所述码流中指示,或者是预定义值。[0140]在上述解码器中,所述起点值starting_point_value可以是0、21、30、maxqpi>>1中的一个,其中,maxqpi是所述解码器支持的最大qpi值。选择适当的starting_point_value可以额外节省指示第一值的位。[0141]在上述解码器中,所述映射函数的信息可以在所述码流中使用以下代码中的任何一种指示:二进制码、定长码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。[0142]在上述解码器中,所述映射函数可以使用在子集a和子集b上的定义的函数行为得到的,即:[0143]对于所述子集b中的任一输入参数x,所述映射函数增加1,例如,f(x)‑f(x‑1)=1;[0144]对于所述子集a中的任一输入参数x,所述映射函数是平坦的,例如,f(x)‑f(x‑1)=0;[0145]其中,假设映射函数的对应于x=0的第一值为0。[0146]在上述解码器中,所述函数行为可以使用以下伪代码迭代地实现:[0147][0148][0149]在上述解码器中,所述映射函数的信息可以包括所述子集b的值b的信息,所述子集a通过a=x‑b得到。[0150]在上述解码器中,子集b可以包括一个或多个子子集bk,其中,所述子子集bk包括元素x,在所述x处,所述映射函数具有相同增量ck:如果x∈bk,则f(x)‑f(x‑1)=ck,其中,ck是自然数。[0151]在上述解码器中,所述映射函数的信息可以包括所述子子集bk中的至少一个子子集的大小(sizebk)和所述子子集bk中的至少一个子子集中的元素bi的信息。[0152]在上述解码器中,所述映射函数的信息可以包括所述映射函数在所述子子集bk的点处的增量值的信息。[0153]这可以通过添加函数可能具有不同递增(ck)速度的点来增加映射函数定义的灵活性。[0154]在上述解码器中,所述映射函数的信息可以包括所述子子集bk的数量的信息。[0155]在上述解码器中,所述映射函数的信息的表示所述子子集bk的信息的至少一部分可以通过以下语法获取:[0156][0157]在上述解码器中,所述映射函数的信息的表示所述子子集bk的信息的至少一部分可以通过以下语法获取:[0158][0159][0160]在上述示例中使用无符号整数代码(ue(v))表示将映射函数限制为单调递增,并可以通过避免传输增量和函数增量(ck)的符号信息来额外节省位。[0161]在上述解码器中,所述解码器还可以包括预定义色度qp映射表,并且所述码流包括指示是使用所述预定义色度qp映射表或使用所述码流中指示的色度qp映射表的指示符。[0162]这使得仅在有益的情况下,即亮度和色度通道特征与常见情况(如对于hdr信号)有显著差异时指示有关映射表的信息,并支持使用适用于常见情况的预定义映射表。这可以在大多数常见情况下节省指示开销,预定义映射表已针对这些情况进行了优化。[0163]在上述解码器中,所述色度qp映射表的信息可以是针对所有色度分量共同指示的。[0164]在上述解码器中,所述色度qp映射表的信息可以包括指示所述色度qp映射表是针对cb分量和cr分量单独指示或共同指示的指示符。[0165]该方面使得在不同色度通道(例如,cb通道和cr通道)通过对不同色度通道具有不同色度qp映射表而具有不同信号特征的情况下,进一步增加控制量化过程的灵活性,这又可以进一步提高压缩效率。[0166]在上述解码器中,色度qp映射表的信息可以在以下位置中指示:[0167]在序列参数集中的序列级别,或[0168]在图像参数集中的图像级别,或[0169]在分块组参数集中的分块组级别,或[0170]在自适应参数集中,或[0171]在补充增强信息(supplementalenhancementinformation,sei)消息中。[0172]在上述解码器中,预定义色度qp映射表可以如下表示:[0173]qpi<303031323334353637383940414243>43qpc=qpi2930313233343536373738394040=qpi‑3。[0174]在上述解码器中,预定义色度qp映射表可以如下表示:[0175]qpi<35353637383940414243>43qpc=qpi343536373738394040=qpi‑3。[0176]在上述解码器中,所述色度qp映射表的信息可以直接或间接地在所述码流中指示。[0177]本发明的第一方面提供的方法可以由本发明的第三方面提供的装置执行。本发明的第三方面提供的方法的其它特征和实现方式对应于本发明的第一方面提供的装置的特征和实现方式。[0178]本发明的第二方面提供的方法可以由本发明的第四方面提供的装置执行。本发明的第四方面提供的方法的其它特征和实现方式对应于本发明的第二方面提供的装置的特征和实现方式。[0179]根据第五方面,本发明涉及一种用于对视频流进行解码的装置,所述装置包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行第一方面所述的方法。[0180]根据第六方面,本发明涉及一种用于对视频流进行编码的装置,所述装置包括处理器和存储器。所述存储器存储指令,所述指令使所述处理器执行第二方面所述的方法。[0181]根据第七方面,提供一种存储有指令的计算机可读存储介质,当所述指令执行时,使一个或多个处理器对视频数据进行译码。所述指令使所述一个或多个处理器执行所述第一方面或第二方面或所述第一方面或第二方面的任一可能实施例提供的方法。[0182]根据第八方面,本发明涉及一种计算机程序,包括程序代码,所述程序代码用于在计算机中执行时执行所述第一方面或第二方面或所述第一方面或第二方面任一可能实施例提供的方法。[0183]附图及以下说明中将详细描述一个或多个实施例。其它特征、目的和优点在说明、附图以及权利要求中是显而易见的。附图说明[0184]下文结合附图对本发明实施例进行详细描述。在附图中:[0185]图1a是用于实现本发明实施例的视频译码系统的一个示例的框图;[0186]图1b是用于实现本发明实施例的视频译码系统的另一个示例的框图;[0187]图2是用于实现本发明实施例的视频编码器的一个示例的框图;[0188]图3是用于实现本发明实施例的视频解码器的示例性结构的框图;[0189]图4是编码装置或解码装置的一个示例的框图;[0190]图5是编码装置或解码装置的另一个示例的框图;[0191]图6是[2]所述的针对hevc(黑色,61)和h.264|avc(灰色,62)的量化参数索引qpi与色度量化参数qpc的映射函数的示意图;[0192]图7是在支持的qp范围内量化参数索引qpi与色度量化参数qpc的hevc映射函数的示意图,其中,72是hevc映射函数,71是1对1映射函数;[0193]图8是hevc的量化参数索引qpi与色度量化参数qpc的映射函数(82)和修正映射函数(83)的表格表示,表81表示单调递增的1对1函数,表84、85、86相应地表示1对1函数(81)、hevc映射函数(82)和修正映射函数(83)的当前值与前一值之间的差值,其中,87表示差值为零的示例性点;[0194]图9是映射函数92的使用两个枢轴点d(94)和e(95)的分段线性表示93的示例;[0195]图10是在支持的qp范围内量化参数索引qpi与色度量化参数qpc的hevc映射函数的示意图,其中,102是色度qp偏移等于1的hevc映射函数,101是1对1映射函数;[0196]图11示出了作为qpi函数的vvc色度qp映射表;[0197]图12示出了本发明提供的调整后的映射函数;[0198]图13示出了本发明提供的获取色度量化参数的方法;[0199]图14示出了本发明提供的解码器。[0200]在下文中,除非另外明确说明,否则相同的附图标记是指相同或至少功能上等效的特征。具体实施方式[0201]以下描述中,参考组成本发明一部分并以说明的方式示出本发明实施例的具体方面或可以使用本发明实施例的具体方面的附图。可以理解的是,本发明实施例可在其它方面中使用,并可包括附图中未描述的结构变化或逻辑变化。因此,以下详细描述不应以限制性的意义来理解,且本发明的范围由所附权利要求书界定。[0202]可以理解的是,与所描述的方法有关的公开内容对于用于执行所述方法的对应设备或系统也同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个单元(例如,功能单元)来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元各自执行多个步骤中的一个或多个步骤),即使附图中未明确描述或示出这种一个或多个单元。另一方面,例如,如果根据一个或多个单元(例如,功能单元)来描述具体装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能,或多个步骤各自执行多个单元中的一个或多个单元的功能),即使附图中未明确描述或示出这种一个或多个单元。此外,可以理解的是,除非另外明确说明,本文中所描述的各个示例性实施例和/或方面的特征可以相互组合。[0203]视频译码通常指对构成视频或视频序列的图像序列进行的处理。在视频译码领域中,术语“帧(frame)”与“图像(picture/image)”可以用作同义词。视频译码(或通常为译码)包括视频编码和视频解码两部分。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(从而实现更高效存储和/或传输)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。实施例涉及的视频图像(或通常为图像)的“译码”应理解为视频图像或相应视频序列的“编码”或“解码”。编码部分和解码部分也合称为编解码(编码和解码,codec)。[0204]在无损视频译码情况下,可以重建原始视频图像,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)。在有损视频译码情况下,通过量化等执行进一步压缩,来减少表示视频图像的数据量,而解码器侧无法完全重建视频图像,即重建视频图像的质量比原始视频图像的质量低或差。[0205]几个视频编码标准属于“有损混合视频编解码器”组(即,将样本域中的空间预测和时间预测与变换域中用于进行量化的2d变换译码相结合)。视频序列中的每个图像通常分割为不重叠块集合,通常在块级进行译码。换句话说,在编码器侧,通常在块(视频块)级处对视频进行处理(即编码),例如,通过空间(帧内)预测和/或时间(帧间)预测来生成预测块;从当前块(当前处理/待处理的块)中减去预测块,得到残差块;在变换域中变换残差块并量化残差块,以减少待发送(压缩)的数据量,而在解码器侧,对经编码或压缩块进行相对于编码器的逆处理,以重建当前块进行表示。另外,编码器和解码器处理步骤相同,使得编码器和解码器进行相同的预测(例如,帧内预测和帧间预测)和/或重建,以对后续块进行处理(即译码)。[0206]在以下实施例中,根据图1至图3描述了视频译码系统10、视频编码器20和视频解码器30。[0207]图1a为示例译码系统10的示意性框图,例如可以利用本技术技术的视频译码系统10(或简称为译码系统10)。视频译码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)为可用于根据本技术中描述的各种示例执行各技术的设备示例。[0208]如图1a所示,译码系统10包括源设备12,源设备12用于将经编码图像数据21提供给目的地设备14等,以对经编码图像数据13进行解码。[0209]源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(或预处理单元)18(例如,图像预处理器18)和通信接口或通信单元22。[0210]图像源16可以包括或可以是任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或者任何类型的用于获取和/或提供真实世界图像、计算机生成图像(例如屏幕内容、虚拟现实(virtualreality,vr)图像)和/或其任何组合(例如,增强现实(augmentedreality,ar)图像)的其它设备。图像源可以为存储任一上述图像的任何类型的存储器(memory/storage)。[0211]为了区分预处理器18和预处理单元18执行的处理,图像或图像数据17也可以称为原始图像或原始图像数据17。[0212]预处理器18用于接收(原始)图像数据17,并对图像数据17执行预处理,得到经预处理的图像19或经预处理的图像数据19。预处理器18执行的预处理可包括修剪(trimming)、颜色格式转换(例如从rgb转换为ycbcr)、调色或去噪等。可以理解的是,预处理单元18可以为可选组件。[0213]视频编码器20用于接收经预处理的图像数据19并提供经编码图像数据21(下面将根据图2等进一步详细描述)。[0214]源设备12中的通信接口22可以用于接收经编码图像数据21,并通过通信信道13将经编码图像数据21(或对经编码图像数据21进一步处理后得到的数据)发送到另一设备(例如,目的地设备14)或任何其它设备,以便进行存储或直接重建。[0215]目的地设备14包括解码器30(例如,视频解码器30),另外(即可选地),可包括通信接口或通信单元28、后处理器32(或后处理单元32)和显示设备34。[0216]目的地设备14中的通信接口28用于直接从源设备12或从存储设备(例如经编码图像数据存储设备)等任何其它源,接收经编码图像数据21(或对经编码图像数据21进一步处理后得到的数据),并将经编码图像数据21提供给解码器30。[0217]通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如,直接有线或无线连接)或者通过任何类型的网络(例如,有线网络、无线网络或其任何组合,或者任何类型的私网和公网或其任何类型的组合)发送或接收经编码图像数据21或经编码数据13。[0218]例如,通信接口22可以用于将经编码图像数据21封装成合适的格式(例如数据包),和/或通过任何类型的传输编码或处理方式来处理经编码图像数据,以便通过通信链路或通信网络进行传输。[0219]例如,与通信接口22对应的通信接口28可以用于接收传输数据,并通过任何类型的对应传输解码或处理和/或解封装方式来处理传输数据,得到经编码图像数据21。[0220]通信接口22和通信接口28均可配置为图1a中从源设备12指向目的地设备14的通信信道13的箭头所表示的单向通信接口,或者配置为双向通信接口,并且可以用于发送和接收消息等,以建立连接、确认并交换与通信链路和/或数据传输(例如经编码图像数据传输)相关的任何其它信息等。[0221]解码器30用于接收经编码图像数据21并提供经解码图像数据31或经解码图像31(下面将根据图3或图5等进一步详细描述)。[0222]目的地设备14的后处理器32用于对经解码图像数据31(也称为重建图像数据)(例如,经解码图像31)进行后处理,以获得经后处理的图像数据33(例如,经后处理的图像33)。例如,由后处理单元32执行的后处理可以包括颜色格式转换(例如,从ycbcr转换为rgb)、调色、修剪或重采样,或任何其它处理,例如,用于提供经解码图像数据31以供显示设备34等显示。[0223]目的地设备14中的显示设备34用于接收经后处理的图像数据33,以向用户或观看者等显示图像。显示设备34可以为或包括用于表示重建图像的任意类型的显示器,例如,集成或外部显示屏或显示器。例如,显示器可以包括液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclightemittingdiode,oled)显示器、等离子显示器、投影仪、微led显示器、硅基液晶(liquidcrystalonsilicon,lcos)、数字光处理器(digitallightprocessor,dlp)或任何类型的其它显示器。[0224]尽管图1a将源设备12和目的地设备14作为单独的设备进行描述,但是设备实施例还可以包括两种设备或两种功能,即源设备12或对应功能以及目的地设备14或对应功能。在这些实施例中,可以使用相同的硬件和/或软件或使用单独的硬件和/或软件或其任何组合来实现源设备12或对应功能以及目的地设备14或对应功能。[0225]根据描述,图1a所示的源设备12和/或目的地设备14中的不同单元或功能的存在和(准确)划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。[0226]编码器20(例如,视频编码器20)或解码器30(例如,视频解码器30),或编码器20和解码器30两者均可通过如图1b所示的处理电路实现,例如一个或多个微处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(application‑specificintegratedcircuit,asic)、现场可编程门阵列(field‑programmablegatearray,fpga)、离散逻辑、硬件、视频译码专用处理器或其任意组合。编码器20可以由处理电路46实现,以包含参照图2的编码器20论述的各种模块和/或本文描述的任何其它编码器系统或子系统。解码器30可以由处理电路46实现,以包含参照图3的解码器30论述的各种模块和/或本文描述的任何其它解码器系统或子系统。所述处理电路可用于执行下文描述的各种操作。如图5所示,如果所述技术部分地以软件形式实现,则设备可以将软件的指令存储在合适的非瞬时性计算机可读存储介质中,并且可以使用一个或多个处理器执行硬件中的指令,以执行本发明的技术。视频编码器20和视频解码器30中的其中一个可作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。[0227]源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板电脑(tablet/tabletcomputer)、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备(如内容服务服务器或内容分发服务器)、广播接收器设备、广播发射器设备等,并且可以不使用或使用任何类型的操作系统。在一些情况下,可以配备源设备12和目的地设备14以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。[0228]在一些情况下,图1a所示的视频译码系统10仅仅是示例性的,本技术提供的技术可适用于视频译码设置(例如,视频编码或视频解码),这些设置不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据从本地存储器中检索,通过网络传输,等等。视频编码设备可以对数据进行编码并将数据存储到存储器中,和/或视频解码设备可以从存储器检索数据并对数据进行解码。在一些示例中,编码和解码由相互不通信而只是将数据编码到存储器和/或从存储器检索数据并对数据进行解码的设备来执行。[0229]为便于描述,本文参考由itu‑t视频编码专家组(videocodingexpertsgroup,vceg)和iso/iec运动图像专家组(motionpictureexpertsgroup,mpeg)的视频编码联合工作组(jointcollaborationteamonvideocoding,jct‑vc)开发的高效视频编码(high‑efficiencyvideocoding,hevc)或通用视频编码(versatilevideocoding,vvc)(下一代视频编码标准)参考软件等描述本发明实施例。本领域普通技术人员理解本发明实施例不限于hevc或vvc。[0230]编码器和编码方法[0231]图2为用于实现本技术技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210和逆变换处理单元212、重建单元214、环路滤波器单元220、解码图像缓冲区(decodedpicturebuffer,dpb)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(未示出)。图2所示的视频编码器20也可以称为混合视频编码器或根据混合视频编解码器的视频编码器。[0232]残差计算单元204、变换处理单元206、量化单元208和模式选择单元260可以组成编码器20的前向信号路径,而反量化单元210、逆变换处理单元212、重建单元214、缓冲区216、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元244和帧内预测单元254可以组成视频编码器20的后向信号路径,其中,视频编码器20的后向信号路径对应于解码器(参见图3中的视频解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。[0233]图像和图像分割(图像和块)[0234]编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据也可以是经预处理的图像19(或经预处理的图像数据19)。为简单起见,以下描述使用图像17。图像17也可以称为当前图像或待编码图像(尤其是在视频译码中将当前图像与同一视频序列(即同样包括当前图像的视频序列)中的其它图像(例如先前的经编码图像和/或经解码图像)区分开)。[0235](数字)图像为或可以视为具有强度值的样本组成的二维阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平方向和垂直方向(或轴线)上的样本数量限定了图像的大小和/或分辨率。通常采用三个颜色分量来表示颜色,即图像可以表示为或包括三个样本阵列。在rgb格式或颜色空间中,图像包括对应的红色、绿色和蓝色样本阵列。但是,在视频译码中,每个像素通常由亮度和色度格式或在颜色空间中表示,例如,ycbcr,包括y表示的亮度分量(有时也用l表示)和cb和cr表示的两个色度分量。亮度(luminance,简称luma)分量y表示亮度或灰度级强度(例如,在灰度图像中),而两个色度(chrominance,简称chroma)分量cb和cr表示色度或颜色信息分量。相应地,ycbcr格式的图像包括亮度样本值(y)的亮度样本阵列和色度值(cb和cr)的两个色度样本阵列。rgb格式的图像可以转换或变换成ycbcr格式,反之亦然,该过程也称为颜色转换或颜色变换。如果图像是黑白的,则该图像可以仅包括亮度样本阵列。相应地,例如,图像可以为黑白格式的亮度样本阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度样本阵列和两个对应的色度样本阵列。[0236]视频编码器20的实施例可以包括图像分割单元(图2中未示出),用于将图像17分割成多个(通常不重叠)图像块203。这些块也可以称为根块、宏块(h.264/avc),或编码树块(codingtreeblock,ctb)或编码树单元(codingtreeunit,ctu)(h.265/hevc和vvc)。图像分割单元可以用于对视频序列中的所有图像使用相同的块大小和使用限定块大小的对应网格,或者在图像或图像子集或图像组之间改变块大小,并将每个图像分割成对应块。[0237]在其它实施例中,视频编码器可以用于直接接收图像17中的块203,例如组成图像17的一个、几个或所有块。图像块203也可以称为当前图像块或待编码图像块。[0238]与图像17类似,图像块203同样是或可以看作是具有强度值(样本值)的样本的二维阵列或矩阵,但是,图像块203的尺寸比图像17小。换句话说,块203可以包括一个样本阵列(例如,黑白图像17情况下的亮度阵列或彩色图像情况下的亮度阵列或色度阵列)或三个样本阵列(例如,彩色图像17情况下的一个亮度阵列和两个色度阵列)或根据所采用的颜色格式的任何其它数量和/或类型的阵列。块203的水平方向和垂直方向(或轴线)上的样本数量限定了块203的大小。相应地,块可以为例如m×n(m列×n行)个样本阵列,或m×n个变换系数阵列等。[0239]图2所示的视频编码器20用于逐块对图像17进行编码,例如,对每个块203执行编码和预测。[0240]图2所示的视频编码器20的实施例还可以用于使用条带(也称为视频条带)对图像进行分割和/或编码,其中,可以使用一个或多个条带(通常为不重叠的)对图像进行分割或编码,并且每个条带可以包括一个或多个块(例如,ctu)。[0241]图2所示的视频编码器20的实施例还可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常为不重叠的)对图像进行分割或编码,每个分块组可以包括一个或多个块(例如,ctu)或一个或多个分块等,其中,每个分块可以为矩形等形状,可以包括一个或多个块(例如,ctu),例如完整或部分块。[0242]残差计算[0243]残差计算单元204可以用于根据图像块203和预测块265(后续提供了预测块265的更多详细内容)计算残差块205(也称为残差205),例如,通过逐样本(逐像素)将图像块203的样本值减去预测块265的样本值,以在样本域中获取残差块205。[0244]变换[0245]变换处理单元206可以用于对残差块205的样本值进行离散余弦变换(discretecosinetransform,dct)或离散正弦变换(discretesinetransform,dst)等变换,得到变换域中的变换系数207。变换系数207也可以称为变换残差系数,表示变换域中的残差块205。[0246]变换处理单元206可以用于应用dct/dst(例如为h.265/hevc指定的变换)的整数近似值。与正交dct变换相比,这种整数近似通常通过某一因子按比例缩放(scale)。为了维持经正变换和逆变换处理的残差块的范数,应用其它缩放因子作为变换过程的一部分。缩放因子通常是根据某些约束条件来选择的,例如,缩放因子是用于移位运算的2的幂、变换系数的位深度、精度与实现成本之间的权衡等。例如,通过逆变换处理单元212等为逆变换(以及在视频解码器30侧,通过逆变换处理单元312等为对应的逆变换)指定具体的缩放因子;相应地,可以在编码器20侧,通过变换处理单元206等为正变换指定对应的缩放因子。[0247]视频编码器20(相应地,变换处理单元206)的实施例可以用于直接或通过熵编码单元270编码或压缩等输出变换参数(例如,一种或多种变换的类型),使得例如视频解码器30可以接收并使用变换参数进行解码。[0248]量化[0249]量化单元208可以用于通过应用标量量化或矢量量化等对变换系数207进行量化,得到量化系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。[0250]量化过程可以降低与一些或全部变换系数207相关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中,n大于m。可以通过调整量化参数(quantizationparameter,qp)修改量化程度。例如,对于标量量化,可以应用不同程度的标度来实现较细或较粗的量化。较小量化步长对应于较细量化,而较大量化步长对应于较粗量化。可通过量化参数(quantizationparameter,qp)表示合适的量化步长。例如,量化参数可以为合适的量化步长的预定义集合的索引。例如,较小的量化参数可以对应于精细量化(较小量化步长),较大的量化参数可以对应于粗糙量化(较大量化步长),反之亦然。量化可以包括除以量化步长,而反量化单元210等执行的对应解量化和/或对应反解量化可以包括乘以量化步长。根据hevc等一些标准的实施例可以使用量化参数来确定量化步长。通常,可以根据量化参数使用包括除法的方程的定点近似来计算量化步长。可以引入其它缩放因子来进行量化和解量化,以恢复可能由于在量化步长和量化参数的等式的定点近似中使用的标度而修改的残差块的范数。在一种示例性实现方式中,可以合并逆变换和解量化的标度。或者,可以使用自定义量化表并在码流中等将自定义量化表从编码器向解码器指示(signal)。量化是有损操作,其中,量化步长越大,损耗越大。[0251]图像压缩级别受量化参数(quantizationparameter,qp)控制,量化参数可以对于整个图像是固定的(例如,通过使用相同的量化参数值),也可以对图像的不同区域具有不同的量化参数值。[0252]对于ycbcr4:2:0和4:2:2视频,亮度分量和色度分量的信号特征差异明显。具体来说,色度通常表现出强低通特性。如果应用强量化,则色度信息可能会完全量化为零,这会导致颜色完全丢失。因此,为了减少这种情况,通过减少高qp值的色度量化器步长来调整色度的量化器步长[2]。[0253]在[1]中规定的高效视频编码(highefficiencyvideocoding,hevc)标准中,色度量化参数qpc通过表1推导,其中,qpi等于相关联的亮度量化参数加上在图像参数集(pictureparameterset,pps)和/或条带头中指示的色度qp偏移值。可以通过指示不同色度qp偏移值来调整基于相关联的亮度qp值对色度qp值的推导。正色度qp偏移值会使相关联的色度分量的量化器更粗。[0254]表1:hevc中qpc作为qpi函数的规范示例[0255]qpi<303031323334353637383940414243>43qpc=qpi2930313233333435353536363737=qpi‑6[0256]根据[2],图6呈现了针对hevc(黑色)和h.264|avc(灰色)的量化参数索引qpi与色度量化参数qpc的映射的示意图。[0257]在hevc标准中,亮度(luminance或luma)编码块(codingblock,cb)的qp值是根据预测qp(qpy_pred)推导的,而预测qp又取决于帧/条带/分块中的cb位置。然后,通过以下等式1推导变量qpy:[0258]qpy=((qpypred+cuqpdeltaval+64+2*qpbdoffsety)%(64+qpbdoffsety))‑qpbdoffsety[0259]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(等式1)[0260]其中,cuqpdeltaval是为编码单元(codingunit,cu)指示或推导的增量qp值;qpbdoffsety是取决于亮度位深度的恒定偏移(在hevc标准中,该术语对应于“亮度阵列样本的位深度”)。最后,亮度(luminance或luma)分量的量化参数qp′y可以通过以下等式2计算:[0261]qp′y=qpy+qpbdoffsetyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(等式2)[0262]分别根据等于qpicb或qpicr的索引qpi将变量qpcb和qpcr设置为如映射表(例如,表1)中指定的qpc的值,qpicb和qpicr通过等式3推导如下:[0263]qpicb=clip3(‑qpbdoffsetc,69,qpy+pps_cb_qp_offset+slice_cb_qp_offset)[0264]qpicr=clip3(‑qpbdoffsetc,69,qpy+pps_cr_qp_offset+slice_cr_qp_offset)[0265]ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(等式3)[0266]其中,qpbdoffsetc是取决于色度位深度的恒定偏移(在hevc标准中,该术语对应于“色度阵列样本的位深度”);pps_cb_qp_offset或pps_cr_qp_offset是由图像参数集(pictureparameterset,pps)指示的cb分量或cr分量的固定偏移,slice_cb_qp_offset或slice_cr_qp_offset是在条带头中指示的cb分量或cr分量的固定偏移。[0267][0268]cb和cr分量(qp′cb和qp′cr)的色度量化参数通过等式5推导如下:[0269]qp′cb=qpcb+qpbdoffsetc[0270]qp′cr=qpcr+qpbdoffsetcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(等式5)[0271]分别根据等于qpicb和qpicr的索引qpi,将变量qpcb和qpcr设置为如表1中指定的qpc的值。[0272]vvc是规范草案第5版[]中的新开发标准,包含以下程序,用于推导色度量化参数:[0273]‑当treetype等于dual_tree_chroma时,变量qpy设置为覆盖亮度位置(xcb+cbwidth/2,ycb+cbheight/2)的亮度编码单元的亮度量化参数qpy。[0274]‑变量qpcb、qpcr和qpcbcr推导如下:[0275]qpicb=clip3(‑qpbdoffsetc,69,qpy+pps_cb_qp_offset+slice_cb_qp_offset)ꢀꢀ(8‑926)[0276]qpicr=clip3(‑qpbdoffsetc,69,qpy+pps_cr_qp_offset+slice_cr_qp_offset)ꢀꢀ(8‑927)[0277]qpicbcr=clip3(‑qpbdoffsetc,69,qpy+pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offset)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8‑928)[0278]‑如果chromaarraytype等于1,则分别根据等于qpicb、qpicr和qpicbcr的索引qpi,将变量qpcb、qpcr和qpcbcr设置为如qp′cbcr=qpcbcr+qpbdoffsetc(8‑931)表2中指定的qpc的值。[0279]‑否则,分别根据等于qpicb、qpicr和qpicbcr的索引qpi,将变量qpcb、qpcr和qpcbcr设置为min(qpi,63)。[0280]‑cb分量和cr分量的色度量化参数qp′cb和qp′cr以及联合cb‑cr编码qp′cbcr推导如下:[0281]qp′cb=qpcb+qpbdoffsetcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8‑929)[0282]qp′cr=qpcr+qpbdoffsetcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8‑930)[0283]qp′cbcr=qpcbcr+qpbdoffsetcꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8‑931)[0284]表2‑针对chromaarraytype等于1的qpc作为qpi函数的规范[0285]qpi<303031323334353637383940414243>43qpc=qpi2930313233333434353536363737=qpi‑6[0286]其中,pps_cb_qp_offsetandslice_cb_qp_offset是相应地在图像参数集(pictureparameterset,pps)和/或条带头中指示的图像级和条带级色度qp偏移值。[0287]由于vvc中包括色度专用编码工具(如色度分离树和cclm),色度压缩效率已经得到显著提高,因此色度qp映射函数可能需要调整。[0288]可以看出,使用与hevc标准(表1)中相同的色度qp映射表(表2)。与hevc相比,除了qp′cb和qp′cr之外,还引入了qp′cbcr来推导块的量化参数,其中,cb和cr颜色分量被共同量化。该qp′cbcr参数也是根据表2中规定的色度qp映射函数推导的。[0289]如上所述,可以通过指示不同色度qp偏移值来调整基于相关联的亮度qp值对色度qp值的推导。正色度qp偏移值会使相关联的色度分量的量化器更粗。图10示出了色度qp偏移等于1的hevc/vvc色度qp映射函数的示例。[0290]在实施例中,视频编码器20(相应地,量化单元208)可以用于输出量化参数(quantizationparameter,qp),例如直接输出或由熵编码单元270进行编码后输出,使得例如视频解码器30可以接收并使用量化参数进行解码。[0291]反量化[0292]反量化单元210用于对量化系数进行量化单元208的反量化,得到解量化系数211,例如根据或使用与量化单元208相同的量化步长,执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,对应于变换系数207,但是由于量化造成的损耗,解量化系数211通常与变换系数不同。[0293]逆变换[0294]逆变换处理单元212用于进行变换处理单元206进行的变换的逆变换,例如,逆离散余弦变换(discretecosinetransform,dct)或逆离散正弦变换(discretesinetransform,dst)或其它逆变换,以获得样本域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可称为变换块213。[0295]重建[0296]重建单元214(例如,加法器或求和器214)用于通过逐样本将重建残差块213的样本值与预测块265的样本值相加,将变换块213(即重建残差块213)添加到预测块265,以得到样本域中的重建块215。[0297]滤波[0298]环路滤波器单元220(或简称“环路滤波器”220)用于对重建块215进行滤波,得到经滤波的块221,或通常用于对重建样本进行滤波,得到经滤波的样本。例如,环路滤波器单元用于平滑像素转变或提高视频质量。环路滤波器单元220可以包括一个或多个环路滤波器,例如去块效应滤波器、样本自适应偏移(sample‑adaptiveoffset,sao)滤波器或者一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、锐化或平滑滤波器、协同滤波器,或其任意组合。尽管环路滤波器单元220在图2中示为环内滤波器,但是在其它配置中,环路滤波器单元220可以实现为后环路滤波器。经滤波的块221也可称为经滤波的重建块221。[0299]在实施例中,视频编码器20(相应地,环路滤波器单元220)可以用于输出环路滤波器参数(例如样本自适应偏移信息),例如直接输出或由熵编码单元270进行编码后输出,使得例如解码器30可以接收并使用相同的环路滤波器参数或相应的环路滤波器进行解码。[0300]解码图像缓冲区[0301]解码图像缓冲区(decodedpicturebuffer,dpb)230可以是存储参考图像或通常存储参考图像数据以供视频编码器20在对视频数据进行编码时使用的存储器。dpb230可以由多种存储器设备中的任一种形成,例如动态随机存取存储器(dynamicrandomaccessmemory,dram),包括同步dram(synchronousdram,sdram)、磁阻ram(magnetoresistiveram,mram)、电阻ram(resistiveram,rram)或其它类型的存储器设备。解码图像缓冲区(decodedpicturebuffer,dpb)230可以用于存储一个或多个经滤波的块221。解码图像缓冲区230还可以用于存储同一个当前图像或不同图像(例如先前的重建图像)中的其它先前经滤波的块(例如先前经滤波的重建块221),并可以提供先前完整的重建(即经解码)图像(和对应的参考块和样本)和/或部分重建的当前图像(和对应的参考块和样本),以进行帧间预测等。如果重建块215未由环路滤波器单元220进行滤波,则解码图像缓冲区(decodedpicturebuffer,dpb)230还可以用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建样本,或未进行任何其它处理的重建块或重建样本。[0302]模式选择(分割和预测)[0303]模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲区230或其它缓冲区(例如行缓冲区,图中未示出)等接收或获取原始块203(当前图像17中的当前块203)等原始图像数据以及重建图像数据(例如同一个(当前)图像和/或一个或多个先前经解码图像中的经滤波和/或未经滤波的重建样本或块)。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以得到预测块265或预测值265。[0304]模式选择单元260可以用于为当前块预测模式(包括不分割)确定或选择一种分割以及确定或选择一种预测模式(例如,帧内预测模式或帧间预测模式),生成对应的预测块265,以对残差块205进行计算和对重建块215进行重建。[0305]在实施例中,模式选择单元260可以用于选择分割方式和预测模式(例如从模式选择单元260支持的或可用的预测模式中选择),所述预测模式提供最佳匹配或者最小残差(最小残差是指传输或存储中更好的压缩),或者提供最小指示开销(最小指示开销是指传输或存储中更好的压缩),或者同时考虑或平衡以上两者。模式选择单元260可以用于根据率失真优化(ratedistortionoptimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中的“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,但也可以指满足终止或选择标准的情况,例如超过或低于阈值的值或其它约束条件可能导致“次优选择”,但会降低复杂度且减少处理时间。[0306]换句话说,分割单元262可以用于通过如下方式将块203分割成较小的块分割部分(partition)或子块(再次形成块):例如,通过迭代使用四叉树(quad‑tree,qt)分割、二叉树(binary‑tree,bt)分割或三叉树(triple‑tree,tt)分割或其任意组合,并且用于例如对块分割部分或子块中的每一个执行预测,其中,模式选择包括选择分割块203的树结构和选择块部分或子块中的每一个所使用的预测模式。[0307]下文将详细地描述由视频编码器20执行的分割(例如,由分割单元260执行)和预测处理(由帧间预测单元244和帧内预测单元254执行)。[0308]分割[0309]分割单元262可以将当前块203分割(或划分)为较小的分割部分,例如正方形或矩形大小的较小块。可以将这些较小块(也可以称为子块)进一步分割为甚至更小的分割部分。这也称为树分割或层次树分割,其中,可以递归地分割例如根树层次0(层次级别0,深度0)的根块,例如分割为两个或两个以上下一较低树层次的块,例如树层次1(层次级别1,深度1)的节点。可以再次将这些块分割为两个或两个以上下一较低层次,例如树层次2(层次级别2,深度2)的块等,直到例如因为满足结束标准(例如达到最大树深度或最小块大小),分割结束。未进一步分割的块也称为树的叶块或叶节点。分割为两个分割部分的树称为二叉树(binary‑tree,bt),分割为三个部分的树称为三叉树(ternary‑tree,tt),分割为四个部分的树称为四叉树(quad‑tree,qt)。[0310]如前所述,如本文使用的术语“块”可以是图像的一部分,具体是正方形或矩形部分。例如,参照hevc和vvc,块可以为或可以对应于编码树单元(codingtreeunit,ctu)、编码单元(codingunit,cu)、预测单元(predictionunit,pu)和变换单元(transformunit,tu)和/或对应的块,例如编码树块(codingtreeblock,ctb)、编码块(codingblock,cb)、变换块(transformblock,tb)或预测块(predictionblock,pb)。[0311]例如,编码树单元(codingtreeunit,ctu)可以为或可以包括具有三个样本阵列的图像中的亮度样本的一个ctb、该图像中的色度样本的两个对应ctb,或黑白图像中的或使用三个单独颜色平面和语法结构进行译码的图像中的样本的一个ctb。这些语法结构用于对样本进行译码。相应地,编码树块(codingtreeblock,ctb)可以为n×n个样本块,其中,n可以设为某个值,从而将分量划分为多个ctb,这就是分割。编码单元(codingunit,cu)可以为或包括具有三个样本阵列的图像中的亮度样本的一个编码块、色度样本的两个对应编码块,或黑白图像中的或使用三个单独颜色平面和语法结构进行译码的图像中的样本组成的一个编码块。这些语法结构用于对上述样本进行译码。相应地,编码块(codingblock,cb)可以为m×n个样本块,其中,m和n可以设为某个值,使得一个ctb划分为多个编码块,这就是一种分割方式。[0312]在实施例中,例如根据hevc,可以通过表示为编码树的四叉树结构将编码树单元(codingtreeunit,ctu)划分为多个cu。在cu级决定是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行译码。每个cu可以根据pu划分类型进一步划分为一个、两个或四个pu。一个pu内应用相同的预测过程,并以pu为单位向解码器发送相关信息。在根据pu划分类型执行预测过程得到残差块之后,可以根据类似于用于cu的编码树的另一种它四叉树结构将cu分割成变换单元(transformunit,tu)。[0313]在实施例中,例如根据当前开发的称为通用视频编码(versatilevideocoding,vvc)的最新视频编码标准,使用四叉树加二叉树(quad‑treeandbinary‑tree,qtbt)分割等来分割编码块。在qtbt块结构中,cu可以为正方形或矩形。例如,编码树单元(codingtreeunit,ctu)首先通过四叉树结构进行分割。通过二叉树或四叉树(或三叉树)结构进一步分割四叉树叶节点。分割树叶节点称为编码单元(codingunit,cu),该分段用于预测和变换处理,无需任何进一步分割。即,在qtbt编码块结构中,cu、pu和tu的块大小相同。同时,可以将三叉树分割等多重分割与qtbt块结构结合使用。[0314]在一个示例中,视频编码器20中的模式选择单元260可以用于执行本文描述的分割技术的任意组合。[0315]如上所述,视频编码器20用于从(例如预定的)预测模式集合中确定或选择最好或最优的预测模式。预测模式集合可以包括帧内预测模式和/或帧间预测模式等。[0316]帧内预测[0317]帧内预测模式集合可以包括35种不同的帧内预测模式,例如,如dc(或均值)模式和平面模式等非方向性模式,或如hevc中定义的方向性模式,或者可以包括67种不同的帧内预测模式,例如,如dc(或均值)模式和平面模式等非方向性模式,或如vvc中定义的方向性模式。[0318]帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式,使用同一个当前图像中的邻块的重建样本来生成帧内预测块265。[0319]帧内预测单元254(或通常为模式选择单元260)还用于将帧内预测参数(或通常为表示块的选定帧内预测模式的信息)以语法元素266的形式输出到熵编码单元270,以包括到经编码图像数据21中,使得例如视频解码器30可以接收并使用预测参数进行解码。[0320]帧间预测[0321](可能的)帧间预测模式集合基于可用参考图像(即,例如前述存储在dpb230中的至少部分解码的图像)和其它帧间预测参数,例如基于是否使用整个参考图像或只使用参考图像的一部分(例如当前块的区域周围的搜索窗口区域)来搜索最佳匹配参考块,和/或例如基于是否执行像素插值,例如二分之一/半像素插值和/或四分之一像素插值。[0322]除上述预测模式外,还可以应用跳过模式和/或直接模式。[0323]帧间预测单元244可以包括运动估计(motionestimation,me)单元和运动补偿(motioncompensation,mc)单元(两者未在图2中示出)。运动估计单元可以用于接收或获取图像块203(当前图像17中的当前图像块203)和经解码图像231,或者至少一个或多个先前的重建块(例如,一个或多个其它/不同先前的经解码图像231中的重建块),以进行运动估计。例如,视频序列可以包括当前图像和先前的经解码图像231,或换句话说,当前图像和先前的经解码图像231可以为一系列图像的一部分或组成一系列图像,这一系列图像组成视频序列。[0324]例如,编码器20可用于从多个其它图像中的相同或不同图像的多个参考块中选择参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。这种偏移也称为运动矢量(motionvector,mv)。[0325]运动补偿单元用于获取(例如接收)帧间预测参数,并根据或使用帧间预测参数执行帧间预测,得到帧间预测块265。由运动补偿单元执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量来提取或生成预测块,还可以包括对子像素精度执行插值。插值滤波可以根据已知像素的样本生成其它像素的样本,从而潜在地增加可以用于对图像块进行译码的候选预测块的数量。在接收到当前图像块对应的pu的运动矢量时,运动补偿单元可以在其中一个参考图像列表中定位运动矢量指向的预测块。[0326]运动补偿单元还可以生成与块和视频条带(slice)相关的语法元素,以供视频解码器30在解码视频条带的图像块时使用。除了条带和相应语法元素或作为条带和相应语法元素的替代,还可以生成或使用分块组(tilegroup)和/或分块(tile)以及相应语法元素。[0327]熵编码[0328]熵编码单元270用于将熵编码算法或方案(例如可变长度编码(variablelengthcoding,vlc)方案、上下文自适应vlc(contextadaptivevlc,cavlc)方案、算术编码方案、二值化,上下文自适应二进制算术编码(contextadaptivebinaryarithmeticcoding,cabac)、基于语法的上下文自适应二进制算术编码(syntax‑basedcontext‑adaptivebinaryarithmeticcoding,sbac)、概率区间分割熵(probabilityintervalpartitioningentropy,pipe)编码或其它熵编码方法或技术)等应用于或不应用于(无压缩)量化系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素,得到可以通过输出端272以经编码码流21等形式输出的经编码图像数据21,使得例如视频解码器30可以接收并使用这些参数进行解码。可以将经编码码流21发送到视频解码器30,或者将其存储在存储器中稍后由视频解码器30发送或检索。[0329]可以使用其它接收形式的视频编码器20对视频流进行编码。例如,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化某些块或帧的残差信号。在另一种实现方式中,编码器20可以具有组合成单个单元的量化单元208和反量化单元210。[0330]解码器和解码方法[0331]图3示出了用于实现本技术技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的经编码图像数据21(例如,经编码码流21),得到经解码图像331。经编码图像数据或码流包括用于对所述经编码图像数据进行解码的信息,例如表示经编码的视频条带(和/或分块组或分块)的图像块的数据和相关的语法元素。[0332]在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如,求和器314)、环路滤波器320、解码图像缓冲区(decodedpicturebuffer,dpb)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以为或包括运动补偿单元。在一些示例中,视频解码器30可以执行大体上与参照图2的视频编码器100描述的编码回合互逆的解码回合。[0333]如参照编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元344和帧内预测单元354也称为组成视频编码器20的“内置解码器”。相应地,反量化单元310在功能上可以与反量化单元110相同,逆变换处理单元312在功能上可以与逆变换处理单元212相同,重建单元314在功能上可以与重建单元214相同,环路滤波器320在功能上可以与环路滤波器220相同,解码图像缓冲区330在功能上可以与解码图像缓冲区230相同。因此,视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。[0334]熵解码[0335]熵解码单元304用于解析码流21(或通常为经编码图像数据21)并对经编码图像数据21执行熵解码等,得到量化系数309和/或经解码的编码参数(图3中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素中的任一个或全部。熵解码单元304可以用于应用与针对编码器20中的熵编码单元270描述的编码方案对应的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,以及向解码器30的其它单元提供其它参数。视频解码器30可以接收视频条带级和/或视频块级的语法元素。除了条带和相应语法元素或作为条带和相应语法元素的替代,还可以接收和/或使用分块组和/或分块以及相应语法元素。[0336]反量化[0337]反量化单元310可以用于从经编码图像数据21(例如通过熵解码单元304等解析和/或解码)接收量化参数(quantizationparameter,qp)(或通常为与反量化相关的信息)和量化系数,并根据这些量化参数对经解码量化系数309进行反量化,得到解量化系数311。解量化系数311也可以称为变换系数311。反量化过程可以包括使用视频编码器20对视频条带(或分块或分块组)中的每个视频块确定的量化参数来确定量化程度,同样确定需要进行的反量化的程度。[0338]逆变换[0339]逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,得到样本域中的重建残差块213。重建残差块213也可以称为变换块313。变换可以为逆变换,例如逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于(例如通过熵解码单元304等解析和/或解码)从经编码图像数据21接收变换参数或对应的信息,以确定要对解量化系数311进行的变换。[0340]重建[0341]重建单元314(例如加法器或求和器314)可以用于将重建残差块313添加到预测块365,以在样本域中获取重建块315,例如,通过将重建残差块313的样本值与预测块365的样本值相加。[0342]滤波[0343]环路滤波器单元320(在译码环路中或之后)用于对重建块315进行滤波,得到经滤波的块321,例如,以平滑像素转变或以其它方式提高视频质量等。环路滤波器单元320可以包括一个或多个环路滤波器,例如去块效应滤波器、样本自适应偏移(sample‑adaptiveoffset,sao)滤波器或者一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、锐化或平滑滤波器、协同滤波器,或其任意组合。尽管环路滤波器单元320在图3中示为环内滤波器,但是在其它配置中,环路滤波器单元320可以实现为后环路滤波器。[0344]解码图像缓冲区[0345]然后,将图像的解码视频块321存储在解码图像缓冲区330中,所述解码图像缓冲区330存储作为参考图像的经解码图像331,这些参考图像用于其它图像的后续运动补偿和/或用于分别输出到显示器。[0346]解码器30用于通过输出端312等输出经解码图像311,向用户显示或供用户观看。[0347]预测[0348]帧间预测单元344的功能可以与帧间预测单元244(具体与运动补偿单元)相同,帧内预测单元354在功能上可以与帧间预测单元254相同,并根据从经编码图像数据21(例如,通过熵解码单元304等解析和/或解码)接收的分割和/或预测参数或相应信息来执行划分或分割并执行预测。模式应用单元360可以用于根据重建图像、块或相应的样本(经滤波或未经滤波)对每个块执行预测(帧内预测或帧间预测),得到预测块365。[0349]当将视频条带译码为帧内译码(i)条带时,模式应用单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的先前经解码块的数据生成当前视频条带的图像块的预测块365。当将视频图像译码为帧间译码(即,b或p)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据运动矢量和从熵解码单元304接收的其它语法元素产生当前视频条带的视频块的预测块365。对于帧间预测,可以根据其中一个参考图像列表内的其中一个参考图像产生这些预测块。视频解码器30可以根据存储在dpb330中的参考图像,使用默认构建技术来构建参考帧列表:列表0和列表1。除了条带(例如,视频条带)或作为条带的替代,相同或类似的过程可以应用于使用分块组(例如,视频分块组)和/或分块(例如,视频分块)的实施例或由这些实施例应用,例如可以使用i、p或b分块组和/或分块对视频进行译码。[0350]模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素,确定当前视频条带的视频块的预测信息,并使用预测信息产生用于正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素确定用于对视频条带的视频块进行译码的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如,b条带、p条带或gpb条带)、用于条带的一个或多个参考图像列表的构建信息、用于条带的每个经帧间编码的视频块的运动矢量、用于条带的每个经帧间译码的视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了条带(例如,视频条带)或作为条带的替代,相同或类似的过程可以应用于使用分块组(例如,视频分块组)和/或分块(例如,视频分块)的实施例或由这些实施例应用,例如可以使用i、p或b分块组和/或分块对视频进行译码。[0351]图3中所示的视频解码器30的实施例可用于使用条带(也称为视频条带)对图像进行分割和/或解码,其中,可以使用一个或多个条带(通常不重叠的)对图像进行分割或解码,并且每个条带可以包括一个或多个块(例如,ctu)。[0352]在实施例中,图3所示的视频解码器30可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码。一个图像可以分割成一个或多个分块组(通常不重叠)或使用一个或多个分块组(通常不重叠)进行解码;每个分块组可以包括一个或多个块(例如,ctu)或一个或多个分块等;每个分块可以为矩形等,可以包括一个或多个完整或部分块(例如,ctu)等。[0353]可以使用其它形式的视频解码器30对经编码图像数据21进行解码。例如,解码器30可以在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30可以在某些块或帧没有逆变换处理单元312的情况下直接对残差信号进行反量化。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。[0354]应理解,在编码器20和解码器30中,可以对当前步骤的处理结果进一步处理,然后输出到下一步骤。例如,在插值滤波、运动矢量推导或环路滤波之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进行进一步的运算,如限幅(clip)或移位(shift)运算。[0355]需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式的控制点运动矢量,仿射模式、平面模式、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限制运动矢量的方法。[0356]方法1:通过平滑操作来去除溢出的最高有效位(mostsignificantbit,msb)[0357]ux=(mvx+2bitdepth)%2bitdepthꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(1)[0358]mvx=(ux>=2bitdepth‑1)?(ux‑2bitdepth):uxꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(2)[0359]uy=(mvy+2bitdepth)%2bitdepthꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(3)[0360]mvy=(uy>=2bitdepth‑1)?(uy‑2bitdepth):uyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(4)[0361]其中,mvx为一个图像块或子块的运动矢量中的水平分量,mvy为一个图像块或子块的运动矢量中的垂直分量,ux和uy中间值。[0362]例如,如果mvx的值为‑32769,则使用公式(1)和(2)之后得到的值为32767。在计算机系统中,以二的补码的形式存储十进数。‑32769的二的补码为1,0111,1111,1111,1111(17位),这时丢弃msb,那么得到的二的补码为0111,1111,1111,1111(十进数为32767),这与使用公式(1)和(2)之后得到的输出结果相同。[0363]ux=(mvpx+mvdx+2bitdepth)%2bitdepthꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(5)[0364]mvx=(ux>=2bitdepth‑1)?(ux‑2bitdepth):uxꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(6)[0365]uy=(mvpy+mvdy+2bitdepth)%2bitdepthꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(7)[0366]mvy=(uy>=2bitdepth‑1)?(uy‑2bitdepth):uyꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8)[0367]这些运算可以在对mvp和mvd求和的过程中执行,如公式(5)至(8)所示。[0368]方法2:对值进行限幅来去除溢出的msb[0369]vx=clip3(‑2bitdepth‑1,2bitdepth‑1‑1,vx)[0370]vy=clip3(‑2bitdepth‑1,2bitdepth‑1‑1,vy)[0371]其中,vx为图像块或子块的运动矢量的水平分量;vy为图像块或子块的运动矢量的垂直分量;x、y和z分别对应于mv限幅过程的3个输入值,函数clip3的定义如下:[0372][0373]图4为本发明实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器(如图1a的视频解码器30)或编码器(如图1a的视频编码器20)。[0374]视频译码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(rx)420;用于处理数据的处理器、逻辑单元或中央处理单元(centralprocessingunit,cpu)430;用于发送数据的发送单元(tx)440和出端口450(或输出端口450);以及用于存储数据的存储器460。视频译码设备400还可以包括耦合到入端口410、接收单元420、发送单元440和出端口450耦合的光电(optical‑to‑electrical,oe)组件和电光(electrical‑to‑optical,eo)组件,用于光信号或电信号的出入。[0375]处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器430与入端口410、接收单元420、发送单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上文描述的公开实施例。例如,译码模块470执行、处理、准备或提供各种译码操作。因此,包括译码模块470使得视频译码设备400功能得到了显著改进,实现了视频译码设备400不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现译码模块470。[0376]存储器460包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择执行程序时存储此类程序,并且存储在程序执行过程中读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read‑onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、三态内容寻址存储器(ternarycontent‑addressablememory,tcam)和/或静态随机存取存储器(staticrandom‑accessmemory,sram)。[0377]图5为示例性实施例提供的装置500的简化框图,装置500可用作图1a中的源设备12和目的地设备14中的任一个或两个。[0378]装置500中的处理器502可以是中央处理单元。或者,处理器502可以是现有的或今后将研发出的能够操控或处理信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等单个处理器来实现所公开的实现方式,但使用一个以上处理器可以提高速度和效率。[0379]在一种实现方式中,装置500中的存储器504可以是只读存储器(readonlymemory,rom)设备或随机存取存储器(randomaccessmemory,ram)设备。任何其它合适类型的存储设备都可以用作存储器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可包括操作系统508和应用程序510,其中,应用程序510包括允许处理器502执行本文所述方法的至少一个程序。例如,应用程序510可以包括应用1至n,还可以包括执行本文所述方法的视频译码应用。[0380]装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是将显示器与触敏元件组合的触敏显示器,该触敏元件能够用于感测触摸输入。显示器518可以通过总线512与处理器502耦合。[0381]尽管装置500的总线512在本文中描述为单个总线,但是总线512可以包括多个总线。此外,辅助存储器514可以直接与装置500的其它组件耦合或可以通过网络访问,并且可以包括单个集成单元(例如一个存储卡)或多个单元(例如多个存储卡)。因此,装置500可以通过多种配置实现。[0382]通用视频编码(versatilevideocoding,vvc)是一个新开发的标准,该标准将编码标准动态范围和高动态范围视频内容。高动态范围(high‑dynamic‑range,hdr)视频(hdr视频)描述的视频具有大于标准动态范围(standard‑dynamic‑range,sdr)视频(sdr视频)的动态范围。hdr视频的主要特征是白色更亮、黑色更深以及至少10位的颜色深度(与sdr视频的8位相比),以便在此扩展范围内保持精度。虽然技术上不同,但术语“hdr视频”通常也理解为意味着宽色域。[0383]目前sdr和hdr已经商用,并将长期共存。sdr内容通常编码为bt.709或bt.2020容器中的非恒定亮度(non‑constantluminance,ncl)y'cbcrgamma。hdr内容通常编码为bt.2020/bt.2100容器中的ncly'cbcrpq、恒定亮度ictcppq或ncly'cbcrhlg。在当前vvc规范中,仅指定了一个用于将亮度映射到色度量化参数的映射表(表1)。该表来自hevc,仅为sdr内容设计。正如[3]中所述,使用默认qpc表会在低码流下产生色度伪影,特别是在消色差区域。本文档建议添加特定于hdr内容的色度映射表。[0384]考虑到新开发标准的部署将需要几年时间,并且处理信号类型的可变性可能会增加,因此可能希望映射表规范具有灵活性。此外,使用内容特定的色度qp映射表可以为编码器优化带来更多的选择。简单的方案是在图像/条带/分块组级别指定映射表。但是,考虑到编解码器支持的qp范围可能会足够宽(例如,在vvc中,在0到63的范围内),直接表规范可能会消耗大量的位。进一步描述了指示色度qp映射表以减少位消耗的方法。还应理解,亮度qp和色度qp之间的关系可以表示为函数,也可以表示为表格表示,此处和下文,映射表和映射函数被用作同义词。[0385]图7是在支持的qp范围内量化参数索引qpi与色度量化参数qpc的hevc映射函数的示意图,其中,72是hevc映射函数,71是1对1映射函数。[0386]根据本发明的第一实施例,亮度到色度映射函数是单调递增(非递减)函数,该函数划分为两类区域。a类区域是平坦区域(732),其中,函数是非递增的(或平坦的),即f(x)‑f(x‑1)=0;b类区域,其中,函数是递增的(731),即f(x)‑f(x‑1)=c,其中,c是x的函数,且c(x)>=1。在更具体的情况下,在b类区域中,函数对于每个连续的输入参数都具有增量1,即f(x)‑f(x‑1)=1。输入参数值x的集合x被划分为两个非重叠的集合。集合a对应于非递增区域(a类)的函数值。集合b对应于递增区域(b类)的函数值。需要说明的是,x=a+b。[0387]图8示出了指出等于零的函数增量值(87)(即平坦区域)与对应的参数值x(88)的示例的示例性映射表。例如,对于hevc映射表82,集合a由值30、35、37、39、41和43组成。对于另一个示例性修正映射表83,集合a由值30、39、43(或35、39、43)组成。根据第一实施例,集合a在码流中指示,并且解码器根据从码流获取的关于集合a的信息,例如以表形式构造映射函数。由于集合b可以通过b=x‑a推导,其中,x例如是解码器支持的qp范围的集合(例如,0至63),并且映射函数行为是针对集合a和集合b的输入参数定义的,例如,可以使用以下示例性伪代码以表形式构造映射函数,假设对应于x=0的映射函数的第一值为0:[0388][0389]下面是另一个示例性伪代码,示出如何根据给定的qp索引(qpindex,qpi)计算某个qpc:[0390][0391][0392]需要说明的是,在一些实现方式中,集合x可以是解码器支持的qp范围的某个子集。该子集可以是预定义的或在码流中指示。[0393]需要说明的是,映射函数的平坦(非递增)区域的定义也可以使用当前和下一个输入参数值以一种形式提供,即f(x+1)‑f(x)=0。可以理解的是,这样的定义并不改变指示和获取映射函数的逻辑。例如,通过将值x+1放入集合a中,可以实现相同的效果。[0394]由于映射函数的点被分类为两类定义的行为,并且映射函数不递增的点的数量受到限制,因此与直接指示映射函数的每个值相比,减少了指示开销。[0395]为了在解码端获取集合a,码流包括关于集合的大小(元素数量)和元素值的信息。[0396]根据实施例的第一方面,使用一种合适的代码在码流中直接指示集合a的大小(sizea),合适的代码例如二进制码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。在对具有非零大小的集合a进行限制的一些实现方式中,值sizea‑1在码流中指示。这可以节省一位指示。[0397]根据实施例的第二方面,使用一种合适的代码在码流中直接指示集合a中元素的值(例如,30、39、43),合适的代码例如二进制码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。对应的映射函数可以按以下示例性形式用表格表示:[0398]qpi<303031323334353637383940414243>43qpc=qpi2930313233343536373738394040=qpi‑3[0399]应理解,当没有启用通过码流指示映射表或编码器/解码器不支持通过码流指示映射表时,上述表格可用于指定默认映射函数。[0400]在第二方面所述的另一个示例性实施例中,集合a中的元素的值等于(35、39、43)。对应的映射函数可以按以下示例性形式用表格表示:[0401]qpi<35353637383940414243>43qpc=qpi343536373738394040=qpi‑3[0402]应理解,当没有启用通过码流指示映射表或编码器/解码器不支持通过码流指示映射表时,上述表格可用于指定默认映射函数。[0403]根据第三方面,针对除第一元素之外的每个元素指示当前元素(ai)与前一元素(ai‑1)的值之间的差值(delta_ai)(例如,delta_ai=ai‑ai‑1,其中,i>0)。具有有序集a可以排除负差值并节省指示符号的位。此外,知道集合a中的元素值是唯一的(非重复)确保了delta_ai始终大于零,从而支持在码流中指示delta_ai‑1,从而进一步减少指示开销。[0404]集合a的第一值a0被指示为与某个starting_point_value的差值,其中,starting_point_value在码流中指示,或者是某一预定义值,例如,0、21、30、maxqp>>1,其中,maxqp是解码器支持的最大qp值,例如63,starting_point_value也可以取决于内容类型(例如,sdr或hdr)。根据上述方法,指示差值delta_a0。[0405]下面是上述指示方法的语法表和对应语义的示例。[0406]色度qp映射数据语法:[0407][0408]色度qp映射数据语义:[0409]cqp_flat_points_minus1加1表示映射函数不递增的点的数量。[0410]cqp_delta_fp0表示映射函数不递增的点的集合中的第一元素与starting_point_value之间的增量值,其中,starting_point_value等于21(在另一种可能的实现方式中,starting_point_value可以为例如0、26或32,或根据支持的qp范围定义为例如maxqp/2)。cqp_delta_fp_minus1[i]加1表示映射函数不递增的点的集合中的第i个元素与第(i‑1)个元素之间的增量值。[0411]变量cqpflatsize推导如下:[0412][0413]色度qp映射表cqpmappingtable[]推导如下:[0414][0415][0416],其中,maxqp是支持的最大qp。[0417]在starting_point_value为0的可能的实现方式中,cqp_delta_fp0表示映射函数不递增的点的集合中的第一元素的值。[0418]用于获取相同结果并可以根据一些特定qp索引(qpindex,qpi)获取qpc的替代语义如下:[0419][0420]starting_point_value为0的可能的实现方式可以具有以下语法和语义:[0421][0422]或者,在另一个示例中:[0423][0424]chroma_qp_mapping_flag等于1表示色度qp映射表被指示,并且覆盖用于推导qpc的表2。chroma_qp_mapping_flag等于0表示表2中指定默认色度qp映射表用于推导qpc。当chroma_qp_mapping_flag不存在时,推断其等于0。[0425]cqp_flat_points_minus1加1表示映射函数不递增的点的数量。[0426]cqp_fp0表示映射函数不递增的点的集合中的第一元素。[0427]cqp_delta_fp_minus1[i]加1表示映射函数不递增的点的集合中的第i个元素与第(i‑1)个元素之间的增量值。[0428]变量cqpflatsize推导如下:[0429]cqpflatsize=cqp_flat_points_minus1+1[0430]变量cqpflat[]推导如下:[0431][0432]色度qp映射表cqpmappingtable[]推导如下:[0433][0434],其中,maxqp是支持的最大qp。[0435]在一个示例中,qpcb、qpcr和qpcbcr推导如下:[0436]qpchroma=clip3(‑qpbdoffset,63,qpy);[0437]qpcb=chromaqptable[0][qpchroma];[0438]qpcr=chromaqptable[1][qpchroma];[0439]qpcbcr=chromaqptable[2][qpchroma];[0440]其中,cb分量和cr分量的色度量化参数qp'cb和qp'cr以及联合cb‑cr编码qp'cbcr推导如下:[0441]qp'cb=clip3(‑qpbdoffset,63,qpcb+pps_cb_qp_offset+slice_cb_qp_offset+cuqpoffsetcb)+qpbdoffset;[0442]qp'cr=clip3(‑qpbdoffset,63,qpcr+pps_cr_qp_offset+slice_cr_qp_offset+cuqpoffsetcr)+qpbdoffset;[0443]qp'cbcr=clip3(‑qpbdoffset,63,qpcbcr+pps_joint_cbcr_qp_offset_value+slice_joint_cbcr_qp_offset+cuqpoffsetcbcr)+qpbdoffset;[0444]其中,chromaqptable是所述色度qp映射表;[0445]其中,qpi对应于qpchroma;[0446]其中,qpc对应于qpcb、qpcr和qpcbcr;[0447]其中,qpbdoffset是使用以下公式根据亮度和色度阵列样本的位深度计算的位深度偏移:[0448]qpbdoffset=6*bit_depth_minus8,[0449]其中,bit_depth_minus8的值应在0至8的范围内(包括端值);[0450]其中,pps_cb_qp_offset和pps_cr_qp_offset分别表示用于推导qp'cb和qp'cr的亮度量化参数qp'y的偏移;[0451]其中,pps_joint_cbcr_qp_offset_value表示用于推导qp'cbcr的所述亮度量化参数qp'y的所述偏移;[0452]其中,slice_cr_qp_offset表示在确定所述qp'cr量化参数的值时,待添加到pps_cr_qp_offset的值中的差值;[0453]其中,slice_cb_qp_offset表示在确定所述qp'cb量化参数的值时,待添加到pps_cb_qp_offset的值中的差值;[0454]其中,slice_joint_cbcr_qp_offset表示在确定所述qp'cbcr的值时,待添加到pps_joint_cbcr_qp_offset_value的值中的差值;[0455]其中,变量cuqpoffsetcb、cuqpoffsetcr和cuqpoffsetcbcr表示在确定所述解码器的所述qp'cb、所述qp'cr和所述qp'cbcr量化参数的相应值时待使用的值。[0456]在一些实现方式中,图像级和条带级色度qp偏移(pps_cr_qp_offset,slice_cr_qp_offset)可以在推导非递增点cqpflat的数组期间使用:[0457]变量cqpflat[]推导如下:[0458][0459]以下是使用非递增点cqpflat数组的示例,该数组是根据从集成到色度qp推导过程中的码流中解析的信息得到的:[0460]当chromaarraytype不等于0且treetype等于single_tree或dual_tree_chroma时,以下内容适用:[0461]‑当treetype等于dual_tree_chroma时,变量qpy设置为覆盖亮度位置(xcb+cbwidth/2,ycb+cbheight/2)的亮度编码单元的亮度量化参数qpy。[0462]‑变量qpcb、qpcr和qpcbcr推导如下:[0463]qpicb=clip3(‑qpbdoffsetc,69,qpy+pps_cb_qp_offset+slice_cb_qp_offset)ꢀꢀ(8‑928)[0464]qpicr=clip3(‑qpbdoffsetc,69,qpy+pps_cr_qp_offset+slice_cr_qp_offset)ꢀꢀ(8‑929)[0465]qpicbcr=clip3(‑qpbdoffsetc,69,qpy+pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offset)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(8‑930)[0466]‑如果chromaarraytype等于1,则变量qpcb、qpcr和qpcbcr设置为qpc的值,如下所示:[0467]qpc=qpi‑qpshift,[0468]其中,变量qpshift推导如下:[0469][0470]上面提供的示例中的变量cqpflat可用于默认映射表定义和初始化。以下是可用作默认值的cqpflat的示例:[0471]cqpflat={30,35,37,39,41,43}[0472]cqpflat={30,39,43}[0473]cqpflat={35,39,43}cqpflat={35,39,41,43}[0474]cqpflat={22,23,25,27,29,31,33,35,39,40,41,43,47,49,51,53,55}[0475]cqpflat={21,22,24,25,26,27,29,30,31,32,33,35,42,47,49,51,53,55}[0476]为使cqpflat[0]的值低于starting_point_value,cqp_delta_fp0可以为负,并且该参数的指示可以包括符号位,或者例如,使用带符号的指数哥伦布码,如下面示例中所指定:[0477][0478]或者,在一些示例性实现方式中,集合a的大小和值按以下方式指示:[0479]1.读取指示后面的码流信息是否包含集合a中的元素的指示符。[0480]2.如果指示符为正(true),则根据例如第二方面或第三方面中描述的方法读取元素值。重复步骤1。[0481]3.如果指示符为负(false),则停止读取与集合a相关的信息。[0482]在该实现方式中,集合a的大小是具有正值的指示符的数量。[0483]限制集合a不为空支持按以下方式指示集合a的大小和值:[0484]1.根据例如第二方面或第三方面中描述的方法读取元素值。[0485]2.读取指示后面的码流信息是否包含集合a中的另一个元素的指示符。[0486]3.如果指示符为正(true),则重复步骤1,然后重复步骤2。[0487]4.如果指示符为负(false),则停止读取与集合a相关的信息。[0488]在该实现方式中,集合a的大小是具有正值的指示符的数量加一。限制集合a不为空支持排除一个加法指示符的指示,从而进一步减少了指示开销。[0489]应该提到,可以使用任何一种合适的代码指示上述集合a中的元素的大小和值,合适的代码例如二进制码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码等。[0490]在映射函数的一些实现中,平坦区域(集合a)中的元素数量可以大于递增区域(集合b)中的元素数量。在这种情况下,改为使用上述方法有利于指示集合b中的元素。[0491]根据本发明的第二实施例,亮度到色度映射函数的b类区域被划分到bk的子集的集合上,其中,每个子集bk包括映射函数具有相同增量ck的元素x:[0492]如果f(x)‑f(x‑1)=ck,则x∈bk,其中,ck是一个自然数(例如,0、1、2、3、4……)。[0493]换句话说,子集b根据子集bk的点x处映射函数增量在不同的子集上划分。[0494]在图10所示的示例中,由1031表示的区域的映射函数增量等于1(ck=1)。由1032表示的区域的函数增量等于2(ck=2)。由1032表示的区域的函数增量等于0(ck=0)。下表示出了对与图10中所示的示例性函数对应的子集bk的划分。[0495]函数增量,ck子集bk中的点的数量子集bk的点x21110630,35,37,39,41,431maxqp‑(6+1)x中的其余点[0496]其中,maxqp是解码器支持的最大qp值(例如,0到63)。[0497]根据第三实施例,码流包括关于码流中指示的子集bk的数量、码流中指示的每个子集的函数增量ck、码流中指示的每个子集bk的大小以及码流中指示的每个子集bk的点的信息。[0498]以下是语法和语义的示例:[0499][0500]cqp_set_num表示色度qp映射表具有非默认行为的点的集合数(在下文中,理解为默认行为函数增量等于1,通常,默认行为可以用其它方式定义,例如,作为先前指示的映射函数,或默认映射函数)。[0501]cqp_set_inc[k]表示第k个集合的点处的函数增量。[0502]cqp_set_size[k]表示第k个集合的点的数量。[0503]cqp_fp0表示映射函数不递增的点的集合中的第一元素。[0504]cqp_set_point[k][i]表示第k个集合中的第i个元素(此处,第i个元素与第(i‑1)个元素之间的增量编码可用于除i=0以外的元素,如上述示例所示)。[0505]变量cqpflatsize推导如下:[0506]cqpflatsize=cqp_flat_points_minus1+1[0507]变量cqpflat[]推导如下:[0508][0509]色度qp映射表cqpmappingtable[]推导如下:[0510][0511],其中,maxqp是支持的最大qp。[0512]根据特定qp指数(qpindex,qpi)推导特定qpc值可以描述如下:[0513]qpc=qpi+qpshift,[0514]其中,变量qpshift推导如下:[0515][0516],其中,变量definc=1定义默认函数增量(例如,在给定示例中,等于1)。[0517]或者:[0518]qpc=qpi+qpshift,[0519]其中,变量qpshift推导如下:[0520][0520][0521]需要说明的是,变量cqp_set_inc[k]具有带符号的值(例如,使用带符号的指数哥伦布码(se(v))指示)可以增加使函数具有负增量的灵活性,即映射函数递减保持相同的语义。[0522]在第二实施例的第二方面中,色度qp映射表信息可以用于修正默认映射函数或先前指示的映射函数。色度qp映射表信息可以用于视频序列特定部分的映射函数自适应,以通过更好地利用变化的视频信号特性来提高压缩效率。根据该方面,上述默认函数行为(或增量)替换为现有的映射函数增量。示例性语义可以如下:[0523]色度qp映射表cqpmappingtable[]推导如下:[0524][0525],其中,maxqp是支持的最大qp,cqpmappingtableprev是先前指示的或是默认映射表。[0526]根据特定qp指数(qpindex,qpi)推导特定qpc值可以描述如下:[0527]qpc=qpi+qpshift,[0528]其中,变量qpshift推导如下:[0529][0530],其中,变量definc定义了先前映射函数(cqpmappingtableprev)增量。[0531]或者:[0532]qpc=qpi+qpshift,[0533]其中,变量qpshift推导如下:[0534][0535][0536],其中,变量definc定义了先前映射函数(cqpmappingtableprev)增量。[0537]在第二实施例中描述的使用方法可以从qp索引(qpindex,qpi)计算中排除pps_cr_qp_offset和slice_cr_qp_offset参数,并将亮度qp用作映射函数的输入参数。这简化了色度qp参数推导公式,并可以避免在码流中指示色度qp偏移参数pps_cr_qp_offset和slice_cr_qp_offset。[0538]pps_cr_qp_offset和slice_cr_qp_offset参数可以在应用映射函数后应用。[0539]下面是语法和语义的另一个示例,该示例没有限制映射函数在每个点的增长量。映射函数仍限制为非递减函数。[0540]序列参数集语法[0541][0542]语义:选项2,基于表[0543]提出了以下语义以根据所指示的参数推导色度qp映射表:[0544]same_сqp_table等于1表示仅一个色度qp映射表被指示,并且适用于cb分量和cr分量和联合cb‑cr编码。same_сqp_table等于0表示三个色度qp映射表在sps中指示。[0545]cqp_set_num_m1[n]加1表示第n个色度qp映射函数具有非1的增量值的点的集合数量。[0546]cqp_set_inc[n][k]表示第k个集合的点处的色度qp映射函数增量,并限制为不等于1。[0547]cqp_set_size_m1[n][k]加1表示集合的点的数量。[0548]cqp_set_delta_m1[n][k][i]加1表示集合中的第i个元素(如果i等于0),否则,表示第i个元素与第(i‑1)个元素之间的增量值。[0549]数组cqp_set_point[n][k][i]表示第n个色度qp映射表的增量值不是1的点的集合,推导如下:[0550]cqp_set_point[n][k][i]=cqp_set_delta_m1[n][k][i]+1+(i>0?:cqp_set_point[n][k][i‑1]:0)[0551]第n个色度qp映射表cqpmappingtable[i]forn=0..same_qp_table_for_chroma?0:2推导如下:[0552]cqpmappingtable[n][0]=0[0553]cqpmappingtable[n][i]=cqpmappingtable[n][i‑1]+incstep,其中,i=1..63,其中,incstep初始化为1,并修改如下:k=0..cqp_set_num_m1[n]并且j=0..cqp_set_size_m1[n][k],[0554]‑if(i==cqp_set_point[n][k][j])incstep=cqp_set_inc[n][k]。[0555]对于某一实现方式,避免存储整个映射表可以有利于节省内存。为了实现这一点,提供特定色度qp值的推导过程。该推导过程的语法元素和语义与选项1相同,但不需要维护cqpmappingtable:[0556]same_сqp_table等于1表示仅一个色度qp映射表被指示,并且适用于cb分量和cr分量和联合cb‑cr编码。same_сqp_table等于0表示三个色度qp映射表在sps中指示。[0557]cqp_set_num_m1[n]加1表示第n个色度qp映射函数具有非1的增量值的点的集合数量。[0558]cqp_set_inc[n][k]表示第k个集合的点处的色度qp映射函数增量,并限制为不等于1。[0559]cqp_set_size_m1[n][k]加1表示集合的点的数量。[0560]cqp_set_delta_m1[n][k][i]加1表示集合中的第i个元素(如果i等于0),否则,表示第i个元素与第(i‑1)个元素之间的增量值。[0561]数组cqp_set_point[n][k][i]表示第n个色度qp映射表的增量值不是1的点的集合,推导如下:[0562]cqp_set_point[n][k][i]=cqp_set_delta_m1[n][k][i]+1+(i>0?:cqp_set_point[n][k][i‑1]:0)[0563]语义:选项2,无表[0564]对于某一实现方式,避免存储整个映射表可以有利于节省内存。为了实现这一点,提供特定色度qp值的推导过程。该推导过程的语法元素和语义与选项1相同,但不需要维护cqpmappingtable:[0565]same_сqp_table等于1表示仅一个色度qp映射表被指示,并且适用于cb分量和cr分量和联合cb‑cr编码。same_сqp_table等于0表示三个色度qp映射表在sps中指示。[0566]cqp_set_num_m1[n]加1表示第n个色度qp映射函数具有非1的增量值的点的集合数量。[0567]cqp_set_inc[n][k]表示第k个集合的点处的色度qp映射函数增量,并限制为不等于1。[0568]cqp_set_size_m1[n][k]加1表示集合的点的数量。[0569]cqp_set_delta_m1[n][k][i]加1表示集合中的第i个元素(如果i等于0),否则,表示第i个元素与第(i‑1)个元素之间的增量值。[0570]数组cqp_set_point[n][k][i]表示第n个色度qp映射表的增量值不是1的点的集合,推导如下:[0571]cqp_set_point[n][k][i]=cqp_set_delta_m1[n][k][i]+1+(i>0?:cqp_set_point[n][k][i‑1]:0)[0572]推导过程[0573]当treetype等于dual_tree_chroma时,变量qpy被设置为覆盖亮度位置(xcb+cbwidth/2,ycb+cbheight/2)的亮度编码单元的亮度量化参数qpy。[0574]‑数组qpmapoffset[n](其中,n=0..2)用0初始化。如果chromaarraytype等于1,则qpmapoffset修改如下:k=0..cqp_set_num_m1[n]并且i=0..cqp_set_size_m1[n][k],[0575]‑qpmapoffset[n]=qpmapoffset[n]+(cqp_set_point[n][k][i]<=qpy?cqp_set_inc[n][k]‑1:0)。[0576]‑变量qpoffsetcb、qpoffsetcr和qpoffsetcbcr推导如下:[0577]qpoffsetcb=qpmapoffset[0]+pps_cb_qp_offset+slice_cb_qp_offset[0578]qpoffsetcr=qpmapoffset[1]+pps_cr_qp_offset+slice_cr_qp_offset[0579]qpoffsetcbcr=qpmapoffset[2]+pps_cbcr_qp_offset+slice_cbcr_qp_offset[0580]‑cb分量和cr分量的色度量化参数qp'cb和qp'cr以及联合cb‑cr编码qp'cbcr推导如下:[0581]qp'cb=clip3(‑qpbdoffsetc,63,qpy+qpoffsetcb)+qpbdoffsetcꢀꢀꢀꢀꢀꢀꢀ(8‑931)[0582]qp'cr=clip3(‑qpbdoffsetc,63,qpy+qpoffsetcr)+qpbdoffsetcꢀꢀꢀꢀꢀꢀꢀ(8‑932)[0583]qp'cbcr=clip3(‑qpbdoffsetc,63,qpy+qpoffsetcbcr)+qpbdoffsetcꢀꢀꢀꢀꢀ(8‑933)[0584]需要说明的是,cb和cr可以使用单独的映射表,即cb的映射表信息可以根据码流得到,cr的映射表信息可以根据码流得到。[0585]根据第三实施例,映射函数表示为分段函数,并且码流中指示的信息是分段函数的断点(或变点,或枢轴点),例如图9所示的94、95。[0586]以最直接的方式,枢轴点的数量及其x坐标和y坐标在码流中作为获取映射函数的信息指示。与第一实施例的第一方面中描述的类似方式,具有枢轴点的集合的大小可以被限制为大小大于零,在这种情况下,在码流中指示值大小‑1。需要说明的是,“用于获取映射函数的信息”可以描述为“映射函数的信息”,“用于获取……的信息”可以描述为“……的信息”。[0587]在第三实施例的第一方面中,分段线性函数用于表示映射函数。[0588]在其它实现方式中,集合中的第一点(点a94)可以限制为属于单调1对1函数91,并且指示一个坐标(例如,ax)即可,ay通过ay=ax推导。此外,假设分段线性函数的最后一分段(或一段)平行于1对1函数,则点c96不需要指示,并且最后一分段的参数是根据点b95和最后一分段平行于1对1函数推导的。[0589]为了进一步减少指示开销,在码流中指示当前枢轴点(例如,b95)与先前枢轴点(例如,a94)的对应x坐标和y坐标之间的差值。对于第一点,指示与某个starting_point的差值。starting_point是某个预定义点,或在码流中指示。在某一实现方式中,starting_point可以限制为位于1对1函数上,在这种情况下,一个坐标足以定义starting_point。[0590]需要说明的是,上述第一实施例和第二实施例可以共存于解码器的一个实现方式中。最适当的方法(例如,使用更少的位进行指示)由编码器选择,并且由码流中的对应指示符指示。[0591]在某一实现方式中,解码器可以使用某些预定义的映射函数和选项来使用从码流获取的映射函数。在这种情况下,选项由码流中的对应指示符指示。由于适当的映射函数可能取决于序列或其部分的某些信号特征,因此编码器可以决定是使用预定义的映射函数或是耗费一些附加位来指示码流中的映射函数。[0592]序列的不同部分可以具有不同的信号特征,相应地具有不同的最佳映射函数。为了能够针对序列不同部分更改映射函数,码流包含例如在图像级别、条带级别或分块组级别或在自适应参数集中指示是否更改映射函数的指示符。[0593]以下是在序列参数集中指示映射函数信息对应的语法表示例:[0594][0595]上面语法表的示例语义如下:[0596]chroma_qp_mapping_flag等于1表示色度qp映射函数被指示,并且覆盖qpc(色度qp)作为qpi(根据亮度qp推导)函数的默认规范,该规范用于推导qpc。chroma_qp_mapping_flag等于0表示默认色度qp映射表用于推导qpc。当chroma_qp_mapping_flag不存在时,推断其等于0。[0597]需要说明的是,在某一实现方式中,chroma_qp_mapping_flag可以省略,继而可以等于1。即,色度qp映射信息(cqp_mapping_data())始终存在于码流中。[0598]在码流中传输的视频信号可以具有不同的色度格式采样结构。以下是色度采样格式规范的示例:[0599]chroma_format_idcseparate_colour_plane_flag色度格式subwidthcsubheightc00黑白11104:2:022204:2:221304:4:411314:4:411[0600]在黑白采样中,只有一个样本阵列,名义上是亮度阵列。[0601]在4:2:0采样中,两个色度阵列的高度和宽度都为亮度阵列的一半。[0602]在4:2:2采样中,两个色度阵列的高度都与亮度阵列相同,宽度都为亮度阵列的一半。[0603]在4:4:4采样中,根据separate_colour_plane_flag的值,存在以下情况:[0604]‑如果separate_colour_plane_flag等于0,则两个色度阵列的高度和宽度都与亮度阵列相同。[0605]‑否则(即separate_colour_plane_flag等于1),三个颜色平面分别作为黑白采样图像处理。[0606]在某一实现方式中,chroma_qp_mapping_flag和/或色度qp映射信息(cqp_mapping_data())的存在可能取决于下表中示例性指定的色度格式采样,其中,例如,chroma_format_idc等于3表示色度采样格式为4:2:0:[0607][0608]另一个示例:[0609][0610]另一个示例:[0611][0612][0613]另一个示例:[0614][0615]根据色度采样格式的色度qp映射信息的条件指示还减少了指示开销。例如,如果色度格式为黑白(采样格式为4:0:0),则不会指示映射表。具有单独编码的颜色分量(separate_colour_plane_flag等于1)是不指示色度映射表的另一个示例。当色度分量不存在或单独编码时,这样可以节省指示色度qp映射表的位。[0616]以下是在自适应参数集中指示映射函数信息对应的语法表示例:[0617][0618][0619]其中,cqp_aps是色度qp映射表信息的标识符。[0620]合适的映射函数可能取决于压缩颜色分量的编解码器效率和特定序列的信号特征。对于hdr内容来说,它可能更加重要,因为颜色信息对于此类内容非常重要。此外,cb分量和cr分量可能具有不同的特征和不同的最佳映射函数。cb分量和cr分量具有不同的映射函数有利于更好地适应内容类型和特征。为了能够具有不同的映射函数,在一些有利的实现方式中,码流包括获取cb分量和cr分量的映射函数的信息。[0621]在进一步有利的实现方式中,为了具有灵活性,码流包括指示是否针对cb分量和cr分量指示映射函数的指示符。如果指示符为正(true),则解码器从码流中获取对应于cb分量和cr分量的两个映射函数,并在重建过程中使用。否则,使用单个映射函数重建cb分量和cr分量。[0622]图11示出了作为qpi函数的vvc色度qp映射表。可以看出,亮度到色度映射函数是单调递增(非递减)函数,可以划分为两类区域。a类区域,其中,函数是非递增的(或平坦的),即f(x)‑f(x‑1)=0,以及b类区域,其中,函数是递增的,即f(x)‑f(x‑1)=1。[0623]在指示方法中,建议使用差分表示(例如,cqp_delta_fpi=a[i]‑a[i‑1])在码流中指示a类(平坦区域)的点。根据所提出的方法,解码器使用关于集合a的点的信息构造映射函数。对于允许qp范围的其余点,假设映射函数随着步骤1单调递增。例如,要再现当前vvc映射函数,需要指示以下点:30、35、37、39、41和43。[0624]在sps中,增加了一个新的语法元素chroma_qp_mapping_flag。当chroma_qp_mapping_flag的值等于0时,使用默认的色度qp映射表。当chroma_qp_mapping_flag的值等于1时,指示色度qp映射表。[0625]示例性序列参数集语法[0626][0627][0628]提出了以下语义以根据所指示的参数推导色度qp映射表:[0629]chroma_qp_mapping_flag等于1表示色度qp映射表被指示,并且覆盖表815‑qpc作为qpi函数的规范,该规范用于推导qpc。chroma_qp_mapping_flag等于0表示表815(qpc作为qpi函数的规范)中指定的默认色度qp映射表用于推导qpc。当chroma_qp_mapping_flag不存在时,推断其等于0。[0630]cqp_flat_points_minus1加1表示映射函数不递增的点的数量。[0631]cqp_fp0表示映射函数不递增的点的集合中的第一元素。[0632]cqp_delta_fp_minus1[i]加1表示映射函数不递增的点的集合中的第i个元素与第(i‑1)个元素之间的增量值。[0633]变量cqpflatsize推导如下:[0634]cqpflatsize=cqp_flat_points_minus1+1[0635]变量cqpflat[]推导如下:[0636][0637]色度qp映射表cqpmappingtable[]推导如下:[0638][0639]在方案的第二方面中,评估了在点35、39、43处具有非递增区域的经调整的映射函数。经调整的映射函数如图12所示。[0640]使用在点35、39和43处具有平坦区域的经调整的色度qp映射函数,得到了以下结果。使用提出的指示机制,使用测试配置文件调整映射表。该实验中仅在ai配置中保持色度qp偏移等于1。对于配置ra、ldb和ldp,色度qp偏移设置为0。[0641]表a:基于vtm5.0的经调整的映射表的编码性能[0642][0643][0644]需要说明的是,使用vtm5.0作为锚点使得某些序列的rd曲线交叉。这可能会使bd比率数值不相关。为了获得正确的数值,通过获取vtm5.0的性能差值来估计vtm5.0的性能,并以基于hm的经调整的映射表进行测试。在下表b中,左部分表示与vtm5.0的bd速率差值,中间部分表示基于hm16.20的经调整的表的编码性能,右部分是基于hm的vtm5.0的编码性能,以供比较。[0645]表b:以hm为锚点的基于vtm5.0的经调整的映射表的编码性能差异[0646][0647][0648]此外,图13示出了本发明提供的获取色度量化参数的方法。图13示出了根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的方法,其中,所述方法由解码器执行。图13的方法包括:步骤1601,接收码流;步骤1603,解析所述码流,以获取所述亮度qp和关于将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的色度qp映射表的信息;步骤1605,至少部分地根据所述亮度qp获取所述qpi;步骤1607,根据所述获取的信息,获取所述色度qp映射表;步骤1609,根据所述获取的色度qp映射表和所述获取的qpi,获取所述qpc;步骤1611,根据所述获取的qpc,获取色度量化参数。[0649]此外,图14示出了本发明提供的解码器30。图13示出了用于根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的解码器30。图13的解码器包括:接收单元3001,用于接收码流;解析单元3003,用于解析所述码流,以获取所述亮度qp和关于将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的色度qp映射表的信息;第一获取单元3005,用于至少部分地根据所述亮度qp获取所述qpi;第二获取单元3007,用于根据所述获取的信息,获取所述色度qp映射表;第三获取单元3009,用于根据所述获取的色度qp映射表和所述获取的qpi,获取所述qpc;第四获取单元3011,用于根据所述获取的qpc,获取色度量化参数。[0650]应理解,第一获取单元3005、第二获取单元3007、第三获取单元3009和第四获取单元3011被示为单独的单元。但是,这些单元中的两个或更多个或全部可以分别由一个或多个公共获取单元有效地实现。[0651]数学运算符[0652]本技术中使用的数学运算符与c编程语言中使用的数学运算符类似。但是,对整数除法和算术移位运算的结果进行了更准确的定义,并且定义了其它运算,如幂运算和实值除法。编号和计数规范通常从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。[0653]算术运算符[0654]算术运算符定义如下:[0655][0655][0656]逻辑运算符[0657]逻辑运算符定义如下:[0658]x&&yx和y的布尔逻辑“与”运算[0659]x||yx和y的布尔逻辑“或”运算[0660]!布尔逻辑“非”运算[0661]x?y:z如果x为真(true)或不等于0,则返回y的值,否则,返回z的值。[0662]关系运算符[0663]关系运算符定义如下:[0664]>大于[0665]>=大于或等于[0666]<小于[0667]<=小于或等于[0668]==等于[0669]!=不等于[0670]当一个关系运算符应用于一个已被赋值“na”(不适用)的语法元素或变量时,值“na”被视为该语法元素或变量的不同值。值“na”被视为不等于任何其它值。[0671]按位运算符[0672]按位运算符定义如下:[0673]&按位“与”运算。当对整数参数运算时,运算的是整数值的二的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。[0674]|按位“或”运算。当对整数参数运算时,运算的是整数值的二的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。[0675]^按位“异或”运算。当对整数参数运算时,运算的是整数值的二的补码表示。当对二进制参数运算时,如果它包含的位比另一个参数少,则通过添加更多等于0的有效位来扩展较短的参数。[0676]x>>yx的二的补码整数表示算术右移y个二进制位。只有y为非负整数值时才定义该函数。由于右移而移进最高有效位(mostsignificantbit,msb)的位的值等于移位运算之前的x的msb。[0677]x<<yx的二的补码整数表示算术左移y个二进制位。只有y为非负整数值时才定义该函数。由于左移而移进最低有效位(leastsignificantbit,lsb)的位的值等于0。[0678]赋值运算符[0679]算术运算符定义如下:[0680]=赋值运算符[0681]++增,即,x++相当于x=x+1;当在数组索引中使用时,等于增运算之前变量的值。[0682]‑减,即,x‑‑等于x=x‑‑1;当在数组索引中使用时,等于减运算之前变量的值。[0683]+=增加指定量,即,x+=3相当于x=x+3,x+=(‑3)相当于x=x+(‑3)。[0684]‑=减少指定量,即,x‑=3相当于x=x‑3,x‑=(‑3)相当于x=x‑(‑3)。[0685]范围符号[0686]以下符号用来说明值的范围:[0687]x=y..zx取从y到z(包括y和z)的整数值,其中,x、y和z是整数,z大于y。[0688]数学函数[0689]数学函数定义如下:[0690][0691]asin(x)三角反正弦函数,对参数x运算,x在‑1.0至1.0(包括端值)范围之间,输出值在‑π÷2至π÷2(包括端值)范围之间,单位为弧度[0692]atan(x)三角反正切函数,对参数x运算,输出值在‑π÷2至π÷2(包括端值)范围之间,单位为弧度[0693][0694]ceil(x)ꢀꢀ大于或等于x的最小整数。[0695]clip1y(x)=clip3(0,(1<<bitdepthy)‑1,x)[0696]clip1c(x)=clip3(0,(1<<bitdepthc)‑1,x)[0697][0698]cos(x)三角余弦函数,对参数x运算,单位为弧度。[0699]floor(x)小于或等于x的最大整数。[0700][0701]ln(x)x的自然对数(以e为底的对数,其中,e是自然对数底数常数2.718281828……)。[0702]log2(x)x以2为底的对数。[0703]log10(x)x以10为底的对数。[0704][0705][0706]round(x)=sign(x)*floor(abs(x)+0.5)[0707][0708]sin(x)三角正弦函数,对参数x运算,单位为弧度。[0709][0710]swap(x,y)=(y,x)[0711]tan(x)三角正切函数,对参数x运算,单位为弧度。[0712]运算优先级顺序[0713]当没有使用括号来显式表示表达式中的优先顺序时,适应以下规则:[0714]‑高优先级的运算在低优先级的任何运算之前计算。[0715]‑相同优先级的运算从左到右依次计算。[0716]下表从最高到最低说明运算的优先级,表中位置越高,优先级越高。[0717]对于c编程语言中也使用的运算符,本规范中使用的优先级顺序与在c编程语言中使用的优先级顺序相同。[0718]表:运算优先级从最高(表格顶部)到最低(表格底部)排序[0719]运算(操作数x、y和z)″x++″,″x‑″″!x″,″‑x″(用作一元前缀操作符)x“″x”y“,″x”y“,″x”y“,″”″,″“%y″”″“+y″”″“‑y″”(作为双参数运算符),″“″”″“<<y″”″“>>y″”″“<y″”″“<=y″”″“>y″”″“>=y″”″“==y″”″“!=y″”″“&y″”″“|y″”″“&&y″”″“||y″”″“?y:z″”″“..y″”″“=y″”″“+=y″”″“‑=y″”[0720]逻辑运算的文本说明[0721]在文本中,逻辑运算的语句用数学形式描述如下:[0722]if(condition0)[0723]statement0[0724]elseif(condition1)[0725]statement1[0726]…[0727]else/*informativeremarkonremainingcondition*/[0728]statementn[0729]可以用以下方式描述:[0730]……如下/……以下为准:[0731]‑如果条件0,则语句0[0732]‑否则,如果条件1,则语句1[0733]‑……[0734]‑否则(关于剩余条件的提示性说明),则语句n[0735]文本中的每个“如果……否则,如果……否则,……”语句都以“……如下”或“……以下适用”开头,紧接“如果……”。“如果……,否则,如果……,否则,……”的最后一个条件始终是“否则,……”。中间的“如果……否则,如果……否则,……”语句可以通过使“……如下”或“……以下适用”与结尾“否则,……”匹配来识别。[0736]在文本中,逻辑运算的语句用数学形式描述如下:[0737][0738]可以用以下方式描述:[0739]……如下/……以下为准:[0740]‑如果满足以下所有条件,则语句0:[0741]‑条件0a[0742]‑条件0b[0743]‑否则,如果满足以下一个或多个条件,则语句1:[0744]‑条件1a[0745]‑条件1b[0746]‑……[0747]‑否则,语句n[0748]在文本中,逻辑运算的语句用数学形式描述如下:[0749]if(condition0)[0750]statement0[0751]if(condition1)[0752]statement1[0753]可以用以下方式描述:[0754]当条件0时,语句0[0755]当条件1时,语句1[0756]尽管本发明实施例主要根据视频译码进行了描述,但是需要说明的是,译码系统10、编码器20和解码器30(相应地,系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即,对视频译码中独立于任何先前或连续图像的单个图像进行处理或译码。通常,如果图像处理译码限于单个图像17,则仅帧间预测单元244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)同样可用于静态图像处理,例如残差计算204/304、变换206、量化208、反量化210/310、(逆)变换212/312、分割262/362、帧内预测254/354和/或环路滤波220/320、熵编码270和熵解码304。[0757]编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任意组合来实现。如果以软件来实现,则各种功能可作为一个或多个指令或代码存储在计算机可读介质中或通过通信介质传输,且由基于硬件的处理单元执行。计算机可读介质可以包括与有形介质(例如,数据存储介质)对应的计算机可读存储介质,或包括任何便于将计算机程序从一处传送到另一处的介质(例如,根据通信协议)的通信介质。通过这种方式,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质,或(2)如信号或载波等通信介质。数据存储介质可以是通过一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实施本发明所述技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。[0758]作为示例而非限制,这类计算机可读存储介质可以包括ram、rom、eeprom、cd‑rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存或可以用于存储指令或数据结构形式的所需程序代码并且可以由计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴缆线、光纤缆线、双绞线、数字用户线(digitalsubscriberline,dsl)或红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,则同轴缆线、光纤缆线、双绞线、dsl或红外线、无线电和微波等无线技术包括在介质的定义中。但是,应理解,计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其它瞬时性介质,而是涉及非瞬时性有形存储介质。本文所使用的磁盘和光盘包括压缩光盘(compactdisc,cd)、激光光盘、光学光盘、数字多功能光盘(digitalversatiledisc,dvd)、软盘和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包括在计算机可读介质的范围内。[0759]可通过如一个或多个数字信号处理器(digitalsignalprocessor,dsp)、通用微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程逻辑阵列(fieldprogrammablelogicarray,fpga)或其它等效集成或离散逻辑电路等一个或多个处理器来执行指令。相应地,本文所使用的术语“处理器”可以指上述结构中的任一种或适于实施本文所述技术的任何其它结构。另外,在一些方面中,本文描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,这些技术可以在一个或多个电路或逻辑元件中完全实现。[0760]本发明技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路(integratedcircuit,ic)或一组ic(例如芯片组)。本发明描述了各种组件、模块或单元,以强调用于执行所公开技术的设备的功能方面,但未必需要由不同的硬件单元实现。实际上,如上所述,各种单元可以结合合适的软件和/或固件组合在编解码器硬件单元中,或者通过互操作硬件单元(包括如上所述的一个或多个处理器)的集合来提供。[0761]一种根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的方法,其中,所述方法由解码器执行,包括:[0762]解析接收到的码流,以获取所述亮度qp和关于将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的映射函数(f)的信息;[0763]至少部分地根据所述亮度qp获取所述qpi;[0764]根据所述获取的信息,获取所述映射函数;[0765]根据所述获取的映射函数和所述获取的qpi,获取所述qpc。[0766]根据上述方法,其中,所述映射函数将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x对应于所述解码器支持的允许qpi范围内的qpi(例如,0至63,或支持范围的另一部分,例如,20至50),所述集合y对应于所述解码器支持的允许qpc范围内的qpc(例如,0至63,或支持范围的另一部分,例如,0至59或18至46)。[0767]例如,qpi范围和qpc范围可以相同,也可以不同。[0768]根据上述方法,其中,所述映射函数是单调递增(非递减)函数。[0769]根据上述方法,其中,所述集合x包括子集a,在所述子集上,所述映射函数f不递增,例如:[0770]对于所述子集a中的任一x,f(x)‑f(x‑1)=0。[0771]例如,a={30,39,43},f(30)‑f(29)=0,f(39)‑f(38)=0,或f(43)‑f(42)=0;或[0772]a={35,39,43},f(35)‑f(34)=0,f(39)‑f(38)=0,或f(43)‑f(42)=0。[0773]根据上述方法,其中,所述集合x包括子集b,在所述子集b上,所述映射函数f递增,即:[0774]对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,a+b=x,c是不小于1的自然数。[0775]例如,c=1或2等,或c可以是x的函数,并且c(x)>=1。[0776]根据上述任一项所述的方法,其中,所述集合x包括子集b,在所述子集b上,所述映射函数f递增,即:[0777]对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是不小于1的自然数。[0778]例如,c=1或2等,或c可以是x的函数,并且c(x)>=1。[0779]本发明还公开了以下四十一个方面,从第一方面至第四十一方面列出如下。[0780]在第一方面中,提供一种根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的方法,所述方法由解码器执行,包括:解析接收到的码流,以获取所述亮度qp和将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的映射函数(f)的信息;至少部分地根据所述亮度qp获取所述qpi;根据所述获取的信息,获取所述映射函数;根据所述获取的映射函数和所述获取的qpi,获取所述qpc。[0781]根据第一方面所述的方法的第二方面,其中,所述映射函数将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x对应于所述解码器支持的允许qpi范围内的qpi,所述集合y对应于所述解码器支持的允许qpc范围内的qpc。[0782]根据第二方面所述的方法的第三方面,其中,所述映射函数是单调递增(非递减)函数。[0783]根据第二方面或第三方面所述的方法的第四方面,其中,所述集合x包括子集a,在所述子集a上,所述映射函数f不递增,例如:[0784]对于所述子集a中的任一x,f(x)‑f(x‑1)=0。[0785]根据第四方面所述的方法的第五方面,其中,所述集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,a+b=x,c是不小于1的自然数。[0786]根据第二方面至第四方面中任一项所述的方法的第六方面,其中,集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是不小于1的自然数。[0787]根据第五方面或第六方面所述的方法的第七方面,其中,所述子集b上的映射函数f定义为:对于所述子集b中的任一x,f(x)‑f(x‑1)=1。[0788]根据第一方面至第七方面中任一项所述的方法的第八方面,其中,所述映射函数的信息包括所述子集a的大小(sizea)和所述子集a中的元素ai的信息。[0789]根据第一方面至第八方面中任一项所述的方法的第九方面,其中,所述映射函数的信息包括所述子集a的大小。[0790]根据第一方面至第九方面中任一项所述的方法的第十方面,其中,所述映射函数的信息包括所述子集a中的元素ai的直接值。[0791]根据第八方面至第十方面中任一项所述的方法的第十一方面,其中,所述映射函数的信息包括所述元素的当前值ai与所述元素的前一值ai‑1之间的差值(delta_ai),所述值ai通过以下方式得到:ai=ai‑1+delta_ai,其中,任一i>0。[0792]根据第八方面至第十方面中任一项所述的方法的第十二方面,其中,所述映射函数的信息包括第一值a0与starting_point_value之间的差值(delta_a0),其中,所述子集a的所述第一值a0是根据所述差值(delta_a0)得到的,如下所示:a0=starting_point_value+delta_ao,其中,starting_point_value在码流中指示,或者是预定义值,例如,0、21、30、maxqpi>>1,其中,maxqpi是所述解码器支持的最大qpi值,例如,63。[0793]根据第一方面至第十二方面中任一项所述的方法的第十三方面,其中,所述映射函数的信息在所述码流中使用以下代码中的任何一种指示:二进制码、定长码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。[0794]根据第一方面至第十三方面中任一项所述的方法的第十四方面,其中,所述映射函数是通过在子集a和子集b上使用定义的函数行为得到的,即,对于子集b的任一输入参数x,函数递增(例如)1,如f(x)‑f(x‑1)=1,以及对于子集a的任一输入参数x,函数为平坦的,如f(x)‑f(x‑1)=0;假设对应于x=0的映射函数的第一值为0;例如,可以使用以下伪代码迭代地实现:[0795][0796][0797]根据第四方面至第十四方面中任一项所述的方法的第十五方面,其中,所述映射函数的信息包括所述子集b的值b的信息,所述子集a通过a=x‑b得到。[0798]根据第四方面至第十四方面中任一项所述的方法的第十六方面,其中,所述子集b包括子子集bk,其中,所述子子集bk包括元素x,在所述x处,所述映射函数具有相同增量ck:如果x∈bk,则f(x)‑f(x‑1)=ck,其中,ck是自然数。例如,ck等于0、1、2、3、4……。换句话说,子集b可以根据子子集bk的点x处的映射函数的数量在不同的子子集上进行划分。[0799]根据第十六方面所述的方法的第十七方面,其中,所述映射函数的信息包括所述子子集bk中的至少一个子子集的大小(sizebk)和所述子子集bk中的至少一个子子集中的元素bi的信息。[0800]根据第十六方面或第十七方面所述的方法的第十八方面,其中,所述映射函数的信息包括所述映射函数在所述子子集bk的点处的增量值的信息。[0801]根据第十六方面或第十七方面所述的方法的第十九方面,其中,所述映射函数的信息包括所述子子集bk的数量的信息。[0802]根据第十六方面至第十九方面中任一项所述的方法的第二十方面,其中,所述映射函数的信息(例如,所述子子集bk的信息)的至少一部分通过以下语法获取:[0803][0804]根据第十六方面至第十九方面中任一项所述的方法的第二十一方面,其中,所述映射函数的信息(例如,所述子子集bk的信息)的至少一部分通过以下语法获取:[0805][0806][0807]根据第二方面或第三方面所述的方法的第二十二方面,其中,所述映射函数为分段函数,所述映射函数的信息包括所述分段函数的断点或变点或枢轴点。[0808]根据第二十二方面所述的方法的第二十三方面,其中,断点、变点、或枢轴点及其x坐标和y坐标的量以直接形式或使用当前点坐标与前一点坐标之间的差值在码流中指示。[0809]根据第二十二方面或第二十三方面所述的方法的第二十四方面,其中,所述映射函数是基于以下方程的分段函数:线性方程;指数方程;对数方程;或上述方程的组合。[0810]根据第二十四方面所述的方法的第二十五方面,其中,所述分段函数的参数根据枢轴点得到,例如在线性方程的示例中:slope=(ey‑dy)/(ex‑dx),b=dy+slope*dx;[0811]其中,d(94)和e(95)是坐标dx、dy和ex、ey对应的示例性变点,slope和b是线性方程的参数,如y=slope*x+b。[0812]根据第二方面或第三方面所述的方法的第二十六方面,其中,所述集合x包括子集c;所述映射函数的信息包括所述子集c的起始索引(x_start)和所述子集c的结束索引(x_end)的信息。[0813]根据第二十五方面或第二十六方面所述的方法的第二十七方面,其中,所述映射函数的信息包括对于所述子集c中的任一x,映射函数f(x)‑f(x‑1)的增量值的信息。[0814]根据第二十七方面所述的方法的第二十八方面,其中,所述增量值通过以下语法获取:[0815][0816]其中,sps_qpc_cb_delta[i]表示增量值。[0817]根据第二十七方面所述的方法的第二十九方面,其中,所述增量值在0至1的范围内。[0818]根据第二十九方面所述的方法的第三十方面,其中,所述增量值通过以下语法获取:[0819][0820]其中,sps_qpc_cb_delta[i]表示增量值。[0821]根据第二十六方面至第三十方面中任一项所述的方法的第三十一方面,其中,所述映射函数的信息使用以下代码中的任何一种指示:二进制码、定长码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。或指数哥伦布代码。[0822]根据第一方面至第三十一方面中任一项所述的方法的第三十二方面,其中,所述解码器还包括预定义映射函数,所述码流包括指示使用所述预定义映射函数或使用所述码流中指示的映射函数的指示符。[0823]根据第一方面至第三十二方面中任一项所述的方法的第三十三方面,其中,所述映射函数的信息是针对cb分量和cr分量(色度分量)指示的。[0824]根据第一方面至第三十三方面中任一项所述的方法的第三十四方面,其中,所述映射函数的信息包括指示所述映射函数是针对cb分量和cr分量单独指示或共同指示的指示符。[0825]根据第一方面至第三十四方面中任一项所述的方法的第三十五方面,其中,所述映射函数的信息在以下位置中指示:在序列参数集中的序列级别,或在图像参数集中的图像级别,或在分块组参数集中的分块组级别,或在自适应参数集中,或在补充增强信息(supplementalenhancementinformation,sei)消息中。[0826]根据第一方面至第三十五方面中任一项所述的方法的第三十六方面,其中,所述映射函数用表格表示如下:[0827]qpi<303031323334353637383940414243>43qpc=qpi2930313233343536373738394040=qpi‑3。[0828]根据第一方面至第三十七方面中任一项所述的方法的第三十七方面,其中,所述映射函数用表格表示如下:[0829]qpi<35353637383940414243>43qpc=qpi343536373738394040=qpi‑3。[0830]根据第一方面至第三十六方面中任一项所述的方法的第三十八方面,其中,所述映射函数的信息直接或间接地在所述码流中指示。[0831]根据第三十九方面,提供一种解码器(30),包括处理电路,所述处理电路用于执行根据第一方面至第三十八方面中任一个所述的方法。[0832]根据第四十方面,提供一种计算机程序产品,包括程序代码,所述程序代码用于执行根据第一方面至第三十八方面中任一个所述的方法。[0833]根据第四十一方面,提供一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述处理器耦合,并存储由所述处理器执行的程序,其中,所述程序在由所述处理器执行时,使所述解码器执行根据第一方面至第三十八方面中任一个所述的方法。[0834]此外,本发明还公开了以下四十一个方面,从第一方面至第二十五方面列出如下。[0835]在第一方面中,提供一种根据亮度分量的量化参数(quantizationparameter,qp)获取色度分量的qp的方法,其中,所述方法由解码器执行,包括:[0836]获取亮度qp;[0837]通过解析接收到的码流,获取用于获取将亮度qp与色度qp相关联的映射函数(f)的信息;[0838]根据所述获取的信息,获取所述映射函数;[0839]根据所述映射函数,获取色度qp。[0840]根据第一方面所述的方法的第二方面,其中,所述映射函数将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x对应于所述解码器支持的允许亮度qp范围内的亮度qp(例如,0至63,或支持范围的另一部分,例如,20至50),所述集合y对应于所述解码器支持的允许色度qp范围内的色度qp(例如,0至63,或支持范围的另一部分,例如,0至59或18至46)。例如,亮度qp范围和色度qp范围可以相同,也可以不同。[0841]根据第二方面所述的方法的第三方面,其中,所述映射函数是单调递增(非递减)函数。[0842]根据第二方面所述的方法的第三方面,其中,所述集合x包括子集a,在所述子集a上,所述映射函数f不递增,例如:对于集合a中的任一x(例如,a={30,39,43}),f(x)‑f(x‑1)=0。例如,f(30)‑f(29)=0,f(39)‑f(38)=0,或f(43)‑f(42)=0。[0843]根据第二方面所述的方法的第五方面,其中,所述集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是x的函数,并且c(x)>=1。例如,子集b可以等于x‑a,换句话说,子集a和子集b是x的两个不重叠的子集,如a+b=x。[0844]根据第五方面所述的方法的第六方面,其中,所述子集b上的映射函数f定义如下:对于所述子集b中的任一x,f(x)‑f(x‑1)=1。[0845]根据第一方面至第六方面中任一项所述的方法的第七方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取所述子集a的大小(sizea)和所述子集a中的元素ai的信息。[0846]根据第七方面所述的方法的第八方面,其中,用于获取所述码流中指示的映射函数的信息包括所述子集a的大小。[0847]根据第七方面所述的方法的第九方面,其中,用于获取所述码流中指示的映射函数的信息包括元素ai的直接值。[0848]根据第七方面所述的方法的第十方面,其中,用于获取所述码流中指示的映射函数的信息包括所述元素的当前值ai与所述元素的前一值ai‑1之间的差值(delta_ai),所述值ai通过以下方式得到:ai=ai‑1+delta_ai,其中,任一i>0。[0849]根据第七方面所述的方法的第十一方面,其中,所述子集a的第一值a0是根据a0与starting_point_value之间的差值(delta_a0)得到的,所述差值(delta_a0)在所述码流中指示,并且第一值a0通过以下方式得到:a0=starting_point_value+delta_a0,其中,starting_point_value在所述码流中指示,或者是预定义值,例如,0、21、30、maxqp>>1,其中,maxqp是所述解码器支持的最大qp值,例如,63。[0850]根据第七方面至第十一方面中任一项所述的方法的第十二方面,其中,用于获取映射函数的信息使用以下代码中的任一种从所述码流中指示:二进制码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。[0851]根据第一方面至第十一方面中任一项所述的方法的第十三方面,其中,所述映射函数是通过在子集a和子集b上使用定义的函数行为得到的,即,对于子集b的任一输入参数x,函数递增(例如)1,如f(x)‑f(x‑1)=1,以及对于子集a的任一输入参数x,函数为平坦的,如f(x)‑f(x‑1)=0;假设对应于x=0的映射函数的第一值为0。例如,可以使用以下伪代码迭代地实现:[0852][0853]根据第四方面至第十二方面中任一项所述的方法的第十四方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取所述子集b的值b的信息,所述子集a通过a=x‑b得到。[0854]根据第二方面所述的方法的第十五方面,其中,所述映射函数为分段函数,用于获取所述码流中指示的映射函数的信息包括所述分段函数的断点(或变点,或枢轴点)。[0855]根据第十五方面所述的方法的第十六方面,其中,断点、变点、或枢轴点及其x坐标和y坐标的量以直接形式或使用当前点坐标与前一点坐标之间的差值在码流中指示。[0856]根据第十五方面或第十六方面所述的方法的第十七方面,其中,所述映射函数是基于以下方程的分段函数:线性方程;指数方程;对数方程;或上述方程的组合。[0857]根据所述第十七方面所述的方法的第十八方面,其中,所述分段函数的参数根据枢轴点得到,例如在线性方程的示例中:slope=(ey‑dy)/(ex‑dx),b=dy+slope*dx。其中,d(94)和e(95)是坐标dx、dy和ex、ey对应的示例性变点,slope和b是线性方程的参数,如y=slope*x+b。[0858]根据第一方面至第十八方面中任一项所述的方法的第十九方面,其中,所述解码器还包括预定义映射函数,所述码流包括指示是使用所述预定义映射函数或使用所述码流中指示的映射函数的指示符。[0859]根据第一方面至第十九方面中任一项所述的方法的第二十方面,其中,用于获取映射函数的信息是针对cb分量和cr分量(色度分量)指示的。[0860]根据第一方面至第二十方面中任一项所述的方法的第二十一方面,其中,用于获取映射函数的信息包括指示所述映射函数是针对cb分量和cr分量单独指示或共同指示的指示符。[0861]根据第一方面至第二十一方面中任一项所述的方法的第二十二方面,其中,用于获取映射函数的信息在以下位置中指示:在序列参数集中的序列级别,或在图像参数集中的图像级别,或在分块组参数集中的分块组级别,或在自适应参数集中。[0862]根据第二十三方面,提供一种解码器(30),包括处理电路,所述处理电路用于执行根据第一方面至第二十二方面中任一个所述的方法。[0863]根据第二十四方面,提供一种计算机程序产品,包括程序代码,所述程序代码用于执行根据第一方面至第二十二方面中任一个所述的方法。[0864]根据第二十五方面,一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述处理器耦合,并存储由所述处理器执行的程序,其中,所述程序在由所述处理器执行时,使所述解码器执行根据所述第一方面或第二十二方面所述的方法。[0865]此外,本发明还公开了以下四十一个方面,从第一方面至第三十二方面列出如下。[0866]在第一方面中,提供一种根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的方法,所述方法由解码器执行,包括:解析接收到的码流,以获取所述亮度qp和将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的映射函数(f)的信息;至少部分地根据所述亮度qp获取所述qpi;根据所述获取的信息,获取所述映射函数;根据所述获取的映射函数和所述获取的qpi,获取所述qpc。[0867]根据第一方面所述的方法的第二方面,其中,所述映射函数将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x对应于所述解码器支持的允许qpi范围内的qpi,所述集合y对应于所述解码器支持的允许qpc范围内的qpc。[0868]根据第二方面所述的方法的第三方面,其中,所述映射函数是单调递增(非递减)函数。[0869]根据第二方面所述的方法的第四方面,其中,所述集合x包括子集a,在所述子集a上,所述映射函数f不递增,例如:对于所述子集a中的任一x,f(x)‑f(x‑1)=0。[0870]根据第四方面所述的方法的第五方面,其中,所述集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,a+b=x,c是不小于1的自然数。[0871]根据第二方面至第四方面中任一项所述的方法的第六方面,其中,集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是不小于1的自然数。[0872]根据第五方面或第六方面所述的方法的第七方面,其中,所述子集b上的映射函数f定义为:对于所述子集b中的任一x,f(x)‑f(x‑1)=1。[0873]根据第一方面至第七方面中任一项所述的方法的第八方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取所述子集a的大小(sizea)和所述子集a中的元素ai的信息。[0874]根据第八方面所述的方法的第九方面,其中,用于获取所述码流中指示的映射函数的信息包括所述子集a的大小。[0875]根据第八方面所述的方法的第十方面,其中,用于获取所述码流中指示的映射函数的信息包括元素ai的直接值。[0876]根据第八方面所述的方法的第十一方面,其中,用于获取所述码流中指示的映射函数的信息所述元素的当前值ai与所述元素的前一值ai‑1之间的差值(delta_ai),所述值ai通过以下方式得到:ai=ai‑1+delta_ai,其中,任一i>0。[0877]根据第八方面所述的方法的第十二方面,其中,所述子集a的第一值a0是根据a0与starting_point_value之间的差值(delta_a0)得到的,其中,所述差值(delta_a0)在所述码流中指示,并且第一值a0通过以下方式得到:a0=starting_point_value+delta_a0,其中,starting_point_value在所述码流中指示,或者是预定义值,例如,0、21、30、maxqpi>>1,其中,maxqpi是所述解码器支持的最大qpi值,例如,63。[0878]根据第八方面至第十二方面中任一项所述的方法的第十三方面,其中,用于获取映射函数的信息使用以下代码中的任一种从所述码流中指示:二进制码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。[0879]根据第一方面至第十一方面中任一项所述的方法的第十四方面,其中,所述映射函数是通过在子集a和子集b上使用定义的函数行为得到的,即,对于子集b的任一输入参数x,函数递增(例如)1,如f(x)‑f(x‑1)=1,以及对于子集a的任一输入参数x,函数为平坦的,如f(x)‑f(x‑1)=0;假设对应于x=0的映射函数的第一值为0。例如,可以使用以下伪代码迭代地实现:[0880][0881]根据第四方面至第十三方面中任一项所述的方法的第十五方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取所述子集b的值b的信息,所述子集a通过a=x‑b得到。[0882]根据第四方面至第十三方面中任一项所述的方法的第十六方面,其中,所述子集b包括子子集bk,其中,所述子子集bk包括元素x,在所述x处,所述映射函数具有相同增量ck:如果x∈bk,则f(x)‑f(x‑1)=ck,其中,ck是自然数。例如,ck等于0、1、2、3、4……。换句话说,子集b可以根据子子集bk的点x处的映射函数的数量在不同的子子集上进行划分。[0883]根据第十六方面所述的方法的第十七方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取所述子子集bk中的至少一个子子集的大小(sizebk)和所述子子集bk中的至少一个子子集中的元素bi的信息。[0884]根据第十六方面或第十七方面所述的方法的第十八方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取所述映射函数在子子集bk的点处的增量值的信息。[0885]根据第十六方面或第十七方面所述的方法的第十九方面,其中,用于获取所述码流中指示的映射函数的信息包括用于获取子子集bk的数量的信息。[0886]根据第二方面所述的方法的第二十方面,其中,所述映射函数为分段函数,用于获取所述码流中指示的映射函数的信息包括所述分段函数的断点(或变点,或枢轴点)。[0887]根据第二十方面所述的方法的第二十一方面,其中,断点(或变点,或枢轴点)及其x坐标和y坐标的量以直接形式或使用当前点坐标与前一点坐标之间的差值在码流中指示。[0888]根据第二十方面或第二十一方面所述的方法的第二十二方面,其中,所述映射函数是基于以下方程的分段函数:线性方程;指数方程;对数方程;或上述方程的组合。[0889]根据第二十二方面所述的方法的第二十三方面,其中,所述分段函数的参数根据枢轴点得到,例如在线性方程的示例中:slope=(ey‑dy)/(ex‑dx),b=dy+slope*dx。其中,d(94)和e(95)是坐标dx、dy和ex、ey对应的示例性变点,slope和b是线性方程的参数,如y=slope*x+b。[0890]根据第一方面至第二十三方面中任一项所述的方法的第二十四方面,其中,所述解码器还包括预定义映射函数,所述码流包括指示是使用所述预定义映射函数或使用所述码流中指示的映射函数的指示符。[0891]根据第一方面至第二十四方面中任一项所述的方法的第二十五方面,其中,用于获取映射函数的信息是针对cb分量和cr分量(色度分量)指示的。[0892]根据第一方面至第二十五方面中任一项所述的方法的第二十六方面,其中,用于获取映射函数的信息包括指示所述映射函数是针对cb分量和cr分量单独指示或共同指示的指示符。[0893]根据第一方面至第二十六方面中任一项所述的方法的第二十七方面,其中,所述映射函数的信息在以下位置中指示:在序列参数集中的序列级别,或在图像参数集中的图像级别,或在分块组参数集中的分块组级别,或在自适应参数集中,或在补充增强信息(supplementalenhancementinformation,sei)消息中。[0894]根据第一方面至第二十七方面中任一项所述的方法的第二十八方面,其中,所述映射函数用表格表示如下:[0895]qpi<303031323334353637383940414243>43qpc=qpi2930313233343536373738394040=qpi‑3。[0896]根据第一方面至第二十七方面中任一项所述的方法的第二十九方面,其中,所述映射函数用表格表示如下:[0897]qpi<35353637383940414243>43qpc=qpi343536373738394040=qpi‑3。[0898]根据第三十方面,提供一种解码器(30),包括处理电路,所述处理电路用于执行根据第一方面至第二十九方面中任一个所述的方法。[0899]根据第三十一方面,提供一种计算机程序产品,包括程序代码,所述程序代码用于执行根据第一方面至第二十九方面中任一个所述的方法。[0900]根据第三十二方面,提供一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述处理器耦合,并存储由所述处理器执行的程序,其中,所述程序在由所述处理器执行时,使所述解码器执行根据第一方面至第二十九方面中任一个所述的方法。[0901]此外,本发明还公开了以下四十一个方面,从第一方面至第四十一方面列出如下。[0902]在第一方面中,提供一种根据亮度分量的亮度量化参数(quantizationparameter,qp)获取色度分量的色度qp的方法,所述方法由解码器执行,包括:解析接收到的码流,以获取所述亮度qp和将qp索引(qpindex,qpi)与所述色度qp(qpc)相关联的映射函数(f)的信息;至少部分地根据所述亮度qp获取所述qpi;根据所述获取的信息,获取所述映射函数;根据所述获取的映射函数和所述获取的qpi,获取所述qpc。[0903]在码流中具有色度qp映射信息能够调整输入视频信号的特定属性(如sdr或hdr)或亮度和色度信道上的不同强度和分布,并因此提高压缩效率并改善重建视频信号中的色度分量与亮度分量之间的平衡。[0904]根据第一方面所述的方法的第二方面,其中,所述映射函数将集合x或所述集合x的任一子集中的每个元素x与集合y中的一个元素y相关联,其中,所述集合x对应于所述解码器支持的允许qpi范围内的qpi,所述集合y对应于所述解码器支持的允许qpc范围内的qpc。[0905]根据第二方面所述的方法的第三方面,其中,所述映射函数是单调递增(非递减)函数。[0906]对映射函数施加此限制可以避免当色度qp随着亮度qp的增加而降低时,映射函数出现“反常”行为,例如,意外和不期望的行为,即,避免了色度质量随着亮度质量的降低而增加的情况。具有单调递增约束可以使亮度质量和色度质量同步。其它优点在于这种限制可以通过避免描述函数负向递增来节省指示映射函数信息的位。[0907]根据第二方面或第三方面所述的方法的第四方面,其中,所述集合x包括子集a,在所述子集a上,所述映射函数f不递增,例如:对于所述子集a中的任一x,f(x)‑f(x‑1)=0。[0908]根据第四方面所述的方法的第五方面,其中,所述集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,a+b=x,c是不小于1的自然数。[0909]根据第二方面至第四方面中任一项所述的方法的第六方面,其中,集合x包括子集b,在所述子集b上,所述映射函数f递增,即:对于所述子集b中的任一x,f(x)‑f(x‑1)=c,其中,c是不小于1的自然数。[0910]根据第五方面或第六方面所述的方法的第七方面,其中,所述子集b上的映射函数f定义为:对于所述子集b中的任一x,f(x)‑f(x‑1)=1。[0911]根据第一方面至第七方面中任一项所述的方法的第八方面,其中,所述映射函数的信息包括所述子集a的大小(sizea)和所述子集a中的元素ai的信息。[0912]有利的是,这可以通过仅指示函数行为不同于正常、预定义行为(子集b)的点(子集a)来节省位。[0913]根据第一方面至第八方面中任一项所述的方法的第九方面,其中,所述映射函数的信息包括所述子集a的大小。[0914]根据第一方面至第九方面中任一项所述的方法的第十方面,其中,所述映射函数的信息包括所述子集a中的元素ai的直接值。[0915]根据第八方面至第十方面中任一项所述的方法的第十一方面,其中,所述映射函数的信息包括所述元素的当前值ai与所述元素的前一值ai‑1之间的差值(delta_ai),所述值ai通过以下方式得到:[0916]ai=ai‑1+delta_ai,其中,任一i>0。[0917]指示差值而不是直接值可以额外节省位。[0918]根据第八方面至第十方面中任一项所述的方法的第十二方面,其中,所述映射函数的信息包括第一值a0与starting_point_value之间的差值(delta_a0),其中,所述子集a的所述第一值a0是根据所述差值(delta_a0)得到的,如下所示:[0919]a0=starting_point_value+delta_a0[0920],其中,starting_point_value在所述码流中指示,或者是预定义值,例如,0、21、30、maxqpi>>1,其中,maxqpi是所述解码器支持的最大qpi值,例如,63。[0921]根据第一方面至第十二方面中任一项所述的方法的第十三方面,其中,所述映射函数的信息在所述码流中使用以下代码中的任何一种指示:二进制码、定长码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。[0922]根据第一方面至第十三方面中任一项所述的方法的第十四方面,其中,所述映射函数是通过在子集a和子集b上使用定义的函数行为得到的,即,对于子集b的任一输入参数x,函数递增(例如)1,如f(x)‑f(x‑1)=1,以及对于子集a的任一输入参数x,函数为平坦的,如f(x)‑f(x‑1)=0;假设对应于x=0的映射函数的第一值为0;例如,可以使用以下伪代码迭代地实现:[0923][0924]根据第四方面至第十四方面中任一项所述的方法的第十五方面,其中,所述映射函数的信息包括所述子集b的值b的信息,所述子集a通过a=x‑b得到。[0925]这可以通过仅指示那些函数行为不同于预定义行为的点,以最小化指示开销获取具有qpi支持值的整个集合x的函数行为。[0926]根据第四方面至第十四方面中任一项所述的方法的第十六方面,其中,所述子集b包括子子集bk,其中,所述子子集bk包括元素x,在所述x处,所述映射函数具有相同增量ck:如果x∈bk,则f(x)‑f(x‑1)=ck,其中,ck是自然数。例如,ck等于0、1、2、3、4……。换句话说,子集b可以根据子子集bk的点x处的映射函数的数量在不同的子子集上进行划分。[0927]这可以通过添加函数可能具有不同递增(ck)速度的点来增加映射函数定义的灵活性。[0928]根据第十六方面所述的方法的第十七方面,其中,所述映射函数的信息包括所述子子集bk中的至少一个子子集的大小(sizebk)和所述子子集bk中的至少一个子子集中的元素bi的信息。[0929]根据第十六方面或第十七方面所述的方法的第十八方面,其中,所述映射函数的信息包括所述映射函数在所述子子集bk的点处的增量值的信息。[0930]根据第十六方面或第十七方面所述的方法的第十九方面,其中,所述映射函数的信息包括所述子子集bk的数量的信息。[0931]根据第十六方面至第十九方面中任一项所述的方法的第二十方面,其中,所述映射函数的信息(例如,所述子子集bk的信息)的至少一部分通过以下语法获取:[0932][0933]根据第十六方面至第十九方面中任一项所述的方法的第二十一方面,其中,所述映射函数的信息(例如,所述子子集bk的信息)的至少一部分通过以下语法获取:[0934][0935]根据第二方面或第三方面所述的方法的第二十二方面,其中,所述映射函数为分段函数,所述映射函数的信息包括所述分段函数的断点或变点或枢轴点。[0936]该方面可以通过仅指示函数改变其行为(例如线的斜率(slope))的点来以有限指示开销描述函数行为,然后将函数描述为在变点或枢轴点之间的分段函数。[0937]根据所述第二方面或第三方面所述的方法的第二十二方面,其中,断点、变点、或枢轴点及其x坐标和y坐标的量以直接形式或使用当前点坐标与前一点坐标之间的差值在码流中指示。[0938]与指示枢轴点坐标的直接值相比,指示差值还可以额外节省位。[0939]根据第二十二方面或第二十三方面所述的方法的第二十四方面,其中,所述映射函数是基于以下方程的分段函数:线性方程;指数方程;对数方程;或上述方程的组合。[0940]使用分段函数的预定义方程形式(例如线性方程)可以获取枢轴点之间的函数值,而无需显式地指示函数值,这有利地减少了描述映射函数的指示开销。[0941]根据第二十四方面所述的方法的第二十五方面,其中,所述分段函数的参数根据枢轴点得到,例如在线性方程的示例中:slope=(ey‑dy)/(ex‑dx),b=dy+slope*dx。其中,d(94)和e(95)是坐标dx、dy和ex、ey对应的示例性变点,slope和b是线性方程的参数,如y=slope*x+b。[0942]为了实现映射函数的单调递增,slope应该是非负的,这可以通过对具有相同符号(具体为非负的,例如,大于或等于零)的增量(ey‑dy)和(ex‑dx)施加限制来实现。为此,可以使用无符号代码来指示差值,例如,无符号整数0阶指数哥伦布码。此外,还具有以下技术优势:进行单调递增限制可以使用无符号代码来指示增量,从而节省标记增量符号的位。[0943]根据第二方面或第三方面所述的方法的第二十六方面,其中,所述集合x包括子集c;所述映射函数的信息包括所述子集c的起始索引(x_start)和所述子集c的结束索引(x_end)的信息。[0944]根据第二十五方面或第二十六方面所述的方法的第二十七方面,其中,所述映射函数的信息包括对于所述子集c中的任一x,映射函数f(x)‑f(x‑1)的增量值的信息。[0945]根据第二十七方面所述的方法的第二十八方面,其中,所述增量值通过以下语法获取:[0946][0947]其中,sps_qpc_cb_delta[i]表示增量值。[0948]根据第二十七方面所述的方法的第二十九方面,其中,所述增量值在0至1的范围内。[0949]根据第二十九方面所述的方法的第三十方面,其中,所述增量值通过以下语法获取:[0950][0951]其中,sps_qpc_cb_delta[i]表示增量值。[0952]根据第二十六方面至第三十方面中任一项所述的方法的第三十一方面,其中,所述映射函数的信息使用以下代码中的任何一种指示:二进制码、定长码、一元码、截断一元码、截断二进制码、哥伦布码或指数哥伦布码。或指数哥伦布代码。[0953]根据第一方面至第三十一方面中任一项所述的方法的第三十二方面,其中,所述解码器还包括预定义映射函数,所述码流包括指示使用所述预定义映射函数或使用所述码流中指示的映射函数的指示符。[0954]该方面使得仅在有益的情况下,即亮度和色度通道特征与常见情况(如对于hdr信号)有显著差异时指示有关映射函数的信息,并支持使用适用于常见情况的预定义映射表。这可以节省大多数常见情况的指示开销。[0955]根据第一方面至第三十二方面中任一项所述的方法的第三十三方面,其中,所述映射函数的信息是针对cb分量和cr分量(色度分量)指示的。[0956]根据第一方面至第三十三方面中任一项所述的方法的第三十四方面,其中,所述映射函数的信息包括指示所述映射函数是针对cb分量和cr分量单独指示或共同指示的指示符。[0957]该方面使得在不同色度通道(cb和cr)具有不同信号特征的情况下进一步增加控制量化过程的灵活性,这又可以进一步提高压缩效率。[0958]根据第一方面至第三十四方面中任一项所述的方法的第三十五方面,其中,所述映射函数的信息在以下位置中指示:在序列参数集中的序列级别,或在图像参数集中的图像级别,或在分块组参数集中的分块组级别,或在自适应参数集中,或在补充增强信息(supplementalenhancementinformation,sei)消息中。[0959]根据第一方面至第三十五方面中任一项所述的方法的第三十六方面,其中,所述映射函数用表格表示如下:[0960]qpi<303031323334353637383940414243>43qpc=qpi2930313233343536373738394040=qpi‑3。[0961]根据第一方面至第三十七方面中任一项所述的方法的第三十七方面,其中,所述映射函数用表格表示如下:[0962]qpi<35353637383940414243>43qpc=qpi343536373738394040=qpi‑3。[0963]根据第一方面至第三十六方面中任一项所述的方法的第三十八方面,其中,所述映射函数的信息直接或间接地在所述码流中指示。[0964]根据第三十九方面,提供一种解码器(30),包括处理电路,所述处理电路用于执行根据第一方面至第三十八方面中任一个所述的方法。[0965]根据第四十方面,提供一种计算机程序产品,包括程序代码,所述程序代码用于执行根据第一方面至第三十八方面中任一个所述的方法。[0966]根据第四十一方面,提供一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,与所述处理器耦合,并存储由所述处理器执行的程序,其中,所述程序在由所述处理器执行时,使所述解码器执行根据第一方面至第三十八方面中任一个所述的方法。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1