本发明涉及一种图像处理技术领域的方法,具体是一种基于显著性的码率控制比特分配方法。
背景技术:
视频压缩在过去的几十年取得了长足的进展,从早期的H.261到今天的H.264和HEVC,视频编码技术通过一代一代的演进,大致确立了混合编码框架的编码结构。各种模块技术的演进则极大地提升了视频编码的性能,最新的HEVC已经实现了相比上一代编码器H.264提升50%性能的要求。
在实时通信领域,比如视频会议,视频流会消耗大量的带宽,当带宽本身就有限时,视频的质量会受到严重影响。在解决有限带宽的问题上,精确的码率控制显得尤为重要,码率控制是一个非常有效的视频编码工具。具体来说,码率控制就是在一个给定的码率下,尽可能地提升视频的编码质量。对绝大多数码率控制方案,通常的做法就是给不同的帧和编码单元分配合适的目标比特。比如MPEG-2采用了TM5码率控制算法,MEPG-4采用了VM8算法,H.264/MPEG-4Advanced Video Coding(AVC)采用了R-Q算法,最新的HEVC则采用了R-lambda算法。与此同时,在过去几年,人类视觉系统的研究取得了极大的进展,比如显著性图,图像的显著性指的是人眼对于图像各区域的关注度,显著性更强的区域,相比其周围的区域,更能吸引眼球,更能抓住人的注意力。
在这些传统的算法中,在编码单元层的码率控制均是根据其内容复杂度来确定的。尽管这种方法能够在一定程度上反映出其最终的编码比特,但是其忽略了图像内容间的关系,在带宽受限的情况下,不能保证图像中人们普遍关心的区域的质量得到保护。同时,如果只关注感兴趣区的质量而不考虑整幅图像的显著性失真,非感兴趣区质量的严重下降会导致人们的注意力转移到那些本该忽略的不重要区域。
技术实现要素:
本发明针对现有视频编码技术的缺陷,提供一种基于显著性的码率控制比特分配方法,该方法通过考虑显著性图作为编码单元的比特分配权重,同时考虑编码前后显著性失真并以此指导下一帧的目标比特分配,从而获得更好的编码性能。
为实现以上目的,本发明采用的技术方案是:本发明通过频率调节显著性区域的检测方法,对每一帧图像计算得到每一帧图像的显著性图;根据每一帧图像的显著性图计算每一个最大编码单元的显著性加权平均值;根据每一个最大编码单元的加权平均值在未编码单元的显著性图所占比例,对各个编码单元进行目标比特的分配。通过引入原始图像和重构图像的近似显著性失真,得到基于显著性的拉格朗日乘子;根据基于显著性的拉格朗日乘子,对后续帧级比特分配进行调整,实现码率控制功能。
本发明在考虑了显著性图指导当前帧的比特分配的同时,还考虑了编码前后基于显著性的失真情况,从而对后续帧的帧级码率控制起到指导作用,因而能够在最大编码单元级和图像级实现基于显著性的码率控制。
具体的,本发明所述的基于显著性的码率控制比特分配方法包括如下步骤:
①读取当前编码帧,计算当前帧的显著性图;
②根据当前帧的显著性图,计算各个最大编码单元的显著性值,其显著性值为对应的最大编码单元中显著性值的加权平均值;
③根据每个最大编码单元的显著性值,计算每个最大编码单元在当前编码帧中的权重,其权重为对应的最大编码单元在当前编码帧中尚未编码的最大编码单元的显著性加权值中所占比例;
④根据最大编码单元的显著性权重(即上一步骤中的最大编码单元在当前编码帧中的权重),分配各个编码单元的目标比特;
⑤根据当前编码帧的原始图像和重构图像,计算编码前后显著性失真;
⑥通过引入显著性失真,在帧级码率分配引入基于显著性的拉格朗日乘子;
⑦根据引入的基于显著性的拉格朗日乘子调整下一帧的码率,实现码率控制。
优选地,所述第④步骤中,各个编码单元的目标比特不仅由编码单元的内容复杂度确定,还由编码单元在整幅图像上的显著性水平确定;
设T’CTU表示由编码单元内容复杂度确定的目标比特,表示由显著性权重确定的目标比特,则编码单元最终的目标比特TCTU为
其中:ratio是权重因子,表明显著性权重比特分配方法应在整个比特分配中占多大的比重。
所述第⑦步骤中,影响下一帧比特分配的拉格朗日乘子不仅由图像的内容复杂度确定,还由编码前后图像的显著性失真确定;
设λavr表示由图像内容复杂度确定的拉格朗日乘子,λsal表示由编码前后显著性失真确定的拉格朗日乘子,则最终影响下一帧比特分配的拉格朗日乘子λfinal为:
λfinal=(1-ratio)×λavr+ratio×λsal
其中:ratio是权重因子,表明基于显著性失真的拉格朗日乘子在最终决定下一帧比特分配的拉格朗日乘子中占多大的比重。
本发明设计的基于显著性的码率控制比特分配方法,在给某个编码单元分配目标比特的时候,将其相对显著性的值考虑进来,具体地,当前编码单元的显著性值较未编码单元的显著性值的和的比例越大,则说明该编码单元被人们注意到的概率越大,其权重因此比较高,给其分配相对较多的比特,使其以一种较高质量的方式编码,这样就能够保证编码后的人们普遍感兴趣的区域的质量得到保证。同时,通过考虑编码前后显著性失真情况,调整后续帧的比特分配,可以保证整体显著性图的质量,进而确保非感兴趣区域的质量不会下降太过严重,确保人们的关注区域不会出现偏移。
与现有技术相比,本发明具有如下的有益效果:
本发明在考虑了感兴趣区域的质量以外,还考虑了整幅图像的显著性失真情况,从而在保证感兴趣区域质量的同时,确保了整体图像的质量。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明一实施例基于显著性的码率控制比特分配方法的流程图;
图2是本发明实施例中BlowingBubbles第600帧在两种方法下编码的结果;
图3是本发明实施例中KristenAndSara第163帧在两种方法下的编码结果。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
以下实施例将本发明方法应用到最新的HEVC编码框架的码率控制方法中,具体操作流程如图1所示:
①读取当前编码帧,计算当前帧的显著性图;
②根据当前帧的显著性图,计算各个最大编码单元的显著性值,该显著性值为对应的最大编码单元中显著性值的加权平均值;
③根据每个最大编码单元的显著性值,计算每个最大编码单元在当前编码帧中的权重,该权重为对应的最大编码单元在当前编码帧中尚未编码的最大编码单元的显著性加权值中所占比例;
④根据最大编码单元的显著性权重,分配各个编码单元的目标比特;
⑤根据当前编码帧的原始图像和重构图像,计算编码前后显著性失真;
⑥通过引入显著性失真,在帧级码率分配引入基于显著性的拉格朗日乘子;
⑦根据引入的基于显著性的拉格朗日乘子调整下一帧的码率,实现码率控制。
其中第①步到第④步是根据显著性图实现编码树单元或最大编码单元级的比特分配,第⑤步到第⑦步是根据编码前后显著性失真实现帧级的比特分配。下面先介绍最大编码单元级比特分配的过程,然后介绍帧级比特分配。
1.最大编码单元级比特分配
最新的HEVC参考代码HM16.9在码率控制中采用了R-lambda算法。该算法在码率和拉格朗日乘子之间建立了如下的指数关系:
λ=α×bppβ (1)
其中bpp表示每个像素的比特,它是目标比特T与像素个数N之间的比值:
α和β是模型参数,每次编码一帧或者一个CTU之后会更新这些模型参数。
比特分配在三个层次上分别实现,GOP层的目标比特是根据全局目标码率、帧率、GOP的帧数来确定的,图像层的目标比特是根据当前GOP的剩余比特和剩余未编码帧数、帧类型来确定的,而CTU层的比特则是根据其内容复杂度来分配的:
其中:TPic是当前帧的目标码率,CodedPic是当前帧已编码部分消耗的比特。ωCTU是CTU的权重,在R-λ模型中,CTU的权重由平均绝对误差(MAD)的平方来衡量:
ωCTU=MADCTU2 (4)
MAD的计算方式为:
其中:N是CTU中的像素个数,Porg(i)是原始帧的像素值,Ppred(i)是预测帧的像素值,此处的预测帧设定为与当前帧属于同一层次的前一个已编码帧。
基于显著性的比特分配T*CTU修改CTU层的比特分配为:
其中:TPic是当前编码帧的目标比特,CodedPic是当前编码帧的已编码部分消耗的比特,SWCTU是编码树单元的显著性权重,SWCurCTU表示当前编码树单元的显著性权重,表示当前帧内所有未编码树单元的显著性权重之和。
本发明将编码树单元的显著性权重SWCTU设定为当前最大编码单元的加权平均值:
其中:νCurCTU是当前最大编码单元中的显著性值的和,SCurCTU为当前最大编码单元的大小。
同时,本发明将按内容复杂度的比特分配方法考虑进来,设T’CTU表示由编码单元内容复杂度确定的目标比特,通过(3)计算得到,表示由显著性权重确定的目标比特,通过(6)得到,则编码单元最终的目标比特TCTU为:
其中:ratio是权重因子,表明显著性权重比特分配方法应在整个比特分配中占多大的比重,取值范围为[0,1],本发明一实施例中设定为0.5。
2.帧级码率控制
不同于传统的R-D模型,本发明引入了一种基于显著性的失真,如下所示:
其中:DMSE为编码前后均方误差失真,Dsal为编码前后显著性失真,R表示码率,BUi表示基本单元,Q表示量化因子。λRi表示每一个基本单元基于显著性失真的拉格朗日乘子。λsal表示由编码前后显著性失真确定的拉格朗日乘子。
为了降低计算基于显著性的拉格朗日乘子的计算复杂度,基本单元根据图像大小选择8乘8、16乘16或32乘32中的一种作为基本单元的大小。量化因子Q和量化参数QP之间的关系如下:
Q=2(QP-4)/6 (10)
Dsal(Q,BUi)表示显著性失真,如下式所示:
其中:S(BUi)表示原始基本单元的显著性图,表示经过大小为Q的量化编码重构后的显著性图。
为了保证(9)中Ji最小,可以通过对(9)式求驻点的方式得到下式:
又因为Ji为凸函数,所以其驻点就为其极小值点,对(12)式进行进一步推导得到(13)和(14)式:
其中:R(Q,BUi)为当前编码单元在量化步长为Q的模式下的码率。
通过(15)和(16),通过每一个基本单元的基于显著性失真的拉格朗日乘子,进而得到整幅图像的拉格朗日乘子:
同时,本发明将按内容复杂度计算得到的拉格朗日乘子考虑进来,设λavr表示由图像内容复杂度确定的拉格朗日乘子,λsal表示由编码前后显著性失真确定的拉格朗日乘子,则最终影响下一帧比特分配的拉格朗日乘子λfinal为:
λfinal=(1-ratio)×λavr+ratio×λsal (17)
其中:ratio是权重因子,表明基于显著性失真的拉格朗日乘子在最终决定下一帧比特分配的拉格朗日乘子中占多大的比重,本发明一实施例中设定为0.2。
得到的λfinal通过(18)和(19)得到和为下一帧码率控制参数作调整:
其中:λfinal为用于下一帧比特分配的拉格朗日乘子,λ为当前帧的拉格朗日乘子,α和β为当前帧码率控制参数,δα和δβ为调整系数,分别设置为0.1和0.05。
3.实施条件与结果
基于HM 16.9软件实现应用本发明方法的时域依赖的比特分配方案,以HEVC标准的low delay P配置参数作为编码参数,目标码率设定为在四个QP(22,27,32,37)下,无码控的编码码率的近似值,如表1所示。HEVC标准测试序列中的Class B~Class E作为测试序列。
表1目标码率设置
在上述实施条件下,得到了表2和表3所示的编码结果。其中“原始方法”指的是用于对比的、相同条件下原始HM16.9的编码方法;“目前方法”指的是应用了本发明的实施例的编码方法。
表2所示的是两种方法码率控制准确度的结果,采用的是实际码率相对设定的目标码率的偏差百分比,可以看出两种方法的码率控制准确度基本上一致。
表3所示的是两种方法编码性能的结果,采用BD-Rate计算方法,表现了“目前方法”相对“原始方法”在相同编码质量下码率节省的百分比,可以发现相对“原始方法”,在同样的峰值信噪比(PSNR)下,“目前方法”均有一定的码率节省。
表2码率控制准确度结果
表3编码性能结果
经过上述对比发现,“目前方法”相对“原始方法”有更好的视觉质量。
图2是本发明实施例中BlowingBubbles第600帧在两种方法下编码的结果,可以看到相对左边的“原始方法”,右边的“目前方法”在某些感兴趣区域,比如小女孩的面部,有更好的视觉质量。
图3是本发明实施例中KristenAndSara第163帧在两种方法下的编码结果,对比可得同样结论。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。