CN103918186B - 上下文自适应数据编码 - Google Patents

上下文自适应数据编码 Download PDF

Info

Publication number
CN103918186B
CN103918186B CN201280054507.4A CN201280054507A CN103918186B CN 103918186 B CN103918186 B CN 103918186B CN 201280054507 A CN201280054507 A CN 201280054507A CN 103918186 B CN103918186 B CN 103918186B
Authority
CN
China
Prior art keywords
value
code value
data
input data
size
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
CN201280054507.4A
Other languages
English (en)
Other versions
CN103918186A (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.)
Sony Corp
Original Assignee
Sony Corp
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
Application filed by Sony Corp filed Critical Sony Corp
Publication of CN103918186A publication Critical patent/CN103918186A/zh
Application granted granted Critical
Publication of CN103918186B publication Critical patent/CN103918186B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • 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/4006Conversion to or from arithmetic code
    • 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/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • 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
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • 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/98Adaptive-dynamic-range coding [ADRC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种用于编码连续输入数据值的数据编码方法,包括下列步骤:根据当前输入数据值的值选择代码值集合中的多个互补子范围的一个;子范围相对于代码值的集合的比例由与该输入数据值相关联的上下文变量定义;将当前输入数据值分配给选择子范围内的代码值;根据分配的代码值和选择的子范围的大小修改代码值的集合;检测代码值的集合是否小于预定的最小大小,如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定的最小大小;并且响应每个该大小增加操作输出编码数据位;修改有关下一输入数据位或者值中使用的上下文变量,从而增加代码值的集合在为当前数据值选择的子范围内的比例;并且在编码输入数据值组之后,通过下列操作终止输出数据:将定义代码值的集合的结束的值设置为具有等于0的多个最低有效位的值;增加代码值的集合的大小;并且将定义代码值的集合的结束的值写入到输出数据中。

Description

上下文自适应数据编码
相关申请的交叉引用
本申请要求于在先提交日期2011年11月7日提交给英国知识产权局的GB1119199.6的权益,通过引用将其全部内容结合在此。
技术领域
本发明涉及上下文自适应数据编码。
背景技术
本文中所提供的“背景技术”描述是为了总体呈现本公开内容的背景之目的。某种程度描述在背景技术部分的、目前署名的发明人的工作以及申请时未另限定为现有技术的说明方面,既没有明示也没有默示承认作为本发明的现有技术。
存在若干种视频数据压缩和解压缩***,其涉及将视频数据变换成频域表示,量化频域系数,并且将熵编码的一些形式应用到量化系数。
在本上下文中,熵可被视为表示数据符号或者符号序列的信息内容。熵编码的目的是使用(理想情况下)表示数据符号序列的信息内容所必需的最小数目的编码数据位以无损方式编码数据符号序列。实际上,熵编码用于编码量化系数,使得编码数据(在其位的数目方面)小于原始量化系数的数据大小。更有效的熵编码过程对于相同的输入数据大小给出较小输出数据大小。
用于熵编码视频数据的一种技术是所谓的CABAC(上下文自适应二进制算数编码)技术。在示例实施方式中,量化系数相对系数阵列被划分为指示某个量值及其符号的系数值的位置的数据,因此,例如,所谓“有效映射(significance map)”可指示系数阵列中的在其的系数具有非零值的位置。其他映射可指示数据具有一以上的值(及其符号)的位置;或者数据具有二以上的值的位置。
在上下文自适应编码中,关于表示数据位将有多大可能为1或0的预期或预测的概率模型或者上下文来编码数据位。为此,利用由上下文所定义的子范围的相应大小,分配输入数据位给代码值范围的两个互补子范围之一内的代码值。下一步骤是响应于所分配的代码值和选择的子范围的当前大小修改(关于下一个输入数据位或者值使用的)整个范围。如果修改后范围小于阀值(例如,原始范围大小的一半),则增加大小,例如,通过使修改范围加倍(左移)。在这点上,生成输出编码数据位以指示加倍操作发生。进一步步骤是修改与下一个输入数据位或者值一起使用的上下文。在当前提出***中,这通过使用当前上下文和当前“最可能符号”(1或者0,无论哪个被上下文当前指示为具有大于0.5的概率)的特性(identity)作为到新上下文值的查找表中的索引来执行。
CABAC过程能够提供(具体地)量化残差视频数据的有效的编码。然而,在编码过程结束时,可能是低效率的。此处,“结束”表示流或者编码数据的连续的终止,例如,在特定图像区域的编码结束时(诸如,“片段”或者宏块组被布置使得表示图像大致水平的条带)。在流终止时,每个图像可发生多次,编码器将保留表示上述所分配的内部CABAC代码值的当前值的多个位。先前提出的编码器可简单地将该变量写入输出数据流中,因此,在每个流终止时存在8个位(或者无论变量大小为多少)的开销。
发明内容
本发明提供一种用于编码连续输入数据值的数据编码方法,所述方法包括下列步骤:
根据当前输入数据值的值选择代码值的集合中多个互补子范围的一个,子范围相对于代码值的集合的比例由与输入数据值相关联的上下文变量来定义;
将当前输入数据值分配给选择的子范围内的代码值;
根据分配代码值和选择的子范围的大小修改代码值的集合;
检测代码值的集合是否小于预定最小大小,并且如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定最小大小;并且响应于每个这样的大小增加操作输出编码数据位;
修改关于下一个输入数据值中使用的上下文变量,以增加为当前数据值选择的子范围中的代码值的集合的比例;以及
在编码输入数据值的组之后,通过下列操作终止输出数据:
将定义代码值的集合结束的值设置为具有等于0的多个最低有效位的值;
增加代码值的集合的大小;以及
将定义代码值的集合的结束的值写入输出数据。
本发明还提供一种用于编码连续输入数据值的数据编码装置,所述装置包括:
用于根据当前输入数据值的值选择代码值的集合中多个互补子范围的一个的器件,子范围相对于代码值的集合的比例由与输入数据值相关联的上下文变量来定义;
用于将当前输入数据值分配给选择的子范围内的代码值的器件;
用于根据分配代码值和选择的子范围的大小修改代码值的集合的设备;
用于检测代码值的集合是否小于预定最小大小,并且如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定最小大小;并且响应于每个这样的大小增加操作输出编码数据位的器件;
用于修改关于下一个输入数据位或值中使用的上下文变量的器件,以增加为当前数据值选择的子范围中的代码值的集合的比例;以及
用于在对输入数据值的组编码之后,通过下列操作终止输出数据的器件:
将定义代码值的集合结束的值设定为具有等于0的多个最低有效位的值;
增加代码值的集合的大小;以及
将定义代码值的集合的结束的值写入输出数据。
本发明还提供一种用于解码连续算数编码数据值的数据解码装置,所述装置包括:
用于在输入数据流中以预定数目的比特位置移回读指针的器件;
用于将代码值的集合的范围定义为0的器件;
用于根据当前输入数据值的值设置由与输入数据值相关联的上下文变量来定义的子范围相对于代码值的集合的比例的器件;
用于将当前输入数据值分配给选择的子范围内的代码值的器件;以及
用于根据分配的代码值和选择的子范围的大小来修改代码值的集合的器件。
所附权利要求中定义了本发明的进一步的相应的方面和特征。
应当理解的是,本发明的上述一般描述和下列细节描述均为示例性的,而且并不限制本发明。
附图说明
当结合附图考虑时,通过参照以下具体实施方式,本发明更全面的理解及本发明容易获得的其伴随优点将会变得更好理解,在附图中:
图1示意性地示出了使用视频数据压缩和解压缩的音频/视频(A/V)数据传输和接收***;
图2示意性地示出了利用视频数据解压缩的视频显示***;
图3示意性地示出了利用视频数据压缩和解压缩的音频/视频存储***;
图4示意性地示出了利用视频数据压缩的摄影机;
图5提供视频数据压缩和解压缩装置的示意性概观;
图6示意性地示出了预测图像的生成;
图7示意性地示出了最大编码单元(LCU);
图8示意性地示出了四个编码单元(CU)的集合;
图9和图10示意性地示出了被细划分成更小编码单元的图8的编码单元;
图11示意性地示出了预测单元(PU)的阵列;
图12示意性地示出了变换单元(TU)的阵列;
图13示意性地示出了局部编码图像;
图14示意性地示出了可能的预测方向的集合;
图15示意性地示出了预测模式的集合;
图16示意性地示出了之字形(zigzag)扫描;
图17示意性地示出了CABAC熵编码器;
图18示意性地示出了CAVLC熵编码过程;
图19A至图19D示意性地示出了CABAC编码和解码操作的方面;
图20示意性地示出了CABAC编码器;以及
图21示意性地示出了CABAC解码器。
具体实施方式
现参考附图,提供图1-4给出了利用下面结合本发明实施方式描述的压缩和/或解压缩装置的装置或者***的示意图。
下面将要描述的所有数据压缩和/或解压缩装置可以以硬件、运行在诸如通用计算机、如专用集成电路(ASIC)或者现场可编程门阵列(FPGA)或者其组合的可编程硬件的通用数据处理装置上的软件实施。在由软件和/或固件实施实施方式的情况下,应当理解,这样的软件和/或固件以及通过其存储这样的软件和/或固件的非易失性机器可读数据存储介质或者设置的其他被视为本发明的实施方式。
图1示意性地示出了利用视频数据压缩和/或解压缩的音频/视频数据传输和接收***。
输入音频/视频信号10被提供给视频数据压缩装置20,视频数据压缩装置20压缩音频/视频信号10的至少视频分量以用于沿着诸如电缆、光纤、无线链路等传输路径30的传输。压缩信号被解压缩装置40处理以提供给输出音频/视频信号50。对于返回路径,压缩装置60压缩音频/视频信号以沿着传输路径30传输到解压缩装置70。
压缩装置20和解压缩装置70由此能够形成传输链路的一个节点。解压缩装置40和解压缩装置60能够形成传输链路的另一节点。当然,在传输链路为单向的情况下,仅一个节点需要压缩装置并且另一节点仅需要解压缩装置。
图2示意性地示出了使用视频数据解压缩的视频显示***。具体地,压缩的音频/视频信号100被解压缩装置110处理以提供能够在显示器120上显示的解压缩信号。解压缩装置110可以实施为显示器120的组成部分,例如,与显示设备设置在同一壳体内。可替代地,解压缩装置110可以设置为(例如)所谓的机顶盒(STB),注意,表述“机顶(set-up)”并不意味着要求该盒放置在相对于显示器120任何特定方位或者位置;它仅是本领域中使用的术语以指示作为***设备可连接到显示器的设备。
图3示意性地示出了使用视频数据压缩和解压缩的音频/视频存储***。输入音频/视频信号130被提供给压缩装置140,压缩装置140生成用于被诸如磁盘设备、光盘设备、磁带设备、例如半导体存储器的固态存储设备或者其他存储设备等存储设备150存储的压缩信号。在重放时,从存储设备150读取压缩数据并且将其传送到用于解压缩的解压缩装置160以提供输出音频/视频信号170。
应当理解,压缩或者编码信号以及存储介质或者存储该信号的数据载体被视为本发明的实施方式。
图4示意性地示出了使用视频数据压缩的摄影机。图4中,诸如电荷耦合设备(CCD)图像传感器及相关的控制和读出电子设备等图像捕获设备180生成传送给压缩装置190的视频信号。麦克风(或者多个麦克风)200生成被传送给压缩装置190的音频信号。压缩装置190生成将被存储和/或传输(通常示出为示意性阶段220)的压缩的音频/视频信号210。
下面描述的技术主要涉及视频数据压缩。应当理解,许多现有技术可结合将要描述的视频数据压缩技术用于音频数据压缩以生成压缩音频/视频信号。因此,将不提供对音频数据压缩的单独讨论。还应理解,与视频数据相关联的数据速率,尤其是广播质量视频数据,通常比与(无论是压缩或者未压缩)音频数据相关联的数据速率高很多。因此,应当理解,未压缩的音频数据可伴随压缩的视频数据形成压缩的音频/视频信号。进一步应当理解,尽管本实例(图1-4中示出)涉及音频/视频数据,然而,下面将要描述的技术中可以发现在只处理(即,压缩、解压缩、存储、显示和/或传输)视频数据的***中使用。即,实施方式能够应用于视频数据压缩,而不必具有任何相关的音频数据处理。
图5提供视频数据压缩和解压缩装置的示意性概观。
输入视频信号300的连续图像被提供给加法器310和图像预测器320。下面将参考图6更为详细地描述图像预测器320。事实上,加法器310执行减法(负加法)操作,即,在“+”输入端接收输入视频信号300并且在“-”输入端接收图像预测器320的输出,这样使得从输入图像中减去预测图像。结果是生成表示实际图像与预测图像(projected image)之间差的所谓残差图像信号330。
生成残差图像信号的原因之一如下。将要描述的数据编码技术,即将要应用于残差图像信号的技术在待编码的图像中存在较少“能量”时趋向于更有效地工作。此处,术语“有效地”指少量的编码数据的生成;对于特定的图像质量水平,期望(并且视为“有效地”)实际上生成尽可能少的数据。提及的残差图像中的“能量”指包含在残差图像中的信息量。如果预测图像与实际图像一致,两者之间差(即,残差图像)将包含零信息(零能量)并且非常容易编码成少量的编码数据。通常,如果预测过程工作的相当好,则预期的是残差图像数据将包含比输入图像少的信息(更少能量)并且因此更容易编码成少量的编码数据。
残差图像数据330被提供给生成残差图像数据的离散余弦变换(DCT)表示的变换单元340。DCT技术本身是公知的并且此处将不作详细描述。然而,下面将更为详细描述在装置中使用的技术的方面,具体地,涉及应用DCT操作的不同数据块的选择。下面将参考图7-图12就此进行讨论。
变换单元340的输出,即,用于每个变换的图像数据块的DCT系数的集合,被提供给量化器350。各种量化技术在从简单乘以量化比例因子至在量化参数控制下的复杂查找表的应用范围的视频数据压缩的领域中是公知的。总的目标是双重的。首先,量化过程减少了变换数据的可能值的数目。其次,量化过程能够增加变换数据的值为零的可能性。这些都能够使下面描述的熵编码过程更加有效地生成少量压缩的视频数据。
通过扫描单元360应用数据扫描过程。扫描过程的目的是对量化变换数据重新排序,从而使尽可能多的非0量化变换系数收集在一起,当然,由此使尽可能多的0值系数收集在一起。这些特征能够允许所谓的游程长度编码或类似的技术被有效地应用。因此,扫描过程涉及从量化变换数据选择系数,具体地,根据“扫描顺序”从对应于经变换和量化的图像数据的块的系数块中选择系数,使得(a)一次选择所有系数作为扫描的一部分;以及(b)扫描趋向于提供期望的重新排序。下面将描述用于选择扫描顺序的技术。能够给出有用结果的一个示例扫描顺序是所谓的之字形扫描顺序。
然后,扫描系数被传送给熵编码器(EE)370。再次,可使用各种类型的熵编码。下面所描述的两种实例是所谓CABAC(上下文自适应二进制算数编码)***的变形和所谓CAVLC(上下文自适应可变长度编码)***的变形。总体而言,CABAC被视为提供更佳的效率,在一些研究中已经示出,与CAVLC相比较,对于可比较的(comparable)图像质量提供的编码输出数据的量减少10-20%。然而,CAVLC被视为代表(在其实施方面)比CABAC更低的复杂度。下面将参考图17讨论CABAC技术,并且下面将参考图18和图19讨论CAVLC技术。
应注意,扫描过程和熵编码过程示出为单独的过程,但事实上,可以进行组合或者一起处理。即,读入到熵编码器的数据可以以扫描顺序来进行。相应的考虑也适用于下面将要描述的相应逆过程中。
熵编码器370的输出与例如,定义预测器320生成预测图像的方式的(以上提及和/或下面所讨论的)附加数据一起提供压缩的输出视频信号380。
然而,因为预测器320自身的操作取决于压缩的输出数据的解压缩版本,所以还提供返回路径。
该特征的原因如下。在(下面将要描述的)解压缩过程的适当阶段生成残差数据的解压缩版本。此解压缩的残差数据被添加到预测图像中以生成输出图像(因为原始残差数据为输入图像与预测图像之间差)。为了使作为压缩侧与解压缩侧之间的该过程具有可比较性,在压缩过程期间和在解压缩过程期间由预测器320生成的预测图像应相同。当然,在解压缩时,该装置并不访问原始输入图像,而仅访问解压缩图像。因此,在压缩时,预测器320基于对压缩图像的解压缩版本(至少,对图像间编码)的预测。
由熵编码器370执行的熵编码过程被视为“无损耗”,即,熵编码过程可以逆转以精确达到与最早提供给熵编码器370的数据相同。因此,在熵编码阶段之前可以实施返回路径。事实上,由扫描单元360执行的扫描过程也被视为无损耗,而在本实施方式中,返回路径390为从量化器350的输出至互补逆量化器420的输入。
总体而言,熵解码器410、反向扫描单元400、逆量化器420和逆变换单元430提供熵编码器370、扫描单元360、量化器350和变换单元340的相应逆功能。现在,将继续讨论压缩过程;下面将单独讨论解压缩输入压缩视频信号的过程。
在压缩过程中,通过执行扫描单元360的逆操作的返回路径390将扫描系数从量化器350传送至逆量化器420。由单元420和430执行逆量化和逆变换过程以生成压缩-解压缩残差图像信号440。
在加法器450中,图像信号440与预测器320的输出相加以生成重构的输出图像460。如下所述,这形成了到图像预测器320的一个输入。
现转向应用于接收的压缩视频信号470的过程,在由加法器450将其加到图像预测器320的输出之前,信号被提供给熵编码器410并且从此处到反向扫描单元400、逆量化器420以及逆变换单元430的链。在简单方面,加法器450的输出460形成输出解压缩视频信号480。实际上,在输出信号之前可进一步应用滤波。
图6示意性地示出了预测图像的生成,具体地,示出了图像预测器320的操作。
存在两种基本预测模式:所谓的图像内(intra-image)预测和所谓的图像间(inter-image)或者运动补偿(MC)预测。
图像内预测基于来自同一图像内数据预测图像的块的内容。这对应于其他视频压缩技术中的所谓I帧编码。与I帧编码相反,其中,整个图像被内编码,尽管在本发明的其他实施方式中,仍然基于图像对图像做选择,但在本实施方式中,可基于块对块在内编码(intra-encoding)和间编码(inter-encoding)之间进行选择。
运动补偿预测利用试图定义将要在当前图像中编码的图像细节的另一相邻或者附近图像中的源的运动信息,因此,在理想的实例中,预测图像中的图像数据的块的内容可以被非常简单的编码为指向相邻图像中的同一位置或稍有不同位置处的相应块的参考(运动矢量)。
返回图6,示出了两种图像预测布置(对应于图像内和图像间预测),其结果在模式信号510的控制下由多路转换器500选择,以提供用于供给加法器310和450的预测图像的块。选择根据哪个选项给出最低“能量”(如上所述,可被视为要求编码的信息内容)做出,并且将该选择作为编码输出数据流中的信号发送给编码器。例如,通过从输入图像中对两个版本的预测图像的区域(area)执行试验减法,平方差分图像的每个像素值,对平方值求和,以及识别两个版本中的哪一个产生了有关该图像区域的差分图像的较低均方值,来检测这样上下文中的图像能量。
内编码***中的实际预测基于作为信号460的一部分接收的图像块进行,即,预测基于编码-解码图像块,从而使得在解压缩装置中能够做出精确地相同预测。然而,通过内模式选择器520能够从输入视频信号300中得出数据以控制图像内预测器530的操作。
对于图像间预测,运动补偿(MC)预测器540使用诸如由运动估测器550从输入视频信号300得出的运动矢量等运动信息。运动矢量被运动补偿预测器540应用于重构图像460的处理版本以生成图像间预测的块。
现将描述应用于信号460的处理。首先,由滤波器单元560滤波信号。这涉及应用“解块”滤波器以去除或者至少趋向于减少由变换单元340及后续操作执行的基于块处理的效果。此外,使用通过处理重构信号460和输入视频信号300得到的系数应用自适应环路滤波器。自适应环路滤波器是使用已知技术将自适应滤波器系数应用到要被过滤数据的滤波器类型。即,滤波器系数可根据各种因素而变化。定义哪个滤波器系数将要使用的数据被包括作为编码输出数据流的一部分。
事实上,来自滤波器单元560的滤波输出形成输出视频信号480。其还缓存在一个或者多个图像存储器570中;连续图像的存储是运动补偿预测处理的要求,并具体为运动矢量的生成。为了节省存储要求,图像存储器570中的存储图像可保持成压缩形式并且然后在用于生成运动矢量时解压缩。对于这个特定的目的,可使用任何已知的压缩/解压缩***。存储图像被传送给生成存储图像的分辨率更高版本的内插滤波器580;在本实例中,产生中间样本(samples)(子样本),从而使得由内插滤波器580输出的内插图像的分辨率(在每个维度)是存储在图像存储器570中的图像的分辨率的8倍。内插图像作为运动估测器550的输入被传送以及作为运动补偿预测器540的输入被传送。
在本发明的实施方式中,提供进一步可选阶段,即,使用乘法器600将输入视频信号的数据值乘以因子四(实际上仅将数据值向左移动两位),并且使用除法器或者右移位器610在装置的输出处应用相应的除法操作(右移两位)。因此,左移和右移仅改变用于装置的内部操作的数据。因为降低了任何数据舍入误差的效果,所以该措施能够提供装置内更高的计算精度。
现将描述将图像分割以用于压缩处理的方式。在基本水平,将要压缩的图像被视为样本的快的阵列。出于本讨论之目的,考虑的最大的此类块为所谓的最大编码单元(LCU)700(图7),表示64x64样本的正方形阵列。此处,本讨论涉及亮度样本。根据色度模式,诸如,4:4:4、4:2:2、4:2:0或者4:4:4:4(GBR加密钥数据),存在对应于亮度块的相应的色度样本的不同数目。
将描述三种基本类型的块:编码单元、预测单元以及变换单元。总体而言,LCU递归细分允许以这样一种方式分割输入图片,即,根据将要编码的图像的具体特征能够设置块大小和块编码参数(诸如,预测或者残差编码模式)。
LCU可以被细分为所谓的编码单元(CU)。编码单元始终是正方形并且具有8x8样本与LCU700的整个大小之间的大小。编码单元能够布置为一种树结构,因此,如图8所示,可产生第一细分,给出32x32样本的编码单元710;在选择的基础上可接着产生后续细分,以给出16x16样本(图9)的某些编码单元720以及8x8样本(图10)的潜在某些编码单元730。总之,该过程能够提供CU块的内容自适应编码树结构,其每个结构可以是与LCU一样大或者与8x8样本一样小。基于编码单元结构对输出视频数据进行编码。
图11示意性地示出了预测单元(PU)的阵列。预测单元是用于承载有关图像预测过程的信息的基本单元,或者换言之,将附加数据添加到熵编码残差图像数据以从图5中的装置形成输出视频信号。总之,预测单元并不局限于正方形形状。只要编码单元大于最小(8x8)大小,预测单元可以是其他形状,具体地,形成正方形编码单元中一个的一半的矩形形状。目的是允许相邻预测单元的边界与图片中真实对象的边界(尽可能密切地)匹配,因此,不同的预测参数能够应用于不同真实对象。每个编码单元可包含一个或者多个预测单元。
图12示意性地示出了变换单元(TU)的阵列。变换单元是变换和量化过程的基本单元。变换单元始终是正方形并且可以采取从4x4到32x32样本的大小。每个编码单元可包含一个或者多个变换单元。图12中的缩写SDIP-P表示所谓的短距离内-预测分区。在该布置中,仅使用一维变换,因此,利用输入至基于当前SDIP-P内的先前编码的相邻块和先前解码的相邻线的变换的数据,通过N个变换传送4xN块。
现将讨论内预测过程。总体而言,内预测涉及根据同一图像中的先前编码和解码样本产生当前块(预测单元)的样本的预测。图13示意性地示出了部分编码图像800。此处,基于LCU从左上端至右下端编码图像。通过整个图像的处理的示例LCU编码部分示出为块810。以上和至块810的左侧的阴影区域820已被编码。块810的内容的图像内预测能够利用任一阴影区域820,但是不能利用该阴影区域下方的非阴影区域。
块810表示LCU;如上所述,出于图像内预测处理之目的,块810可被细分为更小的预测单元的集合。LCU810内示出了预测单元830的实例。
图像内预测考虑当前LCU810以上和/或至其左侧的样本。从其中预测所需样本的源样本相对于LCU810内的当前预测单元可定位在不同的位置或者方向上。为了确定哪一方向适用于当前预测单元,将基于每个候选方向的试验预测结果进行比较,以查看哪一候选方向给出最接近输入图像相应块的结果。给出最接近结果的候选方向被选为用于该预测单元的预测方向。
还可基于“片段”编码图片。在一种实例中,片段是LCU的水平相邻组。但是,更一般地而言,整个残差图像可形成片段,或者片段可以是单个LCU,或者片段可以是LCU的行等。因为片段被编码为独立的单元,所以片段给予误差一定的恢复力(resilience)。编码器和解码器状态在片段边界处完全重置。例如,不跨片段边界执行内预测;片段边界被视为用于此目的的图像边界。
图14示意性地示出了可能(候选)预测方向的集合。34个候选方向的全集合可用于8x8、16x16或者32x32样本的预测单元。4x4和64x64样本的预测单元大小的特殊情况具有对它们可用的减少的候选方向的集合(分别为17个候选方向和5个候选方向)。通过相对于当前块位置的水平和垂直位移来确定方向,但方向被编码为预测“模式”,其集合示出为图15。应注意,所谓的DC模式表示周围上部和左侧样本的简单算术平均。
图16示意性地示出了之字形扫描,可被扫描单元360应用的扫描图案。在图16中,图案示出为8x8DCT系数的示例块,且DC系数定位在该块的左上端位置840,并且在向下和向左上端位置840的右侧的位置日益增加时,由系数表示的水平和垂直空间频率日益增加。
应注意,在一些实施方式中,可以反向顺序(使用图16中的排序记号自右下端至左上端)扫描系数。还应注意,在一种实施方式中,在执行剩余系数的之字形之前,扫描可从左至右横跨几个(例如,1到3之间)最上端的水平行。
图17示意性地示出了CABAC熵编码器的操作。
在这种本质的上下文自适应编码中,并且根据本发明的实施方式,可关于表示数据位多大可能为1或0的预期或预测的概率模型或上下文来编码数据位。为此,利用由上下文(这又通过与输入值相关或另外有关的上下文变量来定义)所定义的子范围的相应大小(在本发明的实施方式中,子范围相对代码值的集合的相应比例),分配输入数据位给选择的代码值范围的两个(更一般地,多个)互补子范围中的一个。下一步骤是响应于所分配的代码值和选择子范围的当前大小修改整个范围,即代码值的集合(对下一个输入数据位或值所使用的)。如果修改后范围小于表示预定最小大小的阀值(二分之一的原始范围大小),则增加大小,例如,通过使修改范围增加一倍(左移),如果需要的话可连续执行加倍过程(一次以上),直至范围具有至少预定最小大小。在这点上,生成输出编码数据位以指示(或者如果一次以上的话,每个)加倍或大小增加操作发生。进一步步骤是修改与或者关于下一个输入数据位或者值(或者在一些实施方式中,关于下一个将要编码的数据位或值的组)一起使用的上下文(即,在本发明的实施方式中,修改上下文变量)。这可通过使用当前上下文和当前“最可能符号”(1或者0,无论哪个被上下文指示,当前具有大于0.5的概率)的特性(identity)作为到新上下文值的查找表中的索引或作为从其可得出新上下文变量的适当的数学公式的输入来执行。在本发明的实施方式中,上下文变量的修改可增加代码值的集合在选择用于当前数据值的子范围内的比例。
CABAC编码器相对于二进制数据操作,即,仅由0和1两个符号表示的数据。编码器使用基于先前编码数据选择用于后续数据的“上下文”或者概率模型的所谓上下文建模过程。以确定性方式执行上下文的选择,这样使得在不需要将进一步数据(具体指上下文)添加到传送至解码器的编码数据流情况下,可基于先前解码数据在解码器处执行相同的确定。
参考图17,如果不是二进制形式,将要被编码的输入数据可被传送至二进制转换器900,如果数据已经是二进制形式,绕开变换器900(通过示意开关910)。在本实施方式中,通过将量化的DCT系数数据表示为一系列二进制“映射”来实际执行对二进制形式的转换,下面将进一步描述。
二进制数据可接着被两个处理路径之一处理,即,“常规”和“旁路”路径(示意性地示出为单独的路径,但是,在下面所讨论的本发明的实施方式中,事实上,可以通过仅利用稍微不同参数的同一处理阶段来实施)。旁路路径采用并不一定使用与常规路径相同形式的上下文建模的所谓旁路编码器920。在CABAC编码的一些实例中,如果需要特别地迅速处理一批数据,可以选择旁路路径,但是,在本实施方式中,注意所谓“旁路”数据的两个特征:首先,由CABAC编码器(950,960)处理旁路数据,仅使用表示50%概率的固定上下文模型;其次,旁路数据涉及某些类别的数据,一个特定实例为系数符号数据。此外,由示意性开关930、940选择常规路径。这涉及紧跟着编码引擎960的上下文建模器950所处理的数据。
如果该块由0值数据整个形成,图17所示的熵编码器编码数据块(即,例如,对应于与残差图像的块有关的系数的块的数据)为单个值。对于不属于这类的每个块,即,包含至少一些非0数据的块,制定“有效映射”。有效映射指示对于将要被编码的数据块中的每个位置,该块中的相应系数是否为非0。二进制形式的有效映射数据本身就是CABAC编码。对于有效映射指示为0的量值的系数,因为没有任何数据需要被编码,所以使用有效映射可助于压缩。此外,有效映射可包括特殊代码来指示块中的最终非0系数,因此,所有的最终高频/拖尾(trailing)0系数可以从编码中省略。在编码位流中,定义由有效映射指定的非0系数的值的数据紧跟有效映射之后。
还制定映射数据的进一步标准(level)并且以CABAC编码。实例是作为二进制值(1=是,0=否)的定义位于有效映射指示为“非0”的映射位置的系数数据是否实际上具有“1”值的映射。另一映射指定位于有效映射指示为“非0”的映射位置的系数数据是否实际上具有“2”值。进一步映射指示,对于有效映射指示系数数据为“非0”的这些映射位置,数据是否具有“大于2”的值。另一映射再次对于识别为“非0”的数据指示数据值的符号(使用预定的二进制表示法,诸如,+为1,-为0,当然或其他所有(around)方式)数据值的符号。
在本发明的实施方式中,例如,由扫描单元360从量化DCT系数生成有效映射和其他映射,并且在经受CABAC编码之前经受之字形扫描过程(或者根据内预测模式从之字形、水平光栅以及垂直光栅扫描中选择的扫描过程)。
总体而言,CABAC编码涉及基于其他先前编码数据预测用于编码将要编码的下一个位的上下文或者概率模型。如果下一个位与由概率模型识别为“最可能”的位相同,则“下一个位与概率模型一致”的信息编码被以极高的效率编码。较低效率的编码“下一个位与概率模型不一致”,因此,上下文数据的推导对于编码器的良好操作比较重要。术语“自适应”指在编码期间适应上下文或概率模型或者改变,以试图提供对(尚未编码的)下一数据的良好匹配。
用一个简单的比喻,在书面英语中,字母“U”,是比较少见的。但在紧接字母“Q”后的字母位置,实际上字母“U”是很常见的。所以,概率模型可将“U”的概率设置为非常低的值,但是,如果当前字母是“Q”,概率模型可为作为下一个字母“U”设置非常高概率值。
在本布置中,对于至少有效映射和指示非0值是否为1或者2的映射,使用CABAC编码。在实施方式中其与CABAC编码相同但事实在于概率模型被固定在1和0的相等(0.5:0.5)概率分布的旁路处理针对至少符号数据和指示值是否>2的映射使用。对于识别为>2的这些数据位置,可以使用单独的所谓逃逸编码数据编码以编码数据的实际值。这可包括哥伦布-莱斯(Golomb-Rice)编码技术。
WD4中更为详细地描述了CABAC上下文建模和编码过程:WorkingDraft4of High-Efficiency Video Coding,JCTVC-F803_d5,Draft ISO/IEC23008-HEVC;201x(E)2011-10-28。
图18示意性地示出了CAVLC熵编码过程。
与以上讨论的CABAC一样,图18中示出的熵编码过程紧随扫描单元360的操作之后。应当注意,变换和扫描的残差数据中的非0系数通常为±1序列。CAVLC编码器通过称之为“拖尾1”(T1)的变量指示高频±1系数的数目。对于这些非0系数,通过使用不同的(上下文自适应)可变长度编码表提高编码效率。
参考图18,第一步骤1000生成值“系数_令牌”以对非0系数的总数目和拖尾1的数目进行编码。在步骤1010,按照反向扫描顺序编码每个拖尾1的符号位。在步骤1020,每个剩余的非0系数被编码为“标准(level)”变量,由此定义这些系数的符号和量值。在步骤1030,变量总_0被用于编码最后非0系数之前0的总数目。最后,在步骤1040,变量运行_之前被用于按照反向扫描顺序编码每个非0系数之前连续0的数目。上述定义的变量的收集输出形成编码数据。
如上所述,图16中示意性地示出了用于由扫描单元360执行扫描操作的默认扫描顺序为之字形。在其他布置中,使用图像内编码的四个块,可根据图像预测方向(图15)和变换单元(TU)大小在之字形扫描、水平光栅扫描以及垂直光栅扫描之间做出选择。
现将稍微详细地说明以上讨论的CABAC过程。
至少只要其在提出的的HEVC***中使用,CABAC则涉及推导出有关将被编码的下一个位的“上下文”或者概率模型。由上下文变量或者CV定义的上下文则影响如何对位进行编码。总体而言,如果下一个位与CV定义为预期的更可能值的值相同,则在减少定义数据位所需的输出位数目方面存在优点。
编码过程涉及将待被编码的位映射到代码值范围内的位置。图19A中示意性示出了作为从下限m_下延伸至上限m_上的相邻整数数字的序列的代码值范围。两个极限之间的差为m_范围,其中,m_范围=m_上–m_下。通过下面将要描述的各种技术,在基本CABAC***中,m_范围被约束为位于128与254之间;在使用较大的位的数目表示m_范围的另一实施方式中,m_范围可位于256与510之间。m_下可以是任意值。可以从(比如说)0开始,但可以作为即将描述的编码过程的一部分改变。
代码值的范围m_范围被关于上下文变量定义的边界1100划分为两个子范围,如:
边界=m_下+(CV*m_范围)
因此,上下文变量将总范围划分成两个互补的子范围或者代码值的集合的子部分,分配给每个子范围的该集合的比例由变量CV来确定,一个子范围与(下一数据位的)0的值相关联,并且另一个子范围与(下一个数据位的)1的值相关联。范围划分表示通过用于将要被编码的下一个位而产生的两个位值的CV所假定的概率。因此,如果与值0相关联的子范围小于总范围的一半,则表示视为0与1相比作为下一符号的概率更小。
用于定义哪个方式限定子范围的各种不同概率存在适用于可能数据位值。在一个实例中,范围的下部区域(即,从m_下至边界)通过约定被定义为与0的数据位值相关联。
如果在单一操作中编码一个以上的位,可以提供两个以上的子范围,从而给出对应于将要被编码的输入数据的每个可能值的子范围。
编码器和解码器保存数据位值为较低可能性(通常称为为“最低可能符号”或者LPS)的记录。CV是指LPS,因此,CV始终表示0与0.5之间的值。
现将下一个位映射到由边界划分的范围m_范围。使用下面更为详细描述的一种技术在编码器和解码器中确定性地执行此操作。如果下一个位为0,代表自m_下至边界的子范围内的位置的特定代码值被分配给该位。如果下一个位为1,自边界1100至m_上的子范围内的特定代码值被分配给该位。这代表了一种通过其本发明的实施方式可以根据当前输入数据位选择代码值的集合的多个子范围之一的技术的实例,并且也代表通过其本发明的实施方式可将当前输入数据值分配给选择的子范围内的代码值的技术的实例。
然后,重新定义下限m_下和范围m_范围,以根据分配的代码值(例如,分配代码值落入哪个子范围)和选择子范围的大小修改代码值的集合。如果刚被编码的位为0,则m_下不变,但是,m_范围被重新定义为等于m_范围*CV。如果刚被编码的位为1,则m_下移至边界位置(m_下+(CV*m_范围))并且m_范围被重新定义为边界与m_上(即,(1-CV)*m_范围)之间的差。
在这种修改之后,做出关于代码值的集合是否小于预定的最小大小(例如,为至少128的m_范围)的检测。
图19B和图19C示意性地示出了这些可替代实施方式。
在图19B中,数据位为1并且因此m_下上移至先前的边界位置。这提供了下一个位编码序列中使用的代码值的修订或者修改集合。应注意,在一些实施方式中,为下一个位编码改变CV的值,至少部分在刚被编码位的值上。这就是本技术称之为“自适应”上下文的原因。CV修订值用于生成新的边界1100’。
在图19C中,0值被编码,因此m_下保持不变,但是,m_上移至先前边界位置。范围m_范围被重新定义或者修改为m_上–m_下的新值。
在本实例中,这导致m_范围降为低于其最小允许值(诸如,128)。当检测到这样的结果时,在本实施方式中,值m_范围被重整化(remormalized)或者大小增加将m_范围恢复到所必要范围128至256所必须的许多倍,在本实施方式中是由使m_范围加倍来表示,即,左移一位。图19D中示出了代表图19C中的范围加倍这样的实例,从而符合必要约束。根据CV下一个值和修订的m_范围中得出新边界1100’’。应注意,无论何时重整化m_范围,m_下以类似方式重整化或者大小增加。完成此操作是为了保持m_下与m_范围之间的相同比率。
无论何时以这种方式将该范围乘以2,产生输出编码数据位,其将用于每个重整化阶段。
在这种方式中,根据CV值的自适应(能够在解码器中再生)和编码位流连续修改并且重整化间隔m_范围和下限m_下。在位的序列被编码之后,所得到的间隔和重整化阶段数目唯一定义编码位流。知道这样的最终间隔的解码器将原理上能够重构编码数据。然而,基础数学证明实际上不需要对解码器定义间隔,而只需在该间隔内定义一个位置。这就是分配代码值保存在编码器中并且在编码数据终止处被传送至解码器的目的。
为了给出简化实例,考虑被划分成100个间隔的概率空间。在这种情况下,m_下将表示可能性空间的底部,并且0和m_范围将表示其大小(100)。出于本实例之目的,假定将上下文变量设置为0.5(正如相对旁路路径一般),因此,概率空间用于编码具有固定概率50%的二进制位。然而,如果使用上下文变量的自适应值,则适用相同的原理,因此,在编码器和解码器中发生相同的自适应过程。
对于第一个位,每个符号(0或者1)将具有50的符号范围,且输入符号0被分配给(即)0至49的值并包括两端并且输入符号1被分配给(即)50至99的值并包括两端。如果1是将被编码的第一个位,则流的最终值必须位于50至99的范围内,因此,m_下变成50并且m_范围变成50。
为了编码第二个位,该范围进一步被细分为25的符号范围,且输入符号0取50至74的值并且输入符号1取75至99的值。可以看出,无论哪一个符号被编码为第二个位,最终值仍介于保持第一位的50至99之间,但是,现在第二个位被编码成同一数字。同样,如果第二个位使用不同于第一个位的概率模型,其仍不能影响第一个位的编码,因为该范围仍被细分为50至99。
在编码器侧针对每个输入位继续该过程,例如,响应于降至低50的m_范围,在必要时重整化(例如,加倍)m_范围和m_下。在编码过程结束时(当流终止时),最终值被写入流中。
在解码器侧,从流中读取最终值(因此,命名m_值),即,例如,该值为68。解码器将相同符号范围划分应用于初始概率空间并且比较它们的值,以看出其位于哪一符号范围内。查看到68位于50至99的范围内,其将1解码为用于其第一个位的符号。以与编码器相同的方式应用第二范围,可以看出68位于50至74的范围内并且将0解码为第二位等。
在实际实施中,通过从m_值减去每个解码符号范围内的底部值(在这种情况下,从m_减去50得到18),解码器可避免像编码器一样保存m_下。然后,符号范围始终是0到(m_范围-1)范围的细分(因此,50至74范围变成0至24)。
应注意,重要的是,如果仅有两个位以这种方式将被编码,编码器可选择50至74范围内的任何最终值并且它们将均解码为相同的两个位“10”(1后跟着0)。如果进一步的位将要被编码,则仅需要更高的精确度,并且实际上,HEVC编码器将始终选择50,该范围的底部。本申请中所讨论的实施方式试图通过在适当设置时寻找特定的位来利用未使用的范围,确保最终值将正确解码,而无论剩余位的值是多少,释放剩余位来承载其他信息。例如,在上述给出的样本编码中,如果第一数字被设置为6(或者5),则最终值将始终位于50至74的范围内,而无论第二数字的值如何,因此,第二数字可用于承载其他信息。
可以看出,通过重复将其细分使用相同概率范围(给出无限精度分数)能够编码位的无尽的流(endless stream)。然而,实际上,无限精度是不可能的并且避免非整数数值。为此,使用重整化。如果使用50至74的范围编码第三个位,则符号范围将通常各必须为12.5的间隔,但相反,m_范围和m_下能够分别被加倍(或者另行乘以共同因子)至50和100,并且符号范围现将是100至149的范围的细分,即,各为25间隔。此操作相当追溯倍增从100至200的初始概率空间的大小。因为解码器保持相同m_范围,所以它能够在与解码器相同倍数应用重整化。
上下文变量CV被定义为具有(在示例实施方式中)连续指示从CV=63的下限(诸如,1%)至CV=0的50%概率的不同概率的64个可能状态。
在自适应***中,根据各种已知因子从一个位至下一个位改变或修改CV,该各种已知因子根据将要被编码的数据的块的大小可以不同。在某些情况下,可以将相邻和先前图像块的状态考虑在内。因此,本文所描述的技术均是修改有关下一输入数据值中使用的上下文变量的实例,从而增加代码值的集合在选择用于当前数据值的子范围内的比例。
选择子范围、将当前位分配给代码值、修改代码值的集合、检测该集合是否小于最小大小以及修改上下文变量的功能均可由上下文建模器950和编码引擎960共同作用完成。因此,尽管为说明清楚起见,它们被绘制成图17中的单独项目,然而,它们共同作用以提供上下文建模和编码功能。然而,为进一步清楚起见,参考更为详细示出了这些操作和功能的图20。
根据表生成分配的代码值,该表针对CV的每个可能值和m_范围的位6和7的每个可能值(注意,因为m_范围大小的约束,m_范围的位8始终是1),定义在其新编码位应分配给相关子范围中的代码值的位置或位置组。
图20示意性地示出了使用上述技术的CABAC编码器。
由CV推导单元1120初始化(在第一CV情况下)或者修改(在随后CV情况下)CV。代码生成器1130根据CV划分当前m_范围、选择子范围并且例如使用上述提及的表格,生成适当子范围内的分配数据代码。范围重置单元1140将m_范围重置为选择的子范围的m_范围,以修改如上所述的代码值的集合。规范器(normaliser)1150检测m_范围的所得值是否低于最小允许值,如果需要,重整化m_范围一次或者多次,从而输出针对每个该重整化操作的输出编码数据位。如上所提及的,在过程结束时,也输出分配代码值。
在图21示意性示出的解码器中,由与编码器中单元1120相同的方式操作的CV推导单元1220初始化(在第一CV情况下)或者修改(在随后CV情况下)CV。代码应用程序单元1230根据CV划分当前m_范围并且检测数据代码位于哪一子范围。范围重置单元1240将m_范围重置为选择子范围的m_范围,从而根据分配的代码值和选择子范围的大小修改代码值的集合。如果需要,规范器1250响应接收的数据位重整化m_范围。
本发明的实施方式提供一种终止CABAC流的技术。将在示例性***的上下文中描述实施方式,其中,代码值具有512(而非上述128)的最大值并且因此被约束为位于该范围的上半部分,即,从256至510。
该技术能够产生平均1.5个位的损失(即,引起比先前流终止技术更小的损失)。还展示了能够产生1个位平均损失的第二可替代方法。建议这些技术的应用包括发送IPCM(非频率分割)数据之前的CABAC流终止以及针对行每片段(row-per-slice)的流终止。本技术基于在终止时可将CABAC变量设置为正确范围内的任何值的认识。因此,CABAC变量被设置为具有多个拖尾(最低有效位)零的值,因此,当该值被刷新(flushed)到数据流时,可有效忽略零。
在当前技术中,终止CABAC流致使8个位被刷新到数据流(即,丢失或者浪费)。利用在允许将系数旁路数据(符号位/逸出代码)放置到源格式的位流中的每个LCU或者图像片段(即,在编码表示有关特定相应图像子区域的数据值的数据值的组之后)之后终止内帧的实例来示出本技术。
在每个片段结束时并且在IPCM数据之前应用终止CABAC流的过程。在本发明的实施方式中,该过程假定(出于本讨论之目的)将被终止流的概率平均固定在0.54%。(当数据值(1或者0)被编码时,当前m_范围细分为两个符号范围,分别表示1或者0的概率。对于特殊的“端流(end-of-stream)标志”值,1的符号范围始终为2。因此,数据值为1的概率取决于当前m_范围的值。如上所述,在一些实施方式中,m_范围可在256与510之间变化,因此,终止概率由此在2/510=0.3922%与2/256=0.7813%之间变化)。
对于编码器,过程如下:
·如果流不被终止,CABAC范围m_范围以2减小,并且如果需要CABAC引擎被重整化1个位置(即,重整化m_下和m_范围);继续处理当前CABAC流。
·如果流被终止,CABAC‘m_下’以‘小于的范围2’增加,范围设置为2,并且CABAC引擎被重整化7个位置,紧跟着输出另一二进制‘1’。该过程等效于8个位置的重整化,其中,被重整化的值已被强制为奇数。
可能存其中上述过程不理想的情况,即,流的概率可变、或者规定在
较高百分比或者甚至为必然的事(概率1)。
本发明的实施方式能够提供以下一种方法,据此,仅利用具有(平均)1.5个位的损失和对解码器和编码器复杂度可忽略的影响的2重整化可以立即终止CABAC流。可替代方法还指示能够减少开销为仅1个位,但有CABAC解码器复杂度增加的代价。如果存在终止的可变概率,可结合标准自适应上下文变量使用两者方法,或者结合固定的百分比机制(类似于非自适应上下文变量)使用两种方法。
应注意,如上所述,一起重整化m_下和m_范围。
1算法
1.1方法
编码器的步骤如下:
m_下=(m_下+128)&~127
{或者m_下=(m_下+127)&~127}
实施m_Low的重整化的2个阶段和调用测试_写入_输出()
[将值写入流中]
在编码下一个CABAC流之前,设置m_范围=510,m_Low=0.
符号(notation):&是AND(与)操作,并且~表示二进制逆(因此,~127是对应于十进制127的二进制值的二进制逆,这样使得与诸如十进制127(其具有多个最低有效位或者LSB等于1)的数字的二进制逆的AND操作相当于设置所得值的LSB的数目为0)。函数测试_写入_输出()检查位于m_下的顶部(MSB端)的任何位是否有资格被发送至输出流,若果是,将其写入。在上述所示的伪代码的上下文中,将通过此操作写入由“实施的重整化”所创建的新位。
解码器的步骤如下:
倒回(rewind)输入流7个位(即,将读位置移回7个位)。
在解码下一CABAC流之前,设置m_范围=0,并且从位-流读取m_值。
该方法对解码器和编码器具有较低的处理影响。
对于m_下,应注意,编码器通过重复添加到m_下生成流。解码器通过以编码器最终结果开始并且重复性地从中减去来读取该流。解码器调用从流“m_ui值”中读取的位(或者该描述中符号的m_值)而非m_下并且它应从位流中读取。这与本发明实施方式要求解码器保存m_下以及m_ui值以便知道编码器正在做什么的情况有关。在这种情况下,以与编码器m_下极其相同的方式在解码器中生成m_下。
可替代方法
本方法增加了当前解码器的复杂度,因为其要求解码器保存m_下。如果其他提议要求保存m_下,则该额外的复杂度仍是最低的。
解码器的步骤如下:
使测试256=(m_下+255)&~255
如果(测试256+256<m_下+m_范围)
m_下=m_测试256
实施m_下的重整化的1个阶段并调用测试_写入_输出()。
否则(如上)
m_下=(m_下+128)&~127{或m_下=(m_下+127)&~127}
实施m_Low的重整化的2个阶段和调用测试_写入_输出()。
在编码下一CABAC流之前,设置m_范围=510,m_下=0。
解码器的步骤如下:
使测试256=(m_下+255)&~255
如果(测试256+256<m_下+m_范围)
倒回流8个位
否则(如上)
倒回流7个位
在解码下一CABAC流之前,设置m_范围=0,设置m_下=0并且从位-流读取m_值。
理论
对于CABAC编码器,写入到与m_下级联的流(或者缓存)的数据是指示可能是最终输出的最低值的n位值low。最高值high是low和m_范围的和,由编码器保存位于256(包含)至511(不包含)的范围内的变量。在流结束时,low(包括)与high(不包括)之间的任一值可选择为最终输出值,而不影响解码。如果在不根据该值的n个LSB的情况下执行解码,则可替换n个LSB为来自位-流的下一部分的数据。
使v是low与high之间的一个值,其中,n个LSB为0,并且如果最后的n个LSB为1,所得值V将仍小于high。因为“high-low”为至少256,所以low与high之间始终存在具有至少7个LSB为0的值v,即,值v是low与high之间被128整除而没有余数的第一值。
实现此目的的最简单方式是标准2的幂校准程序,即:
v=(low+127)&~127
然而,因为范围至少为256,所以:
v=(low+128)&~127
也是足够的(并且产生略微较小的编码器)。
对于位-流的当前部分,编码器处底部7个位之外将输出值‘v’,这通过重整化m_下2个位置来实现。在位-流结束时,解码器将从位流的下一部分中读取7个位,并且由此必须‘倒回’位流7个位。
存在不需要底部8个位完全解码该流的情况,利用其中“m_下=0”来最简单说明,并且由可替代算法推测出这些情况。在可替代算法中,计算low与high之间具有8个LSB为0的值v,然后,应用测试以检查是否存在相应的值V。决策过程需要对low与high进行测试,并且因为解码器还必须做出相同决策,所以解码器需要跟踪m_下。
在编码器算法的两个版本中,存在对导致不同位流、但由同一解码器可解码的7位路径的选择。
参考上述所述图20,单元1120和1130代表了选择代码值集合中的多个互补子范围的一个的选择器以及将当前输入值分配给代码值的数据分配单元的实施方式。单元1140代表数据修改单元的实施方式。单元1150代表用于检测代码值的集合是否小于最小大小并且相应执行该检测器的其他功能的检测器的实施方式。单元1150还代表通过执行以上所述以及下面所述数据终止功能的数据终止器的实施方式,具体地,通过做出关于何时终止该流的决策的数据终止器的实施方式。
参考上述所述图21,单元1220、1230、1240以及1250共同代表指针控制器和设置单元的实施方式,即它们***作为执行相对于这些单元上述功能。
应用
对于本发明的可能应用包括:
1.用于片段(slice)的最后编码LCU的终止,尤其是在“行每片段”型配置中,其中概率可能显著高于0.54%;在该布置中,本发明的实施方式能够提供一种用于编码表示视频数据的连续输入数据值的数据编码方法,该方法包括下列步骤:根据当前输入数据值的值选择代码值集合中的多个互补子范围的一个;子范围相对于代码值的集合的比例由与该输入数据值相关联的上下文变量定义;将当前输入数据值分配给选择子范围内的代码值;根据分配的代码值和选择的子范围的大小修改代码值的集合;检测代码值的集合是否小于预定的最小大小,如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定的最小大小;并且响应每个该大小增加操作输出编码数据位;修改有关下一输入数据位或者值中使用的上下文变量,从而增加代码值的集合在为用于当前数据值所选择的子范围内的比例;并且在编码对应于未参考其他视频数据而编码的视频数据片段内的视频数据的块的集合的输入数据值的组之后,通过下列操作终止输出数据:将定义代码值的集合的结束的值设置为具有等于0的多个最低有效位的值;增加代码值的集合的大小;并且将定义代码值的集合的结束的值写入到输出数据中。
2.用于片段的最后可能LCU的终止,如在片段的最后可能LCU是必然的事之后终止;在该布置中,本发明的实施方式能够提供一种用于编码表示视频数据的连续输入数据值的数据编码方法,该方法包括下列步骤:根据当前输入数据值的值选择代码值集合中的多个互补子范围的一个;子范围相对于代码值的集合的比例由与该输入数据值相关联的上下文变量定义;将当前输入数据值分配给选择子范围内的代码值;根据分配的代码值和选择的子范围的大小修改代码值的集合;检测代码值的集合是否小于预定的最小大小,如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定的最小大小;并且响应每个该大小增加操作输出编码数据位;修改有关下一输入数据位或者值中使用的上下文变量,从而增加代码值的集合在为当前数据值所选择的子范围内的比例;并且在编码表示未参考其他视频数据而编码的视频数据的整个片段的输入数据值的组之后,通过下列操作终止输出数据:将定义代码值的集合的结束的值设置为具有等于0的多个最低有效位的值;增加代码值的集合的大小;并且将定义代码值的集合的结束的值写入到输出数据中。
3.IPCM数据之前的终止,可能结合上下文变量使用;在该布置中,本发明的实施方式能够提供一种用于编码表示视频数据的连续输入数据值的数据编码方法,该方法包括下列步骤:根据当前输入数据值的值选择代码值集合中的多个互补子范围的一个;子范围相对于代码值的集合的比例由与该输入数据值相关联的上下文变量定义;将当前输入数据值分配给选择子范围内的代码值;根据分配的代码值和选择的子范围的大小修改代码值的集合;检测代码值的集合是否小于预定的最小大小,如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定的最小大小;并且响应每个该大小增加操作输出编码数据位;修改有关下一输入数据位或者值中使用的上下文变量,从而增加代码值的集合在选择用于当前数据值的子范围内的比例;并且在编码数据数据值组使得将被编码的下一个数据值组表示非频率分离视频数据之后,通过下列操作终止输出数据:将定义代码值的集合的结束的值设置为具有等于0的多个最低有效位的值;增加代码值的集合的大小;并且将定义代码值的集合的结束的值写入到输出数据中。
4.用于防止“位未决(bits outstanding)”机制太长的流终止;在该布置中,本发明的实施方式能够提供一种用于编码表示视频数据的连续输入数据值的数据编码方法,该方法包括下列步骤:根据当前输入数据值的值选择代码值集合中的多个互补子范围的一个;子范围相对于代码值的集合的比例由与该输入数据值相关联的上下文变量定义;将当前输入数据值分配给选择子范围内的代码值;根据分配的代码值和选择的子范围的大小修改代码值的集合;检测代码值的集合是否小于预定的最小大小,如果是,连续增加代码值的集合的大小,直至代码值的集合具有至少预定的最小大小;并且响应每个该大小增加操作输出编码数据位;修改有关下一输入数据位或者值中使用的上下文变量,从而增加代码值的集合在选择用于当前数据值的子范围内的比例;检测将要由不同的编码技术编码的数据值的集合是否超过预定的大小,如果是,通过下列操作终止输出数据:将定义代码值的集合的结束的值设置为具有等于0的多个最低有效位的值;增加代码值的集合的大小;并且将定义代码值的集合的结束的值写入到输出数据中。
因此,上述讨论只公开并且描述了本发明的示例性实施方式。本领域技术人员应当理解的是,在不背离本发明的实质或者必要特征的情况下,本发明可体现为其他具体形式。因此,本发明的公开旨在是说明性的,而不是限制本发明的范围以及其他权利要求。包括本文教导的任何易于辨别的变体的本公开内容部分定义了上述要求保护术语的范围,这样使得没有专用于公众的本发明主题。

Claims (29)

1.一种用于编码连续输入数据值的数据编码方法,所述方法包括下列步骤:
根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
将所述当前输入数据值分配给所选择的所述子范围内的代码值;
根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;并且响应每个这种大小增加的操作输出编码数据位;
修改关于下一个输入数据值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
在编码输入数据值的组之后,通过下列操作终止输出数据:
将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;
增加代码值的所述集合的所述大小;以及
将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
2.根据权利要求1所述的方法,其中,所述多个最低有效位包括七个最低有效位。
3.根据权利要求1所述的方法,其中,所述数据值表示频率分离的视频数据。
4.根据权利要求3所述的方法,其中:
每个数据值组包括关于特定相应图像子区域的数据值;以及
在结束编码每个图像子区域时终止所述输出数据。
5.根据权利要求4所述的方法,其中,所述子区域是图像片段或者图像最大编码单元(LCU)。
6.根据前述权利要求中任一项所述的方法,其中,定义代码值的所述集合的所述结束的所述值表示代码值的所述集合的下限。
7.根据权利要求1至5中任一项所述的方法,其中,在以下情况执行所述终止的步骤:在编码对应于未参考其他视频数据而编码的视频数据的片段内的所述视频数据的块的集合的输入数据值的组之后;在编码表示未参考其他视频数据而编码的视频数据的整个片段的输入数据值的组之后;在编码输入数据值的组使得将要被编码的下一数据值的组表示非频率分离的视频数据之后和/或当将要被不同的编码技术编码的数据值的集合被检测为超过预定大小时。
8.根据权利要求1至5中任一项所述的方法,其中,所述终止的步骤包括:
检测取决于代码值的所述集合的下限的测试值加上所述预定最小大小是否小于代码值的所述集合的上限;并且,
如果是:
将代码值的所述集合的所述下限设置为所述测试值;
分别加倍代码值的所述集合的所述大小和所述下限;并且
将定义所述下限的所述值写入所述输出数据;
并且如果不是:
将代码值的所述集合的所述下限设置为具有等于0的多个最低有效位的值;
将代码值的所述集合的所述大小和所述下限分别乘以4;并且
将定义所述下限的所述值写入所述输出数据。
9.根据权利要求8所述的方法,其中,所述测试值取决于加上常量、具有设置为0的多个最低有效位的所述下限。
10.一种用于编码表示视频数据的连续输入数据值的数据编码方法,所述方法包括下列步骤:
根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
将所述当前输入数据值分配给所选择的所述子范围内的代码值;
根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;并且
响应每个这种大小增加的操作输出编码数据位;
修改关于下一个输入数据位或值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
在编码对应于未参考其他视频数据而编码的视频数据的片段内的所述视频数据的块的集合的输入数据值的组之后,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
11.一种用于编码表示视频数据的连续输入数据值的数据编码方法,所述方法包括下列步骤:
根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
将所述当前输入数据值分配给所选择的所述子范围内的代码值;
根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;并且
响应每个这种大小增加的操作输出编码数据位;
修改关于下一个输入数据位或值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
在编码表示未参考其他视频数据而编码的视频数据的整个片段的输入数据值的组之后,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
12.一种用于编码表示频率分离的视频数据的连续输入数据值的数据编码方法,所述方法包括下列步骤:
根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
将所述当前输入数据值分配给所选择的所述子范围内的代码值;
根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;并且
响应每个这种大小增加的操作输出编码数据位;修改关于下一个输入数据位或值使用的所述上下文变量;以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
在编码输入数据值的组使得将要被编码的下一数据值的组表示非频率分离的视频数据之后,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
13.一种用于编码连续输入数据的数据编码方法,所述方法包括下列步骤:
根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
将所述当前输入数据值分配给所选择的所述子范围内的代码值;
根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;并且
响应每个这种大小增加的操作输出编码数据位;修改关于下一个输入数据位或值使用的所述上下文变量;以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
检测将要被不同的编码技术编码的数据值的集合是否超过预定大小,并且如果是,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
14.一种视频编码方法,包括下列步骤:
根据输入视频信号的相应部分生成频域系数并且根据编码顺序排序用于编码的所述系数;以及
通过应用前述权利要求中任一项所述的方法来熵编码所排序的所述系数。
15.一种通过权利要求14的所述编码方法编码的视频数据。
16.一种用于解码连续算数编码数据值的数据解码方法,所述方法包括下列步骤:
在输入数据流中将读指针移回预定数目的比特位置,以避免从下一输入数据流解释所述预定数目的比特位置;
将代码值的集合的范围定义为0;
从所述输入数据流中读取指示代码值的集合的参数的流值;
根据上下文变量设置相应子范围相对于代码值的所述集合的比例;以及
根据所述流值位于哪一个子范围检测当前解码输出数据值。
17.根据权利要求16所述的方法,包括下列步骤:
从所述输入数据流读取指示代码值的所述集合的结束的值。
18.根据权利要求16所述的方法,包括下列步骤:
在解码期间保存指示代码值的所述集合的结束的值。
19.一种包括通过应用根据权利要求16至18中任一项所述的方法熵解码编码视频数据的步骤的视频解码方法。
20.一种用于编码连续输入数据值的数据编码装置,所述装置包括:
选择器,根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
数据分配单元,将所述当前输入数据值分配给所选择的所述子范围内的代码值;
数据修改单元,根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测器,检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;响应每个这种大小增加的操作输出编码数据位;以及修改关于下一个输入数据值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
数据终止器,在编码输入数据值的组之后,通过下列操作终止输出数据:
将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;
增加代码值的所述集合的所述大小;以及
将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
21.一种用于编码连续输入数据值的数据编码装置,所述装置包括:
选择器,根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
数据分配单元,将所述当前输入数据值分配给所选择的所述子范围内的代码值;
数据修改单元,根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测器,检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;响应每个这种大小增加的操作输出编码数据位;以及修改关于下一个输入数据值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
数据终止器,在编码对应于未参考其他视频数据而编码的视频数据的片段内的所述视频数据的块的集合的输入数据值的组之后,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
22.一种用于编码连续输入数据值的数据编码装置,所述装置包括:
选择器,根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
数据分配单元,将所述当前输入数据值分配给所选择的所述子范围内的代码值;
数据修改单元,根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测器,检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;响应每个这种大小增加的操作输出编码数据位;以及修改关于下一个输入数据值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
数据终止器,在编码表示未参考其他视频数据而编码的视频数据的整个片段的输入数据值的组之后,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
23.一种用于编码连续输入数据值的数据编码装置,所述装置包括:
选择器,根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
数据分配单元,将所述当前输入数据值分配给所选择的所述子范围内的代码值;
数据修改单元,根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测器,检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;响应每个这种大小增加的操作输出编码数据位;以及修改关于下一个输入数据值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
数据终止器,在编码输入数据值的组使得将要被编码的下一数据值的组表示非频率分离视频数据之后,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
24.一种用于编码连续输入数据值的数据编码装置,所述装置包括:
选择器,根据当前输入数据值的值选择代码值的集合的多个互补子范围中的一个,所述子范围相对于代码值的所述集合的比例由与所述输入数据值相关联的上下文变量定义;
数据分配单元,将所述当前输入数据值分配给所选择的所述子范围内的代码值;
数据修改单元,根据所分配的所述代码值和所选择的所述子范围的大小修改代码值的所述集合;
检测器,检测代码值的所述集合是否小于预定最小大小,并且如果是,连续增加代码值的所述集合的大小,直至代码值的所述集合具有至少所述预定最小大小;响应每个这种大小增加的操作输出编码数据位;以及修改关于下一个输入数据值使用的所述上下文变量,以增加代码值的所述集合在为所述当前数据值所选择的所述子范围中的比例;以及
数据终止器,检测将要被不同的编码技术编码的数据值的集合是否超过预定大小,并且如果是,通过下列操作终止输出数据:将定义代码值的所述集合的结束的值设置为具有等于0的多个最低有效位的值,以使所述多个最低有效位被忽略从而减少在所述输出数据终止时输出的位的数量;增加代码值的所述集合的所述大小;以及将定义代码值的所述集合的所述结束的所述值写入所述输出数据。
25.一种用于解码连续算数编码数据值的数据解码装置,所述装置包括:
指针控制器,在输入数据流中将读指针移回预定数目的比特位置,以避免从下一输入数据流解释所述预定数目的比特位置;
设置单元,将代码值的集合的范围定义为0;从所述输入数据流中读取指示代码值的集合的参数的流值;根据上下文变量设置相应子范围相对于代码值的所述集合的比例;以及根据所述流值位于哪一个子范围检测当前解码输出数据值。
26.一种视频编码装置,包括:
频域变换器,用于根据输入视频信号的相应部分生成频域系数并且根据编码顺序排序用于编码的所述系数;以及
熵编码器,用于编码所排序的所述系数,所述熵编码器包括根据权利要求20至24的任一项的装置。
27.一种具有熵编码器的视频解码装置,包括:根据权利要求25的装置。
28.一种视频数据捕获、传输和/或存储装置,包括:根据权利要求20至27中任一项的装置。
29.一种非易失性机器可读存储介质,在所述非易失性机器可读存储介质上存储计算机软件,所述计算机软件在被计算机执行时致使所述计算机执行根据权利要求1至14中任一项或者权利要求16至19中任一项所述的方法。
CN201280054507.4A 2011-11-07 2012-11-06 上下文自适应数据编码 Active CN103918186B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1119199.6 2011-11-07
GB1119199.6A GB2496201A (en) 2011-11-07 2011-11-07 Context adaptive data encoding and decoding
PCT/GB2012/052762 WO2013068735A1 (en) 2011-11-07 2012-11-06 Context adaptive data encoding

Publications (2)

Publication Number Publication Date
CN103918186A CN103918186A (zh) 2014-07-09
CN103918186B true CN103918186B (zh) 2017-10-03

Family

ID=45421390

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280054507.4A Active CN103918186B (zh) 2011-11-07 2012-11-06 上下文自适应数据编码

Country Status (4)

Country Link
US (1) US9544599B2 (zh)
CN (1) CN103918186B (zh)
GB (1) GB2496201A (zh)
WO (1) WO2013068735A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2496201A (en) * 2011-11-07 2013-05-08 Sony Corp Context adaptive data encoding and decoding
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
GB2513110A (en) 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
GB2513111A (en) 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
GB2532420A (en) 2014-11-18 2016-05-25 Sony Corp Data encoding and decoding
CN105553625A (zh) * 2016-01-19 2016-05-04 重庆邮电大学 一种用电信息采集***远程信道报文压缩方法及***
US10764590B2 (en) * 2017-11-15 2020-09-01 Google Llc Entropy coding primary and secondary coefficients of video data
US10666291B1 (en) * 2019-03-12 2020-05-26 Microsoft Technology Licensing, Llc High efficiency data decoder
GB2585042A (en) * 2019-06-25 2020-12-30 Sony Corp Image data encoding and decoding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189874A (zh) * 2005-04-19 2008-05-28 三星电子株式会社 改善编码效率的基于上下文自适应算术编码和解码方法和装置以及使用其的视频编码和解码方法和装置
CN101370138A (zh) * 2007-08-17 2009-02-18 中国科学院计算技术研究所 一种h.264标准cavlc残差系数的解码方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6825782B2 (en) * 2002-09-20 2004-11-30 Ntt Docomo, Inc. Method and apparatus for arithmetic coding and termination
KR101405971B1 (ko) * 2007-07-02 2014-06-12 엘지전자 주식회사 방송 수신기 및 방송신호 처리방법
KR101405972B1 (ko) * 2007-07-02 2014-06-12 엘지전자 주식회사 방송 수신기 및 방송신호 처리방법
US8638850B2 (en) * 2009-05-06 2014-01-28 Advanced Micro Devices, Inc. Execution units for context adaptive binary arithmetic coding (CABAC)
US20110310966A1 (en) * 2010-06-18 2011-12-22 Texas Instruments Incorporated Syntax element decoding
US20120014431A1 (en) * 2010-07-14 2012-01-19 Jie Zhao Methods and Systems for Parallel Video Encoding and Parallel Video Decoding
US8654860B2 (en) * 2010-11-01 2014-02-18 Mediatek Inc. Apparatus and method for high efficiency video coding using flexible slice structure
CN103828364B (zh) * 2011-09-29 2018-06-12 夏普株式会社 图像解码装置、图像解码方法及图像编码装置
GB2496201A (en) * 2011-11-07 2013-05-08 Sony Corp Context adaptive data encoding and decoding
GB2496197A (en) 2011-11-07 2013-05-08 Sony Corp Frequency Domain Video Data Reordering for Encoding
GB2496194A (en) 2011-11-07 2013-05-08 Sony Corp Entropy encoding video data using reordering patterns

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189874A (zh) * 2005-04-19 2008-05-28 三星电子株式会社 改善编码效率的基于上下文自适应算术编码和解码方法和装置以及使用其的视频编码和解码方法和装置
CN101370138A (zh) * 2007-08-17 2009-02-18 中国科学院计算技术研究所 一种h.264标准cavlc残差系数的解码方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Detlev Marpe,et al.Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard.《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》.2003,第13卷(第7期),第III节. *

Also Published As

Publication number Publication date
GB201119199D0 (en) 2011-12-21
CN103918186A (zh) 2014-07-09
US9544599B2 (en) 2017-01-10
GB2496201A (en) 2013-05-08
US20140307807A1 (en) 2014-10-16
WO2013068735A1 (en) 2013-05-16

Similar Documents

Publication Publication Date Title
CN103918186B (zh) 上下文自适应数据编码
TWI658702B (zh) 資料編碼及解碼
CN105103453B (zh) 数据编码和解码
JP6400092B2 (ja) データ符号化及び復号化
CN105850125B (zh) 数据编码和解码
KR100946600B1 (ko) 무손실 방식으로 디지털 이미지 데이터를 인코딩하기 위한 장치 및 방법
CN104394418B (zh) 一种视频数据编码、解码的方法及装置
US6912318B2 (en) Method and system for compressing motion image information
CN104041040A (zh) 用于无损视频编码的预测残差编码
JP2021513257A (ja) データ符号化及び復号化
CN105580367A (zh) 数据编码和解码
CN109155852A (zh) 利用可变内预测方向集合进行内编码和解码
CN105453566B (zh) 数据编码及数据解码
WO2013068733A1 (en) Context adaptive data encoding
EP4162683A1 (en) Data encoding and decoding
WO2013068732A1 (en) Context adaptive data encoding
WO2022073789A1 (en) Data encoding and decoding
JP3958033B2 (ja) 動画像情報の圧縮方法およびそのシステム
CN117561713A (zh) 数据编码和解码

Legal Events

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