一种图像的编码、解码方法和装置与流程

文档序号:11139309
一种图像的编码、解码方法和装置与制造工艺

本发明涉及图像处理领域,尤其涉及一种图像的编码、解码方法和装置。



背景技术:

随着技术的进步和消费者对更高品质生活的追求,高分辨率、高帧率等要求将贯穿视频图像编解码应用的所有场合。目前,图像分辨率一般高达720P到1080P,甚至更高;帧率一般从30帧/秒向60帧/秒、120帧/秒、甚至240帧/秒的应用场景升级。

对H.264和高性能视频编码(High Efficiency Video Coding,HEVC)等视频编码标准而言,每编码或解码一帧图像,需要从DRAM(Dynamic Random Access Memory,动态随机存取存储器)等片外存储器中至少读一帧的参考图像(也可称为参考帧)到编码芯片。所以,图像分辨率和帧率的提高、多帧参考等编码工具的应用,将对编码或解码模块和片外存储器之间的传输带宽提出严峻的挑战,同时,编解码核心模块和片外存储器之间的数据吞吐也将引起系统功耗的上升。

为了解决编解码芯片由片外存储器存取参考帧时所需的大带宽,以及由此引起的功耗问题,参考帧压缩技术应运而生。目前,编码端和解码端将重建的参考图像输出存放到片外存储器之前,以无损压缩的方式减少表示参考图像所需的数据量,将压缩后的参考帧保存到存储器。由于压缩以后的图像,其数据量将小于原始参考图像,所以参考帧压缩技术以花费在无损压缩和解压缩过程中的计算代价,换取编解码芯片和存储器之间传输带宽的减小,以及系统功耗的下降。

在现有技术中的参考帧压缩和解压缩(也可理解为编解码过程)过程中, 以差分脉码调制为基础,以一个8×4的亮度分量编码块和对应的两个色度分量编码块为一个编码单元,将四个这样的编码单元组合成一个组,并通过内存映射的方式提高组级的随机访问能力。

可见,现有技术中的图像压缩方法是利用邻域像素所存在的相关性,以减少帧内冗余信息。然而,该方法获得的压缩比有限,在对较高分辨率的参考帧进行压缩时,压缩效果不明显。



技术实现要素:

本发明实施例提供了一种图像的编码、解码方法和装置,提供了一种图像的无损压缩方式,用以提高图像压缩比例,进而减少编码芯片与外部存储器之间传输参考帧所需的带宽。

本发明实施例提供了一种图像的编码方法,该方法包括:

获取待处理视频帧,根据所述待处理视频帧的视频采样格式,将所述待处理视频帧划分为由若干个编码块构成的编码单元;

对于所述待处理视频帧中的各编码单元,分别执行如下编码操作:对该编码单元中的各编码块进行块内预测,分别计算各编码块中的每个像素的预测残差值;根据所述各编码块中的每个像素的预测残差值的集合,生成该编码单元的残差图像;按照预设规则,将生成的残差图像划分为N个层图像;采用不同编码模式分别对各层图像进行预测,获取所述各层图像在不同编码模式下的预测码流长度;根据所述各层图像的原始码流长度和在不同编码模式下的预测码流长度,判断是否需要对该层图像进行编码,如果需要,采用取值最小的预测码流长度所对应的编码模式对该层图像进行编码并封装该层图像的编码后的码流;如果不需要,则不对该层图像进行压缩编码并封装该层图像的原始码流;将用于表示该编码单元中的各层图像的编码方式、码流长度和该编码单元中处于指定位置的像素的亮度分量像素值的首部信息,封装到该编码单元的码流中。

相应的,本发明实施例还提供一种图像的编码装置,该装置包括:

一种图像的编码装置,该编码装置包括:

第一获取模块,用于获取待处理视频帧,根据所述待处理视频帧的视频采样格式,将所述待处理视频帧划分为由若干个编码块构成的编码单元;

编码模块,用于对于所述待处理视频帧中的各编码单元,分别执行如下编码操作:对该编码单元中的各编码块进行块内预测,分别计算各编码块中的每个像素的预测残差值;根据所述各编码块中的每个像素的预测残差值的集合,生成该编码单元的残差图像;按照预设规则,将生成的残差图像划分为N个层图像;采用不同编码模式分别对各层图像进行预测,获取所述各层图像在不同编码模式下的预测码流长度;根据所述各层图像的原始码流长度和在不同编码模式下的预测码流长度,判断是否需要对该层图像进行编码,如果需要,采用取值最小的预测码流长度所对应的编码模式对该层图像进行编码并封装该层图像的编码后的码流;如果不需要,则不对该层图像进行压缩编码并封装该层图像的原始码流;

封装模块,用于将用于表示该编码单元中的各层图像的编码方式、码流长度和该编码单元中处于指定位置的像素的亮度分量像素值的首部信息,封装到该编码单元的码流中。

从上述技术方案可以看出,本发明实施例可以针对编码单元中的预测残差分布情况,将残差图像划分为N个层图像,由于不同的层图像具有不同的数据分布特点,因此本发明实施例可以采用不同的编码模式分别对不同层图像进行编码,也就是说,在编码过程中,针对不同的层图像,可以采用预测码流长度最小的编码模式,分别进行编码,从而使每个层图像能够获得最佳的压缩比,这样,提高了图像压缩的针对性,进一步提高了图像压缩效果,进而减少编码芯片与外部存储器之间传输参考帧所需的带宽。

本发明实施例提供一种图像的解码方法,该解码方法包括:

获取待处理视频帧中各编码单元的码流;

对各编码单元的码流,分别执行如下解码操作:读取该码流中的用于表示该编码单元中的N个层图像的编码方式、码流长度和该编码单元中位于指定位置的像素的亮度分量像素值的首部信息;根据所述首部信息中的各层图像的编码方式和码流长度,依次在该码流中解码出各层图像;利用解码出的各层图像,按照预设层图像排列顺序,重建该编码单元的残差图像;并利用所述首部信息中的该编码单元中位于指定位置的像素的亮度分量像素值、预设参数以及所述残差图像中所包含的每个像素的预测残差值,还原出该编码单元的原始图像。

相应的,本发明实施例还提供一种图像的解码装置,该装置包括:

第二获取模块,用于获取待处理视频帧中各编码单元的码流;

解码模块,用于对各编码单元的码流,分别执行如下解码操作:读取该码流中的用于表示该编码单元中的N个层图像的编码方式、码流长度和该编码单元中位于指定位置的像素的亮度分量像素值的首部信息;根据所述首部信息中的各层图像的编码方式和码流长度,依次在该码流中解码出各层图像;利用解码出的各层图像,按照预设层图像排列顺序,重建该编码单元的残差图像;并利用所述首部信息中的该编码单元中位于指定位置的像素的亮度分量像素值、预设参数以及所述残差图像中所包含的每个像素的预测残差值,还原出该编码单元的原始图像。

从上述技术方案可以看出,由于本发明实施例在编码过程中可以针对编码单元中的预测残差分布情况,将残差图像划分为N个层图像,由于待解码的各层图像的码流可能采用了不同的编码模式,因此在解码过程中,本发明实施例可以首先提取在编码时封装到码流中的首部信息,然后利用首部信息中携带的各层图像的编码方式、码流长度和该编码单元中位于指定位置的亮度分量像素值等信息,逐一定位并根据各自的编码模式解码获取到的码流,从而还原出该编码单元的原始图像。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的编码方法的流程示意图;

图2为本发明实施例提供的对于YCbCr 4:2:0格式的视频的头信息的结构示意图;

图3为本发明实施例提供的对于YCbCr 4:2:2格式的视频的头信息的结构示意图;

图4为本发明实施例提供的解码方法的流程示意图;

图5为本发明实施例提供的图像的编码装置的结构示意图;

图6位本发明实施例提供的图像的解码装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例可以应用于各种图像编码装置或图像解码装置中,本发明实施例可以针以层图像为单位,采用更多的编码模式,以最小化编码码流长度为准则确定出针对于每个层图像的最终的编码模式,从而能够在对整个编码单元编码的过程中获得更高的压缩比,有效地减少编解码芯片和外部存储器之间存取参考帧(即视频帧)所需的传输带宽。

本发明实施例可以将残差图像划分成N个层图像,通过对大量实际视频的测试分析,分别预设与N个层图像相适应的数量和内容的Huffman(哈夫曼编码)码表,估计采用不同码表进行Huffman编码和行程编码的码流长度,以码 流最小为准则选择最佳编码方案。本发明实施例所提供的方法能很好地适应绝大部分实际监控视频图像预测残差的分布,在无损压缩的前提下能达到2倍的压缩比,从而实现有效地减少编码芯片与外部存储器之间传输参考帧所需的带宽的目的。其次,本发明实施例以固定大小的编码单元为单位对输入图像进行压缩编码,以固定长度的首部信息(在本发明实施例中也可称为头信息)表示每个编码单元的码流长度以及其它在解码端将码流还原成原始图像所必需的信息,并且将这些固定长度的首部信息组织成表格形式保存在每个压缩帧的实际码流之前,从而能在不对每个编码单元作实际解码的前提下,随机地定位且解码所有的编码单元。

以下结合附图对本发明实施例所提供编码方法的具体实施方式进行说明。

图1示出了本发明实施例提供的编码方法的流程示意图,如图1所示,该流程可以包括:

步骤101:以编码单元为单位对待压缩的图像进行处理。

具体实现时,对于YCbCr格式的视频,每个编码单元包含一个亮度分量编码块和Cb、Cr二个色度分量编码块。

对于YCbCr 4:2:0格式的视频,可以假设亮度分量编码块大小为宽度方向16像素、高度方向4个像素,色度分量则取与该亮度块对应的大小,编码块的大小为8×2;对于YCbCr 4:2:2格式的视频,可以假设亮度分量编码块大小为宽度方向8像素、高度方向4个像素,色度分量则取与该亮度块对应的大小,编码块的大小为4×4。

之后,本发明实施例可以针对于每个编码单元,通过执行如下步骤102~步骤106的编码流程。

步骤102:对该编码单元中的各编码块进行块内预测,分别计算各编码块中的每个像素的预测残差值。

具体实现时,对于亮度分量编码块,即Y分量编码块;本发明实施例可以执行如下操作确定各个像素的亮度分量预测残差值eY(m,n):

本发明实施例以亮度分量编码块的左上角点为种子像素(即位于亮度分量编码块的第一行第一列的像素),对于亮度分量编码块中的种子像素,将该种子像素的亮度分量像素值作为该种子像素的亮度预测残差值。

对于种子像素所在的行除该像素之外的所有像素,按照如下公式一计算亮度预测残差值eY(m,n):

公式一为:eY(m,n)=IY(m,n)-IY(m,n-1)

其中,IY为输入图像的亮度分量。

对于该亮度分量编码块中的种子像素所在的列除该像素(即除种子像素)之外的所有像素,按照如下公式二计算亮度预测残差值:

公式二为:eY(m,n)=IY(m,n)-IY(m-1,n)

其中,IY为输入图像的亮度分量。

对于该亮度分量编码块中的除种子像素所在的行和列之外的所有像素,按照如下公式三计算亮度预测残差值:

公式三为:

其中,IY为输入图像的亮度分量。

需要说明的是,对于该亮度分量编码块中的除种子像素所在的行和列之外的所有像素,本发明实施例可以根据该像素的若干个相邻像素的像素值确定该像素的亮度分量预测残差值,上述仅以该像素在位置关系上的上一个相邻像素和前一个相邻像素为例进行举例说明,其它通过相邻像素的像素值确定该像素的亮度分量预测残差值的方法均在本申请的保护范围内,这里不再一一赘述。

对于两个色度分量编码块,即Cb和Cr分量编码块。本发明实施例可以执行如下操作确定各个像素的第一和第二分量预测残差值:

假设左上角像素的预测值为128(即,预设第一色度分量预测值和预设第二色度分量预测值均为128),按照如下公式四计算第一色度分量预测残差值eCb和第二色度分量预测残差值eCr

公式四为:eCb(0,0)=ICb(0,0)-128或eCr(0,0)=ICr(0,0)-128

其中,ICb为输入图像的第一色度分量,ICr为输入图像的第二色度分量。

对于色度分量编码块中除左上角像素之外的其余的像素,则基于与亮度分量相同的原理进行预测,可以通过如下步骤计算第一色度分量预测残差值eCb(m,n)和第二色度分量预测残差值eCr(m,n)。

对于左上角像素所在的行除该左上角像素之外的所有像素,按照如下公式五计算eCb(m,n)或eCr(m,n):

公式五为:

eCb(m,n)=ICb(m,n)-ICb(m,n-1)或eCr(m,n)=ICr(m,n)-ICr(m,n-1)

其中,ICb为输入图像的第一色度分量,ICr为输入图像的第二色度分量。

对于左上角像素所在的列除该左上角像素之外的所有像素,按照如下公式六计算eCb(m,n)或eCr(m,n):

公式六为:

eCb(m,n)=ICb(m,n)-ICb(m-1,n)或eCr(m,n)=ICr(m,n)-ICr(m-1,n)

其中,ICb为输入图像的第一色度分量,ICr为输入图像的第二色度分量。

对于除左上角像素所在的行和列之外的所有像素,按照如下公式七计算eCb(m,n)或eCr(m,n):

公式七为:或

其中,ICb为输入图像的第一色度分量,ICr为输入图像的第二色度分量。

需要说明的是,对于第一色度分量编码块和第二色度分量编码块中的除左上角像素所在的行和列之外的所有像素,本发明实施例可以根据该像素的若干个相邻像素的像素值确定该像素的eCb(m,n)或eCr(m,n),上述仅以该像素在位置关系上的上一个相邻像素和前一个相邻像素为例进行举例说明,其它通过相邻 像素的像素值确定该像素的eCb(m,n)或eCr(m,n)的方法均在本申请的保护范围内,这里不再一一赘述。

步骤103:根据各编码块中的每个像素的预测残差值的集合,生成该编码单元的残差图像。

具体实现时,将每个像素的亮度预测残差值、第一色度预测残差值和第二色度预测残差值,按照预设的顺序排列,将排列后的集合作为该编码单元的残差图像。

步骤104:按照预设规则,将生成的残差图像划分为N个层图像。

具体实现时,将所述残差图像中的每个预测残差值依次映射为处于指定区间范围内的非负整数;将所有映射后的预测残差值分别转换为位数相同的二进制数;对所述二进制数,按照由低位至高位或者由高位至低位的顺序,将连续的预设位数的二进制数,划分为属于同一个层图像的二进制数的集合。

举例来说,首先,将亮度分量编码块和二个色度分量的编码块组合成一个编码单元进行后续处理。对于8比特图像,上述预测数据介于-255和255,可以通过如下公式八将预测残差e映射到[0,510]之间:

公式八为:

然后,将编码单元的残差图像划分为N个层图像。

具体实现时,本发明实施例可以将编码单元内的残差图像划分为N个层图像,每个层图像依次表示为L0、L1、L2……LN-1

其中,N可以为任意小于残差数据位深度的正整数,较佳的,N可以为大于或等于3的奇数;需要说明的是,本发明实施例仅以N=3为例进行举例说明。

首先,由于经上述公式八处理后的预测残差数据均介于[0,510]之间,因此,需要9比特表示经上述公式八处理后的预测残差数据。编码单元内的所有像素的低三位数据构成层图像L0,中间三位数据构成层图像L1,最高三位数据构成层图像L2

然后,本发明实施例可以按照如下公式九~十一分别计算三个层图像:

公式九为:L0(m,n)=e'(m,n)mod 8

公式十为:L1(m,n)=(e'(m,n)>>3)mod 8

公式十一为:L2(m,n)=e'(m,n)>>6

其中,mod表示求余运算,>>表示右移运算。

步骤105:采用不同编码模式分别对各层图像进行预测,获取所述各层图像在不同编码模式下的预测码流长度。

具体实现时,本发明实施例可以采用至少两种编码模式进行预测,即:Huffman编码和行程编码。

具体的,对于参考帧压缩的应用而言,显然无法接受在保存编码块的码流的同时,需要保存编码单元数据的分布概率。由于本发明实施例中的每个层图像中的像素都为3位的数据,通过对大量实际编码块的预测残差值的统计,本发明实施例预设了六组Huffman码表,如表1所示。

表1.预设的Huffman编码码表

举例来说,假设待编码数据为5,根据表1,若采用码表0,则被编码为5位二进制数据11101,若采用码表4,则被编码为1101。

一方面,由预测残差的最高三位所形成的层图像,很多时候会包含大量的零值,所以适合采用行程编码模式。可见,对于层图像L0和L1,采用表1所示的六个码表;对于层图像L2,选用表中的码表0和码表1。

对每个待处理的层图像,首先,统计直方图,记作H;然后,按照如下公式十二,计算对应码表Mk的预估码流长度Lk

公式十二为:

其中,H(i)表示该层图像内像素值为i的像素的个数,Mk(i)表示在使用码表Mk时,对像素值为i进行编码后的位数(即,像素值为i被编码为多少位)。

最后,选择取值最小的码流长度作为Huffman编码的预期码流长度。

同样地,本发明实施例还需要对层图像估计行程编码的码流长度。

具体地,统计层图像中连续的零元素个数和非零元素的值,表示为如下形式的二元组:(连续零的个数,非零元素值)

例如:数据具体为:0,2,3,0,0,0,5,0

那么,可以将上述数据被表示为如下二元组的形式:

二元组:(1,2),(0,3),(3,5),(0,0)

由于在后续步骤中需要以一个字节表示上述二元组,并且其中的非零值介于0到7之间,所以,只有剩余5位可用于表示连续零的个数。若层中连续的零元素个数超过5位无符号整数的上限值,则需要使用多个字节来表示该值,表示成二元组的形式为:

其中,x和y满足:31x+y=H,H为连续取值为0的元素的个数。

上述层图像分解的好处在于:首先,通常层图像L1和L2中存在较多的值为0的像素,采用行程编码能获得较高的压缩率;其次,层图像的每个像素,其值介于[0,7]之间,有利于在使用Huffman编码的时候采用较少数目的固定码表就能获得较好的压缩率。

步骤106:根据所述各层图像的原始码流长度和在不同编码模式下的预测码流长度,判断是否需要对该层图像进行编码,如果需要,则执行步骤107, 如果不需要,则执行步骤108。

步骤107:采用取值最小的预测码流长度所对应的编码模式对该层图像进行编码并封装该层图像的编码后的码流。

步骤108:不对该层图像进行压缩编码并封装该层图像的原始码流。

具体实现时,判断该层图像的预测码流长度中是否存在至少一个预测码流长度小于该层图像的原始码流长度,如果是,则利用取值最小的预测码流长度对应的编码模式对该层图像进行编码并封装该层图像的编码后的码流;如果该层图像的预测码流长度均大于或等于该层图像的原始码流长度,则不需要对该层图像进行压缩编码并封装该层图像的原始码流。

这样,对层图像分别预估不同编码模式的码流长度,并且选择能产生最小码流长度的方案作为最终的编码方案。针对经过上述分解后所得的层图像的特点,预设了Huffman编码和行程编码两种编码模式,对于Huffman编码,通过统计预测残差数据的分布得到了6组Huffman码表,这些码表能较好地适应大多数编码块的残差分布情况。层图像L0和L1的预测残差数据较多地表现出随机分布的特点,所以使用6组码表进行预测,同时预测行程编码的长度,选择能产生最小码流的方案作为最终的实际编码方案;层图像L2往往存在较多连续的0元素,所以使用两组码表进行预测,同时预测行程编码的码流长度,选择能产生最小码流的方案作为最终的实际编码方案。

步骤109:封装各个编码单元的首部信息。

具体实现时,将用于表示该编码单元中的各层图像的编码方式、码流长度和该编码单元中位于指定位置的亮度分量像素值的首部信息,封装到该编码单元的码流中。

在本发明实施例中,首部信息可以包括表示该编码单元是否经过编码处理的编码方案信息、该编码单元中的各层图像的码流长度、各层图像的编码模式和该编码单元的亮度分量编码块中的种子像素的像素值。

具体的,为了能正确地解码经压缩的编码块,除了编码产生的码流之外, 还需记录每个层图像所使用的编码方案、码流长度信息等。

举例来说,对于YCbCr 4:2:0格式的视频,在不作编码的情况下,一个层图像的码流长度为36字节(每个层图像96个数据,每个数据3比特),本发明实施例可以对每个编码单元使用5个字节的头信息。图2示出了本发明实施例提供的对于YCbCr 4:2:0格式的视频的头信息的结构示意图,参照图2,字节0的最高位用于指示整个编码单元是否经过压缩编码,在某些情况下编码压缩过程无法使得编码单元的数据量有所减少,此时设置该编码单元保存不经处理的原始数据;字节0、字节1和字节2的第0位到第5位分别保存以字节计的层图像L0、L1和L2的编码码流的长度;头信息的第四个字节记录三个层图像的编码方案,其中L0和L1分别占3位,L2占2位。对于层图像L0和L1,若采用Huffman编码,以3位二进制数000、001、010、011、100、101代表所使用的表1中的码表序号,以二进制数110表示使用行程编码,111代表不作编码。对于层图像L2,若采用Huffman编码,以2位二进制数00和01代表所使用的表1中的码表序号,以10表示采用行程编码,11代表不作编码。头信息的第五个字节保存亮度分量的种子像素值。

再举例来说,对于YCbCr 4:2:2格式的视频,在最差的情况下,一个层图像的码流长度为24个字节(每个层图像64个数据,每个数据3比特),需5位数据表示每个层图像的编码长度,本发明实施例可以对每个编码单元使用4个字节的头信息。图3示出了本发明实施例提供的对于YCbCr 4:2:2格式的视频的头信息的结构示意图,参照图3,字节0的最高位指示整个编码单元是否不作编码;字节0的第2位到第6位,记录L0的码流长度;字节0的第0位和第1位连同字节1的第5、6、7位,记录L1的码流长度;字节1的第0到第4位,记录L2的码流长度;第三个字节记录三个层图像的编码方案,与YCbCr4:2:0视频的第四个字节相同;第四个字节保存亮度分量的种子像素值。

可见,在本发明实施例中,每个编码单元对应一个固定长度的首部信息,记录每个层图像所使用编码模式、码流字节数、以及种子像素的值。对于YCbCr 4:2:0格式的视频图像,亮度分量编码块的大小为16×4,相应地,色度分量的大小为8×2。每个编码单元使用5个字节的头信息。第一个字节的最高位用于指示整个编码单元是否经过压缩编码,在某些情况下压缩过程无法使得编码单元的数据量有所减少,此时该编码单元保存不经处理的原始数据;前三个字节的第0位到第5位分别保存以字节计的层图像L0、L1、L2的编码码流的长度;头信息的第四个字节记录三个层图像的编码方案,L0和L1分别占3位,L2占2位。头信息的第五个字节保存亮度分量的种子像素值。对于YCbCr 4:2:2格式的视频图像,亮度分量的编码块的大小为8×4,相应地,色度分量的大小为8×2,第一个字节的最高位指示整个编码单元是否不作编码,若是,该位为1,否则为0。第一个字节的第2位到第6位,第一个字节的第0位和第1位连同第二个字节的第5、6、7位,第二个字节的第0到第4位,依次记录各个层图像的码流长度。第三个字节记录三个层图像的编码方案,第四个字节保存亮度分量的种子像素值。

从上述技术方案可以看出,本发明实施例可以针对编码单元中的预测残差分布情况,将残差图像划分为N个层图像,由于不同的层图像具有不同的数据分布特点,因此本发明实施例可以采用不同的编码模式分别对不同层图像进行编码,也就是说,在编码过程中,针对不同的层图像,可以采用预测码流长度最小的编码模式,分别进行编码,从而使每个层图像能够获得最佳的压缩比,这样,提高了图像压缩的针对性,进一步提高了图像压缩效果,进而减少编码芯片与外部存储器之间传输参考帧所需的带宽。

基于与编码方案相同的原理,本发明实施例还提供了相应的解码方案,以下结合附图对本发明实施例所提供解码方法的具体实施方式进行说明。

图4示出了本发明实施例提供的解码方法的流程示意图,如图4所示,该流程可以包括:

步骤401:获取待处理视频帧中各编码单元的码流。

步骤402:顺序解码所有的编码单元,或者随机地解码某个编码单元。

具体实现时,对于某个待解码的编码单元,读取该码流中的用于表示该编码单元中的N个层图像的编码方式、码流长度和该编码单元中位于指定位置的亮度分量像素值(在本发明实施例中可以为种子像素的像素值)的首部信息,根据读入的头信息(即首部信息),计算位于该编码单元之前的所有编码单元的码流长度之和,定位待解码的编码单元的码流的起始位置。

之后,本发明实施例可以针对于每个编码单元,通过执行如下步骤403~步骤406的解码流程。

步骤403:根据待解码单元各个层图像的码流长度,读取该单元的码流。

步骤404:根据首部信息中的各层图像的编码方式和码流长度,依次在该码流中解码出各层图像。

具体实现时,本发明实施例可以由最低层图像L0至最高层LN,根据头信息中编码模式和层图像码流长度依次解码每个层图像,且暂存解码所得的各层图像的数据。

步骤405:利用解码出的各层图像,按照预设层图像排列顺序,重建该编码单元的残差图像。

具体实现时,对于该编码单元中的每个层图像,分别执行如下操作:将该层图像中的每个像素的像素值与该层图像的权重值进行加权运算处理,将处理后的各像素值依次逆映射为处于指定区间范围内的整数,将逆映射后的整数的集合作为各编码块中的每个像素的预测残差值的集合;根据所述预测残差值的集合,按照预设层图像排列顺序,还原出该编码单元的残差图像。

具体的,将层图像中的各个像素乘上对应所在层的权重值,确定出各个像素的像素值。举例来说,在本发明实施例中,L0、L1和L2对应的权重值可以依次为1、8和64。

然后,按照如下公式十三,对于各像素,计算坐标为(m,n)的像素的像素值:

公式十三为:

其中,Lk(m,n)是乘上权值后的第k层图像。

之后,将处理后的各像素值依次逆映射为处于指定区间范围内的整数,将逆映射后的整数的集合作为各编码块中的每个像素的预测残差值的集合。

具体的,将计算出的像素值按照如下公式十四进行逆映射,得到每个像素的预测残差值的集合:

公式十四为:

最后,根据所述预测残差值的集合,按照预设层图像排列顺序,还原出该编码单元的残差图像。

步骤406:利用所述首部信息中的该编码单元中位于指定位置的亮度分量像素值及预设参数以及所述残差图像中所包含的每个像素的预测残差值,还原出该编码单元的原始图像。

具体实现时,本发明实施例可以利用该编码单元中的亮度分量编码块中的种子像素的像素值、预设第一色度分量预测值、预设第二色度分量预测值以及通过步骤405还原出的残差图像,采用与上述编码过程相逆的解码过程,还原出与压缩之前一致的编码单元。

从上述技术方案可以看出,由于本发明实施例在编码过程中可以针对编码单元中的预测残差分布情况,将残差图像划分为N个层图像,由于待解码的各层图像的码流可能采用了不同的编码模式,因此在解码过程中,本发明实施例可以首先提取在编码时封装到码流中的首部信息,然后利用首部信息中携带的各层图像的编码方式、码流长度和该编码单元处于指定位置的像素的亮度分量像素值等信息,定位并根据各自的编码模式解码获取到的码流,从而还原出该编码单元的原始图像。

可见,本发明实施例提供的编解码方案中,至少存在如下优点:

(1)输入的视频图像被划分成编码单元,每个编码单元包括一个亮度分量和两个色度分量编码块,对亮度分量编码块,以左上角点像素作为种子像素,对色度分量编码块以常量128作为种子值,对各个编码块采用块内预测的方法计算预测残差;

这样,本发明实施例以固定大小的编码单元为单位对输入图像进行压缩编码,以固定长度的首部表示每个编码单元的码流长度以及其它在解码端将码流还原成原始图像所必需的信息,并且将这些固定长度的首部信息组织成表格形式保存在每个压缩帧的实际码流之前,从而能在不对每个编码单元作实际解码的前提下,随机地定位且解码所有的编码单元。

(2)对[-255,255]之间的预测残差数据e,经下式转换成[0,510]范围内的9比特无符号数,

依次取每个9比特预测残差数据的低三位、中间三位和最高的三位,由编码单元内的所有低三位数据构成层图像L0,中间三位数据构成层图像L1,最高三位数据构成层图像L2

(3)对层图像L0和L1,预设了六组Huffman编码码表,对L2预设了两组Huffman编码码表,分别对每个层图像估计采用不同码表进行Huffman编码的码流长度和采用行程编码的码流长度,选择能产生最小码流长度的方案进行实际编码,产生最终的编码码流;

这样,将预测残差分解成三个层图像,通过对大量实际视频的测试分析,分别预设与三个层图像相适应的数量和内容的Huffman码表,估计采用不同码表进行Huffman编码和行程编码的码流长度,以码流最小为准则选择最佳编码方案。所提供的方法能很好地适应绝大部分实际监控视频图像预测残差的分布,在无损压缩的前提下能达到2倍的压缩比,从而实现有效地减少编码芯片与外部存储器之间传输参考帧所需的带宽的目的。

基于相同的技术构思,本发明实施例还提供了一种图像的编码装置,图5 示出了本发明实施例提供的图像的编码装置的结构示意图,如图5所示,该编码装置可以包括:

第一获取模块51,用于获取待处理视频帧,根据所述待处理视频帧的视频采样格式,将所述待处理视频帧划分为由若干个编码块构成的编码单元;

编码模块52,用于对于所述待处理视频帧中的各编码单元,分别执行如下编码操作:对该编码单元中的各编码块进行块内预测,分别计算各编码块中的每个像素的预测残差值;根据所述各编码块中的每个像素的预测残差值的集合,生成该编码单元的残差图像;按照预设规则,将生成的残差图像划分为N个层图像;采用不同编码模式分别对各层图像进行预测,获取所述各层图像在不同编码模式下的预测码流长度;根据所述各层图像的原始码流长度和在不同编码模式下的预测码流长度,判断是否需要对该层图像进行编码,如果需要,采用取值最小的预测码流长度所对应的编码模式对该层图像进行编码并封装该层图像的编码后的码流;如果不需要,则不对该层图像进行压缩编码并封装该层图像的原始码流;

封装模块53,用于将用于表示该编码单元中的各层图像的编码方式、码流长度和该编码单元中处于指定位置的像素的亮度分量像素值的首部信息,封装到该编码单元的码流中。

可选的,所述编码模块52具体用于:判断该层图像的预测码流长度中是否存在至少一个预测码流长度小于该层图像的原始码流长度,如果是,则利用取值最小的预测码流长度对应的编码模式对该层图像进行编码并封装该层图像的编码后的码流;如果该层图像的预测码流长度均大于或等于该层图像的原始码流长度,则不对该层图像进行编码并封装该层图像的原始码流。

可选的,所述编码单元由亮度分量编码块、第一色度分量编码块和第二色度分量编码块构成;

所述编码模块52具体用于:对所述一个亮度分量编码块和两个色度分量编码块中的每个像素分别进行块内预测,根据各像素与相邻像素的差异程度, 分别计算出每个像素的亮度预测残差值、第一色度预测残差值和第二色度预测残差值;将所有像素的亮度预测残差值、第一色度预测残差值和第二色度预测残差值,按照预设顺序依次排列,将由已排列的亮度预测残差值、第一色度预测残差值和第二色度预测残差值的组成的集合作为该编码单元的残差图像。

可选的,所述编码模块52具体用于:

对于亮度分量编码块中的位于第一行第一列的像素,将该像素的亮度分量像素值作为该像素的亮度预测残差值;

对于所述亮度分量编码块中的第一行中除位于第一行第一列的像素以外的任意前后相邻两像素,将后一像素的亮度分量像素值与前一像素的亮度分量像素值之间的差值作为所述后一像素的亮度预测残差值;

对于所述亮度分量编码块中的第一列中除位于第一行第一列的像素以外的任意上下相邻两像素,将下一像素的亮度分量像素值与上一像素的亮度分量像素值之间的差值作为所述下一像素的亮度预测残差值;

对于所述亮度分量编码块中除位于第一行和第一列以外的任一像素,将该像素的亮度分量像素值与若干个相邻像素的亮度分量平均值之间的差值作为该像素的亮度预测残差值。

可选的,所述编码模块52具体用于:

对于第一色度分量编码块中的位于第一行第一列的像素,将该像素的第一色度分量像素值与预设第一色度分量预测值之间的差值作为该像素的第一色度预测残差值;

对于第一色度分量编码块中的第一行中除位于第一行第一列的像素以外的任意前后相邻两像素,将后一像素的第一色度分量像素值与前一像素的第一色度分量像素值之间的差值作为所述后一像素的第一色度预测残差值;

对于第一色度分量编码块中的第一列中除位于第一行第一列的像素以外的任意上下相邻两像素,将下一像素的第一色度分量像素值与上一像素的第一色度分量像素值之间的差值作为所述下一像素的第一色度预测残差值;

对于所述第一色度分量编码块中除位于第一行和第一列以外的任一像素,将该像素的第一色度分量像素值与若干个相邻像素的第一色度分量平均值之间的差值作为该像素的第一色度预测残差值。

可选的,所述编码模块52具体用于:

对于第二色度分量编码块中的位于第一行第一列的像素,将该像素的第二色度分量像素值与预设预测值之间的差值作为该像素的第二色度预测残差值;

对于第二色度分量编码块中的第一行中除位于第一行第一列的像素以外的任意前后相邻两像素,将后一像素的第二色度分量像素值与前一像素的第二色度分量像素值之间的差值作为所述后一像素的第二色度预测残差值;

对于第二色度分量编码块中的第一列中除位于第一行第一列的像素以外的任意上下相邻两像素,将下一像素的第二色度分量像素值与上一像素的第二色度分量像素值之间的差值作为所述下一像素的第二色度预测残差值;

对于所述第二色度分量编码块中除位于第一行和第一列以外的任一像素,将该像素的第二色度分量像素值与若干个相邻像素的第二色度分量平均值之间的差值作为该像素的第二色度预测残差值。

可选的,所述封装模块53具体用于:将用于表示该编码单元是否经过编码处理的编码方案信息、该编码单元中的各层图像的码流长度、各层图像的编码模式和该编码单元中处于指定位置的像素的亮度分量像素值,作为该编码单元的首部信息封装到该编码单元的码流中。

可选的,所述编码模块52具体用于:

将所述残差图像中的每个预测残差值依次映射为处于指定区间范围内的非负整数;

将所有映射后的预测残差值分别转换为位数相同的二进制数;

对所述二进制数,按照由低位至高位或者由高位至低位的顺序,将连续的预设位数的二进制数,划分为属于同一个层图像的二进制数的集合。

基于相同的技术构思,本发明实施例还提供了一种图像的解码装置,图6 示出了本发明实施例提供的图像的解码装置的结构示意图,如图6所示,该解码装置可以包括:

第二获取模块61,用于获取待处理视频帧中各编码单元的码流;

解码模块62,用于对各编码单元的码流,分别执行如下解码操作:读取该码流中的用于表示该编码单元中的N个层图像的编码方式、码流长度和该编码单元中位于指定位置的像素的亮度分量像素值的首部信息;根据所述首部信息中的各层图像的编码方式和码流长度,依次在该码流中解码出各层图像;利用解码出的各层图像,按照预设层图像排列顺序,重建该编码单元的残差图像;并利用所述首部信息中的该编码单元中位于指定位置的像素的亮度分量像素值、预设参数以及所述残差图像中所包含的每个像素的预测残差值,还原出该编码单元的原始图像。

可选的,所述首部信息中具体包括:

用于表示该编码单元是否经过编码处理的编码方案信息、该编码单元中的各层图像的码流长度、各层图像的编码模式和该编码单元中位于第一行第一列的像素的亮度分量像素值。

可选的,所述解码模块62具体用于:

利用所述首部信息中该编码单元中的位于第一行第一列的像素的亮度分量像素值、预设第一色度分量预测值、预设第二色度分量预测值和所述残差图像中所包含的每个像素的预测残差值,还原出该编码单元的原始图像。

可选的,所述解码模块62具体用于:

对于该编码单元中的每个层图像,分别执行如下操作:将该层图像中的每个像素的像素值与该层图像的权重值进行加权运算处理,将处理后的各像素值依次逆映射为处于指定区间范围内的整数,将逆映射后的整数的集合作为各编码块中的每个像素的预测残差值的集合;

根据所述预测残差值的集合,按照预设层图像排列顺序,还原出该编码单元的残差图像。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器,使得通过该计算机或其他可编程数据处理设备的处理器执行的指令可实现流程图中的一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1