Hevc中屏幕内容编码的码率控制方法
【专利摘要】本发明公开了一种HEVC中屏幕内容编码的码率控制方法,该方法包括以下步骤:初始化编码参数,并建立滑动窗口;为滑动窗口分配相应的比特,并且在滑动窗口内对于视频序列进行运动估计,得到视频序列中的每一帧图像相对于前一帧图像的复杂度变化;根据得到的每一帧的复杂度在滑动窗口内对于当前帧进行比特分配;判断当前帧是否为场景切换帧,如是,则对当前帧及其后续帧进行比特处理;判断当前帧是否为最后一帧,如否,则更新滑动窗口内的比特数目和编码参数,返回比特分配步骤,对于下一帧继续进行编码,如是,则结束当前视频的编码过程。本发明能够对于屏幕内容序列进行有针对性的码率控制,从而有效地降低了码率控制误差,提升了编码效率。
【专利说明】HEVC中屏幕内容编码的码率控制方法
【技术领域】
[0001] 本发明涉及多媒体通信【技术领域】,具体地,涉及一种HEVC (High Efficiency Video Coding)屏幕内容编码的码率控制方法。
【背景技术】
[0002] HEVC编码标准在H. 264/AVC high profile的基础上,压缩效率提高一倍,是一种先 进的视频编解码标准。然而由于当前信道本身的有效网络带宽有限并且实时变化,高清视 频在无线环境下的传输仍然充满挑战。因此,在有限的带宽内合理分配资源使得目前的视 频质量达到最优是当前研究的一个热点和难点。
[0003] 码率控制是解决上述问题的一个关键手段。它能够将当前信道的状态反馈给编码 器,使得编码器更加合理的分配码率,从而优化视频的质量。码率控制分为比特分配和比特 控制。在比特分配部分中,采用分层架构,分为G0P层、帧层和基本单元层;在比特控制部分 中,通过调整编码参数使得最后消耗的比特尽量接近预分配的比特。
[0004] 在目前HEVC标准中,采用的是R- λ模型来进行码率控制,该模型表示如下:
[0005] λ = a .bpp0,
[0006] 其中,bpp是当前视频序列中每个像素能够分配到的比特,由当前视频的分辨率和 当前信道的带宽以及视频的帧率决定,α和β是R-λ模型中的编码参数,在视频序列开始 编码时进行初始化,它们的值由视频序列的内容决定并且在编码过程中进行迭代更新。由 于自然序列变化比较平缓,因此利用该R- λ模型能够快速迭代并收敛,也就是说,该R- λ 模型在自然序列中能够非常精准地控制码率。但在屏幕内容序列中,经常出现前后两帧完 全一样或者差别巨大的情况,这与自然序列特性存在比较大的差别,屏幕内容序列与自然 序列编码复杂度分析的比较情况如图1所示,从图1中可以看出,FourPeople这个序列是 自然序列,每一巾贞相对于前一巾贞SAD值的变化比较平和,而SlideShow则是屏幕内容序列, SAD值的变化比较剧烈。屏幕内容序列变化比较剧烈的特性使得当前的码率分配和比特控 制策略不再适用。
【发明内容】
[0007] 本发明提出一种HEVC屏幕内容编码的码率控制方法,从而能够在充分利用带宽 的iu提下提商视频的质量。
[0008] 本发明提出的一种HEVC中屏幕内容编码的码率控制方法包括以下步骤:
[0009] 步骤1 :初始化编码参数并建立滑动窗口;
[0010] 步骤2 :为所述滑动窗口分配相应的比特,并且在所述滑动窗口内对于视频序列 进行运动估计,得到视频序列中的每一帧图像相对于前一帧图像的复杂度变化;
[0011] 步骤3 :根据得到的每一帧的复杂度在滑动窗口内对于当前帧进行比特分配;
[0012] 步骤4:判断当前帧是否为场景切换帧,如是,则对当前帧及其后续帧进行比特处 理;
[0013] 步骤5 :判断当前帧是否为最后一帧,如否,则更新所述滑动窗口内的比特数目和 编码参数,然后返回步骤3,对于下一帧继续进行编码,如是,则结束当前视频的编码过程, 编码完成。
[0014] 本发明能够对于屏幕内容序列进行有针对性的码率控制,从而有效地降低了码率 控制误差,提升了编码效率。
【专利附图】
【附图说明】
[0015] 图1是HEVC中自然序列和屏幕内容序列编码复杂度分析的比较示意图;
[0016] 图2是本发明HEVC中屏幕内容编码的码率控制方法原理框图。
[0017] 图3是本发明HEVC中屏幕内容编码的码率控制方法的流程图。
【具体实施方式】
[0018] 本发明提出一种HEVC屏幕内容编码的码率控制方法,在该方法中,首先初始化编 码参数并建立滑动窗口,在滑动窗口内对视频序列进行菱形模板的快速运动估计,通过运 动估计得到每一帧图像相对于前一帧的复杂度变化;根据每一帧的复杂度按照比例在滑动 窗口内对当前帧进行比特分配;然后根据当前帧的不同类型,进行不同的编码处理。
[0019] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照 附图,对本发明进一步详细说明。
[0020] 图2是本发明HEVC中屏幕内容编码的码率控制方法原理框图,图3是本发明HEVC 中屏幕内容编码的码率控制方法的流程图,如图2和图3所示,所述HEVC中屏幕内容编码 的码率控制方法包括以下步骤:
[0021] 步骤1 :初始化编码参数并建立滑动窗口;
[0022] 在本发明一实施例中,利用R-λ模型进行码率控制,所述编码参数至少包括R-λ 模型所涉及的编码参数和本发明中增加的一些机制中的参数,比如滑动窗口的长度,补偿 窗口的长度,补偿窗口中每一帧的补偿权重值以及用于场景切换帧的判断阈值等参数;另 夕卜,为了满足实时性的要求,在本发明一实施例中,当前滑动窗口的长度设置为8。
[0023] 步骤2 :为所述滑动窗口分配相应的比特,并且在所述滑动窗口内对于视频序列 进行运动估计,得到视频序列中的每一帧图像相对于前一帧图像的复杂度变化;
[0024] 该步骤中,在开始编码时,初始化相应的缓存,读入预定帧数的视频,然后开始运 动估计。
[0025] 在本发明一实施例中,运动估计所采用的搜索窗口的大小是[-64,64]。
[0026] 在进行运动估计时,首先从当前帧的参考图像列表中找到与所述当前帧最相似 的参考图像,然后基于当前帧和该参考图像进行运动估计,从而得到当前帧的绝对差值和 (SAD)和每一个编码树单元(CTU)的SAD,最后求出当前帧相对于前一帧的SAD。在运动估 计的过程中,可以在所述搜索窗口内进行全搜索或者模板搜索来寻找最佳匹配块,为了加 快估计速度,可以使用模板搜索来减少匹配的时间,同时还可以设置SAD阈值,如果当前得 到的SAD值小于该SAD阈值,则提前退出当前帧的运动估计并得到运动估计的结果。
[0027] 需要说明的是,在进行运动估计的过程中,配置文件不同,参考图像就不同。
[0028] 步骤3 :根据得到的每一帧的复杂度在滑动窗口内对于当前帧进行比特分配;
[0029] 该步骤中,利用以下几何模型来进行比特分配:
【权利要求】
1. 一种HEVC中屏幕内容编码的码率控制方法,其特征在于,该方法包括以下步骤: 步骤1 :初始化编码参数并建立滑动窗口; 步骤2 :为所述滑动窗口分配相应的比特,并且在所述滑动窗口内对于视频序列进行 运动估计,得到视频序列中的每一帧图像相对于前一帧图像的复杂度变化; 步骤3 :根据得到的每一帧的复杂度在滑动窗口内对于当前帧进行比特分配; 步骤4 :判断当前帧是否为场景切换帧,如是,则对当前帧及其后续帧进行比特处理; 步骤5 :判断当前帧是否为最后一帧,如否,则更新所述滑动窗口内的比特数目和编码 参数,然后返回步骤3,对于下一帧继续进行编码,如是,则结束当前视频的编码过程,编码 完成。
2. 根据权利要求1所述的方法,其特征在于,在进行运动估计时,首先从当前帧的参考 图像列表中找到与所述当前帧最相似的参考图像,然后基于当前帧和该参考图像进行运动 估计,从而得到当前帧的绝对差值和SAD和每一个编码树单元CTU的SAD,最后得到当前帧 相对于前一帧的SAD。
3. 根据权利要求1所述的方法,其特征在于,在进行运动估计时,在所述搜索窗口内利 用全搜索或者模板搜索来寻找最佳匹配块。
4. 根据权利要求1所述的方法,其特征在于,在进行运动估计时,还设置有SAD阈值,如 果当前得到的SAD值小于该SAD阈值,则退出当前帧的运动估计。
5. 根据权利要求1所述的方法,其特征在于,所述步骤3中,利用下式来进行比特分 配:
其中,SW为滑动窗口的初始化长度,Picleft为当前编码的序列所剩余的帧数,Nsw表示 在编码过程中所使用的滑动窗口的大小;TSWKatelrft代表当前帧编码完成后滑动窗口内剩余 的比特数目,R tajPF分别为目标码率和帧率,Tsw^表示在对当前帧进行编码时滑动窗口 内的比特数目;表示当前帧的复杂度,C sw表示滑动窗口内所有帧的复杂度的总和,Τ_Η。 表示当前帧所分配的比特数目。
6. 根据权利要求1所述的方法,其特征在于,所述步骤4中,利用下式来判断当前帧是 否为场景切换帧:
其中,APflag是表示当前帧是否为场景切换帧的标记变量,CPM表示之前所有编码帧的 SAD值总和,NPM表示之前所有已编码帧的数目。
7. 根据权利要求1所述的方法,其特征在于,所述比特处理包括:自适应调整编码过程 中所使用的编码参数λ,以控制当前场景切换帧消耗的比特达到目标比特;以及在场景切 换帧后建立补偿窗口,并在补偿窗口内提高当前帧分配比特的权重。
8. 根据权利要求7所述的方法,其特征在于,对于所述编码参数λ进行调整的步骤包 括以下步骤: 首先,利用下式计算得到当前CTU预分配的目标比特数RCTU :
其中,表示当前CTU的SAD值,ClrftCTU表示当前帧中没有编码的CTU的SAD值总 和,心^?表示当前帧剩余的比特数目; 然后,依据当前CTU预分配的目标比特数RCTU,计算得到R-λ模型中的编码参数
其中,RCTU表示当前CTU预分配的目标比特数,NCTU表示当前CTU中像素的数目,则
表示当前CTU的每个像素所分配的比特数,α和β为R-λ模型中计算λ的参数; 然后,计算当前的调整参数Υ :
其中,函数clip3()表示对当前参数的限制,函数clip3()中第一个参数是允许γ 的下限,第二个参数是上限,第三个参数是赋值给Y的值,
表示当前 帧中所有CTU预分配的比特数 ^LastTotalTar 与实际消耗比特数目 ^LastTotalActual 之间的比例,
表示与当前CTU相邻的上一个CTU预分配的比特数& astCTUTa,与实际 消耗比特数目& astCTUActual 之间的比例; 最后,利用当前的调整参数Y来调整编码参数λ。1(1: λ new = Υ * 入 old, 其中,λ 表示调整之后的编码参数,λ。1(1表示调整之前的编码参数。
9. 根据权利要求7所述的方法,其特征在于,如果当前帧不是场景切换帧并且位于补 偿窗口内,则利用下式对于当前帧进行比特分配:
其中,S是补偿权重,i表示当前帧在补偿窗口中的位置,TAPartual表示当前补偿窗口之 前的场景切换帧实际消耗的比特数目,?\表示当前帧实际分配到的比特数目。
10. 根据权利要求7所述的方法,其特征在于,如果当前帧不是场景切换帧并且不在补 偿窗口内,则采用R-λ模型对其进行码率控制。
【文档编号】H04N19/149GK104104951SQ201410369826
【公开日】2014年10月15日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】孙松林, 郭耀耀, 陈娜, 刘玮 申请人:北京邮电大学