首页> 中国专利> 基于H.264的帧间编码模式选择方法及装置

基于H.264的帧间编码模式选择方法及装置

摘要

本发明涉及一种基于H.264的帧间编码模式选择方法及装置。所述方法包括:在当前宏块集合及其之前的宏块集合中的各宏块的最小代价值小于或等于当前宏块集合的相应阈值的情况下,选择与该最小代价值相对应的宏块作为当前帧间编码模式;在当前宏块集合为最后一个宏块集合,且该最小代价值大于当前宏块集合的相应阈值的情况下,如果当前子宏块集合不是最后一个子宏块集合,则在当前子宏块集合及其之前的子宏块集合中的各子宏块的最小代价值小于或等于当前子宏块集合的相应阈值的情况下,选择与该最小代价值相对应的子宏块作为当前帧间编码模式,如果当前子宏块集合是最后一个子宏块集合,则选择与该最小代价值相对应的子宏块作为当前帧间编码模式。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-02

    专利权的转移 IPC(主分类):H04N19/109 登记生效日:20200514 变更前: 变更后: 申请日:20160808

    专利申请权、专利权的转移

  • 2019-05-14

    授权

    授权

  • 2016-12-07

    实质审查的生效 IPC(主分类):H04N19/109 申请日:20160808

    实质审查的生效

  • 2016-11-09

    公开

    公开

说明书

技术领域

本发明涉及数字视频技术领域,尤其涉及一种基于H.264的帧间编码模式选择方法及装置。

背景技术

H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。H.264是ITU-T以H.26x系列为名称命名的标准之一。它在视频压缩方面有显著的效果,与之前的其它压缩方法相比,它在同等视频质量的情况下能够节省50%比特率。它的压缩性能的改进主要在可变尺寸的块1/4像素运动补偿、多参考帧运动补偿、先进的帧内预测模式、去方块滤波效应以及自适应熵编码等特性。H.264中提供了16x16像素的宏块以及16x8、8x16以及8x8的块划分,每个8x8块(子宏块)可划分为8x4、4x8以及4x4,在帧间编码时用作运动补偿。

H.264视频编码中,在帧间编码时,对运动估计及宏块和子宏块的模式选择通常采用自适应熵编码,然而这会造成视频编码的运算复杂性很高,增加了视频的编码时间,降低了视频编码效率。

发明内容

技术问题

有鉴于此,本发明要解决的技术问题是如何降低H.264视频编码的运算复杂性,提高视频编码效率。

解决方案

一方面,提出了一种基于H.264的帧间编码模式选择方法,其特征在于,所述方法包括:依次针对当前帧对应的各宏块集合进行以下操作,包括:计算当前宏块集合中的各宏块的代价函数的代价值;取当前宏块集合以及该当前宏块集合之前的宏块集合中的各宏块的上述代价值中的最小代价值,在所述最小代价值小于或等于当前宏块集合的相应阈值的情况下,选择与该最小代价值相对应的宏块作为当前帧间编码模式;在当前宏块集合为所述各宏块集合中的最后一个宏块集合,且所述最小代价值大于当前宏块集合的相应阈值的情况下,针对当前帧对应的各子宏块集合进行以下操作,包括:计算当前子宏块集合中的各子宏块的代价函数的代价值;取当前子宏块集合以及该当前子宏块集合之前的子宏块集合中的各子宏块的上述代价值中的最小代价值,如果当前子宏块集合不是最后一个子宏块集合,则在所述最小代价值小于或等于当前子宏块集合的相应阈值的情况下,选择与该最小代价值相对应的子宏块作为当前帧间编码模式,如果当前子宏块集合是最后一个子宏块集合,则选择与该最小代价值相对应的子宏块作为当前帧间编码模式。

另一方面,提出了一种基于H.264的帧间编码模式选择装置,其特征在于,所述装置包括:宏块集合处理部件,用于依次针对当前帧对应的各宏块集合进行以下操作,包括:计算当前宏块集合中的各宏块的代价函数的代价值;取当前宏块集合以及该当前宏块集合之前的宏块集合中的各宏块的上述代价值中的最小代价值,在所述最小代价值小于或等于当前宏块集合的相应阈值的情况下,选择与该最小代价值相对应的宏块作为当前帧间编码模式;子宏块集合处理部件,用于在当前宏块集合为所述各宏块集合中的最后一个宏块集合,且所述最小代价值大于当前宏块集合的相应阈值的情况下,针对当前帧对应的各子宏块集合进行以下操作,包括:计算当前子宏块集合中的各子宏块的代价函数的代价值;取当前子宏块集合以及该当前子宏块集合之前的子宏块集合中的各子宏块的上述代价值中的最小代价值,如果当前子宏块集合不是最后一个子宏块集合,则在所述最小代价值小于或等于当前子宏块集合的相应阈值的情况下,选择与该最小代价值相对应的子宏块作为当前帧间编码模式,如果当前子宏块集合是最后一个子宏块集合,则选择与该最小代价值相对应的子宏块作为当前帧间编码模式。

有益效果

通过计算待编码的帧中各种宏块和子宏块的函数的代价值,分别逐步将部分宏块或部分子宏块的最小代价值与不同阈值进行比较,从而从各种宏块和子宏块中选择出当前帧间编码模式,根据本发明实施例的帧间编码模式选择方法及装置能够采用较少的运算就可选择出当前帧间编码模式,减少了视频编码时间,提高了编码效率。

根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。

图1示出根据本发明一实施例的基于H.264的帧间编码模式选择方法的流程图。

图2示出根据本发明一实施例的一个示例的基于H.264的帧间编码模式选择方法的流程图。

图3示出根据本发明一实施例的针对B帧一个示例的基于H.264的帧间编码模式选择方法的流程图。

图4示出根据本发明一实施例的针对P帧一个示例的基于H.264的帧间编码模式选择方法的流程图。

图5示出根据本发明一实施例的一个示例的基于H.264的帧间编码模式选择方法的流程图。

图6示出根据本发明一实施例的基于H.264的帧间编码模式选择装置的结构图。

图7示出了本发明的另一个实施例的一种基于H.264的帧间编码模式选择设备的结构框图。

具体实施方式

以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。

实施例1

图1示出根据本发明一实施例的基于H.264的帧间编码模式选择方法的流程图。如图1所示,该帧间编码模式选择方法主要包括:

依次针对当前帧对应的各宏块集合进行以下操作,包括:

步骤101,计算当前宏块集合中的各宏块的代价函数的代价值;

步骤102,取当前宏块集合以及该当前宏块集合之前的宏块集合中的各宏块的上述代价值中的最小代价值;

步骤103,在所述最小代价值小于或等于当前宏块集合的相应阈值的情况下,选择与该最小代价值相对应的宏块作为当前帧间编码模式;

在当前宏块集合为所述各宏块集合中的最后一个宏块集合,且所述最小代价值大于当前宏块集合的相应阈值的情况下,针对当前帧对应的各子宏块集合进行以下操作,包括:

步骤104,计算当前子宏块集合中的各子宏块的代价函数的代价值;

步骤105,取当前子宏块集合以及该当前子宏块集合之前的子宏块集合中的各子宏块的上述代价值中的最小代价值;

步骤106,如果当前子宏块集合不是最后一个子宏块集合,则在所述最小代价值小于或等于当前子宏块集合的相应阈值的情况下,选择与该最小代价值相对应的子宏块作为当前帧间编码模式;

步骤107,如果当前子宏块集合是最后一个子宏块集合,则选择与该最小代价值相对应的子宏块作为当前帧间编码模式。

本实施例通过计算待编码的帧中各种宏块和子宏块的函数的代价值,分别逐步将部分宏块或部分子宏块的最小代价值与不同阈值进行比较,从而从各种宏块和子宏块中选择出当前帧间编码模式,根据本发明实施例的帧间编码模式选择方法及装置能够采用较少的运算就可选择出当前帧间编码模式,减少了视频编码时间,提高了编码效率。

图2示出根据本发明一实施例的示例的基于H.264的帧间编码模式选择方法的流程图。其中,在一个示例中,依次针对当前帧对应的各宏块集合进行以下操作,还可包括:在所述最小代价值(即步骤102中的最小代价值)大于当前宏块集合的相应阈值的情况下,如果当前宏块集合不是所述各宏块集合中的最后一个宏块集合,则将下一宏块集合作为当前宏块集合,并重复进行计算当前宏块集合中的各宏块的代价函数的代价值的操作。在另一个示例中,依次针对当前帧对应的各子宏块集合进行以下操作,还可包括:如果当前子宏块集合不是最后一个子宏块集合,则在所述最小代价值(即步骤105中的最小代价值)大于当前子宏块集合的相应阈值的情况下,将下一子宏块集合作为当前子宏块集合,并重复进行计算当前子宏块集合中的各子宏块的代价函数的代价值的操作。

本领域技术人员应理解,采用以上两个示例的这种循环判断的方式只是一种示例性的实现方式,本实施例也可以通过其他方式实现,例如可以针对所有宏块集合/子宏块集合,先计算出各宏块/子宏块的代价函数的代价值,再进行后续的比较和判断。

本领域技术人员应该理解,目前在H.264协议里定义了三种帧,分别为I帧、B帧和P帧。I帧是一个全帧压缩编码帧,它可将全帧原始图像信息进行JPEG压缩编码及传输,解码时仅用I帧的数据就可重建完整图像。P帧可以以I帧为参考帧,在I帧中可找出P帧“某点”的预测值和运动矢量,可取预测差值和运动矢量一起传送,在解码端可根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。B帧可以以前面的I或P帧和后面的P帧为参考帧,可找出B帧“某点”的预测值和两个运动矢量,并可取预测差值和运动矢量传送,解码端可根据运动矢量找出在两个参考帧中的预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。由于I帧不存在帧间模式选择,所以本实施例中的帧间编码模式选择方法可只针对B帧和P帧。其中,B帧帧间编码模式可包含有如下宏块和子宏块类型:Direct 16×16宏块(也称为直接16×16宏块)、16×16宏块、16×8宏块、8×16宏块、Direct 8×8子宏块(也称为直接8×8子宏块)、8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块;P帧帧间编码模式可包含有如下宏块和子宏块类型:16×16宏块、16×8宏块、8×16宏块、8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块。

举例来说,可以将当前帧对应的各宏块和各子宏块划分为多个集合,以B帧为例,可以将B帧对应的宏块划分成包含Direct 16×16宏块的第一宏块集合和包含16×16宏块、16×8宏块、8×16宏块的第二宏块集合,将B帧对应的子宏块划分为包含Direct 8×8子宏块的第一子宏块集合、包含8×8子宏块的第二子宏块集合、以及包含8×4子宏块、4×8子宏块、4×4子宏块的第三子宏块集合。相应地,第一宏块集合的相应阈值为第一阈值Th1,第二宏块集合的相应阈值为第二阈值Th2,第一子宏块集合的相应阈值为第三阈值Th3,第二子宏块集合的相应阈值为第四阈值Th4。

再以P帧为例,由于P帧没有Direct 16×16宏块和Direct 8×8子宏块,因此对于P帧,宏块集合可包括包含16×16宏块、16×8宏块、8×16宏块的第二宏块集合,第二宏块集合的相应阈值为第二阈值Th2;子宏块集合可包括包含8×8子宏块的第二子宏块集合,以及包含8×4子宏块、4×8子宏块、4×4子宏块的第三子宏块集合;第二子宏块集合的相应阈值为第四阈值Th4。

在本实施例中,划分宏块集合和子宏块集合是为了实现“逐级判断”,即在当前及其以前的宏块集合/子宏块集合中寻找合适的当前帧间编码模式,在寻找不到的情况下,再到下一宏块集合/子宏块集合中寻找。宏块集合/子宏块集合的划分方式不限于以上示例,本领域技术人员可以根据需要以任意方式进行划分。

在一个示例中,可根据预计的运算时间由低到高的顺序排列各宏块集合/子宏块集合,依次进行计算和判断。例如,针对B帧,如果选择Direct 16×16宏块作为当前帧间编码模式,则预计编码过程的运算时间较短,因此可最先选择包含Direct 16×16宏块的第一宏块集合作为当前宏块集合,依次类推,由此来降低运算时间,提高编码效率。对于P帧也可基于类似的方式进行处理。以上述宏块集合和子宏块集合的划分方式作为例子,图3示出了根据本发明实施例的针对B帧的一个示例的流程图,如图3所示,该示例包括:

依次针对当前帧对应的各宏块集合进行以下操作,包括:

步骤301,计算Direct 16×16宏块的代价函数的代价值,如果Direct 16×16宏块的代价函数的代价值小于或等于第一阈值Th1,则选择Direct 16×16宏块作为当前帧间编码模式(即首先选择第一宏块集合作为当前宏块集合,执行步骤101-103,由于第一宏块集合之前没有宏块集合,因此Direct 16×16宏块的代价函数的代价值就是“当前宏块集合以及该当前宏块集合之前的宏块集合中的各宏块的代价函数的代价值中的最小代价值”);

步骤302,如果Direct 16×16宏块的代价函数的代价值大于第一阈值Th1,则分别计算16×16宏块、16×8宏块、8×16宏块的代价函数的代价值,如果Direct 16×16宏块、16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值小于或等于第二阈值Th2,则选择与Direct 16×16宏块、16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值对应的宏块作为当前帧间编码模式(即取第二宏块集合作为当前宏块集合,重复步骤101~103);

如果Direct 16×16宏块、16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值大于第二阈值Th2(即当前宏块集合(第二宏块集合)为各宏块集合中的最后一个宏块集合,且所述最小代价值大于当前宏块集合的相应阈值,即第二阈值Th2),则依次针对当前帧对应的各子宏块集合进行以下操作,包括:

步骤303,计算Direct 8×8子宏块的代价函数的代价值,如果Direct 8×8子宏块的代价函数的代价值小于或等于第三阈值Th3,则选择Direct 8×8子宏块作为当前帧间编码模式(即首先选择第一子宏块集合作为当前子宏块集合,执行步骤104-107,由于第一子宏块集合之前没有子宏块集合,因此Direct8×8子宏块的代价函数的代价值就是“当前子宏块集合以及该当前子宏块集合之前的子宏块集合中的各子宏块的代价函数的代价值中的最小代价值”);

步骤304,如果Direct 8×8子宏块的代价函数的代价值大于第三阈值Th3,则计算8×8子宏块的代价函数的代价值,如果Direct 8×8子宏块、8×8子宏块的代价函数的代价值中的最小代价值小于或等于第四阈值Th4,则选择与Direct 8×8子宏块、8×8子宏块的代价函数的代价值中的最小代价值对应的子宏块作为当前帧间编码模式(即选择第二子宏块集合作为当前子宏块集合,重复执行步骤104-107);

步骤305,如果Direct 8×8子宏块、8×8子宏块的代价函数的代价值中的最小代价值大于第四阈值Th4,则分别计算8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值,选择与Direct 8×8子宏块、8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值中的最小代价值对应的子宏块作为当前帧间编码模式(即选择第三子宏块集合作为当前子宏块集合,重复执行步骤104-107,其中第三子宏块集合是最后一个子宏块集合)。

针对P帧的具体实施方式与B帧类似,只是不进行针对Direct 16×16宏块和Direct 8×8子宏块的代价值的计算和判断,例如,没有上述第一宏块集合和第一子宏块集合,只针对第二宏块集合和第二、第三子宏块集合执行图3中的步骤302、304、305,一个具体示例如图4所示。

图4示出了根据本发明实施例的针对P帧的一个示例的流程图,如图4所示,该示例包括:

依次针对当前帧对应的各宏块集合进行以下操作,包括:

步骤401,分别计算16×16宏块、16×8宏块、8×16宏块的代价函数的代价值,如果16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值小于或等于第二阈值Th2,则选择与16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值对应的宏块作为当前帧间编码模式;

其中,如果16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值大于第二阈值Th2,则依次针对当前帧对应的各子宏块集合进行以下操作,包括:

步骤402,计算8×8子宏块的代价函数的代价值,如果8×8子宏块的代价函数的代价值小于或等于第四阈值Th4,则选择8×8子宏块作为当前帧间编码模式;

步骤403,如果8×8子宏块的代价函数的代价值大于第四阈值Th4,则分别计算8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值,选择与8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值中的最小代价值对应的子宏块作为当前帧间编码模式。

本领域技术人员应理解,“代价函数”是H.264标准中的概念,其可以是各种具体形式的代价函数,本领域技术人员可以根据实际需要进行选择。在一个示例中,代价函数Jmotion(RD)可定义如下,

Jmotion(RD)=D+λmotion×R>

D为原始图像像素值与重建图像像素值之差的绝对值之和,λmotion为与量化参数QP相关的值,R为评估得到的R值。

代价函数Jmotion(RD)可以采用本领域技术人员已知的代价函数,其代价值(即Jmotion(RD)的值)可以通过本领域技术人员已知的方式进行计算。

在一个示例中,λmotion与量化参数QP的关系可用如下公式表示:

λmotion=0.85×2(QP-12)/3

其中QP是本领域技术人员所知的H.264标准中的量化参数。

D在H.264中也称为“绝对误差和”,表示的是原始图像经过编码和复原之后的失真度。

图5示出根据本发明一实施例的一个示例的基于H.264的帧间编码模式选择方法的流程图。在该示例中,可先判断待编码帧是B帧还是P帧(S501),如果待编码帧是P帧,则可分别计算16×16宏块、16×8宏块、8×16宏块的代价函数Jmotion(RD)的代价值J(16×16)、J(16×8)、J(8×16)(S504),如果待编码帧是B帧,则可计算Direct>motion(RD)的代价值J(Direct 16×16)(S502),如果Direct>motion(RD)的代价值小于或等于第一阈值Th1(S503,否),则可选择Direct 16×16宏块作为当前帧间编码模式(S515);如果Direct>motion(RD)的代价值大于第一阈值Th1(S503,是),则可分别计算16×16宏块、16×8宏块、8×16宏块的代价函数Jmotion(RD)的代价值(S504),可取代价值Jmin为Direct>motion(RD)的代价值中的最小代价值(S505),如果该代价值Jmin小于或等于第二阈值Th2(S506,否),则可选择与Direct>motion(RD)的代价值中的最小代价值对应的宏块作为当前帧间编码模式(S515);如果Direct>motion(RD)的代价值中的最小代价值大于第二阈值Th2(S506,是),则可再一次判断待编码帧是B帧还是P帧(S507),如果待编码帧是P帧,则计算8×8子宏块的代价函数Jmotion(RD)的代价值J(8×8)(S510),如果待编码帧是B帧,则可计算Direct8×8子宏块的Jmotion(RD)的代价值J(Direct>motion(RD)的代价值小于或等于第三阈值Th3(S509,否),则可选择Direct>motion(RD)的代价值大于第三阈值Th3(S509,是),则可计算8×8子宏块的代价函数Jmotion(RD)的代价值J(8×8)(S510),可取代价值Jmin为Direct>motion(RD)的代价值中的最小代价值(S511),如果该代价值Jmin小于或等于第四阈值Th4(S512,否),则可选择与Direct>motion(RD)的代价值中的最小代价值对应的子宏块作为当前帧间编码模式(S515);如果Direct>motion(RD)的代价值中的最小代价值大于第四阈值Th4(S512,是),则可分别计算8×4子宏块、4×8子宏块、4×4子宏块的代价函数Jmotion(RD)的代价值J(8×4)、J(4×8)、J(8×8)(S513),可取代价值Jmin为Direct>motion(RD)的代价值中的最小代价值(S514),选择与Direct>motion(RD)的代价值中的最小代价值对应的子宏块作为当前帧间编码模式(S515)。

以上示例能够减少运动估计时间,进而减少编码时间,可在转码过程中高效率利用服务器资源,提高系统的资源优化,同时可在跨平台、低配置系统中实现H.264编码,对系统配置要求低,可支持H.264多平台下的硬件开发。

第一至第四阈值可以根据本领域技术人员的经验进行设置。以下给出根据本发明的示例的第一至第四阈值设置方式。

在一个示例中,所述第一阈值Th1可以为:

Th1=EMB1σMB2>

所述第二阈值Th2可以为:

Th2=EMB2σMB2>

其中,

nMB是16×16宏块、16×8宏块、8×16宏块被选择(作为当前帧间编码模式)的次数(这里的“次数”例如是针对当前编码的帧、或当前编码的帧及其附近预定数量的帧进行统计的结果),代价值JMB(i)是16×16宏块、16×8宏块、8×16宏块被选择的次数为i时,被选择的16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值,α1、α2根据运算时间和视频失真度确定。

第一阈值Th1和第二阈值Th2可以是针对宏块的阈值,其中,第一阈值Th1可以是针对B帧的阈值,第二阈值Th2可以是针对B帧和P帧的阈值。在该示例中,为了有效的平衡运算复杂度和图像失真,采用了一种统计代价更新的自适应的阈值选取确定方法,例如在选取B帧或P帧中的某一个宏块作为当前帧间编码模式后,可将该宏块纳入阈值更新的统计范畴之内,进行阈值更新。例如,如果被选择为当前帧间编码模式的宏块的代价函数Jmotion(RD)的代价值比此前阈值统计范畴之内的所有宏块的最小代价值JMB(i)还小,则该宏块被纳入阈值更新的统计范畴之内后,会取代旧的最小代价值JMB(i),成为新的最小代价值JMB(i+1),从而实现阈值的自适应统计更新。

可基于对运算时间和视频失真度的不同要求,对参数α1、α2根据实际的统计经验进行适当调整。举例来说,如果要求运算时间较短,或者要求视频失真度可以较高,则可以适当减小α1、α2,以提高第一、第二阈值,使得判断过程尽快收敛,即尽量选择Dirct16×16等在判断流程中靠前的模式作为当前帧间编码模式,以视频失真度较高为代价,缩短运算时间,反之亦然。

在一个示例中,所述第三阈值Th3为:

Th3=EsubMB3σsubMB2>

所述第四阈值Th4为:

Th4=EsubMB4σsubMB2>

其中,

nsubMB是8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块被选择(作为当前帧间编码模式)的次数(这里的“次数”例如是针对当前编码的帧、或当前编码的帧及其附近预定数量的帧进行统计的结果),代价值JsubMB(i)是8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块被选择的次数为i时,被选择的8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值中的最小代价值,α3、α4根据运算时间和视频失真度确定。

第三阈值Th3和第四阈值Th4可以是针对子宏块的阈值,其中第三阈值Th3可以是针对B帧的阈值,第四阈值Th4可以是针对B帧和P帧的阈值。在该示例中,为了有效的平衡运算复杂度和图像失真,采用了一种统计代价更新的自适应的阈值选取确定方法,该阈值选取确定方法的原理与上一示例相似,为了简明起见,这里不再重复描述。

可以基于对运算时间和视频失真度的不同要求,对参数α3、α4根据实际的统计经验进行适当调整。举例来说,如果要求运算时间较短,或者要求视频失真度可以较高,则可以适当减小α3、α4,以提高第三、第四阈值,使得判断过程尽快收敛,即尽量选择Dirct8×8等在判断流程中靠前的模式作为当前帧间编码模式,以视频失真度较高为代价,缩短运算时间,反之亦然。

在一个示例中,如图5所示,所述的帧间编码模式选择方法还可包括:确定所述当前帧间编码模式后,可更新所述第一阈值Th1、所述第二阈值Th2、所述第三阈值Th3和所述第四阈值Th4(S516)。如上面示例所述,为了有效的平衡运算复杂度和图像失真,采用了一种统计代价更新的自适应的阈值选取确定方法,当选择某一个宏块或者子宏块作为当前帧间编码模式后,可将该宏块或者子宏块纳入阈值更新的统计范畴之内,进行阈值更新。

实施例2

图6示出根据本发明一实施例的基于H.264的帧间编码模式选择装置的结构图。该实施例的装置600可用于实现实施例1中方法中各步骤的操作,其中各种具体示例及其有益效果可参见实施例1,为简明起见这里不再重复描述。

如图6所示,该实施例的装置600主要包括:宏块集合处理部件601,用于依次针对当前帧对应的各宏块集合进行以下操作,包括:计算当前宏块集合中的各宏块的代价函数的代价值;取当前宏块集合以及该当前宏块集合之前的宏块集合中的各宏块的上述代价值中的最小代价值,在所述最小代价值小于或等于当前宏块集合的相应阈值的情况下,选择与该最小代价值相对应的宏块作为当前帧间编码模式;子宏块集合处理部件602,用于在当前宏块集合为所述各宏块集合中的最后一个宏块集合,且所述最小代价值大于当前宏块集合的相应阈值的情况下,针对当前帧对应的各子宏块集合进行以下操作,包括:计算当前子宏块集合中的各子宏块的代价函数的代价值;取当前子宏块集合以及该当前子宏块集合之前的子宏块集合中的各子宏块的上述代价值中的最小代价值,如果当前子宏块集合不是最后一个子宏块集合,则在所述最小代价值小于或等于当前子宏块集合的相应阈值的情况下,选择与该最小代价值相对应的子宏块作为当前帧间编码模式,如果当前子宏块集合是最后一个子宏块集合,则选择与该最小代价值相对应的子宏块作为当前帧间编码模式。

在一个示例中,所述宏块集合处理部件还可用于:在所述最小代价值大于当前宏块集合的相应阈值的情况下,如果当前宏块集合不是所述各宏块集合中的最后一个宏块集合,将下一宏块集合作为当前宏块集合,并重复进行计算当前宏块集合中的各宏块的代价函数的代价值的操作。

在一个示例中,所述子宏块集合处理部件还可用于:如果当前子宏块集合不是最后一个子宏块集合,则在所述最小代价值大于当前子宏块集合的相应阈值的情况下,将下一子宏块集合作为当前子宏块集合,并重复进行计算当前子宏块集合中的各子宏块的代价函数的代价值的操作。

在一个示例中,所述当前帧为B帧,所述宏块集合可包括包含Direct 16×16宏块的第一宏块集合和包含16×16宏块、16×8宏块、8×16宏块的第二宏块集合,第一宏块集合的相应阈值为第一阈值Th1,第二宏块集合的相应阈值为第二阈值Th2,所述子宏块集合可包括包含Direct 8×8子宏块的第一子宏块集合,包含8×8子宏块的第二子宏块集合,以及包含8×4子宏块、4×8子宏块、4×4子宏块的第三子宏块集合;第一子宏块集合的相应阈值为第三阈值Th3,第二子宏块集合的相应阈值为第四阈值Th4;其中,所述宏块集合处理部件具体可用于:计算Direct 16×16宏块的代价函数的代价值,如果Direct 16×16宏块的代价函数的代价值小于或等于第一阈值Th1,则选择Direct 16×16宏块作为当前帧间编码模式;如果Direct 16×16宏块的代价函数的代价值大于第一阈值Th1,则分别计算16×16宏块、16×8宏块、8×16宏块的代价函数的代价值,如果Direct 16×16宏块、16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值小于或等于第二阈值Th2,则选择与Direct 16×16宏块、16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值对应的宏块作为当前帧间编码模式;其中,如果Direct 16×16宏块、16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值大于第二阈值Th2,则所述子宏块集合处理部件具体可用于:计算Direct 8×8子宏块的代价函数的代价值,如果Direct 8×8子宏块的代价函数的代价值小于或等于第三阈值Th3,则选择Direct 8×8子宏块作为当前帧间编码模式;如果Direct 8×8子宏块的代价函数的代价值大于第三阈值Th3,则计算8×8子宏块的代价函数的代价值,如果Direct 8×8子宏块、8×8子宏块的代价函数的代价值中的最小代价值小于或等于第四阈值Th4,则选择与Direct 8×8子宏块、8×8子宏块的代价函数的代价值中的最小代价值对应的子宏块作为当前帧间编码模式;如果Direct 8×8子宏块、8×8子宏块的代价函数的代价值中的最小代价值大于第四阈值Th4,则分别计算8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值,选择与Direct 8×8子宏块、8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值中的最小代价值对应的子宏块作为当前帧间编码模式。

在一个示例中,所述当前帧是P帧,所述宏块集合可包括包含16×16宏块、16×8宏块、8×16宏块的第二宏块集合,第二宏块集合的相应阈值为第二阈值Th2;所述子宏块集合可包括包含8×8子宏块的第二子宏块集合,以及包含8×4子宏块、4×8子宏块、4×4子宏块的第三子宏块集合;第二子宏块集合的相应阈值为第四阈值Th4;其中,所述宏块集合处理部件具体可用于:分别计算16×16宏块、16×8宏块、8×16宏块的代价函数的代价值,如果16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值小于或等于第二阈值Th2,则选择与16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值对应的宏块作为当前帧间编码模式;其中,如果16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值大于第二阈值Th2,则所述子宏块集合处理部件具体可用于:计算8×8子宏块的代价函数的代价值,如果8×8子宏块的代价函数的代价值小于或等于第四阈值Th4,则选择8×8子宏块作为当前帧间编码模式;如果8×8子宏块的代价函数的代价值大于第四阈值Th4,则分别计算8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值,选择与8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值中的最小代价值对应的子宏块作为当前帧间编码模式。

在一个示例中,所述第一阈值Th1为:

Th1=EMB1σMB2

所述第二阈值Th2为:

Th2=EMB2σMB2

其中,

nMB是16×16宏块、16×8宏块、8×16宏块被选择的次数,代价值JMB(i)是16×16宏块、16×8宏块、8×16宏块被选择的次数为i时,被选择的16×16宏块、16×8宏块、8×16宏块的代价函数的代价值中的最小代价值,α1、α2根据运算时间和视频失真度确定;

所述第三阈值Th3为:

Th3=EsubMB3σsubMB2

所述第四阈值Th4为:

Th4=EsubMB4σsubMB2

其中,

nsubMB是8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块被选择的次数,代价值JsubMB(i)是8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块被选择的次数为i时,被选择的8×8子宏块、8×4子宏块、4×8子宏块、4×4子宏块的代价函数的代价值中的最小代价值,α3、α4根据运算时间和视频失真度确定。

在一个示例中,所述代价函数Jmotion(RD)的定义如下,

Jmotion(RD)=D+λmotion×R

D为原始图像像素值与重建图像像素值之差的绝对值之和,λmotion为与量化参数QP相关的值,R为评估得到的R值。

在一个示例中,所述装置600还可包括:阈值更新部件,可用于确定所述当前帧间编码模式后,更新所述第一阈值Th1、所述第二阈值Th2、所述第三阈值Th3和所述第四阈值Th4。

实施例3

图7示出了本发明的另一个实施例的一种基于H.264的帧间编码模式选择设备的结构框图。所述帧间编码模式选择设备1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。

所述帧间编码模式选择设备1100包括处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。

通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。

处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。

在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于实现实施例1所述的方法。

本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号