一种基于率失真函数分析模型的svc平滑重建方法

文档序号:7664861阅读:152来源:国知局
专利名称:一种基于率失真函数分析模型的svc平滑重建方法
技术领域
本发明涉及一种视频编码平滑重建方法,特别是关于一种基于率失真函数分析模型的SVC平滑重建方法。

背景技术
近年来,随着互联网技术的发展和普遍应用,网络越来越影响人们的生活方式。由于视频信息具有直观性强,内容丰富等特点,因此视频传输在网络传输领域占据了越来越重要的地位。然而,在互联网上进行视频传输,对视频压缩、网络传输等提出了新的挑战。由于网络带宽不稳定导致的不可避免的网络拥塞,以及终端设备应用需求和解码播放能力的差异,所有这些都要求视频编码和传输具有可伸缩的特性。可伸缩视频编码编码(JVT SVC)便是在这种需求下由高压缩效率标准H.264/AVC发展而来的视频编码方案,它不仅能够提供空域、时域和质量的可伸缩性,提供精确到位的码率截断,而且使得编码效率大大提高,接近传统定码率视频编码的压缩率。
在H.264/AVC的SVC扩展中,空间可伸缩性使用分层的方法,首先将图像分解为多个空间分辨率的信号,每个分辨率都是一个空间编码层,帧内预测和帧间预测可以跨层进行,具体包括层间帧内预测、层间帧间预测、层间残差预测。为实现时域可伸缩性,每个空间层内都使用层次化B帧编码结构,高时间级的图像通过低时间级的图像作为参考帧进行时间预测。为防止误差扩散,SVC中提出了关键帧(key picture)的概念,所有在关键帧之前编码的帧也在其之前显示,关键帧与位于时域上这个关键帧之前的关键帧之间的所有图像形成一个图像组(GOP)。GOP中除关键帧之外的所有图像编码为层次化B帧,以提供时间可伸缩性,同时将误差扩散控制在一个GOP中。质量可伸缩主要通过对变换系数的逐级量化和位平面编码来实现质量/信噪比(SNR)的可伸缩性。具体通过粗糙粒度可伸缩性(CGS),中等粒度可伸缩性(MGS),精细粒度可伸缩性(FGS)等技术实现质量的可伸缩性。
视频平滑重建是流媒体传输提高效率的一个重要方面,能有效提高视频的传输质量。一般情况下认为,重建视频流每一调度单元之间的质量变化要尽可能小,同时充分利用网络带宽,这样解码视频平滑问题可以描述为下面的优化问题 其中RT表示目标码率(即网络平均带宽),Ri和PSNRi表示第i个调度单元分配的码率和其相应质量,PSNRave表示平均的视频质量,N表示视频调度单元的平滑总数。显然当所有视频调度单元的质量相同时,视频的总体质量最高。
通常情况下,解公式(1)需要得到视频每一调度单元的率失真函数,然后根据这些率失真函数得到视频的码率分配方案,这个过程通常的方法是给每一个调度单元先赋一个相同的失真值PSNRave,计算对应各个调度单元对应的码率Ri,比较

与N*RT的大小,然后调节PSNRave的大小,使得

与N*RT的差值逐渐变小,达到精度允许的范围,这通常需要多次的循环计算才能达到目标,一般计算量比较大,实际应用也不太方便。而基于率失真函数的视频平滑方法先前也已经有一定的研究,首先需要根据网络的平均带宽

得到一个恒定的目标分配质量Dtarget,然后根据这个目标质量Dtarget得到视频每一帧(或调度单元)的码率分配方案。而为了得到Dtarget,需要计算一个受限于

的联合函数C(D) 其中Ri(D)是第i帧(或调度单元)的率失真函数,N是平滑的帧(或调度单元)数。通过公式(2),可以得到则第i帧(或调度单元)分配的码率可以计算为然而一般情况下很难得到C-1的解析式,现有的插值法得到的率失真函数,往往需要计算量很大的循环搜索才能得到视频平滑的码率分配,很不实用,对于视频服务器的实时调度来说是个很大的负担。由此可见,为了进一步提高SVC的编码性能,一种快速高效的视频重建平滑方法还是相当必要的。
广义高斯分布GGD(Generalized Gaussian distribution)是一个范围很广的概率模型,其概率密度函数可以表示为 和 其中μ是概率均值,α>0是形状参数,描述了概率密度函数的形状,其中α=1对应拉普拉斯分布,α=2对应高斯分布,α值越小,概率密度函数越尖,在零附近的数目越多,α值越大,概率分布越均匀,其函数图如图2所示,β是根方差, SVC中的量化模式可以由以下公式描述 W′=Δ·Z (4b) (4a)为量化公式,(4b)为反量化公式。其中W是输入信号,Z是量化后的值,W′是反量化后的重建值,Δ为量化步长,f为控制参数,int()为向下取整函数。在SVC测试模型里,f在帧内模式中设为1/3,在帧间模式中设为1/6。
为了简化广义高斯分布概率密度函数的描述,可以将广义高斯分布的分布函数变换成如下形式 其中对于任意的根方差β,任意的变量δ>0,令量化步长为Δβ=βδ,假设以Ri=iΔβ为重建值的概率和为Pi(Δβ),则Pi(Δβ)可以表示为 对于特定的参数α和f,Pi(Δβ)是关于变量δ的函数,量化码率可以表示为 所以熵码率H(Δβ)是关于变量δ的函数,H(Δβ)=fα(δ),由量化方法易知,fα(δ)是δ的单调减函数,因此有 对于广义高斯分布,公式(4a)和(4b)中的量化模式是关于0对称的,因此,量化的均方误差MSE可以表示为 其中, 即D(Δβ)=β2gα(δ)=β2gα(fα-1(H(Δβ)),如果以PSNR为失真标准,可以得到 由(11)可知,对于相同的参数α和β,广义高斯分布的率失真函数的导数 存在,且与根方差β无关。我们通过大量的模拟试验得出,通常地,随着码率增加,失真速率函数的导数会逐渐减小至传统的6.02db/bit,如图3所示,是广义高斯分布失真速率函数导数的曲线图。
这个特性对于具体方法中的率失真函数建模是相当有用的。


发明内容
针对上述问题,本发明的目的是提供一种基于率失真函数分析模型的SVC平滑重建方法,以较小的复杂度尽可能的提高重建视频的主观以及客观质量。
为实现上述目的,本发明采用如下技术方案 (1)提出一种伪GOP(Virtual GOP)的概念,每个伪GOP包含两个相邻的关键帧(key picture)和之间的所有B帧,关键帧如果被两个相邻伪GOP包含,则其质量层的码率被分为两份,分别用于相邻伪GOP的码率分配。
(2)建立伪GOP率失真函数模型,所述模型描述为 PSNR(R)=a*R+A-(A-B)/(1+b*R) (13) (3)根据所述模型,按如下方法对SVC视频进行质量平滑重建 首先对各个伪GOP进行码率分配,步骤如下 ①根据公式(13)计算目标码率R对应的所有伪GOP的平均失真D 其中ai,Ai和Bi是公式(13)中伪GOP i率失真函数对应的参数值。
②根据D计算伪GOP i的初始分配码率,伪GOP i表示第i个伪GOP 其中Ri(D)是公式(13)在伪GOP i的反函数。
③计算初始分配码率的平均值和目标码率的差值 ④计算伪GOP i的调节权值 其中Di(init_ratei)是伪GOP i失真速率函数在初始分配码率init_ratei处的导数。
⑤根据权值计算最终分配给伪GOP i的码率 trans_ratei=init_ratei-tune_rate*Tune_Weight(18) 根据每个伪GOP分配到的码率,伪GOP i中每帧的码率按如下方法分配 ①根据分配到的比特率,利用如下公式式计算伪GOP i中总的比特数bits VGOPi=trans_ratei*width*height*1.5(gop_size-1+KeyframesIn1VGOP+0.5*KeyframesIn2VGOP) ②根据优先级时序,对于GOP i中的第k个FGS/CGS质量包,如果其比特数小于当前伪GOP剩余比特数,则将该FGS/CGS质量包k的帧的分配比特数增加FGS/CGS质量包k的大小,同时伪GOP剩余比特数减去该FGS/CGS质量包k大小,直至某个FGS/CGS质量包比特数大于伪GOP中剩余比特数时,如果是FGS包,将该FGS/CGS质量包截断传出;否则,FGS/CGS质量包k的帧的比特率增加伪GOP中剩余比特数。当伪GOP中剩余比特数等于0时,中止该伪GOP的循环。对于关键帧,如果被两个相邻伪GOP包含,则在每个伪GOP中,FGS/CGS质量包的比特数等于原比特数的一半,最后把关键帧在两个伪GOP中分配的比特率加起来。
本发明由于采取以上技术方案,与传统方法相比,复杂度是线性的O(N),不需要任何搜索算法,利用本发明方法,可以以较小的复杂度实现SVC视频平滑,尽可能的提高重建视频的主观以及客观质量。



图1是本发明提出的伪GOP示意图 图2是广义高斯分布的概率密度函数图 图3是广义高斯分布失真速率函数导数的曲线图
具体实施例方式 如图1所示,针对SVC的编码特性,本发明提出了伪GOP(Virtual GOP)的概念,每个伪GOP包含两个相邻的关键帧(key picture)和之间的所有B帧,关键帧如果被两个相邻伪GOP包含,则其质量层的码率被分为两份,分别用于相邻伪GOP的码率分配。
在码率分配前,我们要先确定每个伪GOP中各FGS/CGS质量包的调度优先级时序,以达到最优的率失真性能。可以有多种方法确定各质量包的优先级,我们提供一种方法的框架如下 (A)用一个序列MSEVGOP
存放每一个伪GOP的MSE,将伪GOP的MSEVGOP
初始化为基本层的MSE序列MSEBase1..(gop_size+1)]。其中,gop_size为GOP的大小。用序列array_level存放当前要比较优先级的质量包,将array_level初始化为伪GOP的第一增强层的FGS/CGS质量包。
(B)按照以下循环方法通过依次选择率失真斜率最大的FGS/CGS质量包来逐步排列array_level中各level的优先级,直至array_level为空。
i)将PSNR-rate斜率CurrMaxSlopeVGOP初始化为0; ii)计算被测试的FGS/CGS质量包在解码前后伪GOP中各帧的MSE下降decMSEVGOP[1..(gop_size+1)]; iii)更新MSEVGOP=MSEVGOP-decOptiMSEVGOP,更新array_level,将先前得到的最优质量包移出array_level,并放入相应帧高一层的质量包。如果该质量包为该帧的最高质量包,则不放入任何质量包,直至array_level为空。
(C)利用MSEVGOP和decMSEVGOP计算PSNR增加incPSNR_LevelVGOP=10mean(log10(MSEVGOP[1..gop_size+1]))-10mean(log10(MSEVGOP[1..gop_size+1]-decMSEVGOP[1..gop_size+1]))如果incPSNR_LevelVGOP/level_size>CurrMaxSlopeVGOP,令decOptiMSEVGOP=decMSEVGOP,CurrMaxSlopeVGOP=incPSNR_LevelVGOP/LevelSize,并令该层为当前最优FGS/CGS质量包,如果关键帧包含在了两个伪GOP中,则LeveSize等于原始大小的一半。
根据本发明的分析,广义高斯分布的率失真函数的导数随着码率增加会逐渐减小,因此,在同一帧图像中,较低的FGS增强层率失真函数的导数要比较高的FGS增强层大,而实际传输中,总是先传输低的FGS增强层,而根据以上优先级调度算法,为了得到最优的率失真性能,应该先传输率失真函数导数比较大的FGS增强层,所以通常的,伪GOP率失真函数的导数随着码率增加会逐渐减小,本发明可以假设这个导数减少到一个恒定值,因此可以认为伪GOP失真速率函数有一个渐进线a*R+A,其中R是单位为bit/sample的码率,A和a是渐进线参数。因为FGS失真速率函数的导数逐渐减小到a,本发明可以用一个简单的幂函数-1/R建模这个减小的过程,这是因为(-1/R)′=1/R2随着码率R的增加而减小到0。而且根据实验模拟,伪GOP失真速率函数的导数减小的幅度越来越慢,也就是说伪GOP失真速率函数的二阶导数随着码率的增加而逐渐增加到0,-1/R对这个二阶导数也是一个很好的模型(-1/R)″=-2/R3随着R的增加而增加到0。因为码率的定义域包括了0,所以本发明将-1/R转为-1/(1+b*R),其中b>0是控制失真速率函数对渐近线的接近,这样本发明得到了一个新的伪GOP失真速率函数,具体如下 PSNR(R)=a*R+A-k/(1+b*R) 其中k要大于0,当码率R=0时,PSNR(0)就是基本层变换量化后的峰值信噪比PSNRB。这样本发明可以得到k=A-B,此时要求A-B>0来保证导数的不断减小。因此伪GOP率失真函数可以描述为 PSNR(R)=a*R+A-(A-B)/(1+b*R)(13) 该函数模型含有三个参数(a,b和A),它们可以由已经编码的伪GOP的码率失真数据统计估计得出。根据该模型,对SVC视频进行快速恒定质量平滑重建方法可以描述为 (1)根据公式(13)计算目标码率

对应的所有伪GOP的平均失真
其中ai,Ai和Bi是公式(13)中伪GOP i率失真函数对应的参数值。公式中本发明将参数b设置为经验值8,也可以根据具体情况修改。
(2)根据

计算伪GOP i的初始分配码率,伪GOP i表示第i个伪GOP 其中Ri(D)是公式(13)在伪GOP i的反函数 (3)计算初始分配码率的平均值和目标码率的差值 (4)计算伪GOP i的调节权值 其中Di(init_ratei)是伪GOP i失真速率函数在初始分配码率init_ratei处的导数。用来近似描述每一帧图像在失真

位置单位失真变化所需要的码率,通过它来得到各帧码率调节的权值。
(5)根据权值计算最终分配给伪GOP i的码率 trans_ratei=init_ratei-tune_rate*Tune_Weight(18) 如果tran_ratei<0,这时基本层质量接近或大于

则本发明设这时的增强层传输码率为tran_ratei=0。
在某些情况下,目标码率

和实际传输码率之间有一定的差别,但这种差别一般比较小,可以忽略不记。而且如果需要,本发明可以通过循环计算公式(16)到(18)来减小这种误差。
根据每个伪GOP分配到的码率,伪GOP冲每帧的码率按如下方法分配 (1)根据分配到的比特率,利用如下公式计算伪GOP i中总的比特数bitsVGOPi=trans_ratei*width*height*1.5(gop_size-1+KeyframesInlVGOP+0.5*KeyframesIn2VGOP)其中,width和height分别为编码图像的宽和高,KeyframesIn2VGOP是由该伪GOP和另一个相邻伪GOP共同包含的关键帧的数量,KeyframesInVIGOP为仅由该伪GOP包含的关键帧数量。
(2)按照如下方法为每一帧分配比特数根据优先级时序,对于GOP i中的第k个FGS/CGS质量包,如果其比特数小于当前伪GOP剩余比特数,则将该FGS/CGS质量包k的帧的分配比特数增加FGS/CGS质量包k的大小,同时伪GOP剩余比特数减去该FGS/CGS质量包k大小,直至某个FGS/CGS质量包比特数大于伪GOP中剩余比特数时,如果是FGS包,将该FGS/CGS质量包截断传出。否则,FGS/CGS质量包k的帧的比特率增加伪GOP中剩余比特数。当伪GOP中剩余比特数等于0时,中止该伪GOP的循环。对于关键帧,如果被两个相邻伪GOP包含,则在每个伪GOP中,FGS/CGS质量包的比特数等于原比特数的一半,最后把关键帧在两个伪GOP中分配的比特率加起来。
权利要求
1.一种基于率失真函数分析模型的SVC平滑重建方法,其包括以下步骤
(1)提出一种伪GOP的概念,每个伪GOP包含两个相邻的关键帧和之间的所有B帧;
(2)建立伪GOP率失真函数模型,所述模型描述为
PSNR(R)=a*R+A-(A-B)/(1+b*R) (1)
(3)根据所述模型,按如下方法对SVC视频进行质量平滑重建
首先对各个伪GOP进行码率分配,步骤如下
①根据公式(1)计算目标码率
对应的所有伪GOP的平均失真
其中ai,Ai和Bi是公式(1)中伪GOP i率失真函数对应的参数值;
②根据
计算伪GOP i的初始分配码率,伪GOP i表示第i个伪GOP
其中Ri(D)是公式(1)在伪GOP i的反函数;
③计算初始分配码率的平均值和目标码率的差值
④计算伪GOP i的调节权值
其中Di′(init_ratei)是伪GOP i失真速率函数在初始分配码率init_ratei处的导数;
⑤根据权值计算最终分配给伪GOP i的码率
trans_ratei=init_ratei-tune_rate*Tune_Weight
然后根据每个伪GOP分配到的码率,伪GOP i中每帧的码率按如下方法分配
①根据分配到的比特率,利用如下公式计算伪GOP i中总的比特数bitsVGOPi=trans_ratei*width*height*1.5(gop_size-1+KeyframesIn1VGOP+0.5*KeyframesIn2VGOP)
②根据优先级时序,对于GOP i中的第k个FGS/CGS质量包,如果其比特数小于当前伪GOP剩余比特数,则将该FGS/CGS质量包k的帧的分配比特数增加FGS/CGS质量包k的大小,同时伪GOP剩余比特数减去该FGS/CGS质量包k大小,直至某个FGS/CGS质量包比特数小于伪GOP中剩余比特数时,如果是FGS包,将该FGS/CGS质量包截断传出;否则,FGS/CGS质量包k的帧的比特率增加伪GOP中剩余比特数;当伪GOP中剩余比特数等于0时,中止该伪GOP的循环;对于关键帧,如果被两个相邻伪GOP包含,则在每个伪GOP中,FGS/CGS质量包的比特数等于原比特数的一半,最后把关键帧在两个伪GOP中分配的比特率加起来。
2.如权利要求1一种基于率失真函数分析模型的SVC平滑重建方法,其特征在于在执行步骤(3)过程中关键帧如果被两个相邻伪GOP包含,则其质量层的码率被分为两份,分别用于相邻伪GOP的码率分配。
全文摘要
本发明涉及一种基于率失真函数分析模型的SVC平滑重建方法,其包括以下步骤(1)提出一种伪GOP(Virtual GOP)的概念,每个伪GOP包含两个相邻的关键帧(keypicture)和之间的所有B帧;(2)建立FGS率失真函数模型,所述模型描述为PSNR(R)=a*R+A-(A-B)/(1+b*R);(3)根据所述模型,对SVC视频进行质量平滑重建。本发明以伪GOP为基本调度单位,根据每个伪GOP中的率失真模型首先对各个伪GOP进行质量平滑,然后进而对伪GOP内各帧进行质量平滑。利用本发明方法,可以以较小的复杂度实现SVC视频平滑,尽可能的提高重建视频的主观以及客观质量。
文档编号H04N7/26GK101146228SQ20071017629
公开日2008年3月19日 申请日期2007年10月24日 优先权日2007年10月24日
发明者文 高, 俊 孙, 悦 王 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1