H264参考帧选择方法及其装置
技术领域
本发明涉及参考帧的选择方法,特别的,涉及在H264中的参考帧选择方法及其装置。
背景技术
H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。H.264是ITU-T以H.26x系列为名称命名的标准之一。它在视频压缩方面有显著的效果,与之前的其它压缩方法相比,它在同等视频质量的情况下能够节省50%比特率。它的压缩性能的改进主要在可变尺寸的块1/4像素运动补偿,多参考帧运动补偿,先进的帧内预测模式,去方块滤波效应以及自适应熵编码等特性。为了提高预测的准确度,H.264提出了多参考帧预测,但是多参考帧会较低视频编码效率,提升了编码过程中的复杂度。
H.264视频编码中,有的方案提出运用帧间空间相关度来选择参考帧,但是这种方法的参考帧选取准确度不高,而且需要搜索所有的参考帧,复杂度较高。也有方案提出利用临近块的参考帧作为预测块的参考帧,这种方式虽然快速,但是预测效果较差。
因此,如何能够提出一种适用于H.264的参考帧选择方法,使得其能够提高编码效率,减少运动估计时间,又能具有较高的准确度成为亟需解决的技术问题。
发明内容
本发明的目的在于提出H.264的参考帧选择方法及其装置,使得其能够提高编码效率,减少运动估计时间,又能具有较高的准确度,以提高系统的效率。
为达此目的,本发明采用以下技术方案:
一种H.264的参考帧选择方法,包括:将16x16宏块划分为4个8x8块,对于每个8x8块在第一参考帧中进行运动搜索,如果某个8x8块的运动矢量的坐标值均小于阈值,则设置该第一参考帧为有效参考帧,否则对每个8x8块在剩余参考帧进行运动估计,并比较最小率失真代价,设定最小率失真代价为最小的参考帧作为有效参考帧。
其中所述参考帧选择方法包括如下步骤:
步骤1:B宏块判断,对输入的宏块进行是否是B宏块的判断,如判断结果为是,则进入步骤2后向参考帧设置,否则进入步骤3前向参考帧设置;
步骤2:后向参考帧设置,用于设置有效后向参考帧;
步骤3:前向参考帧设置,用于设置有效前向参考帧。
特别的,所述后向参考帧设置步骤包括如下子步骤:
步骤2.1,将16x16宏块划分为4个8x8块,对于每个8x8块的第一后向参考帧REFt+1进行运动搜索;
步骤2.2,判断步骤2.1中得到的运动矢量是否有某一个块对应的运动矢量的坐标值都小于阈值TH,如果有,则进入步骤2.3,否则,进入步骤2.4;
步骤2.3,设置第一后向参考帧REFt+1为有效后向参考帧,结束后向参考帧的设置,进入步骤3前向参考帧设置;
步骤2.4,使得所述4个8x8块对剩余的参考帧进行运动估计,保存所述8x8块相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效后向参考帧。
特别的,所述前向参考帧设置步骤包括如下子步骤:
步骤3.1,将16x16宏块划分为4个8x8块,对于每个8x8块的第一前向参考帧REFt-1进行运动搜索;
步骤3.2,判断步骤3.1中得到的运动矢量是否有某一个块对应的运动矢量的坐标值都小于阈值TH,如果有,则进入步骤3.3,否则,进入步骤3.4;
步骤3.3,设置第一前向参考帧REFt-1为有效前向参考帧,结束前向参考帧的设置,完成参考帧设置;
步骤3.4,使得所述4个8x8块对剩余的参考帧进行运动估计,保存相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效前向参考帧,然后完成参考帧设置。
特别的,所述阈值根据编码器的性能而设置。
本发明还公开了一种H.264参考帧选择装置,其包括
将16x16宏块划分为4个8x8块,对于每个8x8块在第一参考帧中进行运动搜索,如果某个8x8块的运动矢量的坐标值均小于阈值,则设置该第一参考帧为有效参考帧,否则对每个8x8块在剩余参考帧进行运动估计,并比较最小率失真代价,设定最小率失真代价为最小的参考帧作为有效参考帧。
所述参考帧选择装置包括如下单元:
B宏块判断单元,用于对输入的宏块进行是否是B宏块的判断,如判断结果为是,则进入后向参考帧设置单元,否则进入前向参考帧设置单元;
后向参考帧设置单元,用于设置有效后向参考帧;
前向参考帧设置单元,用于设置有效前向参考帧。
其中在后向参考帧设置单元和前向参考帧设置单元,均利用上述原则进行参考帧的选择。
所述后向参考帧设置单元包括如下子单元:
第一运动搜索子单元,将16x16宏块划分为4个8x8块,对于每个8x8块的第一后向参考帧REFt+1进行运动搜索;
第一阈值判断子单元,判断所述第一运动搜索子单元中得到的运动矢量是否有某一个块对应的运动矢量的坐标值都小于阈值TH,如果有,则进入第一后向参考帧设置子单元,否则,进入剩余后向参考帧判断设置子单元;
第一后向参考帧设置子单元,设置第一后向参考帧REFt+1为有效后向参考帧,结束后向参考帧的设置,进入所述前向参考帧设置单元前向参考帧设置;
剩余后向参考帧判断设置子单元,使得所述4个8x8块对剩余的参考帧进行运动估计,保存所述8x8块相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效后向参考帧。
所述前向参考帧设置单元包括如下子单元:
第二运动搜索子单元,将16x16宏块划分为4个8x8块,对于每个8x8块的第一前向参考帧REFt-1进行运动搜索;
第二阈值判断子单元,判断所述第二运动搜索子单元中得到的运动矢量是否有某一个块对应的运动矢量的坐标值都小于阈值TH,如果有,则进入第一前向参考帧设置子单元,否则,进入剩余前向参考帧判断设置子单元;
第一前向参考帧设置子单元,设置第一前向参考帧REFt-1为有效前向参考帧,结束前向参考帧的设置,完成参考帧设置;
剩余前向参考帧判断设置子单元,使得所述4个8x8块对剩余的参考帧进行运动估计,保存相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效前向参考帧,然后完成参考帧设置。
在所述的H.264参考帧选择装置,所述阈值根据编码器的性能而设置。
本发明提出了一种高效的参考帧选取方法,通过把16x16宏块划分为4个8x8块,根据8x8块的初始运动搜索结果来选择最合适的参考帧,并将它们用于后面运动估计中。
本发明在H.264视频编码过程可以高效的选取参考帧,在多参考帧下有效的选择参考帧,可以提高视频编码效率,降低视频编码时间,在视频转码中高效率利用服务器资源,能提高系统的资源优化。在H.264视频编码过称中可以减少运动估计时间,是开发H.264多平台下硬件支持。
附图说明
图1 是根据本发明的H.264参考帧选择方法流程图;
图2是根据本发明的H.264参考帧选择装置的系统框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例1:
一种H.264参考帧选择方法,其特征在于:将16x16宏块划分为4个8x8块,对于每个8x8块在第一参考帧中进行运动搜索,如果某个8x8块的运动矢量的坐标值均小于阈值,则设置该第一参考帧为有效参考帧,否则对每个8x8块在剩余参考帧进行运动估计,并比较最小率失真代价,设定最小率失真代价为最小的参考帧作为有效参考帧。
具体而言,该方法包括如下步骤:
步骤1:B宏块判断,对输入的宏块进行是否是B宏块的判断,如判断结果为是,则进入步骤2后向参考帧设置,否则进入步骤3前向参考帧设置;
步骤2:后向参考帧设置,用于设置有效后向参考帧。
步骤3:前向参考帧设置,用于设置有效前向参考帧。
其中步骤2:后向参考帧设置包括如下子步骤:
步骤2.1,将16x16宏块划分为4个8x8块,对于每个8x8块的第一后向参考帧REFt+1进行运动搜索,将得到的4个运动矢量保存在
,将保存它们对应的最小率失真代价到中;
步骤2.2,判断集合中是否有一个元素对应的运动矢量x轴坐标和y轴坐标都小于阈值TH,如果有,则进入步骤2.3,否则,进入步骤2.4;
步骤2.3,设置第一后向参考帧REFt+1为有效后向参考帧,结束后向参考帧的设置,进入步骤3前向参考帧设置;
步骤2.4,使得所述4个8x8块对剩余的参考帧进行运动估计,保存所述8x8块相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效后向参考帧。
例如,可以设置变量m=2,在区间[REFt+2,REFt+M]中对8x8块进行运动估计,并保存运动矢量到,
保存对应的最小率失真代价到
中,并比较最小率失真代价,对于每个8x8块,计算
,则对应REFt+m设置为有效的后向参考帧。
步骤3:前向参考帧设置与后向参考帧设置的步骤类似,包括如下子步骤:
步骤3.1,将16x16宏块划分为4个8x8块,对于每个8x8块的第一前向参考帧REFt-1进行运动搜索,将得到的4个运动矢量保存在
,将保存它们对应的最小率失真代价到
中;
步骤3.2,判断集合中是否有一个元素对应的运动矢量x轴坐标和y轴坐标都小于阈值TH,如果有,则进入步骤3.3,否则,进入步骤3.4;
步骤3.3,设置第一前向参考帧REFt-1为有效前向参考帧,结束前向参考帧的设置,完成参考帧设置;
步骤3.4,使得所述4个8x8块对剩余的参考帧进行运动估计,保存相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效前向参考帧,然后完成参考帧设置。
例如,可以设置变量n=2,在区间[REFt-2,REFt-N]中对8x8块进行运动估计,并保存运动矢量到
,
保存对应的最小率失真代价到
中,并比较最小率失真代价,对于每个8x8块,计算
,
则对应REFt-n设置为有效的前向参考帧。
其中,在步骤2.2和步骤3.2中的阈值TH的选择根据编码器的性能,阈值越大,编码性能越差。
因此,本发明在H.264视频编码过程可以高效的选取参考帧,在多参考帧下有效的选择参考帧,可以提高视频编码效率,降低视频编码时间,在视频转码中高效率利用服务器资源,能提高系统的资源优化。在H.264视频编码过称中可以减少运动估计时间,是开发H.264多平台下硬件支持。
ISO和ITU共同组成的联合专家组提供的H.264编解码器参考模型JM中,对参考帧的选取可以采取本发明,以实现高效率的参考帧选择,作为JM中的一种多参考帧选择的一种新方法。
采用GPL授权的视频编码自由软件x264是一个基于H.264的。x264的主要功能在于进行H.264/MPEG-4 AVC的视频编码,本发明的技术方案还可以移植到此开源软件中,实现高效能参考帧的选取,应用到多核CPU的视频转码中。
实施例2:
本发明还公开了一种H.264参考帧选择装置,其包括
将16x16宏块划分为4个8x8块,对于每个8x8块在第一参考帧中进行运动搜索,如果某个8x8块的运动矢量的坐标值均小于阈值,则设置该第一参考帧为有效参考帧,否则对每个8x8块在剩余参考帧进行运动估计,并比较最小率失真代价,设定最小率失真代价为最小的参考帧作为有效参考帧。
所述参考帧选择装置包括如下单元:
B宏块判断单元,用于对输入的宏块进行是否是B宏块的判断,如判断结果为是,则进入后向参考帧设置单元,否则进入前向参考帧设置单元;
后向参考帧设置单元,用于设置有效后向参考帧;
前向参考帧设置单元,用于设置有效前向参考帧。
其中在后向参考帧设置单元和前向参考帧设置单元,均利用上述原则进行参考帧的选择。
所述后向参考帧设置单元包括如下子单元:
第一运动搜索子单元,将16x16宏块划分为4个8x8块,对于每个8x8块的第一后向参考帧REFt+1进行运动搜索;
第一阈值判断子单元,判断所述第一运动搜索子单元中得到的运动矢量是否有某一个块对应的运动矢量的坐标值都小于阈值TH,如果有,则进入第一后向参考帧设置子单元,否则,进入剩余后向参考帧判断设置子单元;
第一后向参考帧设置子单元,设置第一后向参考帧REFt+1为有效后向参考帧,结束后向参考帧的设置,进入所述前向参考帧设置单元前向参考帧设置;
剩余后向参考帧判断设置子单元,使得所述4个8x8块对剩余的参考帧进行运动估计,保存所述8x8块相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效后向参考帧。
所述前向参考帧设置单元包括如下子单元:
第二运动搜索子单元,将16x16宏块划分为4个8x8块,对于每个8x8块的第一前向参考帧REFt-1进行运动搜索;
第二阈值判断子单元,判断所述第二运动搜索子单元中得到的运动矢量是否有某一个块对应的运动矢量的坐标值都小于阈值TH,如果有,则进入第一前向参考帧设置子单元,否则,进入剩余前向参考帧判断设置子单元;
第一前向参考帧设置子单元,设置第一前向参考帧REFt-1为有效前向参考帧,结束前向参考帧的设置,完成参考帧设置;
剩余前向参考帧判断设置子单元,使得所述4个8x8块对剩余的参考帧进行运动估计,保存相对剩余参考帧的运动矢量和最小率失真代价,设定最小率失真代价为最小的参考帧作为有效前向参考帧,然后完成参考帧设置。
在所述的H.264参考帧选择装置,所述阈值根据编码器的性能而设置。
显然,本领域技术人员应该明白,上述的本发明的各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。