技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于粗搜索的快速划分编码块和预测块的方法与装置与流程  >  正文

一种基于粗搜索的快速划分编码块和预测块的方法与装置与流程

  • 国知局
  • 2024-10-09 15:21:33

本技术涉及一种视频编码方法,特别是涉及一种视频帧的内部块的划分方法。

背景技术:

1、现有的主流视频编码都是基于图像块的编码方法。视频编码时每一个图像帧(也称视频帧)被划分为多个互不重叠的图像块,称为编码块(coding unit,cu)。编码块内部又可划分为预测块(prediction unit,pu)和变换块(transform unit,tu),分别用于预测过程和变换过程。预测块又分为帧内预测(intra prediction)块和帧间预测(interprediction)块两种类型。

2、hevc(high efficiency video coding,高效率视频编码,又称h.265)标准支持的编码块尺寸包括:64像素×64像素、32像素×32像素、16像素×16像素、8像素×8像素。假设某个图像帧的尺寸是128像素×128像素。该图像帧首先被划分为4个64像素×64像素的编码块,称为最大编码块(lcu)。有些最大编码块再被划分为4个32像素×32像素的编码块。有些32像素×32像素的编码块再被划分为4个16像素×16像素的编码块。有些16像素×16像素的编码块再被划分为4个8像素×8像素的编码块,称为最小编码块(scu)。图像帧逐层划分编码块有可能在任一层结束,视频编码器通过某种算法认为某个编码块在该层最优,那么该编码块就在该层停止向下划分子编码块。编码块确定后,先被划分为一个或多个预测块进行预测,预测后编码块又被划分为一个或多个变换块进行变换。当编码块的尺寸大于8像素×8像素时,同层级的预测块等于编码块。当编码块的尺寸等于8像素×8像素时,该编码块既可以被划分为一个同层级的8像素×8像素的预测块,也可以被划分为四个下一层级的4像素×4像素的预测块。这表明预测块可在最小编码块的基础上继续向下划分一层,当然也可不继续向下划分。

3、请参阅图1,hevc标准引入了编码树单元(coding tree unit,ctu),编码树单元是一种四叉树。四叉树是指:每个节点或者没有分叉,如有分叉则是分出四个子节点。四叉树的根节点的深度为0,每分叉一次节点深度增加1。四叉树的根节点表示最大编码块,hevc标准支持4种尺寸的编码块,因此可用深度为0到3的四层四叉树来表示一个最大编码块划分编码块的方式。最小编码块仍可能划分为多个预测块,因此可用深度为0到4的五层四叉树来表示一个最大编码块划分编码块和预测块的方式。

4、请参阅表1,编码树单元的深度为1到3的节点是按照编码块划分的,此时同层级的预测块等于编码块。编码树单元的深度为3的节点是编码块的最后一层,每个深度为3的节点表示一个最小编码块。最小编码块或者作为一个同层级的预测块,或者按照预测块再划分一层得到深度为4的表示预测块的节点。

5、 编码树单元的深度 图像块的尺寸 备注 0 64像素×64像素 编码块,同层级的预测块=编码块 1 32像素×32像素 编码块,同层级的预测块=编码块 2 16像素×16像素 编码块,同层级的预测块=编码块 3 8像素×8像素 最小编码块,同层级的预测块=最小编码块 4 4像素×4像素 预测块

6、表1:编码树单元的不同深度的编码块和预测块

7、不同层级和尺寸的编码块、预测块和变换块允许视频编码器根据图像帧的内容灵活选择。从最大编码块开始一层层地划分编码块,到最小编码块再划分为预测块和变换块,每一层是否进行划分,以及选择怎样的划分方式,都会影响最终的视频编码效果。最终的编码块、预测块、变换块的形态与图像帧的内容是紧密相关的,只有选出最适合于视频内容的块划分方式,才能以更少的数据量表达更多的视频细节,即取得更高的视频编码效率。

8、在视频编码过程中会引入失真,失真会降低图像质量。编码的目标是在保证编码质量的前提下尽量使编码比特率更小,或者说在编码比特率一定的前提下尽量提高编码质量。通常,视频编码器使用率失真优化(rate distortion optimization,rdo)技术来达到这一目的。在视频编码过程中,每一种块划分方式和编码模式的组合(称为编码方式)均可算出其率失真代价(rate distortion cost,rd cost)。这样,视频编码问题就简化为选择最小的率失真代价对应的编码方式。

9、为简化率失真优化过程的计算,有时会采用粗搜索的方式对编码方式进行一定的筛选。粗搜索中使用绝对变换误差和(sum of absolute transformed difference,satd)来计算简化的率失真代价,以减小计算复杂度。在图像和视频处理领域,绝对变换误差和是指将残差数据进行阿达马(hadamard)变换后再求各元素绝对值之和。

10、hevc支持35种帧内编码模式,同时支持深度为0到4的五层四叉树来表示一个最大编码块划分编码块、以及末端编码块划分预测块的方式。故在指定外部条件的前提下,如果遍历所有可能的块(编码块和预测块)划分方式,则视频编码器需尝试约6.5×1018种可能,这显然不太可能实现。即便是采用嵌套对比的方式,即从最大编码块的子节点开始,每4个子节点对应的块的率失真代价之和与其父结点的率失真代价对比,淘汰率失真代价较大的块划分方式,视频编码器仍需进行85次对比,以及341×35=11935次率失真优化过程。可见,率失真优化是一个非常耗费计算量的过程,而块划分的组合数太多又将复杂度提升了几百倍。

11、目前主要有如下几种方式来减少率失真优化过程中块(编码块和预测块)划分的组合。

12、第一,根据相邻图像帧或相邻块的划分情况预测当前块的划分,这种方法利用了视频在空间和时间的连续性,并根据量化参数对划分情况进行微调。这种方式一般给出的是一个深度范围,相当于淘汰了一部分块划分组合,对剩余的块划分组合仍需要进行率失真优化过程。而且由于对相邻块有依赖,所以无法进行并行计算,不利于硬件视频编码器的设计与实现。另外对于视频中的场景切换帧使用相邻帧进行预测效率非常低。

13、第二,在率失真优化过程中根据实时计算的结果选择提前退出,如当前率失真代价已经足够小,再继续划分块已经帮助不大,则跳过后续的块划分过程。这种方式依赖实时结果,最好的情况下可能尝试一种块划分即退出,最坏的情况下仍需搜索所有的块划分组合。所以每个块的实际运算量有较大的区别,也不利于硬件编码器的实现。

14、第三,使用简化的率失真代价公式。简化公式中采用原始像素与预测像素的satd代价代替原始像素与重建像素的ssd(sum of squared differences,误差平方和)代价,使用估计的编码模式比特率代替最终的编码比特率。所以该过程只需进行预测、satd计算和比特估计等过程,从算法上大大简化了。但是由于satd代价的结果很不准确,所以最终的编码质量较差。

技术实现思路

1、本技术所要解决的技术问题是如何基于粗搜索在图像帧的最大编码块内部进行快速的编码块和预测块的划分。

2、为解决上述技术问题,本技术提出了一种基于粗搜索的快速划分编码块和预测块的方法,包括如下步骤。步骤s1:假定一种块划分方式——视频编码从最大编码块开始逐级向下划分,每一层的编码块被划分为四个下一层的编码块,直至划分到最小编码块,最小编码块继续向下划分为四个帧内预测块;然后对所述假定的块划分方式下的最大编码块划分出的每一层的编码块和帧内预测块,都计算最小的satd代价。步骤s2:采用预先拟合得到的satd代价和率失真代价之间的转换公式,由该最大编码块划分出的每一层的编码块和帧内预测块的最小的satd代价得到该最大编码块划分出的每一层的编码块和帧内预测块的预估的率失真代价。步骤s3:根据该最大编码块划分出的每一层的编码块和帧内预测块的预估的率失真代价,采用嵌套对比的方式,得到该最大编码块内部的编码块和帧内预测块的划分方式。

3、进一步地,所述步骤s1中,所述假定的块划分方式对于hevc标准的视频编码,就是将每个64像素×64像素大小的最大编码块划分为四个32像素×32像素大小的编码块,再将每个32像素×32像素大小的编码块划分为四个16像素×16像素大小的编码块,再将每个16像素×16像素大小的编码块划分为四个8像素×8像素大小的最小编码块,再将每个8像素×8像素大小的最小编码块划分为四个4像素×4像素大小的帧内预测块;然后对每个32像素×32像素大小的编码块、每个16像素×16像素大小的编码块、每个8像素×8像素大小的最小编码块、每个4像素×4像素大小的帧内预测块,都计算最小的satd代价。

4、进一步地,所述步骤s1中,所述假定的块划分方式对于hevc标准的视频编码且采用深度为0到4的编码树单元来表示,则是编码树单元从根节点开始,每个节点都有四个分叉向下产生四个子节点,直至到达深度为4的节点停止继续向下分叉;深度为1到3的每个节点表示一个编码块;深度为4的每个节点表示一个帧内预测块;然后计算编码树单元上除根节点以外的全部节点的最小的satd代价。

5、进一步地,所述步骤s1中,采用轮循法计算最小的satd代价;这是指对最大编码块以下的每一个编码块和帧内预测块而言,都计算该编码块或帧内预测块的全部的35种帧内预测模式的satd代价,并选出其中最小的一个作为该编码块或帧内预测块的最小的satd代价。

6、进一步地,所述步骤s1中,采用两步法计算最小的satd代价;这是指对最大编码块以下的每一个编码块和帧内预测块而言:第一步,从33种有方向的帧内预测模式中每隔三种选择一种,得到9种帧内预测模式,计算第一步选出的9种帧内预测模式的satd代价;如果第一次选出的9种帧内预测模式的satd代价的最大值等于最小值,省略第二步,直接进入第三步。第二步,如果第一步选出的9种帧内预测模式的satd代价的最大值不等于最小值,选出最小satd代价对应的帧内预测模式的两侧各三个帧内预测模式,计算第二步选出的6种帧内预测模式的satd代价。第三步,将前面选出的9种或15种帧内预测模式的satd代价、与直流模式的帧内预测模式的satd代价、平板模式的帧内预测模式的satd代价构成一个集合,该集合中有11种或17种帧内预测模式的satd代价,从该集合中选出其中最小的一个作为该编码块或帧内预测块的最小的satd代价。

7、进一步地,所述步骤s1中,采用多步法计算最小的satd代价;多步法的初始帧内预测模式的选择间隔大于三种,随后逐渐减小帧内预测模式的的选择间隔,其余与两步法相同。

8、进一步地,所述步骤s1中,采用最佳预测模式法计算最小的satd代价;这是指对最大编码块以下的每一个编码块和帧内预测块而言,取该编码块或帧内预测块的左边相邻的编码块或帧内预测块的最佳帧内预测模式、取该编码块帧内预测块的上面相邻的编码块或帧内预测块的最佳帧内预测模式,以及直流模式、平板模式构成集合;计算该集合内的四种帧内预测模式的satd代价,选出其中最小的一个作为该编码块或帧内预测块的最小的satd代价。

9、进一步地,所述步骤s1中,对最大编码块以下的每一个编码块和帧内预测块而言,计算该编码块或帧内预测块的某一种帧内预测模式的satd代价采用如下方式;采用该编码块或帧内预测块的相邻的编码块或帧内预测块的原始像素作为参考像素;对每一个编码块或帧内预测块,先通过参考像素生成预测像素,再计算satd代价。

10、进一步地,所述步骤s2中,所述satd代价和率失真代价之间的转换公式是通过对一组测试视频进行satd代价和率失真代价之间的关系拟合得到的;所述转换公式采用线性公式est rd cost=a×satd+b;其中est rd cost表示预估的率失真代价,satd表示satd代价,a和b是两个参数;参数a和参数b与量化参数qp、帧内预测块的深度depth、像素值的比特深度bitdepth相关;预先保存不同qp取值、不同depth取值、不同bitdepth取值下的参数a和参数b的取值,视频编码时根据qp、depth、bitdepth的实际情况查询后获得参数a和参数b的值,然后代入所述转换公式进行计算。

11、进一步地,所述步骤s3中,针对hevc标准的编码块和帧内预测块的划分且采用深度为0到4的编码树单元来表示,所述嵌套对比方式是指:从编码树单元的深度为4的节点开始,将每四个深度为4的、且由同一个深度为3的节点分叉而来的节点的预估的率失真代价之和与这四个深度为4的节点的父节点的预估的率失真代价进行比较,保留预估的率失真代价较小的块划分方式;采用相同的方式比较编码树单元上每一层的、由同一个父节点分叉而来的四个节点的预估的率失真代价之和与这四个节点的父节点的预估的率失真代价,保留预估的率失真代价较小的块划分方式,由此得到编码树单元上深度为4的各节点对应的帧内预测块的划分方式、以及深度为1到3的各节点对应的编码块的划分方式。

12、进一步地,所述步骤s3中还得到该最大编码块的编码块划分方式,该最大编码块的编码块划分方式是由该最大编码块内部的编码块和帧内预测块的划分方式所决定的;如果该最大编码块内部的编码块和帧内预测块的划分方式是4个32像素×32像素大小的编码块且不再向下划分,且这4个32像素×32像素大小的编码块的最佳模式相同,则该最大编码块不再向下划分;否则该最大编码块保持四个32像素×32像素大小的编码块的划分方式。

13、本技术还提出了一种基于粗搜索的快速划分编码块和预测块的装置,包括粗搜索计算模块、转换模块、块划分模块。所述粗搜索计算模块假定一种块划分方式——视频编码是从最大编码块开始逐级向下划分,每一层的编码块被划分为四个下一层的编码块,直至划分到最小编码块,最小编码块继续向下划分为四个帧内预测块;然后对所述假定的块划分方式下的最大编码块划分出的每一层的编码块和帧内预测块都计算最小的satd代价。所述转换模块用来采用预先拟合得到的satd代价和率失真代价之间的转换公式,由该最大编码块划分出的每一层的编码块和帧内预测块的最小的satd代价得到该最大编码块划分出的每一层的编码块和帧内预测块的预估的率失真代价。所述块划分模块用来根据该最大编码块划分出的每一层的编码块和帧内预测块的预估的率失真代价,采用嵌套对比的方式,得到该最大编码块内部的编码块和帧内预测块的划分方式。

14、本技术取得的技术效果如下。

15、第一,本技术在块划分的过程中,使用satd代价代替率失真代价计算,大大降低了视频编码的复杂度,并通过简单的转换公式对satd代价进行转换,达到了较好的视频编码性能。此外,本技术避免了单纯使用satd代价作为块划分依据时不准确的问题,编码效率较高。

16、第二,本技术避免了使用相邻块或相邻帧预测时的依赖,并采用了原始像素作为参考像素,可以达到完全的并行处理,利于硬件编码器的设计。

17、第三,在场景切换时,相邻帧的内容完全不同,相邻帧的划分方式对当前帧没有任何指导意义,所以现有的采用了相邻帧的划分来预测当前帧对应位置块的划分方式不可避免地会有“场景切换时不适用”的问题。本技术不依赖于前一视频帧的结果来产生本视频帧的方案,所以避免了相邻帧预测时对场景切换不适用的问题。

18、第四,本技术最终生成唯一的块划分方案,而不是一个范围,进一步降低了率失真优化的复杂度。现有技术中,通常是通过某种手段(如相邻帧预测)来预测当前编码块的划分方式,因为预测结果往不够准确,所以会采用一个范围,然后在这个范围内通过率失真优化过程判决出最佳结果。本技术可以得出唯一一个固定的块划分方式,无需再次进行判决。

本文地址:https://www.jishuxx.com/zhuanli/20241009/308481.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。