CN1917645A - 对系数块进行编码的方法 - Google Patents
对系数块进行编码的方法 Download PDFInfo
- Publication number
- CN1917645A CN1917645A CN 200510093682 CN200510093682A CN1917645A CN 1917645 A CN1917645 A CN 1917645A CN 200510093682 CN200510093682 CN 200510093682 CN 200510093682 A CN200510093682 A CN 200510093682A CN 1917645 A CN1917645 A CN 1917645A
- Authority
- CN
- China
- Prior art keywords
- coefficient
- strip
- coding
- group
- encoding
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 126
- 238000013139 quantization Methods 0.000 claims description 24
- 230000006835 compression Effects 0.000 claims description 10
- 238000007906 compression Methods 0.000 claims description 10
- 230000009466 transformation Effects 0.000 claims description 5
- 238000011002 quantification Methods 0.000 abstract 1
- 238000013507 mapping Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000011423 initialization method Methods 0.000 description 2
- 101000969688 Homo sapiens Macrophage-expressed gene 1 protein Proteins 0.000 description 1
- 102100021285 Macrophage-expressed gene 1 protein Human genes 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种对系数块进行编码的方法。本发明主要包括:首先,将图像编码中变换量化后的系数块按照预定的规则划分若干个条组,可以为横条组、竖条组、斜条组、J条组和倒L条组;然后,基于所述的各个条组对所述的系数块进行编码。因此,本发明的实现可以进一步提高编码效率,而且,本发明在与H.264复杂度相当的情况下能够有更优的压缩效率,同时还可以省去了扫描和反扫描的过程。
Description
技术领域
本发明涉及图像编码技术领域,尤其涉及一种对系数块进行编码的方法。
背景技术
目前,图像压缩编码标准有:ITU-T视频编码专家组(VCEG)制定的活动图像编码标准H.261、H.263;ISO/IEC移动图像专家组(MPEG)制定的静止图像编码标准JPEG和JPEG2000,活动图像编码标准MPEG1、MPEG4-Part2;ITU-T视频编码专家组(VCEG)和ISO/IEC移动图像专家组(MPEG)共同提出的国际视频编码标准MPEG2/H.262、H.264/AVC;音视频编码标准AVS中的活动图像编码标准等。
活动图像视频编码包括以下几个基本步骤:预测、求残差、变换、量化和编码。静止图像编码包括以下几个基本步骤:变换、量化和编码。
变换量化后的系数块的尺寸有16×16、8×8、4×4、2×2等类型。在H.264/AVC High Profile中有8×8系数块,AVS视频编码标准中只用8×8系数块。本说明书用8×8系数块为例说明。但本技术可扩展到16×16、4×4、2×2等系数块。
上述图像编码标准对变换量化后的系数块的编码包括系数扫描和熵编码。系数扫描就是对二维系数块所有系数按照约定的顺序扫描成为一维数组,例如,H.264/AVC帧模式下8×8的系数块时的扫描次序如下表。根据表1中标明的顺序,将8×8系数块中的所有系数扫描到一个一维1×64的数组中。
表1:
例如,待编码的系数块如表2所示:
表2
5 -6 0 0 0 0 0 0
3 1 0 1 0 0 0 0
-20 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0
-7 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0
对表2所示的8×8系数块依照表1所示顺序扫描后得到的一维数组是:
5,-6,3,-20,1,0,0,0,0,0,3,0,0,1,0,0,0,0,0,1,-7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,0,0,0,0,...(后面全部是0)。
H.264/AVC熵编码对扫描输出的一维数组进行。CABAC(Context-based Adaptive Binary Arithmetic Coding,自适应上下文二值算术编码)是H.264/AVC中采用的熵编码方案之一,具有较高的编码压缩效率,但也具有更高的计算复杂度。
CABAC的编码包括三个主要部分:二值化,选择概率模型,算术编码。
对每个待编码的语法元素,二值化过程定义了一种映射规则,将语法元素的值映射成为一串二值字符串。比如语法元素可以取值0,1,2,可以定义如下的映射规则:
0->0,1->10,2->11,这样对二值字符串编码可以唯一的恢复原语法元素的值信息。这种映射规则称为二值化方案,所述的二值化方法也可以被其它多值化方法代替。
对二值化后得到的二值字符串的每个bit(以下称之为一个bin),选择合适的概率模型。对于二值化符号串的处理也可以延伸至对于多值化的多值符号串处理。H.264中为各个语法元素二值化得到的bin设置了相应的概率模型,对某些bin,其对应的概率模型不止一个。编码时需要根据相邻已编码宏块信息选择正确的概率模型。为bin选择好概率模型之后,即可调用算术编码器进行二值算术编码。
H.264中对编码系数块的CABAC熵编码步骤是:
步骤1:对扫描得到的一维数组,从第一个系数起编码当前系数值是否是0。如果当前系数值不是0,则编码当前系数是否是一维数组中的最后一个非0系数,如果是,则转步骤2,否则继续编码下一系数;如果当前系数值是0,则继续编码下一系数。
步骤2:经步骤1处理后,可以得到一维数组各位置上系数值是否是0的全部信息。然后对所有的非0系数,从最后一个开始逆向依次编码。
如上例中,所有非0系数为5,-6,3,-20,1,3,1,1,-7,3,-2。
从最后一个非0系数往前重复下面的编码过程直至编码完所有系数。
针对各个非0系数的具体的编码过程为:
(1)对每个非0系数,首先编码其绝对值减1;
(2)相应的绝对值减1取值为非负整数;H.264中定义的相应的二值化方法是一元前缀码加指数哥伦布后缀码;例如,编码上面的非0系数-7,其绝对值减1为6,二值化后为1111110。对这7个bin,H.264中为第一个bin一共设置了5个可能的概率模型,编码时选择哪一个由已经编码的后面非0系数中等于1和大于1个系数个数决定。例如编码-7时已经编码的非0系数有3,-2,那么其二值化字符串的第一个bin用到第五个模型。H.264中为除第一个bin以外的其他bin一共设置了5个可能的概率模型,编码时选择哪一个由已经编码的后面非0系数中大于1个系数个数决定。例如编码-7时已经编码的非0系数有3,-2,那么其二值化字符串的除第一个bin以外的其他bin用到第三个模型。
(3)为二值化后的各个bin选定模型后对每个bin进行二值算术编码。完成对系数绝对值的编码后,用1个比特编码其符号。
在实际应用过程中,对系数块的编码方式有多种选择,目前的分类和概率模型分配的方案仍然还有进一步改进的空间,以提高编码效率。
另外,CABAC中概率估计的原理是在编码过程中根据已编码的符号来自适应的估计概率值。对每个待编码的符号记做一个bin,CABAC都为之设定了相应的概率模型记做一个ctx。每个ctx包括7比特信息,6比特的state值和1比特的MPS值。这7比特信息构成一个完整的概率估计值。
因为CABAC中待编码bin的取值只有0,1两种,所以对当前bin取值0/1的概率值作估计时,只需要一个1比特MPS(大概率符号)值,标志估计要编码的bin是0还是1的可能性更大一点;和一个6比特state(状态)值,标志这个bin取MPS值的概率估计值。当编码完毕当前bin,则根据实际编码的bin值调整ctx中的概率估计值。如果实际编码的bin是MPS值,意味着出现MPS的概率又大一点,state值向MPS概率估计值增大的方向调整;否则意味着出现MPS的概率变小一点,state值向MPS概率估计值减小的方向调整。这样就达到了在编码过程中动态自适应的估计概率值得目的。
这样的方法对一个概率模型而言,在编码若干bin之后会获得比较好的概率估计值。但是在编码初期由于已编码的符号信息量很小,有些情况下需要一个比较长的自适应估计过程,所以在初期概率模型的估计效果可能不好。而且不同的QP(量化参数)取值对编码数据的统计特点有很大的影响。基于以上两点原因,CABAC做了一个线性模型,针对不同的QP粗略的估计每个概率模型的初始化值(也即初始的概率估计值),其目的在于在编码初期能够获得比较准确的概率估计值以提高编码初期的压缩效率。
CABAC中的基于QP值的线性模型表达式为:
preCtxState=Clip3(1,126,((m*QP)>>4)+n);
上式中Clip3函数的计算方法是如果((m*QP)>>4)+n<1,则结果为1;如果((m*QP)>>4)+n>126,则结果为126;否则,结果为((m*QP)>>4)+n。式中m,n是关于概率模型的确定性经验参数,每个概率模型有自己对应的(m,n)值。全部概率模型的(m,n)值都预先存储在一个固定的表里。
目前的初始化方法仅针对QP做了一个线性模型。而事实上,不同的序列不同的分辨率都会对数据统计特点有很大的影响。通过测试了一些序列发现:在相当一部分情况下,初始化编码效率甚至不如无需初始化(也即初始化概率模型的state值和MPS值为全0)的编码效率。
而且初始化过程的(m,n)参数存储需要不小的空间,CABAC Main Profile中所需要的大约为6400bytes.初始化每个ctx的计算过程也很复杂,涉及到一次乘法,一次移位,一次加法。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种对系数块进行编码的方法,从而可以进一步提高编码效率。
本发明的目的是通过以下技术方案实现的:
本发明提供了一种对系数块进行编码的方法,包括:
A、将图像编码中变换量化后的系数块按照预定的规则划分多个条组;
B、基于所述的条组对所述的系数块进行编码。
每个系数块使用的条组模式包括:横条组、竖条组、斜条组、J条组或倒L条组,而且,不同的系数块使用不同的条组模式或者相同的条组模式。
所述的条组中的每个条组包含多个系数条或一个系数条。
所述的步骤A具体包括:
将系数块的各个系数条中的包含的全0条、非0即1条和/或大于1条分别划分组成相应的全0条条组、非0即1条条组和/或大于1条条组。
所述步骤A包括:
以系数块中从前到后第一个出现的全0条为分界线,该条以前的系数条作为一个条组,该条以后的系数条作为一个条组。
所述步骤A还包括:
将所述第一个出现的全0条以后的系数条再划分为两个条组,一个条组包括有非0系数,另一个条组系数值全部为零;
所述步骤A包括:
以系数块中从前到后的最后一个非0条为分界线,该条以后的系数条作为一个全0条组,该条以前的系数条再以最后一个包含大于1的系数条作为分界线,之前为一个大于1条组,之后为一个非0即1条组。
当采用J条组进行编码时,所述的步骤B具体包括:
B1、对各个J条组分别进行编码处理;
B2、确定任一J条组符合预定的条件时,则将该J条组进一步划分为若干J条组,并执行步骤B1。
所述的步骤B2包括:
B21、判断当前J条组中的系数是否为全0,如果是,则执行步骤B22,否则,如果该J条组包含多个J条,则执行步骤B23,如果不包含多个J条,则直接执行步骤B1;
B22、选择下一条J条组,并执行步骤B21;
B23、将该J条组进一步划分为若干J条组,并执行步骤B1。
所述的步骤B还包括:
在对各个J条组中包含的各个系数进行编码处理过程中,当编码任一J条组内系数是否为全0的信息时,则该信息的概率模型的分配取决于已编码条组中的系数值信息。
所述的已编码条组中的系数信息包括:
已编码条组中若干条组的非0系数个数,或者,非0系数之和。
所述的步骤B包括:
在编码各个条组包含的系数条的过程中,当编码一个系数条的全部系数时,根据已编码的后面一条的最后一个非0系数的位置对当前条的最后一个非0系数的位置进行估计,根据估计的位置信息对当前系数条进行编码。
所述的步骤B包括:
在编码各个条组包含的系数条的过程中,当编码一个系数条的全部系数时,如果其最后一个非0系数的位置被完全确定,最后一个非0系数采用一元码方法编码但不限于一元码编码,为该系数单独分配相应的概率模型。
所述的步骤B包括:
对作为条组分界的分界系数条的位置编码时,在码流中采用标识符来标记该条是否为分界系数条,并为该标识符分配概率模型。
所述的步骤B还包括:
根据当前系数条的位置以及相邻系数块已经编码的信息为编码当前系数条是否为全0的信息符号分配概率模型。
所述的步骤B还包括:为所述符号中的多个符号分配相同的概率模型。
所述的步骤B还包括
当作为条组分界的分界系数条为多个时,则在编码后面的分界系数条的位置时基于先前已编码的分界系数条的位置进行编码。
所述的步骤B包括:
对条组包含的各个系数按照特定的扫描顺序的反向顺序依次进行编码。
所述的特定的扫描顺序包括:
对于竖条组,从左到上、从上到下按照“之”字形扫描所有系数;
对于横条组,从上到下、从左到右按照“之”字形扫描所有系数;
对于斜条组,从左上到右下按照“之”字形扫描所有系数;
对于倒L条组,先从左到右,后从上到下,或者,反之。
所述的步骤还包括:
设定一个门限值G,在每个概率模型编码的前G个符号时,当出现大概率符号MPS调整状态state值的跳转步长为大于或等于2。
一种对系数块进行编码的方法,包括:
当对条组包含的条中的系数进行编码时,根据已编码的相邻位置的系数信息作为编码当前系数的分类标准进行分类,并且:
分别为不同的类设置各自的二值化方案,或者多值化方案,以及编码各个符号的概率模型,或者多值化符号串各个符号的概率模型;
或者,为若干个类设置相同的二值化方案,或者多值化方案,以及,为若干个类设置相同的编码各个符号的概率模型,或者为若干个类设置相同的编码各个多值化符号串各个符号的概率模型。
所述的相邻位置的系数信息包括:相邻系数中的最大值。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块划分为多个横条组,并基于所属的条组对所述的系数块进行编码。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块划分为多个竖条组,并基于所属的条组对所述的系数块进行编码。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块划分为多个斜条组,并基于所属的条组对所述的系数块进行编码。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块划分为多个L条组,并基于所属的条组对所述的系数块进行编码。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块划分为多个J条组,并基于所属的条组对所述的系数块进行编码。
所述的方法包括:
在编码J条组中的各个J条的横向或者竖向分支条之前先确定相应分支条是否为全0系数,如果是,则直接编码一个符号,否则,继续对J条的横向或竖向分支条包含的各系数进行编码。
在编码具体的横向分支条或者竖向分支条时,包括:
依次从左向右编码横向条位置信息,从上至下编码竖向条位置信息,从横向条最后一个非0系数起从右至左编码横向条非0系数值信息,从竖向条最后一个非0系数起从下至上编码竖向条非0系数值信息;
或者,
依次从左向右编码横向条位置信息,从横向条最后一个非0系数起从右至左编码横向条非0系数值信息,从上至下编码竖向条位置信息,从竖向条最后一个非0系数起从下至上编码竖向条非0系数值信息。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块划分为多个条组,划分条组可以根据横条组、竖条组、斜条组、J条组或倒L条组编码模式实现,并基于所述的条组对所述的系数块进行编码。
所述的方法还包括:
选择编码模式的原则可以是根据系数块中0、1及大于1的系数的位置分布特性选择一种编码模式。
所述的方法还包括:
在仅使用横条组模式或竖条组模式的情况下,分别确定所述系数块的横向和纵向最后一个含有非0系数的非全0系数条的位置和第一个全0系数条的位置,基于上述位置确定采用横条组模式或竖条组模式。
所述的方法包括:
根据相邻系数块选择的编码模式确定当前系数块的编码模式。
一种对系数块进行编码的方法,包括:
将图像编码中变换量化后的系数块分别采用不同的编码模式对所述系数块进行编码,之后选择压缩效率最高的编码模式作为该系数块的编码模式。
所述的编码模式包括:
横条组、竖条组、斜条组、J条组或倒L条组编码模式。
由上述本发明提供的技术方案可以看出,本发明的实现可以进一步提高编码效率,而且,本发明在与H.264复杂度相当的情况下能够有更优的压缩效率,同时还可以省去了扫描和反扫描的过程。
附图说明
图1为J条编码方式示意图。
具体实施方式
H.264系数块编码方案首先把系数块按照某种预定扫描序扫描成为一维数组而后编码,而本发明直接对原系数块编码,因此,可以省去针对系数块的扫描和反扫描的过程。
为便于理解本发明,下面首先对本发明中涉及的各名词进行解释。
1、条的定义
本发明中可选的条模式有5类:
横条:系数块的一行为一个横条,从上到下顺序记为第0到7横条。
竖条:系数块的一列为一个竖条,从左到右顺序记为第0到7竖条。
斜条:系数块中的每一个左下到左上45度斜线元素为一斜条,如表1所示,0为第一个斜线条,1、2组成第二个斜线条,3、4、5组成第三个斜线条,6、7、8、9为第四个斜线条,......;
J条:J条定义如表3所示:
表3
表3中,一个8×8的系数块称为block8×8,对此系数块从左上到右下可以分为8个J条,每个J条的拐角点系数为系数块中位于对角线上的系数,基于拐角点系统依次向上向左的系数组一个J条,所述的8个J条分别标记为J0~J7
倒L条:以系数块中的由左上角到右下角的对角线上的系数作为倒L的拐角点,该拐角点向右及向下的所有系数构成一个倒L条,如表1所示,63组成第一个倒L条,61、59、62组成第二个倒L条,60、55、51、56、58组成第三个倒L条,......。
2、条组的定义
本发明中对应4种条的条组模式也有5类:
横条组:由若干个相邻或不相邻的横条组成;
竖条组:由若干个相邻或不相邻的竖条组成;
斜条组:由若干个相邻或不相邻的斜条组成;
J条组:由若干个相邻或不相邻的J条组成。
倒L条组:由若干个相邻或不相邻的倒L条组成。
对系数块编码时需要适当选择一种条组模式获得更好的编码效率。从上面的描述可知,本发明中,可供选择的条组模式有五种:横条组模式、竖条组模式、斜条组模式、J条组模式和倒L条组模式。下面将描述如何选择应用各条组模式。
本发明中,具体可以根据系数块中0、1及大于1的系数的位置分布特性选择将系数块划分为横条组、竖条组、斜条组、J条组或倒L条组。
也就是说,如果系数块中的非0系数集中分布在横向上,纵向上或者斜条方向上,则将选择相应的横条组、竖条组或斜条组。
下面是系数分别集中分布在横向上,纵向上,斜条方向上的三个典型系数块示例,分别如表4、表5和表6所示:
表4 表5 表6
60 20 9 2 1 0 0 0 3 2 2 1 0 0 0 0 10 3 1 0 0 0 0 0
0 0 0 0 0 0 0 0 3 3 2 0 0 0 0 0 2 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0, 0 1 0 0 0 0 0 0, 0 0 0 0 0 0 0 0。
对于上述各系数块可以依次选择横条组、竖条组和斜条组模式。
如果系数块中全0的系数集在右下角,则可以选择倒L条组模式。
本发明中,对于相邻的系数块已经采用了相应的条模式进行条组的划分,则当前系数块还可以根据相邻系数块选择的条组模式确定当前系数块的条组模式,例如,可以与相邻系数块选择同样的条模式,所述的相邻的系数块可以为左侧或上方的系数块。
下面举例说明在横、竖条两种条组模式中选择一种条组模式方法。
可以用横纵向上最后一个含有非0系数的条的位置衡量系数集中分布的方向,以下面的表7所示的8×8系数块为例:
表7
5 -6 0 0 0 0 0 0
3 1 0 1 0 0 0 0
-20 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0
-7 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0;
在表7中,横向上从上至下最后一个含有非0系数的条的位置为7,纵向上从上至下最后一个含有非0系数的条的位置为3。所以当前块选择按照竖条的条组模式编码。
为了避免系数分布如下的系数块选择错误的编码模式,本发明中用hengtiao_allno+hengtiao_lnz和shutiao_allno+shutiao_lnz作为系数集中在横向还是纵向的衡量参数,其中:
hengtiao_allno为横向第一个全0条位置;
hengtiao_lnz为横向最后一个含有非0系数的条的位置;
shutiao_allno为纵向第一个全0条位置;
shutiao_lnz为纵向最后一个含有非0系数的条的位置。
本发明中具体为取hengtiao_allno+hengtiao_lnz和shutiao_allno+shutiao_lnz其值较小的横向或纵向对应的横条组或竖条组作为编码模式。
显然,如果用横纵向上最后一个含有非0系数的条的位置衡量,表8所示的系数块应该用竖条组模式编码,但是下面块的系数集中在横向上。对下面的块hengtiao_allno,hengtiao_lnz分别为1,0;shutiao_allno,shutiao_lnz分别为0,3,因此,确定选择横条组模式;用hengtiao_allno+hengtiao_lnz和shutiao_allno+shutiao_lnz作为系数集中在横向还是纵向的衡量参数则能够得到合理的编码模式。
表8
0 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0。
考虑到一种固定的编码条组模式通常很难适应各种分布特点的系数块。因此,可以首先考察系数块分布的特点,并根据各系数块分布的大致特点分为若干类,对每一类系数块分别采用各种条组模式进行编码处理,之后选择最佳效果的条组模式作为该类型系数块的编码方案。
考虑到有的系数块不容易直观的分到其中某一类中去,此时,还可以采用不同的条组模式分别对该系数块进行编码,然后取效率高的条组模式作为该系数块的编码方案。当然,需要在码流中写入相应的信息,指示所选择的编码方案,即选择的条组模式。
比如,可以在所述的倒L条组编码方案和J条组编码方案中进行比较选择,之后,确定这两种方案是分别针对上述系数较多的块和系数分布稀疏的块设计的,这样,便可以根据该依据选择相应的条组模式作为系数块的编码模式。
选择了一定的条组模式以后,则按照选定的模式逐条编码全部的系数块内信息,下面将对编码过程进行说明。
确定按照横条组、竖条组、斜条组、J条组或倒L条组模式编码之后,则需要在码流中写入选择的条组模式的信息,标示系数块中一条或者某几条中所有系数所具有的共同的统计分布特点。
根据不同的统计特点,将系数块划分为若干条组,每条组都由若干条组成。条组的目的是把整个系数块根据系数的统计特点分别编码,比如,可以以下面四种方式中的任一种方式进行条组的划分:
(1)将所有非0条作为一条组,所有全0条作为一条组;
(2)将第一个含有非0系数的条作为分界系数条,该条和前面所有系数条作为一条组,其后所有系数都是零,作为一个条组;
(3)将含有大于1的系数的若干条作为一条组,将其他条作为一条组;
(4)将系数块中的所有系数条从前往后分为三条组,第一个条组中包括有大于1的系数,第二个条组中仅包括值为0,1的系数,第三个条组中的系数值全部为零;
(5)以第一个出现的全0条为分界系数条,该条以前的系数作为一个条组,该条以后的系数作为一个条组,该条以后的系数还可以分为两个条组:一个条组包括有非0系数,另一个条组系数值i全部为零;
(6)对于8×8系数块可以将8个倒L条分为两个条组,从右下的倒L条往左上找到第一个含有非0系数的倒L条,这一条之后的所有系数只含有零,作为一个条组,这一条以及这一条以前的全部倒L条作为一条组。
另外,本发明针对J条组还可以采用以下的方案进行分组,仍以所述表3为例,对相应的8个J条分层分组的策略如下:
第一层分组中,J条J0~J3为一组,这是一个4×4的系数块,也称为block4×4;J条J4~J7为另一组,称为block8×8_J。第一层分组中,每一个组包括4个J条。
在对第一层的这两个J条组编码时,根据需要对编码的条组进行第二层的分组。具体为:编码block8×8_J(J4~J7)时,在第二层分组中,J4~J5分为一组,称为block8×8_J_0,J6~J7分为一组,称为block8×8_J_1;编码block4×4(J0~J3)时,第二层分组的方法类似编码block8×8第一层的分组方法,J0~J1分为一组,称为block2×2,J2~J3分为一组,称为block4×4_J。第二层分组中,一个条组包括2个J条。
对第二层分组的J条组编码时,根据需要会对编码的条组进行第三层分组。第三层分组中,将该J条组中的两个J条分开,然后对每一个J条分别进行编码。
各种条组的编码方法都必须在码流结构中编入相应的标示条组的语法元素,也即开始所述的标示系数块中一条或者某几条中所有系数所具有的共同的统计分布特点的信息。
每个条组中的各条不必在位置上连续,也不必在编码过程连续。
下面我们以上面所说第四种条组方法为例说明一种可行的编码方案。
首先,需要编码tiao_allno,即确定第一个全0条的位置,如果是横条模式,则tiao_allno是指hengtiao_allno;如果是竖条模式,则tiao_allno是指shutiao_allno。
编码tiao_allno的方式很多,tiao_allno可以取值0~8,tiao_allno等于8意味着系数块中无全0条,可以用4比特的二进制值直接编码。或者,也可以从第0条起,顺次编码一个比特指示这一条是不是全0,如果是则这一比特为0,否则为1,如果某一条对应的这一比特为0,意味着这是第一个全0条。例如对表9所示的系数块:
表9
5 -6 0 0 0 0 0 0
3 1 0 1 0 0 0 0
-20 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0
-7 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0
纵条第0,1,2条需要编码的比特为1,1,0。
为提高效率,编码相应比特需要根据相邻块对应的信息选择相应的概率模型。例如,上例中编码纵条第2条的比特0,则根据左边已编码系数块纵条第2条是否是全0条选择模型。对编码指示横条第k(0≤k≤=7)条以及纵条第k(0≤k≤=7)条是否全0的比特单独分配不同的概率模型,具体编码某一条的比特再根据左边已编码系数块对应位置条是否全0分配2个概率模型,一共32个概率模型。也就是根据这个比特是对应横条第k条或者竖条第k条(k可能取值0~7),还有左边已编码系数块同样位置的条对应的这个比特的值是0还是1(这个值在编码当前块时已知)选择模型,这样为这个比特一共设置了32个模型。
然后,编码tiao_lnz-tiao_allno,即最后一个含有非0系数的条的位置与第一个全0条的位置之差:如果是横条模式,则编码hengtiao_lnz-hengtiao_allno;否则,编码shutiao_lnz-shutiao_allno,确定最后一个含有非0系数的条的位置tiao_lnz。
由于tiao_lnz不可能等于tiao_allno,其差值可能取值为{-1}U{1,2,3...}。其二值化方法可以用一元码方法,即映射关系为-1->0,1->10,2->110,3->1110,......。对二值化得到的bin,第一个bin单独给一个概率模型,后面的bin可以合用一个概率模型,也可分配各自的概率模型。
将所有系数分为若干条组以后,逐条组编码所有系数。
下面以上面划分条组的方法为例说明具体编码各条组包含的系数的实现方案。显然,在上述方案下,需要编码的系数有第一个全0条到最后一个非全0条之间的所有系数,以及第一个全0条以前的全部系数。
首先,编码夹在第一个全0条到最后一个非全0条之间的所有系数。
如对表10所示的系数块编码,则应采用竖条模式,第一个全0竖条是第2条,最后一个非全0竖条是第6条,需要编码的是竖条第3条到第6条之间的全部系数,相应的系数的取值大多数情况下非0即1,可以称为非0即1条组,而且0、1分布比较没有规律。
表10
7 5 0 0 0 0 0 0
-7 0 0 0 0 0 1 0
0 -4 0 0 0 0 0 0
2 -1 0 0 0 0 0 0
-1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0;
编码非0即1条组中各条系数的方法是多种多样的,具体可以为:
横条模式下从上至下编码各条系数,每条从左至右编码各个系数;
竖条模式下从左至右编码各条系数,每条从上至下编码各个系数。
编码一个比特all0_back_gt1,用于指示是否从tiao_allno以后各条的系数值非0即1,为这个比特分配一个概率模型;例如,上例中竖条第3,4,5,6条的系数值非0即1,对应的比特则为0。
编码一个比特指示当前条是否是全0条,为这个比特分配一个概率模型;例如,上例中编码竖条第3,4,5,6条,对应的指示是否全0的比特分别是1,0,1,0。
如果当前条不是全0条,则按照顺序编码各个系数值。编码系数先编码其绝对值,之后编码其符号。编绝对值采用一元码二值化的方法。第一个bin决定其绝对值是0还是大于0,根据这个系数的位置分配概率模型。
具体可以为每个位置的系数给一个概率模型,也可若干位置的系数合用一个概率模型,例如,可以编码横条系数时,从左至右,其位置从第0个到第7个分配4个概率模型,这4个概率模型分别用于位置0,1,(2,3),(4,5,6,7)这四组位置上的系数的第一个bin的编码。
如果从tiao_allno以后各条的系数值非0即1,每个系数的绝对值只可能取值0或者1,无后续bin,否则,对绝对值大于0的系数的绝对值,还需要继续编码后面的bin,指示其绝对值是1还是大于1,如果大于1,是2还是大于2,......。后面的bin可分开分别分配概率模型,也可以统一分配同一个概率模型编码。
本发明中,编码tiao_lnz(非全0条)的位置的方法也可以仿照编码tiao_allno的方法,根据已编码相邻系数块的对应条是否含有非0系数来编码当前条。例如,对当前块从第tiao_allno条起往后,每条编码一个比特,指示此条后面各条是否全0,如果编码到某条这个比特指示此条后面全0,则这一条就是最后一个非全0条(如果此条不是第tiao_allno条),或者第tiao_allno-1条是最后一个非全0条(如果此条是第tiao_allno条)。这个比特的概率模型分配可以类似编码tiao_allno,先根据是横条第k第k(0≤k≤7)条以及纵条第k(0≤k≤7)条分类,然后根据已编码相邻系数块对应位置的条是不是最后一个全0条分配2个概率模型。
然后,编码第一个全0条以前的全部系数。
以表11所示的系数块为例说明编码第一个全0条以前各条的全部系数的方法。
表11
7 5 0 0 0 0 0 0
-7 0 0 0 0 0 1 0
0 -4 0 0 0 0 0 0
2 -1 0 0 0 0 0 0
-1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0;
编码这些条系数的方法是多种多样的,下面给出一个可行的具体方案:
对于横条组模式,则从下至上编码各条系数,每条从右至左编码各个系数值;
对于竖条组模式,则从右至左编码各条系数,每条从下至上编码各个系数值。
例如,表11所示的系数块按照竖条组模式编码,第一个全0条是第2条,编码第2竖条以前各条的系数,首先编码第1条,从下往上编码各系数,然后编码第2条,从下往上编码各系数。
在编码当前系数条包含的各系数之前,根据已编码的后面一条的最后一个非0系数的位置对当前条的最后一个非0系数的位置做估计。以表11所示的系数块为例,编码第0竖条时,第1竖条已经编码完成,其最后一个非0系数-1位置为3,从统计特点看,大多系数块第0竖条的最后一个非0系数的位置不小于第1竖条的最后一个非0系数的位置,这意味着已编码的后面一条的最后一个非0系数的位置包含一定的当前条的最后一个非0系数的位置的信息,因此,可利用该信息进行编码压缩。
下面给出一种可行的压缩编码方案,说明如何利用已编码的后面一条的最后一个非0系数的位置对当前条的最后一个非0系数的位置做估计。
如果已编码的后面一条的最后一个非0系数的位置小于6,则首先编码一个比特,确定当前条的最后一个非0系数的位置是否小于6。这个比特的模型根据已编码的后面一条的最后一个非0系数的位置选择。已编码的后面一条的最后一个非0系数的位置可能取值-1~5,-1意味着已编码的后面一条全0,对应分配给这个比特7个概率模型。
如果当前条的最后一个非0系数的位置不小于6,则再编码一个比特,确定当前条的最后一个非0系数的位置是6还是7,这个比特的概率模型根据已编码的后面一条的最后一个非0系数的位置选择,一共有7个概率模型;否则,当前条的最后一个非0系数的位置不大于5。
如果当前条的最后一个非0系数的位置或者被确定为6或7,则首先编码最后一个非0系数的绝对值,然后编码其符号,编码其绝对值采用一元码的二值化方法,第一个bin分配一个概率模型,后续bin共用一个概率模型,然后从最后一个非0系数的前一个系数起往前编码逐个系数值。例如,表11中编码竖条第0条,其已编码的后面一条的最后一个非0系数的位置为3,当前条的最后一个非0系数的位置被确定为6。第0竖条位置6的系数首先编码,然后从第0竖条位置5的系数往上逐个编码系数至第0竖条位置0的系数。
如果当前条的最后一个非0系数的位置被确定为不大于5,则从当前条第5个位置的系数往前编码逐个系数值。例如,表11中编码竖条第1条,其已编码的后面一条的最后一个非0系数的位置为-1,当前条的最后一个非0系数的位置被确定为不大于5。从第1竖条位置5的系数往上逐个编码系数至第1竖条位置0的系数。
如果已编码的后面一条的最后一个非0系数的位置不小于6,则直接从当前条最后一个位置第7个位置的系数往前编码逐个系数值。
在编码每个系数条的系数绝对值时,采用根据相邻已编码系数中的绝对值最大的那个系数分类的方案,具体描述如下:
当前编码系数的位置是(jj,ii),jj是其行坐标,ii是其列坐标,例如表10所示的系数块中系数7的坐标是(0,0),系数-7的坐标是(1,0),系数5的坐标是(0,1)。根据上面描述的编码顺序,如果位置(jj+1,ii)或者(jj,ii+1)上有系数的话,则这些系数是已经被编码过了的系数,将这两个位置上的系数称为当前系数的相邻系数,根据当前系数的相邻系数中绝对值最大的那个绝对值(记为max_neighbor)进行分类。
例如,表11所示的系数块中位置(0,0)的系数7,其相邻系数为-7和5,max_neighbor等于7。可根据max_neighbor分成若干类型,对每一类,可以分别设定二值化方法并分配模型。根据max_neighbor分类,以及每一类中的编码二值化和模型分配的方法是多种多样的。
下面举一例说明具体的分类实现方法,例如:
根据max_neighbor为0,1,2,以及大于2分为A,B,C,D四类;
对于max_neighbor为0,称为A类,采用一元码的二值化方法,第一个bin区分当前系数绝对值是0还是大于0,分配一个概率模型;第一个bin区分当前系数绝对值是1还是大于1,分配一个概率模型;后面的bin共用一个概率模型;
对于max_neighbor为1,称为B类,第一个bin区分当前系数绝对值是否小于或等于1,为之分配一个概率模型。如果第一个bin为0(当前系数绝对值小于或等于1),第二个bin区分当前系数绝对值是0还是1,为之分配一个概率模型;否则,后续第二个bin区分当前系数绝对值是2还是大于2,第二个bin区分当前系数绝对值是3还是大于3,第三个bin区分当前系数绝对值是4还是大于4...这些bin可以单独分配概率模型,也可共用一个概率模型。
对于C,D类,其二值化和分配模型的方式也是多种多样的,可以按照A类或者B类的方法编码,当然,也可单独设计更为高效的二值化和概率模型分配方案。
所述的相邻的系数还包括左斜下方、左斜上方、右斜下方和右斜上方的已经编码的系数,并根据相应的系数值进行分类。
对于横条编码模式,当前系数位置(jj,ii)的左斜下方位置为(jj+1,ii-1)的系数(如果存在),右斜下方位置为(jj+1,ii+1)的系数(如果存在)也已经被编码,这两个系数也可作为当前系数的相邻系数被用于计算相邻系数的最大值(即用位置(jj+1,ii),(jj,ii+1)和(jj+1,ii-1)上的系数绝对值中的最大值计算max_neighbor)。
对于竖条编码模式,当前系数位置(jj,ii)的右斜上方位置为(jj-1,ii+1)的系数(如果存在)也已经被编码,这个系数也可作为当前系数的相邻系数被用于计算相邻系数的最大值(即用位置(jj+1,ii),(jj,ii+1)和(jj+1,ii-1)上的系数绝对值中的最大值计算max_neighbor)。
下面对倒L条组在编码过程中与前面描述不同之处进行描述。
编码条组中的倒L条的条组分界系数条的位置和编码横竖条组分界系数条的方法是一样的,从第一个倒L条起,编码一个bin指示其是否是条组分界系数条。Bin的概率模型根据条的位置以及相邻块同一位置条所对应的这个bin的值分配概率模型。
在编码过程中,具体可以倒着编码各个倒L条的系数,对每一个倒L条,先编码其横条所有系数,再编码竖条所有系数,最后编码位置处于对角线上的那个系数。
编码横条所有系数时,根据已编码的下一个倒L条的横条的最后一个非0系数的位置估计当前倒L条横条的最后一个非0系数的位置。
编码竖条所有系数时,根据已编码的下一个倒L条的竖条的最后一个非0系数的位置估计当前倒L条竖条的最后一个非0系数的位置。
对最后一个非0系数位置确定的情况而言,其最后一个非0系数用一元码方式二值化,并且单独分配概率模型。
同样,在编码各个系数时,可以根据其相邻位置的系数的最大值分类,具体的分类方式前面已经描述,故,此处不再详述。
对于J条组可以采用以下编码方案,对于一些类型的系数块可以获得更好的编码效率。具体过程说明如下:
(1)首先对全系数块block8×8统计,写入一个比特(all01)表示该系数块非0系数是否全为1。
(2)对全系数块进行第一层分组,先编block8×8_J(J4~J7),然后编block4×4(J0~J3)。编码block8×8_J时,首先写入一个比特(block8×8_J_All0)标识该条组系数是否全为零,如果全为零,则对block4×4块进行编码;如果不为零,对block8×8_J进行第二层分组编码,然后写入一个比特标识block4×4块是否全为0,如果不是全0,对block4×4块进行编码。
(3)在对block8×8_J(J4~J7)第二层分组编码中,先编block8×8_J_1(J6~J7),后编block8×8_J_0(J4~J5)。编码block8×8_J_1时,首先写入一个比特(block8×8_J_1_All0)标识该条组是否全为零,如果全为零,直接编码block8×8_J_0;如果不为零,对block8×8_J_1进行第三层分组编码,然后写入一个比特表示block8×8_J_0是否全为零,如果不是全0,对block8×8_J_0进行第三层分组编码。
(4)在对block4×4(J0~J3)第二层分组编码中,采用与block8×8第一层相似的分组编码方法。先编码block4×4_J(J2~J3),然后编码block2×2(J0~J1)。编码block4×4_J时,首先写入一个比特(block4×4_J_All0)标识该条组是否全为零,如果全为零,直接编码block2×2(这时block2×2里面肯定有非0系数,因为block4×4的系数不可能为全0);否则对block4×4_J进行第三层分组编码,然后写一个比特表示block2×2块是否全为0,如果不是全0,对block2×2编码。
(5)第三层分组编码中,编码的条组包含,两个J条,首先编码右下方J条,然后编码左上方J条。编码右下方J条时,首先写入一个比特标识该条是否全为零,如果全为零,直接编码左上方J条(这时左上方J条里面肯定有非0系数,因为编码的J条组不可能为全0),否则编码右下方J条,然后写入一个比特标识左上方J条是否全为零,如果不是全0,编码该J条。
完成对各个J条组的编码后,还需要对J条组包含的各J条进行编码,相应的编码方法如下所述:
(1)对一个J条(J0~J7)进行编码时,首先编码位置信息,然后编码绝对值。编码位置信息和编码绝对值信息的扫描方向相反,如图1所示。图中横条和竖条不包括顶角位置的系数,当然顶角位置的系数可以归并到横条或者竖条中。
(2)编码位置信息,也即这个位置上的系数是否非0。首先编码横条系数位置信息,然后是竖条位置信息。
横条位置信息编码方法是:编码位置信息前写入一个比特,标志该横条是否为全0,如果是,则跳过横条位置信息编码过程,否则,按照位置信息编码方向编码。编码时首先写入信息确定该位是否为零,如果是零则写下一个位,如果不为零再写入信息确定是否时最后一个非0系数,如果不是最后一个则继续,否则结束。但是当编码到最后一个位置还没有遇到最后一个非0系数,那么一定是最后一位,此时不需要写入任何比特;
对竖条位置信息编码可以采用类似横条位置信息的编码方法。
(3)编码系数值信息。根据位置信息,如果该条中有非0系数,则编码该系数。首先写入该系数的符号信息,然后编码系数的绝对值减一。
其中所述的编码系数绝对值的方法如下:
(1)根据all01判断,如果该系数块系数非0即1,那么编码该系数的符号即可。
(2)如果该系数块有大于1的系数,那么根据相邻系数的信息对当前编码系数分类。选择ctx进行编码。具体的方法描述如下:
当前编码系数的位置是(jj,ii),jj是其行坐标,ii是其列坐标,例如,上块中系数7的坐标是(0,0),系数-7的坐标是(1,0),系数5的坐标是(0,1)。根据上面描述的编码顺序,如果位置(jj+1,ii)或者(jj,ii+1)上有系数的话,这些系数已经被编码过了。这两个位置上的系数称为当前系数的相邻系数。根据当前系数的相邻系数中绝对值最大的那个绝对值(记为max_neighbor)进行分类。例如上块中位置(0,0)的系数7,其相邻系数为-7和5,max_neighbor等于7。可根据max_neighbor分成若干类型,对每一类,可以分别设定二值化方法并分配模型。根据max_neighbor分类,以及每一类中的编码二值化和模型分配的方法是多种多样的。
下面举一例说明具体的分类实现方法。
例如,根据max_neighbor为0,1,2,以及大于2分为A,B,C,D四类。具体可以为:
对于max_neighbor为0(A类),采用一元码的二值化方法,第一个bin区分当前系数绝对值是0还是大于0,分配一个模型;第一个bin区分当前系数绝对值是1还是大于1,分配一个模型;后面的bin共用一个模型;
对于max_neighbor为1(B类),第一个bin区分当前系数绝对值是否小于或等于1,为之分配一个模型。如果第一个bin为0(当前系数绝对值小于或等于1),第二个bin区分当前系数绝对值是0还是1,为之分配一个模型;否则,后续第二个bin区分当前系数绝对值是2还是大于2,第二个bin区分当前系数绝对值是3还是大于3,第三个bin区分当前系数绝对值是4还是大于4...这些bin可以单独分配概率模型,也可共用一个模型;
对于C,D类,其二值化和分配模型的方式也是多种多样的,可以按照A类或者B类的方法编码,也可单独设计更为高效的二值化和概率模型分配方案。
在针对各个bin的概率模型的选择过程中,由于概率模型的估计值受到序列,分辨率,QP(量化级中文?)等诸多因素的影响,如果把这些因素都考虑进去,其模型会极其复杂,难以实现。而仅仅考虑QP的影响并不能在绝大多数获得一个好的初始概率估计值。因此,在编码初期,可以通过加快自适应估计的方法以达到提高编码初期压缩效率的目的。
为此,本发明在编码初期,也即对每个ctx编码的前10个bin,如果出现MPS,其state值调整的步长为原来的两倍。原来每出现一个MPS,state值向MPS概率估计值增大的方向调整,具体方式为state值加1(称作跳转步长为1),我们将其改为state值加2(称作跳转步长为2)。如果出现的不是MPS,state值向MPS概率估计值减小的方向调整,这种情况下调整的方法和
现有技术一样。
实验数据表明,这样的初始化方法能够在编码初期比较快的获得好的概率估计值。
综上所述,本发明提出了对系数块全新的编码方法,在与H.264复杂度相当的情况下能够有更优的压缩效率。并且省去了扫描和反扫描的过程。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (35)
1、一种对系数块进行编码的方法,其特征在于,包括:
A、将图像编码中变换量化后的系数块按照预定的规则划分多个条组;
B、基于所述的条组对所述的系数块进行编码。
2、根据权利要求1所述的对系数块进行编码的方法,其特征在于,每个系数块使用的条组模式包括:横条组、竖条组、斜条组、J条组或倒L条组,而且,不同的系数块使用不同的条组模式或者相同的条组模式。
3、根据权利要求1所述的对系数块进行编码的方法,其特征在于,所述的条组中的每个条组包含多个系数条或一个系数条。
4、根据权利要求2所述的对系数块进行编码的方法,其特征在于,所述的步骤A具体包括:
将系数块的各个系数条中的包含的全0条、非0即1条和/或大于1条分别划分组成相应的全0条条组、非0即1条条组和/或大于1条条组。
5、根据权利要求4所述的对系数块进行编码的方法,其特征在于,所述步骤A包括:
以系数块中从前到后第一个出现的全0条为分界线,该条以前的系数条作为一个条组,该条以后的系数条作为一个条组。
6、根据权利要求5所述的对系数块进行编码的方法,其特征在于,所述步骤A还包括:
将所述第一个出现的全0条以后的系数条再划分为两个条组,一个条组包括有非0系数,另一个条组系数值全部为零。
7、根据权利要求4所述的对系数块进行编码的方法,其特征在于,所述步骤A包括:
以系数块中从前到后的最后一个非0条为分界线,该条以后的系数条作为一个全0条组,该条以前的系数条再以最后一个包含大于1的系数条作为分界线,之前为一个大于1条组,之后为一个非0即1条组。
8、根据权利要求2所述的对系数块进行编码的方法,其特征在于,当采用J条组进行编码时,所述的步骤B具体包括:
B1、对各个J条组分别进行编码处理;
B2、确定任一J条组符合预定的条件时,则将该J条组进一步划分为若干J条组,并执行步骤B1。
9、根据权利要求8所述的对系数块进行编码的方法,其特征在于,所述的步骤B2包括:
B21、判断当前J条组中的系数是否为全0,如果是,则执行步骤B22,否则,如果该J条组包含多个J条,则执行步骤B23,如果不包含多个J条,则直接执行步骤B1;
B22、选择下一条J条组,并执行步骤B21;
B23、将该J条组进一步划分为若干J条组,并执行步骤B1。
10、根据权利要求8所述的系数块进行编码的方法,其特征在于,所述的步骤B还包括:
在对各个J条组中包含的各个系数进行编码处理过程中,当编码任一J条组内系数是否为全0的信息时,则该信息的概率模型的分配取决于已编码条组中的系数值信息。
11、根据权利要求10所述的对系数块进行编码的方法,其特征在于,所述的已编码条组中的系数值信息包括:
已编码条组中若干条组的非0系数个数,或者,非0系数之和。
12、根据权利要求1至11任一项所述的对系数块进行编码的方法,其特征在于,所述的步骤B包括:
在编码各个条组包含的系数条的过程中,当编码一个系数条的全部系数时,根据已编码的后面一条的最后一个非0系数的位置对当前条的最后一个非0系数的位置进行估计,根据估计的位置信息对当前系数条进行编码。
13、根据权利要求1至11任一项所述的对系数块进行编码的方法,其特征在于,所述的步骤B包括:
在编码各个条组包含的系数条的过程中,当编码一个系数条的全部系数时,如果其最后一个非0系数的位置被完全确定,最后一个非0系数采用一元码方法编码但不限于一元码编码,为该系数单独分配相应的概率模型。
14、根据权利要求1至11任一项所述的对系数块进行编码的方法,其特征在于,所述的步骤B包括:
对作为条组分界的分界系数条的位置编码时,在码流中采用标识符来标记该条是否为分界系数条,并为该标识符分配概率模型。
15、根据权利要求14所述的对系数块进行编码的方法,其特征在于,所述的步骤B还包括:
根据当前系数条的位置以及相邻系数块已经编码的信息为编码当前系数条是否为全0的信息符号分配概率模型。
16、根据权利要求15所述的对系数块进行编码的方法,其特征在于,所述的步骤B还包括:为所述符号中的多个符号分配相同的概率模型。
17、根据权利要求15所述的对系数块进行编码的方法,其特征在于,所述的步骤B还包括:
当作为条组分界的分界系数条为多个时,则在编码后面的分界系数条的位置时基于先前已编码的分界系数条的位置进行编码。
18、根据权利要求1至11任一项所述的对系数块进行编码的方法,其特征在于,所述的步骤B包括:
对条组包含的各个系数按照特定的扫描顺序的反向顺序依次进行编码。
19、根据权利要求18所述的对系数块进行编码的方法,其特征在于,所述的特定的扫描顺序包括:
对于竖条组,从左到上、从上到下按照“之”字形扫描所有系数;
对于横条组,从上到下、从左到右按照“之”字形扫描所有系数;
对于斜条组,从左上到右下按照“之”字形扫描所有系数;
对于倒L条组,先从左到右,后从上到下,或者,反之。
20、根据权利要求1至11任一项所述的对系数块进行编码的方法,其特征在于,所述的步骤还包括:
设定一个门限值G,在每个概率模型编码的前G个符号时,当出现大概率符号MPS调整状态state值的跳转步长为大于或等于2。
21、一种对系数块进行编码的方法,其特征在于,包括:
当对条组包含的条中的系数进行编码时,根据已编码的相邻位置的系数信息作为编码当前系数的分类标准进行分类,并且:
分别为不同的类设置各自的二值化方案,或者多值化方案,以及编码各个符号的概率模型,或者多值化符号串各个符号的概率模型;
或者,为若干个类设置相同的二值化方案,或者多值化方案,以及,为若干个类设置相同的编码各个符号的概率模型,或者为若干个类设置相同的编码各个多值化符号串各个符号的概率模型。
22、根据权利要求21所述的对系数块进行编码的方法,其特征在于,所述的相邻位置的系数信息包括:相邻系数中的最大值。
23、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块划分为多个横条组,并基于所属的条组对所述的系数块进行编码。
24、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块划分为多个竖条组,并基于所属的条组对所述的系数块进行编码。
25、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块划分为多个斜条组,并基于所属的条组对所述的系数块进行编码。
26、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块划分为多个倒L条组,并基于所属的条组对所述的系数块进行编码。
27、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块划分为多个J条组,并基于所属的条组对所述的系数块进行编码。
28、根据权利要求27所述的对系数块进行编码的方法,其特征在于,所述的方法包括:
在编码J条组中的各个J条的横向或者竖向分支条之前先确定相应分支条是否为全0系数,如果是,则直接编码一个符号,否则,继续对J条的横向或竖向分支条包含的各系数进行编码。
29、根据权利要求27所述的对系数块进行编码的方法,其特征在于,在编码具体的横向分支条或者竖向分支条时,包括:
依次从左向右编码横向条位置信息,从上至下编码竖向条位置信息,从横向条最后一个非0系数起从右至左编码横向条非0系数值信息,从竖向条最后一个非0系数起从下至上编码竖向条非0系数值信息;
或者,
依次从左向右编码横向条位置信息,从横向条最后一个非0系数起从右至左编码横向条非0系数值信息,从上至下编码竖向条位置信息,从竖向条最后一个非0系数起从下至上编码竖向条非0系数值信息。
30、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块划分为多个条组,划分条组可以根据横条组、竖条组、斜条组、J条组或倒L条组编码模式实现,并基于所述的条组对所述的系数块进行编码。
31、根据权利要求30所述的对系数块进行编码的方法,其特征在于,所述的方法还包括:
选择编码模式的原则可以是根据系数块中0、1及大于1的系数的位置分布特性选择一种编码模式。
32、根据权利要求30所述的对系数块进行编码的方法,其特征在于,所述的方法还包括:
在仅使用横条组模式或竖条组模式的情况下,分别确定所述系数块的横向和纵向最后一个含有非0系数的非全0系数条的位置和第一个全0系数条的位置,基于上述位置确定采用横条组模式或竖条组模式。
33、根据权利要求30、31或32所述的对系数块进行编码的方法,其特征在于,所述的方法包括:
根据相邻系数块选择的编码模式确定当前系数块的编码模式。
34、一种对系数块进行编码的方法,其特征在于,包括:
将图像编码中变换量化后的系数块分别采用不同的编码模式对所述系数块进行编码,之后选择压缩效率最高的编码模式作为该系数块的编码模式。
35、根据权利要求34所述的对系数块进行编码的方法,其特征在于,所述的编码模式包括:
横条组、竖条组、斜条组、J条组或倒L条组编码模式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510093682 CN1917645B (zh) | 2005-08-15 | 2005-09-01 | 对系数块进行编码的方法 |
PCT/CN2006/002036 WO2007019790A1 (en) | 2005-08-15 | 2006-08-11 | Method and apparatus for encoding coefficient block |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200510092546 | 2005-08-15 | ||
CN200510092546.5 | 2005-08-15 | ||
CN 200510093682 CN1917645B (zh) | 2005-08-15 | 2005-09-01 | 对系数块进行编码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1917645A true CN1917645A (zh) | 2007-02-21 |
CN1917645B CN1917645B (zh) | 2012-12-19 |
Family
ID=37738512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510093682 Expired - Fee Related CN1917645B (zh) | 2005-08-15 | 2005-09-01 | 对系数块进行编码的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1917645B (zh) |
WO (1) | WO2007019790A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771868B (zh) * | 2008-12-31 | 2016-03-02 | 华为技术有限公司 | 对图像的量化处理方法及装置 |
CN112449188A (zh) * | 2019-08-28 | 2021-03-05 | 腾讯科技(深圳)有限公司 | 视频解码方法、编码方法、装置、介质及电子设备 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101482642B1 (ko) * | 2007-05-16 | 2015-01-15 | 톰슨 라이센싱 | 다중-뷰 비디오 코딩(mvc) 정보의 디코딩에 슬라이스 그룹들을 이용하기 위한 방법 및 장치 |
WO2009033432A1 (en) * | 2007-09-14 | 2009-03-19 | Huawei Technologies Co., Ltd. | A method and apparatus for video encoding and decoding |
CN101389021B (zh) | 2007-09-14 | 2010-12-22 | 华为技术有限公司 | 视频编解码方法及装置 |
WO2024096895A1 (en) * | 2022-11-02 | 2024-05-10 | Google Llc | Wavefront scan order for transform coefficient coding |
WO2024096896A1 (en) * | 2022-11-02 | 2024-05-10 | Google Llc | Jointly designed context model and scan order for transform coefficient coding |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4776030A (en) * | 1986-03-28 | 1988-10-04 | Gte Laboratories Incorporated | Block quantizer for transform coding |
US5748244A (en) * | 1995-03-28 | 1998-05-05 | Daewoo Electronics Co., Ltd. | Adaptive runlength coding based on zero and non-zero subblocks |
US5790706A (en) * | 1996-07-03 | 1998-08-04 | Motorola, Inc. | Method and apparatus for scanning of transform coefficients |
GB0013273D0 (en) * | 2000-06-01 | 2000-07-26 | Philips Electronics Nv | Video signal encoding and buffer management |
JP4045913B2 (ja) * | 2002-09-27 | 2008-02-13 | 三菱電機株式会社 | 画像符号化装置、画像符号化方法、および画像処理装置 |
US20070033508A1 (en) * | 2003-05-12 | 2007-02-08 | Koninklijke Philips Electronics N.V. | Interative stripewise trellis-based symbol detection method and device for multi-dimensional recording systems |
-
2005
- 2005-09-01 CN CN 200510093682 patent/CN1917645B/zh not_active Expired - Fee Related
-
2006
- 2006-08-11 WO PCT/CN2006/002036 patent/WO2007019790A1/zh active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771868B (zh) * | 2008-12-31 | 2016-03-02 | 华为技术有限公司 | 对图像的量化处理方法及装置 |
CN112449188A (zh) * | 2019-08-28 | 2021-03-05 | 腾讯科技(深圳)有限公司 | 视频解码方法、编码方法、装置、介质及电子设备 |
CN112449188B (zh) * | 2019-08-28 | 2021-08-20 | 腾讯科技(深圳)有限公司 | 视频解码方法、编码方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2007019790A1 (en) | 2007-02-22 |
CN1917645B (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1297148C (zh) | 动画图像编码传送系统、动画图像编码传送方法、该系统和方法使用的适合的编码装置、译码装置、编码方法、译码方法以及程序 | |
CN1260978C (zh) | 图像处理装置 | |
CN100348052C (zh) | 在多个比特流中分散表示信号单元的比特以增强错误恢复的信源编码信号单元 | |
CN1138422C (zh) | 逐行扫描帧的内插方法 | |
CN1278562C (zh) | 编码失真消除方法、视频编码方法、视频解码方法、装置及其程序 | |
CN1703096A (zh) | 预测编码/解码器、预测编码/解码方法和记录介质 | |
CN1650636A (zh) | 编码设备和编码方法、解码设备和解码方法、记录介质以及程序 | |
CN1917645A (zh) | 对系数块进行编码的方法 | |
CN1640142A (zh) | 对小波变换系数进行编码的方法和设备 | |
CN1701616A (zh) | 图像信息编码装置和方法,以及图像信息解码装置和方法 | |
CN1168322C (zh) | 图象编码和解码方法 | |
CN1801945A (zh) | 编码视频序列变换装置和编码视频序列变换方法 | |
CN1630374A (zh) | 用于前向预测的隔行扫描视频帧的场的预测运动矢量 | |
CN1719905A (zh) | 编码装置、编码方法、编码方法程序及相应的记录媒体 | |
CN1705375A (zh) | 预测编码器/解码器以及预测编码/解码方法 | |
CN1515078A (zh) | 可变长度编码方法,可变长度译码方法,存储介质,可变长度编码设备,可变长度译码设备,和位流 | |
CN1513268A (zh) | 编码方法、译码方法、编码装置、译码装置、图象处理系统、编码程序和译码程序 | |
CN101039421A (zh) | 在编解码中的实现量化的方法和装置 | |
CN1774031A (zh) | 图像处理装置及图像处理方法、以及计算机程序 | |
CN1874409A (zh) | 图像信号处理设备、照相机系统及图像信号处理方法 | |
CN101035289A (zh) | 可变长度解码方法及装置 | |
CN1867034A (zh) | 图像信号处理装置,照相机系统和图像信号处理方法 | |
CN1778110A (zh) | 图像解码设备和图像解码方法 | |
CN1926576A (zh) | 用于数字编码3d立体视频图像的方法和系统 | |
CN1522544A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121219 Termination date: 20200901 |
|
CF01 | Termination of patent right due to non-payment of annual fee |