CN100596198C - 一种编码方法及编码器 - Google Patents
一种编码方法及编码器 Download PDFInfo
- Publication number
- CN100596198C CN100596198C CN 200610164457 CN200610164457A CN100596198C CN 100596198 C CN100596198 C CN 100596198C CN 200610164457 CN200610164457 CN 200610164457 CN 200610164457 A CN200610164457 A CN 200610164457A CN 100596198 C CN100596198 C CN 100596198C
- Authority
- CN
- China
- Prior art keywords
- probability distribution
- distribution information
- encoded
- variable length
- length code
- 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
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种编码方法,该方法包括:获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息;利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。另外,本发明还提供了一种编码器,该熵编码器包括:概率分布信息排除单元、变长码表生成单元和编码执行单元。本发明能够提高熵编码的编码效率,降低码率,实现峰值信噪比的提高。
Description
技术领域
本发明涉及视频压缩编码技术,尤其涉及一种编码方法及一种编码器。
背景技术
视频信号由于信息量大、传输网络带宽要求高,因此在视频信号传输之前,需要对其进行压缩编码,以节省传输带宽。为了适应全球工业与经济的发展,国内外标准化组织加快了制定视频编码标准的步伐。
熵编码是视频编码***中的核心技术,是整个视频编码框架的最后一个模块,其主要功能是去除数据的统计冗余。熵编码的对象是之前所有模块生成的一系列语法元素,包括宏块类型、参考帧索引、编码模式(CBP)、量化参数(QP)、运动矢量的残差、变换和量化后的残差系数等。在所有这些语法元素中,残差系数的信息量是最大的,同时也是最具编码压缩空间的,因而一直以来都是熵编码研究的重点。
熵编码技术主要分为两类:变长编码(VLC,Variable Length Coding)和算术编码(Arithmetic Coding)。算术编码利用编码符号的联合概率,易于概率匹配,编码效率高,但由于实现复杂代价高,使其应用受到限制。变长编码实现简单、计算复杂性低,因此在视频编码标准及消费电子产品中被广泛采用。如二维VLC(2D-VLC)熵编码器,3D-VLC熵编码器,以及基于上下文自适应的可变长编码(CAVLC)熵编码器等。
传统的变长熵编码方法是通过在编码器中存放语法元素对应的变长码表来实现变长编码的。在一些基于内容的熵编码算法中,采用了依据条件概率为一个语法元素设计多个变长码表,在编码过程中依据条件的不断变化对码表进行切换的技术。其中,所述变长码表可以是一维的,即一个符号对应一个码字;也可以是二维的,即一个符号对对应一个码字。
但是,由于这些码表本身是依据对应语法元素的概率分布事先生成的,在整个编码过程中不会实时更改,基于内容自适应的程度有限,因此编码效率不高。并且,实时统计语法元素概率分布的复杂度过高,实现起来较为复杂。
发明内容
有鉴于此,本发明的主要目的在于提供一种编码方法,提高熵编码的编码效率。
为达到上述目的,本发明提供的编码方法如下:
获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除所有run值大于nlr的符号的概率分布信息;
利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。
另外,本发明还提供了一种编码器,能够提高熵编码的编码效率。
该编码器包括:概率分布信息排除单元、变长码表生成单元和编码执行单元,其中,
概率分布信息排除单元,用于获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所获取的概率分布信息中排除所有run值大于nlr的符号的概率分布信息,并用于将排除后的概率分布信息发送给变长码表生成单元;
变长码表生成单元,用于接收来自概率分布信息排除单元的概率分布信息,根据收到的概率分布信息生成变长码表,并用于将生成的变长码表发送给编码执行单元;
编码执行单元,用于接收来自变长码表生成单元的变长码表,并根据收到的变长码表对当前待编码符号进行编码。
由此可见,本发明在对块进行熵编码的过程中,编码端需要根据当前待编码符号的取值条件对当前块待编码语法元素各符号的概率分布信息进行排除,以排除实际中不可能出现的符号,然后根据排除后的概率分布信息所生成的变长码表对当前待编码符号进行编码,而不是直接根据保存的变长码表进行编码。这样就可以将原本分配给这些实际中不可能出现的符号的码字节省下来,有效减少码字的长度,提高熵编码的编码效率,从而能够降低码率,实现峰值信噪比的提高。并且,无须实时统计语法元素的概率分布,从而降低了编解码的复杂度。
附图说明
图1为本发明实施例中的编码器结构示意图。
图2为本发明实施例中的编码流程图。
图3为本发明实施例中的概率分布信息排除单元结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。
本发明提供的变长熵编码方法的基本思想是,获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除不符合取值条件的概率分布信息;利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。
对应本发明所提供的熵编码方法,本发明还提供一种编码器,其具体结构参见图1所示,主要包括:概率分布信息排除单元、变长码表生成单元和编码执行单元,其中,
概率分布信息排除单元,用于获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所获取的概率分布信息中排除不符合取值条件的概率分布信息,并用于将排除后的概率分布信息发送给变长码表生成单元;
变长码表生成单元,用于接收来自概率分布信息排除单元的概率分布信息,根据收到的概率分布信息生成变长码表,并用于将生成的变长码表发送给编码执行单元;
编码执行单元,用于接收来自变长码表生成单元的变长码表,并根据收到的变长码表对当前待编码符号进行编码。
本发明适用于各种采用变长码表进行编码的熵编码技术。为便于理解,下面以2D-VLC为例对本发明进行详细说明。
2D-VLC是针对离散余弦变换(DCT)系数编码的变长熵编码技术,该技术通过“z”字形(zig-zag)扫描和游程编码将块系数表示成(run,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序列的所有run的总和,即所有待编码符号的run的总和。比如,以4x4块为例,numcoeff的取值范围是0~16,totrun的取值范围是0~15。
为便于解码端解码,编码端需要将所述预制信息发送给解码端,在发送之前,编码端需要对所述预制信息进行编码。具体的对numcoeff和totrun进行编码的方式可通过查找对应的1D_VLC表实现。
比如,制定一套用来编码numcoeff的1D_VLC表,利用邻块对当前块的numcoeff作预测,根据预测值来选择编码当前块的numcoeff时采用哪一张1D_VLC表,并通过查找选择的1D_VLC表对numcoeff进行编码。这种选表的方式本质上是根据条件概率P(当前块numcoeff/邻块对当前块numcoeff的预测值)来为numcoeff分配码字,这样能利用空间上相邻块之间的相关性。
另外,也可以制定一套用来编码totrun的1D_VLC表,利用当前块的numcoeff对当前块的totrun作预测,然后根据预测值来选择编码当前块的totrun时采用哪一张1D_VLC表,并通过查找选择的1D_VLC表对totrun进行编码。这里实际上是利用了当前块的numcoeff和totrun的限制关系totrun<=16-numcoeff。
步骤202:在对待编码块的第一对待编码符号(run,level)进行编码之前,设置一计数变量k及一变量nlr。
其中,k表示当前剩下的未编码的(run,level)对数;nlr表示当前剩下的所有未编码符号(run,level)的run的和。在初始情况下,k=numcoeff,nlr=totrun,即为k赋初值numcoeff;为nlr赋初值totrun。
步骤203:判断k是否大于0,若是,则执行步骤204;否则,表示当前块的所有(run,level)对已经编码完,结束本流程,完成对该块的全部编码过程。
步骤204:根据nlr对二维概率分布表percent_table进行调整。
由于对于当前的一对(run,level),其中run的取值不可能超出当前的nlr,即run<=nlr,因此可以依据nlr对二维概率分布表percent_table中表征run的那一维进行截断,舍弃run>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)对进行编码。
其中,步骤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)对为语法元素进行了详细说明,需要说明的是,对于其它形式的语法元素,如run、level、(last,run,level)等,本发明同样适用。比如,对于语法元素为run的情况,可以预先在编解码端存放run的一维符号概率分布表,在熵编码过程中,根据run的取值变化对所述一维符号概率分布表进行调整,排除当前实际中不可能出现的符号,然后再根据调整后的概率分布表对run进行编码,其中具体的处理过程与上述实施例类似,这里不再一一赘述。
以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1、一种编码方法,其特征在于,该方法包括:
获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所述概率分布信息中排除所有零行程run值大于所述块中当前剩余的所有未编码符号的run的和nlr的符号的概率分布信息;
利用排除后的概率分布信息生成变长码表,根据生成的变长码表对当前待编码符号进行编码。
2、根据权利要求1所述的方法,其特征在于,所述语法元素为零行程run、或run与非零系数值level的数对(run,level)。
3、根据权利要求1所述的方法,其特征在于,所述nlr的初始值为编码前所述块中所有待编码符号的run的总和。
4、根据权利要求1至3任一项所述的方法,其特征在于,所述对当前待编码符号进行编码之后进一步包括:
判断刚编码完的待编码符号是否为最后一个待编码符号,如果是,则结束本方法;否则,继续对下一个待编码符号进行编码。
5、根据权利要求4所述的方法,其特征在于,
所述利用排除后的概率分布信息生成变长码表包括:对调整后的概率分布信息进行哥伦布指数Exp_golomb编码,生成相应的golomb_codenum表、escape表和golomb_grab;
所述根据生成的变长码表对当前待编码符号进行编码包括:根据生成的golomb_codenum表、escape表和golomb_grab对当前待编码符号进行编码。
6、根据权利要求4所述的方法,其特征在于,该方法进一步包括:
计算所述块的非零系数个数numcoeff以及所述块的run序列的所有run之和totrun,并对numcoeff和totrun分别进行编码后发送给解码端。
7、根据权利要求6所述的方法,其特征在于,
所述对numcoeff进行编码包括:为numcoeff设置一套一维变长编码1D_VLC表,利用邻块对当前块的numcoeff进行预测,根据预测值选择1D_VLC表,并通过查找选择的1D_VLC表对numcoeff进行编码;
所述对totrun进行编码包括:为totrun设置一套1D_VLC表,利用当前块的numcoeff对当前块的totrun进行预测,根据预测值选择1D_VLC表,并通过查找选择的1D_VLC表对totrun进行编码。
8、根据权利要求1所述的方法,其特征在于,所述获取当前块待编码语法元素各符号的概率分布信息之前进一步包括:保存当前块待编码语法元素各符号的概率分布信息。
9、一种编码器,其特征在于,该编码器包括:概率分布信息排除单元、变长码表生成单元和编码执行单元,其中,
概率分布信息排除单元,用于获取当前块待编码语法元素各符号的概率分布信息,根据当前待编码符号的取值范围从所获取的概率分布信息中排除所有零行程run值大于当前剩余的所有未编码符号的run的和nlr的符号的概率分布信息,并用于将排除后的概率分布信息发送给变长码表生成单元;
变长码表生成单元,用于接收来自概率分布信息排除单元的概率分布信息,根据收到的概率分布信息生成变长码表,并用于将生成的变长码表发送给编码执行单元;
编码执行单元,用于接收来自变长码表生成单元的变长码表,并根据收到的变长码表对当前待编码符号进行编码。
10、根据权利要求9所述的编码器,其特征在于,所述概率分布信息排除单元包括:信息获取单元、信息排除单元和信息发送单元,其中,
信息获取单元,用于获取所述当前块待编码语法元素各符号的概率分布信息,并将获取的概率分布信息发送给信息排除单元;
信息排除单元,用于接收来自信息获取单元的概率分布信息,并用于计算所述块中所有未编码符号的零行程run的和nlr,从收到的概率分布信息中排除所有run值大于nlr的符号的概率分布信息,并将经过排除的概率分布信息发送给信息发送单元;
信息发送单元,用于接收来自信息排除单元的概率分布信息,并将收到的概率分布信息发送给变长码表生成单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610164457 CN100596198C (zh) | 2006-12-05 | 2006-12-05 | 一种编码方法及编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610164457 CN100596198C (zh) | 2006-12-05 | 2006-12-05 | 一种编码方法及编码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101198055A CN101198055A (zh) | 2008-06-11 |
CN100596198C true CN100596198C (zh) | 2010-03-24 |
Family
ID=39548149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610164457 Active CN100596198C (zh) | 2006-12-05 | 2006-12-05 | 一种编码方法及编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100596198C (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795168B (zh) * | 2009-02-03 | 2012-12-26 | 雷凌科技股份有限公司 | 用于通讯***的信噪比软消息的趋近方法 |
CN102648583B (zh) * | 2009-10-05 | 2015-05-20 | 法国电信 | 用于编码和解码图像的方法、对应的编码和解码装置 |
US9094691B2 (en) * | 2010-03-15 | 2015-07-28 | Mediatek Singapore Pte. Ltd. | Methods of utilizing tables adaptively updated for coding/decoding and related processing circuits thereof |
CN102377996B (zh) * | 2010-08-05 | 2014-04-30 | 华为技术有限公司 | 上下文自适应可变长编码方法及装置 |
HUE028417T2 (en) | 2011-01-14 | 2016-12-28 | Ge Video Compression Llc | Entropy coding and decoding scheme |
CN102186087B (zh) * | 2011-06-24 | 2013-06-12 | 哈尔滨工业大学 | 用于二进制算术编码可并行的非零系数上下文建模方法 |
CN108092670B (zh) * | 2017-11-03 | 2019-06-07 | 西安万像电子科技有限公司 | 编码方法和装置 |
US11528490B2 (en) | 2018-04-13 | 2022-12-13 | Zhejiang University | Information preserving coding and decoding method and device |
CN110545435B (zh) * | 2018-05-28 | 2023-05-12 | 深信服科技股份有限公司 | 一种基于概率模型的桌面像素编码方法、装置及存储介质 |
US10652581B1 (en) * | 2019-02-27 | 2020-05-12 | Google Llc | Entropy coding in image and video compression using machine learning |
CN116233389A (zh) * | 2021-12-03 | 2023-06-06 | 维沃移动通信有限公司 | 点云编码处理方法、点云解码处理方法及相关设备 |
-
2006
- 2006-12-05 CN CN 200610164457 patent/CN100596198C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101198055A (zh) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100596198C (zh) | 一种编码方法及编码器 | |
CN101420614B (zh) | 一种混合编码与字典编码整合的图像压缩方法及装置 | |
KR100751869B1 (ko) | 적응 블록 변환을 위한 콘텍스트-기반 적응 가변장 부호화 | |
KR0180169B1 (ko) | 가변길이 부호기 | |
NO934396L (no) | Underordnet system for ytterligere bildeprosessering med signalkompresjon ved hjelp av adaptivt tilpassende signalblokker | |
US20140010278A1 (en) | Method and apparatus for coding adaptive-loop filter coefficients | |
CN104365099A (zh) | 用于变换系数等级的熵编码和熵解码的参数更新方法以及使用该方法的变换系数等级的熵编码装置和熵解码装置 | |
CN104205831A (zh) | 针对HEVC中的CABAC的哥伦布-赖斯(Golomb-Rice)/EG编码技术 | |
CN101267553A (zh) | 一种实现编、解码的方法和装置 | |
CN102062855A (zh) | 基于游程差值编码的雷达回波压缩/解压算法 | |
CA2289858C (en) | Lossless image compression with tree coding | |
CN102355578B (zh) | 一种熵解码方法、装置 | |
CN100551064C (zh) | 变长编码方法及装置 | |
CN109672891B (zh) | Jpeg图像的无损二次压缩方法 | |
CN102256126A (zh) | 混合图像的编码方法 | |
CN101047857B (zh) | 实现分层变长编解码的方法 | |
CN113453002B (zh) | 量化与熵编码方法及装置 | |
Kumar et al. | Comparative analysis of wavelet based compression methods | |
CN100469144C (zh) | 熵编码器表格变换方法 | |
CN103002275A (zh) | 用于cavlc编码的双系数扫描方法 | |
Balaji et al. | Spatial domain image packet prioritization for energy-constrained wireless communications | |
Krivoulets | Efficient entropy coding for image compression | |
Guo et al. | Memory-efficient architecture including DWT and EC for JPEG2000 | |
Guo et al. | An improved CAVLC entropy encoder of H. 264/AVC and FPGA implementation | |
Shanbehzadeh et al. | Index compressed image adaptive vector quantisation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210427 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |