0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

缓冲器占用量的详细比较

电子设计 2018-08-28 10:17 次阅读

引言:本文在H.264码率控制机制的基础上,提出了一种基于平均绝对差(MAD)比率的跳帧算法。该算法将图像的MAD比率和缓冲器占用量作为跳帧判别标准,为运动剧烈的图像保留缓冲器空间。实验结果表明,本算法一方面可以有效地降低缓冲器的占用量和节省编码时间,从而在硬件方面表现为降低对缓冲器大小等方面的要求,达到降低成本的目的;另一方面,可以保证图像序列连续性和提高图像质量。

大多数视频压缩技术和标准产生的比特率都是可变的,为了能够在恒定比特率的通信信道和网络中传输,需要在码率控制中引入一个缓冲区机制,先将压缩后的码流存入缓冲区,然后以恒定码率输出。因此,码率控制的任务就是在保证缓冲器不产生上溢和下溢的前提下,通过调整一些编码参数(如量化参数)来使编码比特率达到期望值。

跳帧策略是码率控制算法中防止缓冲器上溢的手段。以往的跳帧算法往往确定某一个固定的限值(通常为80%)[1],当缓冲器的占用量到达这个限值时,不考虑下一帧的任何情况就把它跳过。这种跳帧算法的缺陷有两点:当缓冲器占用量达到80%时盲目地跳过下一帧,有可能错过运动剧烈的图像而导致译码后图像序列质量的下降;当缓冲器占用量未达到80%,但却很接近80%时,如果下一帧图像运动比较剧烈的话,较多的编码比特数就会导致缓冲器发生严重的上溢。

本文提出了基于MAD比率的跳帧判断准则,将当前缓冲器的占用量与每一帧图像的运动剧烈程度结合起来,对缓冲器的占用量设定几个阈值,并且用MAD比率来对每幅图像的运动剧烈程度进行标识。对于某个MAD比率的图像来说,当缓冲器占用量达到跳帧判别准则中规定的阈值时,即将该帧跳过。这样就可以通过跳过一些运动平缓的图像,而为运动剧烈的图像保留缓冲器空间,从而保证图像序列的连续性,提高图像质量。

码率控制算法

帧层的码率控制算法

帧层的码率控制分为两个阶段:第一阶段为每一个P帧计算一个目标比特数,第二阶段持续地更新率失真模型的各个参数并且进行跳帧控制。

假设只有一组图像(GOP),并且图像序列的编码顺序是第一帧为I帧,后面为连续的P帧。假设N表示组图中所有帧的数目,nj表示组图中的第j帧,Bc(nj)表示编码第j帧图像后缓冲器实际的占用量,A(nj)表示编码第j帧时实际产生的比特数,Bs表示缓冲器大小,Tbl(nj)表示第j帧被编码后缓冲器的目标值,Rr表示剩余比特数,Nr表示组图中剩余的帧数。因此,第j+1帧图像被编码后缓冲器的实际占用量Bc(nj+1)可以表示为[2][3]:

假设第一个P帧的量化参数等于组图的量化参数,所以有:

其它P帧被编码后缓冲器的目标值由下式给出:

因此,考虑缓冲器占用量而得到的目标比特数Tbuff可以表示为:

其中gama是个常量,它的值通常为0.75。

考虑剩余比特数而得到的目标比特数Tr可以表示为:

所以,最后的目标比特数T可以通过Tbuff和Tr的加权和得到:

试验中β=0.5[2]。

宏块层的码率控制

在宏块层,根据每一个宏块的MAD来给每一个宏块分配比特数并且求出量化参数。宏块层的码率控制分为三个步骤:首先为每一个宏块分配比特数;其次根据目标比特数计算出量化参数;最后在对每一个宏块编码后,进行参数的预测。

a.比特数的分配

假设Nm表示一帧中宏块的个数,Ave_MAD表示一帧图像中各个宏块的MAD的平均值,MAD[i][j]表示第i帧中第j个宏块的MAD。因此第i帧中第j个宏块所分配的目标比特数b[i][j]可表示为:

b.计算各个宏块的量化参数

率失真函数是许多码率控制算法的核心,它将量化参数Q与编码比特数R联系起来,其关系式为:

其中S表示宏块的编码复杂度,X1和X2是率失真模型参数。Q值较小时,分配较多的编码比特数;Q值较大时,则分配较少的编码比特数。

c.模型参数的预测

在对每一个帧进行编码后,都要根据前面n帧的编码结果对模型参数(X1、X2)进行更新。由上式可以得出:

最小均方误差可以表示为:

该等式成立的条件是:(a)n>1,(b)所有的n个Q值不完全相同。

基于MAD比率的跳帧算法

在恒定比特率应用中,编码器和传输信道间的缓冲器起了十分重要的作用。编码器应该使缓冲器的占用量保持在50%左右。如果缓冲器发生上溢,则会损失一些数据。相反,如果缓冲器的占用量过低就会浪费带宽。当缓冲器的值很高时,避免上溢的方法就是跳过一个完整的帧。

由以往的经验可以知道,大多数的跳帧过程都是由于缓冲器上溢引起的。与缓冲器的目标值即缓冲器大小的一半相比较,实际中缓冲器发生上溢的可能性远远大于发生下溢的可能性。缓冲器的占用量低于缓冲器大小25%的情况是非常少见的。因此,有必要把缓冲器的占用量控制在50%左右,以保证缓冲器的占用量有足够的上升空间。

下面详细介绍一下基于MAD比率的跳帧算法:

假设图像序列的编码顺序为第一帧为I帧,后面是连续的P帧,ω1、ω2、ω3表示缓冲器占用百分比;ξ1、ξ2、ξ3表示图像的运动剧烈程度,它等于当前帧图像的MAD预测值与整个组图中所有已编码P帧图像的平均MAD的比值(见下面的公式)。

基于MAD比率的跳帧算法的思想是尽量跳过运动平缓的帧而保存运动剧烈的帧。对于运动平缓的图像而言,缓冲器的占用量不用达到80%,而只要达到一个预先设定的限值时就将它跳过。运动越剧烈,对应的限值就越高。运动的剧烈程度ξ(i)用下式表示:

其中,MADPi表示第i帧图像的MAD预测值,MADAi表示第i帧图像的MAD实际值。

当ξ(i)小于ξ1时,只要缓冲器的占用量达到ω1,就将该帧跳过;当ξ(i)小于ξ2时,只要缓冲器的占用量达到ω2,就将该帧跳过;当ξ(i)小于ξ3时,只要缓冲器的占用量达到ω3,就将该帧跳过;当缓冲器的占用量达到80%时,无论下一帧图像运动剧烈与否,都将它跳过。

由于I帧和前面几个P帧对于运动补偿的估计比较重要,跳过这些帧容易影响到后面的帧,因此,本文的跳帧算法从第三个P帧,即第四帧开始;而对前三帧的处理方法是:对I帧不采取跳帧,对第一和第二个P帧只有当缓冲器的占用量达到80%时才跳过。

对于需要跳过的帧将不进行编码,而是用上一帧图像来代替。

图1为基于MAD比率的跳帧算法流程图。其中Q表示量化参数;N表示帧编号。

试验结果

本节根据第三部分基于MAD比率跳帧算法的思路,将该新型跳帧算法的实验结果与传统跳帧算法的试验结果相比较。

实验采用JM9.6的实验平台,实验环境是MicosoftVisualC++6.0。官方网站

http://iphome.hhi.de/suehring.tml中下载到JM的各个版本的程序。实验中所使用的计算机的CPU为Pentium41.5G;内存大小为256M。

采用的图像序列为Mobile和Tempete,二者均为CIF格式。图像序列的编码顺序为IPP...IPP...,每隔30个P帧有一个I帧。

下面从缓冲器占用量、编码时间、运动估计时间和SNR四个方面给出本文的跳帧算法与以往算法的对比实验结果。


缓冲器占用量的比较

图2和图3表示对Tempete序列和Mobile序列每一帧进行编码后缓冲器中的比特数。图中,横坐标表示编码帧数目,纵坐标表示缓冲器占用量;实线表示的是使用原始的跳帧算法时缓冲器占用量的曲线图,*线表示的是采用基于MAD比率的跳帧算法后缓冲器占用量的曲线图。从图2和图3可以看出,在第0、30、60和90帧处,缓冲器占用量急剧

上升,这是由于在这四处均为I帧,编码比特数比较大,缓冲器的输入远远大于输出。对于每个I帧后的P帧,由于编码比特数比较小,缓冲器的输入小于输出,所以缓冲器的占用量逐渐减少。图2和图3均表明:基于MAD比率的跳帧算法可以降低缓冲器的占用量、避免了缓冲器发生上溢。

编码时间、运动估计时间和SNR的比较

表1和表2给出对Tempete序列和Mobile序列编码,传统跳帧算法与基于MAD比率的跳帧算法在编码时间、运动估计时间和SNR三个方面性能的比较。

从表1和表2可以看出,基于MAD比率的跳帧算法可以较大幅度地缩短编码时间和运动估计时间。在Tempete序列中,编码时间的改进量高达12.73%。在Mobile序列中,运动估计时间的改进量达到了8.58%。

此外,基于MAD比率的跳帧算法使得Y、U和V三个分量的SNR值均有所提高。由于在解码过程中是用前面一个已经编码的帧来代替跳过的帧,所以对于一个运动比较剧烈的帧而言,若按照传统跳帧算法将其跳过的话,将会影响到解码端图像恢复的连续性,从而造成图像质量的下降。而本文提出的跳帧算法其实质就是通过放弃运动平缓的帧,为运动剧烈的帧保留缓存空间。从而提高了整个图像序列的SNR值。

参考文献:

[1]MinqiangJiang,NamLing.OnEnhancingH.264/AVCVideoRateControlbyPSNR-BasedFramecomplexityEstimation.IEEETransactionsonConsumerElectronics,V.51,No.1,February

2005:P281-286.

[2]NamryeSon,YoonjeongShin,GueesangLee.ANovelRateControlSchemeforH.264VideoCodingusingAdaptiveQuantizationParameter.ProceddingsofSPIE.2004,V.5600:P70-77.

[3]景华,何芸.一种低复杂度码率控制究.计算机工程与应用.2003,V(02):P116-122.

[4]ThomasMeierandKingN.Ngan.ImprovedsingleVOratecontrolforconstantbit-rateapplicationsusingMPEG-4.ProcessingofSPIE.2000,V.4067:P64-75.

[5]MingiangJiang,XiaoquanYi,NamLing.Improve-

dFrame-LayerRateControlforH.264usingMADratio.Proceedingsofthe2004InternationalSymposium.

May2004,V.3:P813-816.



:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓冲器
    +关注

    关注

    6

    文章

    1922

    浏览量

    45504
  • Mobile
    +关注

    关注

    0

    文章

    518

    浏览量

    26518
  • SNR
    SNR
    +关注

    关注

    3

    文章

    195

    浏览量

    24425
收藏 人收藏

    评论

    相关推荐

    利用位反转寻址实现循环缓冲器

    电子发烧友网站提供《利用位反转寻址实现循环缓冲器.pdf》资料免费下载
    发表于 10-28 10:01 0次下载
    利用位反转寻址实现循环<b class='flag-5'>缓冲器</b>

    RC缓冲器的工作过程介绍

    RC缓冲器的基本功能是修改振铃频率和降低电压尖峰电平。这一点对于保护电子元件,特别是那些对电压敏感的元件如MOSFET,至关重要。通过限制电压尖峰,RC缓冲器有助于维持电路的稳定性和可靠性。 RC
    的头像 发表于 10-04 16:25 380次阅读
    RC<b class='flag-5'>缓冲器</b>的工作过程介绍

    缓冲器电路设计的分类与比较

    缓冲器电路能够有效地管理信号传输过程中的噪声、尖峰和振铃现象。根据功率损耗的不同,缓冲器电路可以分为有损缓冲电路和无损缓冲电路两大类。本文将探讨这些不同类型的
    的头像 发表于 10-04 16:07 522次阅读

    跟随缓冲器的区别是什么啊?

    请问跟随缓冲器的区别是什么啊?
    发表于 09-19 06:32

    请问电压跟随缓冲器有什么区别?

    电压跟随缓冲器等价,或者是电压跟随的一个方面应用的体现? 如果我用某个单位增益稳定的运放搭个电压跟随,是不是就可以作缓冲器用?效
    发表于 09-05 06:25

    CDCVF2310时钟缓冲器数据表

    电子发烧友网站提供《CDCVF2310时钟缓冲器数据表.pdf》资料免费下载
    发表于 08-22 09:37 0次下载
    CDCVF2310时钟<b class='flag-5'>缓冲器</b>数据表

    CDCVF310时钟缓冲器数据表

    电子发烧友网站提供《CDCVF310时钟缓冲器数据表.pdf》资料免费下载
    发表于 08-22 09:35 0次下载
    CDCVF310时钟<b class='flag-5'>缓冲器</b>数据表

    CDCM1802时钟缓冲器数据表

    电子发烧友网站提供《CDCM1802时钟缓冲器数据表.pdf》资料免费下载
    发表于 08-21 11:46 0次下载
    CDCM1802时钟<b class='flag-5'>缓冲器</b>数据表

    三态缓冲器在计算机中的应用

    电路在不影响其他电路和总线的前提下,能够灵活地控制其输出状态。以下将详细探讨三态缓冲器在计算机中的具体应用,内容将涵盖其定义、优势以及在不同计算机子系统中的具体作用。
    的头像 发表于 08-02 17:48 1137次阅读

    BUF602闭环缓冲器数据表

    电子发烧友网站提供《BUF602闭环缓冲器数据表.pdf》资料免费下载
    发表于 06-13 10:58 0次下载
    BUF602闭环<b class='flag-5'>缓冲器</b>数据表

    缓冲器是干嘛的

    缓冲器是干嘛的 缓冲器是一种广泛应用于电子、电气、通信、计算机、自动化控制等领域的电子元件。它的作用是在电路中起到稳定电压、电流、信号等参数的作用,以保证电路的正常工作和性能。本文将详细介绍
    的头像 发表于 06-10 16:06 4882次阅读

    电源瞬态缓冲器的作用是什么

    电源瞬态缓冲器的作用是什么 电源瞬态缓冲器是一种电子设备,用于保护电源系统免受瞬态电压尖峰、浪涌和其他电气干扰的影响。这些瞬态事件可能导致设备损坏、性能下降甚至系统故障。本文将详细介绍电源瞬态
    的头像 发表于 06-10 16:03 529次阅读

    rc缓冲器的原理和作用

    RC缓冲器是一种利用电阻(R)和电容(C)组合来控制或改变电路中信号的电路。它的主要功能是对信号进行整形、延时、滤波或降低噪声等。RC缓冲器广泛应用于数字和模拟电路中,以改善电路的性能。 工作原理
    的头像 发表于 06-09 11:17 1699次阅读
    rc<b class='flag-5'>缓冲器</b>的原理和作用

    缓冲器电路设计分类有哪些

    缓冲器电路在电子系统中用于信号的传递、匹配和整形,它们对改善系统性能和信号完整性起着重要作用。根据缓冲器电路在信号传递过程中是否引入损耗,可将其分类为有损缓冲电路和无损缓冲电路。 有损
    的头像 发表于 06-09 11:09 777次阅读
    <b class='flag-5'>缓冲器</b>电路设计分类有哪些

    单SCHMITT-TRIGGER缓冲器数据表

    电子发烧友网站提供《单SCHMITT-TRIGGER缓冲器数据表.pdf》资料免费下载
    发表于 05-09 09:58 0次下载
    单SCHMITT-TRIGGER<b class='flag-5'>缓冲器</b>数据表