CN105208396A - 一种视频帧的编码及解码方法和装置 - Google Patents
一种视频帧的编码及解码方法和装置 Download PDFInfo
- Publication number
- CN105208396A CN105208396A CN201410280844.6A CN201410280844A CN105208396A CN 105208396 A CN105208396 A CN 105208396A CN 201410280844 A CN201410280844 A CN 201410280844A CN 105208396 A CN105208396 A CN 105208396A
- Authority
- CN
- China
- Prior art keywords
- unit
- current coded
- motion vector
- coding
- coded unit
- 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.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供了一种视频帧的编码以及解码方法和装置,在确定待编码的当前编码单元的运动矢量预测值后,确定包含当前编码单元的参考区域,为当前编码单元分配初始值,并在参考区域内进行运动估计,确定当前编码单元对应的运动矢量;根据运动矢量和运动矢量差值,对当前编码单元进行编码。在解码时,确定当前编码单元的运动矢量预测值,从当前编码单元中解析出运动矢量差值,根据运动矢量预测值和运动矢量差值,确定运动矢量;如运动矢量为(0,0),则为该运动向量指向的参考单元即当前编码单元分配初始值,设定当前编码单元的残差为零;将该初始值作为当前编码单元的重建值。该方法可以提高编码效率,降低编码时间,提高解码出的视频质量。
Description
技术领域
本申请涉及视频压缩技术领域,更具体的说是涉及一种视频帧的编码及解码方法和装置。
背景技术
在视频数据传输之前,一般需要对视频数据进行压缩编码。目前的视频编码标准中,原始视频帧被分为:帧内编码帧,也称为I帧(Intra-fram);单向预测帧,也称为P帧(Predictive-frame);以及双向预测帧,也称为B(Bidirectionallypredicted-frame)三种类型。
为了提高这三种视频帧的压缩比,人们提出了帧内块复制编码模式(Mode_INTRABC,Mode_IntraBlockCopy),即在视频帧编码时,也允许为当前编码块在其相邻区域中找到一个匹配块。虽然Mode_INTRABC的提出在一定程度上提高了视频帧的压缩比,但是目前基于Mode_INTRABC模式对视频帧进行编码,却可能存在着编码效率低的问题,进而也影响到后续解码出的视频质量。
发明内容
有鉴于此,本申请提供一种视频帧的编码及解码方法和装置,在编码过程中,保证视频帧的压缩比的前提下,提高对视频帧编码的编码效率,并提高解码出的视频质量。
为实现上述目的,本申请提供如下技术方案:一种视频帧的解码方法,包括:
获取待解码的视频帧中当前待解码的当前编码单元;
确定所述当前编码单元的运动矢量预测值;
对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值;
根据所述运动矢量差值和所述运动矢量预测值,确定所述当前编码单元对应的运动矢量;
当所述当前编码单元对应的运动矢量为(0,0)时,则确定所述当前编码单元为所述运动向量指向的参考单元,为所述参考单元分配初始值,并设定所述当前编码单元的残差为零;
依据所述参考单元的初始值和所述残差,将所述参考单元的初始值确定为所述当前编码单元的重建值。
优选的,所述确定所述当前编码单元的初始运动矢量预测值,包括:
将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
优选的,所述确定所述当前编码单元的运动矢量预测值,包括:
当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式编码的编码单元时,则将所述运动矢量预测值设定为(0,0)。
优选的,所述当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式进行解码的编码单元,包括:
当所述视频帧中与所述当前编码单元相邻且位于所述当前编码单元上方和左侧的已被解码的编码单元中,不存在采用所述MODE_INTRABC编码模式进行编码的编码单元。
优选的,还包括:
当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,则对与所述当前编码单元相邻且已被解码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值;或者,将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用所述MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
优选的,所述为所述参考单元分配初始值,包括:
将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行的重建值作为所述参考单元中各行的初始值;
或者,将所述视频帧中与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列的重建值作为所述参考单元中各列的初始值;
或者,将所述视频帧中与所述参考单元紧邻且已被解码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元左方编码单元最右一列的重建值作为所述参考单元中各列的重建值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元最下一行的重建值作为所述参考单元中各行的重建值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的重建值,对所述参考单元中各像素点进行二维平面插值,确定出所述参考单元的重建值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
优选的,当所述当前编码单元对应的运动矢量不为(0,0)时,则对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值的同时,还得到所述当前编码单元对应的残差;
则确定所述当前编码单元对应的运动矢量之后,还包括:确定所述运动矢量所指向的参考单元,并获取解码出的所述参考单元的重建值;
根据所述参考单元的重建值和所述解析出的残差,构建所述当前编码单元的重建值。
另一方面,本申请还提供了一种视频帧的编码方法,包括:
获取视频帧中当前待编码的当前编码单元;
确定所述当前编码单元的运动矢量预测值;
从所述视频帧中确定包含所述当前编码单元的参考区域,并为所述当前编码单元分配初始值;
根据所述参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在所述参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值;
根据所述运动矢量预测值和所述运动矢量差值,确定所述当前编码单元对应的运动矢量;
根据所述当前编码单元对应的运动矢量和所述运动矢量差值,对所述当前编码单元进行编码。
优选的,在从当前编码单元所在的视频帧中,确定包含所述当前编码单元的参考区域之前,还包括:
当所述视频帧中与所述当前编码单元相邻且已被编码的指定编码单元中,不存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元时,则将所述运动矢量预测值修改为(0,0)。
优选的,所述根据所述运动矢量和所述运动矢量差值,对所述当前编码单元进行编码,包括:
当所述当前编码单元对应的运动矢量为(0,0)时,将所述当前编码单元对应的残差设置为0;
根据所述运动矢量差值和所述残差,对所述当前编码单元进行编码。
优选的,所述确定所述当前编码单元的运动矢量预测值,包括:
将所述视频帧中,在所述当前编码单元之前最近一个采用MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值;
或者,将与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值。
优选的,所述为所述当前编码单元分配初始值,包括:
将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元中最下一行的重建值作为所述当前编码单元中各行的初始值;
或者,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元中最右一列的重建值作为所述当前编码单元中各列的初始值;
或者,将所述视频帧中与所述当前编码单元紧邻且已被编码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元最右一列的重建值作为所述当前编码单元各列的初始值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元最下一行的重建值作为所述当前编码单元各行的初始值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的中间值,对所述参考单元中各像素点进行二维平面插值,确定所述当前编码单元的初始值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
另一方面,本申请还提供了一种视频帧的解码装置,包括:
获取单元,用于获取待解码的视频帧中当前待解码的当前编码单元;
预测单元,用于确定所述当前编码单元的运动矢量预测值;
解析单元,用于对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值;
矢量确定单元,用于根据所述运动矢量差值和所述运动矢量预测值,确定所述当前编码单元对应的运动矢量;
参考确定单元,用于当所述当前编码单元对应的运动矢量为(0,0)时,则确定所述当前编码单元为所述运动向量指向的参考单元,为所述参考单元分配初始值,并设定所述当前编码单元的残差为零;
解码单元,用于依据所述参考单元的初始值和所述残差,将所述参考单元的初始值确定为所述当前编码单元的重建值。
优选的,所述解析单元,包括:
第一解析单元,用于将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
优选的,所述预测单元,包括:
第一预测单元,用于当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式编码的编码单元时,则将所述运动矢量预测值设定为(0,0)。
优选的,所述第一预测单元,包括:
第一预测子单元,用于当所述视频帧中与所述当前编码单元相邻且位于所述当前编码单元上方和左侧的已被解码的编码单元中,不存在采用所述MODE_INTRABC编码模式进行编码的编码单元时,将所述运动矢量预测值设定为(0,0)。
优选的,还包括:
第二预测单元,用于当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,则对与所述当前编码单元相邻且已被解码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值;
或者,第三预测单元,用于当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用所述MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
优选的,所述参考确定单元为所述参考单元分配初始值包括:
将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行的重建值作为所述参考单元各行的初始值;
或者,将所述视频帧中与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列的重建值作为所述参考单元各列的初始值;
或者,将所述视频帧中与所述参考单元紧邻且已被解码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元左方编码单元最右一列的重建值作为所述参考单元中各列的重建值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元最下一行的重建值作为所述参考单元中各行的重建值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的重建值,对所述参考单元中各像素点进行二维平面插值,确定出所述参考单元的重建值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
本申请还提供了一种视频帧的编码装置,包括:
获取单元,用于获取视频帧中当前待编码的当前编码单元;
矢量预测单元,用于确定所述当前编码单元的运动矢量预测值;
参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,并为所述当前编码单元分配初始值;
运动估计单元,用于根据所述参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在所述参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值;
矢量确定单元,用于根据所述运动矢量预测值和所述运动矢量差值,确定所述当前编码单元对应的运动矢量;
编码单元,用于根据所述当前编码单元对应的运动矢量和所述运动矢量差值,对所述当前编码单元进行编码。
优选的,还包括:
预测修改单元,用于在所述参考区域确定单元确定所述参考区域之前,如果所述视频帧中与所述当前编码单元相邻且已被编码的指定编码单元中,不存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元时,则将所述运动矢量预测值修改为(0,0)。
优选的,所述编码单元,包括:
残差设定单元,用于当所述当前编码单元对应的运动矢量为(0,0)时,将所述当前编码单元对应的残差设置为0;
编码子单元,用于根据所述运动矢量差值和所述残差,对所述当前编码单元进行编码。
优选的,所述矢量预测单元,包括:
第一矢量预测单元,用于将所述视频帧中,在所述当前编码单元之前最近一个采用MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值;
或者,第二矢量预测单元,用于将与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值。
优选的,所述参考区域确定单元,包括:
第一参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元中最下一行的重建值作为所述当前编码单元各行的初始值;
或者,第二参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元中最右一列的重建值作为所述当前编码单元各列的初始值;
或者,第三参考区域确定单元,用于将所述视频帧中与所述当前编码单元紧邻且已被编码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元最右一列的重建值作为所述当前编码单元各列的初始值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元最下一行的重建值作为所述当前编码单元各行的初始值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的中间值,对所述参考单元中各像素点进行二维平面插值,确定所述当前编码单元的初始值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
经由上述的技术方案可知,本申请在确定了当前编码单元的运动矢量预测值后,确定出的与该当前编码单元进行匹配的参考区域中包含了该当前编码单元,并为该当前编码单元分配了初始值,这样,即使当前编码单元的运动矢量预测值为(0,0),在进行匹配搜索时,也会以该当前编码单元对应的运动矢量预测值为起始点,避免了运动矢量的起始点与实际值偏差较大的情况,从而可以减少搜索时长,减少编码时间;同时,由于运动矢量的起始点与实际值偏差减小,也使得编码的运动矢量差值偏差降低,从而降低了编码码流上升,提高了编码效率。
同时,本申请的解码方法可以保证对通过本申请编码的视频进行解码,也使得解码出的视频的质量提高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请一种视频帧的编码方法一个实施例的流程示意图;
图2示出了本申请一种视频帧的编码方法另一个实施例的流程示意图;
图3示出了本申请中当前待编码单元与相邻编码单元的关系示意图;
图4示出了本申请一种视频帧的编码方法另一个实施例的流程示意图;
图5示出了本申请一种视频帧的解码方法一个实施例的流程示意图;
图6示出了本申请一种视频帧的解码方法另一个实施例的流程示意图;
图7示出了本申请一种视频帧的编码装置一个实施例的结构示意图;
图8示出了本申请一种视频帧的解码装置一个实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
发明人通过对现有基于Mode_INTRABC模式对视频帧进行压缩的过程进行研究发现:目前对视频帧进行编码时,同一视频帧内的不同编码单元所采用的编码模式有可能不同,如,有的编码单元采用帧内块复制Mode_INTRABC编码模式进行编码,有的编码单元采用的是帧内编码Mode_INTRA模式。当需要对某视频帧中当前待编码的当前编码单元采用Mode_INTRABC模式进行编码时,则需要在该视频帧内当前编码单元的周围区域内搜索匹配块。但是在目前搜索匹配块的过程中,如果该当前编码单元对应的运动矢量预测值的水平坐标和垂直坐标均为零时,则会自动将运动矢量的预测值变为与当前编码单元相邻且位于当前编码块左方的相邻编码单元的运动矢量,这样就可能造成运动矢量的起始点与实际值偏差过大,如,相邻编码单元均为采用Mode_INTRA模式进行编码,则很难搜索到采用Mode_INTRABC模式且与该当前编码单元匹配的匹配单元,从而导致搜索时间长,且由于运动矢量的起始点与实际值偏差过大,使得编码的运动矢量差值偏差较大,引起编码码流上升,也降低了编码效率。
为了解决如上问题,本申请提供了一种视频帧的编码方法和解码方法。
下面首先对视频帧的解码方法进行介绍。
参见图1,其示出了本申请一种视频帧的编码方法一个实施例的流程示意图,本实施例的方法可以包括:
101,获取视频帧中当前待编码的当前编码单元。
可以理解的是,视频帧可以包括I帧、P帧、B帧这三种类型的视频帧中的任意一种。
在实际对视频帧进行编码时,一般将视频帧切分为多个互补重叠的最大区域,每个区域可以称为一个最大编码单元(LCU,LargeCodeUnit),将最大的基本区域再进一步划分为更小的区域,如,通过四叉树将最大基本单元进行划分,则得到的基本编码单元(CU,CodeUnit)。在进行编码时,是依次对划分出的各个编码单元进行编码。
为了便于区别,在本申请实施例中,将需要编码的视频帧中当前时刻待编码的编码单元称为当前编码单元。
102,确定该当前编码单元的运动矢量预测值。
本申请实施例中对于确定该当前编码单元的运动矢量预测值的具体方式不做限定,现有的以及其他任意确定运动矢量预测值的方式均适用于本申请。
103,从该视频帧中确定包含该当前编码单元的参考区域,并为该当前编码单元分配初始值。
其中,参考区域包含有多个编码单元,该参考区域是从该视频帧中选取出的,用于与当前编码单元进行匹配的区域,以便从该参考区域中进行运动估计,搜索出与该当前编码单元匹配程度最高的编码单元。
参考区域的确定方式与现有的相似,只不过与现有的不同是,在本申请中该参考区域可以包含有该当前编码单元所在位置,而由于该当前编码单元尚未被编码,该当前编码单元没有对应的重建值,而在参考区域进行搜索的过程中,却需要将该当前编码单元的初始值与该参考区域中各个编码单元的重建值进行比较,为了便于后续的运动估计,需要为该当前编码单元分配一个初始值。
其中,该初始值相当于该当前编码单元在该参考区域中预估的编码值,即预估的重建值。
104,根据该参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在该参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值。
由于该参考区域内包含了该当前编码单元,会综合该当前编码单元的运动矢量预测值来在参考区域中来确定运动估计的起点,这样,当该当前编码单元的运动矢量预测值为(0,0)时,则可以将该当前编码单元作为运动估计的搜索起点,而无需改变搜索起点,有利于减少搜索时长,提高搜索匹配精度,进而最终减少运动估计得到的运动矢量差值的偏差。
其中,确定了参考区域后,参考区域内该当前编码单元的初始值作为运动估计过程中,该当前编码单元在参考区域内的重建值,进而进行相应的匹配。对于在参考区域中运动估计的具体过程可以与现有的方式相似,在此不再赘述。
105,根据运动矢量预测值和运动矢量差值,确定当前编码单元对应的运动矢量。
其中,运动矢量等于所述运动矢量预测值和运动矢量差值之和。
106,根据当前编码单元对应的运动矢量和运动矢量差值,对当前编码单元进行编码。
得到当前编码单元对应的运动矢量和运动矢量差值后,依据该运动矢量和运动矢量差值对当前编码单元进行编码的过程与现有的方式相似。
具体的,该运动矢量实际上是该当前编码单元与匹配编码单元之间的相对位移,因此,运动矢量实际上指向了一个编码单元,即该匹配编码单元。其中,该匹配编码单元即运动估计过程中匹配出的与该当前编码单元相似的编码单元。确定该当前编码单元的原始值与该匹配编码单元的重建值之间的差值,也即得到了该当前编码单元所对应的残差,根据残差和运动矢量差值便可以进行当前编码单元的编码。
本申请实施例中,在确定了当前编码单元的运动矢量预测值后,确定出的与该当前编码单元进行匹配的参考区域中包含了该当前编码单元,并为该当前编码单元分配了初始值,这样,即使当前编码单元的运动矢量预测值为(0,0),在进行匹配搜索时,也会以该当前编码单元对应的运动矢量预测值为起始点,避免了运动矢量的起始点与实际值偏差较大的情况,从而可以减少搜索时长,降低编码时间;同时,由于运动矢量的起始点与实际值偏差减小,也使得编码的运动矢量差值偏差降低,从而降低了编码码流上升,也提高了编码效率。
可以理解的是,在实际应用中,当该当前编码单元的运动矢量预测值为(0,0)或者是仅仅(0,0)时,进行运动匹配的搜索起点才有可能是从当前编码单元开始,因此,可选的,当确定出的当前编码单元的运动矢量预测值与(0,0)之间的位移量小于预设值时,则在确定出的参考区域中包含该当前编码单元。
在本申请以上任意一个实施例中,为该当前编码单元确定运动矢量预测值的方式可以有多种。
可选的,其中一种确定该运动矢量预测值的方式可以为:将该视频帧中,在当前编码单元之前最近一个采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。进一步的,如果在当前编码单元之前,该视频帧中没有采用MODE_INTRABC编码模式编码的编码单元,则可以将该当前编码单元的运动矢量预测值设为(0,0)。
本申请的编码方式实际上也是在MODE_INTRABC编码模式上进行了改进,因此,该视频帧中最近一次采用该MODE_INTRABC编码模式进行编码的编码单元与该当前编码单元具有一定的相似性,可以通过该编码单元对该当前编码单元进行预测。
可选的,另一种确定该运动矢量预测值的方式可以为:对与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值。也就是说,从与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量中,分别选取处于中间的横坐标和处于中间的纵坐标,将选取出的横坐标和纵坐标构成的运动矢量作为该当前编码单元的运动矢量的预测值。例如,假设与该当前编码单元相邻,且已被编码的编码单元有三个,这三个所对应的运动矢量分别为(x1,y1),(x2,y2)和(x3,y3),其中,x1>x3>X2,y1>y2>y3,则这三个运动矢量的横坐标中x3为中值,而纵坐标中y2为中值,则该运动矢量预测值为(x3,y2)。
参见图2,其示出了本申请一种视频帧的编码方法另一个实施例的流程示意图,本实施例的方法可以包括:
201,获取视频帧中当前待编码的当前编码单元。
202,确定该当前编码单元的运动矢量预测值。
当前编码单元的运动矢量预测值可以采用本申请提到的任意方式
203,判断该视频帧中与当前编码单元相邻且已被编码的指定编码单元中,是否存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元,如果否,则进入步骤204,如果是,则直接进入步骤205;
其中,该视频帧中已被编码且与该当前编码单元相邻的编码单元可以有多个,如,根据对视频帧的编码原则,一般是根据从左到右,且从上到下的顺序,视频帧中依次排列的编码单元进行编码,这样,与该当前编码单元相邻,且已被编码的编码单元则包括四个,如图3所示,在该图3中示出了视频帧的一部分,在图中当前编码单元CU1的左侧,左上方、上方和右上方的编码单元,即编码单元B1、A1、A2和A3为与该当前编码单元CU1相邻且已被编码的编码单元。
可以理解的是,相邻编码单元的图像相关性较大,但是当该当前编码单元需要采用MODE_INTRABC编码模式进行编码,而如果与该当前编码单元相邻的已被编码的指定编码单元均为采用MODE_INTRABC编码模式进行编码,则这些指定编码单元与该当前编码单元的相似性较低,则前面预测的该当前编码单元的运动矢量预测值的偏差也较大,因此,在本申请实施例中增加了该判断步骤。
如,当将该视频帧中,在当前编码单元之前最近一个采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为当前编码单元的运动矢量预测值时,由于与该当前编码单元相邻指定编码单元均未采用MODE_INTRABC编码模式进行编码,则说明最近一个采用MODE_INTRABC编码模式进行编码的编码单元与该当前编码单元的距离较远,从而当前编码单元与该最近一次采用MODE_INTRABC编码模式进行编码的编码单元之间的相似性也较低,如果将该编码单元的运动矢量作为该当前编码单元的运动矢量预测值进行赋值,则会使得该运动矢量预测值的误差较大,进而影响到后续编码精度。
又如,将与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将选取的中值作为所述当前编码单元的运动矢量预测值时,也会由于相邻编码单元与该当前编码单元的相似性差,而导致该运动矢量预测值的误差较大。
其中,该指定编码单元可以根据需要设定,如可以将与该当前编码单元相邻且已被编码的编码单元均作为指定的编码单元。
可选的,考虑到与当前编码单元相邻,且位于当前编码单元左侧和上方的编码单元为已被编码,且该位于当前编码单元上位和左侧的编码单元与该当前编码单元的相关性相对较大,则可以设定该指定编码单元包括:与该当前编码单元相邻且位于该当前编码单元上方的编码单元,以及与该当前编码单元相邻且位于该当前编码单元左侧的编码单元。
204,当该视频帧中与该当前编码单元相邻且已被编码的指定编码单元中,不存在采用该MODE_INTRABC编码模式进行编码的编码单元时,则将运动矢量预测值修改为(0,0)。
如,当该指定编码单元均采用Mode_INTRA编码模式进行的编码,则会将该当前编码单元的运动矢量预测值修改为(0,0),以便后续可以以当前编码单元为搜索起点进行匹配搜索,进一步提高搜索精度。
205,从该视频帧中确定包含该当前编码单元的参考区域,并为该当前编码单元分配初始值。
206,根据该参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在该参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值。
207,根据运动矢量预测值和运动矢量差值,确定当前编码单元对应的运动矢量。
208,根据当前编码单元对应的运动矢量和运动矢量差值,对当前编码单元进行编码。
在本申请任意一个编码方法的实施例中,考虑到在视频帧中,该当前编码单元被编码后得到的重建值与该当前编码单元相邻的编码单元的重建值较为接近,则在确定了参考区域后,可以依据与该当前编码单元相邻且已被编码的编码单元的重建值,为该当前编码单元分配初始值。
可选的,可以将该视频帧中与当前编码单元紧邻且位于该当前编码单元上方的编码单元中最下面一行的重建值作为所述当前编码单元各行的初始值。可以理解的是,编码单元实际上可以是包含多个像素点的区别,这些像素点成行列排布,对编码单元进行编码后,该编码单元每个像素点均对应有一个重建值,相应的,该编码单元中由多个像素点排列成的行或列也有对应的重建值。由于与该编码单元相邻且位于该编码单元上方的编码单元中最下面一行最邻近该当前编码单元,所以可以将该最下面一行对应的重建值作为该当前编码单元各行的初始值。也就是说,将该最下面一行中各像素点的重建值进行复制,然后依次对该当前编码单元各行的点进行赋值,从而使得该当前编码单元中同一列的初始值相同,且该当前编码单元每一行中各点的重建值均与该当前编码单元上方的编码单元中最下面一行中各点重建值相同。
可选的,也可以是将所述视频帧中与所述当前编码单元紧邻且位于该当前编码单元左侧的编码单元中最右一列的重建值作为所述当前编码单元各列的初始值。
可选的,也可以是先从该视频帧中与所述参考单元紧邻且已被编码的编码单元中确定一个目标编码单元,该目标编码单元可以为位于该当前编码单元上方或者左侧的编码单元。则可以先对该目标编码单元对应的运动矢量的横坐标和纵坐标进行比较。如果该横坐标大于纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元最右一列的重建值作为所述当前编码单元各列的初始值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元最下一行的重建值作为所述当前编码单元各行的初始值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的中间值,对所述参考单元中各像素点进行二维平面插值,确定所述当前编码单元的初始值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
在现有的编码方法中,如果最终计算出的该当前编码单元对应的运动矢量为(0,0),则无法继续对该当前编码单元进行编码。可选的,在本申请实施例中,当该当前编码单元对应的运动矢量为(0,0)时,可以将该当前编码单元对应的残差设置为0。也就是说,当该当前编码单元对应的运动矢量为(0,0)时,则采用跳跃Skip编码模式进行编码,将该当前编码单元的对应的残差设置为零。则,在对该当前编码单元进行编码时,则可以根据该运动矢量差值和该设定的残差,对当前编码单元进行编码。
为了便于理解,下面以一种优选方式对本申请的编码方式进行介绍。参见图4,其示出了本申请一种视频帧的编码方法另一个实施例的流程示意图,可以理解的是,本申请仅仅是一种优选方式,但并不是唯一的方式。本实施例的方法可以包括:
401,获取视频帧中当前待编码的当前编码单元。
402,将该视频帧中,在当前编码单元之前最近一个采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
403,判断该视频帧中与当前编码单元相邻且已被编码的指定编码单元中,是否存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元,如果否,则进入步骤404,如果是,则直接进入步骤405;
404,当视频帧中与该当前编码单元相邻且已被编码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式进行编码的编码单元时,则将该运动矢量预测值修改为(0,0)。
405,从该视频帧中确定包含该当前编码单元的参考区域,并为该当前编码单元分配初始值。
406,根据该参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在该参考区域内进行运动估计,确定出该当前编码对应的运动矢量差值。
407,根据运动矢量预测值和运动矢量差值,确定当前编码单元对应的运动矢量。
408,当该当前编码单元对应的运动矢量为(0,0)时,将该当前编码单元对应的残差设置为0。
409,根据该运动矢量差值和残差,对该当前编码单元进行编码。
当然,如果该运动矢量不是(0,0)时,则可以先确定该运动矢量所指向的编码单元的重建值,利用该编码单元的重建值与该当前编码单元的原始值,确定该当前编码单元的残差,并利用计算出的残差和该运动矢量差值,对该当前编码单元进行编码。
可选的,在以上任意一个编码方法的实施例中,对当前编码单元的编码可以为熵编码。
为了对采用本申请的视频帧的编码方法进行编码的视频帧进行解码,本申请还提供了一种视频帧的解码方法。本申请的视频帧的解码方法对基于本申请的视频帧的编码方法为进行编码的视频帧进行解码。通过该解码方法,能够保证采用本申请的视频帧的编码方法压缩出的视频帧能够被接收端进行解码,以提高最终播放的视频的质量。
参见图5,其示出了本申请一种视频帧的解码方法一个实施例的流程示意图,本实施例的方法可以包括:
501,获取待解码的视频帧中当前待解码的当前编码单元。
在视频帧的解码方法的实施例中,该当前编码单元均是指该待解码的视频帧中,当前时刻需要被解码的编码单元。其中,在解码之前该当前编码单元已经被编码。
502,确定该当前编码单元的运动矢量预测值。
503,对该当前编码单元进行解析,得到该当前编码单元对应的运动矢量差值。
在对编码单元进行编码后,编码后的编码单元中会包含有该编码单元对应的运动矢量。在该步骤中对该当前编码进行解析,则也可以解码出该当前编码单元的运动矢量差值。
对当前编码单元进行解析的过程可以与现有的方式相同,如可以采用熵解码时,从该待解码的该当前编码单元中解码出该运动矢量差值。
可以理解的是,在实际的解码过程中,该步骤502和步骤503的操作顺序并不限于图5所示,这两个步骤的操作顺序可以互换,也可以同时执行这两个步骤的操作。
504,根据该运动矢量差值和运动矢量预测值,确定该当前编码单元对应的运动矢量。
其中,运动矢量等于该运动矢量差值和该运动矢量预测值之和。
505,当该当前编码单元对应的运动矢量为(0,0)时,则确定该当前编码单元为该运动向量指向的参考单元,为该参考单元分配初始值,并设定该当前编码单元的残差为零。
当解码过程中,确定该当前编码单元对应的运动矢量为(0,0)时,则说明在对该当前编码单元进行编码,并在该参考区域中进行运动估计时,确定出的与该当前编码单元匹配的参考单元的位置即为该当前编码单元的位置,也就是说,该运动矢量所指向的参考单元为该当前编码单元。
与本申请的编码过程对应,如果运动矢量指向的参考单元的位置为该当前编码单元所在的位置,则说明在编码过程中是通过为该当前编码单元分配初始值后,在参考区域进行运动估计将该当前编码单元确定为该当前编码单元对应的参考单元。相应的,在解码过程中,如果该当前编码单元对应的运动矢量指向的参考单元为该当前编码单元时,则为该参考单元分配初始值。
同样的,由于在本申请的编码过程中,当该当前编码单元对应的运动矢量为(0,0)时,则采用跳跃模式Skip编码模式对该当前编码模式进行编码,即将该当前编码单元对应的残差设为零。则在解码过程中,如果该当前编码单元对应的运动矢量为(0,0)时,则设定该当前编码单元对应的残差为零。
506,依据该参考单元的初始值和该残差,将该参考单元的初始值确定为该当前编码单元的重建值。
由于该当前编码单元对应的残差为零,则该参考单元对应的初始值即为该当前编码单元的重建值。
通过本申请实施例的视频帧的解码方法可以实现对本申请的视频帧的编码方法编码出视频帧进行解码,从而保证编码后的视频流能够被正常播放,同时由于采用本申请的编码方法对视频帧进行编码,可以提高编码精度和编码效率,从而使得有利于提高解码出的视频的质量。
进一步的,在本申请实施例中,当该当前编码单元对应的运动矢量不为(0,0)时,则对当前编码单元进行解析时,除了得到该当前编码单元对应的运动矢量差值的同时,还可以得到该当前编码单元对应的残差。
相应的,确定该当前编码单元对应的运动矢量之后,还包括:确定所述运动矢量所指向的参考单元,并获取解码出的该参考单元的重建值。
则在确定该当前编码单元的重建值时,可以根据所述参考单元的重建值和所述解析出的残差,构建出该当前编码单元的重建值。
在本申请的解码方法中,确定该当前解码单元的初始运动矢量预测值的过程与编码过程中确定该当前编码单元对应的初始运动矢量预测值的方式相似。
可选的,一种方式可以将该视频帧中,在该当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
可选的,另一种方式可以对与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将该中值作为所述当前编码单元的运动矢量预测值。
参见图6,其示出了本申请一种视频帧的解码方法另一个实施例的流程示意图,本申请实施例的方法可以包括:
601,获取待解码的视频帧中当前待解码的当前编码单元。
602,当视频帧中与该当前编码单元相邻且已被解码的指定编码单元中,不存在采用该MODE_INTRABC编码模式编码的编码单元时,则将该当前编码单元的运动矢量预测值设定为(0,0)。
在本实施例中的解码方法中,在确定该当前编码单元的运动矢量预测值之前,还需要判断该视频帧中,与该当前编码单元相邻且已被编码的指定编码单元中是否存在采用该该MODE_INTRABC编码模式编码的编码单元。如果该指定单元中不存在该MODE_INTRABC编码模式编码的编码单元,则采用前面所述的方式来确定当前编码单元的运动矢量预测值,会使得该运动矢量预测值的误差较大,因此,与编码方法相对应,在该种情况,会将该当前编码单元的运动矢量预测值设定为(0,0)。
其中,该指定编码单元可以是与该当前编码单元相邻且位于已被解码的编码单元中的任意一个或多个。可选的,该指定编码单元为该视频帧中与该当前编码单元相邻且位于当前编码单元上方和左侧的已被解码的编码单元。
603,对该当前编码单元进行解析,得到该当前编码单元对应的运动矢量差值。
604,根据该运动矢量差值和运动矢量预测值,确定该当前编码单元对应的运动矢量。
605,当该当前编码单元对应的运动矢量为(0,0)时,则确定该当前编码单元为该运动向量指向的参考单元,为该参考单元分配初始值,并设定该当前编码单元的残差为零。
606,依据该参考单元的初始值和该残差,将该参考单元的初始值确定为该当前编码单元的重建值。
当然,在本实施例中还可以包括:当该指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,则将与所述当前编码单元相邻且已被解码的任意一个编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值;或者,将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
当然,在本申请实施例中,也可以先采用前面所述的确定该当前编码单元的运动矢量预测值的方式,确定该运动矢量预测值,然后再判断该该视频帧中,与该当前编码单元相邻且已被编码的指定编码单元中是否存在采用该该MODE_INTRABC编码模式编码的编码单元。如果该指定单元中不存在采用该MODE_INTRABC编码模式编码的编码单元,则将确定出的运动矢量预测值修改为(0,0)
与编码方法相对应,在本申请任意一个视频帧的解码方法的实施例中,可以依据与该当前编码单元相邻且已被解码的编码单元的重建值,为该参考单元分配初始值。
可选的,一种确定该初始值的方式可以为:将该视频帧中与该参考单元紧邻且位于参考单元上方的编码单元中最下一行的重建值作为该参考单元各行的初始值。
可选的,另一种确定该初始值的方式可以为:将该视频帧中与该参考单元紧邻且位于该参考单元左侧的编码单元中最右一列的重建值作为该参考单元各列的初始值。
可选的,也可以是先从该视频帧中与该参考单元紧邻且已被解码的编码单元中确定一个目标编码单元,该目标编码单元可以为位于该当前编码单元上方或者左侧的编码单元。则可以先对该目标编码单元对应的运动矢量的横坐标和纵坐标进行比较。如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元左方编码单元最右一列的重建值作为所述参考单元中各列的重建值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元最下一行的重建值作为所述参考单元中各行的重建值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的重建值,对所述参考单元中各像素点进行二维平面插值,确定出所述参考单元的重建值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
对应本申请的一种视频帧的编码方法,本申请还提供了一种视频帧的编码装置。参见图7,示出了本申请一种视频帧的编码装置一个实施例的结构示意图,本实施例的装置可以包括:
获取单元701,用于获取视频帧中当前待编码的当前编码单元;
矢量预测单元702,用于确定所述当前编码单元的运动矢量预测值;
参考区域确定单元703,用于从所述视频帧中确定包含所述当前编码单元的参考区域,并为所述当前编码单元分配初始值;
运动估计单元704,用于根据所述参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在所述参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值;
矢量确定单元705,用于根据所述运动矢量预测值和所述运动矢量差值,确定所述当前编码单元对应的运动矢量;
编码单元706,用于根据所述当前编码单元对应的运动矢量和所述运动矢量差值,对所述当前编码单元进行编码。
可选的,在本申请另一个视频帧的编码装置的实施例中,该装置还可以包括:
预测修改单元,用于在所述参考区域确定单元确定所述参考区域之前,如果所述视频帧中与所述当前编码单元相邻且已被编码的指定编码单元中,不存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元时,则将所述运动矢量预测值修改为(0,0)。
其中,该指定编码单元可以为视频帧中与所述当前编码单元相邻且位于该当前编码单元上方和左侧的编码单元。
可选的,在本申请的视频帧的编码装置中,该编码装置中的编码单元可以包括:
残差设定单元,用于当所述当前编码单元对应的运动矢量为(0,0)时,将所述当前编码单元对应的残差设置为0;
编码子单元,用于根据所述运动矢量差值和所述残差,对所述当前编码单元进行编码。
在以上任意一个实施例的编码装置中,该矢量预测单元,可以包括:
第一矢量预测单元,用于将所述视频帧中,在所述当前编码单元之前最近一个采用MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值;
或者,第二矢量预测单元,用于将与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值。
在以上任意一个实施例的编码装置中,所述参考区域确定单元,可以包括:
第一参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元中最下一行的重建值作为所述当前编码单元各行的初始值;
或者,第二参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元中最右一列的重建值作为所述当前编码单元各列的初始值;
或者,第三参考区域确定单元,用于将所述视频帧中与所述当前编码单元紧邻且已被编码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元最右一列的重建值作为所述当前编码单元各列的初始值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元最下一行的重建值作为所述当前编码单元各行的初始值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的中间值,对所述参考单元中各像素点进行二维平面插值,确定所述当前编码单元的初始值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
对应本申请的一种视频帧的解码方法,本申请还提供了一种视频帧的解码装置。
参见图8,其示出了本申请一种视频帧的解码装置一个实施例的结构示意图,本实施例的装置可以包括:
获取单元801,用于获取待解码的视频帧中当前待解码的当前编码单元;
预测单元802,用于确定所述当前编码单元的运动矢量预测值;
解析单元803,用于对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值;
矢量确定单元804,用于根据所述运动矢量差值和所述运动矢量预测值,确定所述当前编码单元对应的运动矢量;
参考确定单元805,用于当所述当前编码单元对应的运动矢量为(0,0)时,则确定所述当前编码单元为所述运动向量指向的参考单元,为所述参考单元分配初始值,并设定所述当前编码单元的残差为零;
解码单元806,用于依据所述参考单元的初始值和所述残差,将所述参考单元的初始值确定为所述当前编码单元的重建值。
可选的,在本申请的解码装置的另一个实施例中,该解析单元可以包括:
第一解析单元,用于将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
可选的,在在本申请的解码装置的又一个实施例中,该预测单元,包括:
第一预测单元,用于当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式编码的编码单元时,则将所述运动矢量预测值设定为(0,0)。
进一步的,该第一预测单元,可以包括:
第一预测子单元,用于当所述视频帧中与所述当前编码单元相邻且位于所述当前编码单元上方和左侧的已被解码的编码单元中,不存在采用所述MODE_INTRABC编码模式进行编码的编码单元时,将所述运动矢量预测值设定为(0,0)。
可选的,在该解码装置包括该第一预测单元的基础上,该解码装置还可以包括:
第二预测单元,用于当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,则对与所述当前编码单元相邻且已被解码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值;
或者,第三预测单元,用于当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用所述MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
可选的,在本申请以上任意一个解码装置的实施例中该参考确定单元为所述参考单元分配初始值包括:
将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行的重建值作为所述参考单元各行的初始值;
或者,将所述视频帧中与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列的重建值作为所述参考单元各列的初始值;
或者,将所述视频帧中与所述参考单元紧邻且已被解码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元左方编码单元最右一列的重建值作为所述参考单元中各列的重建值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元最下一行的重建值作为所述参考单元中各行的重建值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的重建值,对所述参考单元中各像素点进行二维平面插值,确定出所述参考单元的重建值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
可选的,在本申请任意一个解码装置的实施例中,当所述当前编码单元对应的运动矢量不为(0,0)时,该解析单元对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值的同时,还得到所述当前编码单元对应的残差;
则解码单元,包括:
参考信息获取单元,用于确定所述运动矢量所指向的参考单元,并获取解码出的所述参考单元的重建值;
解码子单元,用于根据所述参考单元的重建值和所述解析出的残差,构建所述当前编码单元的重建值。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (23)
1.一种视频帧的解码方法,其特征在于,包括:
获取待解码的视频帧中当前待解码的当前编码单元;
确定所述当前编码单元的运动矢量预测值;
对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值;
根据所述运动矢量差值和所述运动矢量预测值,确定所述当前编码单元对应的运动矢量;
当所述当前编码单元对应的运动矢量为(0,0)时,则确定所述当前编码单元为所述运动向量指向的参考单元,为所述参考单元分配初始值,并设定所述当前编码单元的残差为零;
依据所述参考单元的初始值和所述残差,将所述参考单元的初始值确定为所述当前编码单元的重建值。
2.根据权利要求1所述的方法,其特征在于,所述确定所述当前编码单元的初始运动矢量预测值,包括:
将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
3.根据权利要求1所述的方法,其特征在于,所述确定所述当前编码单元的运动矢量预测值,包括:
当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式编码的编码单元时,则将所述运动矢量预测值设定为(0,0)。
4.根据权利要求3所述的方法,其特征在于,所述当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式进行解码的编码单元,包括:
当所述视频帧中与所述当前编码单元相邻且位于所述当前编码单元上方和左侧的已被解码的编码单元中,不存在采用所述MODE_INTRABC编码模式进行编码的编码单元。
5.根据权利要求3或4所述的方法,其特征在于,还包括:
当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,则对与所述当前编码单元相邻且已被解码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值;或者,将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用所述MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
6.根据权利要求1所述的方法,其特征在于,所述为所述参考单元分配初始值,包括:
将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行的重建值作为所述参考单元中各行的初始值;
或者,将所述视频帧中与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列的重建值作为所述参考单元中各列的初始值;
或者,将所述视频帧中与所述参考单元紧邻且已被解码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元左方编码单元最右一列的重建值作为所述参考单元中各列的重建值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元最下一行的重建值作为所述参考单元中各行的重建值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的重建值,对所述参考单元中各像素点进行二维平面插值,确定出所述参考单元的重建值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
7.根据权利要求1所述的方法,其特征在于,当所述当前编码单元对应的运动矢量不为(0,0)时,则对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值的同时,还得到所述当前编码单元对应的残差;
则确定所述当前编码单元对应的运动矢量之后,还包括:确定所述运动矢量所指向的参考单元,并获取解码出的所述参考单元的重建值;
根据所述参考单元的重建值和所述解析出的残差,构建所述当前编码单元的重建值。
8.一种视频帧的编码方法,其特征在于,包括:
获取视频帧中当前待编码的当前编码单元;
确定所述当前编码单元的运动矢量预测值;
从所述视频帧中确定包含所述当前编码单元的参考区域,并为所述当前编码单元分配初始值;
根据所述参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在所述参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值;
根据所述运动矢量预测值和所述运动矢量差值,确定所述当前编码单元对应的运动矢量;
根据所述当前编码单元对应的运动矢量和所述运动矢量差值,对所述当前编码单元进行编码。
9.根据权利要求8所述的方法,其特征在于,在从当前编码单元所在的视频帧中,确定包含所述当前编码单元的参考区域之前,还包括:
当所述视频帧中与所述当前编码单元相邻且已被编码的指定编码单元中,不存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元时,则将所述运动矢量预测值修改为(0,0)。
10.根据权利要求8所述的方法,其特征在于,所述根据所述运动矢量和所述运动矢量差值,对所述当前编码单元进行编码,包括:
当所述当前编码单元对应的运动矢量为(0,0)时,将所述当前编码单元对应的残差设置为0;
根据所述运动矢量差值和所述残差,对所述当前编码单元进行编码。
11.根据权利要求8或9所述的方法,其特征在于,所述确定所述当前编码单元的运动矢量预测值,包括:
将所述视频帧中,在所述当前编码单元之前最近一个采用MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值;
或者,将与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值。
12.根据权利要求8所述的方法,其特征在于,所述为所述当前编码单元分配初始值,包括:
将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元中最下一行的重建值作为所述当前编码单元中各行的初始值;
或者,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元中最右一列的重建值作为所述当前编码单元中各列的初始值;
或者,将所述视频帧中与所述当前编码单元紧邻且已被编码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元最右一列的重建值作为所述当前编码单元各列的初始值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元最下一行的重建值作为所述当前编码单元各行的初始值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的中间值,对所述参考单元中各像素点进行二维平面插值,确定所述当前编码单元的初始值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
13.一种视频帧的解码装置,其特征在于,包括:
获取单元,用于获取待解码的视频帧中当前待解码的当前编码单元;
预测单元,用于确定所述当前编码单元的运动矢量预测值;
解析单元,用于对所述当前编码单元进行解析,得到所述当前编码单元对应的运动矢量差值;
矢量确定单元,用于根据所述运动矢量差值和所述运动矢量预测值,确定所述当前编码单元对应的运动矢量;
参考确定单元,用于当所述当前编码单元对应的运动矢量为(0,0)时,则确定所述当前编码单元为所述运动向量指向的参考单元,为所述参考单元分配初始值,并设定所述当前编码单元的残差为零;
解码单元,用于依据所述参考单元的初始值和所述残差,将所述参考单元的初始值确定为所述当前编码单元的重建值。
14.根据权利要求13所述的装置,其特征在于,所述解析单元,包括:
第一解析单元,用于将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用帧内块复制MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
15.根据权利要求13所述的装置,其特征在于,所述预测单元,包括:
第一预测单元,用于当所述视频帧中与所述当前编码单元相邻且已被解码的指定编码单元中,不存在采用所述MODE_INTRABC编码模式编码的编码单元时,则将所述运动矢量预测值设定为(0,0)。
16.根据权利要求15所述的装置,其特征在于,所述第一预测单元,包括:
第一预测子单元,用于当所述视频帧中与所述当前编码单元相邻且位于所述当前编码单元上方和左侧的已被解码的编码单元中,不存在采用所述MODE_INTRABC编码模式进行编码的编码单元时,将所述运动矢量预测值设定为(0,0)。
17.根据权利要求15或16所述的装置,其特征在于,还包括:
第二预测单元,用于当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,则对与所述当前编码单元相邻且已被解码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值;
或者,第三预测单元,用于当所述指定编码单元中存在采用所述MODE_INTRABC编码模式编码的编码单元时,将所述视频帧中,在所述当前编码单元之前最近一个解码出的采用所述MODE_INTRABC编码模式编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值。
18.根据权利要求13所述的装置,其特征在于,所述参考确定单元为所述参考单元分配初始值包括:
将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行的重建值作为所述参考单元各行的初始值;
或者,将所述视频帧中与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列的重建值作为所述参考单元各列的初始值;
或者,将所述视频帧中与所述参考单元紧邻且已被解码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元左方编码单元最右一列的重建值作为所述参考单元中各列的重建值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述参考单元紧邻且位于所述参考单元上方的编码单元最下一行的重建值作为所述参考单元中各行的重建值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的重建值,对所述参考单元中各像素点进行二维平面插值,确定出所述参考单元的重建值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
19.一种视频帧的编码装置,其特征在于,包括:
获取单元,用于获取视频帧中当前待编码的当前编码单元;
矢量预测单元,用于确定所述当前编码单元的运动矢量预测值;
参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,并为所述当前编码单元分配初始值;
运动估计单元,用于根据所述参考区域中当前编码单元的初始值以及当前编码单元之外的其他编码单元的重建值,在所述参考区域内进行运动估计,确定出所述当前编码对应的运动矢量差值;
矢量确定单元,用于根据所述运动矢量预测值和所述运动矢量差值,确定所述当前编码单元对应的运动矢量;
编码单元,用于根据所述当前编码单元对应的运动矢量和所述运动矢量差值,对所述当前编码单元进行编码。
20.根据权利要求19所述的装置,其特征在于,还包括:
预测修改单元,用于在所述参考区域确定单元确定所述参考区域之前,如果所述视频帧中与所述当前编码单元相邻且已被编码的指定编码单元中,不存在采用帧内块复制MODE_INTRABC编码模式进行编码的编码单元时,则将所述运动矢量预测值修改为(0,0)。
21.根据权利要求19所述的装置,其特征在于,所述编码单元,包括:
残差设定单元,用于当所述当前编码单元对应的运动矢量为(0,0)时,将所述当前编码单元对应的残差设置为0;
编码子单元,用于根据所述运动矢量差值和所述残差,对所述当前编码单元进行编码。
22.根据权利要求19或20所述的装置,其特征在于,所述矢量预测单元,包括:
第一矢量预测单元,用于将所述视频帧中,在所述当前编码单元之前最近一个采用MODE_INTRABC编码模式进行编码的编码单元所对应的运动矢量作为所述当前编码单元的运动矢量预测值;
或者,第二矢量预测单元,用于将与所述当前编码单元相邻且已被编码的所有编码单元所对应的运动矢量取中值,将所述中值作为所述当前编码单元的运动矢量预测值。
23.根据权利要求19所述的装置,其特征在于,所述参考区域确定单元,包括:
第一参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元中最下一行的重建值作为所述当前编码单元各行的初始值;
或者,第二参考区域确定单元,用于从所述视频帧中确定包含所述当前编码单元的参考区域,将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元中最右一列的重建值作为所述当前编码单元各列的初始值;
或者,第三参考区域确定单元,用于将所述视频帧中与所述当前编码单元紧邻且已被编码的目标编码单元运动矢量的横坐标和纵坐标进行比较,如果所述横坐标大于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元左侧的编码单元最右一列的重建值作为所述当前编码单元各列的初始值;如果所述横坐标小于所述纵坐标,则将所述视频帧中与所述当前编码单元紧邻且位于所述当前编码单元上方的编码单元最下一行的重建值作为所述当前编码单元各行的初始值;如果所述横坐标等于所述纵坐标,则根据与所述参考单元紧邻且位于所述参考单元上方的编码单元中最下一行中各像素点的重建值,以及与所述参考单元紧邻且位于所述参考单元左侧的编码单元中最右一列中各像素点的中间值,对所述参考单元中各像素点进行二维平面插值,确定所述当前编码单元的初始值;其中,所述目标编码单元为位于所述当前编码单元上方或者左侧的编码单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410280844.6A CN105208396B (zh) | 2014-06-20 | 2014-06-20 | 一种视频帧的编码及解码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410280844.6A CN105208396B (zh) | 2014-06-20 | 2014-06-20 | 一种视频帧的编码及解码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105208396A true CN105208396A (zh) | 2015-12-30 |
CN105208396B CN105208396B (zh) | 2019-01-15 |
Family
ID=54955783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410280844.6A Active CN105208396B (zh) | 2014-06-20 | 2014-06-20 | 一种视频帧的编码及解码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105208396B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109819264A (zh) * | 2018-12-28 | 2019-05-28 | 杭州海康威视数字技术股份有限公司 | 编码方法、解码方法及装置 |
WO2020253650A1 (en) * | 2019-06-16 | 2020-12-24 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between screen content coding tools and motion information |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103024378A (zh) * | 2012-12-06 | 2013-04-03 | 浙江大学 | 一种视频编解码中运动信息导出方法及装置 |
CN103650505A (zh) * | 2011-04-20 | 2014-03-19 | 高通股份有限公司 | 视频译码中的运动向量预测 |
-
2014
- 2014-06-20 CN CN201410280844.6A patent/CN105208396B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103650505A (zh) * | 2011-04-20 | 2014-03-19 | 高通股份有限公司 | 视频译码中的运动向量预测 |
CN103024378A (zh) * | 2012-12-06 | 2013-04-03 | 浙江大学 | 一种视频编解码中运动信息导出方法及装置 |
Non-Patent Citations (2)
Title |
---|
CHAO PANG等: "Non-RCE3: 2-D MV Supported Intra Motion Compensation", 《JCT-VC OF ITU-T SG16 WP3 AND ISO/IEC JTC1/SC29/WG11》 * |
MADHUKAR BUDAGAVI: "AHG8:Video coding using Intra motion compensation", 《JCT-VC OF ITU-T SG16 WP3 AND ISO/IEC JTC1/SC29/WG11》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109819264A (zh) * | 2018-12-28 | 2019-05-28 | 杭州海康威视数字技术股份有限公司 | 编码方法、解码方法及装置 |
WO2020253650A1 (en) * | 2019-06-16 | 2020-12-24 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between screen content coding tools and motion information |
Also Published As
Publication number | Publication date |
---|---|
CN105208396B (zh) | 2019-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200162754A1 (en) | Method of Motion Vector Derivation for Video Coding | |
CN110087089B (zh) | 用于颜***数据的视频编解码方法 | |
US10750169B2 (en) | Method and apparatus for intra chroma coding in image and video coding | |
TWI536811B (zh) | 影像處理方法與系統、解碼方法、編碼器與解碼器 | |
US10212411B2 (en) | Methods of depth based block partitioning | |
KR102114641B1 (ko) | 현재 블록의 분할을 예측하여 비디오를 코딩하는 방법, 디코딩 방법 및 이에 상응하는 코딩 및 디코딩 장치 및 컴퓨터 프로그램 | |
CN103636220A (zh) | 帧内编码编码的方法及装置 | |
CN106464870A (zh) | 用于对帧内画面进行编码和解码的基于模板匹配的方法和装置 | |
CN104768011A (zh) | 图像编解码方法和相关装置 | |
CN110933426B (zh) | 一种解码、编码方法及其设备 | |
CN102611884A (zh) | 图像编解码方法及编解码设备 | |
JP2021516502A (ja) | インター予測モードに基づいた映像処理方法およびそのための装置 | |
US9143798B2 (en) | Apparatus for coding or decoding intra image based on line information of reference image block | |
CN106031170A (zh) | 运动信息编码的方法 | |
KR20140029383A (ko) | 화상 부호화 장치 및 화상 복호 장치 | |
CN105103556A (zh) | 用于亮度补偿的双向预测的方法和装置 | |
KR102604776B1 (ko) | 부호화 방법 및 그 장치, 복호화 방법 및 그 장치 | |
CN107852497A (zh) | 视频和图像编解码中用于色度分量的高级帧内预测的方法及装置 | |
US20110310967A1 (en) | Method and System for Video and Image Coding Using Pattern Matching for Intra-Prediction | |
CN102740071A (zh) | 可分级视频编解码器的编码设备及其方法 | |
CN106454349A (zh) | 一种基于h.265视频编码的运动估计块匹配方法 | |
CN113873249B (zh) | 一种编解码方法、装置及其设备 | |
CN113766222B (zh) | 一种编解码方法、装置及其设备 | |
CN105208396A (zh) | 一种视频帧的编码及解码方法和装置 | |
US20220232237A1 (en) | Image decoding device using tool set and image decoding method thereby, and image encoding device and image encoding method thereby |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |