具有大字母表的源样本的熵编码的方法与装置与流程

文档序号:11291338阅读:255来源:国知局
优先权声明本申请主张在2015年1月30日提出申请的美国临时专利申请第62/109,853号,以及在2015年10月5日提出申请的美国临时专利申请第62/237,279号的权利,且上述美国专利申请以引用方式并入本文中。本发明是有关于熵编码。具体来说,本发明是用于减少针对具有大字母表(alphabet)的源(source)的熵编码的复杂度的编码技术。
背景技术
::基于文本的适应性二进制算术编码(context-basedadaptivebinaryarithmeticcoding,cabac)是一种高效率的熵编码工具,其在先进视频编码(例如h.264与高效率视频编码(highefficiencyvideocoding,hevc))中具有广泛地应用。举例来说,hevc标准的多种语法元素是在cabac模式下编码,其中熵编码是基于与当前语法元素相关的文本适应性地应用于二进制的语法元素。图1是该cabac处理的示例性区块图。由于在cabac引擎中的算术编码器能够仅仅编码二进制符元值,该cabac处理需要使用一个二值化(binarizer)110将语法元素的值转换为二进制字符串。该转换过程通常称为二进制化(binarization)。在编码的过程中,从针对不同上下文的编码的符元(symbol)中逐步建立起该多个可能性模型(probabilitymodel)。上下文模型化(contextmodeler)(120)用于模型化的目的。在正常的基于编码的上下文中,使用该常规的编码引擎(codingengine)(130),其对应二进制算术编码器。针对编码下一二进制符元的模型化上下文的选择可通过该编码的信息来决定。符元也可不经过上下文模型化阶段而编码,并且假设一个相等的概率分布,通常称为旁通模式(bypassmode),来减少复杂度。针对旁通符元,使用旁通编码引擎(bypasscodingengine)(140)。如图1所示,开关(s1、s2与s3)是用来在常规的cabac模式与旁通模式之间控制数据流的方向。当选择常规的cabac模式时,该多个开关是较上连接。当选择旁通模式时,该多个开关是较下连接,如图1所示。如上所述,cabac是一种熵编码形式。cabac能够应用至源符元(sourcesymbol)以减少代表源符元所需的数据。当cabac应用至一视频编码系统时,源符元可对应于预测残余(predictionresiduals)、运动信息(motioninformation)、编码参数等等。举例来说,cabac是在hevc中使用,其中该标准是基于传统的混合编码途径。依据hevc,一个图像被分割为多个非重叠的最大的编码单元(largestcodingunit,lcu),也称为编码树区块(codingtreeblock,ctb)。一个编码单元(codingunit,cu)的像素值是通过空间或者时间来预测。转换获得的残余信号来进行进一步的冗余去除。接着转换系数被量化以及熵编码。重建的图像是从该解码的残余信号与预测信号中回复。在重建之后,重建的图像进一步地通过环内滤波来处理以减少编码伪影(codingartifact)。图2是针对基于hevc编码器的示例性区块图。图2是依据hevc结合环内处理的适应性帧间/帧内编码系统的示意图。对于帧间预测,运动估计(me)/运动补偿(mc)212是用来提供来自其他图像或者其他多个图像的基于视频数据的预测数据。开关214选择帧内预测210或者帧间预测数据,并且选择的预测数据是提供至加法器216来形成预测错误,也称为残余(residues)。接着预测错误是通过转换(t)218以及后续的量化(q)220处理。该转换的以及量化的冗余接着被熵编码器222编码,以形成对应于压缩的视频数据的视频比特流。该与残余相关的比特流接着与旁侧信息(sideinformation)一同封包,举例来说,旁侧信息是运动、模式以及其他与图像区域相关的信息。该旁侧信息也可以进行熵编码来减少所需的频宽。据此,与旁侧信息相关的数据是提供给如图2所示的熵编码器222。在帧内模式中,可使用重建区块来形成空间相邻区块的帧内预测。因此,来自rec228的重建区块可提供给帧内预测210。当帧内预测模式被使用时,一个参考图像或者多个参考图像也需要在编码器端重建。所以,该转换的以及量化的残余被逆量化(iq)224以及逆转换(it)226处理,以恢复残余。该残余接着在重建(rec)228被加回至预测数据236,以重建视频数据。该重建的视频数据可存储在参考图像缓冲器234中,并用于其他帧的预测。如图2所述,输入的视频数据在编码系统中经过了一系列的处理。由于一系列的处理,来自rec228的重建视频数据可能具有多种损失。据此,在重建视频数据存储至参考图像缓冲器234之前,引用多种环内处理至重建视频数据,以增强视频质量。在hevc标准中,发展了去块(deblocking,df)处理模块230、样本自适应偏移(sampleadaptiveoffset,sao)处理模块231以增强图像质量。该环内滤波信息将需要组合至比特流中,从而解码器能够正确地恢复所需的信息。因此,来自sao的环内滤波信息是提供给熵编码器222以组合至比特流中。在图2中,df230是首先应用至重建的视频,接着应用至df处理的视频(即已去块的视频)。目前,jct标准化主体在开发hevc屏幕内容编码(scc)扩展的过程中。与传统的具有连续的色调(colortone)的正常视频相比较,屏幕内容视频通常包含较少的试色(pilotcolor)以及尖锐边缘与边界。目前一些新型工具,例如帧内区块复制(intrablockcopy,ibc)、调色板编码(palettecoding)、帧内线复制(intralinecopy)与帧内串复制(intrastringcopy,isc),在开发中,潜在的在未来被采用至hevcscc扩展中。再次,cabac可应用至残余或者与这些新型工具相关的编码信息。ibc与调色板编码的细节可在jctvc-s1005(joshi,etal.,highefficiencyvideocoding(hevc)screencontentcoding:draft2,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,19thmeeting:strasbourg,fr,17–24oct.2014,document:jctvc-s1005)中找到。帧内线复制与帧内串复制(isc)的细节可以在jctvc-s1103(chen,etal.,descriptionofcoreexperiment3(ce3):intralinecopyandintrastringcopy,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,19thmeeting:strasbourg,fr,17–24oct.2014,document:jctvc-s1103)中找到。技术实现要素:本发明揭露了一种通用的针对具有大字母表尺寸的源符元的熵编码方法。该方法决定该当前符元的前缀部分与任意的后缀部分。为了减少复杂度,该方法通过比较与前缀部分相关的测试值与一个阈值,来将源符元的前缀部分分割为两个部分。如果该测试值大于或者等于该阈值,该方法通过使用第一可变长度代码二进制化与该前缀部分相关的第一前缀部分,获得第一二进制字符串。如果该测试值小于该阈值,通过使用第二可变长度代码或者第一固定长度代码二进制化与该前缀部分相关的第二前缀部分,获得第二二进制字符串。如果任何后缀存在,该方法进一步通过使用第二固定长度代码或者第一截断二进制代码二进制化该后缀部分,获得第三二进制字符串;使用基于文本的适应性二进制算术编码模式编码该第一二进制字符串与该第二二进制字符串中的至少一个。该前缀部分可通过应用rice或者k阶指数哥伦布二进制处理来获得。该前缀部分对应该当前符元的当前符元值的最大有效位索引。如果任何的后缀部分存在,该后缀部分对应该当前符元值的一个或者多个细化位,该当前符元值属于多个符元值的一个集合。如上所述的第一方法可信号化一个语法旗标来指示该最大有效位索引加1是否大于该0。当该最大有效位索引加1是大于0时,信号化另一语法旗标来指示该最大有效位索引加1是否大于或者等于阈值。该第一前缀部分对应该最大有效位索引加1减该阈值,并且该第二前缀部分对应该最大有效位索引或者该阈值减1减一个代表该最大有效位索引加1的语法元素。对于具有符号值的源符元,该第一方法通过一个符号部分与一个绝对值部分来代表符号的值。该第一方法接着应用至绝对值部分。该第一方法可通过应用该第一方法至向量的每一分量来应用至对应多个向量的源符元。另提供解码器端的对应方法。另一方法提供一种在帧间预测编码中的运动向量差的水平分量与垂直分量的熵编码方法。如果绝对当前符元值大于针对当前源符元的对应的运动向量的分辨率相关的阈值,通过使用可变长度代码二进制化该绝对当前符元值的剩余绝对等级,获得第一二进制字符串;如果绝对当前符元值不大于该阈值,通过使用固定长度代码二进制化该绝对当前符元值的剩余绝对等级,获得第二二进制字符串。依据该绝对当前符元值是否大于该阈值,编码该第一二进制字符串或该第二二进制字符串。另提供解码器端的对应方法。提供又一种方法,其利用了在帧间预测编码的运动向量差的两个分量、或者帧内区块复制、帧内线复制或帧内串复制编码的区块向量差的两个分量之间的关联。决定第一旗标,该第一旗标指示第一分量的第一绝对值是否大于0,其中该第一分量对应该水平分量或者该垂直分量。决定第二旗标,该第二旗标指示第二分量的第二绝对值是否大于0,其中该第二分量对应该水平分量或者该垂直分量并且是一个与该第一分量不同的分量。在该第一旗标编码之后,使用基于该第一旗标获得上下文模型编码该第二旗标,或者一同编码一对该第一旗标与该第二旗标。另提供解码器端的对应方法。提供再一种方法,其利用了帧内先复制或者帧内串复制编码的偏移向量的两个分量的编码相关的冗余(redundancy)。信号化一个或者多个第一语法元素,来指示对应该水平分量的第一绝对值是否大于0,以及对应该垂直分量的第二绝对值是否大于0;以及仅仅当该一个或者多个第一语法元素指示该第一绝对值大于0并且该第二绝对值大于0时,信号化一个或者多个第二语法元素,其中该一个或者多个第二语法元素代表该水平分量的符号部分与该垂直分量的符号部分以及第二符号旗标代表该垂直分量的符号部分与该水平分量的符号部分。另提供解码器端的对应方法。附图说明图1是cabac处理的示例性区块示意图,其包含常规cabac模式与旁通模式的路径。图2是依据hevc与环内处理结合的适应性帧间/帧内视频编码系统的举例说明。图3是依据本发明的实施例的针对具有大字母表尺寸的源符元的熵编码的流程图。具体实施方式如下说明为实现本发明的最佳实施例。如下所述的内容仅仅为了举例说明本发明的精神,而并非是本发明的限制条件。本发明的范围需参考权利要求书来决定。本发明提出了熵编码的多种方面,来减少复杂性、增加压缩效率或者两者兼顾。在一方面,本发明揭露了一种针对具有大字母表尺寸的源符元(例如在视频编码系统中产生的语法元素)通用的熵编码方法。在pct专利申请,编号为pct/cn2015/081751,申请日为2015年6月18日,提供了一种通用的高效熵编码,其中一个无符号的(unsigned)源样本值是通过将最高有效位(mostsignificantbit,msb)信号化(signaling)以一个二进制格式来表达,该最高有效位后续是细化位(refinementbit)。样本值等于0的msb索引设定为-1。结果的码字(codeword)的前缀部分代表msb索引加1,表达为msb_idx_p1。一个无符号语法x的前缀部分msb_idx_p1是通过如下的等式给出后缀部分,以refinement_bits表达,代表从细化位获得的值并且如果msb_idx_p1>1则存在。解码的语法值x通过如下的等式给出对于一个有符号的(signed)源样本,上述方法是一同应用至该源样本的绝对值与该编码的符号比特。对于前缀部分的二进制化,通常使用一个一元树结构(unarytreestructure),其通过重复n个“1”后续一个“0”来指示一个整数n的方式来产生二进制码字符串。产生的二进制字符串(binarystring)是众所周知的一元码(unarycode)。后缀部分通常使用固定长度编码来二进制化。当最大样本值是已知时,该截断的(truncated)一元码与截断的二进制代码能够分别用于前缀部分与后缀部分的二进制化。表1是使用上述方法用于信号化一个无符号的语法值的语法表的举例说明。语法msb_idx_p1是首先信号化,通过备注(1-1)表示。如果msb_idx_p1大于1,语法refinement_bits信号化,如备注(1-2)所示。针对由输入参数语法type说明的不同的语法类型可使用不同的内容模型体系。表1.结果的二进制字符串能够通过基于文本的适应性二进制算术编码(cabac)来编码。前缀部分能够以具有更复杂上下文模型体系的cabac模式来编码。细化位与符号位可使用相对简单的上下文模型体系或者旁通模式来编码。举例来说,cabac模式能够用于编码对应最高有效位索引的位并且旁通模式可用来编码其他位。依据pct专利申请pct/cn2015/081751的通用的熵编码可达到在压缩效率与系统复杂度之间的平衡。然而,当源具有一个大的字符表尺寸与多个样本值的一个非降低(non-decreasing)的可能性分布时,前缀部分可能导致长码字。因此,本发明的第一方法利用一个不同的码字结构来进一步分割字母空间为两个或者更多个部分。该第一方法的一个实施例在表2中说明。该语法旗标msb_idx_p1_grt_flag是首先信号化,如备注(2-1)所示,以识别msb_idx_p1是否小于一个阈值msb_idx_thre。如果该旗标等于1(即msb索引加1大于或者等于阈值msb_idx_thre),接着该语法msb_idx_p1_minus_thre信号化,语法msb_idx_p1_minus_thre代表msb_idx_p1减去阈值msb_idx_thre,如备注(2-2)所示。在这种情况下,msb_idx_p1是通过将msb_idx_p1_minus_thre与msb_idx_thre相加来重建,如备注(2-4)所示。否则,语法值自身(即msb_idx_p1)信号化,如备注(2-3)所示。阈值msb_idx_thre可以是一个先前定义的值或者一个在序列参数集(sequenceparameterset,sps)、图像参数集(pictureparameterset,pps)或者切片头中的可变标记。上述码字结构对于熵编码具有高可能性接近msb_idx_thre的该源样本的前缀值是有效率的。在上述例子中,msb_idx_p1,而并非是前缀部分自身,用来与阈值相比较进行测试,而决定如何编码该前缀部分。据此,msb_idx_p1称为一个“与前缀部分相关的测试值”。然而,其他的测试值也可以用来实现该发明。举例来说,并非比较“msb_idx_p1”与阈值“msb_idx_thre”,可通过比较“msb_idx”与阈值“msb_idx_thre-1”来执行一个相等的测试。表2.在第一发明的另一个实施例中,旗标msb_idx_p1_gr0_flag是首先被编码以指示语法msb_idx_p1是否大于0。如果旗标等于1,接着语法值msb_idx_p1减去1使用如上所述的字母空间分割为两个或者更多部分的码字结构编码。基于第一方法的举例,其利用的旗标msb_idx_p1_gr0_flag如表3所示。在另一个例子中,当语法msb_idx_p1小于阈值msb_idx_thre时,语法msb_idx_p1通过编码(msb_idx_thre-1-msb_idx_p1)来表达,而不使用msb_idx_p1自身,如表4所示。如表3所示,语法msb_idx_p1_gr0_flag首先信号化,如备注(3-1)所示。如果语法msb_idx_p1_gr0_flag等于0,其表示msb_idx_p1等于0,如备注(3-2)所示。如果语法msb_idx_p1_gr0_flag不等于0,语法msb_idx_p1_grt_flag信号化,如备注(3-3)所示。如果语法msb_idx_p1_grt_flag等于0,语法msb_idx信号化,如备注(3-4)所示,并且msb_idx_p1重建,如备注(3-5)所示。如果语法msb_idx_p1_grt_flag不等于0,接着代表msb_idx_p1减去阈值的语法(即msb_idx_p1_minus_thre)信号化,如备注(3-6)所示。在这种情况下,msb_idx_p1是通过将msb_idx_p1_minus_thre与msb_idx_thre相加重建,如备注(3-7)所示。表3.表4中的语法结构与表3中的语法结构相似。然而,如果语法msb_idx_p1_grt_flag等于0,代表阈值减去msb索引的语法(即thre_minus_msb_idx)信号化,如备注(4-1)所示,并且msb_idx_p1被重建,如备注(4-2)所示。如果语法msb_idx_p1_grt_flag不等于0,那么代表msb_idx_p1减去阈值的语法(即msb_idx_p1_minus_thre)信号化,如备注(4-3)所示。在这样的情况下,msb_idx_p1重建,如备注(4-4)所示。表4.在上面的讨论中,使用了一个特殊的例子来举例说明本发明。然而,针对具有大字母表尺寸的通常熵编码也应用至其他的二进制化情况中。举例来说,源符元的二进制代表可通过应用rice二进制化程序或者k阶指数哥伦布二进制化程序(k-thorderexp-golomb(egk)binarizationprocess)至当前符元来获得。上述实施例可应用至编码一个与向量表达(例如运动向量差mvd与区块向量差bvd)相关的语法。上述的码字结构接着应用至每一向量分量。依据第一方法的实施例的语法能够支持将来自两个分量的旁通比特组合在一起。以这样的方式,组合的旁通比特能够一同编码,来增进比特流解析吞吐率。使用第一方法用于信号化与向量相关的语法的语法表的一个例子如表5所示。表5中所示的语法表被视作应用表4中的语法表分别至一个向量的两个分量。从备注(5-1)至备注(5-2)的语法行以及从备注(5-5)至备注(5-6)的语法行是与第一向量分量相关(即x-方向)。从备注(5-3)至备注(5-4)的语法行以及从备注(5-7)至备注(5-8)的语法行是与第二向量分量相关(即y-方向).表5.用于代表与一个大于或者等于msb_idx_thre的值相关的前缀部分的语法元素,例如msb_idx_p1_minus_thre与abs_msb_idx_p1_minus_thre,能够使用一个一元代码或者截断的一元代码二进制化。与前缀部分相关的并且对应一个小于msb_idx_thre的值的语法元素,例如msb_idx_p1与thre_minus_msb_idx,能够使用一个截断的一元代码或者固定长度编码来二进制化。结果的二进制字符串的一个或者多个比特能够在cabac模式下编码。举例来说,cabac模式能够用于编码该前缀二进制字符串的先导(leading)少许二进制码,并且旁通模式能够用于后续二进制码。在表2至表5中,多种语法元素,例如msb_idx_p1、thre_minus_msb_idx、msb_idx_p1_grt_flag等等,可用来举例说明示例性的语法设计,以结合本发明的实施例。然而,这些具体的示例性的语法元素并非本发明的限制。本领域的技术人员可使用相似或等同的语法元素来实现本发明但不偏离本发明的宗旨。上下文的选择可以是可选的,其基于语法类型以及二进制索引。不同的上下文可分配给来自不同的二进制索引的编码二进制码(codingbin)。在另一个例子中,一些二进制码与相邻的二进制码能够共享一组相同的上下文。在另一个例子中,所有的具有大于一个阈值的索引的二进制码是分配了一组相同的上下文。对于编码一个向量源,上下文的选择可进一步条件性地依据向量分量索引。举例来说,针对来自水平分量与垂直分量的cabac二进制码字符串,可分别使用两个上下文集合。在另一个例子中,一些上下文能够被水平分量与垂直分量共享。在另一个例子中,一些上下文对于编码mvd与bvd是共享的。在编码器端,表达一个语法值的比特成本(bitcost)是在决定该编码参数值的过程中被估计。对于在旁通模式下编码一个二进制字符码,比特成本等于一个比特。用于编码一个cabac二进制码的估计的比特成本可以从被选择的上下文的状态来获得。因此,用于代表一个语法值的估计的比特成本可通过累计个别的编码的cabac二进制码的估计的比特成本加上编码的旁通的二进制码的个数。以这样的方式,以相同的cabac二进制码字符串以及相同数量的旁通二进制码编码的所有的语法值将具有相同估计的比特成本。为了加速比特成本的估计,对于所有的cabac二进制字符串值的估计的比特成本可在每一编码单元的开始基于cabac状态来提前计算。建立通过cabac二进制字符串索引的一个查找表(look-uptable(lut))来存储结果的估计的比特成本。对于一个语法值的估计的比特成本可通过lut简单地将其cabca二进制码字符串映射至估计的比特成本。举例来说,一个系统可使用cabac模式来针对前缀部分编码二进制码字符串并且使用旁通模式来编码所有的以固定长度码表达的细化二进制码(refinementbin)。在这种情况下,lut映射该前缀值至估计的比特成本。如上所述的本发明的第一方法是作为一个通用的编码工具来开发,其对于熵编码对应不同的编码统计的不同的语法类型是有效的。其对于具有大自己表尺寸的源,例如在具有混合的视频内容类型与数种新语法类型的屏幕内容编码中产生的符元,是有效的,其中该数种新语法类型是从新的编码工具,包含帧内区块复制、调色板编码与串匹配编码(stringmatchingcoding),导致的。以下将说明一些参数选择的例子。举例来说,当应用第一方法来编码mvd时,对于水平分量该阈值可等于6,对于垂直分量该阈值可等于5。对于编码bvd,用于水平分量的阈值可等于5并且对于垂直分量的阈值等于4。在另一个例子中,对于以四分之一像素(quarter-pixel)精度编码mvd,针对水平分量该阈值可等于6,针对垂直分量该阈值可等于5。并且,对于以全像素(full-pixel)精度编码mvd,针对水平分量该阈值可等于4或5,针对垂直分量该阈值可等于3或4。用于相关的语法元素的熵编码的举例说明将如下详述。举例来说,语法元素abs_msb_idx_p1_gr0_flag是在cabac模式下编码并且语法元素abs_msb_idx_p1_grt_flag、thre_minus_abs_msb_idx、与abs_msb_idx_p1_minus_thre是在旁通模式下编码来编码bvd。在另一个例子中,语法元素abs_msb_idx_p1_gr0_flag与abs_msb_idx_p1_grt_flag是在cabac模式下编码并且语法元素thre_minus_abs_msb_idx、abs_msb_idx_p1_minus_thre是在旁通模式下编码来编码bvd。在另一个例子中,语法元素abs_msb_idx_p1_gr0_flag与abs_msb_idx_p1_grt_flag是在cabac模式下编码并且语法元素thre_minus_abs_msb_idx与abs_msb_idx_p1_minus_thre是在旁通模式下编码来编码mvd。对于编码bvd或者mvd,语法元素abs_msb_idx_p1_gr0_flag与abs_msb_idx_p1_grt_flag能够在cabac模式下编码并且语法元素thre_minus_abs_msb_idx与abs_msb_idx_p1_minus_thre针对先导(leading)二进制字符串是在cabac模式下编码,而针对剩余二进制字符串是在旁通模式下编码。在另一个例子中,用于编码bvd或者mvd时,针对2个先导二进制字符串,语法元素abs_msb_idx_p1_gr0_flag与abs_msb_idx_p1_grt_flag是在cabac模式下编码并且语法元素thre_minus_abs_msb_idx与abs_msb_idx_p1_minus_thre是在cabac模式下编码,并且剩余二进制字符串是在旁通模式下编码。针对偏移向量(offsetvector),语法元素abs_msb_idx_p1_gr0_flag与abs_msb_idx_p1_grt_flag能够在cabac模式下编码并且语法元素thre_minus_abs_msb_idx与abs_msb_idx_p1_minus_thre能够在旁通模式下编码。在另一个例子中,针对对应二进制字符串索引值小于一个阈值的二进制字符串,语法元素abs_msb_idx_p1_gr0_flag与abs_msb_idx_p1_grt_flag是在cabac模式下编码并且语法元素thre_minus_abs_msb_idx与abs_msb_idx_p1_minus_thre是在cabac模式下编码,在其他情况下使用旁通模式编码。在jctvc-s0085(li,etal.,adaptivemotionvectorresolutionforscreencontent,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,19thmeeting:strasbourg,fr,17–24oct.2014,document:jctvc-s0085)中揭露了一种方法,以支持在全像素精度或者四分之一像素精度下,适应性地选择运动向量差(motionvectordifference)与运动补偿。适应性地选择是基于一个新的切片(slice)分割标头(header)旗标,并且该方法适用于屏幕内容编码测试模型3.0(screencontentcodingtestmodel3.0(scm-3.0))。用于熵编码的第一方法的实施例能够与scm-3.0结合,来在不同的分辨率下编码mvd。举例来说,msb_idx_thre的一个预先决定的值能够分配给每一个支持的mvd分辨率等级。因此,该实施例能够更有效地适用于不同的mvd分辨率等级。以下将详细说明。在jctvc-s0142(rapaka,etal.,ce1:resultsoftest1.1,test2.1andtest3.1,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,19thmeeting:strasbourg,fr,17–24oct.2014,document:jctvc-s0142)中,提供了一种方法来编码bvd与mvd,其中每一个mvd分量是编码的。依据jctvc-s0142,一个上下文编码的旗标是首先编码的,以指示该当前mvd分量是否等于0。当mvd分量不等于0时,另一个旗标可以被编码以指示该mvd分量的绝对值是否大于n。如果mvd大于n,剩余的绝对值是使用旁通指数哥伦布(exp-golomb)代码来编码。一个旗标被编码以指示该向量的符号(sign)。该第二方法是通过修改该第一方法来开发的,以进一步增强在jctvc-s0142中揭露的mvd与bvd编码。举例来说,通过在sps、pps或者切片标头中信号化n,在jctvc-s0142中相同的码字结构可用来支持一个理想值n的适应性选择。更进一步,能够支持针对不同的mvd分辨率等级的不同的n。在另一个实施例中,可使用针对两个mvd分量的不同值的n。可通过在cabac模式下编码多个代表指数哥伦布(exp-golomb)前缀部分的二进制字符串来增加压缩效率。发展第三种方法来利用在一个源向量的两个分量之间的潜在联系。该第三方法针对运动补偿的帧间预测的运动向量差编码、如jctvc-s1005中所述的帧内区块复制的区块向量差编码、以及与如jctvc-s1103中所述的帧内串复制中的参考串的位置相关的偏移向量编码是有效的。依据第三方法,一个向量分量val[c]的绝对值是通过向量变量gr0flag[c]与absvalminus_1[c]表达,依据:|val[c]|=gr0flag[c]+absvalminus_1[c].(3)二进制变量gr0flag[c]的值等于1,指示向量分量val[c]的绝对值大于0。参数absvalminus_1[c]代表val[c]的绝对值减去1。参数c代表向量分量,其中c等于0或者1,分别对应x或者y分量。在第三方法的一个实施例中,熵编码是基于与其他分量相关的已编码的信息来应用至与一个分量相关的信息。举例来说,在一个实施例中,针对gr0flag[0]的语法是首先被编码,并且针对gr0flag[1]的语法是使用由编码的gr0flag[0]决定的选择的上下文模型来编码。表6是支持以上实施例的一个示例性的语法设计。两个语法旗标,abs_msb_idx_p1_gr0_flag[0]与abs_msb_idx_p1_gr0_flag[1],其中abs_msb_idx_p1_gr0_flag[0]是首先编码的。语法abs_msb_idx_p1_gr0_flag[1]是接下来依据abs_msb_idx_p1_gr0_flag[0]条件性编码的。语法元素abs_msb_idx_p1_gr0_flag[1]与abs_msb_idx_p1_gr0_flag[0]是彼此紧邻的,以使得条件性编码更简单。在另一个例子中,关于两个向量分量的信息是一同编码的。举例来说,一个语法元素gr0_flag_xy可用来指示(gr0flag[0],gr0flag[1])的值。语法gr0_flag_xy可使用一个具有最大值等于3的截断的一元代码来二进制化,并且获得的二进制字符串是在cabac模式下以由二进制字符串索引决定的上下文选择来编码。表6.熵编码的第四方法是针对在帧内串复制中的当前串相关的参考串的开始位置相关的偏移向量开发的。依据在jctvc-s1103与jctvc-r0098(li,etal.,“scce4:resultoftest3.1”,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,18thmeeting:sapporo,jp,30june–9july2014,document:jctvc-r0098)中公开的帧内串复制,当前像素串的像素值是通过从已编码的图像区域复制参考像素串来重建的。匹配的串长度以及匹配的串的开始位置相对当前串的开始位置的偏移向量在比特流中信号化。由于参考串的开始位置应该来自已编码图像区域,偏移向量不能具有等于或者小于0的分量。使用在jctvc-r0098中的坐标系统(coordinatesystem),其中正负号指的是相对于当前串的开始位置在水平方向左侧的位置以及在垂直方向上方的位置。在一个实施例中,用于代表向量(0,0)的未使用的码字是移除的,来熵编码参考串的偏移向量。在另一个实施例中,向量分量是各自编码的。如果首先编码的分量值等于0,接着第二分量的绝对值推导大于0。在另一个实施例中,向量(gr0flag[0],gr0flag[1])是通过编码语法元素gr0_flag_xy来共同编码,如在第三方法中定义的具有三个分别对应(gr0flag[0]=1,gr0flag[1]=0)、(gr0flag[0]=0,gr0flag[1]=1)与(gr0flag[0]=1,gr0flag[1]=1)的码字值。在另一个实施例中,语法gr0_flag_xy是通过具有最大值等于2的截断的一元代码来二进制化,并且获得的二进制字符串是在cabac模式下熵编码。使用两个上下文并且上下文的选择是由二进制字符串索引决定的。针对gr0_flag_xy的语法值0、1与2分别对应(gr0flag[0]=1,gr0flag[1]=0)、(gr0flag[0]=0,gr0flag[1]=1)与(gr0flag[0]=1,gr0flag[1]=1)。在另一个实施例中,编码偏移向量分量的符号旗标(sign[0],sign[1])。依据该实施例,关于向量(gr0flag[0],gr0flag[1])的信息是在符元编码之前信号化。仅仅当(gr0flag[0]==1&&gr0flag[1]==1)时,编码两个偏移向量分量的符号。否则,该符号推导为正。第四方法进一步排除了用于代表(sign[0]=1,sign[1]=1)的未使用码字,其中sign[c]等于1对应与负符号。在另一个实施例中,语法元素offset_sign_xy是用来编码符号旗标(sign[0],sign[1])。语法offset_sign_xy是使用一个具有最大值等于2的截断的一元代码来二进制化,并且获得的二进制字符串是在cabac模式下或者在旁通模式下编码。在cabac模式下,使用两个上下文并且上下文的选择是基于二进制字符串索引来决定。举例来说,针对offset_sign_xy的语法值0、1与2分别对应(sign[0]=0,sign[1]=1)、(sign[0]=1,sign[1]=0)与(sign[0]=0,sign[1]=0)。图3是依据本发明的实施例的具有大字母表尺寸的源符元的熵编码的示例性流程图。在步骤310,接收一个具有当前符元值属于一个符元值集合的源符元。在步骤320,决定针对当前符元值的一个msb索引与任何的细化位。在步骤330中,测试该msb索引加1,以决定是否大于或者等于一个阈值。如果结果为“是”,执行步骤340,如果结果为“否”,则执行步骤350。在步骤340,通过使用第一可变长度代码二进制化与msb索引相关的第一前缀部分,获得第一二进制串。在步骤350,通过使用第二可变长度代码或者第一固定长度代码二进制化与msb索引相关的第二前缀部分,获得第二二进制串。在步骤360,如果任何的细化位是存在的,通过使用第二固定长度代码或者第一截断二进制代码来二进制化与当前符元值的一个或者多个细化位对应的后缀部分,获得第三二进制串。接着,在步骤370,使用cabac模式编码该第一二进制串与该第二二进制串中的至少一个。上述流程图尝试说明了依据本发明的实施例的针对具有大字母表尺寸的源符元的熵编码的举例说明。本领域的技术人员可修改每一步骤,重新安排这些步骤,拆分一个步骤或者组合多个步骤来实现本发明都将不偏离本发明的精神。上述说明能够使得本领域的技术人员实现本发明,如在一个具体应用的上下文中提供的以及其所需。所描述的实施例的多种变型对于本领域技术人员来说是可以预见的,并且上述内容中所描述的通用的准则也将应用至其他的实施例。因此,本发明并不仅仅局限于上述说明的实施例,而应该扩展至与所揭露的准则与创新性特点的最广的范围。在上述具体说明中,提供了多种具体的细节,其仅仅为了给本领域技术人员提供对本发明的更深入理解。然而,本领域技术人员可了解本发明是可以实施的。本发明的上述实施例可使用多种硬件、软件代码或者其组合来实现。举例来说,本发明的实施例可以是一个整合至视频压缩芯片的电路,或者是整合至视频压缩软件的程序代码以执行上述处理。本发明的一个实施例也可以是在数据信号处理器(digitalsignalprocessor(dsp))上执行的程序代码,来执行上述处理。本发明也可以设计多种功能,其通过计算机处理器、数字信号处理器、微处理器或者场可编程栅阵列(fieldprogrammablegatearray(fpga))执行。通过执行定义了本发明的实施例的具体方法的机器可读软件代码或者固件代码,这些处理器能够设置为依据本发明执行具体的任务。软件代码或者固件代码是使用不同的程序语言以及不同的格式或者风格来开发。软件代码也可针对不同的目标平台编制。然而,用于执行本发明的实施例的任务的软件代码与其他方式设置代码的不同的代码格式、风格与语言都将不偏离本发明的精神与范围。本发明能够以其他具体形式的实施例实现,而不偏离本发明的精神与主要特征。所描述的实施例仅仅用来举例说明,而并非用来限制。因此,本发明的范围是由权利要求书决定而并非是上述具体说明来决定。权利要求的所有均等变化也都包含在权利要求的范围之中。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1