CN107920254B - 一种针对b帧的运动估计方法、装置及视频编码器 - Google Patents
一种针对b帧的运动估计方法、装置及视频编码器 Download PDFInfo
- Publication number
- CN107920254B CN107920254B CN201610885978.XA CN201610885978A CN107920254B CN 107920254 B CN107920254 B CN 107920254B CN 201610885978 A CN201610885978 A CN 201610885978A CN 107920254 B CN107920254 B CN 107920254B
- Authority
- CN
- China
- Prior art keywords
- reference frame
- target code
- motion estimation
- target
- code 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明实施例公开了一种针对B帧的运动估计方法、装置及视频编码器,方法包括:首先基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0;再获得目标编码单元基于后向参考帧的后向运动估计结果L1;在后向参考帧均与前向参考帧相同的情况下,对L0和L1进行加权计算,获得目标编码单元的加权运动估计结果BI1;最后将L0、L1和BI1中最优的运动估计结果确定为目标编码单元的运动估计结果。应用本发明实施例,在获得针对目标编码单元的L0和L1后,直接对L0和L1进行加权计算,得到加权运动估计结果BI1,无需再在list0和list1中进行双向运动估计,提高了运动估计的速度。
Description
技术领域
本发明涉及视频编解码技术领域,特别涉及一种针对B帧的运动估计方法、装置及视频编码器。
背景技术
B帧也叫双向预测帧,是指既参考源视频序列中前向已编码的帧图像,也参考源视频序列中后向已编码的帧图像的编码图像。在实际的运动估计中,为了提高运动估计的可靠性,B帧参考的是前向参考队列list0和后向参考队列list1中的图像,这两个参考队列中的图像可以称之为参考帧,list0和list1中均至少包含一个参考帧。
目前,对B帧中的某个目标编码单元进行运动估计一般包括以下步骤,首先,基于list0中的参考帧进行运动估计,得到运动估计结果L0;然后,基于list1中的参考帧进行运动估计,得到运动估计结果L1;再基于list0和list1中的参考帧进行加权运动估计,得到加权运动估计结果BI。最后在L0、L1、BI中选取最优的结果作为上述编码单元的最终运动估计结果。
其中,基于list0和list1中的参考帧进行加权运动估计,得到加权运动估计结果BI时:先将运动估计结果L0和L1中较好的一个作为第一预测编码单元,假设,运动估计结果L0和L1中L0较好,那么将L0作为第一预测编码单元;然后根据目标编码单元以及第一预测编码单元,在list1中的参考帧进行运动估计,获得第二预测编码单元;最后再对第一预测编码单元和第二预测编码单元进行加权预测,得到加权运动估计结果BI。
由上可见,应用上述方式进行运动估计时,不仅要单独基于list0、list1中的参考帧进行运动估计,在加权运动估计时,还要基于list0或者list1中的参考帧再次进行运动估计,可见应用上述方式对B帧中的编码单元进行运动估计时,计算量大、速度慢。
发明内容
本发明实施例的目的在于提供一种针对B帧的运动估计方法、装置及视频编码器,以提高运动估计的速度。
为达到上述目的,本发明实施例公开了一种针对B帧的运动估计方法,所述方法包括:
基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0,其中,所述目标编码单元为所述目标B帧中的任一编码单元;
按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,其中,所述后向参考帧为:后向参考队列list1中所述目标B帧的参考帧;
判断所述后向参考帧是否均与所述前向参考帧相同;
若为否,对所述L0和所述L1进行加权计算,获得所述目标编码单元的加权运动估计结果BI1;
将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
优选的,所述按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,包括:
按照以下方式获得所述目标编码单元基于每一后向参考帧的后向运动估计结果:
判断目标后向参考帧是否与所述前向参考帧中的任一参考帧相同,其中,所述目标后向参考帧为:所述后向参考帧中的任一参考帧;
如果相同,根据与所述目标后向参考帧相同的前向参考帧的前向运动估计结果,计算所述目标编码单元基于所述目标后向参考帧的后向运动估计结果;
如果不相同,在所述目标后向参考帧中进行运动估计,得到所述目标编码单元针对所述目标后向参考帧的后向估计结果。
优选的,在判断所述后向参考帧均与所述前向参考帧相同的情况下,所述方法还包括:
判断所述目标编码单元的大小是否小于等于第一预设大小;
若小于等于,将所述L0、L1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
优选的,所述方法还包括:
在判断所述目标编码单元的大小大于所述第一预设大小的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2;
将所述L0、L1和BI2中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
优选的,所述按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2,包括:
根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向;
基于第二预测方向对应的所述目标B帧的参考帧进行运动估计,获得所述目标编码单元的第二预测编码单元,其中,所述第二预测编码方向为与所述第一预测编码方向相反的方向;
根据所述第一预测编码元和所述第二预测编码单元,获得所述目标编码单元的加权运动估计结果BI2。
优选的,在所述判断所述后向参考帧是否均与所述前向参考帧相同之前,所述方法还包括:
判断所述目标编码单元的大小是否小于等于第二预设大小;
若小于等于,执行所述判断所述后向参考帧是否均与所述前向参考帧相同的步骤。
优选的,所述方法还包括:
在判断所述目标编码单元的大小大于所述第二预设大小的情况下,按照第二预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI3;
将所述L0、L1和BI3中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
为达到上述目的,本发明实施例还公开了一种针对B帧的运动估计装置,所述装置包括:
第一获得模块,用于基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0,其中,所述目标编码单元为所述目标B帧中的任一编码单元;
第二获得模块,用于按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,其中,所述后向参考帧为:后向参考队列list1中所述目标B帧的参考帧;
第一判断模块,用于判断所述后向参考帧是否均与所述前向参考帧相同;
第三获得模块,用于在所述第一判断模块判定为否的情况下,对所述L0和所述L1进行加权计算,获得所述目标编码单元的加权运动估计结果BI1;
第一确定模块,用于将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
优选的,所述第二获得模块,具体用于:
按照以下方式获得所述目标编码单元基于每一后向参考帧的后向运动估计结果:
判断目标后向参考帧是否与所述前向参考帧中的任一参考帧相同,其中,所述目标后向参考帧为:所述后向参考帧中的任一参考帧;
如果相同,根据与所述目标后向参考帧相同的前向参考帧的前向运动估计结果,计算所述目标编码单元基于所述目标后向参考帧的后向运动估计结果;
如果不相同,在所述目标后向参考帧中进行运动估计,得到所述目标编码单元针对所述目标后向参考帧的后向估计结果。
优选的,所述装置还包括:
第二判断模块,用于在所述第一判断模块判断结果为是的情况下,判断所述目标编码单元的大小是否小于等于第一预设大小;
第二确定模块,用于在所述第二判断模块判断结果为是的情况下,将所述L0、L1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
优选的,所述装置还包括:
第四获得模块,用于在所述第二判断模块判断结果为否的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2;
第三确定模块,用于将所述L0、L1和BI2中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
优选的,所述第四获得模块,具体用于:
根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向;
基于第二预测方向对应的所述目标B帧的参考帧进行运动估计,获得所述目标编码单元的第二预测编码单元,其中,所述第二预测编码方向为与所述第一预测编码方向相反的方向;
根据所述第一预测编码元和所述第二预测编码单元,获得所述目标编码单元的加权运动估计结果BI。
优选的,所述装置还包括:
第三判断模块,用于判断所述目标编码单元的大小是否小于等于第二预设大小;
所述第一判断模块,具体用于在所述第三判断模块判断为是的情况下,判断所述后向参考帧是否均与所述前向参考帧相同。
优选的,所述装置还包括:
第五获得模块,用于在判断所述目标编码单元的大小大于所述第二预设大小的情况下,按照第二预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI3;
第四确定模块,用于将所述L0、L1和BI3中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
为达到上述目的,本发明实施例还公开了一种视频编码器,所述视频编码器为应用上述任意一种针对B帧的运动估计装置的视频编码器。
由上可见,在本发明实施例提供的方案中,首先基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0;再获得目标编码单元基于后向参考帧的后向运动估计结果L1;在判断后向参考帧均与所述前向参考帧相同的情况下,对所述L0和所述L1进行加权计算,获得目标编码单元的加权运动估计结果BI1;最后将L0、L1和BI1中最优的运动估计结果确定为目标编码单元的运动估计结果。应用本发明实施例,在获得针对目标编码单元的前向运动估计结果L0和后向运动估计结果L1后,直接对L0和L1进行加权计算,得到加权运动估计结果BI1,进而得到目标编码单元的运动估计结果,与现有技术相比,无需再在list0和list1中进行双向运动估计,因而能够节省计算量,提高了运动估计的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的第一种针对B帧的运动估计方法的流程示意图;
图2为本发明实施例提供的第二种针对B帧的运动估计方法的流程示意图;
图3为本发明实施例提供的第三种针对B帧的运动估计方法的流程示意图;
图4为本发明实施例提供的第四种针对B帧的运动估计方法的流程示意图;
图5为本发明实施例提供的第五种针对B帧的运动估计方法的流程示意图;
图6为本发明实施例提供的第一种针对B帧的运动估计装置的结构示意图;
图7为本发明实施例提供的第二种针对B帧的运动估计装置的结构示意图;
图8为本发明实施例提供的第三种针对B帧的运动估计装置的结构示意图;
图9为本发明实施例提供的第四种针对B帧的运动估计装置的结构示意图;
图10为本发明实施例提供的第五种针对B帧的运动估计装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面通过具体实施例,对本发明进行详细的说明。
如图1所示,为本发明实施例提供的第一种针对B帧的运动估计方法的流程示意图,方法包括:
S101:基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0,其中,所述目标编码单元为所述目标B帧中的任一编码单元。
本领域技术人员可以理解的是,B帧也叫双向预测帧,是指既参考源视频序列中前向已编码的帧图像,也参考源视频序列中后向已编码的帧图像的编码图像。在实际的运动估计中,为了提高运动估计的可靠性,B帧参考的是前向参考队列list0和后向参考队列list1中的图像,这两个参考队列中的图像可以称之为参考帧,list0和list1中均至少包含一个参考帧。
对一个视频序列来说,在编码过程中,前向参考队列list0和后向参考队列list1中的参考帧会随着编码继续而实时更新。示例性的,假设,按照显示顺序,在视频序列中各个视频帧的帧类型如下:
I0、B1、B2、P3、B4、B5、P6、B7、B8、P9、B10、B11、P12、……。
假定前向参考队列list0中包含3个参考帧,后向参考队列list1中也包含3个参考帧,目标B帧为视频帧中的第9帧,即B8,这里所提及的目标B帧即当前正在编码的B帧。则当前状态下list0中包含的参考帧依次为:P6、P3和I0,list1中包含的参考帧依次为:P9、P6和P3。
当目标B帧为第11帧,即B10时,list0中包含的参考帧更新为:P9、P6和P3,list1中包含的参考帧更新为:P12、P9和P6。
事实上,对于list0和list1中包含参考帧的数量是可以预先设定的,可以设置上述数量相同,也可以设置上述数量不相同,例如,list0中包含3个参考帧,而可以设定list1中仅包含2个参考帧,这都是合理的。
为了对本发明实施例进行简单明了的阐述,以下仅以list0和list1中均包含3个参考帧为例进行说明。
通常情况下,相邻视频帧的相关性比较强,因此,在同一个参考队列中参考帧是有一定的排列顺序的,按照显示顺序,一般离目标B帧越近在参考队列中的序号就越小;例如:目标B帧为上述视频序列中的B8,在list0中P6离B8最近,因此可以确定list0中包含的P6为参考帧1,同样的,可以确定P3为参考帧2、I0为参考帧3,则当前状态下list0中包含的参考帧依次为:P6、P3和I0。
不难理解的是,在对目标B帧进行运动估计时,参考的参考帧数量越多,计算量就越大,相应的耗费的时间也就越长,因此,为了尽可能的提高视频编码的速度,通常在对目标B帧进行运动估计时,list0中的所有参考帧并不一定要全部参考。就上例而言,目标B帧为B8,list0中包含的参考帧依次为:P6、P3和I0,那么在对目标B帧进行运动估计时,实际可以参考list0中的离目标B帧最近的一帧或者两帧,我们称目标B帧在list0中实际参考的参考帧为前向参考帧,假设实际参考两帧,那么,可以确定B8对应的前向参考帧为:P6和P3。B8的后向参考帧的确定方式与上述前向参考帧的确定方式类似,这里不再赘述。
编码单元(Coding Unit,简称CU),是编码的基本单元,例如,在H.265编码标准中,编码单元具有四叉树结构并且为正方形,大小可以为64×64、32×32、16×16和8×8。对于任意的B帧均由大量的编码单元构成,因此对目标B帧进行运动估计实际上是对目标B帧中的每一个编码单元进行运动估计,每个编码单元的运动估计过程相同,下面以对目标B帧中的任意一个编码单元进行运动估计为例,简述其过程如下,当前正在进行运动估计的编码单元即为目标编码单元。
示例性的,上述已经确定B8对应的前向参考帧为:P6和P3;假设B8中一个大小为16×16的编码单元F作为目标编码单元,现对编码单元F进行运动估计,可以先在P6中进行运动估计,与现有技术相同的,运动估计过程中通常可以采用多种搜索方式中的一种,例如:小菱形搜索、六边形搜索、螺旋搜索、EPZS(Enhance Predictive Zonal Search,增强预测区域)搜索等等,可以得到编码单元F在P6中的运动估计结果A;再在P3中进行运动估计,可以得到编码单元F在P3中的运动估计结果B。
上述所说的运动估计结果A或B具体可以包括:编码单元F在P6或P3中进行运动估计时计算得到的MV(MotionVector,运动矢量)、SAD(Sum of Absolute Difference,绝对误差和)、编码比特代价等。编码比特代价是指存储参考帧位置信息所需要的比特数所对应的代价,为保证计算得到的编码比特代价准确,计算编码比特代价时除了可以考虑参考帧索引以及其他除运动矢量残差MVD之外的语法元素外,还可以进一步考虑MV,通常MV包括x分量和y分量,需要说明的是,上述其他除MVD之外的语法元素可以包括:编码单元的编码模式、预测运动矢量MVP的索引等等。
例如,编码单元F在list0所包含的P6中进行运动估计,获得运动矢量MV1,运动矢量MV1可以表示为MV1(x1,y1);假设参考帧1(P6)在list0中对应的参考帧索引以及其他除MVD之外的其他语法元素共需要占用用1个比特位。那么,参考帧1(P6)在list0中进行运动估计对应的编码比特代价=λ*(1+PBitMVD_x1+PBitMVD_y1);其中,λ为率失真代价系数,PBitMVD_x1、PBitMVD_y1分别为上述MV1对应的运动矢量残差MVD的x1分量的比特估计值和y1分量的比特估计值。
本领域内的技术人员可以理解的是,上述运动矢量残差MVD可以理解为运动矢量的预测值与实际值之间的差值。
然后将运动估计结果A和运动估计结果B中最优的那个作为编码单元F的前向运动估计结果L0,具体的,先根据运动估计结果A中包含的MV、SAD和编码比特代价计算出运动估计结果A对应的综合代价,通常综合代价为SAD和编码比特代价之和,综合代价用来表征运动估计结果的好坏,综合代价数值越小运动估计结果越好。然后,按照上述方式计算出运动估计结果B对应的综合代价,选择运动估计结果A和运动估计结果B中综合代价小的作为最优的运动估计结果。
示例性的,假设编码单元F在list0所包含的P6中进行运动估计,获得的运动估计结果A具体为:MV1(x1,y1)、SAD=200、编码比特代价=λ*(1+PBitMVD_x1+PBitMVD_y1);在P3中进行运动估计,获得的运动估计结果B具体为:MV2(x2,y2)、SAD=250、编码比特代价=λ*(2+PBitMVD_x2+PBitMVD_y2)。假设,上述200+λ*(1+PBitMVD_x1+PBitMVD_y1)<250+λ*(2+PBitMVD_x2+PBitMVD_y2),那么可以确定list0中的P6对应的运动估计结果A最优,因此,编码单元F前运动估计结果L0即为运动估计结果A。
需要说明的是,上述设定list0、list1中所包含的参考帧的数量,list0中各参考帧的顺序以及目标B帧在list0中实际参考的参考帧数量仅为本发明实施例提供的一种具体的示例,并不构成本申请对上述内容的限定。
S102:按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,其中,所述后向参考帧为:后向参考队列list1中所述目标B帧的参考帧。
与上述前向参考队列list0相类似的,在后向参考队列list1中目标B帧实际参考的参考帧称为后向参考帧,针对目标B帧中的目标编码单元,在上述的后向参考帧中进行运动估计,不难获得目标编码单元基于后向参考帧的后向运动估计结果L1。
在实际的编码过程中,List1和list0中的某些参考帧是相同的,由于在对目标编码单元进行运动估计时,先参考list0中的各前向参考帧,后参考list1中的各后向参考帧,如果list1中的某些后向参考帧与list0中的前向参考帧相同,由于目标编码单元所参考的参考帧是相同的,所以在该后向参考帧中进行运动估计的结果与对应的前向参考帧获得的运动估计结果基本相同,因此,为了节省计算量,如果list1中的某一后向参考帧FrmB与list0中的某一前向参考帧FrmF相同,可以直接根据FrmF对应的运动估计结果,获得FrmB的运动估计结果,不需要再在FrmB中进行运动估计。
因此,为了尽可能的减少运动估计的计算量,在实际应用中,按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1时,可以按照以下方式获得所述目标编码单元基于每一后向参考帧的后向运动估计结果:
判断目标后向参考帧是否与所述前向参考帧中的任一参考帧相同,其中,所述目标后向参考帧为:所述后向参考帧中的任一参考帧;
如果相同,根据与所述目标后向参考帧相同的前向参考帧的前向运动估计结果,计算所述目标编码单元基于所述目标后向参考帧的后向运动估计结果;
如果不相同,在所述目标后向参考帧中进行运动估计,得到所述目标编码单元针对所述目标后向参考帧的后向估计结果。
下面对获得目标编码单元后向运动估计结果的过程进行详细的介绍:
示例性的,假设目标B帧为B8,对应的list0中包含有三个参考帧:P6、P3和I0,其中,P6为参考帧1、P3为参考帧2、I0为参考帧3,B8对应的前向参考帧为:参考帧1和参考帧2,也就是P6和P3。
由步骤S101可以获得编码单元F针对list0中的P6和P3进行运动估计后的运动估计结果L0。假设编码单元F在list0包含的P6中进行运动估计,获得的运动估计结果A具体为:MV1(x1,y1)、SAD=200、编码比特代价=λ*(1+PBitMVD_x1+PBitMVD_y1);在P3中进行运动估计,获得的运动估计结果B具体为:MV2(x2,y2)、SAD=250、编码比特代价=λ*(2+PBitMVD_x2+PBitMVD_y2)。
假设B8对应的List1中包含有三个参考帧:P9、P6和P3,其中,P9为参考帧1、P6为参考帧2、P3为参考帧3。B8对应的后向参考帧为:参考帧1和参考帧2,也就是P9和P6。
按照上述的步骤对编码单元F进行运动估计,假设目标后向参考帧为P9,可见P9与list0中所包含的前向参考帧均不相同,因此,需要在P9中进行运动估计,得到编码单元F的运动估计结果C,具体为:MV3(x3,y3)、SAD=230、编码比特代价=λ*(1+PBitMVD_x3+PBitMVD_y3)。之后,目标后向参考帧更新为P6,可见,P6与list0的前向参考帧中的“P6”相同,由于编码单元F在P6中已经进行过了运动估计,因此,为节省计算量,针对同一个编码单元F可以不需要再在P6中进行运动估计,可以直接将编码单元F在P6中对应的运动估计结果A中的MV1以及SAD直接作为后向运动估计结果中的MV和SAD,但是,由于P6在list0和list1中的位置不同,因此,编码单元F在list1的P6中对应的编码比特代价与在list0的P6中对应的编码比特代价稍有不同,例如,编码单元F的后前运动估计结果中的编码比特代价=λ*(1+PBitMVD_x1+PBitMVD_y1),而编码单元F的后向运动估计结果中的编码比特代价=λ*(2+PBitMVD_x1+PBitMVD_y1),综上可得编码单元F针对list1中P6的运动估计结果D具体为:MV1(x1,y1)、SAD=200、编码比特代价=λ*(2+PBitMVD_x1+PBitMVD_y1)。
可以理解的,将上述编码单元F针对每一个后向参考帧的运动估计结果中最优的那个作为编码单元F的后向运动估计结果,与上述确定前向运动估计结果相同的,可以通过比较运动估计结果C以及运动估计结果D对应的综合代价的大小,最终确定编码单元F的后向运动估计结果L1。由于具体过程与确定前向运动估计结果L0相同,这里就不再赘述。
由上可见,在目标后向参考帧与前向参考帧相同的情况下,只需要计算后向参考帧对应的编码比特代价,然后根据已经获得运动估计结果便可以获得目标后向参考帧对应的运动估计结果,减少了编码的计算量,进而提高了编码的速度。
S103:判断所述后向参考帧是否均与所述前向参考帧相同。
由于加权运动估计是在前向参考帧和后向参考帧的基础上进行的,又由于后向参考帧与前向参考帧相同时,在前向参考帧上进行运动估计和在后向参考帧上进行运动估计得到的运动估计结果是相似的,所以这种情况下,再进行加权运动估计时得到的运动估计结果也会与上述前向参考帧以及后向参考帧对应的运动估计结果相似,考虑到减少计算量,加快编码速度,在本申请的一种实现方式中,可以直接选择前向参考帧对应的运动估计结果和后向参考帧对应的运动估计结果中最优的作为目标编码单元的运动估计结果。
S104:判断所述后向参考帧不均与所述前向参考帧相同的情况下,对所述L0和所述L1进行加权计算,获得所述目标编码单元的加权运动估计结果BI1。
在前向参考帧与后向参考帧不均相同的情况下,进行加权运动估计时,可以根据现有技术中提供的方案进行,但是按照现有技术中提供的加权运动估计方案进行的话,需要进行运动估计,而运动估计消耗的计算量比较大,在对编码速度要求较高的情况下,不利于满足用户需求。鉴于上述情况,本实施例中采用对L0和L1进行加权计算的方式,获得目标编码单元的加权运动估计结果BI1。以加权计算的方式获得加权运动估计结果时,无需再进行运动估计,加权计算的计算量小,所以这样可以大大节省计算量,提高编码速度。
下面结合具体的示例对加权计算的过程做详细的说明。
示例性的,假设,上述已确定编码单元F对应的前向运动估计结果L0为:MV1(x1,y1)、SAD=200、编码比特代价=λ*(1+PBitMVD_x1+PBitMVD_y1);编码单元F对应的后向运动估计结果L1为:MV3(x3,y3)、SAD=230、编码比特代价=λ*(1+PBitMVD_x3+PBitMVD_y3)。在上述判断后向参考帧不均与前向参考帧相同的情况下,直接对上述获得的运动估计结果L0和L1进行加权计算。
具体为:根据上述运动估计结果L0中的MV可以确定编码单元F在前向参考帧中对应的参考图像块K,再根据上述运动估计结果L1中的MV可以确定编码单元F在后向参考帧中对应的参考图像块L,这里所提及的参考图像块即为在参考帧中搜索到的与目标编码单元最为相似的图像块。不难理解的是,参考编码单元由多个像素组成,每个像素对应一个像素值。例如,参考图像块K中包含有32×32个像素,那么参考图像块L中也包含有32×32个像素,进行加权计算实际上是对参考图像块K中的每个像素的像素值与在参考图像块L中对应像素的像素值进行加权计算,得到一个新的参考图像块。
在加权计算中可以但不限于设定L0对应的加权系数为α,L1对应的加权系数为β;假设,在YUV颜色空间中,参考图像块K中第2行第10列的像素k对应的像素值为:Y1=100、U1=120、V1=80,参考图像块L中对应的像素l即第2行第10列的像素,该像素对应的像素值为:Y2=80、U2=100、V2=120,那么加权计算就是将参考图像块K中像素k的像素值乘上L0对应的加权系数为α,参考图像块L中对应像素l的像素值乘上L1对应的加权系数为β;具体的,得到新像素的像素值为:Y3=100α+80β、U3=120α+100β、V3=80α+120β,按照上述的加权计算过程可以对参考图像块K和参考图像块L中包含的所有像素进行加权得到对应的新像素,所有新像素构成一个新的参考图像块。
在获得新的参考图像块之后,需要计算编码单元F针对新的参考图像块的SAD以及编码比特代价,进而获得编码单元F的加权运动估计结果BI1,例如,获得编码单元F的加权运动估计结果BI1为:SAD=180、编码比特代价=λ*(2+PBitMVD_x1+PBitMVD_y1+PBitMVD_x2+PBitMVD_y2)。
需要说明的是,上述中设定的加权系数α、β的数值可以相等,也可以不相等,本发明实施例并不对其做明确限定。
S105:将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
确定目标编码单元的运动估计结果时,可以先分别计算L0对应的综合代价、L1对应的综合代价以及BI1对应的综合代价,然后选择综合代价最小的运动估计结果作为目标编码单元的运动估计结果。
由上可见,应用图1提供的实施例,在获得针对目标编码单元的前向运动估计结果L0和后向运动估计结果L1后,直接对L0和L1进行加权计算,得到加权运动估计结果BI1,最后将L0、L1和BI1中最优的运动估计结果确定为目标编码单元的运动估计结果,提高了运动估计的速度。
图2为本发明实施例提供的第二种针对B帧的运动估计方法的流程示意图,在图1提供实施例的基础上,图2所提供的方法还包括:
S106:在判断所述后向参考帧均与所述前向参考帧相同的情况下,判断所述目标编码单元的大小是否小于等于第一预设大小;
在图1所提供实施例的基础上,在判断后向参考帧均与前向参考帧相同的情况下,目标编码单元针对后向参考帧的后向运动估计结果与前向运动估计结果基本相同,对于比较小的目标编码单元来说,由于目标编码单元比较小,其包含的像素数量也相对较少,在进行运动估计时获得的运动估计结果相对误差也相对较小,因此可以直接将前向运动估计结果和后向运动估计结果中最优的那个作为目标编码单元的运动估计结果。但是,对于较大的目标编码单元来说,由于其包含的像素数量较多,在进行运动估计时获得的运动估计结果会存在相应的误差,若直接将前向运动估计结果和后向运动估计结果中最优的的那个作为目标编码单元的运动估计结果,会造成编码质量的下降。
为了解决上述问题,通常需要判断目标编码单元的大小是否小于等于第一预设大小,这里说的第一预设大小为本发明实施例中的一个具体描述,仅为了区分与其他实施例中预设大小的不同。例如,可以但不限于设置第一预设大小为:16×16,假设目标B帧中一个大小为16×16的编码单元F作为目标编码单元,通过比较可知,目标编码单元即编码单元F的大小等于第一预设大小,因此,可以判定目标编码单元的大小是小于等于第一预设大小。当然,这里设置的第一预设大小以及目标编码单元的的大小均为本发明实施例中的一个具体数值,并不构成对本发明实施例中第一预设大小以及目标编码单元大小的限定。
S107:在判断所述目标编码单元的大小小于等于第一预设大小的情况下,将所述L0、L1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
由上可知,编码单元F的大小为16×16,等于第一预设大小16×16,可以判定目标编码单元的大小是小于等于第一预设大小的,此时目标编码单元在编码过程中被认为是比较小,不需要再对上述已经获得的针对编码单元F的前向运动估计结果L0和后向运功估计结果L1进行加权运动估计了,直接将L0和L1中最优的那个确定为编码单元F的运动估计结果。假设,上述获得的针对编码单元F的L0和L1中L0为最优,那么,直接将L0确定为编码单元F的运动估计结果。
应用图2提供的实施例,通过在后向参考帧均与前向参考帧相同的情况下判断目标编码单元的大小与第一预设大小的关系,当目标编码单元的大小小于等于上述预设大小时,直接将已获得的L0和L1中最优的运动估计结果确定为目标编码单元的运动估计结果,简化了运动估计的步骤,进而提高了运动估计的速度。经大量实验验证,在H.265编码标准下,采用上述提供的方案,编码整体速度取得9%的提升,可见,应用上述发明实施例,有效的提高了运动估计的速度。
图3为本发明实施例提供的第三种针对B帧的运动估计方法的流程示意图,在图2所提供实施例的基础上,图3所提供的方法还包括:
S108:在判断所述目标编码单元的大小大于所述第一预设大小的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2。
由上可知,当目标编码单元比较大时,由于其包含的像素数量较多,在进行运动估计时获得的运动估计结果会存在相应的误差,若直接将前向运动估计结果和后向运动估计结果中最优的那个作为目标编码单元的运动估计结果,会造成编码质量的下降。
针对上述编码质量下降的问题,在判断所述目标编码单元的大小大于第一预设大小的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2。
实际应用中,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2,可以根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向;
基于第二预测方向对应的所述目标B帧的参考帧进行运动估计,获得所述目标编码单元的第二预测编码单元,其中,所述第二预测编码方向为与所述第一预测编码方向相反的方向;
根据所述第一预测编码元和所述第二预测编码单元,获得所述目标编码单元的加权运动估计结果BI2。
根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向时,上述第一预测编码单元可以为根据最优运动估计结果中包含的MV以及该运动估计结果对应的参考帧确定的第一预测编码单元,上述第一预测方向为与上述最优运动估计结果对应的参考帧所在参考队列一致的方向。
为了获得较为准确的运动估计结果,在上述判断目标编码单元的大小大于第一预设大小的情况下,先计算出前向运动估计结果L0的综合代价以及后向运动估计结果L1对应的综合代价,比较两者综合代价的大小,根据综合代价最小者对应的运动估计结果中的MV确定目标编码单元的第一预测编码单元和第一预测方向。
举例而言,针对编码单元F的前向运动估计结果L0为:MV1(x1,y1)、SAD=200、编码比特代价=λ*(1+PBitMVD_x1+PBitMVD_y1);编码单元F对应的后向运动估计结果L1为:MV3(x3,y3)、SAD=230、编码比特代价=λ*(1+PBitMVD_x3+PBitMVD_y3),那么,不难计算编码单元F的前、后向运动估计结果对应的综合代价分别为:200+λ*(1+PBitMVD_x1+PBitMVD_y1)、230+λ*(1+PBitMVD_x3+PBitMVD_y3)。假设上述中200+λ*(1+PBitMVD_x1+PBitMVD_y1)<230+λ*(1+PBitMVD_x3+PBitMVD_y3),那么可以根据前向运动估计结果L0中的MV1确定出第一预测编码单元和第一预测方向;本发明实施例中所提及的第一预测编码单元为根据L0中的MV1确定出的与编码单元F对应的编码单元,第一预测方向是指“前向”或“后向”,由于这里是根据L0中MV1确定的第一预测方向,因此,第一预测方向为“前向”。
然后可以在第二预测方向对应的所述目标B帧的参考帧中进行运动估计,获得所述目标编码单元的第二预测编码单元,这里需要说明的是,上述第一预测方向为与所述第一预测方向相反的方向,因此,第二预测方向为“后向”。
由上述可获得的第一预测编码单元和第二预测编码单元,将第一预测编码单元和第二预测编码单元按照加权的方式进行计算,例如,第一预测编码单元中的每个像素的像素值均与第二预测编码单元对应位置像素的像素值进行加权计算,最终可获得针对目标编码单元的加权运动估计结果BI2。
对于按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2,还可以直接对L0和L1进行加权计算,可以获得针对目标编码单元的加权运动估计结果BI2,具体过程与上述步骤S104相同,这里就不再赘述。
综上所述,本发明实施例并不对获得所述目标编码单元的加权运动估计结果BI2的具体过程做明确限定。
S109:将所述L0、L1和BI2中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
与上述步骤S105的过程相同的,将上述编码单元F对应的前向运动估计结果L0、后向运动估计结果L1以及加权运动估计结果BI2中最优的一个作为编码单元F的后向运动估计结果,例如,通过比较上述获得的L0、L1和BI1可以确定后向运动估计结果L0最优,那么,编码单元F的运动估计结果为L0。
应用图3提供的实施例,在判断目标编码单元的大小大于第一预设大小的情况下,根据L0和L1中最优的运动估计结果确定第一预测编码单元和第一预测方向,再根据另一预测方向对应的参考帧,获得目标编码单元的第二预测编码单元,最后通过对第一预测编码元和第二预测编码单元加权计算,获得目标编码单元的加权运动估计结果BI2,获得了较为准确的运动估计结果。
图4为本发明实施例提供的第四种针对B帧的运动估计方法的流程示意图,在图1所提供实施例的基础上,图4所提供的方法还包括:
S110:判断所述目标编码单元的大小是否小于等于第二预设大小,若小于等于,执行步骤S103。
由于编码单元的大小可以为64×64、32×32、16×16和8×8,对于不同大小的编码单元,在参考帧中进行运动估计获得的运动估计结果将不同,运动估计结果的误差也会不同。当目标编码单元小于等于某个阈值时,编码时便判定该目标编码单元较小,之后才进行上述步骤S103的过程,事实上,上述的过程就相当于实现对编码单元做了一次筛选,将小于等于某个阈值的编码单元挑选出来,进一步对选出的编码单元进行相应的处理。减少了运动估计的计算量,进而提高了运动估计的速度。
示例性的,可以但不限于设置第二预设大小为:32×32,假设目标B帧中一个大小为16×16的编码单元F作为目标编码单元,通过比较可知,目标编码单元即编码单元F的大小小于第二预设大小,因此,可以判定目标编码单元的大小小于第二预设大小,当判定目标编码单元的大小小于等于第二预设大小的情况下,执行步骤S103。
值得一提的是,上述设置的第二预设大小以及目标编码单元的大小均为本发明实施例中的一个具体数值,并不构成对本发明实施例中第二预设大小以及目标编码单元大小的限定。
图5为本发明实施例提供的第五种针对B帧的运动估计方法的流程示意图,在图4所提供实施例的基础上,图5所提供的方法还包括:
S111:在判断所述目标编码单元的大小大于所述第二预设大小的情况下,按照第二预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI3;
在本发明实施例中,步骤S111与上述图3所提供实施例中的步骤S108并没有什么本质上的区别,这里所说的“第二预设加权运功估计规则”仅为了区分与图3所提供实施例中的所提的“第一预设加权运动估计规则”的不同。对于本发明实施例中的步骤S111,由于具体过程与图3所提供实施例中的步骤S108相同,因此,为了说明书能够简洁,本发明实施例将不再赘述,相同之处请参见对应之处。
S112:将所述L0、L1和BI3中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
与上述步骤S105的过程相同的,将上述编码单元F对应的前向运动估计结果L0、后向运动估计结果L1以及加权运动估计结果BI3中最优的一个作为编码单元F的后向运动估计结果,例如,假设通过比较上述获得的L0、L1和BI3可以确定后向运动估计结果L0最优,因此,编码单元F的运动估计结果为L0。
由上可见,应用图5提供的实施例,在判断目标编码单元的大小大于第二预设大小的情况下,根据L0和L1中最优的运动估计结果确定第一预测编码单元和第一预测方向,再根据另一预测方向对应的参考帧,获得目标编码单元的第二预测编码单元,最后通过对第一预测编码元和第二预测编码单元加权计算,获得目标编码单元的加权运动估计结果BI3,获得了较为准确的运动估计结果。
值得说明的是,在图4或图5提供的实施例的基础上,实际上,在步骤S103判断所述后向参考帧均与所述前向参考帧相同的情况下,上述的所提供的实施例还可以按照第三预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI4;
将所述L0、L1和BI4中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
对于上述获得目标编码单元的加权运动估计结果BI4以及确定目标编码单元的运动估计结果的过程与前文对应部分的描述并无二致,因此,此处就不再赘述。经大量实验验证,在H.265编码标准下,采用上述提供的方案,编码整体速度取得7%的提升,可见,应用上述发明实施例,有效的提高了运动估计的速度。
相应于图1提供的方法实施例,本发明实施例提供了第一种针对B帧的运动估计装置,如图6所示,所述装置包括:
第一获得模块201,用于基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0,其中,所述目标编码单元为所述目标B帧中的任一编码单元。
第二获得模块202,用于按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,其中,所述后向参考帧为:后向参考队列list1中所述目标B帧的参考帧。
实际应用中,所述第二获得模块,具体用于:
按照以下方式获得所述目标编码单元基于每一后向参考帧的后向运动估计结果:
判断目标后向参考帧是否与所述前向参考帧中的任一参考帧相同,其中,所述目标后向参考帧为:所述后向参考帧中的任一参考帧。
如果相同,根据与所述目标后向参考帧相同的前向参考帧的前向运动估计结果,计算所述目标编码单元基于所述目标后向参考帧的后向运动估计结果。
如果不相同,在所述目标后向参考帧中进行运动估计,得到所述目标编码单元针对所述目标后向参考帧的后向估计结果。
第一判断模块203,用于判断所述后向参考帧是否均与所述前向参考帧相同。
第三获得模块204,用于在所述第一判断模块判定为否的情况下,对所述L0和所述L1进行加权计算,获得所述目标编码单元的加权运动估计结果BI1。
第一确定模块205,用于将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
应用图6提供的实施例,在获得针对目标编码单元的前向运动估计结果L0和后向运动估计结果L1后,直接对L0和L1进行加权计算,得到加权运动估计结果BI1,最后将L0、L1和BI1中最优的运动估计结果确定为目标编码单元的运动估计结果,提高了运动估计的速度。
相应于图2提供的方法实施例,在图6提供的实施例的基础上,本发明实施例提供了第二种针对B帧的运动估计装置,如图7所示,所述装置还包括:
第二判断模块206,用于在所述第一判断模块判断结果为是的情况下,判断所述目标编码单元的大小是否小于等于第一预设大小。
第二确定模块207,用于在所述第二判断模块判断结果为是的情况下,将所述L0、L1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
应用图7提供的实施例,通过在后向参考帧均与前向参考帧相同的情况下判断目标编码单元的大小与第一预设大小的关系,当目标编码单元的大小小于等于上述预设大小时,直接将已获得的L0和L1中最优的运动估计结果确定为目标编码单元的运动估计结果,简化了运动估计的步骤,进而提高了运动估计的速度。
相应于图3提供的方法实施例,在图7提供的实施例的基础上,本发明实施例提供了第三种针对B帧的运动估计装置,如图8所示,所述装置还包括:
第四获得模块208,用于在所述第二判断模块判断结果为否的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2;
实际应用中,所述第四获得模块,具体用于:
根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向;
基于第二预测方向对应的所述目标B帧的参考帧进行运动估计,获得所述目标编码单元的第二预测编码单元,其中,所述第二预测编码方向为与所述第一预测编码方向相反的方向;
根据所述第一预测编码元和所述第二预测编码单元,获得所述目标编码单元的加权运动估计结果BI2。
第三确定模块209,用于将所述L0、L1和BI2中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
应用图8提供的实施例,在判断目标编码单元的大小大于第一预设大小的情况下,根据所述L0和所述L1中最优的运动估计结果确定第一预测编码单元和第一预测方向,再根据另一预测方向对应的参考帧,获得目标编码单元的第二预测编码单元,最后通过对第一预测编码元和第二预测编码单元加权计算,获得目标编码单元的加权运动估计结果BI2,获得了较为准确的运动估计结果。
相应于图4提供的方法实施例,在图6提供的实施例的基础上,本发明实施例提供了第四种针对B帧的运动估计装置,如图9所示,所述装置还包括:
第三判断模块210,用于判断所述目标编码单元的大小是否小于等于第二预设大小;
所述第一判断模块203,具体用于在所述第三判断模块判断为是的情况下,判断所述后向参考帧是否均与所述前向参考帧相同。
相应于图5提供的方法实施例,在图9提供的实施例的基础上,本发明实施例提供了第五种针对B帧的运动估计装置,如图10所示,所述装置还包括:
第五获得模块211,用于在判断所述目标编码单元的大小大于所述第二预设大小的情况下,按照第二预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI3;
第四确定模块212,用于将所述L0、L1和BI3中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
应用图10提供的实施例,在判断目标编码单元的大小大于第二预设大小的情况下,根据L0和L1中最优的运动估计结果,确定第一预测编码单元和第一预测方向,再根据另一预测方向对应的参考帧,获得目标编码单元的第二预测编码单元,最后通过对第一预测编码元和第二预测编码单元加权计算,获得目标编码单元的加权运动估计结果BI3,获得了较为准确的运动估计结果。
本发明实施例还提供了一种视频编码器,该视频编码器除了与现有视频编码器具有相同的功能外,该视频编码器还应用上述图6-10中任意一种针对B帧的运动估计装置,因此,本发明实施例提供的视频编码器,能够达到与上述图6-10同样的效果,本发明实施例不再对该视频编码器的具体内容做详细阐述,相同之处请参见上述对应内容。
对于上述的装置实施例以及视频编码器而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (15)
1.一种针对B帧的运动估计方法,其特征在于,所述方法包括:
基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0,其中,所述目标编码单元为所述目标B帧中的任一编码单元;
按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,其中,所述后向参考帧为:后向参考队列list1中所述目标B帧的参考帧;
判断所述后向参考帧是否均与所述前向参考帧相同;
若为否,对所述L0和所述L1进行加权计算,获得所述目标编码单元的加权运动估计结果BI1;
将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果;
所述将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果,包括:
计算所述L0对应的综合代价、所述L1对应的综合代价以及所述BI1对应的综合代价,并将所述L0对应的综合代价、所述L1对应的综合代价以及所述BI1对应的综合代价中的最小综合代价对应的运动估计结果,作为所述目标编码单元的运动估计结果。
2.根据权利要求1所述的方法,其特征在于,所述按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,包括:
按照以下方式获得所述目标编码单元基于每一后向参考帧的后向运动估计结果:
判断目标后向参考帧是否与所述前向参考帧中的任一参考帧相同,其中,所述目标后向参考帧为:所述后向参考帧中的任一参考帧;
如果相同,根据与所述目标后向参考帧相同的前向参考帧的前向运动估计结果,计算所述目标编码单元基于所述目标后向参考帧的后向运动估计结果;
如果不相同,在所述目标后向参考帧中进行运动估计,得到所述目标编码单元针对所述目标后向参考帧的后向估计结果。
3.根据权利要求1所述的方法,其特征在于,在判断所述后向参考帧均与所述前向参考帧相同的情况下,所述方法还包括:
判断所述目标编码单元的大小是否小于等于第一预设大小;
若小于等于,将所述L0、L1中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在判断所述目标编码单元的大小大于所述第一预设大小的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2;
将所述L0、L1和BI2中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
5.根据权利要求4所述的方法,其特征在于,所述按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2,包括:
根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向;
基于第二预测方向对应的所述目标B帧的参考帧进行运动估计,获得所述目标编码单元的第二预测编码单元,其中,所述第二预测编码方向为与所述第一预测编码方向相反的方向;
根据所述第一预测编码元和所述第二预测编码单元,获得所述目标编码单元的加权运动估计结果BI2。
6.根据权利要求1所述的方法,其特征在于,在所述判断所述后向参考帧是否均与所述前向参考帧相同之前,所述方法还包括:
判断所述目标编码单元的大小是否小于等于第二预设大小;
若小于等于,执行所述判断所述后向参考帧是否均与所述前向参考帧相同的步骤。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在判断所述目标编码单元的大小大于所述第二预设大小的情况下,按照第二预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI3;
将所述L0、L1和BI3中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
8.一种针对B帧的运动估计装置,其特征在于,所述装置包括:
第一获得模块,用于基于前向参考队列list0中目标B帧的前向参考帧,获得目标编码单元的前向运动估计结果L0,其中,所述目标编码单元为所述目标B帧中的任一编码单元;
第二获得模块,用于按照预设运动估计规则,获得所述目标编码单元基于后向参考帧的后向运动估计结果L1,其中,所述后向参考帧为:后向参考队列list1中所述目标B帧的参考帧;
第一判断模块,用于判断所述后向参考帧是否均与所述前向参考帧相同;
第三获得模块,用于在所述第一判断模块判定为否的情况下,对所述L0和所述L1进行加权计算,获得所述目标编码单元的加权运动估计结果BI1;
第一确定模块,用于将所述L0、L1和BI1中最优的运动估计结果确定为所述目标编码单元的运动估计结果;
所述第一确定模块,具体用于:
计算所述L0对应的综合代价、所述L1对应的综合代价以及所述BI1对应的综合代价,并将所述L0对应的综合代价、所述L1对应的综合代价以及所述BI1对应的综合代价中的最小综合代价对应的运动估计结果,作为所述目标编码单元的运动估计结果。
9.根据权利要求8所述的装置,其特征在于,所述第二获得模块,具体用于:
按照以下方式获得所述目标编码单元基于每一后向参考帧的后向运动估计结果:
判断目标后向参考帧是否与所述前向参考帧中的任一参考帧相同,其中,所述目标后向参考帧为:所述后向参考帧中的任一参考帧;
如果相同,根据与所述目标后向参考帧相同的前向参考帧的前向运动估计结果,计算所述目标编码单元基于所述目标后向参考帧的后向运动估计结果;
如果不相同,在所述目标后向参考帧中进行运动估计,得到所述目标编码单元针对所述目标后向参考帧的后向估计结果。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于在所述第一判断模块判断结果为是的情况下,判断所述目标编码单元的大小是否小于等于第一预设大小;
第二确定模块,用于在所述第二判断模块判断结果为是的情况下,将所述L0、L1中的最优的运动估计结果确定为所述目标编码单元的运动估计结果。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第四获得模块,用于在所述第二判断模块判断结果为否的情况下,按照第一预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI2;
第三确定模块,用于将所述L0、L1和BI2中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
12.根据权利要求11所述的装置,其特征在于,所述第四获得模块,具体用于:
根据所述L0和所述L1中最优的运动估计结果,确定所述目标编码单元的第一预测编码单元和第一预测方向;
基于第二预测方向对应的所述目标B帧的参考帧进行运动估计,获得所述目标编码单元的第二预测编码单元,其中,所述第二预测编码方向为与所述第一预测编码方向相反的方向;
根据所述第一预测编码元和所述第二预测编码单元,获得所述目标编码单元的加权运动估计结果BI2。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三判断模块,用于判断所述目标编码单元的大小是否小于等于第二预设大小;
所述第一判断模块,具体用于在所述第三判断模块判断为是的情况下,判断所述后向参考帧是否均与所述前向参考帧相同。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第五获得模块,用于在判断所述目标编码单元的大小大于所述第二预设大小的情况下,按照第二预设加权运动估计规则,对所述L0和所述L1进行加权运动估计,获得所述目标编码单元的加权运动估计结果BI3;
第四确定模块,用于将所述L0、L1和BI3中最优的运动估计结果确定为所述目标编码单元的运动估计结果。
15.一种视频编码器,其特征在于,所述视频编码器为应用权利要求8-14中任一项所述针对B帧的运动估计装置的视频编码器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610885978.XA CN107920254B (zh) | 2016-10-11 | 2016-10-11 | 一种针对b帧的运动估计方法、装置及视频编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610885978.XA CN107920254B (zh) | 2016-10-11 | 2016-10-11 | 一种针对b帧的运动估计方法、装置及视频编码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107920254A CN107920254A (zh) | 2018-04-17 |
CN107920254B true CN107920254B (zh) | 2019-08-30 |
Family
ID=61892610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610885978.XA Active CN107920254B (zh) | 2016-10-11 | 2016-10-11 | 一种针对b帧的运动估计方法、装置及视频编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107920254B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637538B (zh) * | 2020-12-15 | 2022-08-02 | 重庆紫光华山智安科技有限公司 | 用于优化视频分析的智能标签方法、系统、介质及终端 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1876835A2 (en) * | 2002-04-09 | 2008-01-09 | LG Electronics, Inc. | Method for block prediction of a bi-predictive picture in direct mode |
CN101600108A (zh) * | 2009-06-26 | 2009-12-09 | 北京工业大学 | 一种多视点视频编码中的运动和视差联合估计方法 |
CN101720042A (zh) * | 2009-11-27 | 2010-06-02 | 宁波大学 | 一种多视点视频信号的编码方法 |
CN102172027A (zh) * | 2008-10-06 | 2011-08-31 | 高通股份有限公司 | 有效率的预测模式选择 |
CN103634606A (zh) * | 2012-08-21 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 视频编码方法和装置 |
CN104602019A (zh) * | 2014-12-31 | 2015-05-06 | 乐视网信息技术(北京)股份有限公司 | 一种视频编码方法及装置 |
CN104602028A (zh) * | 2015-01-19 | 2015-05-06 | 宁波大学 | 一种立体视频b帧整帧丢失错误隐藏方法 |
CN104769947A (zh) * | 2013-07-26 | 2015-07-08 | 北京大学深圳研究生院 | 一种基于p帧的多假设运动补偿编码方法 |
CN104980737A (zh) * | 2014-04-01 | 2015-10-14 | 扬智科技股份有限公司 | 帧间模式选择方法 |
CN105338354A (zh) * | 2015-09-29 | 2016-02-17 | 北京奇艺世纪科技有限公司 | 一种运动向量估计方法和装置 |
-
2016
- 2016-10-11 CN CN201610885978.XA patent/CN107920254B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1876835A2 (en) * | 2002-04-09 | 2008-01-09 | LG Electronics, Inc. | Method for block prediction of a bi-predictive picture in direct mode |
CN102172027A (zh) * | 2008-10-06 | 2011-08-31 | 高通股份有限公司 | 有效率的预测模式选择 |
CN101600108A (zh) * | 2009-06-26 | 2009-12-09 | 北京工业大学 | 一种多视点视频编码中的运动和视差联合估计方法 |
CN101720042A (zh) * | 2009-11-27 | 2010-06-02 | 宁波大学 | 一种多视点视频信号的编码方法 |
CN103634606A (zh) * | 2012-08-21 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 视频编码方法和装置 |
CN104769947A (zh) * | 2013-07-26 | 2015-07-08 | 北京大学深圳研究生院 | 一种基于p帧的多假设运动补偿编码方法 |
CN104980737A (zh) * | 2014-04-01 | 2015-10-14 | 扬智科技股份有限公司 | 帧间模式选择方法 |
CN104602019A (zh) * | 2014-12-31 | 2015-05-06 | 乐视网信息技术(北京)股份有限公司 | 一种视频编码方法及装置 |
CN104602028A (zh) * | 2015-01-19 | 2015-05-06 | 宁波大学 | 一种立体视频b帧整帧丢失错误隐藏方法 |
CN105338354A (zh) * | 2015-09-29 | 2016-02-17 | 北京奇艺世纪科技有限公司 | 一种运动向量估计方法和装置 |
Non-Patent Citations (4)
Title |
---|
一种分层次B帧双向预测直接模式;郑嘉利;《计算机应用研究》;20150403;第32卷(第7期);2222-2225 |
一种自适应选取参考帧的多视点视频编码方案;马力妮;《计算机工程与科学》;20090315;第31卷(第3期);55-57 |
应用于多视点视频压缩的多参考B帧快速编码算法;郁梅;《电子与信息学报》;20080615;第30卷(第6期);1400-1404 |
面向分级B帧编码的分级量化技术;郑嘉利;《计算机工程与应用》;20101001;第46卷(第28期);199-201 |
Also Published As
Publication number | Publication date |
---|---|
CN107920254A (zh) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101931802B (zh) | 隔行扫描视频的编码与解码 | |
US9066099B2 (en) | Methods for efficient implementation of skip/direct modes in digital video compression algorithms | |
CN102656886B (zh) | 知晓对象的视频编码策略 | |
CN101090493B (zh) | 活动图像编码/解码方法和设备 | |
CN102256136B (zh) | 改进的视频压缩帧插值 | |
EP2066131A1 (en) | Method of selecting a reference picture | |
CN108134939A (zh) | 一种运动估计方法及装置 | |
CN109561310A (zh) | 视频编码处理方法、装置、设备和存储介质 | |
CN101159871B (zh) | 宏块组级视频码率控制方法 | |
CN101346719A (zh) | 从视频帧中选择关键帧 | |
CN110213590A (zh) | 时域运动矢量获取、帧间预测、视频编码的方法及设备 | |
CN110519600A (zh) | 帧内帧间联合预测方法、装置、编解码器及存储装置 | |
CN101375593A (zh) | 处理多视图视频 | |
CN101404774A (zh) | 运动搜索中宏块划分模式的选择方法 | |
CN108419082A (zh) | 一种运动估计方法及装置 | |
CN107920254B (zh) | 一种针对b帧的运动估计方法、装置及视频编码器 | |
KR100364789B1 (ko) | 움직임 추정 방법 및 장치 | |
CN106358041B (zh) | 一种帧间预测编码方法及装置 | |
CN102547282B (zh) | 可伸缩视频编码错误隐藏方法、解码器和系统 | |
CN106658024B (zh) | 一种快速的视频编码方法 | |
CN101945277B (zh) | 处理多视图视频 | |
CN100385957C (zh) | 一种运动矢量预测的方法 | |
CN100409689C (zh) | 用于提高视频质量的错误掩蔽方法 | |
CN101309427B (zh) | 视频编码方法和装置 | |
CN105519120B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |