CN107105248B - 视频数据的变换单位的子集的编解码的方法、设备和系统 - Google Patents

视频数据的变换单位的子集的编解码的方法、设备和系统 Download PDF

Info

Publication number
CN107105248B
CN107105248B CN201710083014.8A CN201710083014A CN107105248B CN 107105248 B CN107105248 B CN 107105248B CN 201710083014 A CN201710083014 A CN 201710083014A CN 107105248 B CN107105248 B CN 107105248B
Authority
CN
China
Prior art keywords
subset
decoding
rice
parameter
module
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.)
Active
Application number
CN201710083014.8A
Other languages
English (en)
Other versions
CN107105248A (zh
Inventor
沃洛迪米尔·科勒斯尼科夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from AU2012202182A external-priority patent/AU2012202182B2/en
Application filed by Canon Inc filed Critical Canon Inc
Publication of CN107105248A publication Critical patent/CN107105248A/zh
Application granted granted Critical
Publication of CN107105248B publication Critical patent/CN107105248B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供视频数据的变换单位的子集的编解码的方法、设备和系统。公开了一种用于使用Golomb‑Rice解码对编码视频数据的变换单位(例如,400)进行解码的方法。确定变换单位的子集的有效残差系数。选择变换单位的子集的Golomb‑Rice解码的预定Rice参数。在所确定的有效残差系数的数量高于预定阈值的情况下,预定Rice参数相对于零设置存在偏移。使用预定Rice参数作为Golomb‑Rice解码的初始参数来对变换单位的子集进行解码。

Description

视频数据的变换单位的子集的编解码的方法、设备和系统
技术领域
本发明通常涉及数字视频信号处理,尤其涉及用于对视频数据的变换单位的子集进行编码和解码的方法、设备和系统。
背景技术
当前存在包括用于传输和存储视频数据的应用程序的视频编码所用的许多应用程序。还开发了许多视频编码标准并且其它视频编码标准当前正在开发中。视频编码标准化的最新进展已导致形成被称为“针对视频编码的联合专家小组”(JCT-VC)的组。该针对视频编码的联合专家小组(JCT-VC)包括已知为视频编码专家组(VCEG)的国际电信联盟(ITU)的电信标准化部门(ITU-T)的研究组16、问题6(SG16/Q6)的成员、以及还已知为运动图片专家组(MPEG)的国际标准化组织/国际电工委员会联合技术委员会1/小组委员会29/工作组11(ISO/IEC JTC1/SC29/WG11)的成员。
针对视频编码的联合专家小组(JCT-VC)的目标是产生新的视频编码标准以显著优于目前现有的已知为“H.264/MPEG-4 AVC”的视频编码标准。该H.264/MPEG-4 AVC标准本身是针对诸如MPEG-4和ITU-T H.263等的以前的视频编码标准的大幅改进。已将开发中的新视频编码标准命名为“高效率视频编码(HEVC)”。针对视频编码的联合专家小组JCT-VC还考虑由于针对高效率视频编码(HEVC)所提出的技术而产生的、在对该标准的实现进行缩放从而以高分辨率或高帧频进行工作的情况下产生困难的各种实现挑战。
H.264/MPEG-4 AVC视频编码标准呈现在对用以表示视频数据的残差系数进行编码的情况下实现高压缩效率的困难。
视频数据由帧序列构成,其中各帧具有样本的二维阵列。通常,帧包括一个亮度(luma)通道和两个色度(chroma)通道。通常使用诸如YUV等的颜色空间来表示颜色信息,其中Y是亮度通道并且UV是两个色度通道。诸如YUV等的颜色空间给出了如下优点:大部分帧内容包含在亮度通道中,并且UV通道中所存储的相对较少量的内容足以重建彩色帧。还可以将色度通道下采样为感知质量损失可忽略的较低的空间分辨率。
已知为4:2:0的通常使用的色度格式使得各色度通道具有垂直和水平方向的分辨率的一半。将各帧分解成最大编码单位(LCU)的阵列。这些最大编码单位(LCU)具有诸如64个亮度样本等的、边尺寸是2的幂且宽度和高度相等的固定大小。编码树使得能够将各最大编码单位(LCU)子分割成四个编码单位(CU),其中各编码单位(CU)的宽度和高度是母最大编码单位(LCU)的宽度和高度的一半。可以将各编码单位(CU)进一步子分割成相等大小的四个编码单位(CU)。可以递归地应用这种子分割处理,直到达到最小编码单位(SCU)大小为止,从而使得能够将编码单位(CU)向下定义为最小支持大小。将最大编码单位递归子分割成编码单位的层级结构具有四叉树结构并且被称为编码树。将该子分割处理作为被编码为二进制数(bin)的标志序列而在通信位流中编码。因此,编码单位具有正方形形状。
在没有进行进一步子分割的编码树中存在一组编码单位,从而占据编码树的叶节点。在这些编码单位中存在变换树。变换树还可以使用如编码树所使用的四叉树结构来对编码单位进行分解。在变换树的叶节点处,使用变换单位(TU)来对残差数据进行编码。与编码树相对比,变换树可以将编码单位子分割成具有非正方形形状的变换单位。此外,变换树结构不要求变换单位(TU)占据母编码单位所提供的所有区域。
将编码树的叶节点处的各编码单位子分割成各自已知为预测单位(PU)的预测数据样本的一个或多个阵列。各预测单位(PU)包含通过应用帧内预测或帧间预测处理所推导出的输入视频帧数据的一部分的预测。
可以使用几种方法来对编码单位(CU)内的预测单位(PU)进行编码。一个预测单位(PU)可能占据编码单位(CU)的整个区域,或者编码单位(CU)可能在水平方向或垂直方向上被分割成相等大小的两个矩形预测单位(PU)。另外,可以将编码单位(CU)分割成相等大小的四个正方形预测单位(PU)。
视频编码器通过将视频数据转换成句法元素序列来将视频数据压缩成位流。使用与在MPEG4-AVC/H.264视频压缩标准中所定义的算术编码方案相同的算术编码方案,在开发中的高效率视频编码(HEVC)标准内定义上下文自适应二进制算术编码(CABAC)。在开发中的高效率视频编码(HEVC)标准中,在上下文自适应二进制算术编码(CABAC)处于使用中的情况下,将各句法元素表示为二进制数序列。对各二进制数进行旁路编码或算术编码。使用二进制数同等可能为0或1的旁路编码。在这种情况下,不存在可实现的进一步压缩。对于概率分布不相等的二进制数使用算术编码。各算术编码二进制数与已知为“上下文(context)”的信息相关联。上下文包含可能的二进制数值(‘valMPS’)和概率状态(映射到可能的二进制数值的估计概率的整数)。根据句法元素创建包括旁路编码二进制数和算术编码二进制数的组合的这种二进制数序列已知为“二进制数产生(binarising)”句法元素。
在视频编码器或视频解码器中,由于各二进制数可使用单独的上下文信息,因此二进制数的上下文选择提供了用以改进编码效率的方式。特别地,可以通过选择特定二进制数来改进编码效率,以使得来自使用关联的上下文信息的二进制数的先前示例的统计特性与二进制数的当前示例的统计特性相关。这种上下文选择频繁地利用空间本地信息以确定最佳上下文。
在开发中的高效率视频编码(HEVC)标准和H.264/MPEG-4 AVC中,基于来自其它帧或者来自先前解码后的当前块内的邻接区域的参考样本数据来推导针对当前块的预测。该预测和期望样本数据之间的差已知为残差。该残差的频域表示是残差系数的二维阵列。按照惯例,二维阵列的左上角包含表示低频信息的残差系数。
在典型的视频数据中,样本值的大部分变化是逐渐的,这导致低频信息在残差内占主导。这表明位于二维阵列的左上角的残差系数的量值较大。
发明内容
本发明的目的是大致克服或至少改进现有配置的一个或多个缺点。
根据本发明的一个方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的方法,所述方法包括以下步骤:
确定所述变换单位的子集的有效残差系数;
选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的设备,所述设备包括:
用于确定所述变换单位的子集的有效残差系数的部件;
用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中在所确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码的部件。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包括用于进行以下操作的指令:
确定所述变换单位的子集的有效残差系数;
选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码。
根据本发明的另一方面,提供一种记录有计算机程序的计算机可读介质,所述计算机程序用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程序包括以下代码:
用于确定所述变换单位的子集的有效残差系数的代码;
用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中在所确定的有效残差系数的数量高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码的代码。
根据本发明的另一方面,提供一种用于对视频数据流进行解码以确定解码视频数据流中的当前残差系数的值的方法,所述方法包括以下步骤:
从所述视频数据流接收残差系数的变换单位;
确定所述变换单位的当前残差系数的位置;
在所述当前残差系数在所述变换单位中的位置大于预定阈值的情况下,使用无依赖性的Golomb-Rice解码对所述当前残差系数进行解码,其中所述无依赖性的Golomb-Rice使用预定Golomb-Rice值;
在所述当前残差系数在所述变换单位中的位置小于所述预定阈值的情况下,使用针对当前系数的基于依赖性的Golomb-Rice解码对所述当前残差系数进行解码,其中所述基于依赖性的Golomb-Rice解码使用先前解码残差系数值以选择Golomb-Rice值;以及
使用所选择的Golomb-Rice解码值来确定所述当前残差系数的值。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的方法,所述方法包括以下步骤:
确定所述变换单位的量化参数;
确定所述变换单位的子集的有效残差系数;
选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的设备,所述设备包括:
用于确定所述变换单位的子集的有效残差系数的部件;
用于确定所述变换单位的量化参数的部件;
用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中在所确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码的部件。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包括用于进行以下操作的指令:
确定所述变换单位的子集的有效残差系数;
确定所述变换单位的量化参数;
选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码。
根据本发明的另一方面,提供一种记录有计算机程序的计算机可读介质,所述计算机程序用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程序包括以下代码:
用于确定所述变换单位的子集的有效残差系数的代码;
用于确定所述变换单位的量化参数的代码;
用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中在所确定的量化参数低于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码的代码。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的方法,所述方法包括以下步骤:
确定所述变换单位的量化参数;
确定所述变换单位的宽度和高度;
确定所述变换单位的子集的有效残差系数;
选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的设备,所述设备包括:
用于确定所述变换单位的子集的有效残差系数的部件;
用于确定所述变换单位的量化参数的部件;
用于确定所述变换单位的宽度和高度的部件;
用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的部件,其中在所确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码的部件。
根据本发明的另一方面,提供一种用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,并且用于执行所述计算机程序,所述计算机程序包括用于进行以下操作的指令:
确定所述变换单位的子集的有效残差系数;
确定所述变换单位的量化参数;
确定所述变换单位的宽度和高度;
选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数,其中在所确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码。
根据本发明的另一方面,提供一种记录有计算机程序的计算机可读介质,所述计算机程序用于使用Golomb-Rice解码对编码视频数据的变换单位进行解码,所述计算机程序包括以下代码:
用于确定所述变换单位的子集的有效残差系数的代码;
用于确定所述变换单位的量化参数的代码;
用于确定所述变换单位的宽度和高度的代码;
用于选择所述变换单位的子集的Golomb-Rice解码的预定Rice参数的代码,其中在所确定的量化参数低于或等于预定阈值、所述宽度大于预定阈值且所述高度高于预定阈值的情况下,所述预定Rice参数相对于零设置存在偏移;以及
用于使用所述预定Rice参数作为所述Golomb-Rice解码的初始参数来对所述变换单位的子集进行解码的代码。
还公开了其它方面。
附图说明
现在将参考以下附图来说明本发明的至少一个实施例,其中:
图1是示出视频编码器的功能模块的示意框图;
图2是示出视频解码器的功能模块的示意框图;
图3A和3B形成可以分别实践图1的编码器和图2的解码器的通用计算机系统的示意框图;
图4A和4B示出示例变换单位的空间结构;
图5是示出示例变换单位的句法元素结构的示意框图;
图6A是示出对变换单位(TU)进行编码的方法的示意框图;
图6B是示出对变换单位(TU)进行解码的方法的示意流程图;
图7是示出图5的示例变换单位的子集的句法元素结构的示意框图;
图8A是示出对变换单位的子集进行编码的方法的示意流程图;
图8B是示出对变换单位的子集进行解码的方法的示意流程图;
图9是示出利用Golomb-Rice(哥伦布-莱斯)码字的残差系数的二进制表示的表;
图10是示出利用阶次为零的指数Golomb码字的残差系数的二进制表示的表;
图11是示出用于基于Golomb-Rice参数的当前值和先前残差系数的值来确定Golomb-Rice参数的值的查找表的表;
图12A是示出对残差系数进行编码的方法的示意流程图;
图12B是示出对残差系数进行解码的方法的示意流程图;
图13是示出用于确定如用于使用Golomb-Rice解码对残差系数进行解码的方法所使用的参数K的值的方法的示意流程图;
图14A示出用于针对变换单位(TU)的子集对其余的残差系数量值进行解码的二值化器;
图14B示出用于针对变换单位(TU)的子集对其余的残差系数量值进行解码的另一二值化器;以及
图15示出另一示例变换单位。
具体实施方式
在任一个或多个附图中参考具有相同附图标记的步骤和/或特征的情况下,除非出现相反意图,否则这些步骤和/或特征是为了本说明书的目的而具有相同的功能或操作。
可以通过二值化方案来使用在残差系数的二维阵列的左上角占主导的低频信息的特性,以使残差系数在位流中的大小最小。
二值化的一个方面是选择上下文以用于对与各个标志相对应的句法元素进行编码。一个标志可以使用一个以上的上下文。确定哪个上下文应当用于标志的特定示例依赖于其它已可用的信息并且已知为“上下文建模”。上下文建模是选择最准确地表示标志的当前示例的统计特性的上下文的处理。例如,频繁地,标志的值受到同一标志的邻接示例的值所影响,其中在这种情况下,可以基于标志的邻接示例的值来选择上下文。由于大部分帧信息包含在亮度通道中,因此相对于色度通道,上下文建模经常针对亮度通道使用单独的上下文。然而,由于两个色度通道的统计特性相对相似,因此通常在色度通道之间共用上下文。
高效率视频编码(HEVC)测试模型的版本6(“HM-6.0”)将变换单位(TU)分割成多个子集并且对各子集中的残差系数进行两遍扫描。第一遍对将残差系数的状态表示为非零值(有效)或零值(无效)的标志进行编码。该数据已知为有效性映射。第二遍对已知为系数等级的有效残差系数的量值和符号进行编码。
所提供的扫描模式使得能够将残差系数的二维阵列扫描成一维阵列。在HM-6.0中,使用所提供的扫描模式来对有效性映射和系数等级这两者进行处理。通过使用所提供的扫描模式扫描有效性映射,可以确定最末有效系数在二维有效性映射中的位置。扫描模式可以是水平的、垂直的或对角的。
HM-6.0提供针对(还已知为具有正方形形状和非正方形形状这两者的变换单位(TU)的)残差块的支持。各变换单位(TU)包含一组残差系数。具有相等大小的边尺寸的残差块已知为正方形变换单位(TU),并且具有不等大小的边尺寸的残差块已知为非正方形变换单位(TU)。
HM-6.0中所支持的变换单位(TU)的大小是4×4、8×8、16×16、32×32、4×16、16×4、8×32和32×8。通常针对亮度样本说明变换单位(TU)的大小。然而,在使用4:2:0的色度格式的情况下,各色度样本占据2×2个亮度样本的区域。因此,扫描变换单位(TU)以对色度残差数据进行编码使用了水平尺寸和垂直尺寸的一半的扫描模式,诸如针对4×4亮度残差块的2×2等。为了对残差系数进行扫描和编码的目的,将16×16、32×32、4×16、16×4、8×32和32×8的变换单位(TU)分割成多个子块、即大小为4×4的变换单位(TU)扫描的下层,其中在HM-6.0内存在相应的映射。
在HM-6.0中,上述变换单位(TU)大小的子块与变换单位(TU)中的子集位于同一位置处。在另一实现中,子集可能与大小不同于上述子块的大小的子块不位于同一位置处。将位于一个子块内并排配置的有效性映射的一部分内的所设置的有效系数标志称为有效系数组。
对于16×16、32×32、4×16、16×4、8×32和32×8的变换单位(TU),有效性映射编码利用两级扫描。上级扫描进行诸如后向对角左下扫描等的扫描,以编码或推断表示各子块的有效系数组的标志。在这些子块内,进行诸如后向对角左下扫描等的扫描,以针对具有1值的有效系数组标志的子块来编码有效系数标志。对于16×16变换单位(TU),使用4×4上级扫描。对于32×32变换单位(TU),使用8×8上级扫描。对于16×4、4×16、32×8和8×32的变换单位(TU)大小,分别使用4×1、1×4、8×2和2×8的上级扫描。
在各变换单位(TU)中,可以将残差系数数据编码在位流中。各“残差系数”是表示频域(DCT)的变换单位内的图像特征并且在该变换单位内占据独特位置的数字。变换单位是可以在空间域和频域之间进行变换的残差数据样本的块。在频域中,变换单位(TU)将残差数据样本编码为残差系数数据。按二(2)的幂来确定变换单位的边尺寸的大小(针对“亮度”通道为4个样本~32个样本、并且针对“色度”通道为2个样本~16个样本)。变换单位(TU)树的叶节点可以包含变换单位(TU)、或者在不需要残差系数数据的情况下可以什么也不包含。
由于变换单位的空间表示是残差数据样本的二维阵列,因此如以下详细所述,根据诸如改进的离散余弦变换(DCT)等的变换所得的频域表示还是残差系数的二维阵列。变换单位(TU)内的典型样本数据的频谱特性使得频域表示与空间表示相比更加紧凑。此外,变换单位(TU)中典型的较低频率的频谱信息的占主导导致了较大值的残差系数向着变换单位(TU)的表示低频残差系数的左上方聚集。
可以使用改进的离散余弦变换(DCT)或改进的离散正弦变换(DST)来实现残差变换。残差变换的实现被配置为支持所需的各变换单位(TU)大小。在视频编码器中,对来自残差变换的残差系数进行缩放和量化。该缩放和量化使残差系数的量值缩小,由此导致以降低图像质量为代价来缩小编码在位流中的数据的大小。
在进行残差变换之后,进行量化处理。量化处理的目的是通过降低残差系数的量值的精度来实现较高的压缩率。量值精度的该降低是有损处理,因而会对视觉质量产生影响。利用量化参数(QP)来控制精度降低的等级。该参数的值越高,视觉质量所受到的影响越大。可以通过使用如以下所述的delta-qp句法元素,针对变换单位(TU)等级来修改量化参数。
开发中的高效率视频编码(HEVC)标准正寻求视频数据的高效率压缩。可以使用估计和统计数据分析来实现视频数据的高效率压缩。开发中的高效率视频编码(HEVC)标准正寻求以高的位率对视频数据进行编码或解码。开发中的高效率视频编码(HEVC)标准中所采用的上下文自适应二进制算术编码(CABAC)方案支持被称为“旁路编码”的“等概率”运算模式。在该模式中,二进制数不与来自上下文模型的上下文相关联,因而不存在上下文模型更新步骤。在这种模式中,假定对各二进制数进行旁路编码从而提高吞吐量,则可以并行地从位流读取多个相邻二进制数。例如,硬件实现可以并行地进行相邻旁路编码数据的组的写入/读取,以提高对位流进行编码/解码的吞吐量。
图1是示出视频编码器100的功能模块的示意框图。图2是示出相应的视频解码器200的功能模块的示意框图。如图3A和3B所示,可以使用通用计算机系统300来实现视频编码器100和视频解码器200,其中可以利用计算机系统300内的专用硬件、利用计算机系统300内可执行的软件、或者可选地利用专用硬件和计算机系统300内可执行的软件的组合来实现各种功能模块。
如图3A所示,计算机系统300包括:计算机模块301;诸如键盘302、鼠标指示器装置303、扫描器326、照相机327和麦克风380等的输入装置;以及包括打印机315、显示装置314和扬声器317的输出装置。计算机模块301可以使用外部调制器-解调器(调制解调器)收发器装置316来经由接线321与通信网络320进行通信。通信网络320可以是广域网(WAN),诸如因特网、蜂窝电信网络或私有WAN等。在接线321是电话线的情况下,调制解调器316可以是传统的“拨号上网”调制解调器。可选地,在接线321是高容量(例如,线缆)接线的情况下,调制解调器316可以是宽带调制解调器。还可以使用无线调制解调器来进行向着通信网络320的无线连接。
计算机模块301通常包括至少一个处理器单元305和存储器单元306。例如,存储器单元306可以具有半导体随机存取存储器(RAM)和半导体只读存储器(ROM)。计算机模块301还包括多个输入/输出(I/O)接口,其中这多个输入/输出(I/O)接口包括:音频-视频接口307,其连接至视频显示器314、扬声器317和麦克风380;I/O接口313,其连接至键盘302、鼠标303、扫描器326、照相机327以及可选的操纵杆或其它人机接口装置(未示出);以及外部调制解调器316和打印机315所用的接口308。在一些实现中,调制解调器316可以内置于计算机模块301内、例如内置于接口308内。计算机模块301还具有本地网络接口311,其中该本地网络接口311允许计算机系统300经由接线323连接至已知为局域网(LAN)的局域通信网络322。如图3A所示,局域通信网络322还可以经由接线324连接至广域网320,其中该局域通信网络322通常包括所谓的“防火墙”装置或具有相似功能的装置。本地网络接口311可以包括以太网(EthernetTM)电路卡、蓝牙(BluetoothTM)无线配置或IEEE 802.11无线配置;然而,对于接口311,可以实践多种其它类型的接口。
I/O接口308和313可以提供串行连接和并行连接中的任一个或这两者,其中前者通常根据通用串行总线(USB)标准来实现并且具有相应的USB连接器(未示出)。设置有存储装置309,并且存储装置309通常包括硬盘驱动器(HDD)310。还可以使用诸如软盘驱动器和磁带驱动器(未示出)等的其它存储装置。通常设置有光盘驱动器312以用作数据的非易失性源。作为向着系统300的数据的适当源,可以使用例如光盘(例如,CD-ROM、DVD、蓝光盘(Blu-ray DiscTM))、USB-RAM、便携型外部硬盘驱动器和软盘等的便携型存储器装置。通常,HDD 310、光盘驱动器312、网络320和322或者照相机327中的任意均可用于针对要编码的视频数据的源,或者连同显示器314一起用于要存储或再现的解码视频数据的目的地。
计算机模块301的组件305~313通常经由互连总线304并且以得到相关领域技术人员已知的计算机系统300的传统操作模式的方式进行通信。例如,处理器305使用接线318连接至系统总线304。同样,存储器306和光盘驱动器312通过接线319连接至系统总线304。可以实践所述配置的计算机的示例包括IBM-PC和兼容机、Sun Sparcstation、Apple MacTM或相似的计算机系统。
在适当或期望的情况下,可以使用计算机系统300来实现编码器100和解码器200以及以下所述的方法,其中可以将编码器100和解码器200以及要说明的处理作为计算机系统300内可执行的一个或多个软件应用程序333来实现。特别地,利用在计算机系统300内执行的软件333中的指令331(参见图3B)来实现编码器100、解码器200和所述方法的各步骤。可以将软件指令331形成为各自用于进行一个或多个特定任务的一个或多个代码模块。还可以将软件分割成两个单独部分,其中第一部分和相应的代码模块进行所述方法,并且第二部分和相应的代码模块管理第一部分和用户之间的用户界面。
例如,可以将软件存储在包括以下所述的存储装置的计算机可读介质中。将软件从计算机可读介质载入计算机系统300,然后由计算机系统300来执行。记录有这种软件或计算机程序的计算机可读介质是计算机程序产品。优选地,在计算机系统300中使用该计算机程序产品实现了用于实现编码器100、解码器200和所述方法的有利设备。
通常将软件333存储在HDD 310或存储器306中。将该软件从计算机可读介质载入计算机系统300,并且由计算机系统300来执行。因而,例如,可以将软件333存储在光盘驱动器312所读取的光学可读盘存储介质(例如,CD-ROM)325上。
在一些示例中,将应用程序333以编码在一个或多个CD-ROM 325上并且经由相应的驱动器312进行读取的方式供给至用户,或者可选地,可以由用户从网络320或322读取应用程序333。此外,还可以将软件从其它计算机可读介质载入计算机系统300。计算机可读存储介质是指将所记录的指令和/或数据提供至计算机系统300以供执行和/或处理的任何非瞬态有形存储介质。这种存储介质的示例包括软盘、磁带、CD-ROM、DVD、蓝光盘、硬盘驱动器、ROM或集成电路、USB存储器、磁光盘、或者诸如PCMCIA卡等的计算机可读卡等,而与这些装置在计算机模块301的内部还是外部无关。还可以参与将软件、应用程序、指令和/或视频数据或编码视频数据提供至计算机模块301的瞬态或非有形计算机可读传输介质的示例包括:无线电或红外线传输通道及向着其它计算机或联网装置的网络接线、以及包括电子邮件发送和网站上所记录的信息等的因特网或内联网等。
可以执行上述的应用程序333的第二部分和相应的代码模块来实现要渲染或呈现在显示器314上的一个或多个图形用户界面(GUI)。通过典型地对键盘302和鼠标303进行操作,计算机系统300的用户和应用程序可以以在功能上可适应的方式对界面进行操作,以将控制命令和/或输入提供至与这些GUI相关联的应用程序。还可以实现在功能上可适应的其它形式的用户界面,诸如利用经由扬声器317所输出的语音提示和经由麦克风380所输入的用户声音命令的音频界面等。
图3B是处理器305和“存储器”334的详细示意框图。存储器334表示图3A中的计算机模块301可以访问的(包括HDD 309和半导体存储器306的)所有存储器模块的逻辑聚合。
在初始对计算机模块301通电的情况下,上电自检(power-on self-test,POST)程序350执行。通常将POST程序350存储在图3A的半导体存储器306的ROM 349中。有时将诸如存储有软件的ROM 349等的硬件装置称为固件。POST程序350检查计算机模块301内的硬件以确保适当工作,并且通常检查处理器305、存储器334(309,306)和通常还存储在ROM 349中的基本输入-输出系统软件(BIOS)模块351,以进行正确操作。一旦POST程序350成功运行,BIOS 351启动图3A的硬盘驱动器310。启动硬盘驱动器310使得经由处理器305执行驻留在硬盘驱动器310上的引导装入程序352。这样将操作系统353载入RAM存储器306,其中在该RAM存储器306上,操作系统353开始工作。操作系统353是处理器305可执行的系统级应用程序,以实现包括处理器管理、存储器管理、装置管理、存储管理、软件应用程序接口和通用用户界面等的各种高级功能。
操作系统353管理存储器334(309,306),以确保计算机模块301上运行的各处理或应用程序具有在不会与分配至其它处理的内存冲突的情况下执行的充足内存。此外,必须适当使用图3A的系统300中可用的不同类型的存储器,以使得各处理可以高效地运行。因此,聚合存储器334并不意图例示如何分配存储器的特定区段(除非另外说明),而是提供计算机系统300可访问的存储器的概述图以及如何使用该存储器。
如图3B所示,处理器305包括多个功能模块,其中这多个功能模块包括控制单元339、运算逻辑单元(ALU)340和有时称为高速缓冲存储器的本地或内部存储器348。高速缓冲存储器348在寄存器区段中通常包括多个存储寄存器344~346。一个或多个内部总线341从功能上使这些功能模块相互连接。处理器305通常还具有用于使用接线318来经由系统总线304与外部装置进行通信的一个或多个接口342。存储器334使用接线319连接至总线304。
应用程序333包括可以包含条件分支指令和循环指令的指令序列331。程序333还可以包括执行程序333时所使用的数据332。将指令331和数据332分别存储在存储器位置328、329、330和335、336、337中。根据指令331和存储器位置328~330的相对大小,如存储器位置330中示出的指令所描述的,可以将特定指令存储在单个存储器位置中。可选地,如存储器位置328和329中示出的指令段所描述的,可以将指令分割成各自被存储在单独的存储器位置中的多个部分。
通常,向处理器305赋予一组指令,其中在该处理器305内执行该组指令。处理器305等待下一输入,其中处理器305通过执行另一组指令来对该下一输入作出反应。可以从一个或多个源提供各输入,其中该输入包括一个或多个输入装置302、303所生成的数据、从外部源经由网络320、302其中之一所接收到的数据、从存储装置306、309其中之一所检索到的数据或者从插入相应的读取器312内的存储介质325所检索到的数据(所有这些组件均在图3A中示出)。执行一组指令在一些情况下可能会导致输出数据。执行还可能涉及将数据或变量存储至存储器334。
编码器100、解码器200和所述方法使用存储在存储器334内的相应存储器位置355、356、357中的输入变量354。编码器100、解码器200和所述方法产生存储在存储器334内的相应存储器位置362、363、364中的输出变量361。可以将中间变量358存储在存储器位置359、360、366和367中。
参考图3B的处理器305,寄存器344、345、346、运算逻辑单元(ALU)340和控制单元339一起工作以进行微操作序列,其中这些微操作序列是针对构成程序333的指令集中的每个指令进行“提取、解码和执行”周期所需的。各提取、解码和执行周期包括以下操作:
(a)提取操作,用于从存储器位置328、329、330提取或读取指令331;
(b)解码操作,其中在该解码操作中,控制单元339判断提取了哪个指令;以及
(c)执行操作,其中在该执行操作中,控制单元339和/或ALU 340执行该指令。
之后,可以执行针对下一指令的进一步提取、解码和执行周期。同样,可以进行存储周期,其中在该存储周期中,控制单元339将值存储至或写入存储器位置332。
要说明的处理中的各步骤或子处理与程序333的一个或多个区段相关联,并且通过处理器305中的寄存器部344、345、347、ALU 340和控制单元339一起工作以针对程序333的所述区段的指令集中的每个指令进行提取、解码和执行周期,来进行各步骤或子处理。
可选地,可以在诸如进行所述方法的功能或子功能的一个或多个集成电路等的专用硬件中实现编码器100、解码器200和所述方法。这种专用硬件可以包括图形处理器、数字信号处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者一个或多个微处理器和关联存储器。
如上所述,可以将视频编码器100作为驻留在硬盘驱动器310上并且由处理器305控制其执行的软件应用程序333的一个或多个软件代码模块来实现。特别地,视频编码器100包括各自可以作为软件应用程序333的一个或多个软件代码模块来实现的模块102~112、114和115。
尽管图1的视频编码器100是高效率视频编码(HEVC)视频解码流水线的示例,但模块102~112、114和115所进行的处理阶段对于诸如VC-1或H.264/MPEG-4AVC等的其它视频编解码器是共通的。视频编码器100接收未编码的帧数据101作为包括亮度样本和色度样本的一系列帧。视频编码器100将帧数据101的各帧分割成例如可表示为编码单位(CU)树的编码单位(CU)的层级集合。
视频编码器100通过从多路复用器模块110输出已知为预测单位(PU)120的预测数据样本的阵列来进行工作。差模块115输出预测单位(PU)120和从帧数据101所接收到的数据样本的相应阵列之间的差,其中该差已知为残差数据样本122。
来自差模块115的残差数据样本122被变换模块102接收到,其中该变换模块102将该差从空间表示转换为频域表示,以针对变换树中的各变换单位(TU)创建变换系数124。针对开发中的高效率视频编码(HEVC)标准,使用改进的离散余弦变换(DCT)来实现向着频域表示的转换,其中在该改进的离散余弦变换中,对传统的DCT进行修改以使用移位和加法来实现。然后将变换系数124输入至缩放和量化模块103,并且进行缩放和量化以产生残差系数126。该缩放和量化处理导致精度损失。
将残差系数126视为向着逆缩放模块105的输入,其中该逆缩放模块105反转缩放和量化模块103所进行的缩放以产生作为残差系数126的重新缩放版本的重新缩放变换系数128。还将残差系数126视为向着熵编码器模块104的输入,其中该熵编码器模块104将残差系数编码在编码位流113中。由于缩放和量化模块103所引起的精度损失,因此重新缩放变换系数128与原始变换系数124不一致。然后,将来自逆缩放模块105的重新缩放变换系数128输出至逆变换模块106。逆变换模块106进行从频域向着空间域的逆变换,以产生与在解码器处所产生的空间域表示相同的重新缩放变换系数128的空间域表示130。
运动估计模块107通过将帧数据101与配置在存储器306内的帧缓冲器模块112中所存储的先前帧数据进行比较来产生运动矢量132。然后将这些运动矢量132输入至运动补偿模块108,其中该运动补偿模块108考虑到源自于运动矢量132的空间偏移,通过对帧缓冲器模块112中所存储的样本进行滤波来产生帧间预测的参考样本134。尽管图1没有示出,但还将运动矢量132作为句法元素传递至熵编码器模块104以编码在编码位流113中。帧内预测模块109使用从求和模块114获得的样本138来产生帧内预测的参考样本136,其中该求和模块114对多路复用器模块110的输出120和来自逆变换模块106的输出130进行求和。
可以使用帧内预测或帧间预测方法来对预测单位(PU)进行编码。根据由此得到的编码位流113的期望位率和由于帧内预测或帧间预测方法而引入的图像质量失真量之间的率失真权衡来判断是使用帧内预测还是帧间预测。如果使用帧内预测,则还根据率失真权衡,从一组可能模式中选择一个帧内预测模式。针对各预测单位选择一个帧内预测模式。
多路复用器模块110根据利用尽管未示出但本领域内众所周知的控制逻辑所确定的当前预测模式142,来选择来自帧内预测模块109的帧内预测的参考样本136或来自运动补偿块108的帧间预测的参考样本134。还将预测模式142提供至熵编码器104,并且如此使用该预测模式142来确定或建立如将说明的变换单位的扫描顺序。帧间预测仅使用对角扫描顺序,而帧内预测可以使用对角扫描、水平扫描或垂直扫描顺序。
求和模块114产生总和138,其中将该总和138输入至去块滤波器模块111。去块滤波器模块111沿着块边界进行滤波,从而产生写入存储器306内所配置的帧缓冲器模块112的去块样本140。帧缓冲器模块112是具有用以保持来自多个过去帧的数据以供将来参考的充足容量的缓冲器。
在视频编码器100中,通过求出输入帧数据101的数据样本和输入帧数据101的数据样本的预测120之间的差来确定一个变换单位(TU)内的残差数据样本122。该差提供变换单位(TU)的残差系数的空间表示。将变换单位(TU)的残差系数转换成二维有效性映射。
然后,按已知为扫描顺序的特定顺序来扫描变换单位(TU)中的残差系数的有效性映射,以形成被称为有效系数标志的列表的标志值的一维列表。可以描述该扫描顺序,或者可以通过诸如利用预测模式142从帧内预测模块109所接收到的扫描模式等的扫描模式来指定该扫描顺序。扫描模式可以是水平、垂直、对角或折线的。
高效率视频编码(HEVC)测试模型的版本6(即,“HE_6.0”)进行后向方向上的扫描。然而,还可以进行前向方向上的扫描。在HEVC参考模型版本6.0(即,“HE_6.0”)中,扫描操作开始最末有效系数之后(其中,“之后”是在残差系数的后向扫描的方向上)的一个残差系数,并且继续直到到达有效性映射的左上位置为止。具有该特性并且符合HEVC参考模型版本6.0的扫描操作已知为“后向扫描”。在HEVC参考软件版本6.0(即,“HE_6.0”)中,通过对变换单位(TU)中的系数的坐标进行编码来用信号通知最末有效系数的位置。该上下文中的形容词“最末”的使用依赖于扫描的特定顺序。根据一个扫描模式可以作为“最末的”非零残差系数或相应的1值有效系数标志的内容根据其它扫描模式可能不是“最末的”。
将表示最末有效系数之前的各残差系数的有效性的有效系数标志的列表编码在位流中。由于针对最末有效系数标志的位置的先前编码隐含表示该残差系数是有效的,因此不要求将最末有效系数标志值明确编码在位流中。
较大值的残差系数向着变换单位(TU)的左上方的聚集导致列表中较早的大部分有效性标志是有效的,而稍后在列表中发现较少的有效性标志。
如上所述,视频编码器100还包括实现熵编码方法的熵编码器模块104。熵编码器模块104根据从缩放和量化模块103接收到的传入残差系数数据(或残差系数)126产生句法元素。熵编码器模块104输出编码位流113,并且以下将更详细地进行说明。对于开发中的高效率视频编码(HEVC)标准,将编码位流113描绘成网络抽象层(NAL)单位。帧的各片包含在一个NAL单位中。
针对熵编码器模块104中所实现的熵编码方法,存在几个替代方案。开发中的高效率视频编码(HEVC)标准支持上下文自适应二进制算术编码(CABAC),其中在H.264/MPEG-4AVC中发现上下文自适应二进制算术编码(CABAC)的变形。替代的熵编码方案已知为概率区间划分熵(PIPE)编码器。
对于支持多个视频编码方法的视频编码器100,根据编码器100的结构来选择所支持的熵编码方法其中之一。此外,在对来自各帧的编码单位进行编码时,熵编码器模块104编写编码位流113,以使得各帧具有一个或多个片,其中各片包含该帧的一部分的图像数据。针对每帧产生一个片,这样减少了与描述各片边界相关联的开支。然而,还可以将帧分割成多个片。
可以将图2的视频解码器200作为驻留在硬盘驱动器310上并且由处理器305来控制其执行的软件应用程序333的一个或多个软件代码模块来实现。特别地,视频解码器200包括各自可以作为软件应用程序333的一个或多个软件代码模块来实现的模块202~208和210。尽管参考高效率视频编码(HEVC)视频解码流水线来描述视频解码器200,但模块202~208和209所进行的处理阶段对于采用诸如H.264/MPEG-4AVC、MPEG-2和VC-1等的熵编码的其它视频编解码器而言是共通的。
诸如编码位流113等的编码位流被视频解码器200接收到。可以从存储器306、硬盘驱动器310、CD-ROM、蓝光(Blu-rayTM)盘或其它计算机可读存储介质读取编码位流113。可选地,可以从诸如连接至通信网络320的服务器或射频接收器等的外部源来接收编码位流113。编码位流113包含表示要解码的帧数据的编码句法元素。
将编码位流113输入至熵解码器模块202,其中该熵解码器模块202从编码位流113中提取句法元素,并且将这些句法元素的值传递至视频解码器200中的其它块。可以存在诸如参考熵编码器模块104所述等的在熵解码器模块202中所实现的多个熵解码方法。将表示残差系数数据的句法元素数据220传递至逆缩放和变换模块203,并且将表示运动矢量信息的句法元素数据222传递至运动补偿模块204。逆缩放和变换模块203对残差系数数据进行逆缩放以创建重建变换系数。然后,诸如参考逆变换模块106所述的逆变换等,模块203进行逆变换以将重建变换系数从频域表示转换成空间域表示,从而产生残差样本224。
运动补偿模块204将来自熵解码器模块202的运动矢量数据222与来自存储器306内所配置的帧缓冲器块208的先前帧数据226相组合使用,以产生作为输出解码帧数据的预测的针对预测单位(PU)的帧间预测参考样本228。在句法元素表示使用帧内预测对当前编码单位进行编码的情况下,帧内预测模块205使用在空间上邻接预测单位(PU)的样本来产生针对预测单位(PU)的帧内预测的参考样本230。根据从求和模块210输出的总和232来获得在空间上邻接的样本。多路复用器模块206根据利用编码位流113中的句法元素所表示的当前预测模式来选择针对预测单位(PU)的帧内预测参考样本或帧间预测参考样本。利用求和模块210将从多路复用器模块206输出的样本阵列234与来自逆缩放和变换模块203的残差样本224相加,以产生总和232,然后将该总和232分别输入至去块滤波器模块207和帧内预测模块205。与编码器100相对比,帧内预测模块205从熵解码器202接收预测模式236。多路复用器206从熵解码器202接收帧内预测/帧间预测选择信号。去块滤波器模块207沿着数据块边界进行滤波以使沿着数据块边界可见的伪影平滑化。将去块滤波器模块207的输出写入存储器306内所配置的帧缓冲器模块208。帧缓冲器模块208提供用以保持多个解码帧以供将来参考的充足存储量。还从帧缓冲器模块208输出解码帧209。
将参考图4A和图4B来说明示例的变换单位(TU)400的空间结构。
图4A示出示例的变换单位(TU)400。变换单位400具有矩形空间结构并且大小可以为4×4~32×32。变换单位(TU)400的宽度和高度取作为二(2)的整数幂的值。
如上所述,变换单位(TU)保持残差系数。可以定义将变换单位(TU)400分割成一个或多个子集401的集合的两级扫描。根据最末有效系数的位置,除可能包含少于十六(16)个残差系数的按扫描顺序的第一个子集以外,各子集包括按扫描顺序403的十六(16)个连续残差系数。如从图4B看出,示例的变换单位400相对于扫描顺序403具有最末有效系数位置451。
如从图4A看出,在变换单位400的上级处,通过使用诸如后向对角左下扫描等的扫描来扫描各下级,进行扫描。在还已知为“子集级”的变换单位400的下级处,可以使用诸如后向对角左下扫描等的扫描来进行扫描。在变换单位400的上扫描级处,如果下一子集不包含任何有效残差系数,则可以确定不进行下一子集的下级扫描。
变换单位400包含不具有有效残差系数的子集452。在该示例中,可以针对子集452跳过下级扫描步骤,并且高级扫描按扫描顺序403进入下一子集。变换单位400的左上子集405具有子集索引零。其它子集按与扫描顺序相反的顺序具有递增索引。
将参考图5和图7来说明诸如变换单位(TU)400等的变换单位(TU)的句法元素结构。位流113的位流部501包含变换单位(TU)400的句法元素并且包括以下句法元素。
(i)delta_qp 502:delta_qp句法元素502包含与用于对变换单位(TU)400进行量化的量化参数值和预定量化参数值之间的差有关的信息。
(ii)last_significant_xy 503:last_significant_xy句法元素503包含与变换单位(TU)400中的最末有效残差系数的位置有关的信息。
(iii)子集残差系数数据504:子集残差系数数据包括零个或多个块701,并且包含与变换单位(TU)400的残差系数的值有关的信息。
如图7所示,块701包含与变换单位(TU)的一个子集的残差系数的值有关的信息,并且包括以下句法元素。
(i)significant_coeff_group_flag 702:针对各子集对significant_coeff_group_flag句法元素702进行一次编码,并且在“假”的情况下,推断出子集中的所有残差系数为零,并且在块701中不存在残差系数数据703、704、705、706和707。否则(在significant_coeff_group_flag句法元素702为“真”的情况下),子集中的至少一个残差系数具有非零值,并且在块701中存在残差系数数据703、704、705、706和707的一些组合。
(ii)零个或多个significant_coeff_flag值的块703:如果significant_coeff_group_flag 702表示块703的存在,则存在块703。除最末有效残差系数以外,针对子集的每个残差系数在块703中均存在significant_coeff_flag 702的值,以表示给定残差系数的量值是否大于零。
(iii)零个或多个coeff_abs_level_greater1_flag值的块704:如果significant_coeff_group_flag 702表示块704的存在,则存在块704。针对子集的量值被表示为大于零的每个残差系数,在块703中存在coeff_abs_level_greater1_flag值,以表示给定残差系数的量值是否大于1。
(iv)零个或多个coeff_abs_level_greater2_flag值的块705:如果significant_coeff_group_flag 702表示块705的存在,则存在块705。针对子集的量值被表示为大于1的每个残差系数,在块705中存在coeff_abs_level_greater2_flag值,以表示给定残差系数的量值是否大于2。
(v)零个或多个coeff_sign_flag值的块706:如果significant_coeff_group_flag 702表示块706的存在,则存在块706。针对量值被表示为大于零的每个残差系数,在块706中存在coeff_sign_flag值,以表示给定残差系数的算术符号。
(vi)零个或多个coeff_abs_level_remaining值的块707:针对残差系数量值-3的给定值(即,剩余残差系数量值),块707的各coeff_abs_level_remaining值是Golomb-Rice码字。如果significant_coeff_group_flag 702表示块707的存在,则存在块707。针对量值被表示为大于2的各残差系数,在块707中存在coeff_abs_level_remaining值。coeff_abs_level_remaining值针对给定残差系数的剩余残差系数量值,指定Golomb-Rice码字的值。
现在将参考图6A来说明对变换单位(TU)进行编码的方法650。可以将方法650作为编码器100的熵编码器模块104的一部分来实现。如上所述,构成编码器100的软件代码模块102~112、114和115驻留在硬盘驱动器310上,并且由处理器305控制这些模块的执行。
将参考图5的位流部501来以示例方式说明方法650。方法650将delta_qp502、last_significant_xy503和数据504编码在位流部501中。
方法650从对delta-qp值进行编码的步骤651开始,其中在该步骤651中,在处理器305的执行下,利用编码器模块104对delta-qp值进行编码,并且存储在存储器306中。
然后,在对最末有效位置进行编码的步骤652中,在处理器305的执行下,利用编码器模块104将最末有效残差系数的位置编码在位流部501中。可以将位流部501存储在存储器306中。使用最末有效残差系数的位置、变换单位的宽度和高度和与扫描顺序403有关的信息来确定要编码在变换单位(TU)中的子集的数量。
方法650在对子集进行编码的步骤653中继续,其中在该步骤653中,利用编码器模块104对子集数据504进行编码并且存储在存储器306内。
然后,在确定步骤654中,编码器模块104基于与变换单位(TU)中的最末有效残差系数的位置和所使用的扫描顺序403有关的信息,判断是否应将更多子集504编码在位流部501中。如果编码器模块104判断为存在要编码的更多子集504,则方法650返回至对子集进行编码的步骤653。如此,方法650迭代地进行步骤653和654,直到处理了从包含最末有效系数的子集到第一个子集的所有子集为止。否则,方法650结束。
将参考图6B来说明对变换单位(TU)进行解码的方法600。可以将方法600作为解码器200的熵解码器模块202的一部分来实现。如上所述,构成解码器200的软件代码模块202~208和210驻留在硬盘驱动器310上,并且由处理器305控制执行这些模块的执行。
再次,将参考根据方法650进行编码后的图5的位流部501来以示例方式说明方法600。方法600从位流部501解码数据块502、503、504。
该方法从对delta-qp值进行解码的步骤601开始,其中在该步骤601中,在处理器305的执行下,利用解码器模块202确定delta-qp标志的值。可以将delta-qp标志值存储在存储器306中。
然后,在对最末有效位置进行解码的步骤602中,利用解码器模块202确定变换单位(TU)中的最末有效残差系数的位置。使用最末有效残差系数的位置、变换单位的宽度和高度以及与扫描顺序403有关的信息来确定在变换单位(TU)中要解码的子集的数量。
方法600在对子集进行解码的步骤603中继续,其中在该步骤603中,在处理器305的执行下,利用解码器模块202对子集数据504进行解码。可以将解码后的子集数据存储在存储器306内。
然后,在确定步骤604中,解码器模块202基于与变换单位(TU)中的最末有效残差系数的位置和所使用的扫描顺序403有关的信息,来判断是否应从位流部501解码更多子集504。
如果解码器模块202判断为存在要解码的更多子集504,则方法600返回至子集步骤603。否则,方法600结束。
现在将参考图8A来说明对变换单位(TU)的子集进行编码的方法850。可以将方法850作为编码器100的熵编码器模块104的一部分来实现。如上所述,构成编码器100的软件代码模块102~112、114和115驻留在硬盘驱动器310上,并且由处理器305控制这些模块的执行。
将参考图7的块701以示例方式说明方法850。方法850将块702、703、704、705、706、707编码在位流部501中。
方法850从对有效组标志进行编码的步骤851开始,其中在该步骤851中,编码器模块104在处理器305的执行下,对significant_coeff_group_flag 702的值进行编码并将编码值存储在存储器306中。
然后,在步骤852中,如果significant_coeff_group_flag 702的值表示子集包含针对块703、704、705、706、707要编码的数据,则方法850进入步骤853。否则,方法850结束。
在编码步骤853中,编码器模块104在处理器305的执行下,对significant_coeff_flag值的块703进行编码。编码器模块104针对子集的除变换单位(TU)的最末有效残差系数以外的各残差系数,确定一个significant_coeff_flag值。可以将significant_coeff_flag值存储在存储器306中。
然后,在编码步骤854中,编码器模块104对coeff_abs_level_greater1_flag值的块704进行编码。编码器模块104针对子集的量值大于零的各残差系数,确定一个coeff_abs_level_greater1_flag值。可以将编码后的coeff_abs_level_greater1_flag值存储在存储器306中。
在编码步骤855中,编码器模块104对coeff_abs_level_greater2_flag值的块705进行编码。编码器模块104针对子集的量值大于1的各残差系数,确定一个coeff_abs_level_greater2_flag值。可以将编码后的coeff_abs_level_greater2_flag值存储在存储器306中。
然后,在编码步骤856中,编码器模块104在处理器305的执行下,对coeff_sign_flag值的块706进行编码。编码器模块104针对子集的量值大于零的各残差系数,确定一个coeff_sign_flag值。可以将编码后的coeff_sign_flag值存储在存储器306中。
在编码步骤857中,编码器模块104对coeff_abs_level_remaining值的块707进行编码。编码器模块104针对子集的量值大于2的各残差系数,确定一个coeff_abs_level_remaining值。可以将编码后的coeff_abs_level_remaining值存储在存储器306中。在步骤857之后,方法850结束。
将参考图8B来说明对变换单位(TU)的子集进行解码的方法800。可以将方法800作为解码器200的熵解码器模块202的一部分来实现。如上所述,构成解码器200的软件代码模块202~208和210驻留在硬盘驱动器310上,并且由处理器305控制这些模块的执行。
将参考图7的块701来以示例方式说明方法800。方法800从位流部501解码块702、703、704、705、706、707。
方法800从对有效组标志进行解码的步骤801开始,其中在该步骤801中,解码器模块202对significant_coeff_group_flag 702的值进行解码。可以将解码后的significant_coeff_group_flag 702值存储在存储器306中。
然后,在步骤802中,如果解码器模块202判断为significant_coeff_group_flag702的值表示子集包含残差系数数据块703、704、705、706、707,则方法800进入步骤803。否则,方法800结束。
在解码步骤803中,解码器模块202在处理器305的执行下,对significant_coeff_flag值的块703进行解码。解码器模块202针对子集的除变换单位(TU)的最末有效残差系数以外的各残差系数,确定一个significant_coeff_flag值。可以将解码后的significant_coeff_flag值存储在存储器306中。
然后,在解码步骤804中,解码器模块202对coeff_abs_level_greater1_flag值的块704进行解码。解码器模块202针对子集的在步骤803中量值被确定为大于零的各残差系数,确定一个coeff_abs_level_greater1_flag值。可以将解码后的coeff_abs_level_greater1_flag值存储在存储器306中。
在解码步骤805中,解码器模块202在处理器305的执行下,对coeff_abs_level_greater2_flag值的块705进行解码。解码器模块202针对子集的在步骤804中量值被确定为大于1的各残差系数,确定一个coeff_abs_level_greater2_flag值。可以将解码后的coeff_abs_level_greater2_flag值存储在存储器306中。
然后,在解码步骤806中,解码器模块202对coeff_sign_flag值的块706进行解码。解码器模块202针对子集的在步骤803中量值被确定为大于零的各残差系数,确定一个coeff_sign_flag值。可以将coeff_sign_flag值存储在存储器306中。
方法800在步骤807中结束,其中在步骤807中,解码器模块202对coeff_abs_level_remaining值的块707进行解码。解码器模块202针对子集的在步骤805中量值被确定为大于2的各残差系数,确定一个coeff_abs_level_remaining值。同样在步骤807中,解码器模块202针对给定残差系数的剩余残差系数量值,确定Golomb-Rice码字的值。
在步骤807之后,方法800结束。
现在将参考图9、图10、图14A和图14B来说明参数化Golomb-Rice码和这些码在HEVC参考模型版本6.0中的使用以及这里所述的方法。
参数化Golomb-Rice码是用于表示变换单位(TU)的残差系数的剩余残差系数量值的一类通用前缀二进制码。前缀二进制码是每个二进制码字具有唯一前缀的二进制值表示。这种唯一前缀使得能够将特定码字与其它码字区分开,这是唯一地识别这些码字所表示的值所需的。
参数化Golomb-Rice码的各码字可以包括参数化截断Rice前缀部分和可能的空阶次0指数Golomb后缀部分这两部分。截断Rice前缀部分依赖于可能取值0、1、2、3、4的参数K。对于参数K的每个值,定义阈值。如果残差系数剩余量值的编码值小于阈值,则利用无指数Golomb后缀的截断Rice码来对该值进行编码。
如果残差系数剩余量值的编码值等于或大于阈值,则对预定截断Rice码字进行编码,以表示编码值等于或大于阈值。此外,使用阶次0指数Golomb码对与(原始编码值-阈值的值)相等的值进行编码。
如从图9看出,表900包含针对值为0~15且参数K值为0和1的示例截断Rice码字。
如从图10看出,表1000包含示例的阶次0指数Golomb码字。例如,使用具有参数K=0的Golomb-Rice码,将利用构成Golomb-Rice码字“11111111110”的截断Rice前缀“11111111”和阶次0指数Golomb后缀“110”来表示值十(10)。在已知参数K的值的情况下,可以根据给定二进制序列来唯一地识别Golomb-Rice码字。
参数化Golomb-Rice码的每个码字具有依赖于参数K和编码值的固定长度。有限数量的码字可以具有给定长度。如此,对于编码值的集合,利用较短的码字来表示一些编码值,而利用较长的码字来表示其它编码值。对于视频数据编码,可以将码字分配至编码值,从而使编码在位流113中的所有码字的总长度最小。不同的剩余残差系数量值在变换单位(TU)数据中的出现频率不同。可以通过将码字分配至编码值、以使得码字的长度与编码值的出现频率相对应来实现总码字长度的缩减。例如,可以向残差系数剩余量值的更频繁值分配较短的码字,并且可以向频率相同的残差系数剩余量值的值分配长度相同的码字。
参数化Golomb-Rice码的参数K使得能够在要控制的码字中分配码字长度。值较小的参数K将更佳的码字分配至量值较小的值,而值较大的参数K将更佳的码字分配至量值较大的值。因此,为了大体分配最佳码字,所述方法基于残差系数剩余量值的给定值的出现频率来确定参数K的值。
在开发中的HEVC标准中,预先并不知晓诸如剩余残差系数量值的值等的残差系数剩余量值的真实频率,因而在子集内进行参数K值的估计。为了确保参数化Golomb-Rice码字的正确解码,编码器100和解码器200可被配置为使用参数K的相同值来对特定码字进行解码。如此,频率值的估计局限于解码器200处可利用的信息。
频率值的估计可以包括初始估计和自适应这两个阶段。
初始估计阶段针对参数K提供初始估计值。由于正对剩余残差系数量值的值进行解码并且更多信息变得可用于进行分析,因而自适应阶段提供针对参数K的值的进一步校正。
初始估计确保了更佳的码字分配。另一方面,初始估计通常难以以如可利用不对与剩余残差系数量值的值有关的信息进行解码之前那样的高效方式实现。最初确定参数K的估计的高效方法可以提供编码效率方面的大幅改进。
在参数K的初始估计期间,可以检测进一步自适应将不会对参数K的值产生明显影响、因此可以跳过该自适应的情况。自适应阶段大体改进编码效率。然而,对于实际情况的广泛类别,由于初始估计提供参数K的最佳值并且无需进一步的自适应,因此自适应是冗余的。自适应阶段的一个缺点是无法对coeff_abs_level_remaining值的连续值进行并行解码,这是因为在不知晓在先前coeff_abs_level_remaining值的解码之后自适应地估计出的参数K的值的情况下,无法对各值进行解码。
现在将参考图11和图12A来说明对变换单位(TU)的子集的coeff_abs_level_remaining值的块进行编码的方法1250。
可以将方法1250作为编码器100的熵编码器模块104的一部分来实现。如上所述,构成编码器100的软件代码模块102~112、114和115驻留在硬盘驱动器310上,并且由处理器305控制这些模块的执行。
将参考图7的coeff_abs_level_remaining值的块707通过示例来说明方法1250。方法1250将零个或多个coeff_abs_level_remaining值编码在位流部501的块701中。
方法1250从初始化步骤1251开始,其中在该初始化步骤1251中,在处理器305的执行下,利用编码器模块104来初始估计Golomb-Rice参数K。可以将K的初始值存储在存储器306中。此外,在步骤1251中,编码器模块104判断编码期间的参数K自适应的必要性。
然后,在确定步骤1257中,如果编码器模块104判断为需要进行自适应,则方法1250进入步骤1252。以下将更详细地说明自适应确定步骤1257。否则,方法1250进入步骤1255。
在确定步骤1252中,如果编码器模块104判断为存在更多要编码的coeff_abs_level_remaining值,则方法1250进入步骤1253。否则,方法1250结束。
在编码步骤1253中,编码器模块104如以上参考表900和1000所述,根据Golomb-Rice参数K的初始值来将Golomb-Rice码字编码在块707中。
然后,在更新步骤1254中,编码器模块104进行要用于对下一coeff_abs_level_remaining值进行编码的参数K的值的自适应。在步骤1254中,基于参数的当前值Kn和最后解码的coeff_abs_level_remaining值这两个参数来确定参数K的下一值Kn+1。可以使用如图11所示的查找表1100来确定步骤1254。可以将查找表1100存储在存储器306和/或硬盘驱动器310中。查找表1100使用值Kn作为列并使用残差系数量值作为行来提供Kn+1的值。例如,如果参数K的当前值是一(1)并且最后解码的coeff_abs_level_remaining值是十二(12),则参数K的下一值是三(3)。
在确定步骤1255中,如果编码器模块104判断为存在更多要编码的coeff_abs_level_remaining值,则方法1250进入步骤1256。否则,方法1250结束。
在编码步骤1256中,编码器模块104将Golomb-Rice码字编码在块707中并将编码后的Golomb-Rice码字存储在存储器306中。
现在将参考图11和图12B来说明对变换单位(TU)的子集的coeff_abs_level_remaining值的块进行解码的方法1200。根据使用Golomb-Rice解码的方法1200来进行解码。可以将方法1200作为解码器200的熵解码器模块202~208的一部分来实现。如上所述,构成解码器200的软件代码模块202~208和210驻留在硬盘驱动器310上,并且由处理器305控制这些模块的执行。
将参考图7的coeff_abs_level_remaining值的块707通过示例来说明方法1200。方法1200从位流部501的块707解码零个或多个coeff_abs_level_remaining值(即,残差系数剩余量值的值)。
方法1200从初始化步骤1201开始,其中在初始化步骤1201中,在处理器305的执行下,利用解码器模块202初始确定Golomb-Rice参数K。此外,在步骤1201中,解码器模块202确定解码期间的参数K自适应的必要性。步骤1201与步骤1251相同。
然后,在确定步骤1207中,如果解码器模块202判断为需要进行自适应,则如以下将说明的,方法1200进入步骤1202。否则,方法1200进入步骤1205。
然后,在确定步骤1202中,如果解码器模块202判断为存在更多要解码的coeff_abs_level_remaining值,则方法1200进入步骤1203。否则,方法1200结束。
在解码步骤1203中,解码器模块202从存储器306中所存储的块707解码Golomb-Rice码字。
然后,在更新步骤1204中,解码器模块202进行要用于对子集的下一coeff_abs_level_remaining值进行Golomb-Rice解码的参数K的值的自适应。步骤1204中所进行的自适应的过程与以上所述的步骤1254中所使用的自适应的过程相同。
在确定步骤1205中,如果解码器模块202判断为存在更多要解码的coeff_abs_level_remaining值,则方法1200进入步骤1206。否则,方法1200结束。
在解码步骤1206中,解码器模块202使用Golomb-Rice解码来从块707解码Golomb-Rice码字。可以将解码后的Golomb-Rice码字存储在存储器306中。
现在将参考图14A和图14B来说明剩余残差系数量值的自适应和非自适应解码。
图14A示出coeff_abs_level_remaining二值化器1400。可以使用计算机系统300来实现二值化器模块1400,其中在该计算机系统300中,可以利用在计算机系统300内可执行的软件来实现各种功能模块1414、1413、1406、1407和1410。可选地,可以利用计算机系统300内的专用硬件来实现二值化器1400。在又一替代中,可以利用专用硬件和在计算机系统300内可执行的软件的组合来实现二值化器1400。
可以将二值化器1400作为解码器200的解码器模块202的一部分来实现。可选地,还可以将二值化器1400作为编码器100的编码器模块104的一部分来实现。
二值化器1400针对变换单位(TU)的子集,对剩余残差系数量值进行解码。
二值化器1400使用参数K的自适应估计。二值化器1400包括K0的初始估计模块1414,其中该模块1414如上所述进行参数K的初始估计。
模块1413对剩余残差系数量值V0进行解码。模块1413接受所输入的Golomb-Rice码字1402和参数K的初始估计值1401。一旦模块1413完成了解码,则如从图14A看出,输出解码剩余残差系数量值1412。
模块1406基于参数K的初始估计值1401和如上所述利用模块1413进行解码后的值1404来进行参数K值的自适应。
模块1407对剩余残差系数量值V1进行解码。模块1407接受Golomb-Rice码字1403和参数K的估计值1405作为输入。一旦模块1407完成了解码,则输出解码剩余残差系数量值1411。
模块1410基于参数K的先前值1405和利用模块1407进行解码后的值1408来进行参数K值的自适应。
可以利用下一Golomb-Rice解码和自适应模块1415来使用参数K的估计值1409。模块1410依赖于模块1407所提供的数据,而模块1407依赖于模块1406所提供的数据,而模块1406依赖于模块1413所提供的数据。如此,难以并行执行解码模块1413和1410。此外,解码和自适应模块1415也依赖于输入数据1416和参数K的先前估计值这两者。然而,在参数K的值已是最佳的情况下,诸如步骤1406和1410等的自适应步骤不会影响参数K的实际值。避免冗余的自适应步骤可以在不会对编码效率产生大幅影响的情况下提高解码吞吐量。
图14B示出另一coeff_abs_level_remaining二值化器1450。再次,可以使用计算机系统300来实现二值化器模块1450,其中在该计算机系统300中,可以利用在计算机系统300内可执行的软件来实现各种功能模块1414、1413、1406、1407和1410。可选地,可以利用计算机系统300内的专用硬件来实现二值化器1450。在又一替代中,可以利用专用硬件和在计算机系统300内可执行的软件的组合来实现二值化器1450。
再次,可以将二值化器1450作为解码器200的解码器模块202的一部分来实现。可选地,还可以将二值化器1450作为编码器100的编码器模块104的一部分来实现。
二值化器1450不使用参数K的自适应估计。二值化器1450通过针对每个时钟周期对多个残差系数进行解码来实现平行性。
模块1458如上所述进行参数K的初始估计。
模块1454如上所述对剩余残差系数量值V0进行解码。
然后,模块1454接受所输入的Golomb-Rice码字1452和参数K的初始估计值1451。模块1456对剩余残差系数量值V1进行解码。模块1456接受Golomb-Rice码字1453和参数K的初始估计值1451作为输入。
此外,解码模块1460还将接受它们相应的输入Golomb-Rice码字1459和参数K的初始估计值1451。
模块1454、1456和所有其它解码器模块1460不具有任何数据依赖性并且可以并行执行。
现在将参考图13来说明确定用于对变换单位(TU)的子集的coeff_abs_level_remaining值的块进行解码的参数K的值的方法1300。
方法1300由编码器100和解码器200这两者所使用以确保数据的正确解码。如此,可以将方法1300作为编码器100的熵编码器模块104的一部分来实现。此外,可以将方法1300作为解码器200的熵解码器模块202的一部分来实现。
将参考解码器200通过示例来说明方法1300。
方法1300从步骤1301开始,其中在该步骤1301中,解码器模块202在处理器305的执行下,分析针对变换单位(TU)的当前子集和先前解码子集的先前解码信息。可以从存储器306访问针对当前子集的先前解码信息。以下将更详细地说明步骤1301。
然后,在步骤1302中,解码器模块202判断解码是否将使用自适应并且确定参数K的值。以下将更详细地说明步骤1302。
在步骤1303中,利用解码器模块202将步骤1302中所估计出的参数K的值分配至保持参数K的存储器306内所配置的变量。在步骤1303之后,方法1300结束。
在一个实现中,步骤1301可以分析当前子集中的非零残差系数的数量是否大于预定阈值T。如果非零(有效)残差系数的数量大于预定阈值,则向参数K分配偏移值Koffset。该偏移值将导致具有非零值的参数K相对于零偏移了值Koffset。值Koffset可以作为预定值并且设置为一(1)。否则,向参数K分配零设置值Kzero
对于HEVC测试模型6.0(“HM-6.0”),用于作出该决定的阈值T将是十四(14)。参数K的偏移值Koffset将是一(1),并且零设置值Kzero将是零(0)。
在另一实现中,在步骤1301中可以分析量化参数Q的值和当前子集的索引I。在这种实现中,如果量化参数Q的值小于预定阈值TQ并且子集索引I的值小于预定阈值Isubset,则向参数K分配偏移值Koffset。否则,向参数K分配零设置值Kzero
对于HEVC测试模型6.0(“HM-6.0”),用于作出该决定的量化参数TQ的阈值将是十(10),并且用于作出该决定的子集索引Isubset的值将是一(1)。参数K的偏移值Koffset将是一(1)并且零设置值Kzero将是零(0)。
在步骤1301中可以附加地分析变换单位的宽度和高度的值。在这种实现中,如果变换单位的宽度和高度的值大于预定阈值Twidth和Theight,则向参数K分配偏移值Koffset。否则,向参数K分配零设置值Kzero
对于HEVC测试模型6.0(“HM-6.0”),用于作出该决定的变换单位的宽度和高度的阈值Twidth和Theight将是八(8)和八(8)。参数K的偏移值Koffset将是一(1)并且零设置值Kzero将是零(0)。
在步骤1302中,可以基于子集的索引来进行与子集的编码或解码期间使用自适应有关的决定。如果索引等于或大于预定值Imax,则在编码器方法1250的步骤1257和解码器方法1200的步骤1207中,方法进入解码器的步骤1205和编码器的步骤1255,并且不使用参数K的自适应。具有固定的Rice参数K可被视为无依赖性的Golomb-Rice编码或解码。否则,方法进入方法1200的步骤1202和方法1250的步骤1252,并且使用参数K的自适应。具有自适应Rice参数K可被视为基于依赖性的Golomb-Rice编码或解码。
对于HEVC测试模型6.0(“HM-6.0”),索引Imax的阈值将是六(6)。图15示出示例变换单位1500,其中在该变换单位1500中,在步骤1302中使用索引Imax的阈值六(6)以进行与子集的编码或解码期间使用自适应有关的决定。在图15的示例中假定后向对角扫描模式。将变换单位1500分割成诸如子集1510等的16个子集。利用字母“A”或字母“F”来标记图15的每个子集,其中利用字母“A”所标记的子集表示使用自适应Rice参数K进行编码和解码后的子集;而利用“F”所标记的子集表示在步骤1302中对索引Imax使用六(6)的阈值的情况下、使用固定Rice参数K的子集。针对索引Imax的六的值得到使用子集内的自适应Rice参数K的“A”子集。利用字母“F”所标记的子集表示TU 1500内的如下位置中的子集:针对索引Imax的阈值六(6)得到使用固定Rice参数的子集。索引Imax的阈值对于TU 1500中的所有子集相同,并且将TU 1500中的子集的位置与阈值进行比较以判断自适应Rice参数是否要用于进行编码和解码。使用阈值索引Imax的值来选择图15中的自适应子集和固定子集之间的边界。子集顺序从左上方子集1520的零(0)开始,并且按逆向扫描顺序继续作为一(1)的子集1530和作为子集二(2)的子集1540。
在另一实现中,在步骤1302中,可以基于先前编码或解码子集中的大于1的残差系数的数量G1和大于2的残差系数的数量G2来进行与子集的编码或解码期间使用自适应有关的决定。然而,这种方法不适用于不存在先前编码或解码子集的情况。在存在先前编码或解码子集的情况下,如果值(G2–G1)大于预定阈值T21,则在编码器方法1250的步骤1257中(或者在解码器方法1200的步骤1207中),方法1250进入编码器方法1250的步骤1255(或解码器方法1200的步骤1205)并且不使用参数K的自适应。否则,方法1250进入编码器方法1250的步骤1252(或者方法1200进入解码器方法1200的步骤1200)并且使用参数K的自适应。
对于HEVC测试模型6.0,索引的阈值T21将为四(4)。
应用于视频编码器100的情况下的方法1250和1300以及应用于解码器200的方法1200和1300使得能够进行用以实现诸如帧数据101等的帧数据的更高效压缩的实现。所述方法还使得能够进行用以实现对诸如编码位流113等的编码位流进行解析的吞吐量的提高的实现。通过使用Golomb-Rice参数K的更好估计而发生帧数据的更高效压缩,从而使得能够将较短的码字分配至编码符号。可以通过允许用以使用所述的对Golomb-Rice码字进行解码的方法的实现来实现较高的吞吐量,其中该方法可以通过消除码字之间的数据依赖性来一次对一个以上的码字进行解码。
产业上的可利用性
所述的配置适用于计算机和数据处理行业,特别适用于对诸如视频信号等的信号进行编码或解码的数字信号处理。
前述仅说明本发明的一些实施例,并且可以在没有背离本发明的范围和精神的情况下对本发明进行修改和/或改变,其中这些实施例仅是示例性而非限制性的。
在本说明书的上下文中,词语“包括”意味着“主要但未必仅包括”或“具有”或“包含”,而不是“仅由…组成”。词语“包括(comprising)”的诸如“comprise”和“comprises”等的词尾变化具有相应的变化含义。

Claims (6)

1.一种用于使用Golomb-Rice解码对编码视频数据的变换单位的子集进行解码的解码设备,所述解码设备包括:
解码部件,用于通过将要解码的子集之前的子集的有效残差系数与阈值进行比较来确定Rice参数的初始值,以及通过使用所确定的初始值作为所述要解码的子集的Golomb-Rice解码的Rice参数的初始值来对所述要解码的子集进行解码。
2.根据权利要求1所述的解码设备,其中,在所述要解码的子集的有效残差系数的数量大于所述阈值的情况下,所述解码部件确定为不向所述Rice参数的初始值分配零设置。
3.根据权利要求1所述的解码设备,其中,所述解码部件基于所述要解码的子集的有效残差系数来更新所述Rice参数的值。
4.根据权利要求3所述的解码设备,其中,所述解码部件基于包括所述Rice参数和所述要解码的子集的有效残差系数的表来更新所述Rice参数的值。
5.一种用于使用Golomb-Rice解码对编码视频数据的变换单位的子集进行解码的方法,所述方法包括:
通过将要解码的子集之前的子集的有效残差系数与阈值进行比较来确定Rice参数的初始值;以及
通过使用所确定的初始值作为所述要解码的子集的Golomb-Rice解码的Rice参数的初始值来对所述要解码的子集进行解码。
6.一种计算机可读介质,其记录有用于使计算机执行用于使用Golomb-Rice解码对编码视频数据的变换单位的子集进行解码的方法的计算机程序,所述方法包括:
通过将要解码的子集之前的子集的有效残差系数与阈值进行比较来确定Rice参数的初始值;以及
通过使用所确定的初始值作为所述要解码的子集的Golomb-Rice解码的Rice参数的初始值来对所述要解码的子集进行解码。
CN201710083014.8A 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统 Active CN107105248B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2012202182 2012-04-13
AU2012202182A AU2012202182B2 (en) 2012-04-13 Method, apparatus and system for encoding and decoding a subset of transform units of encoded video data
CN201380019838.9A CN104221288A (zh) 2012-04-13 2013-04-12 对编码视频数据的变换单位的子集编码和解码的方法、设备和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201380019838.9A Division CN104221288A (zh) 2012-04-13 2013-04-12 对编码视频数据的变换单位的子集编码和解码的方法、设备和系统

Publications (2)

Publication Number Publication Date
CN107105248A CN107105248A (zh) 2017-08-29
CN107105248B true CN107105248B (zh) 2021-05-07

Family

ID=49326956

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201380019838.9A Pending CN104221288A (zh) 2012-04-13 2013-04-12 对编码视频数据的变换单位的子集编码和解码的方法、设备和系统
CN201710083013.3A Active CN107105247B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统
CN201710083012.9A Active CN106851277B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统
CN201710083014.8A Active CN107105248B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统
CN201710083006.3A Active CN107071420B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201380019838.9A Pending CN104221288A (zh) 2012-04-13 2013-04-12 对编码视频数据的变换单位的子集编码和解码的方法、设备和系统
CN201710083013.3A Active CN107105247B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统
CN201710083012.9A Active CN106851277B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201710083006.3A Active CN107071420B (zh) 2012-04-13 2013-04-12 视频数据的变换单位的子集的编解码的方法、设备和系统

Country Status (11)

Country Link
US (1) US10873761B2 (zh)
EP (1) EP2837185B1 (zh)
JP (2) JP2015516745A (zh)
KR (2) KR101974320B1 (zh)
CN (5) CN104221288A (zh)
AU (2) AU2016202272B2 (zh)
BR (1) BR112014021436B1 (zh)
ES (1) ES2746961T3 (zh)
PL (1) PL2837185T3 (zh)
RU (3) RU2014141168A (zh)
WO (1) WO2013152401A1 (zh)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9978156B2 (en) * 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
US11259020B2 (en) 2013-04-05 2022-02-22 Qualcomm Incorporated Determining palettes in palette-based video coding
US9936200B2 (en) * 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US9396249B1 (en) * 2013-06-19 2016-07-19 Amazon Technologies, Inc. Methods and systems for encoding parent-child map tile relationships
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
BR112016015109A2 (pt) * 2013-12-30 2017-08-08 Qualcomm Inc Simplificação de codificação residual dc delta em codificação de vídeo 3d
CN114501033B (zh) * 2014-06-20 2023-11-10 寰发股份有限公司 用于视频编码的调色板预测器信令的方法
CN104469366B (zh) * 2014-12-18 2017-10-03 中国科学院自动化研究所 一种0阶指数哥伦布码解码器及解码方法
WO2016206590A1 (en) * 2015-06-23 2016-12-29 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
WO2017000222A1 (en) * 2015-06-30 2017-01-05 Mediatek Singapore Pte. Ltd. Grouping bypass bins and improved sign data hiding for residual coding
US20170311003A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Method and apparatus for performing entropy encoding with sign data removal and associated method and apparatus for performing entropy decoding with sign data recovery
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
CN116886909A (zh) * 2016-10-14 2023-10-13 世宗大学校产学协力团 影像编码方法、影像解码方法以及传送比特流的方法
KR102416804B1 (ko) 2016-10-14 2022-07-05 세종대학교산학협력단 영상 부호화 방법/장치, 영상 복호화 방법/장치 및 비트스트림을 저장한 기록 매체
CN108259896B (zh) * 2016-12-29 2021-10-08 四川大学 一种利用系数分布特性的哥伦布-莱斯初始参数自适应决策方法
WO2018232676A1 (zh) * 2017-06-22 2018-12-27 华为技术有限公司 一种帧内预测的方法及装置
CN115442606A (zh) 2017-07-31 2022-12-06 韩国电子通信研究院 对图像编码和解码的方法及存储比特流的计算机可读介质
WO2019146811A1 (en) * 2018-01-25 2019-08-01 Lg Electronics Inc. Video decoder and controlling method thereof
JP2021520698A (ja) * 2018-05-02 2021-08-19 インターデジタル ヴイシー ホールディングス, インコーポレイテッド ビデオのコード化および復号。
WO2020003268A2 (en) * 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Definition of zero unit
US11336918B2 (en) 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
CN114390280B (zh) * 2018-11-12 2023-08-18 Lg电子株式会社 图像解码方法、图像编码方法和数据发送方法
US10904548B2 (en) 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
US11632557B2 (en) 2019-01-01 2023-04-18 Lg Electronics Inc. Method and device for decoding video using residual sign related information in video coding system
US11134273B2 (en) * 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
US10939107B2 (en) * 2019-03-01 2021-03-02 Sony Corporation Embedded codec circuitry for sub-block based allocation of refinement bits
CN113728627B (zh) * 2019-04-26 2023-09-19 北京字节跳动网络技术有限公司 用于环路内重构的参数的预测
CN112118456B (zh) * 2019-06-20 2022-03-25 腾讯美国有限责任公司 莱斯参数选择方法、装置、计算机设备及存储介质
CN114342393A (zh) 2019-07-12 2022-04-12 Lg 电子株式会社 基于变换的图像编译方法及其设备
US11677984B2 (en) * 2019-08-20 2023-06-13 Qualcomm Incorporated Low-frequency non-separable transform (LFNST) signaling
WO2021040319A1 (ko) * 2019-08-23 2021-03-04 엘지전자 주식회사 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
US11470334B2 (en) * 2019-09-23 2022-10-11 Qualcomm Incorporated Rice parameter derivation for lossless/lossy coding modes for video coding
US11265536B2 (en) * 2019-09-23 2022-03-01 Tencent America LLC Method to extend the range of rice parameter for residual coding in transform skip mode
WO2021071187A1 (ko) * 2019-10-07 2021-04-15 엘지전자 주식회사 비디오/영상 코딩 시스템에서 라이스 파라미터 도출 방법 및 장치
WO2021071188A1 (ko) * 2019-10-07 2021-04-15 엘지전자 주식회사 비디오/영상 코딩 시스템에서 엔트로피 코딩 방법 및 장치
US11336891B2 (en) * 2019-11-25 2022-05-17 Tencent America LLC Coding method and system with improved transform domain coefficient computation
US11368715B2 (en) * 2019-12-27 2022-06-21 Qualcomm Incorporated Block-based delta pulse code modulation for video coding
WO2022066869A1 (en) * 2020-09-23 2022-03-31 Beijing Dajia Internet Information Technology Co., Ltd. Residual and coefficients coding for video coding
GB2601184A (en) * 2020-11-23 2022-05-25 Sony Group Corp Image data encoding and decoding
CN116918328A (zh) * 2021-02-25 2023-10-20 株式会社Kt 视频信号编码/解码方法和存储由编码方法生成的数据流的记录介质
CN113315968B (zh) * 2021-07-29 2021-12-03 杭州博雅鸿图视频技术有限公司 提高码率计算效率的电路设计方法、装置、设备及介质
CN117354534B (zh) * 2023-12-04 2024-02-02 上海方诚光电科技有限公司 一种自适应图像无损压缩方法、设备及存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0940994B1 (en) 1998-03-06 2014-04-16 Canon Kabushiki Kaisha Image processing apparatus and method and storage medium storing steps realizing such method
JP2000115783A (ja) 1998-10-06 2000-04-21 Canon Inc 復号化装置及び方法
JP4181699B2 (ja) 1999-07-27 2008-11-19 キヤノン株式会社 符号化装置及び方法及び記憶媒体
US6735254B2 (en) * 2001-06-29 2004-05-11 Qualcomm, Inc. DCT compression using Golomb-Rice coding
CN100566419C (zh) * 2001-07-02 2009-12-02 高通股份有限公司 以无损的方式编码数字图像数据的设备和方法
US7689051B2 (en) * 2004-04-15 2010-03-30 Microsoft Corporation Predictive lossless coding of images and video
US6987468B1 (en) 2004-10-29 2006-01-17 Microsoft Corporation Lossless adaptive encoding and decoding of integer data
US7580585B2 (en) * 2004-10-29 2009-08-25 Microsoft Corporation Lossless adaptive Golomb/Rice encoding and decoding of integer data using backward-adaptive rules
JP4427003B2 (ja) * 2005-05-23 2010-03-03 オリンパスイメージング株式会社 データ符号化装置、データ復号化装置、データ符号化方法、データ復号化方法、プログラム
DE102007017254B4 (de) 2006-11-16 2009-06-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Kodieren und Dekodieren
CN101543036B (zh) 2006-11-24 2011-10-26 日本电气株式会社 编码和解码装置、编码和解码方法
US7486211B2 (en) * 2007-04-13 2009-02-03 Apple Inc. Method and system for entropy coding
WO2009044346A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation System and method for combining adaptive golomb coding with fixed rate quantization
CN101779466B (zh) * 2008-06-10 2015-02-11 松下电器产业株式会社 图像解码装置及图像编码装置
WO2010084951A1 (ja) * 2009-01-23 2010-07-29 日本電信電話株式会社 パラメータ選択方法、パラメータ選択装置、プログラム及び記録媒体
JP5492206B2 (ja) * 2009-07-27 2014-05-14 株式会社東芝 画像符号化方法および画像復号方法、ならびに、画像符号化装置および画像復号装置
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
WO2012025215A1 (en) * 2010-08-23 2012-03-01 Panasonic Corporation Adaptive golomb codes to code filter coefficients
CN102238387B (zh) * 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
CN102368385B (zh) * 2011-09-07 2013-08-14 中科开元信息技术(北京)有限公司 后向块自适应Golomb-Rice编解码方法及装置
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US9635358B2 (en) * 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients

Also Published As

Publication number Publication date
US20150078443A1 (en) 2015-03-19
AU2016202272B2 (en) 2017-09-28
AU2017279640B2 (en) 2019-08-01
CN106851277B (zh) 2021-05-07
CN107071420A (zh) 2017-08-18
BR112014021436A2 (zh) 2017-06-20
JP6465955B2 (ja) 2019-02-06
EP2837185B1 (en) 2019-09-04
KR20140126370A (ko) 2014-10-30
JP2018078625A (ja) 2018-05-17
CN106851277A (zh) 2017-06-13
AU2017279640A1 (en) 2018-01-18
PL2837185T3 (pl) 2020-03-31
RU2634214C1 (ru) 2017-10-24
CN107105247A (zh) 2017-08-29
KR101974320B1 (ko) 2019-04-30
CN104221288A (zh) 2014-12-17
CN107105248A (zh) 2017-08-29
KR20180006495A (ko) 2018-01-17
AU2012202182A1 (en) 2013-10-31
KR101818102B1 (ko) 2018-01-12
CN107071420B (zh) 2021-07-16
US10873761B2 (en) 2020-12-22
CN107105247B (zh) 2021-05-07
WO2013152401A1 (en) 2013-10-17
EP2837185A1 (en) 2015-02-18
JP2015516745A (ja) 2015-06-11
BR112014021436B1 (pt) 2023-03-07
ES2746961T3 (es) 2020-03-09
EP2837185A4 (en) 2016-03-16
RU2667715C1 (ru) 2018-09-24
RU2014141168A (ru) 2016-06-10

Similar Documents

Publication Publication Date Title
CN107105248B (zh) 视频数据的变换单位的子集的编解码的方法、设备和系统
JP6608504B2 (ja) 動画データを復号する方法
CN108810541B (zh) 从视频数据的位流解码多个编码单位的方法
JP6226972B2 (ja) 符号化ビデオデータのサンプル適応オフセットデータを符号化および復号するための方法、装置、およびシステム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant