CN118266216A - 非二进分数块的基于数组的残差编解码 - Google Patents
非二进分数块的基于数组的残差编解码 Download PDFInfo
- Publication number
- CN118266216A CN118266216A CN202280075180.2A CN202280075180A CN118266216A CN 118266216 A CN118266216 A CN 118266216A CN 202280075180 A CN202280075180 A CN 202280075180A CN 118266216 A CN118266216 A CN 118266216A
- Authority
- CN
- China
- Prior art keywords
- block
- last
- video
- coeff
- sig
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000006243 chemical reaction Methods 0.000 claims abstract description 15
- 230000000007 visual effect Effects 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 143
- 238000004590 computer program Methods 0.000 claims description 16
- 230000015654 memory Effects 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 abstract description 6
- 230000033001 locomotion Effects 0.000 description 123
- 238000005192 partition Methods 0.000 description 57
- 238000010586 diagram Methods 0.000 description 47
- 230000011218 segmentation Effects 0.000 description 42
- 230000008569 process Effects 0.000 description 36
- 238000013139 quantization Methods 0.000 description 31
- 239000013598 vector Substances 0.000 description 29
- 230000009466 transformation Effects 0.000 description 21
- 238000000638 solvent extraction Methods 0.000 description 19
- 241000023320 Luma <angiosperm> Species 0.000 description 15
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 15
- 230000011664 signaling Effects 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000003672 processing method Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000009795 derivation Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 241000764238 Isis Species 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- CVRPVRHBAOPDIG-UHFFFAOYSA-N methyl 2-methylprop-2-enoate;2-(2-methylprop-2-enoyloxy)ethyl 1,3-dioxo-2-benzofuran-5-carboxylate Chemical compound COC(=O)C(C)=C.CC(=C)C(=O)OCCOC(=O)C1=CC=C2C(=O)OC(=O)C2=C1 CVRPVRHBAOPDIG-UHFFFAOYSA-N 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Abstract
公开了一种用于处理视频数据的机制。基于宽度(W)是否是非二进分数的并且基于高度(H)是否是非二进分数的来确定具有W和H的残差块中的最后有效系数的位置。基于块中的最后有效系数的位置在视觉媒体数据与比特流之间执行转换。
Description
相关申请的交叉引用
本专利申请要求由Kai Zhang等人于2021年11月10日提交的名称为“ResidualCoding on Non-dyadic Blocks[非二进分数块的残差编解码]”的国际申请号PCT/CN2021/129785的权益,该国际申请特此通过引用并入。
技术领域
本专利文档涉及呈文件格式的数字音视频媒体信息的生成、存储和使用。
背景技术
在因特网和其他数字通信网络上使用的带宽中,数字视频占用了最大的部分。随着能够接收和显示视频的所连接用户设备的数量增加,数字视频使用的带宽需求可能会继续增长。
发明内容
第一方面涉及一种用于处理视频数据的方法,所述方法包括:基于宽度(W)是否是非二进分数的并且基于高度(H)是否是非二进分数的来确定具有W和H的残差块中最后有效系数的位置;以及基于所述块中所述最后有效系数的位置在视觉媒体数据与比特流之间执行转换。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,所述最后有效系数的位置表示为水平位置前缀(last_sig_coeff_x_prefix)、水平位置后缀(last_sig_coeff_x_suffix)、垂直位置前缀(last_sig_coeff_y_prefix)、垂直位置前缀(last_sig_coeff_y_suffix)或其组合,并且其中,last_sig_coeff_x_prefix和last_sig_coeff_x_suffix是基于W确定的,并且last_sig_coeff_y_prefix和last_sig_coeff_y_suffix是基于H确定的。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,所述最后有效系数的位置被包括在具有索引(k)的表示为{Ak}的数组(A)中。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,当W和H中的至少一个是非二进分数的时,所述最后有效系数的位置被包括在表示为{Ak}的数组中。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,{Ak}将所述最后有效系数的位置坐标值(C)分成组。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,{Ak}被推导为:
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,{Ak}被表示为{Ak}={0,1,2,3,4,6,8,12,16,24,32,48,64,96,…}。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,所述最后有效系数的位置被表示为水平分量和垂直分量,并且其中,所述水平分量和所述垂直分量各自被表示为前缀(p)和后缀(s)。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,所述垂直分量的p的最大前缀值(MaxP)被设置为满足Ak≤(D-1)<Ak+1的k值,其中,D是所述块的H。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,所述水平分量的p的MaxP被设置为满足Ak≤(D-1)<Ak+1的k值,其中,D是所述块的W。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,MaxP被包括在根据D索引的表(T)中,其中,D是所述块的W或所述块的H。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,T由D索引。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,T由D-1索引。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,T被表示为T={0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,…}。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,每个s都包括在所述比特流中的每个对应的p之后。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,仅当对应的p大于三时,规则才允许在所述比特流中包括s。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,当对应的p为三或更少时,规则阻止在比特流中包括s。
可选地,在前述方面中的任一方面中,所述方面的另一实施方式规定,s的最大允许值由Ap+1-Ap-1表示,其中,A是由p索引的数组。
第二方面涉及一种非暂时性计算机可读介质,其包括供视频编解码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非暂时性计算机可读介质上的计算机可执行指令,使得当由处理器执行时使得所述视频编解码设备执行前述方面中任一项所述的方法。
第三方面涉及一种用于处理视频数据的装置,所述装置包括:处理器;以及其上具有指令的非暂时性存储器,其中,所述指令在由所述处理器执行时使所述处理器执行前述方面中任一项所述的方法。
为了清楚起见,在本公开的范围内,前述实施例中的任何一个都可以与其他前述实施例中的任何一个或多个组合以创建新的实施例。
从下文结合附图和权利要求的具体实施方式将更清楚地理解这些和其他特征。
附图说明
为了更完整地理解本公开,现在结合附图和具体实施方式参考以下简要描述,其中,类似的附图标记表示类似的部分。
图1是用于视频编解码的示例编码和解码(编解码器)的示意图。
图2是示例宏块分割的示意图。
图3是用于例如根据高效视频编解码(HEVC)对编解码块进行分割的示例模式的示意图。
图4是用于对图片进行分割以进行残差编解码的示例方法的示意图。
图5是用于例如根据四叉树二叉树(QTBT)结构对图片进行分割的示例方法的示意图。
图6是多功能视频编解码(VVC)中使用的示例分割结构的示意图。
图7是示例扩展四叉树(EQT)分割结构的示意图。
图8是示例灵活树(FT)分割结构的示意图。
图9是示例广义TT(GTT)分割结构的示意图。
图10是示例边界分割树的示意图。
图11是音视频编解码标准(AVS)第三部分(AVS-3.0)中使用的示例分割结构的示意图。
图12是示例非对称四叉树(UQT)分割结构的示意图。
图13是示例扩展三叉树(ETT)分割结构的示意图。
图14是示例1/4非对称二叉树(UBT)分割结构的示意图。
图15是残差变换的示例的示意图。
图16是图示了将编解码组应用于残差块以进行变换的示例的示意图。
图17是示出了示例视频处理***的框图。
图18是示例视频处理装置的框图。
图19是示例视频处理方法的流程图。
图20是图示了示例视频编解码***的框图。
图21是图示了示例编码器的框图。
图22是图示了示例解码器的框图。
图23是示例编码器的示意图。
具体实施方式
首先应当理解,虽然下文提供了一个或多个实施例的说明性实施方式,但是所公开的***和/或方法可以使用任何数量的技术来实施,无论是当前已知的还是有待开发的。本公开决不应当限于下文图示的说明性实施方式、附图和技术,包括本文图示和描述的示例性设计和实施方式,而是可以在所附权利要求的范围及其等效物的全部范围内进行修改。
在一些描述中使用多功能视频编解码(VVC,也称为H.266)这一术语仅是为了易于理解,而不是为了限制所公开技术的范围。因此,本文描述的技术也适用于其他视频编解码器协议和设计。在本文档中,根据VVC规范或国际标准化组织(ISO)基础媒体文件格式(ISOBMFF)文件格式规范,对文本的编辑改动用粗体斜体表示删除的文本,并且用粗体下划线表示添加的文本。
本文档涉及图像/视频编解码,更具体地涉及某些特殊类型的块的变换。所公开的机制可以应用于诸如高效视频编解码(HEVC)和/或多功能视频编解码(VVC)等视频编解码标准。这样的机制还可以适用于其他视频编解码标准和/或视频编解码器。
视频编解码标准主要通过国际电信联盟(ITU)电信标准化部门(ITU-T)和国际标准化组织(ISO)/国际电工委员会(IEC)标准的制定而不断发展。ITU-T制定了H.261标准和H.263标准,ISO/IEC制定了运动图片专家组(MPEG)第一阶段(MPEG-1)和MPEG第四阶段(MPEG-4)视觉标准,并且这两个组织共同制定了H.262/MPEG第二阶段(MPEG-2)视频标准、H.264/MPEG-4高级视频编解码(AVC)标准和H.265/高效视频编解码(HEVC)标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中,利用了时域预测加变换编解码。
图1是例如根据HEVC的用于视频编解码的示例编码和解码(编解码器)的示意图。例如,编解码器100提供支持通过对图片进行编码和/或解码来将视频文件转换为比特流的功能。编解码器100被概括为描绘在编码器和解码器二者中采用的组件。编解码器100接收图片流作为视频信号101并对图片进行分割。然后,编解码器100在充当编码器时将视频信号101中的图片压缩为经编解码的比特流。当充当解码器时,编解码器***100从比特流生成输出视频信号。编解码器100包括通用编码器控制组件111、变换缩放和量化组件113、图片内估计组件115、图片内预测组件117、运动补偿组件119、运动估计组件121、缩放和逆变换组件129、滤波器控制分析组件127、环路内滤波器组件125、解码图片缓冲器组件123和标头格式化和上下文自适应二进制算术编解码(CABAC)组件131。这些组件如图所示进行耦合。在图1中,黑线表示要编码/解码的数据的移动,而虚线表示控制其他组件的操作的控制数据的移动。编解码器100的组件可以全部存在于编码器中。解码器可以包括编解码器100的组件的子集。例如,解码器可以包括图片内预测组件117、运动补偿组件119、缩放和逆变换组件129、环路内滤波器组件125和解码图片缓冲器组件123。现在描述这些组件。
视频信号101是已捕获的视频序列,其已按编解码树分割成像素块。编解码树采用各种拆分模式将像素块细分为更小的像素块。然后可以将这些块进一步细分为更小的块。这些块可以被称为编解码树上的节点。较大的父节点被拆分成较小的子节点。节点被细分的次数被称为节点/编解码树的深度。在一些情况下,所划分的块可以被包括在编解码单元(CU)中。例如,CU可以是CTU的子部分,其包含亮度块、(多个)红差色度(Cr)块和(多个)蓝差色度(Cb)块以及CU的对应语法指令。拆分模式可以包括二叉树(BT)、三叉树(TT)和四叉树(QT),它们用于取决于所采用的拆分模式将节点分别分割成不同形状的两个、三个或四个子节点。视频信号101被转发到通用编码器控制组件111、变换缩放和量化组件113、图片内估计组件115、滤波器控制分析组件127和运动估计组件121以进行压缩。
通用编码器控制组件111被配置为根据应用约束做出与将视频序列的图像编解码为比特流相关的决策。例如,通用编码器控制组件111管理比特率/比特流大小与重构质量的优化。这样的决策可以基于存储空间/带宽可用性和图像分辨率请求来做出。通用编码器控制组件111还根据传输速度来管理缓冲器的利用率,以减轻缓冲器欠载和溢出问题。为了管理这些问题,通用编码器控制组件111管理其他组件的分割、预测和滤波。例如,通用编码器控制组件111可以增加压缩复杂性以提高分辨率并提高带宽使用率,或者降低压缩复杂性以降低分辨率和带宽使用率。因此,通用编码器控制组件111控制编解码器100的其他组件,以平衡视频信号重构质量与比特率问题。通用编码器控制组件111产生用于控制其他组件的操作的控制数据。控制数据还被转发到标头格式化和CABAC组件131,以在比特流中被编码为信号参数,以用于解码器处的解码。
视频信号101还被发送到运动估计组件121和运动补偿组件119以进行帧间预测。视频信号101的视频单元(例如,图片、条带、CTU等)可以被划分为多个块。运动估计组件121和运动补偿组件119相对于一个或多个参考图片中的一个或多个块对接收到的视频块执行帧间预测编解码,以提供时域预测。编解码器***100可以执行多个编解码遍次(pass),例如,以便为视频数据的每个块选择适当的编解码模式。
运动估计组件121和运动补偿组件119可以是高度集成的,但是出于概念目的而分开图示。由运动估计组件121执行的运动估计是生成运动向量的过程,其估计视频块的运动。例如,运动向量可以指示当前块中的编解码对象相对于参考块的位移。参考块是在像素差方面与要编解码的块非常接近的块。这种像素差可以通过绝对差和(SAD)、平方差和(SSD)或其他差度量来确定。HEVC采用多种编解码对象,包括CTU、编解码树块(CTB)和CU。例如,CTU可以被划分为CTB,然后CTB可以被划分为CB以包括在CU中。CU可以被编码为包含预测数据的预测单元(PU)和/或包含CU的经变换残差数据的变换单元(TU)。运动估计组件121通过使用作为率失真优化过程的一部分的率失真分析来生成运动向量、PU和TU。例如,运动估计组件121可以为当前块/帧确定多个参考块、多个运动向量等,并且可以选择具有最佳率失真特性的参考块、运动向量等。最佳率失真特性平衡了视频重构的质量(例如,压缩造成的数据丢失量)和编解码效率(例如,最终编码的大小)。
在一些示例中,编解码器100可以计算存储在解码图片缓冲器组件123中的参考图片的子整数像素位置的值。例如,视频编解码器100可以对参考图片的四分之一像素位置、八分之一像素位置或其他分数像素位置的值进行插值。因此,运动估计组件121可以相对于完整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动向量。运动估计组件121通过将帧间编解码条带中的视频块的PU的位置与参考图片的参考块的位置进行比较来计算PU的运动向量。运动估计组件121将所计算的运动向量作为运动数据输出到标头格式化和CABAC组件131以进行编码,并且输出到运动补偿组件119。
由运动补偿组件119执行的运动补偿可以涉及基于运动估计组件121确定的运动向量来获取或生成参考块。在一些示例中,运动估计组件121和运动补偿组件119可以在功能上集成。当接收到当前视频块的PU的运动向量时,运动补偿组件119可以定位运动向量所指向的参考块。然后通过从正在编解码的当前块的像素值减去参考块的像素值来形成残差视频块,从而形成像素差值。一般而言,运动估计组件121相对于亮度分量执行运动估计,并且运动补偿组件119将基于亮度分量计算的运动向量用于色度分量和亮度分量二者。参考块和残差块被转发到变换缩放和量化组件113。
视频信号101还被发送到图片内估计组件115和图片内预测组件117。与运动估计组件121和运动补偿组件119一样,图片内估计组件115和图片内预测组件117可以是高度集成的,但是出于概念目的而分开图示。图片内估计组件115和图片内预测组件117相对于当前图片中的块对当前块进行帧内预测,作为如上所述的运动估计组件121和运动补偿组件119在图片之间执行的帧间预测的替代。具体地,图片内估计组件115确定用于对当前块进行编码的帧内预测模式。在一些示例中,图片内估计组件115从多个经测试的帧内预测模式中选择适当的帧内预测模式来对当前块进行编码。然后将所选择的帧内预测模式转发到标头格式化和CABAC组件131以进行编码。
例如,图片内估计组件115通过对各种经测试的帧内预测模式进行率失真分析来计算率失真值,并且在经测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定经编码的块与被编码以产生所述经编码的块的原始未编码块之间的失真(或误差)量,以及用于产生经编码的块的比特率(例如,比特数)。图片内估计组件115根据各个经编码的块的失真和码率来计算比率,以确定哪种帧内预测模式展现出该块的最佳率失真值。另外,图片内估计组件115可以被配置为基于率失真优化(RDO)使用深度建模模式(DMM)来对深度图的深度块进行编解码。
当在编码器上实施时,图片内预测组件117可以基于图片内估计组件115确定的所选帧内预测模式来从参考块生成残差块,或者当在解码器上实施时,从比特流读取残差块。残差块包括参考块与原始块之间的差值,表示为矩阵。然后残差块被转发到变换缩放和量化组件113。图片内估计组件115和图片内预测组件117可以对亮度分量和色度分量二者进行操作。
变换缩放和量化组件113被配置为进一步压缩残差块。变换缩放和量化组件113将诸如离散余弦变换(DCT)、离散正弦变换(DST)或概念上类似的变换等变换应用于残差块,以产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子带变换或其他类型的变换。该变换可以将残差信息从像素值域转换到诸如频域等变换域。变换缩放和量化组件113还被配置为例如基于频率对经变换的残差信息进行缩放。这种缩放涉及将缩放因子应用于残差信息,以便以不同的粒度量化不同的频率信息,这可能会影响重构视频的最终视觉质量。变换缩放和量化组件113还被配置为对变换系数进行量化以进一步降低比特率。量化过程可以减小与一些或全部系数相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,变换缩放和量化组件113然后可以执行对包括经量化的变换系数的矩阵的扫描。经量化的变换系数被转发到标头格式化和CABAC组件131以在比特流中进行编码。
缩放和逆变换组件129应用变换缩放和量化组件113的逆操作来支持运动估计。缩放和逆变换组件129应用逆缩放、变换和/或量化来重构像素域中的残差块,例如,以供后续用作另一当前块的参考块。运动估计组件121和/或运动补偿组件119可以通过将残差块添加回先前的参考块来计算另一参考块,以用于后续块/帧的运动估计。将滤波器应用于重构的参考块,以减轻在缩放、量化和变换期间产生的伪影。否则,在预测后续块时,这种伪影可能会导致预测不准确(并产生附加伪影)。
滤波器控制分析组件127和环路内滤波器组件125将滤波器应用于残差块和/或重构的图片块。例如,来自缩放和逆变换组件129的经变换残差块可以与来自图片内预测组件117和/或运动补偿组件119的对应参考块组合,以重构原始图像块。然后可以将滤波器应用于重构的图像块。在一些示例中,滤波器可以替代地应用于残差块。与图1中的其他组件一样,滤波器控制分析组件127和环路内滤波器组件125是高度集成的,并且可以一起实施,但是出于概念目的而分开描绘。应用于重构的参考块的滤波器被应用于特定的空间区域,并且包括多个参数以调整如何应用这种滤波器。滤波器控制分析组件127分析重构的参考块,以确定应当在哪里应用这种滤波器并设置对应的参数。这种数据被转发到标头格式化和CABAC组件131,作为滤波器控制数据以进行编码。环路内滤波器组件125基于滤波器控制数据来应用这种滤波器。滤波器可以包括去块滤波器、噪声抑制滤波器、SAO滤波器和自适应环路滤波器。这种滤波器可以应用于空域/像素域(例如,在重构的像素块上)或者应用于频域,具体取决于示例。
当作为编码器操作时,经滤波的重构图像块、残差块和/或预测块被存储在解码图片缓冲器组件123中,以供后续在如上所述的运动估计中使用。当作为解码器操作时,解码图片缓冲器组件123存储经重构和滤波的块并将其作为输出视频信号的一部分转发到显示器。解码图片缓冲器组件123可以是能够存储预测块、残差块和/或重构图像块的任何存储器设备。
标头格式化和CABAC组件131从编解码器100的各个组件接收数据,并将这种数据编码为经编解码的比特流,以便传输到解码器。具体地,标头格式化和CABAC组件131生成各种标头,以对诸如通用控制数据和滤波控制数据等控制数据进行编码。进一步地,包括帧内预测和运动数据的预测数据以及呈经量化的变换系数数据形式的残差数据都被编码在比特流中。最终比特流包括解码器重构原始分割视频信号101所需的所有信息。这种信息还可以包括帧内预测模式索引表(也称为码字映射表)、各种块的编码上下文的定义、最可能的帧内预测模式的指示、分割信息的指示等。这种数据可以通过采用熵编解码进行编码。例如,可以通过采用上下文自适应可变长度编解码(CAVLC)、CABAC、基于语法的上下文自适应二进制算术编解码(SBAC)、概率区间分割熵(PIPE)编解码或另一熵编解码技术来对信息进行编码。在熵编解码之后,经编解码的比特流可以被传输到另一设备(例如,视频解码器)或被存档,以供后续传输或检索。
为了如上所述对图片进行编码和/或解码,首先对图片进行分割。图2是示例宏块分割200的示意图,其可以根据H.264/AVC的分割树结构来创建。在这个标准中,编解码层的核心是宏块,其包含一个16×16的亮度样点块,并且在4:2:0颜色采样的情况下,包含两个对应的8×8的色度样点块。帧内编解码块使用空域预测以利用像素之间的空间相关性。针对帧内编解码块定义了两种分割,即16×16子块和4×4子块。帧间编解码块通过估计图片之间的运动来使用时域预测而不是空域预测。可以针对16×16宏块或任何子宏块分割来独立地估计运动。帧间编解码块可以被分割成16×8子块、8×16子块、8×8子块、8×4子块、4×8子块和/或4×4子块。所有这种值都是以样点数量来衡量的。样点是像素的亮度(光)值或色度(颜色)值。
图3是用于例如根据HEVC对编解码块进行分割的示例模式300的示意图。在HEVC中,图片被分割成CTU。通过使用表示为编解码树的四叉树结构将CTU拆分成CU,以适应各种局部特性。使用图片间(时域)预测还是图片内(空域)预测对图片区域进行编解码的决策是在CU级做出的。根据PU拆分类型,每个CU可以进一步拆分成一个、两个或四个PU。在一个PU内部,应用相同的预测过程,并且以PU为基础将相关信息传输到解码器。在通过应用基于PU拆分类型的预测过程获得残差块之后,可以根据与CU的编解码树类似的另一四叉树结构将CU分割成变换单元(TU)。HEVC结构的一个特征是HEVC具有多种分割概念,包括CU、PU和TU。
在使用HEVC的混合视频编解码中涉及的各种特征重点介绍如下。HEVC包括CTU,其类似于AVC中的宏块。CTU具有由编码器选择的大小并且可以大于宏块。CTU包括亮度编解码树块(CTB)、对应的色度CTB和语法元素。亮度CTB的大小(表示为L×L)可以选择为L=16、32或64个样点,大小越大,压缩效果越好。然后,HEVC支持使用树结构和类似四叉树的信令将CTB分割成更小的块。
CTU的四叉树语法指定对应的亮度和色度CB的大小和位置。四叉树的根与CTU相关联。因此,亮度CTB的大小是亮度CB所支持的最大大小。将CTU拆分成亮度和色度CB是联合用信令通知的。一个亮度CB和两个色度CB与相关联的语法一起形成编解码单元(CU)。CTB可以仅包含一个CU或者可以被拆分以形成多个CU。每个CU都具有相关联地分割的预测单元(PU)、和变换单元(TU)树。使用图片间预测还是图片内预测对图片区域进行编解码的决策是在CU级做出的。PU分割结构的根位于CU级。取决于基本预测类型决策,亮度和色度CB然后可以根据模式300进一步按大小进行拆分,并从亮度和色度预测块(PB)进行预测。HEVC支持从64×64到4×4个样点的可变PB大小。如图所示,模式300可以将大小为M个像素乘M个像素的CB拆分成M×M块、M/2×M块、M×M/2块、M/2×M/2块、M/4×M(左侧)块、M/4×M(右侧)块、M×M/4(上侧)块和/或M×M/4(下侧)块。需要注意的是,将CB拆分成PB的模式300受到大小限制。进一步地,对于图片内预测的CB,仅支持M×M和M/2×M/2。
图4是用于例如根据HEVC对图片进行分割以进行残差编解码的示例方法400的示意图。如上所述,通过参考参考块来对块进行编解码。当前块与参考块的值之间的差被称为残差。采用方法400来压缩残差。例如,使用块变换对预测残差进行编解码。方法400采用TU树结构403来对CTB 401进行分割,并且CTB包括用于应用变换块(TB)的CB。方法400图示了将CTB 401细分为CB和TB。实线指示CB边界,并且虚线指示TB边界。TU树结构403是对CTB401进行分割的示例四叉树。将诸如离散余弦变换(DCT)等变换应用于每个TB。该变换将残差转换成可以使用比未压缩残差更少的数据来表示的变换系数。TU树结构403的根位于CU级。亮度CB残差区域可以与亮度TB区域相同,或者可以进一步拆分成更小的亮度TB。这同样适用于色度TB。针对大小为4×4、8×8、16×16和32×32的正方形TB定义了与DCT的变换函数类似的整数基变换函数。对于亮度图片内预测残差的4×4变换,替代地指定了从DST形式推导出的整数变换。
下面讨论了联合探索模型(JEM)中具有较大CTU的四叉树加二叉树块结构。联合视频探索小组(JVET)由视频编解码专家组(VCEG)和MPEG成立,旨在探索HEVC以外的视频编解码技术。JVET采用了许多改进,包括将这种改进纳入名为联合探索模型(JEM)的参考软件中。
图5是用于例如根据四叉树二叉树(QTBT)结构501来对图片进行分割的示例方法500的示意图。还示出了QTBT结构501的树表示503。与HEVC中的分割结构不同,QTBT结构501去除了多种分割类型的概念。例如,QTBT结构501去除了CU、PU和TU概念的分离,并且支持更灵活的CU分割形状。在QTBT结构501中,CU可以是正方形或矩形形状。在方法500中,首先按四叉树结构对CTU进行分割。进一步按二叉树结构对四叉树叶节点进行分割。对称水平拆分和对称垂直拆分是二叉树中使用的两种拆分类型。二叉树的叶节点被称为CU,并且这种分割成的部分被用于预测和变换处理,无需进一步分割。这使得CU、PU和TU在QTBT结构501中具有相同的块大小。在JEM中,CU有时包括不同颜色分量的CB。例如,在4:2:0色度格式的单向帧间预测(P)和双向帧间预测(B)条带的情况下,一个CU可以包含一个亮度CB和两个色度CB。进一步地,CU有时包括具有单一分量的CB。例如,在帧内预测(I)条带的情况下,一个CU可以仅包含一个亮度CB或仅包含两个色度CB。
以下参数是为QTBT分割方案定义的。CTU的大小是四叉树的根节点的大小,这与HEVC中的概念相同。最小四叉树大小(MinQTSize)是最小允许的四叉树叶节点大小。最大二叉树大小(MaxBTSize)是最大允许的二叉树根节点大小。最大二叉树深度(MaxBTDepth)是最大允许的二叉树深度。最小二叉树大小(MinBTSize)是最小允许的二叉树叶节点大小。
在QTBT结构501的一个示例中,CTU的大小被设置为128×128个亮度样点,具有两个对应的64×64个色度样点块,MinQTSize被设置为16×16,MaxBTSize被设置为64×64,MinBTSize(对于宽度和高度二者)被设置为4×4,并且MaxBTDepth被设置为4。首先将四叉树分割应用于CTU以生成四叉树叶节点。四叉树叶节点的大小可以从16×16(MinQTSize)到128×128(CTU大小)。如果四叉树叶节点是128×128,则该节点不会被二叉树进一步拆分,因为该大小超过了MaxBTSize(例如,64×64)。否则,可以进一步按二叉树对四叉树叶节点进行分割。因此,四叉树叶节点也是二叉树的根节点,并且其二叉树深度为0。当二叉树深度达到MaxBTDepth(例如,4)时,不再考虑进一步拆分。当二叉树节点的宽度等于MinBTSize(例如,4)时,不再考虑进一步的水平拆分。类似地,当二叉树节点的高度等于MinBTSize时,不再考虑进一步的垂直拆分。二叉树的叶节点通过预测和变换处理被进一步处理,而无需任何进一步分割。在JEM中,最大CTU大小为256×256个亮度样点。
方法500图示了通过使用QTBT结构501进行块分割的示例,并且树表示503图示了对应的树表示。实线指示四叉树拆分,并且虚线指示二叉树拆分。在二叉树的每个拆分(例如,非叶)节点中,用信令通知一个标志以指示使用哪种拆分类型(例如,水平或垂直),其中,0指示水平拆分,并且1指示垂直拆分。对于四叉树拆分,不需要指示拆分类型,因为四叉树拆分总是对块进行水平和垂直拆分,以产生4个大小相等的子块。
另外,QTBT方案支持亮度和色度具有单独的QTBT结构501的能力。例如,在P条带和B条带中,一个CTU中的亮度和色度CTB共享相同的QTBT结构501。然而,在I条带中,亮度CTB被QTBT结构501分割成CU,并且色度CTB被另一QTBT结构501分割成色度CU。因此,I条带中的CU可以包括具有亮度分量的编解码块或具有两个色度分量的编解码块。进一步地,P条带或B条带中的CU包括具有所有三个颜色分量的编解码块。在HEVC中,小块的帧间预测被限制以减少运动补偿的存储器访问,使得4×8和8×4的块不支持双向预测,并且4×4的块不支持帧间预测。在JEM的QTBT中,去除了这些限制。
现在将讨论VVC的三叉树分割。图6是VVC中使用的示例分割结构的示意图600。如图所示,VVC中支持除四叉树和二叉树之外的拆分类型。例如,示意图600包括四叉树分割601、垂直二叉树分割603、水平二叉树分割605、垂直三叉树分割607和水平三叉树分割609。除了四叉树和二叉树之外,该方法还引入了两种三叉树(TT)分割。
在示例实施方式中,采用了两级树,包括区域树(四叉树)和预测树(二叉树或三叉树)。CTU首先按区域树(RT)进行分割。RT叶可以进一步以预测树(PT)进行拆分。PT叶还可以进一步以PT进行拆分,直到达到最大PT深度。PT叶是基本编解码单元。为了方便起见,PT也可以被称为CU。在示例实施方式中,CU无法进一步拆分。预测和变换都以与JEM相同的方式应用于CU。整个分割结构被命名为多类型树。
现在将讨论扩展四叉树。图7是示例EQT分割结构的示意图700。与块分割过程相对应的EQT分割结构包括用于视频数据块的扩展四叉树分割过程。扩展四叉分割结构表示将视频数据块分割成最终子块。当扩展四叉树分割过程决定对块应用扩展四叉树分割时,该块总是被拆分成四个子块。最终子块的解码基于视频比特流。视频数据块的解码基于根据推导出的EQT结构解码的最终子块。
可以递归地将EQT分割过程应用于块以生成EQT叶节点。可替代地,当将EQT应用于某个块时,对于EQT拆分得到的每个子块,可以进一步被拆分成BT和/或QT和/或TT和/或EQT和/或其他类型的分割树。在一个示例中,EQT和QT可以共享相同的深度递增过程和相同的叶节点大小限制。在这种情况下,当一个节点的大小达到最小允许的四叉树叶节点大小或者节点的EQT深度达到最大允许的四叉树深度时,可以隐式地终止对该节点的分割。可替代地,EQT和QT可以共享不同的深度递增过程和/或叶节点大小限制。当一个节点的大小达到最小允许的EQT叶节点大小或者与节点相关联的EQT深度达到最大允许的EQT深度时,可以隐式地终止按EQT对该节点的分割。在一个示例中,可以在序列参数集(SPS)、图片参数集(PPS)、条带标头、CTU、区域、瓦片和/或CU中用信令通知EQT深度和/或最小允许的EQT叶节点大小。
例如在块的大小为M×N、其中M和N是相等或不相等的非零正整数值的情况下,EQT可能不使用应用于正方形块的四叉树分割。而是,EQT将一个块均等地拆分成四个分割,比如,M/4×N拆分701或M×N/4拆分703。拆分727和拆分729分别示出了拆分701和703的一般示例。例如,拆分727被拆分成M×N1、M×N2、M×N3和M×N4,其中,N1+N2+N3+N4=N。进一步地,拆分729被拆分成M1×N、M2×N、M3×N和M4×N,其中,M1+M2+M3+M4=M。
在另一示例中,EQT可以将形状均等地拆分成四个分割,其中,分割大小取决于M和N的最大值和最小值。在一个示例中,一个4×32的块可以被拆分成四个4×8的子块,而32×4的块可以被拆分成四个8×4的子块。
在另一示例中,EQT将一个块均等地拆分成四个分割,比如两个分割的大小等于(M*w0/w)×(N*h0/h),并且另外两个分割的大小等于(M*(w-w0)/w)×(N*(h-h0)/h),如拆分705、拆分707、拆分709和拆分711所示。例如,w0和w可以分别等于1和2,使得宽度减少一半,而高度可以使用其他比例而不是2:1来得到子块。在另一示例中,h0和h可以分别等于1和2,使得高度减少一半,而宽度可以使用其他比例而不是2:1。例如,拆分705包括固定为M/2的子块宽度,其高度等于N/4或3N/4,并且对于顶部两个分割的选择较小。例如,拆分707包括固定为N/2的子块高度,其宽度等于M/4或3M/4,并且对于左侧两个分割的选择较小。例如,拆分709包括固定为M/2的子块宽度,其高度等于N/4或3N/4,并且对于底部两个分割的选择较小。例如,拆分711包括固定为N/2的子块高度,其宽度等于M/4或3M/4,并且对于右侧两个分割的选择较小。
拆分713、拆分715、拆分717、拆分719、拆分721和拆分723示出了四叉树分割的其他示例。例如,拆分713、拆分715和拆分717示出了形状被拆分成M×N/4和M/2×N/2的选项。例如,拆分719、拆分721和拆分723示出了形状被拆分成N×M/4和N/2×M/2的选项。
拆分725示出了具有不同形状的分割的四叉树分割的更一般情况。在这种情况下,拆分725被拆分成M1×N1、(M-M1)×N1、M1×(N-N1)和(M-M1)×(N-N1)。
图8是示例灵活树(FT)分割结构的示意图800。FT分割结构对应于包括用于视频数据块的FT分割过程的块分割过程。FT分割结构表示将视频数据块分割成最终子块。当FT分割过程决定对块应用FT分割时,该块被拆分成K个子块,其中K可以大于4。最终子块可以基于视频比特流进行编解码。进一步地,视频数据块可以基于根据推导出的FT结构解码的最终子块来进行解码。可以递归地将FT分割过程应用于给定块以生成FT树叶节点。当一个节点达到最小允许的FT叶节点大小或者与该节点相关联的FT深度达到最大允许的FT深度时,隐式地终止对该节点的分割。进一步地,当将FT应用于某个块时,可以创建多个子块。由FT创建的每个子块可以进一步被拆分成BT、QT、EQT、TT和/或其他类型的分割树。在示例中,可以在SPS、PPS、条带标头、CTU、区域、瓦片和/或CU中用信令通知FT深度或最小允许的FT叶节点大小或最小允许的FT分割大小。与EQT类似,由FT分割创建的所有子块可以具有相同或不同的大小。
示意图800包括示例FT分割结构,其中子块的数量(表示为K)被设置为等于六或八。拆分801是K=8、M/4*N/2的分割结构。拆分803是K=8、M/2*N/4的分割结构。拆分805是K=6、M/2*N/2且M/4*N/2的分割结构。拆分807是K=6、M/2*N/2且M/2*N/4的分割结构。
图9是示例广义TT(GTT)分割结构的示意图900。对于TT分割结构,可以去除要么沿水平方向要么沿垂直方向进行拆分的限制。GTT分割模式可以被定义为针对水平和垂直两者的拆分。拆分901采用来自垂直TT拆分的左侧拆分以及对剩余区域的水平BT拆分。拆分903采用来自水平TT拆分的底部拆分以及对剩余区域的垂直BT拆分。在一些示例中,分割EQT、FT和/或GTT分割方法可以在特定条件下应用。换句话说,当不满足(多种)条件时,不需要用信令通知分割类型。在另一示例中,EQT、FT和/或GTT分割方法可以用于替代其他分割树类型。在另一示例中,EQT、FT和/或GTT分割方法可以仅在某些条件下用作其他分割树类型的替代。在一个示例中,该条件可以基于图片、条带类型、块大小、编解码模式;和/或块是否位于图片、条带和/或瓦片的边界。在一个示例中,可以用与QT相同的方式处理EQT。在这种情况下,当选择QT分割树类型时,可以进一步用信令通知详细四叉树分割模式的更多标志/指示。在一些示例中,EQT可以被视为附加分割模式。在一个示例中,用信令通知EQT、FT和/或GTT的分割方法可能是有条件的。例如,在一些情况下可以不使用一种或多种EQP、FT和/或GTT分割方法,并且不用信号传输与用信令通知这些分割方法相对应的比特。
图10是示例边界分割树1000的示意图,其也称为多功能边界分割。边界分割树1000是VVC和/或音视频编解码标准工作组第三部分(AVS-3.0)的示例边界处理方法。由于VVC中的强制四叉树边界分割解决方案未经过优化,因此边界分割树1000使用常规块分割语法,以保持与CABAC引擎的连续性并与图片边界相匹配。多功能边界分割遵循以下规则(编码器和解码器)。由于边界分割树1000对于位于块处的边界使用与普通块(非边界)完全相同的分割语法,因此语法没有改变。如果边界CU解析为无拆分模式,则使用强制边界分割(FBP)来匹配图片边界。使用强制边界分割(非单一边界分割)后,不再执行进一步分割。强制边界分割描述如下。如果块的大小大于最大允许的BT大小,则在当前强制分割级别中使用强制QT来执行FBP。否则,如果当前CU的右下样点位于底部图片边界以下并且未延伸到右侧边界,则在当前强制分割级别中使用强制水平BT来执行FBP。否则,如果当前CU的右下样点位于右侧图片边界的右侧并且未在底部边界以下,则在当前强制分割级别中使用强制垂直BT来执行FBP。否则,如果当前CU的右下样点位于右侧图片边界的右侧并且在底部边界以下,则在当前强制分割级别中使用强制QT来执行FBP。
图11是音视频编解码标准(AVS)第三部分(AVS-3.0)中使用的示例分割结构的示意图1100。现在将讨论AVS-3.0中的分割。中国音视频编解码标准(AVS)工作组由中华人民共和国原工业和信息化部的科学技术部授权成立。AVS以满足高速发展的信息产业的需求为己任,致力于制定高质量的数字音视频压缩、解压缩、处理和表示的技术标准,并且为数字音视频设备和***提供高效且经济的编码/解码技术。AVS可以应用于多种重要信息领域,包括高分辨率数字广播、高密度激光数字存储介质、无线宽带多媒体通信和互联网宽带流媒体。AVS是第二代信源编码/解码标准之一,拥有中国自主知识产权。信源编码技术主要解决来自初始数据和原始信源的海量音视频数据的编解码和压缩的问题。因此AVS被称为数字视音频编解码技术,是后续数字化传输、存储和广播的前提。进一步地,AVS还充当数字视频和音频行业的通用标准。
AVS-3.0采用QT分割1101、垂直BT分割1105、水平BT分割1103、水平扩展四叉树(EQT)分割1107和垂直EQT分割1109来将最大编解码单元(LCU)拆分成多个CU。QT分割、BT分割和EQT分割都可以用于分割树的根、内部节点或叶节点。但是,在任何BT和/或EQT分割之后禁止进行QT分割。
图12是示例非对称四叉树(UQT)分割结构的示意图1200。UQT分割采用尺寸为W×H的块,将其拆分成尺寸为W1×H1、W2×H2、W3×H3和W4×H4的四个分割,其中W1、W2、W3、W4、H1、H2、H3、H4均为整数。在一个示例中,至少一个分割与其他分割相比具有不同的块大小。在一个示例中,四个分割中只有两个可以具有相同的大小,而另外两个的大小彼此不同并且与具有相同大小的两个分割不同。在一个示例中,所有参数都是2的幂的形式。例如,W1=2N1,W2=2N2,W3=2N3,W4=2N4,H1=2M1,H2=2M2,H3=2M3,H4=2M4。在一个示例中,UQT在垂直方向上仅拆分一个分割,例如,H1=H2=H3=H4=H。在一个示例中,在拆分1201中,W1=W/8,W2=W/2,W3=W/8,W4=W/4,H1=H2=H3=H4=H。这种UQT是垂直拆分的,称为UQT1-V。在一个示例中,在拆分1203中,W1=W/8,W2=W/2,W3=W/4,W4=W/8,H1=H2=H3=H4=H。这种UQT是垂直拆分的,称为UQT2-V。在一个示例中,在拆分1205中,W1=W/4,W2=W/8,W3=W/2,W4=W/8,H1=H2=H3=H4=H。这种UQT是垂直拆分的,称为UQT3-V。在一个示例中,在拆分1207中,W1=W/8,W2=W/4,W3=W/2,W4=W/8,H1=H2=H3=H4=H。这种UQT是垂直拆分的,称为UQT4-V。
在一个示例中,UQT在水平方向上仅拆分一个分割,例如,W1=W2=W3=W4=W。在一个示例中,在拆分1209中,H1=H/8,H2=H/2,H3=H/8,H4=H/4,W1=W2=W3=W4=W。这种UQT是水平拆分的,称为UQT1-H。在一个示例中,在拆分1211中,H1=H/8,H2=H/2,H3=H/4,H4=H/8,W1=W2=W3=W4=W。这种UQT是水平拆分的,称为UQT2-H。在一个示例中,在拆分1213中,H1=H/4,H2=H/8,H3=H/2,H4=H/8,W1=W2=W3=W4=W。这种UQT是水平拆分的,称为UQT3-H。在一个示例中,在拆分1215中,H1=H/8,H2=H/4,H3=H/2,H4=H/8,W1=W2=W3=W4=W。这种UQT是水平拆分的,称为UQT4-H。
图13是示例ETT分割结构的示意图1300,包括ETT-V拆分1301和ETT-H拆分1303。当采用ETT时,尺寸为宽度乘以高度(W×H)的块被拆分成三个分割,尺寸分别为W1×H1、W2×H2和W3×H3。W1、W2、W3、H1、H2、H3都是整数。在示例中,至少一个参数不是2的幂的形式。W1、W2和W3是所得子块的宽度。H1、H2和H3是所得子块的高度。在一个示例中,W2不能是W2=2N2的形式,其中N2为任意正整数。在另一示例中,H2不能是H2=2N2的形式,其中N2为任意正整数。在一个示例中,至少一个参数是2的幂的形式。在一个示例中,W1是W1=2N1的形式,其中N1为正整数。在另一示例中,H1是H1=2N1的形式,其中N1为正整数。
在一个示例中,ETT在垂直方向上仅拆分一个分割,例如其中,W1=a1*W,W2=a2*W,并且W3=a3*W,其中a1+a2+a3=1,并且其中H1=H2=H3=H。这种ETT是垂直拆分的,可以被称为ETT-V。在一个示例中,可以使用ETT-V拆分1301,其中W1=W/8,W2=3*W/4,W3=W/8,并且H1=H2=H3=H。在一个示例中,ETT在水平方向上仅拆分一个分割,例如其中,H1=a1*H,H2=a2*H,并且H3=a3*H,其中a1+a2+a3=1,并且其中W1=W2=W3=W。这种ETT是水平拆分的,可以被称为ETT-H。在一个示例中,可以使用ETT-H拆分1303,其中H1=H/8,H2=3*H/4,H3=H/8,并且W1=W2=W3=W。
图14是示例1/4UBT分割结构的示意图1400,其包括垂直UBT(UBT-V)分割和水平UBT(UBT-H)分割。尺寸为W×H的块可以被拆分成尺寸为W1×H1和W2×H2的两个子块,其中子块之一是二进分数块,而另一个是非二进分数块。这种拆分称为非对称二叉树(UBT)拆分。在一个示例中,W1=a×W,W2=(1-a)×W,并且H1=H2=H。在这种情况下,分割可以称为垂直UBT(UBT-V)。在一个示例中,a可以小于1/2,比如1/4、1/8、1/16、1/32、1/64等。在这种情况下,该分割可以称为类型0UBT-V,其示例如拆分1401所示。在一个示例中,a可以大于1/2,比如3/4、7/8、15/16、31/32、63/64等。在这种情况下,该分割称为类型1UBT-V,其示例如拆分1403所示。在一个示例中,H1=a×H,H2=(1-a)×H,并且W1=W2=W。在这种情况下,分割可以称为水平UBT(UBT-H)。在一个示例中,a可以小于1/2,比如1/4、1/8、1/16、1/32、1/64等。在这种情况下,该分割称为类型0UBT-H,其示例如拆分1405所示。在一个示例中,a可以大于1/2,比如3/4、7/8、15/16、31/32、63/64等。在这种情况下,该分割可以称为类型1UBT-H,其示例如拆分1407所示。
图15是例如在HEVC中使用的残差变换的示例的示意图1500。例如,可以根据基于其他块的预测对块进行编解码。(多个)参考块的预测与当前块的预测之间的差称为残差。可以在编码器处对残差进行变换和量化以减小残差数据的大小。可以在解码器处应用去量化和逆变换以获得残差数据。然后可以将残差数据应用于该预测以重构经编解码的块以供显示。示意图1500的左侧图示了编码器处的变换过程和量化过程,并且右侧图示了解码器处的去量化过程和逆变换。N×N块的变换过程的公式可以为:
其中,i=0,…,N-1。DCT变换矩阵C的元素cuj被定义为
其中,i,j=0,…,N-1,并且其中,对于i=0和i>0,A分别等于1和21/2。此外,DCT的基向量ci被定义为ci=[ci0,…,ci(N-1)]T,i=0,…,N-1。
M=log2(N)
ST1=2-(B+M-9)
ST2=2-(M+6)
B表示位深。
在第一逆变换阶段之后:SIT1=2-(7)
在第二逆变换阶段之后:SIT2=2-(20-B)
对于正向变换的输出样点coeff,可以按以下等式实施简单的量化方案:
shift2=29-M-B
SQ=2-shift2
Qstep(QP)=(21/6)QP-4=GQP%6<<(QP/6)。
f=[f0,f1,…,f5]=[26214,23302,20560,18396,16384,14564]。注意fQP%6≈214/GQP%6。
G=[G0,G1,…,G5]=[2-4/6,2-3/6,2-2/6,2-1/6,20,21/6]。
对于量化器的输出level,去量化器在HEVC标准中被指定为
shift1=(M-9+B)
SIQ等于2-shift1。
gQP%6=round(26×GQP%6)。
g=[g0,g1,…,g5]=[40,45,51,57,64,71]。
示意图1500中的移位和乘数总结如下:
正向变换:
缩放因子 | |
第一正向变换阶段 | 2(6+M/2) |
在第一正向变换阶段之后(ST1) | 2-(B+M-9) |
第二正向变换阶段 | 2(6+m/2) |
在第二正向变换阶段之后(ST2) | 2-(M+6) |
正向变换的总缩放 | 2(15-B-M) |
逆变换:
缩放因子 | |
第一逆变换阶段 | 2(6+M/2) |
在第一逆变换阶段之后(SIT1) | 2-7 |
第二逆变换阶段 | 2(6+M/2) |
在第二逆变换阶段之后(SIT2) | 2-(20-B) |
逆变换的总缩放 | 2-(15-B-M) |
图15示出了VVC中变换、量化、去量化和逆变换的过程,这将在下文将更详细地讨论。与HEVC不同,VVC支持矩形块,因此VVC支持宽度和高度可能不同的块。假设变换块的宽度和高度分别为W和H,则
图15中用于VVC的移位和乘数与图15相比修改如下:
正向变换:
逆变换:
与HEVC相比,当是偶数时,可以使用相同的量化/去量化因子。如果是奇数,则在量化/去量化阶段使用因子21/2进行补偿。
如果是偶数,则使用fVVC_even=[26214,23302,20560,18396,16384,14564],这与HEVC中的f相同。并且使用gVVC_even=[40,45,51,57,64,71],这与HEVC中的g相同。
如果为奇数,则使用fVVC_odd==[18396,16384,14564,13107,11651,10280]代替fVVC_even。并且使用gVVC_odd==[57,64,72,80,90,102]代替gVVC_even。粗略地说,fVVC_odd≈fVVC_even×2-1/2,并且gVVC_odd≈gVVC_even×21/2。
因此,
如果是奇数,则shift2=shift2-1。
SQ等于2-shift2。
如果是奇数,则shift1=shift1+1。
SIQ等于2-shift1。
下文是对最后位置进行编解码的一般描述。在VVC中,残差块中最后一个非零系数的位置以类似尾数-指数的方式进行编解码。沿x轴或y轴,最后位置的坐标C由前缀p(称为last_sig_coeff_x_prefix或last_sig_coeff_y_prefix,二值化为截断一元码)和后缀s(称为last_sig_coeff_x_suffix或last_sig_coeff_y_suffix,二值化为固定长度代码)表示为
其中,仅当C>3且C在[0,2(p>>1)-1-1]范围内时才对s进行编解码。对于大于3的前缀p,有效的C的范围为[2(p>>1),2(p>>1)+2(p>>1)-1-1](p为偶数)或[2(p>>1))+2(p>>1)-1,2(p>>1)+1-1](p为奇数)。对于x轴和y轴,用于通过截断一元编解码用信令通知p的最大允许值分别是2×log2W-1和2×log2H-1。
现在将讨论VVC中的残差编解码。具体地,以下部分介绍了VVC的编解码组和编解码组中的最后有效系数。在VVC中,块被拆分成具有相同大小的编解码组(CG)以对残差进行编解码。CG的宽度和高度分别为(1<<log2SbW)和(1<<log2SbH)。当在VVC中对残差块进行编解码时,在用信令通知残差的强度之前用信令通知最后有效系数的位置。在残差编解码的语法元素表中,用于用信令通知最后有效系数的位置的语法元素重点介绍如下。还重点介绍了log2SbW和log2SbH的推导过程。
last_sig_coeff_x_prefix指定变换块内按扫描顺序的最后有效系数的列位置的前缀。last_sig_coeff_x_prefix的值应在0至(log2ZoTbWidth<<1)-1的范围内,包括端值。当不存在last_sig_coeff_x_prefix时,推断其为0。last_sig_coeff_y_prefix指定变换块内按扫描顺序的最后有效系数的行位置的前缀。last_sig_coeff_y_prefix的值应在0至(log2ZoTbHeight<<1)-1的范围内,包括端值。当不存在last_sig_coeff_y_prefix时,推断其为0。last_sig_coeff_x_suffix指定变换块内按扫描顺序的最后有效系数的列位置的后缀。last_sig_coeff_x_suffix的值应在0至(1<<((last_sig_coeff_x_prefix>>1)-1))-1的范围内,包括端值。
变换块内按扫描顺序的最后有效系数的列位置LastSignificantCoeffX推导如下:如果不存在last_sig_coeff_x_suffix,则以下适用:
LastSignificantCoeffX=last_sig_coeff_x_prefix (192)
否则(last_sig_coeff_x_suffix存在),以下适用:
last_sig_coeff_y_suffix指定变换块内按扫描顺序的最后有效系数的行位置的后缀。last_sig_coeff_y_suffix的值应在0至(1<<((last_sig_coeff_y_prefix>>1)-1))-1的范围内,包括端值。变换块内按扫描顺序的最后有效系数的行位置LastSignificantCoeffY推导如下:如果不存在last_sig_coeff_y_suffix,则以下适用:
LastSignificantCoeffY=last_sig_coeff_y_prefix (194)
否则(last_sig_coeff_y_suffix存在),以下适用:
CBABC中各种语法元素的二值化和上下文推导定义如下:
语法元素和相关联的二值化
语法元素和相关联的二值化
将ctxInc指派给具有上下文编解码二进制位的语法元素
现在将讨论针对语法元素last_sig_coeff_x_prefix和last_sig_coeff_y_prefix推导ctxInc的过程。该过程的输入是变量binIdx、颜色分量索引cIdx、变换块宽度以二为底的对数log2TbWidth和变换块高度以二为底的对数log2TbHeight。该过程的输出是变量ctxInc。
变量log2TbSize的推导如下。如果要解析的语法元素是last_sig_coeff_x_prefix,则log2TbSize设置为等于log2TbWidth。否则(要解析的语法元素是last_sig_coeff_y_prefix),log2TbSiz设置为等于log2TbHeight。
变量ctxOffset和ctxShift的推导如下。如果cIdx等于0,则ctxOffset设置为等于offsetY[log2TbSize-2],并且ctxShift设置为等于(log2TbSize+1)>>2,其中列表offsetY指定如下:
offsetY[]={0,3,6,10,15} (1525)
否则(cIdx大于0),ctxOffset设置为等于20,并且ctxShift设置为等于Clip3(0,2,2log2TbSize>>3)。变量ctxInc的推导如下:
ctxInc=(binIdx>>ctxShift)+ctxOffset (1526)
现在将讨论VVC中的截断二元(TB)。TB二值化过程如下。该过程的输入是对具有值synVal和cMax的语法元素进行TB二值化的请求。该过程的输出是语法元素的TB二值化。语法元素synVal的TB二值化过程的二进制位字符串指定如下:
n=cMax+1
k=Floor(Log2(n)) (1510)
u=(1<<(k+1))-n
如果synVal小于u,则通过调用synVal的FL二值化过程来推导出TB二进制位字符串,其中cMax值等于(1<<k)-1。否则(synVal大于或等于u),通过调用(synVal+u)的FL二值化过程来推导出TB二进制位字符串,其中cMax值等于(1<<(k+1))-1。
以下是所公开的技术解决方案所解决的示例技术问题。二进分数尺寸描述了块的宽度和高度必须呈2N的形式的情况,其中,N为正整数。应当修改残差编解码以适应于具有非二进分数尺寸的块。
本文公开了解决上述一个或多个问题的机制。例如,通过对残差样点应用变换(这将在频域中产生残差系数)来压缩残差以用于用信令通知。由于残差样点的差异,残差系数在块与块之间变化很大。因此,编码器需要用信令通知最后有效系数的位置,以向解码器指示该块的残差系数的相对位置。用于用信令通知块中最后有效系数的位置的机制是为应用于二进分数块而配置的,因此对于非二进分数块可能无法正确运行。本公开还包括对用于用信令通知块中最后有效系数的位置信号的语法的配置改变,以允许这种语法对于非二进分数块正确运行。例如,最后有效系数的位置可以被描述为坐标(C),其中水平分量被编解码为水平位置前缀(last_sig_coeff_x_prefix)和水平位置后缀(last_sig_coeff_x_suffix)。该坐标还包括被描述为垂直位置前缀(last_sig_coeff_y_prefix)和垂直位置前缀(last_sig_coeff_y_suffix的垂直分量。last_sig_coeff_x_prefix和last_sig_coeff_x_suffix可以基于W来确定,并且last_sig_coeff_y_prefix和last_sig_coeff_y_suffix可以基于H来确定。例如,垂直和/或水平分量可以存储在具有索引(k)的表示为{Ak}的数组(A)中。在示例中,然后可以将数组索引编解码到比特流中,而不是对坐标进行编解码。在一些示例中,{Ak}仅用于非二进分数块。在一些示例中,垂直和水平分量的最大前缀值(MaxP)分别基于块的H和W来设置。MaxP可以被包括在基于W和/或H索引的表(T)中。对于小于或等于MaxP的值,可以用信令通知前缀,并且当垂直分量和/或水平分量中的值超过MaxP时,可以用信令通知前缀和后缀的值。
图16是图示了将编解码组应用于残差块以进行变换的示例的示意图1600。残差是块预测的结果。例如,将当前块与参考块进行匹配,并参考参考块进行编解码。因此,当前块是由参考块预测的。参考块与当前块之间的差被称为残差。残差不能仅通过参考块来预测,因此必须单独编解码或丢失。残差变换是对块1601中的残差进行变换和量化的过程,以减小用于在编码器与解码器之间传输的残差数据的大小。块1601中的残差描述了对应像素的差值。对于当前块中与参考块中的对应像素完美匹配的像素,块1601中剩余的残差为零。对于不匹配的像素,残差包括亮度(光)和色度(颜色)的差。色度可以进一步划分为Cr和Cb。因此,对于每个编解码块,将残差变换应用于亮度残差块1601、Cr残差块1601和Cb残差块1601。
从编码器的角度来看,块1601可以被细分为编解码组1603,以支持残差变换的执行。编解码组1603应当共同覆盖包含残差样点的块的所有区域。然后可以将变换应用于每个编解码组1603,以产生残差系数,这些残差系数可以被量化并编码成比特流,以用于传输到解码器。从解码器的角度来看,块1603被细分为编解码组1603。来自比特流的残差系数可以被包括在编解码组1603中。然后将逆变换应用于每个编解码组1603,以重构残差样点,以在基于块预测来重构图像的过程中使用。
块1601具有高度(H)和宽度(W)。当H、W或二者都是非二进分数的时,块1601是非二进分数的。当尺寸可以表示为二的幂时,尺寸为二进分数的;当尺寸无法表示为二的幂时,尺寸为非二进分数的。当至少一个尺寸是非二进分数的时,块是非二进分数的。编解码组1603的宽度(w)和高度(h)应当被选择为允许编解码组覆盖块1601。进一步地,一旦块1601已经被变换,块1601就包含各种残差系数。每个块1601的残差样点变化很大。相应地,残差系数的数量和位置也变化很大。因此,编码器将最后有效系数1605的位置用信令通知给解码器。然后解码器可以使用该位置来定位所有残差系数。最后有效系数1605是在从编码器用信令通知给解码器的残差系数中对图片质量影响最小的残差系数。此外,基于预定义的扫描顺序来扫描编解码组中的残差以将其包含在比特流中(并用于在解码器中定位回编解码组)。另外,上述各种元素可以根据各种上下文进行编解码。例如,上下文可以被设置为基于一个或多个语法元素的值。在比特流中用信令通知数据的编解码二进制位可以是上下文相关的,因此可以取决于当前上下文而指示不同的数据。编解码组1603的大小设置、最后有效系数1605的信令通知、扫描顺序和/或二进制位上下文可以被配置为针对二进分数块进行操作。本公开包括当块1601是非二进分数的时可以选择的各种算法。
在示例中,可以基于包含残差的块1601的W和H来确定编解码组1603的w和h。例如,可以通过采用被选择用于非二进分数块的算法来做出该确定。例如,规则可以要求W和H呈k×N的形式,其中k是正整数,并且N是大于1的整数。例如,该规则可能要求W和/或H是偶数。然后将编解码组的大小设置为k×N。在示例中,对于亮度和色度分量,N的值可以不同。在另一示例中,规则可以要求W=m×w并且H=n×h。其中,m和n为正整数。然后将编解码组的大小设置为w×h。在这些示例中,非二进分数块1601被强制为具有可以被平均拆分成整数个编解码组1603的大小。
在另一示例中,可以要求编解码组1603的w和h呈2k的形式,其中k是正整数。这种方法要求每个编解码组1603都是二进分数的,在这种情况下,基于二进分数的算法无需改变即可正确运行。在另一示例中,w和/或h是否可以被设置为值M取决于W和/或H是否分别能被M整除,是否有余数。在示例中,当W%M等于零时,w被设置为整数M。在示例中,当W%M不等于零时,w不被设置为整数M。在另一示例中,当H%M等于零时,h被设置为整数M。在另一示例中,当H%M不等于零时,h不被设置为整数M。在示例中,w被设置为M,其中M是满足W%M等于0的小于最大值的最大整数。在另一示例中,h被设置为M,其中M是满足H%M等于0的小于最大值的最大整数。%运算符表示除法运算后的余数。这些示例基于编解码组1603的大小是否能够在不产生余数的情况下适合块1601的大小来设置编解码组1603的大小。
在示例中,编解码组1603的w和h可以基于彼此并且基于块1601的W和H来设置。在示例中,当W>=4且H>=4时,并且当W%4==0且H%4==0时,w=h=4,其中,当W>=4且H>=4时,并且当W%4==0且H%4!=0时,w=4且h<4,其中,当W>=4且H>=4时,并且当W%4!=0且H%4==0时,w<4且h=4,其中,当W>=4且H>=4时,并且当W%4!=0且H%4!=0时,w=2且h=2。在另一示例中,当W>=4且H<4时,并且当H==2时,h=2,并且当W%8==0时,w=8,否则w=2,其中,当W>=4且H<4时,并且当H==1时,h=1,并且w被设置为M,其中M是满足W%M等于0的小于16的最大整数。在另一示例中,当H>=4且W<4时,并且当W==2时,w=2,并且当H%8==0时,h=8,否则h=2,其中,当H>=4且W<4时,并且当W==1时,w=1,并且h被设置为M,其中M是满足H%M等于0的小于16的最大整数。先前的示例基于余数来设置编解码组1603的大小,并将M的最大值设置为16。在又一示例中,当W小于4并且H小于4时,只能应用一个编解码组1603。因此,当H<4且W<4时,w=W且h=H。在另一示例中,当W>=8且W%8==0时w=8,并且当H>=8且H%8==0时h=8。在该示例中,当W和/或H大于八并且W和/或H能被八整除时,将编解码组1603的对应大小设置为八。
在示例中,w和h是从表示为表[idx0][idx1]的表中获取的,其中idx0取决于W,并且idx1取决于H。在示例中,idx0=W且idx1=H。在另一示例中,idx0=[log2W]并且idx1=[log2H]。在另一示例中,编解码组1603可以具有宽度(W')和高度(H'),其中W'<=W,并且H'<=H,并且W'×H'!=W×H。在示例中,W'被设置为并且H'被设置为该方法可以在应用清零变换之后使用,该清零变换将二进分数区域之外的所有残差设置为零,因此使编解码组1603成为二进分数的。
在另一组示例中,可以基于W是否是非二进分数的并且基于H是否是非二进分数的来确定块1601中的最后有效系数1605的位置。例如,最后有效系数的位置可以由具有水平分量和垂直分量的坐标(C)来表示。水平分量可以被编解码为水平位置前缀(last_sig_coeff_x_prefix)和水平位置后缀(last_sig_coeff_x_suffix)。垂直分量可以被编解码为垂直位置前缀(last_sig_coeff_y_prefix)和垂直位置前缀(last_sig_coeff_y_suffix)。在示例中,last_sig_coeff_x_prefix和/或last_sig_coeff_x_suffix是基于W确定的,并且last_sig_coeff_y_prefix和/或last_sig_coeff_y_suffix是基于H确定的。进一步地,当W和/或H是非二进分数的时,last_sig_coeff_x_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_prefix和/或last_sig_coeff_y_suffix可以基于特定于非二进分数尺寸的上下文进行编解码。
在示例中,last_sig_coeff_x_prefix可以根据上下文(ctxInc)进行编解码,并且可以基于根据或计算的变换块宽度以二为底的对数(log2TbWidth)来确定。在另一示例中,last_sig_coeff_y_prefix可以根据ctxInc进行编解码,并且基于根据或计算的变换块高度以二为底的对数(log2TbHeight)来确定。当推导基于上下文的移位(ctxShift)时,对于色度分量的last_sig_coeff_x_prefix和/或last_sig_coeff_y_prefix,ctxShift可以被设置为等于Clip3(0,2,(2×W-1)>>3)和/或Clip3(0,2,(2×H-1)>>3)。
在另一示例中,可以基于W和/或H是否是非二进分数的来对last_sig_coeff_x_prefix和/或last_sig_coeff_y_prefix进行编解码。例如,当W和/或H分别为非二进分数的时,last_sig_coeff_x_prefix和/或last_sig_coeff_y_prefix可以根据截断二元(TB)码进行编解码。在示例中,TB所使用的cMax可以基于last_sig_coeff_x_prefix和/或last_sig_coeff_y_prefix推导出。进一步地,函数MinInGroup(k)被定义为MinInGroup(k)=(1<<((k>>1)-1))×(2+(k&1))。在各种示例中,cMax基于MinInGroup(last_sig_coeff_x_prefix)、MinInGroup(last_sig_coeff_x_prefix+1)、MinInGroup(last_sig_coeff_y_prefix)、MinInGroup(last_sig_coeff_y_prefix+1)或其组合。MinInGroup(k)可以存储在由k索引的表中。cMax可以基于W和/或H推导出。在示例中,cMax可以被推导为V1-V2,其中V1和/或V2基于W、H、last_sig_coeff_x_prefix和/或last_sig_coeff_y_prefix推导出。在各种示例中,V2=MinInGroup(last_sig_coeff_x_prefix),V1=Min(W-1,V3),V3=MinInGroup(last_sig_coeff_x_prefix+1),V3=last_sig_coeff_x_prefix<T1?MinInGroup(last_sig_coeff_x_prefix+1):T2。T1=13,T2=127,V2=MinInGroup(last_sig_coeff_y_prefix),V1=Min(H-1,V3),V3=MinInGroup(last_sig_coeff_y_prefix+1),V3=last_sig_coeff_y_prefix<T1?MinInGroup(last_sig_coeff_y_prefix+1):T2,V3=min(MinInGroup(last_sig_coeff_y_prefix+1),T2)或其组合。在一些示例中,last_sig_coeff_x_prefix和/或last_sig_coeff_y_prefix可以被旁路编解码,可以根据上下文来编解码,和/或根据一元码、截断一元码、固定长度码、指数哥伦布码或其任何组合来编解码。
进一步地,按照预定顺序扫描块1601和编解码组1603中的残差系数。可以执行这样的扫描以由编码器将残差系数编码到比特流中,或者在解码器处从比特流解析残差系数以包括块1601和/或编解码组1603中。在一些示例中,块1601中的系数的扫描顺序是基于W是否是非二进分数的和/或基于H是否是非二进分数的来选择的。
另外,可以以与二进分数块不同的方式来确定非二进分数块的允许上下文二进制位的数量。在示例中,根据来确定块1601的允许上下文编解码二进制位的数量,其中,M和N是整数。
在示例中,最后有效系数1605的位置可以被包括在具有索引(k)的表示为{Ak}的数组(A)中。以这种方式,编码器可以将last_sig_coeff_x_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_prefix和/或last_sig_coeff_y_suffix中的每一个中{Ak}的相关索引编码到比特流中,以用信令通知最后有效系数1605的位置坐标。以这种方式,每个语法元素都包括单个索引,而不是包括以多个比特编码的数字部分。然后,解码器可以采用来自比特流的索引来确定编码器打算使用的前缀(p)和后缀(s)值。p和s值可以组合起来确定最后有效系数1605的位置坐标。例如,当块1601是非二进分数的并且因此包括非二进分数的H和/或W时,可以使用{Ak}。{Ak}可以用于将最后有效系数1605的位置坐标(C)的可能值分成组。在示例中,{Ak}被推导为:
例如,{Ak}可以表示为{Ak}={0,1,2,3,4,6,8,12,16,24,32,48,64,96,…}。在示例中,垂直分量的p的最大前缀值(MaxP)可以被设置为满足Ak≤(D-1)<Ak+1的k值,其中D是块的H。进一步地,水平分量的p的MaxP被设置为满足Ak≤(D-1)<Ak+1的k值,其中D是块的W。因此,p的MaxP可以取决于块1601的H和/或W而变化。低于MaxP时,可以用信令通知前缀而不使用后缀。满足或超过MaxP的值应当包括前缀和后缀两者。以这种方式,对于非二进分数块,p可允许的大小可以基于H和/或W而变化,并且该值的余数包括在s中。在示例中,MaxP被包括在根据D索引的表(T)中,其中D是块的W或块的H。这允许编码器和/或解码器分别基于H和/或W在表中查找坐标的垂直分量和水平分量的MaxP。该表可以基于D进行索引,其中D是W或H的函数。例如,T可以基于D、D-1等进行索引。在示例中,T被表示为T={0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,…}。
在一些示例中,垂直和/或水平分量的每个s被包括在比特流中的每个对应的p之后。在一些示例中,仅当对应的p大于三时,规则才可能允许在比特流中包括s。类似地,当对应的p为三或更少时,规则可以阻止在比特流中包括s。在一些示例中,s的最大允许值由Ap+1-Ap-1表示,其中A是由p索引的数组。
因此,为了解决上述问题,公开了几种方法来处理如上所讨论的当应用于非二进分数块时由变换和量化机制引起的问题。这些方法可以实现更好的编解码性能。
以下详细实施例应当被视为解释一般概念的示例。这些实施例不应被狭义地解释。此外,这些实施例可以以任何方式组合。在以下讨论中,QT、BT、TT、UQT和ETT可以分别指代QT拆分、BT拆分、TT拆分、UQT拆分和ETT拆分。在以下讨论中,如果宽度和高度都是二进分数,即,呈2N的形式,其中N是正整数,则块是二进分数块。在以下讨论中,如果宽度和高度至少其中之一是非二进分数,即,无法以2N的形式表示,其中N是正整数,则块是非二进分数块。在以下讨论中,拆分和分割具有相同的含义。
示例1
对于具有宽度(W)乘以高度(H)的尺寸的第一块,当第一块是非二进分数块时,残差编解码中CG的宽度(表示为w)和/或高度(表示为h)的推导过程可以取决于W和/或H。
示例2
在一个示例中,规则要求W和/或H必须呈k×N的形式,其中k是大于0的整数,并且N是大于1的整数。在一个示例中,该规则要求W和/或H必须是偶数。在一个示例中,对于不同的颜色分量,N可以是不同的。例如,当使用4:2:0颜色格式时,对于Cb/Cr分量,N可能等于2,而对于Y分量,N可能等于4。在一个示例中,CG的大小被设置为k×N。
示例3
在一个示例中,规则要求W>=w且H>=h。该规则可能要求W=m×w且H=n×h,其中m和n都是大于0的整数。在一个示例中,CG的大小被设置为w×h。
示例4
在一个示例中,规则要求w和/或h必须呈2k的形式,其中k是大于或等于0的整数。在一个示例中,CG的大小被设置为w×h。
示例5
在一个示例中,w是否可以被设置为M可能取决于W%M是否等于0。M是整数,比如4或2。在一个示例中,如果W%M等于0,则w可以被设置为M。在一个示例中,如果W%M不等于0,则w不能被设置为M。在一个示例中,w可以被设置为P,其中,P<M且W%P等于0。在一个示例中,CG的大小被设置为w×h。
示例6
在一个示例中,h是否可以被设置为M可能取决于H%M是否等于0。M是整数,比如8、4或2。在一个示例中,如果H%M等于0,则h可以被设置为M。在一个示例中,如果H%M不等于0,则h不能被设置为M。在一个示例中,h可以被设置为P,其中,P<M且H%P等于0。在一个示例中,CG的大小被设置为w×h。
示例7
在一个示例中,w可以被设置为M,其中,M是满足W%M等于0且M不大于最大值(比如16)的最大整数。在一个示例中,CG的大小被设置为w×h。
示例8
在一个示例中,h可以被设置为M,其中,M是满足H%M等于0且M不大于最大值(比如16)的最大整数。在一个示例中,CG的大小被设置为w×h。
示例9
在一个示例中,w可以取决于W和/或H和/或h来设置。在一个示例中,CG的大小被设置为w×h。
示例10
在一个示例中,h可以取决于W和/或H和/或w来设置。在一个示例中,CG的大小被设置为w×h。
示例11
在一个示例中,如果W>=4且H>=4,并且如果W%4==0并且H%4==0,则设置w=h=4。在一个示例中,如果W>=4且H>=4,并且如果W%4==0且H%4!=0,则设置w=4,h<4(例如,h=2)。在一个示例中,如果W>=4且H>=4,并且如果W%4!=0且H%4==0,则设置w<4(例如,w=2),h=4。在一个示例中,如果W>=4且H>=4,并且如果W%4!=0且H%4!=0,则设置w=2,h=2。在一个示例中,CG的大小被设置为w×h。
在一个示例中,如果W>=4且H<4,并且如果H==2,则设置h=2。如果W%8==0,则设置w=8。否则,设置w=2。在一个示例中,如果W>=4且H<4,并且如果H==1,则设置h=1。w被设置为M,其中,M是满足W%M等于0且M不大于16的最大整数。在一个示例中,CG的大小被设置为w×h。
示例12
在一个示例中,如果H>=4且W<4,并且如果W==2,则设置w=2。如果H%8==0,则设置h=8。否则,设置h=2。在一个示例中,如果H>=4且W<4,并且如果W==1,则设置w=1。h被设置为M,其中,M是满足H%M等于0且M不大于16的最大整数。在一个示例中,CG的大小被设置为w×h。在一个示例中,如果H<4且W<4,则CG的大小被设置为W×H,例如,仅应用一个CG。在示例中,跳过关于CG内是否存在至少一个非零系数的指示的信令。
示例13
在一个示例中,如果W>=8且W%8==0,则CG的大小被设置为w×h且w=8。在一个示例中,如果H>=8且H%8==0,则CG的大小被设置为w×h且h=8。
示例14
在一个示例中,w和/或h是从表[idx0][idx1]中获取的,其中,idx0和idx1取决于W和H。在一个示例中,如果W或H是非二进分数,则使用该表。在一个示例中,如果W和H是非二进分数,则使用该表。在一个示例中,如果W和H是二进分数,则使用该表。在一个示例中,idx0=W且idx1=H。在一个示例中,idx0=[log2W]且idx1=[log2H]。在一个示例中,CG的大小被设置为w×h。
示例15
在示例中,可以使用与宽度和高度设置为W'×H'的二进分数块相同的规则来推导CG的大小,其中W'<=W,并且H'<=H,并且W'×H'!=W×H。在一个示例中,W'被设置为在一个示例中,H'被设置为在一个示例中,W'被设置为在一个示例中,H'被设置为在一个示例中,可以仅在使用清零变换时应用以上示例。
示例16
在示例中,尺寸为W×H的块的最后有效系数的位置的编解码/解析过程可以取决于W和/或H,例如取决于W和/或H是否是(多个)二进分数或(多个)非二进分数。
示例17
在一个示例中,对last_sig_coeff_x_prefix或last_sig_coeff_y_prefix进行编解码/解析可以取决于W和/或H,尤其取决于W和/或H是二进分数还是非二进分数。例如,如果W是二进分数,则可以根据VVC对last_sig_coeff_x_prefix进行编解码/解析。例如,如果H是二进分数,则可以根据VVC对last_sig_coeff_y_prefix进行编解码/解析。在一个示例中,如果W是非二进分数,则可以利用编解码上下文对last_sig_coeff_x_prefix进行编解码/解析。在一个示例中,当针对语法元素last_sig_coeff_x_prefix推导ctxInc时,log2TbWidth被计算为在示例中,log2TbWidth被计算为
在一个示例中,当针对语法元素last_sig_coeff_x_prefix推导ctxShift时,当颜色分量是色度分量时,ctxShift被设置为等于Clip3(0,2,(2×W-1)>>3)。例如,当W是二进分数时,ctxShift被设置为等于Clip3(0,2,(2×W-1)>>3)。在一个示例中,如果H是非二进分数,则可以利用编解码上下文对last_sig_coeff_y_prefix进行编解码/解析。在一个示例中,当针对语法元素last_sig_coeff_y_prefix推导ctxInc时,log2TbHeight被计算为在示例中,log2TbHeight被计算为在一个示例中,当针对语法元素last_sig_coeff_y_prefix推导ctxShift时,当颜色分量是色度分量时,ctxShift被设置为等于Clip3(0,2,(2×H-1)>>3)。例如,当H是二进分数时,ctxShift被设置为等于Clip3(0,2,(2×H-1)>>3)。
示例18
在一个示例中,对last_sig_coeff_x_suffix或last_sig_coeff_y_suffix进行编解码/解析可以取决于W和/或H,例如取决于W和/或H是二进分数还是非二进分数。在一个示例中,last_sig_coeff_x_suffix或last_sig_coeff_y_suffix可以以不同方式进行编解码/解析,这取决于W和/或H是否是非二进分数。例如,如果W是二进分数,则可以根据VVC对last_sig_coeff_x_suffix进行编解码/解析。例如,如果H是二进分数,则可以根据VVC对last_sig_coeff_y_suffix进行编解码/解析。在一个示例中,如果W是非二进分数,则last_sig_coeff_x_suffix可以被编解码/解析为截断二元(TB)码。在示例中,TB所使用的cMax可以基于last_sig_coeff_x_prefix推导出。
在示例中,函数MinInGroup(k)被定义为MinInGroup(k)=(1<<((k>>1)-1))×(2+(k&1))。在示例中,cMax基于MinInGroup(last_sig_coeff_x_prefix)。在示例中,cMax基于MinInGroup(last_sig_coeff_x_prefix+1)。MinInGroup(k)可以存储在由k索引的表中。TB所使用的cMax可以基于W推导出。
TB所使用的cMax可以被推导为V1-V2,其中,V1和/或V2基于W和/或last_sig_coeff_x_prefix推导出。在示例中,V2=MinInGroup(last_sig_coeff_x_prefix)。在示例中,V1=Min(W-1,V3)。在示例中,V3=MinInGroup(last_sig_coeff_x_prefix+1)。在示例中,V3=last_sig_coeff_x_prefix<T1?MinInGroup(last_sig_coeff_x_prefix+1):T2。例如,T1=13,T2=127。在示例中,V3=min(MinInGroup(last_sig_coeff_x_prefix+1),T2)。例如,T2=127。Last_sig_coeff_x_suffix可以被旁路编解码/解析。可以使用至少一个上下文来对last_sig_coeff_x_suffix进行编解码/解析。可以通过一元码、截断一元码、固定长度码、指数哥伦布码或任何其他二值化方法来对last_sig_coeff_x_suffix进行编解码/解析。
在一个示例中,如果H是非二进分数,则last_sig_coeff_y_suffix可以被编解码/解析为截断二元(TB)码。TB所使用的cMax可以基于last_sig_coeff_y_prefix推导出。在示例中,函数MinInGroup(k)被定义为MinInGroup(k)=(1<<((k>>1)-1))×(2+(k&1))。例如,cMax基于MinInGroup(last_sig_coeff_y_prefix)。在示例中,cMax基于MinInGroup(last_sig_coeff_y_prefix+1)。MinInGroup(k)可以存储在由k索引的表中。TB所使用的cMax可以基于H推导出。
TB所使用的cMax可以被推导为V1-V2,其中,V1和/或V2基于H和/或last_sig_coeff_y_prefix推导出。在示例中,V2=MinInGroup(last_sig_coeff_y_prefix)。在示例中,V1=Min(H-1,V3)。在示例中,V3=MinInGroup(last_sig_coeff_y_prefix+1)。在示例中,V3=last_sig_coeff_y_prefix<T1?MinInGroup(last_sig_coeff_y_prefix+1):T2。例如,T1=13,T2=127。在示例中,V3=min(MinInGroup(last_sig_coeff_y_prefix+1),T2)。例如,T2=127。在示例中,last_sig_coeff_y_suffix可以被旁路编解码/解析。在示例中,可以使用至少一个上下文来对last_sig_coeff_y_suffix进行编解码/解析。在示例中,可以通过一元码、截断一元码、固定长度码、指数哥伦布码或任何其他二值化方法来对last_sig_coeff_y_suffix进行编解码/解析。
示例19
在一个示例中,尺寸为W×H的块的系数的扫描顺序可以取决于W和/或H,例如取决于W和/或H是否是(多个)二进分数或(多个)非二进分数。
示例20
在示例中,可以以与二进分数块类似的方式设置用于非二进分数块的允许上下文编解码二进制位的数量,例如,(W×H×7)>>2。在示例中,可以对非二进分数块和二进分数块应用不同的规则。在一个示例中,用于非二进分数块的允许上下文编解码二进制位的数量可以被设置为其中,M和N为整数。
示例21
在一个示例中,数组{Ak}用于对最后非零系数的位置进行编解码。在以下讨论中,沿x轴或y轴,最后位置的坐标C由前缀p(称为last_sig_coeff_x_prefix或last_sig_coeff_y_prefix)和后缀s(称为last_sig_coeff_x_suffix或last_sig_coeff_y_suffix)表示。
示例22
在一个示例中,如果分别表示当前块的宽度和高度的W或H中的至少一个是非二进分数的,则使用{Ak}来对最后非零系数的位置进行编解码。
示例23
在一个示例中,{Ak}用于将C的可能值分成组。
示例24
在一个示例中,{Ak}被推导为
示例25
在一个示例中,{Ak}={0,1,2,3,4,6,8,12,16,24,32,48,64,96,…}。
示例26
在一个示例中,p的最大允许值MaxP被设置为满足Ak≤(D-1)<Ak+1的k,其中D对于x轴或y轴分别是W或H。
示例27
在一个示例中,MaxP可以从由D或D的函数索引的表T中获取。例如,MaxP=T[D-1]。例如,T={0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,…}。
示例28
在一个示例中,s是在p之后用信令通知的。在一个示例中,仅当p>3时才用信令通知s。在一个示例中,Ap+1-Ap-1是s的最大允许值。
图17是示出其中可以实施本文所公开的各种技术的示例视频处理***1700的框图。各种实施方式可以包括***1700的组件中的一些或全部。***1700可以包括用于接收视频内容的输入1702。视频内容可以以原始或未压缩格式(例如,8或10比特多分量像素值)接收,或者可以以压缩或编码格式接收。输入1702可以表示网络接口、***总线接口或存储接口。网络接口的示例包括有线接口,比如以太网、无源光网络(PON)等,以及无线接口,比如Wi-Fi或蜂窝接口。
***1700可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件1704。编解码组件1704可以降低从输入1702到编解码组件1704的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件1704的输出可以被存储,或者经由所连接的通信来传输,如组件1706所表示的。在输入1702处接收的视频的所存储或传送的比特流(或经编解码的)表示可以由组件1708使用,以生成被发送到显示接口1710的像素值或可显示视频。从比特流表示生成用户可观看的视频的过程有时称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是应当理解,编解码工具或操作在编码器处使用,并且反转编解码结果的对应解码工具或操作将由解码器执行。
***总线接口或显示接口的示例可以包括通用串行总线(USB)或高清晰度多媒体接口(HDMI)或Displayport等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,比如移动电话、膝上型计算机、智能电话或能够执行数字数据处理和/或视频显示的其他设备。
图18是示例视频处理装置1800的框图。装置1800可以用于实施本文描述的方法中的一种或多种。装置1800可以体现在智能电话、平板电脑、计算机、物联网(IoT)接收器等中。装置1800可以包括一个或多个处理器1802、一个或多个存储器1804以及视频处理电路1806。(多个)处理器1802可以被配置为实施本文档中描述的一种或多种方法。(多个)存储器1804可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理电路1806可以用于在硬件电路中实施本文档中描述的一些技术。在一些实施例中,视频处理电路1806可以至少部分地包括在处理器1802(例如,图形协处理器)中。
图19是视频处理的示例方法1900的流程图。方法1900包括在步骤1902中基于W是否是非二进分数的并且基于H是否是非二进分数的来确定具有W和H的残差块中的最后有效系数的位置。在步骤1904中,基于块中最后有效系数的位置在视觉媒体数据与比特流之间执行转换。例如,步骤1902可以包括选择要使用的等式和/或算法,如关于示意图1600所述的。步骤1904然后可以包括例如通过采用由等式和/或算法确定的结果来在编码器处执行视频编码或在解码器处执行视频解码。
应当注意,方法1900可以在用于处理视频数据的装置中实施,该装置包括处理器和其上具有指令的非暂时性存储器,比如视频编码器2100、视频解码器2200和/或编码器2300。在这种情况下,这些指令在由处理器执行时使处理器执行方法1900。进一步地,方法1900可以由包括供视频编解码设备使用的计算机程序产品的非暂时性计算机可读介质来执行。该计算机程序产品包括存储在非暂时性计算机可读介质上的计算机可执行指令,使得当由处理器执行时使得视频编解码设备执行方法1900。
图20是图示了可以利用本公开的技术的示例视频编解码***2000的框图。如图20所示,视频编解码***2000可以包括源设备2010和目标设备2020。源设备2010生成经编码的视频数据,其可以被称为视频编码设备。目标设备2020可以对由源设备2010生成的经编码的视频数据进行解码,其可以被称为视频解码设备。
源设备2010可以包括视频源2012、视频编码器2014以及输入/输出(I/O)接口2016。视频源2012可以包括诸如视频捕获设备、从视频内容提供者接收视频数据的接口、和/或用于生成视频数据的计算机图形***等源、或此类源的组合。视频数据可以包括一个或多个图片。视频编码器2014对来自视频源2012的视频数据进行编码以生成比特流。比特流可以包括形成视频数据的经编解码的表示的比特序列。比特流可以包括经编解码的图片以及相关联的数据。经编解码图片是图片的经编解码的表示。相关联的数据可以包括序列参数集、图片参数集和其他语法结构。I/O接口2016可以包括调制器/解调器(调制解调器)和/或发射器。可以经由I/O接口2016通过网络2030将经编码的视频数据直接传输到目标设备2020。经编码的视频数据还可以存储在存储介质/服务器2040上以供目标设备2020访问。
目标设备2020可以包括I/O接口2026、视频解码器2024以及显示设备2022。I/O接口2026可以包括接收器和/或调制解调器。I/O接口2026可以从源设备2010或存储介质/服务器2040获取经编码的视频数据。视频解码器2024可以对经编码的视频数据进行解码。显示设备2022可以向用户显示经解码的视频数据。显示设备2022可以与目标设备2020集成在一起,或者可以在可以被配置为与外部显示设备进行接口连接的目标设备2020的外部。
视频编码器2014和视频解码器2024可以根据视频压缩标准操作,比如高效视频编解码(HEVC)标准、多功能视频编解码(VVM)标准和其他当前和/或进一步的标准。
图21是图示了视频编码器2100的示例的框图,该视频编码器可以是图20中图示的***2000中的视频编码器2014。视频编码器2100可以被配置为执行本公开的技术中的任一者或全部。在图21的示例中,视频编码器2100包括多个功能组件。本公开中描述的技术可以在视频编码器2100的各个组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的技术中的任一者或全部。
视频编码器2100的功能组件可以包括分割单元2101、预测单元2102、残差生成单元2107、变换处理单元2108、量化单元2109、逆量化单元2110、逆变换单元2111、重构单元2112、缓冲器2113和熵编码单元2114,该预测单元可以包括模式选择单元2103、运动估计单元2104、运动补偿单元2105、帧内预测单元2106。
在其他示例中,视频编码器2100可以包括更多、更少或不同的功能组件。在示例中,预测单元2102可以包括帧内块复制(IBC)单元。IBC单元可以在IBC模式中执行预测,在该模式中,至少一个参考图片是当前视频块所在的图片。
此外,诸如运动估计单元2104和运动补偿单元2105等一些组件可以是高度集成的,但是出于解释的目的而在图21的示例中分开表示。
分割单元2101可以将图片分割成一个或多个视频块。视频编码器2100和视频解码器2200可以支持各种视频块大小。
模式选择单元2103可以例如基于错误结果而选择帧内或帧间编解码模式中的一者,并且将所得的经帧内或帧间编解码的块提供到残差生成单元2107以生成残差块数据,并且提供到重构单元2112以重构经编码的块以用作参考图片。在一些示例中,模式选择单元2103可以选择组合帧内和帧间预测(CIIP)模式,其中,该预测是基于帧间预测信号和帧内预测信号。模式选择单元2103还可以在帧间预测的情况下选择块的运动向量的分辨率(例如,子像素或整数像素精度)。
为了对当前视频块执行帧间预测,运动估计单元2104可以通过将来自缓冲器2113的一个或多个参考帧与当前视频块进行比较来生成当前视频块的运动信息。运动补偿单元2105可以基于来自缓冲器2113的除与当前视频块相关联的图片之外的图片的运动信息和经解码的样点来确定当前视频块的所预测的视频块。
运动估计单元2104和运动补偿单元2105可以例如取决于当前视频块是在I条带、P条带还是B条带中而针对当前视频块执行不同操作。
在一些示例中,运动估计单元2104可以对当前视频块执行单向预测,并且运动估计单元2104可以在列表0或列表1的参考图片中搜索当前视频块的参考视频块。运动估计单元2104可以接着生成指示列表0或列表1中包含参考视频块的参考图片的参考索引和指示当前视频块与参考视频块之间的空域位移的运动向量。运动估计单元2104可以输出参考索引、预测方向指示符和运动向量作为当前视频块的运动信息。运动补偿单元2105可以基于由当前视频块的运动信息指示的参考视频块而生成当前块的所预测的视频块。
在其他示例中,运动估计单元2104可以对当前视频块执行双向预测,运动估计单元2104可以在列表0中的参考图片中搜索当前视频块的参考视频块,并且还可以在列表1中的参考图片中搜索当前视频块的另一参考视频块。运动估计单元2104可以接着生成指示列表0和列表1中包含参考视频块的参考图片的参考索引和指示参考视频块与当前视频块之间的空域位移的运动向量。运动估计单元2104可以输出当前视频块的参考索引和运动向量作为当前视频块的运动信息。运动补偿单元2105可以基于由当前视频块的运动信息指示的参考视频块而生成当前视频块的所预测的视频块。
在一些示例中,运动估计单元2104可以输出运动信息的全集以用于解码器的解码处理。在一些示例中,运动估计单元2104可以不输出当前视频的运动信息的全集。相反,运动估计单元2104可以参考另一视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元2104可以确定当前视频块的运动信息与相邻视频块的运动信息足够相似。
在一个示例中,运动估计单元2104可以在与当前视频块相关联的语法结构中指示一个值,该值向视频解码器2200指示当前视频块具有与另一视频块相同的运动信息。
在另一示例中,运动估计单元2104可以在与当前视频块相关联的语法结构中标识另一视频块和运动向量差(MVD)。运动向量差指示当前视频块的运动向量与所指示的视频块的运动向量之间的差。视频解码器2200可以使用所指示的视频块的运动向量和运动向量差来确定当前视频块的运动向量。
如上所述,视频编码器2100可以预测性地信令通知运动向量。可以由视频编码器2100实施的预测性信令通知技术的两个示例包括高级运动向量预测(AMVP)和合并模式信令通知。
帧内预测单元2106可以对当前视频块执行帧内预测。当帧内预测单元2106对当前视频块执行帧内预测时,帧内预测单元2106可以基于同一图片中的其他视频块的经解码的样点生成当前视频块的预测数据。当前视频块的预测数据可以包括所预测的视频块和各种语法元素。
残差生成单元2107可以通过从当前视频块减去当前视频块的所预测的(多个)视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括与当前视频块中的样点的不同样点分量相对应的残差视频块。
在其他示例中,例如,在跳过模式中,对于当前视频块,可能不存在当前视频块的残差数据,并且残差生成单元2107可以不执行减法操作。
变换处理单元2108可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块而生成当前视频块的一个或多个变换系数视频块。
在变换处理单元2108生成与当前视频块相关联的变换系数视频块之后,量化单元2109可以基于与当前视频块相关联的一个或多个量化参数(QP)值来量化与当前视频块相关联的变换系数视频块。
逆量化单元2110和逆变换单元2111可以分别对变换系数视频块应用逆量化和逆变换,以从变换系数视频块重构残差视频块。重构单元2112可以将重构的残差视频块添加到来自由预测单元2102生成的一个或多个所预测的视频块的对应样点以产生与当前块相关联的重构的视频块以供存储在缓冲器2113中。
在重构单元2112重构视频块之后,可以执行环路滤波操作以减少视频块中的视频块效应伪影。
熵编码单元2114可以从视频编码器2100的其他功能组件接收数据。当熵编码单元2114接收数据时,熵编码单元2114可以执行一个或多个熵编码操作以生成经熵编码的数据并输出包括经熵编码的数据的比特流。
图22是图示了视频解码器2200的示例的框图,该视频解码器可以是图20中图示的***2000中的视频解码器2024。
视频解码器2200可以被配置为执行本公开的技术中的任一者或全部。在图22的示例中,视频解码器2200包括多个功能组件。本公开中描述的技术可以在视频解码器2200的各个组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的技术中的任一者或全部。
在图22的示例中,视频解码器2200包括熵解码单元2201、运动补偿单元2202、帧内预测单元2203、逆量化单元2204、逆变换单元2205、重构单元2206和缓冲器2207。在一些示例中,视频解码器2200可以执行大体上与关于视频编码器2100(图21)描述的编码遍次互逆的解码遍次。
熵解码单元2201可以检索经编码的比特流。经编码的比特流可以包括经熵编解码的视频数据(例如,视频数据的经编码的块)。熵解码单元2201可以对经熵编解码的视频数据进行解码,并且运动补偿单元2202可以从经熵解码的视频数据确定运动信息,包括运动向量、运动向量精度、参考图片列表索引和其他运动信息。运动补偿单元2202可以例如通过执行AMVP和合并模式来确定这样的信息。
运动补偿单元2202可以产生经运动补偿的块,从而可能基于插值滤波器执行插值。将与子像素精度一起使用的插值滤波器的标识符可以包括在语法元素中。
运动补偿单元2202可以使用如由视频编码器2100在对视频块进行编码期间使用的插值滤波器来计算参考块的子整数像素的插值。运动补偿单元2202可以根据所接收的语法信息确定由视频编码器2100使用的插值滤波器,并且使用该插值滤波器来产生预测性块。
运动补偿单元2202可以使用语法信息中的一些来确定用于对经编码的视频序列的(多个)帧和/或(多个)条带进行编码的块的大小、描述经编码的视频序列的图片的每个宏块如何被分割的分割信息、指示每个分割如何被编码的模式、每一经帧间编解码的块的一个或多个参考帧(和参考帧列表)、以及用于对经编码的视频序列进行解码的其他信息。
帧内预测单元2203可以使用例如在比特流中接收的帧内预测模式来从空域邻近块形成预测块。逆量化单元2204逆量化(即,去量化)在比特流中提供且由熵解码单元2201解码的经量化视频块系数。逆变换单元2205应用逆变换。
重构单元2206可以将残差块与由运动补偿单元2202或帧内预测单元2203生成的对应预测块求和以形成经解码的块。如果需要,还可以应用去块滤波器来对经解码的块进行滤波以便去除成块效应伪影。经解码的视频块接着被存储在缓冲器2207中,其提供用于后续运动补偿/帧内预测的参考块且还产生经解码的视频以供呈现在显示设备上。
图23是示例编码器2300的示意图。编码器2300适合于实施VVC的技术。编码器2300包括三个环路内滤波器,即,去块滤波器(DF)2302、样点自适应偏移(SAO)2304和自适应环路滤波器(ALF)2306。与使用预定义滤波器的DF 2302不同,SAO 2304和ALF 2306利用当前图片的原始样点,通过添加偏移并通过应用有限脉冲响应(FIR)滤波器来减少原始样点与重构的样点之间的均方误差,其中,经编解码的边信息信令通知偏移及滤波器系数。ALF2306位于每个图片的最后处理阶段,并且可以被认为是试图捕捉和修复由先前阶段产生的伪影的工具。
编码器2300进一步包括帧内预测组件2308和运动估计/补偿(ME/MC)组件2310,这些组件被配置为接收输入视频。帧内预测组件2308被配置为执行帧内预测,而ME/MC组件2310被配置为利用从参考图片缓冲器2312获得的参考图片来执行帧间预测。来自帧间预测或帧内预测的残差块被馈送到变换(T)组件2314和量化(Q)组件2316中以生成经量化的残差变换系数,该经量化的残差变换系数被馈送到熵编解码组件2318中。熵编解码组件2318对预测结果和经量化的变换系数进行熵编解码,并且将其朝向视频解码器(未示出)传输。从量化组件2316输出的量化分量可以被馈送到逆量化(IQ)组件2320、逆变换组件2322和重构(REC)组件2324中。REC组件2324能够将图像输出至DF 2302、SAO 2304和ALF 2306,以在这些图像被存储在参考图片缓冲器2312中之前进行滤波。
接下来提供一些示例优选的解决方案的列表。
以下解决方案示出了本文讨论的技术的示例。
1.一种视频处理方法(例如,图19中描绘的方法1900),所述方法包括:对于视频的视频块与所述视频的比特流之间的转换,根据规则确定用于对所述视频块的残差进行编解码的编解码组(CG);以及基于所述确定来执行所述转换,其中,所述规则指定,由于所述视频块是非二进分数的,因此所述CG的大小取决于所述视频块的大小;其中,所述视频块包括W×H个样点,其中,所述CG包括w×h个样点。
2.根据解决方案1所述的方法,其中,所述规则指定W或H等于k×N,其中,k为大于0的整数,并且N为大于1的整数。
3.根据解决方案1所述的方法,其中,所述规则指定W>=w且H>=h。
4.根据解决方案1所述的方法,其中,所述规则指定w和/或h等于2k,其中,k为大于或等于0的整数。
5.根据解决方案1所述的方法,其中,取决于W%M是否等于0,所述规则指定w等于M。
6.根据解决方案1所述的方法,其中,取决于H%M是否等于0,所述规则指定h等于M。
7.一种视频处理方法,包括:对于视频的视频块与所述视频的比特流之间的转换,根据规则确定所述视频块的残差的最后有效系数的位置;以及基于所述确定执行所述转换,其中,所述视频块包括W×H个样点;其中,所述规则指定取决于W或H是否是二进分数。
8.根据解决方案7所述的方法,其中,所述规则指定在W是非二进分数的情况下使用编解码上下文来指示所述最后有效系数的x位置。
9.根据解决方案7至8所述的方法,其中,所述规则指定在H是非二进分数的情况下使用编解码上下文来指示所述最后有效系数的y位置。
10.根据解决方案7所述的方法,其中,所述规则指定取决于W或H是否是二进分数的以及W或H是否是非二进分数的而以不同方式对所述位置进行编解码。
11.一种视频处理方法,包括:对于视频的视频块与所述视频的比特流之间的转换,根据规则确定用于对所述视频块的残差进行编解码的扫描顺序;以及基于所述确定执行所述转换,其中,所述视频块包括W×H个样点;其中,所述规则指定取决于W或H。
12.根据解决方案11所述的方法,其中,所述规则取决于W或H是否是二进分数的。
13.一种视频处理方法,包括:在视频的视频块与所述视频的比特流之间执行转换;其中,所述视频块具有非二进分数尺寸;其中,所述比特流符合某种格式规则;其中,所述格式规则指定用于对具有所述非二进分数尺寸的视频块进行编解码的允许上下文编解码二进制位的数量。
14.根据解决方案13所述的方法,其中,所述格式规则指定所述允许上下文编解码比特的数量等于用于对具有二进分数尺寸的视频块进行编解码的上下文编解码比特的数量。
15.根据解决方案13所述的方法,其中,所述格式规则指定所述允许上下文编解码比特的数量不同于用于对具有二进分数尺寸的视频块进行编解码的上下文编解码比特的数量。
16.根据解决方案13所述的方法,其中,所述数量等于其中,M和N为整数,并且W和H是所述视频块的宽度和高度。
17.根据解决方案13所述的方法,其中,所述数量等于其中,M和N为整数,并且W和H是所述视频块的宽度和高度。
18.根据解决方案1至17中任一项所述的方法,其中,所述转换包括从所述视频生成所述比特流。
19.根据解决方案1至17中任一项所述的方法,其中,所述转换包括从所述比特流生成所述视频。
20.一种在计算机可读介质上存储比特流的方法,包括根据解决方案1至19中的任意一项或多项所述的方法生成比特流,并且将所述比特流存储在所述计算机可读介质上。
21.一种其上存储有视频比特流的计算机可读介质,所述比特流在被视频解码器的处理器处理时使所述视频解码器生成所述视频,其中,所述比特流是根据解决方案1至19中一项或多项所述的方法生成的。
22.一种视频解码装置,包括被配置为实施根据解决方案1至20中的一项或多项所述的方法的处理器。
23.一种视频编码装置,包括被配置为实施根据解决方案1至20中的一项或多项所述的方法的处理器。
24.一种计算机程序产品,具有存储在其上的计算机代码,所述代码在由处理器执行时使所述处理器实施根据解决方案1至20中任一项所述的方法。
25.一种计算机可读介质,其上存储有根据解决方案1至20中任一项生成的符合某种比特流格式的比特流。
26.一种方法、装置、根据本文档中描述的所公开的方法或***生成的比特流。
在本文描述的解决方案中,编码器可以通过根据格式规则产生经编解码的表示来符合格式规则。在本文描述的解决方案中,解码器可以使用格式规则来解析经编解码的表示中的语法元素,并根据格式规则了解语法元素的存在和不存在,以产生经解码的视频。
在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,可以在从视频的像素表示到对应的比特流表示的转换期间应用视频压缩算法,反之亦然。当前视频块的比特流表示可以例如对应于在比特流内共同定位或分布在不同位置的比特,如由语法定义的。例如,可以根据经变换和编解码的误差残差值并且还使用标头中的比特和比特流中的其他字段来对宏块进行编码。此外,在转换期间,解码器可以解析比特流,并基于确定来了解一些字段可能存在或不存在,如以上解决方案中所描述的。类似地,编码器可以确定要包括或不包括的某些语法字段,并且通过从经编解码的表示中包括或排除语法字段来相应地生成经编解码的表示。
本文档中描述的公开的和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本文档中公开的结构及其结构等效物,或者在它们中的一者或多者的组合中实施。所公开的和其他的实施例可以被实施为一个或多个计算机程序产品,即,在计算机可读介质上编码的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组成、或者它们中的一者或多者的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,该装置可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理***、操作***或它们中的一者或多者的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码以便传输到合适的接收器装置。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序不一定对应于文件***中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所讨论的程序的单个文件中、或者存储在多个协同文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机上执行,或者在位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。
本文档中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。这些过程和逻辑流程还可以由专用逻辑电路来执行,并且装置还可以被实施为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于执行计算机程序的处理器包括例如通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或者可操作地耦合到用于存储数据的一个或多个大容量存储设备,以从其接收数据或向其传送数据,或者两者。然而,计算机不需要具有这种设备。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如,半导体存储器设备,例如,可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及压缩盘只读存储器(CD ROM)和数字多功能盘只读存储器(DVD-ROM)盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
虽然本专利文档包含许多细节,但是这些细节不应被解释为对任何主题的范围或可能要求保护的范围的限制,而是应被解释为对可能特定于特定技术的特定实施例的特征的描述。在本专利文档中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单一实施例的背景下描述的不同特征也可以被单独的或以任何合适的子组合的方式实现在多个实施例中。此外,尽管特征可以在上面被描述为在某些组合中起作用并且甚至最初被这样要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中被去除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应当被理解为要求以所示的特定顺序或以连续顺序执行此类操作,或者要求执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种***组件的分离不应当被理解为在所有实施例中都需要此类分离。
仅描述了一些实施方式和示例,并且可以基于本专利文档中所描述和图示的内容来做出其他实施方式、增强和变化。
当在第一组件与第二组件之间不存在除线、迹线或另一介质之外的任何中间组件时,第一组件直接耦合到第二组件。当在第一组件与第二组件之间存在除线、迹线或另一介质之外的中间组件时,第一组件间接耦合到第二组件。术语“耦合”及其变体包括直接耦合和间接耦合。除非另有说明,否则术语“约”的使用表示包括后面的数字的±10%的范围。
尽管本公开中已经提供了若干实施例,但是应当理解,所公开的***和方法可以以许多其他具体形式体现,而不脱离本公开的精神或范围。本文的示例应被认为是说明性的而非限制性的,其意图不限于本文给出的细节。例如,各种元件或组件可以组合或集成在另一***中,或者某些特征可以被省略或不实施。
另外,在不脱离本公开的范围的情况下,各个实施例中描述和图示为分立或单独的技术、***、子***和方法可以与其他***、模块、技术或方法进行组合或集成。被示出或讨论为耦合的其他项可以直接连接或者可以通过一些接口、设备或中间组件(无论是电的、机械的还是其他方式)间接耦合或通信。本领域技术人员可以确定变化、替代和更改的其他示例,并且可以在不脱离本文公开的精神和范围的情况下做出这些变化、替代和更改。
Claims (20)
1.一种用于处理视频数据的方法,所述方法包括:
基于宽度(W)是否是非二进分数的并且基于高度(H)是否是非二进分数的来确定具有W和H的残差块中最后有效系数的位置;以及
基于所述块中所述最后有效系数的位置在视觉媒体数据与比特流之间执行转换。
2.根据权利要求1所述的方法,其中,所述最后有效系数的位置表示为水平位置前缀(last_sig_coeff_x_prefix)、水平位置后缀(last_sig_coeff_x_suffix)、垂直位置前缀(last_sig_coeff_y_prefix)、垂直位置前缀(last_sig_coeff_y_suffix)或其组合,并且其中,last_sig_coeff_x_prefix和last_sig_coeff_x_suffix是基于W确定的,并且last_sig_coeff_y_prefix和last_sig_coeff_y_suffix是基于H确定的。
3.根据权利要求1至2中任一项所述的方法,其中,所述最后有效系数的位置被包括在具有索引(k)的表示为{Ak}的数组(A)中。
4.根据权利要求1至3中任一项所述的方法,其中,当W和H中的至少一个是非二进分数的时,所述最后有效系数的位置被包括在表示为{Ak}的数组中。
5.根据权利要求1至4中任一项所述的方法,其中,{Ak}将所述最后有效系数的位置坐标值(C)分成组。
6.根据权利要求1至5中任一项所述的方法,其中,{Ak}被推导为:
7.根据权利要求1至6中任一项所述的方法,其中,{Ak}被表示为{Ak}={0,1,2,3,4,6,8,12,16,24,32,48,64,96,…}。
8.根据权利要求1至7中任一项所述的方法,其中,所述最后有效系数的位置被表示为水平分量和垂直分量,并且其中,所述水平分量和所述垂直分量各自被表示为前缀(p)和后缀(s)。
9.根据权利要求1至8中任一项所述的方法,其中,所述垂直分量的p的最大前缀值(MaxP)被设置为满足Ak≤(D-1)<Ak+1的k值,其中,D是所述块的H。
10.根据权利要求1至9中任一项所述的方法,其中,所述水平分量的p的MaxP被设置为满足Ak≤(D-1)<Ak+1的k值,其中,D是所述块的W。
11.根据权利要求1至10中任一项所述的方法,其中,MaxP被包括在根据D索引的表(T)中,其中,D是所述块的W或所述块的H。
12.根据权利要求1至11中任一项所述的方法,其中,T由D索引。
13.根据权利要求1至12中任一项所述的方法,其中,T由D-1索引。
14.根据权利要求1至13中任一项所述的方法,其中,T被表示为T={0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,…}。
15.根据权利要求1至14中任一项所述的方法,其中,每个s都包括在所述比特流中的每个对应的p之后。
16.根据权利要求1至15中任一项所述的方法,其中,仅当对应的p大于三时,规则才允许在所述比特流中包括s。
17.根据权利要求1至16中任一项所述的方法,其中,当对应的p为三或更少时,规则阻止在比特流中包括s。
18.根据权利要求1至17中任一项所述的方法,其中,s的最大允许值被表示为Ap+1–Ap–1,其中,A是由p索引的数组。
19.一种非暂时性计算机可读介质,包括供视频编解码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非暂时性计算机可读介质上的计算机可执行指令,使得当由处理器执行时使所述视频编解码设备执行权利要求1至18所述的方法。
20.一种用于处理视频数据的装置,所述装置包括:处理器;以及其上具有指令的非暂时性存储器,其中,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-18所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2021/129785 | 2021-11-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118266216A true CN118266216A (zh) | 2024-06-28 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10848788B2 (en) | Multi-type-tree framework for video coding | |
JP7382951B2 (ja) | 復元されたビデオデータにデブロッキングフィルタを適用するためのシステム及び方法 | |
CN112243587B (zh) | 基于块的自适应环路滤波器(alf)设计和信令通知 | |
US9832467B2 (en) | Deblock filtering for intra block copying | |
CN113615189A (zh) | 在视频译码中具有自适应参数集(aps)的基于块的自适应环路滤波器(alf) | |
JP7265040B2 (ja) | 変換スキップ・モードのブロック寸法設定 | |
JP2024023581A (ja) | パレット・エスケープ・シンボルのためのエントロピーコーディング | |
US20240048701A1 (en) | Boundary Handling for Coding Tree Split | |
US20240040119A1 (en) | Interaction of multiple partitions | |
US20240031565A1 (en) | Intra-Prediction on Non-dyadic Blocks | |
CN110730349B (zh) | 用于微块的约束 | |
WO2023082484A1 (en) | Array based residual coding on non-dyadic blocks | |
CN118266216A (zh) | 非二进分数块的基于数组的残差编解码 | |
WO2022179404A1 (en) | Residual coding on non-dyadic blocks | |
WO2022171071A1 (en) | Video decoder initialization information signaling | |
WO2022213920A1 (en) | Partition signaling in video coding | |
WO2022213988A1 (en) | Duplicate partitioning prevention | |
US20230396812A1 (en) | Unsymmetric Binary Tree Partitioning and Non-dyadic Blocks | |
US20240022722A1 (en) | Neighbor based partitioning constraints | |
WO2022179414A1 (en) | Transform and quantization on non-dyadic blocks | |
US20240022721A1 (en) | Constraints on partitioning of video blocks | |
WO2023020569A1 (en) | Intra-prediction on non-dyadic blocks | |
WO2022174762A1 (en) | Transforms on non-dyadic blocks | |
JP7513693B2 (ja) | ルマ・イントラ・モード・シグナリング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |