本发明涉及hevc视频编码特别是视频编码帧间预测快速深度划分技术领域,具体涉及一种基于残差分布的hevc快速帧间深度划分方法。
背景技术:
视频编码的目标是在码率的限制下获得最优的输出视频质量。高性能视频编码(hevc)即h.265是目前国际上最新的视频编码标准,通过采用灵活的四叉树划分结构及多种模式的帧内与帧间预测技术,极大地提高了编码效率,相比上一代视频编码标准h.264/avc其编码效率提高了一倍,但是编码器的计算复杂度也急剧增加。据统计,编码树单元(ctu)的模式选择耗费时间是整个编码时间的2/3以上,因此在实际编码器中难以应用,尤其是实时性应用。
技术实现要素:
本发明的目的在于提供一种基于残差分布的hevc快速帧间深度划分方法,该方法能够在保持视频编码质量的前提下有效降低帧间预测计算复杂度。
为了达到上述目的,本发明所采用的技术方案是:
一种基于残差分布的hevc(highefficiencyvideocoding,高效率视频编码)快速帧间深度划分方法,包括如下步骤:
1)在低延(ld,lowdelay)时或随机接入(ra,randomaccess)编码配置下读入当前编码帧,若是i帧则对所有编码树单元(ctu,codingtreeunit)执行帧内预测编码,并转向步骤8),若不是i帧则根据帧号判断该帧用于统计残差帧还是基于残差执行快速深度划分,若是用于统计残差帧则转向步骤2),否则转向步骤6);
2)对判定用于统计残差帧中的所有编码树单元执行hevc标准帧间预测流程,并对0、1、2三个深度下inter_2n×2n模式执行完成后以亮度通道4×4像素块为单位计算残差值,并对编码单元包含的4×4像素块的残差值取平均作为编码单元(cu,codingunit)的残差均值;
3)对判定用于统计残差帧中的所有编码树单元编码完成之后,根据编码树单元的最佳深度将编码过程中得到的编码单元残差分类为分割和不分割两类;
4)继续读入当前图像组(gop,groupofpictures)的下一帧,并返回步骤1)直到当前图像组中的所有帧编码完成以获得残差统计信息;
5)对步骤4)中由当前图像组中所有被判定为统计残差帧的残差统计信息使用高斯分布进行建模,并根据各深度下编码单元的残差均值来计算分割和不分割编码单元残差的均值和方差,以建立高斯概率密度函数;
6)对基于残差执行快速深度划分的编码帧中的所有编码树单元,对深度为0、1、2的编码单元的inter_2n×2n模式执行完成后以4×4像素块为单位计算残差值,并对编码单元包含的4×4像素块的残差值取平均作为编码单元的残差均值。
7)以当前编码单元残差均值为特征,根据高斯分布概率密度函数公式计算其概率大小,并判断是否直接终止划分;
8)对基于残差执行快速深度划分的编码帧继续编码剩余编码树单元及剩余编码帧,直到再次执行统计残差分布的帧或视频序列的全部帧编码完成。
进一步的,所述步骤1)具体为:根据当前编码帧的帧号计算是否属于进行统计残差分布的帧,计算公式如下:
s=k%(frame_rate+sizegop)
其中,frametype表示帧用途类型,frames表示用于统计残差分布的帧,framef表示利用残差执行快速深度划分的帧,k表示当前编码帧号,frame_rate表示该视频序列编码的帧率,sizegop表示该配置下图像组的尺寸。
进一步的,所述步骤2)包括如下步骤:
21)对统计残差帧中的所有编码树单元执行hevc标准帧间预测流程,即顺序执行merge模式、skip模式、inter_2n×2n模式及非方形预测单元模式划分;
22)当0、1、2三个深度下编码单元的inter_2n×2n模式执行完成后,将残差像素亮度通道按照4×4像素块大小进行划分,并计算其残差值,计算公式如下:
其中,resi(p,q)表示第p行第q列位置的残差像素值,wcu、hcu分别表示当前cu的宽度和高度,r(x,y)表示编码单元内第x行第y列位置4×4像素块的残差值;
23)根据r(x,y),得到当前编码单元的残差均值,计算公式如下:
其中,hblk和wblk分别表示当前cu高度和宽度上4×4像素块数,k表示当前编码帧号,d表示当前cu深度,i表示深度d下cu的顺序号。
进一步的,所述步骤3)具体包括如下步骤:
31)对统计残差帧中的所有编码树单元编码完成之后,首先按照0、1、2三个深度对应的编码单元尺寸为单位,遍历该编码树单元的真实深度;
32)根据真实的深度划分,将步骤2)得到的编码单元残差均值分为分割类残差和不分割类残差,计算公式如下:
其中,dcu表示cu的真实深度,d表示执行预测时cu深度,
进一步的,所述步骤5)包括如下步骤:
51)由步骤4)已经将残差按不同深度分为分割和不分割两类,对本周期用于统计残差分布的帧中所有残差按照深度以及是否分割计算残差均值,计算公式如下:
其中,i表示深度d下cu的z字形顺序号,k为当前编码帧帧号,
52)根据51)所得残差均值,对本周期用于统计残差分布的帧中所有残差按照深度以及是否分割计算方差,计算公式如下:
其中,
53)使用高斯分布对残差分布进行建模,则分割类cu和不分割类cu的残差服从
其中,s和
进一步的,所述步骤7)包括如下步骤:
71)如果把分割类编码单元误判为不分割类编码单元会对编码性能造成影响,并且随着深度和qp的增加影响会变小,因此定义约束项以控制分割精度,计算公式为:
其中,d表示当前cu的深度,qp表示当前编码树单元的编码量化参数,l为控制分割精度的约束项;
72)根据当前编码单元深度inter_2n×2n模式执行完成后所得残差,利用步骤5)可以得到该编码单元被确定为分割和不分割的概率分别为
73)根据计算得到的概率和控制分割精度的约束项,最终判断当前编码单元是否分割,判断公式如下:
其中,cutype表示编码单元类型,cus和
步骤8,对基于残差执行快速深度划分的编码帧继续编码剩余编码树单元及剩余编码帧,直到再次执行统计残差分布的帧或视频序列的全部帧编码完成。
本发明所达到的有益效果:
(1)本发明充分利用inter_2n×2n模式执行后的残差信息,由于残差可以直接反应预测准确与否,因此可根据当前cu预测残差分布确定是否进一步分割;
(2)本发明将残差根据ctu的实际深度将残差对应分为分割cu和不分割cu两类,并通过高斯分布准确的确定cu划分与否,具有较高的深度划分准确性;
(3)本发明利用一个完整gop视频帧进行关键参数的统计,一个gop包含各qp偏移情况下预测残差的变化,对后续帧执行预测决策更加具有合理性。
附图说明
图1为本发明的整体流程图。
图2为本发明执行当前cu快速深度划分决策流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
目前hevc帧间预测快速算法大部分基于视频帧的时空域相关性,使用先前已编码帧的同位ctu或当前帧空域邻近ctu的深度划分信息以及率失真代价(rdcost)等信息来预测当前ctu的深度,而没有考虑当前编码单元(cu)的预测情况。本发明基于初步帧间预测之后像素残差的分布作为特征,根据高斯概率公式确定当前cu被判断为分割类cu和不分割类cu的概率,提前确定cu的帧间深度划分是否终止,在保持视频编码质量的同时有效降低帧间编码的计算复杂度。
如图1和图2所示,一种基于残差分布的hevc快速帧间深度划分方法,包括以下步骤:
步骤1,在低延时(ra)或随机接入编码配置下读入当前编码帧,若是i帧则对所有编码树单元(ctu)执行帧内预测编码,并转向步骤8),若不是i帧则根据帧号判断该帧用于统计残差帧还是基于残差执行快速深度划分,若是用于统计残差帧则转向步骤2),否则转向步骤6);其中,根据当前编码帧的帧号计算是否属于进行统计残差分布的帧,计算公式如下:
s=k%(frame_rate+sizegop)
其中,frametype表示帧用途类型,frames表示用于统计残差分布的帧,framef表示利用残差执行快速深度划分的帧,k表示当前编码帧号,frame_rate表示该视频序列编码的帧率,sizegop表示该配置下图像组的尺寸。
步骤2,对判定用于统计残差帧中的所有编码树单元执行hevc标准帧间预测流程,并对0、1、2三个深度下inter_2n×2n模式执行完成后以亮度通道4×4像素块为单位计算残差值,并对编码单元包含的4×4像素块的残差值取平均作为编码单元的残差均值;具体为:
21)对统计残差帧中的所有编码树单元执行hevc标准帧间预测流程,即顺序执行merge模式、skip模式、inter_2n×2n模式及非方形预测单元模式划分;
22)当0、1、2三个深度下编码单元的inter_2n×2n模式执行完成后,将残差像素亮度通道按照4×4像素块大小进行划分,并计算其残差值,计算公式如下:
其中,resi(p,q)表示第p行第q列位置的残差像素值,wcu、hcu分别表示当前cu的宽度和高度,r(x,y)表示编码单元内第x行第y列位置4×4像素块的残差值;
23)根据r(x,y),得到当前编码单元的残差均值,计算公式如下:
其中,hblk和wblk分别表示当前cu高度和宽度上4×4像素块数,k表示当前编码帧号,d表示当前cu深度,i表示深度d下cu的顺序号。
步骤3,对判定用于统计残差帧中的所有编码树单元编码完成之后,根据编码树单元(ctu)的最佳深度将编码过程中得到的编码单元残差分类为分割和不分割两类;具体为:
31)对统计残差帧中的所有编码树单元编码完成之后,首先按照0、1、2三个深度对应的编码单元尺寸为单位,遍历该编码树单元(ctu)的真实深度;
32)根据真实的深度划分,将步骤2)得到的编码单元残差均值分为分割类残差和不分割类残差,计算公式如下:
其中,dcu表示cu的真实深度,d表示执行预测时cu深度,
步骤4,继续读入当前图像组(gop,groupofpictures)的下一帧,并返回步骤1)直到当前图像组中的所有帧编码完成以获得残差统计信息;
步骤5,对步骤4)中由当前图像组中所有被判定为统计残差帧的残差统计信息使用高斯分布(残差分布通常都认为是高斯分布)进行建模,并根据各深度下编码单元的残差均值来计算分割和不分割编码单元残差的均值和方差,以建立高斯概率密度函数;具体为:
51)由步骤4)已经将残差按不同深度分为分割和不分割两类,对本周期用于统计残差分布的帧中所有残差按照深度以及是否分割计算残差均值,计算公式如下:
其中,i表示深度d下cu的z字形顺序号,k为当前编码帧帧号,
52)根据51)所得残差均值,对本周期用于统计残差分布的帧中所有残差按照深度以及是否分割计算方差,计算公式如下:
其中,
53)使用高斯分布对残差分布进行建模,则分割类cu和不分割类cu的残差服从
其中,s和
步骤6,对基于残差执行快速深度划分的编码帧中的所有编码树单元,对深度为0、1、2的编码单元的inter_2n×2n模式执行完成后以4×4像素块为单位计算残差值,并对编码单元包含的4×4像素块的残差值取平均作为编码单元的残差均值。
步骤7,以当前编码单元残差均值为特征,根据高斯分布概率密度函数公式计算其概率大小,并判断是否直接终止划分;若终止划分,则当前cu的最终深度确定,使用此深度对当前cu编码后转向步骤8);若不终止,则当前cu的编码深度加1,转向步骤6)判断下一深度是否会终止,直到终止划分或达到最大深度。
71)如果把分割类编码单元误判为不分割类编码单元会对编码性能造成影响,并且随着深度和qp的增加影响会变小,因此定义约束项以控制分割精度,计算公式为:
其中,d表示当前cu的深度,qp表示当前编码树单元的编码量化参数,l为控制分割精度的约束项;
72)根据当前编码单元深度inter_2n×2n模式执行完成后所得残差,利用步骤5)可以得到该编码单元被确定为分割和不分割的概率分别为
73)根据计算得到的概率和控制分割精度的约束项,最终判断当前编码单元是否分割,判断公式如下:
其中,cutype表示编码单元类型,cus和
步骤8,对基于残差执行快速深度划分的编码帧继续编码剩余编码树单元及剩余编码帧,直到再次执行统计残差分布的帧或视频序列的全部帧编码完成。
上述方案通过充分利用inter_2n×2n模式后的残差为特征进行快速帧间cu深度划分决策,在保持视频编码质量的同时有效降低了帧间预测的计算复杂度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。