兼容不同大小块变换的编解码方法及编解码器转让专利

申请号 : CN200710111685.7

文献号 : CN101321283B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡昌启周建同林四新高山熊联欢

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了的兼容不同大小块变换的编解码方案,通过将多个小尺寸的子变换系数块中所提取出的系数进行交织处理,得出适用于大尺寸的变换系数块的熵编码方式所能够处理的编码序列,使适用于大尺寸的变换系数块的熵编码方式也能够适用于小尺寸的变换系数块,从而,使基于不同大小的块编码的编码系统中,在拥有适用于大尺寸的变换系数块的熵编码方式的情况下,能够不需要重新设计适用于小尺寸的变换系数块的熵编码方式,因此,能够减少编码的设计成本,降低设计复杂度。

权利要求 :

1.一种兼容不同大小块变换的编码方法,其特征在于,包括:对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列;

其中,N是大于或等于2的正整数,且所述N个子变换系数块中的第i个子变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;

提取各子序列中的系数,对提取出来的系数进行交织处理,生成待编码序列;

利用包含2x×2y个系数的变换块所适用的熵编码方式对所述待编码序列进行编码;

其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。

2.根据权利要求1所述的方法,其特征在于,对提取出来的系数进行交织处理的步骤包括:将各个系数排列成一个序列,且保持原属于各个子序列中的系数在所述序列中的排列顺序,与在原子序列中的排列顺序相同。

3.根据权利要求2所述的方法,其特征在于,将各个系数排列成一个序列的步骤包括:按系数所对应的频率从低到高的排列趋势,排列各系数。

4.根据权利要求2或3所述的方法,其特征在于,生成所述待编码序列的步骤包括:将各个系数排列成的所述一个序列作为所述待编码序列;或者,对所述一个序列进行变换处理,得到待编码序列。

5.根据权利要求4所述的方法,其特征在于,所述变换处理包括:哈达码Hadamard变换。

6.根据权利要求1、2或3所述的方法,其特征在于,提取各子序列中的系数的步骤包括:若子序列中的系数不全部为零,则将该子序列中的系数提取出来。

7.根据权利要求1、2或3所述的方法,其特征在于,x=3,且y=3。

8.根据权利要求1、2或3所述的方法,其特征在于,所述系数是经过量化的量化系数。

9.一种用于生成待进行编码的待编码序列的方法,其特征在于,包括:对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列;

其中,N是大于或等于2的正整数,且所述N个子变换系数块中的第i个子变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;

提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列;

其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。

10.一种用于生成待进行编码的待编码序列的装置,其特征在于,包括:子序列生成单元、待编码序列生成单元、输出单元;其中,

子序列生成单元,用于对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列,将所生成的子序列信息传送给待编码序列生成单元;其中,N是大于或等于2的正整数,且第i个变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;

待编码序列生成单元,用于接收来自子序列生成单元的子序列信息,提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列,将所述待编码序列信息传送给输出单元;

输出单元,用于接收来自待编码序列生成单元的所述待编码序列信息,将该信息输出;

其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。

11.根据权利要求10所述的装置,其特征在于,待编码序列生成单元包括:系数提取模块、交织处理模块、待编码序列生成模块;其中,

系数提取模块,用于从各子序列中提取出需要进行交织处理的系数,将所提取的系数信息传送给交织处理模块;

交织处理模块,用于接收来自系数提取模块的系数信息,将各个系数排列成一个序列,且保持原属于各个子序列中的系数在所述序列中的排列顺序,与在原子序列中的排列顺序相同,将该序列信息传送给待编码序列生成模块;

待编码序列生成模块,用于接收来自交织处理模块的所述序列信息,将所述序列作为待编码序列;或者对所述序列进行变换处理后,得到所述待编码序列。

12.一种兼容不同大小块变换的编码器,其特征在于,包括:用于生成待进行熵编码的待编码序列的装置和熵编码单元;

所述用于生成待进行熵编码的待编码序列的装置包括:子序列生成单元、待编码序列生成单元和输出单元;其中,子序列生成单元,用于对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列,将所生成的子序列信息传送给待编码序列生成单元;其中,N是大于或等于2的正整数,且第i个变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;

待编码序列生成单元,用于接收来自子序列生成单元的子序列信息,提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列,将所述待编码序列信息传送给输出单元;

输出单元,用于接收来自待编码序列生成单元的所述待编码序列信息,将该信息输出;

熵编码单元,用于接收来自输出单元的所述待编码序列信息,利用包含2x×2y个系数的变换块所适用的熵编码方式对所述待编码序列进行编码;

其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。

13.一种与权利要求1所述的兼容不同大小块变换的编码方法相对应的解码方法,对编码结果按照与所述编码相逆的过程进行解码处理,其特征在于,包括:对编码结果进行熵解码处理,得到待解码序列;

对所述待解码序列进行反交织处理,得到N个子序列;

对所述N个子序列分别进行反扫描处理,得到N个子变换系数块。

14.一种与权利要求12所述的兼容不同大小块变换的编码器相对应的解码器,其特征在于,包括:熵解码单元、反交织处理单元、反扫描处理单元;其中,熵解码单元,对编码结果进行熵解码处理,得到待解码序列,将所述待解码序列的信息传送给反交织处理单元;

反交织处理单元,用于接收来自熵解码单元的待解码序列的信息,对所述待解码序列进行反交织处理,得到N个子序列,将该N个子序列的信息传送给反扫描处理单元;

反扫描处理单元,用于接收来自反交织处理单元的N个子序列的信息,对所述N个子序列分别进行反扫描处理,得到N个子变换系数块。

说明书 :

技术领域

本发明涉及视频图像编码技术,尤其涉及一种兼容不同大小块变换的编解码方法及编解码器。

背景技术

原始视频图象数据所含信息量通常较大,因此直接将整个原始视频图像数据所含信息量作为传输或存储视频内容的对象,因需要耗费庞大的存储或传输资源,而不具有现实意义。
原始视频图象数据中包含一系列的静止图像信息,通常将一片静止图像称为一帧。一段视频中包含多帧,并通过帧的连续播放来产生动态的视觉效果,因而连续帧中的数据内容是非常相似的,也就是说后一帧相对于前一帧包含很多冗余信息。视频编码技术作为一种信息压缩技术,就是通过尽量消除冗余信息,保留图像的特征信息,来实现视频图像数据信息量的压缩,从而极大程度地降低信息存储量,并方便视频图像的传输。
典型的视频编码,如国际电信联盟(ITU)制定的H.261、H.263、H.264等标准,国际标准化组织(ISO)的数字音频压缩技术(MPEG)组织制定的MEPG-1,MPEG-2,MPEG-4,以及中国数字音视频编解码技术标准(AVS)工作组制定的AVS标准,都基于混合编码框架进行。参见图1,图1是现有的混合编码框架示意图。如图1所示,在混合编码框架中,对视频图像数据编码的过程通常包括:
利用预测去除时间/空间域的冗余性:基于帧内(I)或帧间(P)等模式编码,对原始图像数据进行预测和估计,得到预测块,然后得出待压缩的原始图像数据与预测块之差,即得到残差块;
利用变换去除空间域的冗余性:对此残差块作基于块的变换编码,如离散余弦变换(DCT)、整数变换等,得到变换系数块,再对该变换系数块中的系数进行量化处理,得到量化后的变换系数块;
利用熵编码去除统计上的冗余性:对变换系数块进行熵编码。其中,熵编码的类型可包括:上下文自适应可变长编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、逆向游程扫描结合二维可变长编码(2D-VLC)等等熵编码。
对于上述基于块的变换编码,其中,所谓“块”是指将帧划分为多个矩形区域,每个矩形区域称为一个“块”。常用块的尺寸可包括:4×4块、8×8块、16×16块、8×4块等。由于基于不同的块进行编码所能够获得的效果不同,因此,为取得更好的编码效果,在一些标准中,引入自适应块变换(ABT)技术,即在一个视频编码系统中,可针对不同的需要,采用不同的块的变换编码方式进行编码。上述变换系数块(或量化后的变换系数块)是基于块的变换编码的结果,且变换系数块具有与ABT变换中不同频率相对应的系数。
熵编码方式(或算法)通常是针对基于块的变换编码所设计的,或者说熵编码方式与进行变换编码时所选块的尺寸是相匹配的,如8×8块的变换编码对应一种CAVLC,4×4块的变换编码对应另一种CAVLC。而由于熵编码算法的设计具有一定的复杂度,且其硬件实现的复杂度也较高,因此,为避免遇到软件与硬件设计上的复杂度问题,在一个视频编码系统中,通常设计一套熵编码算法,即采用一种熵编码方式进行编码。而对于引入了ABT技术的编码系统中,由于基于块的变换编码中采用了不同大小的块进行变换编码,因此在进行熵编码之前,需要采用措施,以使编码系统中适用于一种块的熵编码方式也能够对其他尺寸的块进行编码。
如,在H.264高级视频编码(AVC)标准中,基于块的变换编码存在4×4和8×8两种,而该标准中的熵编码方式所能够适用的是4×4块,则8×8变换系数块可按照如下方式使用4×4变换系数块所适用的熵编码方式:
先将8×8变换系数块的64个变换系数按照图2扫描方式序列化为:
a0,a1,a2,a3,a4,a5,a6,a7,a8,...,a63;
然后,从上述64个系数中通过子采样,得出四个分别含16个系数的序列Si,i=1、2、3、4,该子采样方式是:每个序列中系数编号之间满足关系:a[j×4+i-1],j=0,1,...,15;得到:
S1:a0,a4,a8,...,a60;
S2:a1,a5,a9,...,a 61;
S3:a2,a6,a10,...,a62;
S4:a3,a7,a11,...,a63;
之后,将上述四个序列按照4×4变换系数块所适用的熵编码方式进行编码。这样,在一个编码系统中,即使基于不同尺寸的块进行能够变换编码,也可以采用同一套熵编码算法,对该算法所不适用的变换系数块进行编码。
现有技术所适用的是利用小尺寸的变换系数块所适用的熵编码方式,对大尺寸的变换系数块进行编码的情形。但是,上述使用4×4变换系数块所适用的熵编码方式对大尺寸变换系数块进行编码的做法,只适用于大于4×4尺寸的块变换,而并不适用于更小尺寸的块变换。在遇到更小尺寸的块变换的情况时,仍可能需要针对更小块变换,设计能够匹配的熵编码算法,从而带来设计复杂度问题。

发明内容

本发明实施例提供了可对小尺寸的变换系数块采用大尺寸的变换系数块所适用的熵编码方式进行编码的技术方案。本发明实施例的技术方案如下:
一种兼容不同大小块变换的编码方法,包括:
对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列;
其中,N是大于或等于2的正整数,且所述N个子变换系数块中的第i个子变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;
提取各子序列中的系数,对提取出来的系数进行交织处理,生成待编码序列;
利用包含2x×2y个系数的变换块所适用的熵编码方式对所述待编码序列进行编码;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。
一种用于生成待进行编码的待编码序列的方法,包括:
对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列;
其中,N是大于或等于2的正整数,且所述N个子变换系数块中的第i个子变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;
提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。
一种用于生成待进行编码的待编码序列的装置,包括:
子序列生成单元、待编码序列生成单元、输出单元;其中,
子序列生成单元,用于对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列,将所生成的子序列信息传送给待编码序列生成单元;其中,N是大于或等于2的正整数,且第i个变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;
待编码序列生成单元,用于接收来自子序列生成单元的子序列信息,提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列,将所述待编码序列信息传送给输出单元;
输出单元,用于接收来自待编码序列生成单元的所述待编码序列信息,将该信息输出;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。
一种兼容不同大小块变换的编码器,包括:用于生成待进行熵编码的待编码序列的装置和熵编码单元和输出单元;
所述用于生成待进行熵编码的待编码序列的装置包括:子序列生成单元、待编码序列生成单元;其中,
子序列生成单元,用于对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列,将所生成的子序列信息传送给待编码序列生成单元;其中,N是大于或等于2的正整数,且第i个变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;
待编码序列生成单元,用于接收来自子序列生成单元的子序列信息,提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列,将所述待编码序列信息传送给输出单元;
输出单元,用于接收来自待编码序列生成单元的所述待编码序列信息,将该信息输出;
熵编码单元,用于接收来自输出单元的所述待编码序列信息,利用包含2x×2y个系数的变换块所适用的熵编码方式对所述待编码序列进行编码;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和。
一种与兼容不同大小块变换的编码相对应的解码方法,对编码结果按照与所述编码相逆的过程进行解码处理,包括:
对编码结果进行熵解码处理,得到待解码序列;
对所述待解码序列进行反交织处理,得到N个子序列;
对所述N个子序列分别进行反扫描处理,得到N个子变换系数块。
一种与兼容不同大小块变换的编码器相对应的解码器,包括:熵解码单元、反交织处理单元、反扫描处理单元;其中,
熵解码单元,对编码结果进行熵解码处理,得到待解码序列,将所述待解码序列的信息传送给反交织处理单元;
反交织处理单元,用于接收来自熵解码单元的待解码序列的信息,对所述待解码序列进行反交织处理,得到N个子序列,将该N个子序列的信息传送给反扫描处理单元;
反扫描处理单元,用于接收来自反交织处理单元的N个子序列的信息,对所述N个子序列分别进行反扫描处理,得到N个子变换系数块。
综上所述,本发明实施例提供的兼容不同大小块变换的编解码方案,通过将多个小尺寸的子变换系数块中所提取出的系数进行交织处理,得出适用于大尺寸的变换系数块的熵编码方式所能够处理的编码序列,使适用于大尺寸的变换系数块的熵编码方式也能够适用于小尺寸的变换系数块,从而,使基于不同大小的块编码的编码系统中,在拥有适用于大尺寸的变换系数块的熵编码方式的情况下,能够不需要重新设计适用于小尺寸的变换系数块的熵编码方式,因此,能够减少编码的设计成本,降低设计复杂度。

附图说明

图1是现有的混合编码框架示意图
图2a是公知的一个8×8块的之字扫描方式示意图;
图2b是公知的一个8×8块的场扫描方式示意图;
图3是本发明实施例中兼容不同大小块变换的编码方法的流程图;
图4是本发明实施例中用于生成待进行编码的待编码序列的方法流程图;
图5是本发明实施例中用于生成待进行编码的待编码序列的装置的结构示意图;
图6是图5中待编码序列生成单元的结构示意图;
图7是本发明实施例中兼容不同大小块变换的编码器的结构示意图;
图8是本发明实施例一中4个4×4的子变换系数块的组合示意图;
图9a是公知的一个4×4块的之字扫描方式示意图;
图9b是公知的一个4×4块的场扫描方式示意图
图10是本发明实施例一中对四个4×4的子变换系数块进行编码的流程图
图11是本发明实施例二中以一个4×4的子变换系数块为单位的16个子变换系数块的排列示意图;
图12是本发明实施例二中16个4×4的子变换系数块的编码组合方案示意图;
图13是本发明实施例三中16个4×4的子变换系数块的编码组合方案示意图;
图14是本发明实施例四中不同尺寸的子变换系数块的组合示意图;
图15是本发明实施例四中得出图16所示组合的待编码序列的流程图;
图16本发明实施例五中两个8×4的子变换系数块的组合示意图;
图17是本发明实施例五中得出图18所示组合的待编码序列的流程图;
图18是本发明实施例中与兼容不同大小块变换的编码相对应的解码方法的流程图;
图19是本发明实施例中与兼容不同大小块变换的编码器相对应的解码器的结构示意图。

具体实施方式

下面将结合附图对本发明实施例的技术方案作进一步详细描述。
本发明实施例提供了可对小尺寸的变换系数块采用大尺寸的变换系数块所适用的熵编码方式进行编码的技术方案。
本发明实施例首先提供一种兼容不同大小块变换的编码方法。参见图3,图3是该方法的流程图。该流程可包括以下步骤:
步骤301、对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列;
其中,N是大于或等于2的正整数,且所述N个子变换系数块中的第i个子变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数。
步骤302、提取各子序列中的系数,对提取出来的系数进行交织处理,生成待编码序列。
步骤303、利用包含2x×2y个系数的变换系数块所适用的熵编码方式对所述待编码序列进行编码;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于或等于N个子变换系数块所含系数个数之和,即:
2 x × 2 y Σ i = 1 N 2 n i × 2 m i .
上述包含2x×2y个系数的变换系数块相对于包含个系数的变换系数块而言,前者可以是大尺寸的块,后者可以是小尺寸的块。如前者是8×8大小的块,则后者的大小可为:4×4、2×2、4×8、8×4等等;如前者是16×8大小的块,则后者的大小可为:8×16、8×8、4×8、4×4、2×2等等。
参见图4,图4是本发明实施例中用于生成待进行编码的待编码序列的方法流程图,该流程可包括以下步骤:
步骤401、对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列;
其中,N是大于或等于2的正整数,且所述N个子变换系数块中的第i个子变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数。
步骤402、提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于N个子变换系数块所含系数个数之和。
所需要说明的是,本发明实施例中,变换系数块或子变换系数块可能是经过量化处理的,也可能未经过量化处理。
参见图5,图5是本发明实施例中用于生成待进行编码的待编码序列的装置的结构示意图。该装置可包括:子序列生成单元、待编码序列生成单元、输出单元;其中,
子序列生成单元,用于对根据视频图像数据得到的N个子变换系数块中的每个子变换系数块进行扫描,生成由该子变换系数块中的系数组成的子序列,将所生成的子序列信息传送给待编码序列生成单元;其中,N是大于或等于2的正整数,且第i个变换系数块包含个系数,i=1,2,......,N,ni和mi是大于或等于1的正整数;
待编码序列生成单元,用于接收来自子序列生成单元的子序列信息,提取各子序列中的系数,对提取出来的系数进行交织处理,生成能够利用包含2x×2y个系数的变换块所适用的熵编码方式进行编码的待编码序列,将所述待编码序列信息传送给输出单元;
输出单元,用于接收来自待编码序列生成单元的所述待编码序列信息,将该信息输出;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于N个子变换系数块所含系数个数之和。
参见图6,图6是图5中待编码序列生成单元的结构示意图。待编码序列生成单元可包括:系数提取模块、交织处理模块、待编码序列生成模块;其中,
系数提取模块,用于从各子序列中提取出需要进行交织处理的系数,将所提取的系数信息传送给交织处理单元;
交织处理单元,用于接收来自系数提取模块的系数信息将各个系数排列成一个序列,且保持原属于各个子序列中的系数在所述序列中的排列顺序,与在原子序列中的排列顺序相同,将该序列信息传送给待编码序列生成模块;
待编码序列生成模块,用于接收来自交织处理单元的所述序列信息,将所述序列作为待编码序列;或者对所述序列进行变换处理后,得到所述待编码序列。
参见图7,图7是本发明实施例中兼容不同大小块变换的编码器的结构示意图,可包括:用于生成待进行熵编码的待编码序列的装置、熵编码单元和发送单元;
用于生成待进行熵编码的待编码序列的装置可包括上述图5及图6所示单元或模块;
熵编码单元,用于接收来自输出单元的所述待编码序列信息,利用包含2x×2y个系数的变换块所适用的熵编码方式对所述待编码序列进行编码,将编码结果信息传送给发送单元;
发送单元,用于接收来自熵编码单元的编码结果信息,将该信息发送出去;
其中,x和y是大于或等于2的正整数,且所述变换系数块所含系数个数2x×2y大于N个子变换系数块所含系数个数之和。
下面给出本发明实施例提供的上述技术方案的具体实施例。
实施例一:
本实施例一中,设需要采用大小为8×8的变换系数块所适用的熵编码方式对四个4×4的子变换系数块进行编码。
本实施例一中,设可用SBi表示该四个子变换系数块中的一个,i可取1、2、3或4。参见图8、图9a和图9b,其中,图8是4个4×4的子变换系数块的组合示意图;图9a是公知的一个4×4块的之字扫描方式示意图;图9b是公知的一个4×4块的场扫描方式示意图。通常,一个二维的变换系数块中,低频高幅的系数会排在块的左上角,通过扫描,可将二维的变换系数块得到一个一维序列,并且,该一维序列中系数从左至右的排列规则通常是按幅值递减的方式排列,序列中系数按照该方式排列,可提高后续熵编码效率。由于系数幅值是统计得出的,因此,也并不排除其中可能出现幅值较小的系数,排列在幅值较大的系数之前的情形,但总的来说,一维序列排序的整体趋势是按系数所对应的频率从低到高的排列趋势排列的。并且,序列中,通常开始部分的一些系数幅值非零,之后多数系数幅值为零。
参见图10,图10是本发明实施例一中对四个4×4的子变换系数块进行编码的流程图,该流程包括以下步骤:
步骤1001、对四个子变换系数块SBi按照图9a扫描方式分别进行扫描,得到四个子序列Si,每个子序列都包含16个系数,即,
S1:a0,a1,a2,...,a15;
S2:b0,b1,b2,...,b15;
S3:c0,c1,c2,...,c15;
S4:d0,d1,d2,...,d15。
本实施例中,所采用的扫描方式也可采用图9b的扫描方式或适用于熵编码方式的其他扫描方式。
步骤1002、查看各子序列中的系数,如果S 1至S4子序列中的系数全部为零,则执行步骤1003;否则,执行步骤1004。
步骤1003、可得到表示上述四个子序列中的全部系数均为零的编码结果,且可设置标记标示该编码结果,结束本次编码流程。
本实施例中,可设置变量cbp,根据该变量值,可判断是否需要继续编码流程,如设定若四个子序列中的全部系数均为零,则cbp=0;否则,cbp=1;即若cbp=0,则可结束本次编码流程,将cbp=0写入编码结果,若cbp=1,则需要继续执行后续步骤。
步骤1004、将四个子序列中,系数不全部为零的子序列中的系数提取出来,执行后续步骤,并可将系数全部为零的子序列删去。
本实施例中,也可设置变量来标示各个子序列是否为零的情况。如设置cbpSi,若cbpSi=0,则可标示该子序列Si的系数全部为零,可将该Si序列删除;若cbpSi=1,则可表示该子序列需要进行编码处理。且,也可将该变量cbpSi的值写入编码结果。
步骤1005、对提取出来的系数进行交织处理,以得到由这些子序列中的系数组成的可不超过64个系数的序列。
本实施例中,若四个子序列中均存在不为零的系数,则交织处理后所得到的序列可为:
a0 b0 c0 d0 a1 b1 c1 d1 a2 b2 c2 d2...a15 b15 c15 d15       (1);
交织处理的做法可以是将各个系数排列成一个序列,且保持原属于各个子序列中的系数在所述序列中的排列顺序,与在原子序列中的排列顺序相同,为进一步提高后续熵编码效率,序列中系数所对应的频率可呈现从低到高的排列趋势。如上述序列(1)中,系数a0,a1,a2,...,a15的排列顺序与S 1中的相同,系数b0,b1,b2,...,b15的排列顺序与S2中的相同,类似可看出原S3和S4中的系数在码序列(1)中的排列顺序与在各自所属的原子序列中的排列顺序相同。并且,本实施例中,交织处理后得到的序列也可以是:
a0 b0 d0 c0 a1 c1 b1 d1 b2 a2 c2 d2...c15 a15 b15 d15      (2);
其他可能的情况不再列举。
步骤1006、可对a0、b0、c0、d0做2×2的哈达码(Hadamard)变换,序列(1)被变换为序列(3):
a0’b0’c0’d0’a1 b1 c1 d1 a2 b2 c2 d2...a15 b15 c15 d15  (3);
实际应用中,可将序列(1)作为待编码序列,在后续直接对该待编码序列进行编码。在本实施例中,为进一步提高后续熵编码效率,还需要对序列(1)进行变换处理,变换处理后所得到的序列(3)将作为待编码序列。本实施例中,对序列(1)采用哈达码(Hadamard)变换,Hadamard变换的作用在于是系数幅值所体现的能量进一步集中由a0’来体现,经过该变换后,序列(3)中,可能从b0’开始,系数就已经接近于零。从而,后续对序列(3)进行熵编码时,可只对a0’进行编码,得出对应的码字。若对序列(1)或(2)进行了Hadamard变换,那么可在编码结果中写入采用了该变换的标记。
步骤1007、对序列(3)使用适用于8×8变换系数块的熵编码方式进行编码,本次编码流程结束。
另外,本发明实施例中,步骤1005也在步骤1002之前执行,若在步骤1002之前执行,则序列(1)中包含64个系数。步骤1002至步骤1004的技术方案是为进一步提高编码效率而给出的,实际应用中,可采用其他用以提高编码效率的做法。另外,可采用cbpS替代cbpSi,或者说可将四个子序列是否需要编码,或对其中的哪些子序列需要编码等的标示信息映射到cbpS,如cbpS=0,则可表示四个子序列中都只有预测直流(DC)系数,即a0、b0、c0、d0非零,其他系数均为零;若cbpS=1,可表示需要对四个子序列进行编码;若cbpS=2,可表示需要对子序列S 1和S2进行编码,等等,不再列举。
上述对小尺寸的子变换系数块采用适用于大尺寸的变换系数块的熵编码方式进行编码的实施例一中,所选小尺寸的子变换系数块的组合是4个4×4的块,大尺寸变换系数块是8×8的块,且4个4×4的块恰好可组合成一个8×8的块。而实际上,本发明实施例提供的编码方案是一种兼容方案,即只要大尺寸的变换系数块的系数个数2x×2y大于参与组合的N个小尺寸的子变换系数块的系数个数之和,则均可对组合得出的N个小尺寸的子变换系数块用适用于大尺寸的变换系数块的熵编码方式进行编码,N个小尺寸的子变换系数块的大小也未必需要相同。因为,从实施例一可知,要使用大尺寸的变换系数块所适用的熵编码方式对小尺寸的子变换系数块进行编码,只要能够满足各个小尺寸的子变换系数块所含系数在经过交织所得到的待编码序列中所含系数个数,不超过大尺寸的变换系数块所含系数个数即可,当然,该处所说的经过交织所得到的待编码序列中所含系数个数包含在交织前后可能被删除的为零的系数个数。
另外,上述实施例一中,除需要将熵编码结果写入编码结果,还可将上述子变换系数块的组合信息、扫描方式的信息、cbp的信息、cbpSi的信息、关于如何交织的信息、采用了Hadamard变换的标识信息等编码过程的特征信息写入编码结果,供解码端在解码时,依照与编码端相逆的过程进行解码。其中,关于如何交织的信息可以是,如何按本发明实施例中默认的交织方式,即交织后得到的序列为序列(1),则可不需要传送相关信息的标识,在解码端默认该交织方式,如果交织方式是非默认的,如交织后得到的序列是序列(2),则将非默认的交织方式标识信息写入编码结果,传送给解码端。
实施例二:
本实施例二中,采用适用于大小为8×8的变换系数块的熵编码方式对16个4×4的子变换系数块进行编码。
参见图11,图11是以一个4×4的子变换系数块为单位的16个子变换系数块的排列示意图。参见图12,图12是本实施例二中16个4×4的子变换系数块的编码组合方案示意图。如图12所示,本实施例二中,仍对4个4×4的子变换系数块作一个组合,如,将图11所示的0~3四个子变换系数块作为一个组合,将4~7四个子变换系数块作为一个组合,将8~11四个子变换系数块作为一个组合,以及将12~15四个子变换系数块作为一个组合。基于上述实施例一的编码流程,对本实施例中的上述4个组合分别采用8×8块所适用的熵编码方式进行编码。对每四个子变换系数块进行编码时的扫描顺序如图12所示,如对0~3四个子变换系数块进行编码时,先扫描子变换系数块0,得出对应的子序列;再扫描子变换系数块1,得出对应的子序列;然后扫描子变换系数块2,得出对应的子序列;最后扫描子变换系数块3,得出对应的子序列;之后从各子序列中提取系数,对提取的系数进行交织处理,后续处理流程可参见实施例一,不再赘述。
另外,可在编码结果中写入有关本次编码中各个子变换系数块的组合信息,如该组合由4个4×4的子变换系数块组成,这样的组合共有四个,共有16个子变换系数块,按图11所示排列方式排列。
实施例三:
本实施例三中,采用适用于大小为8×8变换系数块的熵编码对16个4×4的子变换系数块进行编码。该16个子变换系数块的排列情况也可参见图11。参见图13,图13是本实施例三中16个4×4的子变换系数块的编码组合方案示意图。本实施例三中,可将子变换系数块0、4、8、12作为一个组合,即该组合包含四个4×4的子变换系数块,基于实施例一的编码流程,对该四个子变换系数块进行编码,其中,扫描顺序如图13所示,依次扫描子变换系数块0、5、8和12。
对于其余的1、4、2、3、6、7、9、13、10、11、14、15子变换系数块,可继续形成4个组合:1、2、3组合;5、6、7组合;9、10、11组合;13、14、15组合。如对1、2、3组合进行编码时,按如图13所示扫描顺序,先扫描子变换系数块1,得到对应的子序列;然后扫描子变换系数块2,得出对应的子序列;最后扫描子变换系数块3,得出对应的子序列;将得出的三个子序列进行交织处理,交织处理的做法仍然是:保持原属于各个子序列中的系数在所述序列中的排列顺序,与在原子序列中的排列顺序相同。
其余三个组合形成各自待编码序列的过程可类推,不再赘述。
本实施例中,参与组合的多个子变换系数块未必需要是连续的或紧挨的,可根据需要选择间隔较远的子变换系数块。本实施例中,也可将组合相关信息写入编码结果,写入方式可采用映射写入或变量幅值。
实施例四:
本实施例四中,采用适用于大小为8×8的变换系数块的熵编码方式对不同尺寸的子变换系数块进行编码。参见图14,图14是本实施例四中不同尺寸的子变换系数块的组合示意图。该组合包括:4个2×2的子变换系数块,3个4×4的子变换系数块。现对如何得到该组合的待编码序列作说明。参见图15,图15是本实施例四中得出图14所示组合的待编码序列的流程图,该流程可包括以下步骤:
步骤1501、依次扫描4个2×2的子变换系数块,得出对应的4个子序列Ai,i可取1、2、3、4。其中,
A 1:aa0、aa1、aa2、aa3;
A2:ab0、ab1、ab2、ab3;
A3:ac0、ac1、ac2、ac3;
A4:ad0、ad1、ad2、ad3。
步骤1502、从4个子序列中提取系数,对提出的系数进行交织处理,得出一个所含系数不超过16的S 1序列。
S 1:aa0、ab0、ac0、ad0、aa1、ab1、ac1、ad1...aa3、ab3、ac3、ad3。
该步骤中,交织处理的做法与实施例一类似。
步骤1503、对其余3个4×4的子变换系数块依次进行扫描处理,得出三个子序列:S2、S3、S4。
S2:b0,b1,b2,...,b15;
S3:c0,c1,c2,...,c15;
S4:d0,d1,d2,...,d15。
步骤1504、对S 1至S4四个子序列进行交织处理,得出待编码序列:
aa0、b0、c0、d0、ab0、b1、c1、d1、...、ad3、b15、c15、d15。
该步骤中,交织处理的做法与实施例一类似。
本实施例中,上述步骤1502与步骤1503的执行顺序不需要严格遵守,也就是说,由于组合中存在多个子变换系数块,因此对该多个子变换系数块所进行的扫描,以及系数交织等处理顺序,可根据实际情况来进行,相应地,上述步骤301与302的执行次序,或步骤401与402的执行次序只是针对于最终所要得到的待编码序列而言的,即交织处理是对从各子序列中提取的系数进行的,而具体实施时,可能存在如该实施例四中的需要对不同尺寸的子变换系数块进行编码的情况,因此相应地,可采取类似于本实施例四的处理。
至此,得到待编码序列,之后对该待编码序列,用适用于8×8的变换系数块的熵编码方式对该待编码序列进行编码。
实施例五:
本实施例五中,采用适用于大小为8×8的变换系数块的熵编码方式对两个8×4的子变换系数块进行编码。参见图16,图16本实施例五中两个8×4的子变换系数块的组合示意图。参见图17,图17是本实施例五中得出图18所示组合的待编码序列的流程图,该流程可包括以下步骤:
步骤1701、采用如图16所示类似于之字的扫描方式,依次对两个8×4的子变换系数块进行扫描,得出对应的两个子序列S 1和S2。其中,
S1:a0、b0、a1、b1、a2、b2、...、a15、b15;
S2:c0、d0、c1、d1、c2、d2、...、c15、d15。
也可采用类似于场扫描的扫描或其他扫描方式,且通常扫描到的序列中,排在之前的系数幅值所体现的能量较大。
步骤1702、对从S 1和S2中提取的系数进行交织处理,得出该组合的待编码序列:
a0、b0、c0、d0、a1、b1、c1、d1、...、a15、b15、c15、d15。
该步骤中,交织处理的做法与实施例一类似。
至此,得到图16所示组合的待编码序列,之后对该待编码序列,用适用于8×8的变换系数块的熵编码方式对该待编码序列进行编码。
本发明实施例还提供一种与兼容不同大小块变换的编码相对应的解码方法,对编码结果按照与所述编码相逆的过程进行解码处理,即该解码过程与编码过程相对应,且是编码过程的逆过程。参见图18,图18是该解码方法的流程图,该流程可包括以下步骤:
步骤1801、对编码结果进行熵解码处理,得到待解码序列。
该待解码序列对应的上述待编码序列相同。
步骤1802、对所述待解码序列进行反交织处理,得到N个子序列。
反交织处理的作用是将待解码序列重新还原成多个子序列。
步骤1803、对所述N个子序列分别进行反扫描处理,得到N个子变换系数块。
反扫描的作用是将各个序列中的系数重新还原到二维块中相应位置。
本发明实施例还提供一种与兼容不同大小块变换的编码器相对应的解码器。参见图19,图19是该解码器的结构示意图。该解码器可包括:熵解码单元、反交织处理单元、反扫描处理单元;其中,
熵解码单元,对编码结果进行熵解码处理,得到待解码序列,将所述待解码系列的信息传送给反交织处理单元;该待解码序列对应的上述带编码序列相同;
反交织处理单元,用于接收来自熵解码单元的待解码序列的信息,对所述待解码序列进行反交织处理,得到N个子序列,将该N个子序列的信息传送给反扫描单元;
反扫描处理单元,用于接收来自反交织处理单元的N个子序列的信息,对所述N个子序列分别进行反扫描处理,得到N个子变换系数块。
以对上述实施例一的编码进行解码,说明本发明实施例中解码过程的实现。解码器对所接收到的编码结果进行解码,如:
在编码结果中解码出子变换系数块的组合信息,获知待解码序列所对应的块的尺寸等信息;
在编码结果中解码cbp的信息,如果cbp为0,后续就不存在更多关于本次编码的信息;如果cbp为1,继续解码;
解码出CbpSi(i=1,2,3,4)的信息,获知待解码序列对应哪些Si;
解码出采用Hadamard变换标识,对待解码序列进行Hadamard逆变换,得到逆变换后的待解码序列;
未解码出交织方式标识,因此对变换后的待解码序列按默认交织方式进行反交织处理,得到多个子序列;
解码出扫描方式的信息,对各个子序列进行反扫描处理,将各系数重新归位到属原二维的子变换系数块的相应位置,对子变换系数块的解码就结束了。
综上所述,本发明实施例提供的兼容不同大小块变换的编解码方案,通过将多个小尺寸的子变换系数块中所提取出的系数进行交织处理,得出适用于大尺寸的变换系数块的熵编码方式所能够处理的编码序列,使适用于大尺寸的变换系数块的熵编码方式也能够适用于小尺寸的变换系数块,从而,使基于不同大小的块编码的编码系统中,如一个引入ABT技术的编码系统,在拥有适用于大尺寸的变换系数块的熵编码方式的情况下,能够不需要重新设计适用于小尺寸的变换系数块的熵编码方式,因此,能够减少编码的设计成本,降低设计复杂度。
并且,本发明实施例中,由于可对多个子变换系数块同时编码,因此进一步减少块间相关性,提高编码性能。另外,本发明实施例中,可对多个子变换系数块同时编码,相比于一个一个地对子变换系数块进行编码的情况,减少读取编码的块结束(EoB)标记的次数,有效提高编码效率。