具体实施方式
本发明实施例使码号同时对应MB类型和CBP码,从而用码号携带更多的信息量,优化了编码过程和提高了编码效率。并且,在图像编码和图像解码过程中,减少了查表的过程。
参见图1,本实施例中帧内宏块编码的主要方法流程如下:
步骤101:建立宏块MB类型与块模式CBP码的对应关系。MB类型包括I_8×8或I_4×4。如果CBP码包括MB类型包括I_8×8和I_4×4,则可能导致码号较大,即变长码的最大长度较大,呈指数上升,影响图像编码效率。CBP码包括亮度CBP码或色度CBP码。CBP码可以包括亮度CBP码和色度CBP码,但考虑到码号的数量,CBP码为亮度CBP码或色度CBP码是较佳的实现方式。亮度CBP码和色度CBP码均可称为分量CBP码。
步骤102:用统一的码号顺序标记所述对应关系;其中,码号越小,所标记的对应关系中CBP码的概率越大。码号为不小于0的整数,并且从0开始顺序递增。
一个编码表的实例如下:
表2
表3是以I_8x8类型为例进行说明,可以用I_4x4类型替换I_8x8类型,并在第一行中用I_8x8类型替换I_4x4类型。并且,在表3中可以将I_4x4类型置于表尾,即与I_8x8类型所对应的行对调(码号列不变)。因为两种类型的应用概率基本相同,因此它们在表3中的顺序几乎不影响图像编码效率。其中,na表示无色度CBP,只有MB类型的情况,即na表示需要对I_4x4类型的CBP进行单独编码。色度CBP码所在列可更换为亮度CBP码,则建立了MB类型与亮度CBP码的对应关系。
在表3所示的实施例中,对于I_4X4来说,MB类型、亮度帧内预测模式、色度帧内预测模式、亮度CBP码和色度CBP码均单独编码。
本实施例通过表2不仅使码号携带了更多的信息,而且可以灵活选择应用的MB类型,即选择I_8x8类型或I_4x4类型。也可以在多种MB类型之间进行选择,以编码效果较好的MB类型作为最终的MB类型。则在图像的媒体流中,可能一帧图像的MB既有可能采用的是I_8x8类型编码,也有可能采用的是I_4x4类型编码。
也可以用MB类型号来标记MB类型,如表3所示:
表3
MB类型号 |
MB类型名 |
预测模式 |
0 |
I_4x4 |
INTRA4X4(5种) |
1 |
I_8x8 |
INTRA8X8(5种) |
参见图2,本实施例中帧内宏块编码的详细方法流程如下:
步骤201:确定MB类型。如前所述,确定要生成的编码表中哪种MB类型作为MB类型名所在列的主要内容。
步骤202:获得预测模式。
步骤203:获得CBP码。获得的预测模式与获得的CBP码对应,即如果预测模式为亮度预测模式,则CBP码为亮度CBP码;如果预测模式为色度预测模式,则CBP码为色度CBP码。
步骤204:建立MB类型、预测模式及CBP码三者之间的对应关系。
步骤205:用统一的码号顺序标记所述对应关系;其中,码号越小,所标记的对应关系中CBP码的概率越大。该码号对应指数哥伦布编码中的变长码。
本实施例用码号这一列对应三种信息,使码号携带了更多的信息量,则在图像编码过程减少了查询预测模式的过程,可在后续介绍图像编码过程时做详细说明。
在步骤203中,当所述CBP码为色度CBP码时,用色度CBP码的两种取值来分别表示有残差系数和无残差系数。现有技术中2个色度块有无残差系数需要用2个比特位来表示4种情况。本实施例用0(即00)表示2个色度块均无残差系数,用3(即11)表示至少有一个色度块有系数。即01、10和11三种情况均用11表示。该方式比较适用于4:1:0的采样模式。因为01和10出现的概率较低,并且色度编码一定程度上依赖于亮度,所以在色度方面多用的码字很有限,从而对编码效率没有实质影响。对于非4:1:0的采样模式,仍然每个块对应一个bit依然是很好的选择。
通过图2所示的实施例得到的一个编码表的实例如下:
表4
码号 |
MB类型名 |
色度预测模式(ChromaPred mode) |
色度CBP码 |
0 |
I_4x4 |
na |
na |
1 |
I_8x8 |
0 |
3 |
2 |
I_8x8 |
1 |
3 |
3 |
I_8x8 |
2 |
3 |
4 |
I_8x8 |
3 |
3 |
5 |
I_8x8 |
0 |
0 |
6 |
I_8x8 |
1 |
0 |
7 |
I_8x8 |
2 |
0 |
8 |
I_8x8 |
3 |
0 |
通过表4可知,码号对应了三种信息,而通过减少色度CBP码的数量,使码号的长度的增加不超过一倍。即,码号的数量在增加不多的情况下携带了更多的信息。
获得了上述编码表后,便可将该编码表应用在图像编码和图像解码过程中。
参见图3,本实施例中图像编码方法的实现过程如下:
本实施例以CBP码为亮度CBP码为例进行说明。
步骤301:确定MB类型,并根据该MB类型对图像进行分块,以及进行图像采样。
步骤302:获得预测模式,并对图像分块进行亮度预测。
步骤303:对预测残差进行变换和量化,得到残差系数。
步骤304:根据残差系数确定亮度CBP码。
步骤305:在编码表中查找与MB类型和亮度CBP码对应的码号;
步骤306:根据查找到的码号得到对应的变长码。从而实现了对一帧图像分块的亮度编码。
可见,在步骤301中可依需要确定MB类型。并且,在步骤305中执行一次查表过程获得了两个信息对应的码号,则在解码过程中通过获得的码号便可获知对应的MB类型和亮度CBP码。
参见图4,本实施例中图像编码方法的实现过程如下:
本实施例以CBP码为色度CBP码为例并结合表4进行说明。
步骤401:确定MB类型,并根据该MB类型对图像进行分块,以及进行图像采样。
步骤402:获得色度预测模式,并对图像分块进行色度预测。
步骤403:对色度预测残差进行变换和量化,得到色度残差系数。
步骤404:根据色度块是否均无色度残差系数来确定色度CBP码。若色度块均无色度残差系数,则色度CBP码为00,否则色度CBP码为11。
步骤405:在编码表中查找与MB类型、色度预测模式和色度CBP码对应的MB码号。
步骤406:获得亮度预测模式,并对图像分块进行亮度预测。
步骤407:对亮度预测残差进行变换和量化,得到亮度残差系数。
步骤408:根据亮度残差系数确定亮度CBP码。
步骤409:在亮度CBP编码表中查找与亮度CBP码对应的亮度码号。
步骤410:根据查找到的MB码号和亮度码号分别得到对应的变长码。
从图4所示的流程中可以明显看出查表的过程有所减少,提高了图像编码效率。
本实施例提供了图像编码方法,相应的,需要介绍图像解码方法。
参见图5,本实施例中图像解码的方法流程如下:
步骤501:获得宏块的码号。
步骤502:在编码表中查找与码号对应的MB类型和CBP码。
步骤503:根据CBP码确定亮度块或色度块是否有残差系数,如果有,则继续步骤504,否则确定残差为0(相当于无残差),继续步骤505。
步骤504:对残差系数进行反量化和反变换并得到残差。
步骤505:根据亮度预测、色度预测和得到的残差,获得图像分块的亮度分量和色度分量。
步骤506:根据色度分量和亮度分量得到图像分块。
步骤507:根据MB类型对图像分块进行组合,得到重建的图像。
CBP码可以是亮度CBP码、色度CBP码或两者的组合。若与MB类型结合的分量CBP码为亮度CBP码或色度CBP码,则需要对未结合的分量CBP码进行单独解码。
通过该流程可以明显看出,本实施例通过一次查表获得了MB类型和CBP码两项信息,减少了处理过程,并且较短的码号也可以提高图像解码的效率。
参见图6,本实施例中图像解码的方法流程如下:
本实施例以CBP码为色度CBP码为例并结合表4进行说明。
步骤601:获得图像分块的MB码号和亮度码号。
步骤602:在亮度CBP编码表(如4位CBP编码表)中查找与亮度码号对应的亮度CBP码。
步骤603:根据亮度CBP码确定亮度块是否有亮度残差系数,如果有,则继续步骤604,否则确定残差为0,继续步骤605。
步骤604:对亮度残差系数进行反量化和反变换并得到亮度残差。
步骤605:根据亮度预测和得到的亮度残差,获得图像分块的亮度分量。
步骤606:在编码表中查找与MB码号对应的MB类型和色度CBP码。
步骤607:根据色度CBP码确定色度块是否有色度残差系数,如果有,则继续步骤608,否则确定无残差,结束流程。
步骤608:对色度残差系数进行反量化和反变换并得到色度残差。
步骤609:根据色度预测和得到的色度残差,获得图像分块的色度分量。
步骤610:根据色度分量和亮度分量得到图像分块。
步骤611:根据MB类型对图像分块进行组合,得到重建的图像。
其中,步骤606-609可以在步骤602-605之前执行。
本实施例还提供用于实现各方法的装置,下面首先介绍用于块模式编码的帧内宏块编码装置。
参见图7,帧内宏块编码装置包括关系模块701和标记模块702。
关系模块701用于建立宏块MB类型与块模式CBP码的对应关系。
标记模块702用于用统一的码号标记所述对应关系。
帧内宏块编码装置还包括:CBP码产生模块用于当CBP码为色度CBP码,并且采用4:1:0采样模式时,用色度CBP码的取值00来表示无残差系数,用色度CBP码的取值11来表示除无残差系数以外的情况。
参见图8,图像编码装置包括:接口模块801、查询模块802和变长码模块803。
接口模块801用于获得MB类型和CBP码。
查询模块802用于在编码表中查找与所述MB类型和CBP码对应的码号。
变长码模块803用于根据查找到的码号得到对应的变长码。
图像编码装置还可包括:
用于对图像进行分块的分块模块。
用于依据确定的采样模式对图像分块进行采样的采样模块。
用于根据规定的预测模式对采样到的图像分块进行亮度或色度预测的预测模块。
用于对得到的预测残差进行变化和量化并得到预测残差的变换/量化模块。
用于根据残差系数确定CBP码的残差模块。
参见图9,图像解码装置包括:接口模块901、查询模块902、残差模块903、反量化/反变换904、分量模块905和重建模块906。
接口模块901用于获得图像分块的码号。
查询模块902用于在编码表中查找与码号对应的MB类型和CBP码。
残差模块903用于根据CBP码确定亮度块和色度块是否有残差系数。
反量化/反变换904用于在有残差系数的情况下,对残差系数进行反量化和反变换并得到残差。
分量模块905用于根据亮度预测、色度预测和得到的残差,获得图像分块的亮度分量和色度分量。
重建模块906用于根据M B类型、色度分量和亮度分量得到重建的图像。
用于实现本发明实施例的软件可以存储于软盘、硬盘、光盘和闪存等存储介质。
本发明实施例使码号同时至少对应MB类型和CBP码,从而用码号携带更多的信息量,优化了编码过程和提高了编码效率。并且将MB类型与分量CBP码结合,而不是与整体的CBP码结合,在一定程度上减少了码号的取值范围,从而使所对应的变长码的长度大大缩短,提高了编码效率。在图像编码和图像解码过程中,减少了查表的过程。在此基础上,本发明实施例通过将码号对应MB类型、预测模式和CBP码,使码号携带更多的信息,进一步提高图像编码和图像解码的效率。以及,本发明实施例通过减少色度CBP码的取值,在几乎不影响图像视觉效果的情况下,大幅度的减少了码号的数量,从而减少了变长码的长度,使图像编码和图像解码的效率进一步提高。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。