一种编码方法及编码器的制作方法

文档序号:7974215阅读:224来源:国知局

专利名称::一种编码方法及编码器的制作方法
技术领域
:本发明涉及视频压缩编码技术,尤其涉及一种编码方法及一种编码器。
背景技术
:视频信号由于信息量大、传输网络带宽要求高,因此在视频信号传输之前,需要对其进行压缩编码,以节省传输带宽。为了适应全球工业与经济的发展,国内外标准化组织加快了制定视频编码标准的步伐。熵编码是视频编码系统中的核心技术,是整个视频编码框架的最后一个模块,其主要功能是去除数据的统计冗余。熵编码的对象是之前所有模块生成的一系列语法元素,包括宏块类型、参考帧索引、编码模式(CBP)、量化参数(QP)、运动矢量的残差、变换和量化后的残差系数等。在所有这些语法元素中,残差系数的信息量是最大的,同时也是最具编码压缩空间的,因而一直以来都是熵编码研究的重点。熵编码4支术主要分为两类变长编码(VLC,VariableLengthCoding)和算术编码(ArithmeticCoding)。算术编码利用编码符号的联合概率,易于概率匹配,编码效率高,但由于实现复杂代价高,使其应用受到限制。变长编码实现简单、计算复杂性低,因此在视频编码标准及消费电子产品中被广泛采用。如二维VLC(2D-VLC)熵编码器,3D-VLC熵编码器,以及基于上下文自适应的可变长编码(CAVLC)熵编码器等。传统的变长熵编码方法是通过在编码器中存放语法元素对应的变长码表来实现变长编码的。在一些基于内容的熵编码算法中,采用了依据条件概率为一个语法元素设计多个变长码表,在编码过程中依据条件的不断变化对码表进行切换的技术。其中,所述变长码表可以是一维的,即一个符号对应一个码字;也可以是二维的,即一个符号对对应一个码字。但是,由于这些码表本身是依据对应语法元素的概率分布事先生成的,在整个编码过程中不会实时更改,基于内容自适应的程度有限,因此编码效率不高。并且,实时统计语法元素概率分布的复杂度过高,实现起来较为复杂。
发明内容有鉴于此,本发明的主要目的在于提供一种编码方法,提高熵编码的编码效率。为达到上述目的,本发明提供的编码方法如下获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息;利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。另外,本发明还提供了一种编码器,能够提高熵编码的编码效率。该编码器包括概率分布信息排除单元、变长码表生成单元和编码执行单元,其中,概率分布信息排除单元,用于获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所获取的概率分布信息中排除不符合取值条件的概率分布信息,并用于将排除后的概率分布信息发送给变长码表生成单元;变长码表生成单元,用于接收来自概率分布信息排除单元的概率分布信息,根据收到的概率分布信息生成变长码表,并用于将生成的变长码表发送给编码执行单元;编码执行单元,用于接收来自变长码表生成单元的变长码表,并根据收到的变长码表对当前待编码符号进行编码。由此可见,本发明在对块进行熵编码的过程中,编码端需要根据当前待编码符号的取值条件对当前块待编码语法元素各符号的概率分布信息进行排除,以排除实际中不可能出现的符号,然后根据排除后的概率分布信息所生成的变长码表对当前待编码符号进行编码,而不是直接根据保存的变长码表进行编码。这样就可以将原本分配给这些实际中不可能出现的符号的码字节省下来,有效减少码字的长度,提高熵编码的编码效率,从而能够降低码率,实现峰值信噪比的提高。并且,无须实时统计语法元素的概率分布,从而降低了编解码的复杂度。图1为本发明实施例中的编码器结构示意图。图2为本发明实施例中的编码流程图。图3为本发明实施例中的概率分布信息排除单元结构示意图。具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。本发明提供的变长熵编码方法的基本思想是,获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息;利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。对应本发明所提供的熵编码方法,本发明还提供一种编码器,其具体结构参见图l所示,主要包括概率分布信息排除单元、变长码表生成单元和编码执行单元,其中,率分布信息排除单元,用于获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所获取的概率分布信息中排除不符合取值条件的概率分布信息,并用于将排除后的概率分布信息发送给变长码表生成单元;变长码表生成单元,用于接收来自概率分布信息排除单元的概率分布信息,根据收到的概率分布信息生成变长码表,并用于将生成的变长码表发送给编码执行单元;编码执行单元,用于接收来自变长码表生成单元的变长码表,并根据收到的变长码表对当前待编码符号进行编码。本发明适用于各种采用变长码表进行编码的熵编码技术。为便于理解,下面以2D-VLC为例对本发明进行详细说明。2D-VLC是针对离散余弦变换(DCT)系数编码的变长熵编码技术,该技术通过"z"字形(zig-zag)扫描和游程编码将块系数表示成(mn,level)的形式,并采用变长码来编码此(run,level)数对。其中,run表示零行程,level表示非零系数值。由于2D-VLC也是采用VLC表进行变长编码,因此可以将本发明动态生成VLC表的策略应用于这种熵编码方法。在本实施例中,编解码端存放的二维表vlc一table不再是原来根据概率分布事先生成的(run,level)的码字表codenum—table,而是一个直接反映(run,level)相克率分布的二维概率分布表percent—table。该percent—table表中的每个点对应着一种可能的(run,level)情况发生的概率,即待编码语法元素的各个符号的概率分布信息。该二维概率分布表percent—table可以存储在图1所示的概率分布信息存储单元中。参见图2所示,本实施例中的变长熵编码流程主要包括以下步骤步骤201:统计预制信息numcoeff和totrun。其中,numcoeff表示当前块的非零系数个数;totrun表示当前块的run序列的所有mn的总和,即所有待编码符号的run的总和。比如,以4x4块为例,numcoeff的取值范围是0~16,totrun的取值范围是0~15。为便于解码端解码,编码端需要将所述预制信息发送给解码端,在发送之前,编码端需要对所述预制信息进行编码。具体的对numcoeff和totrun进行编码的方式可通过查找对应的ID—VLC表实现。比如,制定一套用来编码numcoeff的ID—VLC表,利用邻块对当前块的numcoeff作预测,根据预测值来选择编码当前块的numcoeff时采用哪一张1D—VLC表,并通过查找选择的ID—VLC表对numcoeff进行编码。这种选表的方式本质上是根据条件概率P(当前块numcoeff/邻块对当前块numcoeff的预测值)来为numcoeff分配码字,这样能利用空间上相邻块之间的相关性。另外,也可以制定一套用来编码totmn的1D_VLC表,利用当前块的numcoeff对当前块的totrun作预测,然后^^艮据预测值来选择编码当前块的totrun时采用哪一张ID—VLC表,并通过查找选择的ID—VLC表对totmn进行编码。这里实际上是利用了当前块的numcoeff和totrun的限制关系totrun<=16-numcoeff。步骤202:在对待编码块的第一对待编码符号(run,level)进行编码之前,设置一计数变量k及一变量nlr。其中,k表示当前剩下的未编码的(run,level)对数;nlr表示当前剩下的所有未编码符号(run,level)的run的和。在初始情况下,k=numcoeff,nlr=totrun,艮卩为k贝武#刀{直numcoeff;为nlr1武#刀<直totrun。步骤203:判断k是否大于O,若是,则执行步骤204;否则,表示当前块的所有(run,level)对已经编码完,结束本流程,完成对该块的全部编码过程。步骤204:根据nlr对二维概率分布表percent_table进行调整。由于对于当前的一对(run,level),其中run的取值不可能超出当前的nlr,即run<=nlr,因此可以依据nlr对二维概率分布表percent—table中表征run的那一维进行截断,舍弃mn>nlr的那些点。也就是说,排除那些当前实际中不可能出现的(run,level)对,从所述二维概率分布表中排除所有run值大于nlr的符号的概率分布信息。步骤204可由图1中的概率分布信息调整单元完成。步骤205:根据调整后的二维概率分布表percent—table动态生成(run,level)的变长码表。步骤206:根据动态生成的变长码表对当前待编码的(run,level)对进行编码。比如,对截断后的概率分布表进行指数哥伦布(Exp—golomb)编码,动态生成相应的golomb—codenum表、escape表和golomb—grab,然后,才艮据动态生成的golomb—codenum表、escape表和golomb—grab对当前的(run,level)对进4于编码。其中,步骤205可由图1中的变长码表生成单元完成;步骤206可由图1中的熵编码执行单元完成。步骤207:编码完当前的(run,level)对后,对变量k和nlr进行更新,并在更新后返回执行步骤203。其中,更新后的k-k-1,更新后的nlr=nlr-run,此处的run是指刚编码完的(run,level)对中的run。返回执行步骤203实际上是判断步骤206所述的当前待编码符号(run,level)即步骤207刚编码完的(run,level)是否为最后一个待编码符号,如果是,则结束本流程;否则,继续对下一个待编码符号进行编码。参见图3所示,在本实施例中,图1所示的概率分布信息调整单元可包括信息获取单元、信息排除单元和信息发送单元,其中,信息获取单元,用于获取所述当前块待编码语法元素各符号的概率分布信息,并将获取的概率分布信息发送给信息排除单元;信息排除单元,用于接收来自信息获取单元的概率分布信息,并用于计算所述块中所有未编码符号的run的和nlr,从收到的概率分布信息中排除所有run值大于nlr的符号的概率分布信息,并将经过排除的概率分布信息发送给信息发送单元;信息发送单元,用于接收来自信息排除单元的概率分布信息,并将收到的概率分布信息发送给变长码表生成单元。采用图2所示的方法,可以将原本分配给这些实际中不可能出现的(run,level)对的码字节省下来,而分配给当前有可能出现的符号。这样的策略能够有效减少码字的长度,提高熵编码的编码效率,从而实现峰值信噪比的提高,降低码率。本实施例主要是以(run,level)对为语法元素进行了详细说明,需要说明的是,对于其它形式的语法元素,如mn、level、(last,run,level)等,本发明同样适用。比如,对于语法元素为mn的情况,可以预先在编解码端存放run的一维符号概率分布表,在熵编码过程中,根据run的取值变化对所述一维符号概率分布表进行调整,排除当前实际中不可能出现的符号,然后再根据调整后的概率分布表对run进行编码,其中具体的处理过程与上述实施例类似,这里不再一一赘述。以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种编码方法,其特征在于,该方法包括获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息;利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。2、根据权利要求1所述的方法,其特征在于,所述语法元素为零行程run、或run与非零系数值level的数对(run,level)。3、根据权利要求2所述的方法,其特征在于,所述当前待编码符号的取值条件为当前待编码符号的run的最大值。4、根据权利要求3所述的方法,其特征在于,所述run的最大值为所述块中所有未编码符号的run的和nlr;所述根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息为从所述概率分布信息中排除所有run值大于nlr的符号的概率分布信息。5、根据权利要求4所述的方法,其特征在于,所述nlr的初始值为所述块中所有待编码符号的run的总和。6、根据权利要求1至5任一项所述的方法,其特征在于,所述对当前待编码符号进行编码之后进一步包括判断所述当前待编码符号是否为最后一个待编码符号,如果是,则结束本方法;否则,继续对下一个待编码符号进行编码。7、根据权利要求6所述的方法,其特征在于,'所述利用排除后的概率分布信息生成变长码表包括对调整后的概率分布信息进行哥伦布指数Exp—golomb编码,生成相应的golomb—codenum表、escape表和golomb—grab;所述根据生成的变长码表对当前待编码符号进行编码包括根据生成的golomb—codenum表、escape表和golomb—grab对当前待编码符号进行编码。8、根据权利要求6所述的方法,其特征在于,该方法进一步包括计算所述块的非零系数个数numcoeff以及所述块的run序列的所有run之和totrun,并对numcoeff和totrun分别进行编码后发送给解码端。9、根据权利要求8所述的方法,其特征在于,所述对numcoeff进行编码包括为numcoeff设置一套一维变长编码ID—VLC表,利用邻块对当前块的numcoeff进行预测,根据预测值选择ID—VLC表,并通过查找选择的ID—VLC表对numcoeff进行编码;所述对totrun进行编码包括为totrun设置一套ID—VLC表,利用当前块的numcoeff对当前块的totrun进4亍预测,4艮据预测值选择ID—VLC表,并通过查找选择的ID—VLC表对totrun进行编码。10、根据权利要求1所述的方法,其特征在于,所述获取当前块待编码语法元素各符号的概率分布信息之前进一步包括保存当前块待编码语法元素各符号的概率分布信息。11、一种编码器,其特征在于,该编码器包括概率分布信息排除单元、变长码表生成单元和编码执行单元,其中,概率分布信息排除单元,用于获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所获取的概率分布信息中排除不符合取值条件的概率分布信息,并用于将排除后的概率分布信息发送给变长码表生成单元;变长码表生成单元,用于接收来自概率分布信息排除单元的概率分布信息,根据收到的概率分布信息生成变长码表,并用于将生成的变长码表发送给编码执行单元;编码执行单元,用于接收来自变长码表生成单元的变长码表,并根据收到的变长码表对当前待编码符号进行编码。12、根据权利要求11所述的编码器,其特征在于,所述概率分布信息排除单元包括信息获取单元、信息排除单元和信息发送单元,其中,信息获取单元,用于获取所述当前块待编码语法元素各符号的概率分布信息,并将获取的概率分布信息发送给信息排除单元;信息排除单元,用于接收来自信息获取单元的概率分布信息,并用于计算所述块中所有未编码符号的零行程run的和nlr,从收到的概率分布信息中排除所有run值大于nlr的符号的概率分布信息,并将经过排除的概率分布信息发送给信息发送单元;信息发送单元,用于接收来自信息排除单元的概率分布信息,并将收到的概率分布信息发送给变长码表生成单元。全文摘要本发明提供了一种编码方法,该方法包括获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息;利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。另外,本发明还提供了一种编码器,该熵编码器包括概率分布信息排除单元、变长码表生成单元和熵编码执行单元。本发明能够提高熵编码的编码效率,降低码率,实现峰值信噪比的提高。文档编号H04N7/26GK101198055SQ20061016445公开日2008年6月11日申请日期2006年12月5日优先权日2006年12月5日发明者崔春晖,熊联欢,欣金申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1