CN114845105A - 编码方法、装置、设备和存储介质 - Google Patents

编码方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN114845105A
CN114845105A CN202110137797.XA CN202110137797A CN114845105A CN 114845105 A CN114845105 A CN 114845105A CN 202110137797 A CN202110137797 A CN 202110137797A CN 114845105 A CN114845105 A CN 114845105A
Authority
CN
China
Prior art keywords
pixel gradient
gradient value
determining
frame image
macroblock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110137797.XA
Other languages
English (en)
Inventor
左旭光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202110137797.XA priority Critical patent/CN114845105A/zh
Publication of CN114845105A publication Critical patent/CN114845105A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供一种编码方法、装置、设备和存储介质,该方法包括:确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价及目标帧图像的量化参数;根据多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价确定多个宏块各自对应的量化参数偏移值;根据多个宏块各自对应的量化参数偏移值和目标帧图像的量化参数确定多个宏块的量化参数;根据多个宏块的量化参数对目标帧图像进行编码。当对视频中某一帧图像进行编码时,在计算这帧图像中各个宏块的量化参数偏移值的过程中,考虑到宏块各自的像素梯度信息,使得宏块的量化参数偏移值计算结果能够更准确地反映出宏块对未来帧的影响程度,使视频的编码效果更佳。

Description

编码方法、装置、设备和存储介质
技术领域
本发明涉及视频编码技术领域,尤其涉及一种编码方法、装置、设备和存储介质。
背景技术
通过对视频进行编码可以压缩视频所占用的空间。目前,一种常用的视频编码算法是宏块树(Macroblock Tree,简称Mbtree)算法,Mbtree算法可以实现较高的压缩效率。
在Mbtree算法的执行过程中,当需要对视频中的任一帧图像进行编码时,需要计算这帧图像中各宏块的量化参数,以便基于各宏块的量化参数完成对这帧图像的编码。为了计算这帧图像中各宏块的量化参数,需要先计算出这帧图像中各宏块的量化参数偏移值。由此可见,宏块的量化参数偏移值的准确性,将直接影响最终的编码效果。
发明内容
本发明实施例提供一种编码方法、装置、设备和存储介质,可以提高编码效果。
第一方面,本发明实施例提供一种编码方法,该方法包括:
确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价,以及所述目标帧图像的量化参数,所述目标帧图像是待编码视频中当前待编码的一帧图像;
根据所述多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值;
根据所述多个宏块各自对应的量化参数偏移值和所述目标帧图像的量化参数,确定所述多个宏块各自对应的量化参数;
根据所述多个宏块各自对应的量化参数对所述目标帧图像进行编码。
第二方面,本发明实施例提供一种编码装置,该装置包括:
第一确定模块,用于确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价,以及所述目标帧图像的量化参数,所述目标帧图像是待编码视频中当前待编码的一帧图像;
第二确定模块,用于根据所述多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值;
第三确定模块,用于根据所述多个宏块各自对应的量化参数偏移值和所述目标帧图像的量化参数,确定所述多个宏块各自对应的量化参数;
编码模块,用于根据所述多个宏块各自对应的量化参数对所述目标帧图像进行编码。
第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现如第一方面所述的编码方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使处理器至少可以实现如第一方面所述的编码方法。
在对某视频进行编码的过程中,需要按照视频中各帧图像的显示顺序,逐帧图像地进行编码。将当前待编码的一帧图像称为目标帧图像,当需要对目标帧图像进行编码时,需要确定目标帧图像中多个宏块各自对应的量化参数偏移值以及目标帧图像的量化参数,以便根据多个宏块各自对应的量化参数偏移值以及目标帧图像的量化参数,确定多个宏块各自对应的量化参数,最终基于多个宏块各自对应的量化参数完成对目标帧图像的编码。
由此可见,宏块的量化参数偏移值的确定结果的准确性对最终的编码效果具有重要影响,具体表现为:对目标帧图像中的某个宏块来说,若其为未来帧(即编码顺序位于目标帧图像之后的帧)提供的参考信息量越多,则说明其重要性越高,应该提高这个宏块区域的编码质量,则需减小这个宏块的量化参数偏移值,使得这个宏块的量化参数更小,这样才会使得编码出来的视频质量更好,压缩效率更高。
为了能够更加准确地度量宏块的量化参数偏移值,在本发明实施例中,通过计算宏块的像素梯度值,以像素梯度值来反映宏块对未来帧的影响程度,结合该像素梯度值、遗传代价和帧内预测代价进行宏块的量化参数偏移值的确定,可以使得确定出的量化参数偏移值更加合理,从而可以进一步提高视频的编码质量和压缩效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种编码方法的流程图;
图2为本发明实施例提供的一种编码结构的示意图;
图3为本发明实施例提供的一种继承信息量分配结果的示意图;
图4为本发明实施例提供的一种编码装置的结构示意图;
图5为与图4所示实施例提供的编码装置对应的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
本发明实施例采用的视频编码算法是Mbtree算法,在Mbtree算法中定义了宏块(macroblock)这个概念,简单来说,一帧图像中设定尺寸大小的像素区域构成一个宏块,比如16*16个像素,一帧图像中可以包括多个宏块。一个视频由若干帧图像顺序排列组成,在进行视频编码的过程中,按照时序顺序依次对每帧图像进行编码。Mbtree算法中是针对每个宏块进行处理的,从而,若当前需要对视频中的某帧图像进行编码,则需要获得这帧图像中各个宏块的量化参数,以便结合这些宏块的量化参数完成这帧图像的编码(具体参考现有相关技术实现)。
Mbtree算法的工作原理简单来说是:根据一个宏块在帧间预测中贡献给未来帧(在编码顺序里位于当前编码的一帧图像之后的帧)的信息量,即被参考的情况,来调整该宏块的量化参数。简言之,如果该宏块贡献给未来帧的信息量越多,则其重要性越高,应当提高该宏块区域的编码质量,减少其量化参数,反之,则增大该宏块区域的量化参数。
要知道当前宏块对未来帧的贡献程度,则需要从未来帧反推有多少信息是来自于当前宏块的,由于未来帧还没有被编码,需要通过前向预测(lookahead)来进行预测。也就是说,针对每个宏块,向前预测一定数量的帧(该数量基于预设的lookahead确定)中该宏块被参考的情况,以最终确定该宏块的量化参数。
在计算一个宏块的量化参数的过程中,需要先计算出这个宏块的量化参数偏移值以及该宏块所在的一帧图像的量化参数(帧级别的量化参数),之后,以该宏块的量化参数偏移值与该帧图像的量化参数相加,加和结果即为该宏块的量化参数(块级别的量化参数)。
本发明实施例中,并未改变一帧图像的量化参数的计算方式,仅改变了宏块的量化参数偏移值的计算方式,也就是对传统Mbtree算法计算宏块的量化参数偏移值的方式的一种优化,其中,传统Mbtree算法仅依据宏块的遗传代价和帧内预测代价来计算宏块的量化参数偏移值。通过采用本发明实施例提供的宏块的量化参数偏移值的计算方式,可以使得最终基于该量化参数偏移值计算得到的宏块的量化参数更加准确地反映该宏块对未来帧的贡献程度。
本发明实施例提供的编码方案,可以适用于任一种视频的编码场景中,比如视频直播、视频点播、音视频通信、多媒体生产、多媒体数据处理等各种涉及视频编码的应用场景中。该编码方案可以由某电子设备来执行,该电子设备可以是提供视频的视频服务器,也可以是终端设备,比如直播终端。通过对视频进行编码可以将其压缩到合适大小。
下面结合以下实施例介绍本发明实施例提供的方案。
图1为本发明实施例提供的一种编码方法的流程图,如图1所示,该方法可以包括如下步骤:
101、确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价,以及目标帧图像的量化参数,目标帧图像是待编码视频中当前待编码的一帧图像。
102、根据多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定多个宏块各自对应的量化参数偏移值。
103、根据多个宏块各自对应的量化参数偏移值和目标帧图像的量化参数,确定多个宏块各自对应的量化参数。
104、根据多个宏块各自对应的量化参数对目标帧图像进行编码。
本发明实施例中,将待编码视频中当前待编码的一帧图像称为目标帧图像,目标帧图像中会包含多个宏块,针对每个宏块,需要计算多种参数,比如:像素梯度值、遗传代价(propagate_cost)、帧内预测代价(intra_cost)、帧间预测代价(inter_cost)、运动矢量。
其中,其他参数的计算过程将在下文进行介绍,在此仅主要介绍像素梯度值的计算过程。
具体地,针对多个宏块中的任一宏块来说,可以根据该任一宏块中各像素对应的像素梯度值,确定该任一宏块对应的像素梯度值。
具体来说,假设一个宏块由16*16即256个像素组成,每个像素可以具有水平梯度值和竖直梯度值两种像素梯度值,其中,对于任一像素i来说,假设其像素位置为(x,y),则可以以像素i与其左边相邻的像素(位置为(x-1,y))的像素值的差值作为像素i的水平梯度值,以像素i与其上边相邻的像素(位置为(x,y+1))的像素值的差值作为像素i的竖直梯度值。
可以理解的是,当在该宏块内,若像素i没有左边相邻的像素和/或没有上边相邻的像素时,可以根据预设的某种计算方式确定像素i的水平梯度值和竖直梯度值,比如预设左边相邻/上边相邻的像素的像素值为某设定值。
在得到宏块中各个像素的像素梯度值后,可选地,可以将各个像素的像素梯度值相加,加和结果作为该宏块的像素梯度值。其中,各个像素的像素梯度值相加可以是:所有256个像素的水平梯度值和竖直梯度值都加在一起,最终得到一个数值,该数值即作为该宏块的像素梯度值。
当然,计算宏块的像素梯度值的方式不以上述举例为限,其他可以融合各个像素的像素梯度值的方式都可以。
本发明实施例中,之所以计算宏块的像素梯度信息,是因为可以基于宏块的像素梯度信息确定宏块对未来帧的影响程度,即对未来帧编码的贡献程度。如果某宏块的像素梯度值越小,可以认为此时对应于缓慢变化的场景,其对未来帧的影响越大,此时,需要调小传统Mbtree算法计算的该宏块的量化参数偏移值。相反地,如果某宏块的像素梯度值越大,可以认为其对未来帧的影响越小,此时,需要调大传统Mbtree算法计算的该宏块的量化参数偏移值。因为人眼可以容忍快速变化场景的某些缺陷,但相对而言某些平滑场景的缺陷,人眼则相当敏感。注意此处说的平滑,指的是沿时间维度上场景的变化频率,而非普通意义上的像素域中的场景。
这样在计算每个宏块的量化参数偏移值时,考虑到每个宏块的像素梯度信息,从而更准确地衡量出每个宏块对未来帧的影响程度,得到更加合理的量化参数偏移值。
在得到各个宏块的像素梯度值后,可以结合已经得到的各个宏块的遗传代价和帧内预测代价,最终确定各宏块的量化参数偏移值。
可选地,在确定目标帧图像中多个宏块各自对应的量化参数偏移值的过程中,可以先根据多个宏块各自对应的像素梯度值,确定多个宏块各自对应的调整因子,之后再根据多个宏块各自对应的调整因子、遗传代价和帧内预测代价,确定多个宏块各自对应的量化参数偏移值。
其中,调整因子的作用即为实现如下调整目的:如果宏块的像素梯度值越小,则调小传统Mbtree算法计算的该宏块的量化参数偏移值。相反地,如果宏块的像素梯度值越大,则调大传统Mbtree算法计算的该宏块的量化参数偏移值。
为实现上述目的,宏块对应的像素梯度值、宏块对应的调整因子以及宏块对应的量化参数偏移值会呈现如下变换规律:
若任一宏块对应的像素梯度值越大,则该任一宏块对应的调整因子越大,该任一宏块对应的量化参数偏移值越大。
相反地,若该任一宏块对应的像素梯度值越小,则该任一宏块对应的调整因子越小,该任一宏块对应的量化参数偏移值越小。
基于此,任何一种确定调整因为的方式都可以适用,只要该确定方式能够满足上述规律要求即可。
下文会介绍两种可选的确定调整因子的方式,这里先假设已经确定出多个宏块各自对应的调整因子,此时,可以基于如下公式,确定多个宏块各自对应的量化参数偏移值:
Figure BDA0002927415940000081
其中,以任一宏块Bi为例,QpOffset表示宏块Bi的量化参数偏移值,intra_cost表示宏块Bi的帧内预测代价,propagate_cost表示宏块Bi的遗传代价,gradientCostWeight表示宏块Bi对应的调整因子。
传统Mbtree算法下,计算宏块Bi的量化参数偏移值的公式为:
Figure BDA0002927415940000082
对比可见,本发明实施例中,在计算宏块的量化参数偏移值的过程中,通过考虑宏块的像素梯度信息,从而更准确地衡量出每个宏块对未来帧的影响,得到更加合理的量化参数偏移值。
在计算出目标帧图像中多个宏块各自对应的量化参数偏移值后,每个宏块的量化参数偏移值加上目标帧图像的量化参数,得到每个宏块的量化参数,之后,基于多个宏块各自对应的量化参数完成对目标帧图像的编码。对待编码视频中的各帧图像都执行上述过程,便完成了对其中每帧图像的编码,亦即完成了对该视频的编码。
下面介绍两种可选的计算宏块对应的调整因子的实现方式。
在一可选实施例中,可以通过如下方式实现对多个宏块各自对应的调整因子的计算:
根据多个宏块各自对应的像素梯度值,确定平均像素梯度值、第一像素梯度值以及第二像素梯度值,其中,所述第一像素梯度值大于所述平均像素梯度值,所述第二像素梯度值小于所述平均像素梯度值;
对于多个宏块中的任一宏块,若该任一宏块对应的像素梯度值大于或等于平均像素梯度值,则根据平均像素梯度值和第一像素梯度值确定该任一宏块对应的第一调整因子;
若任一宏块对应的像素梯度值小于所述平均像素梯度值,则根据平均像素梯度值和第二像素梯度值确定该任一宏块对应的第二梯度调整因子,第一梯度调整因子大于第二调整因子。
其中,第一像素梯度值可以是多个宏块各自对应的像素梯度值中的最大像素梯度值,第二像素梯度值可以是多个宏块各自对应的像素梯度值中的最小像素梯度值。
在上述实现方式中,以平均像素梯度值作为比较对象,当某个宏块的像素梯度值大于或等于平均像素梯度值时,认为该宏块的像素梯度值比较大,对未来帧的影响程度小,则赋予该宏块一个较大的调整因子,这样根据上述计算量化参数偏移值的公式,可以得到一个较大的量化参数偏移值。相反地,当某个宏块的像素梯度值小于平均像素梯度值时,认为该宏块的像素梯度值比较小,对未来帧的影响程度大,则赋予该宏块一个较小的调整因子,这样根据上述计算量化参数偏移值的公式,可以得到一个较小的量化参数偏移值。
可选地,以任一宏块Bi为例,若宏块Bi的像素梯度值大于或等于平均像素梯度值,则宏块Bi对应的第一调整因子的确定方式可以是:
确定宏块Bi对应的像素梯度值与平均像素梯度值的第一差值,以及,第一像素梯度值与第二像素梯度值的第二差值;
确定第一差值与第二差值的商;
确定所述商与设定数值的加和结果作为宏块Bi对应的第一调整因子。
上述计算过程用公式可以表示为:
Figure BDA0002927415940000091
其中,idx表示宏块编号,gradientcost[idx]表示宏块的像素梯度值,avergradientcost表示平均像素梯度值,gradientMax表示第一像素梯度值。该公式中,上述设定数值取值为1。
可选地,以任一宏块Bj为例,若宏块Bj的像素梯度值小于平均像素梯度值,则宏块Bj对应的第二调整因子的确定方式可以是:
确定宏块Bj对应的像素梯度值与平均像素梯度值的第三差值,以及,第二像素梯度值与平均像素梯度值的第四差值;
确定第三差值与第四差值的商;
确定设定数值与所述商的差值作为宏块Bj对应的第二调整因子。
上述计算过程用公式可以表示为:
Figure BDA0002927415940000101
其中,gradientMin表示第二像素梯度值。该公式中,上述设定数值取值为1。
以上介绍了一种计算宏块对应的调整因子的实现方式。
在另一可选实施例中,还可以通过如下方式实现对多个宏块各自对应的调整因子的计算:
根据多个宏块各自对应的像素梯度值,确定平均像素梯度值;
对于多个宏块中的任一宏块,确定该任一宏块对应的像素梯度值与平均像素梯度值的商作为该任一宏块对应的调整因子。
在该实现方式下,也可以实现像素梯度值高的宏块所对应的调整因子也高,像素梯度值低的宏块所对应的调整因子也低的目的。
综上,在本发明实施例中,当对视频中某一帧图像进行编码时,在计算这帧图像中各个宏块的量化参数偏移值的过程中,考虑到宏块各自的像素梯度信息,可以使得宏块的量化参数偏移值计算结果能够更加真实、准确地反映出宏块对未来帧的影响程度,从而使得视频的编码效果更加优化,压缩效率得以提高。
如前文所述,在计算宏块的量化参数偏移值的过程中,除了需要计算宏块的像素梯度值、调整因子等与像素梯度有关的信息外,还需要使用到诸如宏块的遗传代价(propagate_cost)、帧内预测代价(intra_cost)、帧间预测代价(inter_cost)、运动矢量等信息。下面简单介绍下这些信息的计算过程以及视频编码的整体流程。
在对某待编码视频进行编码时,先根据预设的前向预测帧数(lookahead),确定待编码视频中的多帧图像,之后执行如下两个步骤:
第一、依次遍历从所述多帧图像中的最后一帧图像到当前待编码的目标帧图像中的各帧图像,对遍历到的当前帧图像中各宏块执行如下步骤:确定当前帧图像中各宏块的帧内预测代价、帧间预测代价和运动矢量。
第二、依次遍历从所述多帧图像中的最后一帧图像到当前待编码的目标帧图像中的各帧图像,计算遍历到的当前帧图像的前一帧图像中的各宏块为未来帧提供的信息量,即遗传代价。
在通过多次循环执行上述过程后,最终会得到目标帧图像(当前需要编码的那帧图像)中各个宏块的遗传代价。再计算出目标帧图像中各个宏块的帧内预测代价以及像素梯度值,便可以基于上文中给出的公式最终计算出目标帧图像中各个宏块的量化参数偏移值。进而,根据目标帧图像中各宏块的量化参数偏移值和目标帧图像的量化参数,可以确定出目标帧图像中各宏块的量化参数,最终,根据目标帧图像中各宏块的量化参数对目标帧图像进行编码。
为便于理解上述循环计算过程,结合图2和图3来示例性说明上述循环计算过程。
假设视频的编码结构为图2中示意的IPPP结构(这里仅为举例,其他编码结构的视频同样适用于本方案),其中,I、P是两种帧类型。另外,在图2中,假设前向预测帧数为50帧,即lookahead窗口长度为50帧。
假设当前需要对视频中的第一帧图像进行编码,那么需要使用到第一帧图像到第50帧图像来完成第一帧图像的编码。
具体地,需要从第50帧图像开始逐帧图像进行遍历,直到遍历到当前需要编码的第一帧图像为止,在每遍历到一帧图像时,需要计算当前帧图像(将当前遍历到的一帧图像称为当前帧图像)中各宏块的帧内预测代价、帧间预测代价、运动矢量。
假设当前帧图像为第50帧图像,并假设每帧图像中包含4个宏块,则可以将第50帧图像中包含的4个宏块表示为A50、B50、C50、D50。则可以基于第50帧图像中包含的这4个宏块计算出每个宏块的帧内预测代价,假设这4个宏块的帧内预测代价计算结果分别表示为:intra_cost_A50、intra_cost_B50、intra_cost_C50、intra_cost_D50。
另外,需要对第50帧图像中每个宏块参考前一帧图像即第49帧图像的代价进行帧间预测,以得到第50帧图像中这4个宏块的帧间预测代价,假设这4个宏块的帧间预测代价计算结果分别表示为:inter_cost_A50、inter_cost_B50、inter_cost_C50、inter_cost_D50。
同时,在帧间预测过程中,还需要记录下第50帧图像中这4个宏块的运动矢量,假设分别表示为:MVA50、MVB50、MVC50、MVD50。
至此,在第一次遍历到第50帧图像时,得到上述参数信息。之后,遍历到第49帧图像,假设第49帧图像中包含的4个宏块表示为A49、B49、C49、D49。基于同样的计算过程,可以得到第49帧图像中包含的这4个宏块的帧内预测代价:intra_cost_A49、intra_cost_B49、intra_cost_C49、intra_cost_D49,这4个宏块的帧间预测代价:inter_cost_A49、inter_cost_B49、inter_cost_C49、inter_cost_D49,以及这4个宏块的运动矢量,假设分别表示为:MVA49、MVB49、MVC49、MVD49。
以此类推,直到遍历到第一帧图像,可以得到第一帧图像中包含的4个宏块的帧内预测代价。
值得说明的是,由于第一帧图像是首帧图像,且根据上文中的公式在计算第一帧图像中各宏块的量化参数偏移值的过程中仅需要使用到第一帧图像中各宏块的帧内预测代价、像素梯度值和遗传代价,因此,针对第一帧图像,可以无需计算其中各宏块的帧间预测代价和运动矢量。
上述帧内预测代价、帧间预测代价以及运动矢量的具体计算过程可以参考现有相关技术实现,在此不赘述。
至此,完成了上述第一步的执行过程。
第二步执行过程的目的主要是:从最后一帧开始,即第50帧开始,循环计算当前帧的前一帧中的各宏块对未来帧提供的信息量,即遗传代价propagate_cost。其中,作为最后一帧的第50帧图像中各宏块的遗传代价被初始化为0。
以当前帧为第50帧图像为例,此时需要计算的是其前一帧图像即第49帧图像中的各个宏块为未来帧提供的信息量,该信息量以遗传代价propagate_cost来表示。为了完成该计算,具体可以通过如下几个步骤实现:
(1)、首先计算第50帧图像中的各宏块从第49帧图像中继承的信息量。
其中,计算第i帧图像的每个宏块从第i-1帧图像中继承的信息量buf的计算公式为:
buf_i=(0.5*intra_cost_i+propagate_cost_i)*propagate_faction_i
Figure BDA0002927415940000131
其中,buf_i表示第i帧中任一个宏块从第i-1帧图像中继承的信息量,intra_cost_i表示第i帧中任一个宏块的帧内预测代价,inter_cost_i表示第i帧中任一个宏块的帧间预测代价,propagate_faction_i表示第i帧中任一个宏块的继承率。继承率代表宏块的信息量有多少来自于参考帧。
基于上述公式可知:
以第50帧图像中的宏块A50为例,宏块A50从第49帧图像中继承的信息量可以表示为:
buf_A50=(0.5*intra_cost_A50+propagate_cost_A50)*propagate_faction_A50
其中,
Figure BDA0002927415940000141
另外,根据预设条件可知,propagate_cost_A50=0。
同理,可以计算出第50帧图像中的其他宏块B50、C50、D50从第49帧图像中继承的信息量buf_B50、buf_C50、buf_D50。
(2)、以宏块A50为例,将buf_A50根据宏块A50的运动矢量分配给其参考帧图像即第49帧图像中的不同宏块,确定第49帧图像中的不同宏块为宏块A50提供的信息量。
分配结果如图3中所示,在图3中,假设根据宏块A50的运动矢量找到宏块A50在第49帧图像中对应的参考块C50,其中,假设参考块C50实际上覆盖了第49帧图像中包含的两个宏块:A49和B49,其中,假设参考块C50与宏块A49重叠的区域记为R1,参考块C50与宏块B49重叠的区域记为R2。之后,可以根据区域R1和区域R2分别与宏块A50的面积比来确定这宏块A49和B49分别为宏块A50提供的信息量:
宏块A49为宏块A50提供的信息量表示为:buf_A50*R1区域的面积/宏块A50的面积。
宏块B49为宏块A50提供的信息量表示为:buf_A50*R21区域的面积/宏块A50的面积。
针对第50帧图像中包括的其他宏块B50、C50、D50都执行(1)和(2)这两个步骤的处理,最终会得到第49帧图像中的各个宏块分别为第50帧图像中的各个宏块提供的信息量。
(3)、经过(1)和(2)后得到第49帧图像中各宏块为未来帧图像即第50帧图像中的不同宏块提供的信息量,累加第49帧图像中任一宏块为第50帧图像中的不同宏块提供的信息量,以得到第49帧图像中该任一宏块为未来帧图像提供的信息量,即该任一宏块的遗传代价。
具体地,假设第49帧图像中的宏块A49分别为第50帧图像中的宏块A50和B50提供了的信息量,将宏块A49分别为宏块A50和B50提供的信息量相加,便可以得到第49帧图像中的宏块A49为未来帧图像即第50帧图像提供的信息量,亦即宏块49对应的遗传代价:propagate_cost_A49。同理,得到第49帧图像中的每个宏块对应的遗传代价。
以上以第50帧图像和第49帧图像为例进行的说明,可以理解的是,在完成第49帧图像中各宏块的遗传代价的计算后,更新当前帧图像为第49帧图像,重复执行(1)、(2)、(3)步骤,可以得到第48帧图像中各宏块的遗传代价,以此类推,直到计算得到第一帧图像中各宏块的遗传代价。
可以理解的是,在根据已经得到的第一帧图像中各宏块的遗传代价、像素梯度值、帧内预测代价计算出第一帧图像中各宏块的量化参数偏移值,再结合第一帧图像的量化参数计算出第一帧图像中各宏块的量化参数,基于第一帧图像中各宏块的量化参数完成第一帧图像的编码后,接下来需要编码的图像变为第二帧图像。此时,第二帧图像的编码过程中将会使用到第二帧图像到第五十二帧图像这50帧图像。继续重复上述第一步、第二步的执行过程,便可以完成第二帧图像的编码,以此类推,直到完成视频中所有帧图像的编码。
以下将详细描述本发明的一个或多个实施例的编码装置。本领域技术人员可以理解,这些编码装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图4为本发明实施例提供的一种编码装置的结构示意图,如图4所示,该装置包括:第一确定模块11、第二确定模块12、第三确定模块13、编码模块14。
第一确定模块11,用于确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价,以及所述目标帧图像的量化参数,所述目标帧图像是待编码视频中当前待编码的一帧图像。
第二确定模块12,用于根据所述多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值。
第三确定模块13,用于根据所述多个宏块各自对应的量化参数偏移值和所述目标帧图像的量化参数,确定所述多个宏块各自对应的量化参数。
编码模块14,用于根据所述多个宏块各自对应的量化参数对所述目标帧图像进行编码。
可选地,第一确定模块11具体用于:对于所述多个宏块中的任一宏块,根据所述任一宏块中各像素对应的像素梯度值,确定所述任一宏块对应的像素梯度值。
可选地,第二确定模块12具体用于:根据所述多个宏块各自对应的像素梯度值,确定所述多个宏块各自对应的调整因子;根据所述多个宏块各自对应的调整因子、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值。
其中,若所述任一宏块对应的像素梯度值越大,则所述任一宏块对应的调整因子越大,所述任一宏块对应的量化参数偏移值越大;若所述任一宏块对应的像素梯度值越小,则所述任一宏块对应的调整因子越小,所述任一宏块对应的量化参数偏移值越小。
在一可选实施例中,第二确定模块12具体用于:根据所述多个宏块各自对应的像素梯度值,确定平均像素梯度值、第一像素梯度值以及第二像素梯度值,其中,所述第一像素梯度值大于所述平均像素梯度值,所述第二像素梯度值小于所述平均像素梯度值;对于所述多个宏块中的任一宏块,若所述任一宏块对应的像素梯度值大于或等于所述平均像素梯度值,则根据所述平均像素梯度值和所述第一像素梯度值确定所述任一宏块对应的第一调整因子;若所述任一宏块对应的像素梯度值小于所述平均像素梯度值,则根据所述平均像素梯度值和所述第二像素梯度值确定所述任一宏块对应的第二梯度调整因子,所述第一梯度调整因子大于所述第二调整因子。
其中,可选地,第二确定模块12具体用于:确定所述任一宏块对应的像素梯度值与所述平均像素梯度值的第一差值,以及,所述第一像素梯度值与所述平均像素梯度值的第二差值;确定所述第一差值与所述第二差值的商;确定所述商与设定数值的加和结果作为所述任一宏块对应的第一调整因子。
其中,可选地,第二确定模块12具体用于:确定所述任一宏块对应的像素梯度值与所述平均像素梯度值的第三差值,以及,所述第二像素梯度值与所述平均像素梯度值的第四差值;确定所述第三差值与所述第四差值的商;确定设定数值与所述商的差值作为所述任一宏块对应的第二调整因子。
在一可选实施例中,第二确定模块12还可以用于:根据所述多个宏块各自对应的像素梯度值,确定平均像素梯度值;对于所述多个宏块中的任一宏块,确定所述任一宏块对应的像素梯度值与所述平均像素梯度值的商作为所述任一宏块对应的调整因子。
图4所示装置可以执行前述图1至图3所示实施例中提供的编码方案,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图4所示编码装置的结构可实现为一电子设备。如图5所示,该电子设备可以包括:处理器21、存储器22。其中,存储器22上存储有可执行代码,当所述可执行代码被处理器21执行时,使处理器21至少可以实现如前述图1至图3所示实施例中提供的编码方法。
可选地,该设备还可以包括:通信接口23,用于与其他设备进行通信。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述图1至图3所示实施例中提供的编码方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (11)

1.一种编码方法,其特征在于,包括:
确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价,以及所述目标帧图像的量化参数,所述目标帧图像是待编码视频中当前待编码的一帧图像;
根据所述多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值;
根据所述多个宏块各自对应的量化参数偏移值和所述目标帧图像的量化参数,确定所述多个宏块各自对应的量化参数;
根据所述多个宏块各自对应的量化参数对所述目标帧图像进行编码。
2.根据权利要求1所述的方法,其特征在于,所述确定目标帧图像中多个宏块各自对应的像素梯度值,包括:
对于所述多个宏块中的任一宏块,根据所述任一宏块中各像素对应的像素梯度值,确定所述任一宏块对应的像素梯度值。
3.根据权利要求1所述的方法,其特征在于,所述根据所述多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值,包括:
根据所述多个宏块各自对应的像素梯度值,确定所述多个宏块各自对应的调整因子;
根据所述多个宏块各自对应的调整因子、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值。
4.根据权利要求3所述的方法,其特征在于,若所述任一宏块对应的像素梯度值越大,则所述任一宏块对应的调整因子越大,所述任一宏块对应的量化参数偏移值越大;若所述任一宏块对应的像素梯度值越小,则所述任一宏块对应的调整因子越小,所述任一宏块对应的量化参数偏移值越小。
5.根据权利要求3所述的方法,其特征在于,所述根据所述多个宏块各自对应的像素梯度值,确定所述多个宏块各自对应的调整因子,包括:
根据所述多个宏块各自对应的像素梯度值,确定平均像素梯度值、第一像素梯度值以及第二像素梯度值,其中,所述第一像素梯度值大于所述平均像素梯度值,所述第二像素梯度值小于所述平均像素梯度值;
对于所述多个宏块中的任一宏块,若所述任一宏块对应的像素梯度值大于或等于所述平均像素梯度值,则根据所述平均像素梯度值和所述第一像素梯度值确定所述任一宏块对应的第一调整因子;
若所述任一宏块对应的像素梯度值小于所述平均像素梯度值,则根据所述平均像素梯度值和所述第二像素梯度值确定所述任一宏块对应的第二梯度调整因子,所述第一梯度调整因子大于所述第二调整因子。
6.根据权利要求5所述的方法,其特征在于,所述根据所述平均像素梯度值、所述第一像素梯度值和所述第二像素梯度值确定所述任一宏块对应的第一调整因子,包括:
确定所述任一宏块对应的像素梯度值与所述平均像素梯度值的第一差值,以及,所述第一像素梯度值与所述平均像素梯度值的第二差值;
确定所述第一差值与所述第二差值的商;
确定所述商与设定数值的加和结果作为所述任一宏块对应的第一调整因子。
7.根据权利要求5所述的方法,其特征在于,所述根据所述平均像素梯度值、所述第一像素梯度值和所述第二像素梯度值确定所述任一宏块对应的第二调整因子,包括:
确定所述任一宏块对应的像素梯度值与所述平均像素梯度值的第三差值,以及,所述第二像素梯度值与所述平均像素梯度值的第四差值;
确定所述第三差值与所述第四差值的商;
确定设定数值与所述商的差值作为所述任一宏块对应的第二调整因子。
8.根据权利要求3所述的方法,其特征在于,所述根据所述多个宏块各自对应的像素梯度值,确定所述多个宏块各自对应的调整因子,包括:
根据所述多个宏块各自对应的像素梯度值,确定平均像素梯度值;
对于所述多个宏块中的任一宏块,确定所述任一宏块对应的像素梯度值与所述平均像素梯度值的商作为所述任一宏块对应的调整因子。
9.一种编码装置,其特征在于,包括:
第一确定模块,用于确定目标帧图像中多个宏块各自对应的像素梯度值、遗传代价、帧内预测代价,以及所述目标帧图像的量化参数,所述目标帧图像是待编码视频中当前待编码的一帧图像;
第二确定模块,用于根据所述多个宏块各自对应的像素梯度值、遗传代价和帧内预测代价,确定所述多个宏块各自对应的量化参数偏移值;
第三确定模块,用于根据所述多个宏块各自对应的量化参数偏移值和所述目标帧图像的量化参数,确定所述多个宏块各自对应的量化参数;
编码模块,用于根据所述多个宏块各自对应的量化参数对所述目标帧图像进行编码。
10.一种电子设备,其特征在于,包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至8中任一项所述的编码方法。
11.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至8中任一项所述的编码方法。
CN202110137797.XA 2021-02-01 2021-02-01 编码方法、装置、设备和存储介质 Pending CN114845105A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110137797.XA CN114845105A (zh) 2021-02-01 2021-02-01 编码方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110137797.XA CN114845105A (zh) 2021-02-01 2021-02-01 编码方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN114845105A true CN114845105A (zh) 2022-08-02

Family

ID=82560812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110137797.XA Pending CN114845105A (zh) 2021-02-01 2021-02-01 编码方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN114845105A (zh)

Similar Documents

Publication Publication Date Title
US11381839B2 (en) Method and device for image motion compensation
CN107925773B (zh) 使用自适应去块滤波编码和解码图像的方法及其装置
US10148947B2 (en) Method and device for determining parameters for encoding or decoding of an image of a video sequence
CN110839155B (zh) 运动估计的方法、装置、电子设备及计算机可读存储介质
US20120027092A1 (en) Image processing device, system and method
JP7279154B2 (ja) アフィン動きモデルに基づく動きベクトル予測方法および装置
CN113965753B (zh) 一种基于码率控制的帧间图像运动估计方法与系统
CN111818342B (zh) 帧间预测方法及预测装置
CN112543323B (zh) 一种编解码方法、装置及其设备
US20240146952A1 (en) Methods and apparatuses for decoder-side motion vector refinement in video coding
CN112004091B (zh) 帧间预测方法及其相关装置
US20230396780A1 (en) Illumination compensation method, encoder, and decoder
CN112565769B (zh) 块划分方法、帧间预测方法、视频编码方法及相关装置
CN114845105A (zh) 编码方法、装置、设备和存储介质
CN112055221B (zh) 一种帧间预测方法、视频编码方法及电子设备和存储介质
CN111586415B (zh) 视频编码方法、装置、编码器及存储装置
CN112565747B (zh) 一种解码、编码方法、装置及其设备
CN109618152B (zh) 深度划分编码方法、装置和电子设备
CN110662074B (zh) 一种运动矢量确定方法和设备
JP6728870B2 (ja) 画像圧縮装置、画像圧縮方法、及び画像圧縮プログラム
JP2020102669A (ja) 符号化装置及びプログラム
CN113259669B (zh) 编码方法、装置、电子设备及计算机可读存储介质
CN113242427B (zh) 一种基于vvc中自适应运动矢量精度的快速方法及装置
US20240236365A9 (en) Method and device for image motion compensation
CN115052166A (zh) 视频编码方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination