基于图像相关性的自适应快速编码单元划分方法及装置与流程

文档序号:12038225阅读:269来源:国知局
基于图像相关性的自适应快速编码单元划分方法及装置与流程

本发明涉及一种编码单元划分方法,尤其涉及一种基于图像相关性的自适应快速编码单元划分方法,同时也涉及相应的自适应快速编码单元划分装置,属于视频编码技术领域。



背景技术:

随着高分辨率视频拍摄设备的普及,播放高清视频的需求也越来越多。因此,对视频图像的存储和传输提出了更高的要求。hevc/h.265标准是针对高分辨率视频推出的高性能视频编码标准,其目标在于是提高压缩率,降低网络带宽。hevc/h.265编码标准与avc/h.264编码标准相比,不仅具有更多的可选编码模式,还能提高50%的压缩效率。

在hevc/h.265编码标准的编码器中,通常先将每一帧图像分割成若干个互不重叠的矩形块,每一个矩形块即为最大编码单元(简写为lcu)。编码器以四叉树的形式并按照递归的方式把每一个lcu分割为不同尺寸的编码单元(简写为cu),然后对cu选择帧内或帧间模式进行编码。如图1和图2所示,cu可以有64x64、32x32、16x16、8x8四种尺寸级别,通常把64x64作为最高尺寸级别(也称最大编码单元),把8x8作为最低尺寸级别(也称最小编码单元)。lcu的分割过程主要用两个变量进行标记:分割深度(cu_depth)和分割标记符(split_flag)。其中,cu的尺寸(即图中标示出的size)大小和深度(即图中标示出的depth)相对应,尺寸为64x64的cu的深度为0,尺寸为32x32的cu的深度为1,尺寸为16x16的cu的深度为2,尺寸为8x8的cu的深度为3。而标记符主要用于表示是否对当前的cu进行四等份分割。

现有技术中,对lcu的划分通常是通过计算率失真代价值来决定的。首先,计算当前lcu的率失真代价值;然后,将当前lcu划分成四个子cu,对4个子cu按顺序进行独立的递归编码,得到四个子cu的率失真代价值;最后,将当前lcu的率失真代价值与四个子cu的率失真代价值进行比较,选择最小率失真代价值对应的lcu划分模式进行最终编码。

上述lcu的划分需要对lcu逐层递归划分至8×8的最小编码单元,然后通过计算各种划分模式的率失真代价值,选择最小率失真代价值对应的cu划分模式进行最终编码。综上所述,现有技术中的lcu划分方法不仅提高了计算复杂度,而且还存在效率低下的缺陷,从而影响视频编码效率。



技术实现要素:

本发明所要解决的首要技术问题在于提供一种基于图像相关性的自适应快速编码单元划分方法。

本发明所要解决的另一技术问题在于提供一种基于图像相关性的自适应快速编码单元划分装置。

为了实现上述发明目的,本发明采用下述的技术方案:

根据本发明实施例的第一方面,提供一种基于图像相关性的自适应快速编码单元划分方法,包括如下步骤:

步骤s1:根据视频帧类型,获取相邻编码单元的深度信息;

步骤s2:根据相邻编码单元的深度信息,建立当前最大编码单元深度信息向量表;

步骤s3:根据当前最大编码单元深度信息向量表,计算当前最大编码单元的深度搜索范围;

步骤s4:根据当前最大编码单元的深度搜索范围,选择当前最大编码单元的最优划分。

其中较优地,步骤s1中,所述视频帧类型包括帧内编码帧、帧间编码帧;

当所述当前最大编码单元属于所述帧内编码帧时,获取与所述最大编码单元空间相邻的所述编码单元的所述深度信息;

当所述当前最大编码单元属于所述帧间编码帧时,获取与所述最大编码单元空间和时间相邻的所述编码单元的所述深度信息。

其中较优地,获取与所述当前最大编码单元空间相邻的所述编码单元的所述深度信息时,按照位于所述当前最大编码单元的左边、上边、右上及左上的位置顺序依次获取空间相邻的所述编码单元的所述深度信息。

其中较优地,获取与所述当前最大编码单元时间相邻的所述编码单元的所述深度信息时,按照位于所述当前最大编码单元的右下及同位置的位置顺序依次获取时间相邻的所述编码单元的所述深度信息。

其中较优地,步骤s2中,建立所述当前最大编码单元的所述深度信息向量表的步骤如下:

s21:建立长度固定的空的所述深度信息向量表;

s22:向所述深度信息向量表中依次添加预定数量的空间域向量;

s23:向所述深度信息向量表中依次添加预定数量的时间域向量。

其中较优地,向所述深度信息向量表中依次添加预定数量的所述时间域向量时,按照位于所述当前最大编码单元右下及同位置的编码单元的深度信息次序,依次选择一个所述深度信息添加到所述深度信息向量表。

其中较优地,步骤3中,将建立的所述当前最大编码单元的所述深度信息向量表的深度信息进行升序排序,选取最小和最大的所述深度信息作为所述当前最大编码单元的所述深度搜索范围。

其中较优地,步骤3中,计算所建立的所述当前最大编码单元的所述深度信息向量表的深度信息的平均值并向下取整,以所述深度信息的平均值作为所述深度搜索范围的深度最小值,以述深度信息的平均值加上一个深度值作为所述深度搜索范围的深度最大值;其中,当所述深度搜索范围的深度最大值大于3时,则选取3作为所述深度搜索范围的深度最大值。

其中较优地,步骤4中,遍历所述当前最大编码单元的所述深度搜索范围内的所有编码模式,按照递归的方式计算出每种所述编码模式的率失真代价,经过比较,选取率失真代价值最小的编码模式作为所述当前最大编码单元的最优划分。

根据本发明实施例的第二方面,提供一种基于图像相关性的自适应快速编码单元划分装置,包括信息获取模块、建表模块、计算深度范围模块及划分判断模块,所述信息获取模块与所述建表模块连接,所述建表模块与所述计算深度范围模块连接,所述计算深度范围模块与所述划分判断模块连接;

所述信息获取模块用于获取与当前最大编码单元相邻的编码单元的深度信息;

所述建表模块用于根据获取的与所述当前最大编码单元相邻的所述编码单元的所述深度信息,建立所述当前最大编码单元深度信息向量表;

所述计算深度范围模块用于根据所述当前最大编码单元深度信息向量表,计算所述当前最大编码单元的深度搜索范围;

所述划分判断模块根据所述当前最大编码单元的深度搜索范围,选择所述当前最大编码单元的最优划分。

本发明所提供的自适应快速编码单元划分方法根据当前最大编码单元的视频帧类型,获取位于当前最大编码单元相邻的编码单元的深度信息,根据相邻的编码单元的深度信息建立当前最大编码单元深度信息向量表,从而确定出当前最大编码单元的深度搜索范围。与现有技术相比较,本发明缩小了当前最大编码单元的深度搜索范围,减少了计算率失真代价的编码模式的数量,从而降低视频编码的计算复杂度,提高了视频编码的效率。

附图说明

图1为现有技术中,最大编码单元的四叉树结构示意图;

图2为现有技术中,最大编码单元的划分示意图;

图3为本发明所提供的基于图像相关性的自适应快速编码单元划分方法的流程图;

图4和图5为本发明所提供的基于图像相关性的自适应快速编码单元划分方法中,获取与当前最大编码单元空间相邻的编码单元的深度信息的示意图;

图6和图7为本发明所提供的基于图像相关性的自适应快速编码单元划分方法中,获取与当前最大编码单元时间相邻的编码单元的深度信息的示意图;

图8为本发明所提供的基于图像相关性的自适应快速编码单元划分方法中,获取与当前最大编码单元空间和时间相邻的编码单元的深度信息的流程图;

图9为实现本发明所提供的自适应快速编码单元划分装置的结构示意图。

具体实施方式

下面结合附图和具体实施例对本发明的技术内容做进一步的详细说明。

如图3所示,本发明所提供的基于图像相关性的自适应快速编码单元划分方法包括如下步骤:

步骤s1:根据视频帧类型,获取相邻cu的深度信息。

在用户编码当前lcu的过程中,需要判别当前lcu的视频帧类型,即判别当前lcu的视频帧类型是帧内编码帧(即i帧)还是帧间编码帧(即p/b帧),下面分别对当前lcu为上述两种视频帧类型的情况一一进行说明。

如果当前的lcu的视频帧类型为帧内编码帧(即i帧),由于帧内编码帧是一种自带全部信息的独立帧,无需参考其它图像便可独立进行编码,因此帧内编码帧没有参考帧,只需获取与该lcu空间相邻的cu的深度信息即可。如图4所示,依次获取位于当前lcu的左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息。

由于cu的尺寸大小和深度相对应,尺寸为64x64的cu的深度为0,尺寸为32x32的cu的深度为1,尺寸为16x16的cu的深度为2,尺寸为8x8的cu的深度为3。即与当前lcu空间相邻的cu的深度范围为0~3。例如,如图5所示,依次获取的位于当前lcu的左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息值对应为2、1、2、2,与上述左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息相对应的编码单元尺寸为16x16、32x32、16x16、16x16。

如果当前的lcu的视频帧类型为帧间编码帧(即p/b帧),则需要分别获取与该lcu空间和时间相邻的cu的深度信息。同样,先采用与上述的视频帧类型为帧内编码帧时获取与当前的lcu空间相邻的cu的深度信息的方法,获取与当前的lcu空间相邻的cu的深度信息。并且,也以图5所示为例,依次获取的位于当前lcu的左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息值对应为2、1、2、2,与上述左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息相对应的编码单元尺寸为16x16、32x32、16x16、16x16。然后,获取与当前lcu时间相邻的cu的深度信息;如图6所示,依次获取位于当前lcu右下(rb)cu及同位置(s)cu的深度信息。例如,如图7所示,依次获取的位于当前lcu的右下(rb)cu及同位置(s)cu的深度信息值对应为3、2,与上述右下(rb)cu及同位置(s)cu的深度信息相对应的编码单元尺寸为8x8、16x16。

需要强调的是,在每一帧图像中,根据当前lcu所处位置的不同,可能会导致与当前lcu空间相邻的四个位置(即位于当前lcu左边、上边、右上及左上位置)中一个或多个位置上的cu不存在,对于不存在的cu可以略过。例如,当lcu位于第一行时,位于该lcu的上边(t)cu、右上(rt)cu、左上(lt)cu不存在,则可以略过。当lcu位于第一列时,位于该lcu的左边(l)cu、左上(lt)cu不存在,则可以略过。当lcu位于最后一列时,位于该lcu的右上(rt)cu不存在,则可以略过。同样,还可能会导致与当前lcu时间相邻的两个位置(即位于当前lcu右边位置及同位置)中一个或多个位置上的cu不存在,对于不存在的cu可以略过。例如,当lcu位于最后一列时,位于该lcu的右下(rb)cu不存在,则可以略过。

步骤s2:根据相邻cu的深度信息,建立当前lcu深度信息向量表。

在用户编码当前lcu的过程中,需要根据获取的与不同视频帧类型的当前最大编码单元相邻的cu的深度信息,建立当前lcu深度信息向量表。建立当前lcu深度信息向量表的过程为:(1)建立长度固定的空的深度信息向量表。(2)向深度信息向量表中依次添加一定数量的空间域向量(与当前lcu空间相邻的cu的深度信息)。(3)向深度信息向量表中依次添加一定数量的时间域向量(与当前lcu时间相邻的cu的深度信息)。同样,分别以当前lcu为不同视频帧类型的情况为例,对当前lcu深度信息向量表的建立过程进行说明。

如果当前的lcu的视频帧类型为帧内编码帧(即i帧),建立长度为2的空的深度信息向量表,按照以下几种情况向深度信息向量表中依次添加与当前lcu空间相邻的编码单元的深度信息:1、如果没有空间相邻cu,没有获取到与当前lcu空间相邻的编码单元的深度信息,则将深度信息值1和深度信息值2添加到深度信息向量表。2、如果只获取了一个与当前lcu空间相邻的编码单元的深度信息,则将当前深度信息值和深度信息值1依次添加到深度信息向量表.3、如果获取了两个以上与当前lcu空间相邻的编码单元的深度信息,则只把前两个深度信息值依次添加到深度信息向量表,余下的深度信息舍弃。例如,建立长度为2的空的深度信息向量表,结果是:();在步骤s1中,依次获取的位于当前lcu的左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息值2、1、2、2,由于获取的深度信息超过了两个,则只把前两个深度信息依次添加到深度信息向量表,结果是:(2,1),即将获取的位于当前lcu的右上(rt)cu及左上(lt)cu的深度信息舍弃。

如果当前的lcu的视频帧类型为帧间编码帧(即p/b帧),建立长度为3的空的深度信息向量表,向空的深度信息向量表先依次添加两个与当前lcu空间相邻的编码单元的深度信息,添加深度信息的方法同视频帧类型为帧内编码帧(即i帧)时的添加与当前lcu空间相邻的编码单元的深度信息的方法,再次不再赘述。添加完与当前lcu空间相邻的编码单元的深度信息后,再添加与当前lcu时间相邻的编码单元的深度信息,并按照位于当前lcu右下(rb)的cu、同位置(s)的cu的次序,并依次选择一个深度信息添加到深度信息向量表。如果位于当前lcu右下(rb)的cu不存在,则将位于当前最大编码单元同位置(s)的cu的深度信息添加到深度信息向量表。例如,建立长度为3的空的深度信息向量表,结果是:();先将采用步骤s1中的方法,依次获取的位于当前lcu的左边(l)cu、上边(t)cu、右上(rt)cu及左上(lt)cu的深度信息值2、1、2、2,由于获取的深度信息超过了两个,则只把前两个深度信息依次添加到深度信息向量表,结果是:(2,1,),即将获取的位于当前lcu的右上(rt)cu及左上(lt)cu的深度信息舍弃。然后将采用步骤s1中的方法,依次获取的位于当前lcu的右下(rb)cu及同位置(s)cu的深度信息值3、2,按照依次选择一个深度信息添加到深度信息向量表的标准,将深度信息值3添加到深度信息向量表,结果是:(2,1,3),即将位于当前lcu的同位置(s)的cu的深度信息舍弃。

步骤s3:根据当前lcu深度信息向量表,计算当前lcu的深度搜索范围。

根据步骤2中建立的当前lcu的深度向量表,计算当前lcu的深度搜索范围的第一种实现方法为:对建立的当前lcu深度信息向量表的深度信息进行升序排序,最小和最大的深度信息作为当前lcu的深度搜索范围。如果当前的lcu的视频帧类型为帧内编码帧(即i帧),对建立的深度信息向量表进行升序排序,得到排序后的深度信息向量表(dmin,dmax),其中,dmin表示最小深度信息,dmax表示最大深度信息。根据排序后的深度信息向量表(dmin,dmax),确定出当前的lcu的深度搜索范围是(smin,smax),其中,smin=dmin,smax=dmax。例如,将步骤2中建立的当前的lcu的深度信息向量表(2,1)进行升序排序,结果是:(1,2),则确定当前lcu的深度搜索范围为(1,2)。

如果当前的lcu的视频帧类型为帧间编码帧(即p/b帧),对建立的深度信息向量表进行升序排序,得到排序后的深度信息向量表(dmin,dmid,dmax),dmid表示位于最大深度信息与最小深度信息之间的深度信息。根据排序后的深度信息向量表(dmin,dmid,dmax),确定出当前的lcu的深度搜索范围是(smin,smax),其中,smin=dmin,smax=dmax。例如,将步骤2中建立的当前的lcu的深度信息向量表(2,1,3)进行升序排序,结果是:(1,2,3),则确定当前lcu的深度搜索范围为(1,3)。

根据步骤2中建立的当前lcu的深度向量表,计算当前lcu的深度搜索范围的第二种实现方法为:计算所建立的当前lcu深度信息向量表的深度信息的平均值davg并向下取整,基于深度信息的平均值,以该深度信息的平均值作为搜索范围的深度最小值,以平均值加上一个深度值作为搜索范围的深度最大值。本实施例中,当前lcu的深度搜索范围是(smin,smax),其中,smin=davg,smax=davg+1。如果davg+1大于3,则smax=3,否则smax=davg+1。例如,当前的lcu的视频帧类型为帧内编码帧(即i帧),计算步骤2中建立的当前的lcu的深度信息向量表(2,1)的平均值davg并向下取整,结果是:davg=1,则smin=1,smax=davg+1=2,得出当前lcu的深度搜索范围为(1,2)。如果当前的lcu的视频帧类型为帧间编码帧(即p/b帧),计算步骤2中建立的当前的lcu的深度信息向量表(2,1,3)的平均值davg并向下取整,结果是:davg=2,则smin=2,smax=davg+1=3,得出当前lcu的深度搜索范围为(2,3)。

需要强调的是,采用上述计算当前lcu的深度搜索范围的第一种实现方法为本发明的优选方案,根据该实现方法得出的当前lcu的深度搜索范围,所确定的当前lcu的最优编码模式(即最优划分)更精确。根据上述第二种实现方法得出的当前lcu的深度搜索范围,所确定的当前lcu的最优编码模式(即最优划分)虽然可能存在一定误差,但该误差被控制在当前lcu的最优编码模式所允许的误差范围内。因此,在精度要求不高的情况下,可以采用第二种实现方法得出当前lcu的深度搜索范围,并根据该深度搜索范围确定当前lcu的最优编码模式(即最优划分),实现更大程度的缩小当前最大编码单元的深度搜索范围,并且进一步减少了步骤s4中计算率失真代价的编码模式的数量,从而降低视频编码的计算复杂度,提高了视频编码的效率。

步骤s4:根据当前最大编码单元的深度搜索范围,选择当前lcu的最优划分。

根据当前lcu的深度搜索范围,遍历当前最大编码单元的深度搜索范围内的所有可用编码模式,按照递归的方式,计算出每种编码模式下的编码比特数和相应的重建图像失真度。例如,当采用步骤3的方法所确定的当前lcu的深度搜索范围为(1,2)时,只需遍历深度为1和2时的所有可用编码模式,提前终止或跳过遍历深度为0和3时的所有可用编码模式,缩小了当前lcu的深度遍历范围,从而减少了计算编码比特数和相应的重建图像失真度的编码模式数量。当采用步骤3的方法所确定的当前lcu的深度搜索范围为(1,3)时,只需遍历深度为1、2、3时的所有可用编码模式,提前终止或跳过遍历深度为0时的所有可用编码模式,缩小了当前lcu的深度遍历范围,也实现减少了计算编码比特数和相应的重建图像失真度的编码模式数量。根据下面公式:

j(s,c,m|qp,λm)=ssd(s,c,m|qp)+λmr(s,c,m|qp)

其中,λm代表拉格朗日乘数,qp代表量化参数,m代表预测模式,s代表编码块数据,c代表重建块数据,r(s,c,m|qp)代表编码当前预测模式所需的比特数,误差平方和ssd表示图像失真度。根据上述公式,计算出每种编码模式的率失真代价j,经过比较,选取率失真代价值最小的编码模式作为当前lcu的最优编码模式(即最优划分)。

需要强调的是:还可以采用相应的公式,计算出每种编码模式的失真度sad或者残差平方和sse,经过比较,选取失真度或者残差平方和sse最小的编码模式作为当前lcu的最优编码模式(即最优划分)。由于步骤s4采用的是现有的计算方法计算率失真代价值、失真度sad或者残差平方和sse,因此,不在具体描述计算过程。

如图9所示,本发明还提供了一种基于图像相关性的自适应快速编码单元划分装置。该装置包括信息获取模块1、建表模块2、计算深度范围模块3及划分判断模块4,信息获取模块1与建表模块2连接,建表模块2与计算深度范围模块3连接,计算深度范围模块3与划分判断模块4连接。其中,信息获取模块1用于获取与当前lcu相邻的cu的深度信息。如图8所示,信息获取模块1按照位于当前lcu的左边、上边(t)、右上(rt)及左上(lt)位置的顺序,依次获取与lcu空间相邻的cu的深度信息。在获取空间相邻的cu的深度信息的过程中,如果与当前lcu空间相邻的四个位置(即位于当前lcu左边、上边、右上及左上位置)中的一个或多个位置上的cu不存在,对于不存在的cu可以略过。如果当前的lcu的视频帧类型为帧间编码帧(即p/b帧),信息获取模块1不仅要获取与lcu空间相邻的cu的深度信息,还需按照位于当前lcu右下(rb)及同位置(s)的位置顺序,依次获取与lcu时间相邻的cu的深度信息。获取时间相邻的cu的深度信息的过程中,如果与当前lcu空间相邻的两个位置(即位于当前lcu右下位置及同位置)中的一个或多个位置上的cu不存在,对于不存在的cu可以略过。

建表模块2块用于在用户编码当前lcu的过程中,需要根据获取的与不同视频帧类型的当前最大编码单元相邻的cu的深度信息,建立当前lcu深度信息向量表。建表模块2块建立当前lcu深度信息向量表的过程同步骤2所述,在此不再赘述。

计算深度范围模块3用于根据建立深度信息向量表模块建立的当前lcu深度信息向量表,计算当前lcu的深度搜索范围,计算深度范围模块3计算当前lcu的深度搜索范围的方法同步骤3所述,在此不再赘述。

划分判断模块4用于根据计算深度搜索范围模块计算的当前lcu的深度搜索范围,遍历当前最大编码单元的深度搜索范围内的每种可用编码模式,按照递归的方式,计算出每种编码模式率失真代价,经过比较,选取率失真代价值最小的编码模式作为当前lcu的最优编码模式(即最优划分)。划分判断模块4还可以计算出每种编码模式的失真度sad或者残差平方和sse,经过比较,选取失真度或者残差平方和sse最小的编码模式作为当前lcu的最优编码模式(即最优划分)。

本发明所提供的自适应快速编码单元划分方法根据当前最大编码单元的视频帧类型,获取位于当前最大编码单元相邻的编码单元的深度信息,根据相邻的编码单元的深度信息建立当前最大编码单元深度信息向量表,从而确定出当前最大编码单元的深度搜索范围。与现有技术相比较,本发明缩小了当前最大编码单元的深度搜索范围,减少了计算率失真代价的编码模式的数量,从而降低视频编码的计算复杂度,提高了视频编码的效率。

以上对本发明所提供的基于图像相关性的自适应快速编码单元划分方法及装置进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将属于本发明专利权的保护范围。

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