一种自动比特率控制方法及图像压缩装置的制作方法

文档序号:7953123阅读:215来源:国知局

专利名称::一种自动比特率控制方法及图像压缩装置的制作方法
技术领域
:本发明涉及一种自动比特率控制方法及图像压缩装置,特别涉及一种对JPEG编码自动比特率的控制方法及图像压缩装置。
背景技术
:在视频芯片硬件电路设计时,考虑到图像JPEG压缩后存储空间大小是固定的,图像压缩率越小,图像失真越小,因此,选定一个固定的图像压缩率,保持存储空间的最大利用率是非常必要的。在JPEG编码器中,图像压缩率是通过Q值来调整的,自动比特率控制是通过自适应Q值调整器来完成的。Q值调整的目的是用来预测下一帧图像的Q值,以使下一帧图像的压缩率能够达到预期。JPEG压缩原理是通过对一种分块8×8数据结构进行前向离散余弦变换(FDCT)得到1个直流系数(DCcoefficient)和63个交流系数(ACcoefficient),再经过量化(Quantization)、折线扫描(Zig-ZagScan)、霍夫曼编码(HuffmanEncoding)得到压缩后的数据。如图1所示,为常见的JPEG压缩原理示意图,包括离散余弦变换模块101、量化模块102、折线扫描模块103、霍夫曼编码模块104、自动比特率控制模块105、量化表产生模块106组成。在JPEG压缩编码器中,可以通过改变量化表(Q-table)来控制压缩率(CR)和压缩质量,最常用的方法就是将量化表同时乘以一个系数,称为Q值(Qfactor),范围一般在0~2。Q值小于1,则减小压缩率,提高压缩后的图像质量,反之加大压缩率,降低图像质量。不同的图像曲线差别会很大。自动比特速率控制(autobitratecontrol,ABRC)用于连续图像压缩的码率控制,它用一条通过固定点(坐标Q在[-1,0]内,可调,CR=0)的直线来近似CR-Q曲线,进而根据前一帧图像所用的Q值和实际压缩率(CR)确定直线方程(两点确定直线),再求出目标压缩率对应的Q值作为下一帧的Q值预测。我们定义CRtarget为目标压缩率,Qtarget为相应的目标Q值。当前Q值调整的实现方法如下CR-Q关系曲线近似一条经过一个固定点(Q=-b,CR=0)的直线,其中b是一个负参数,一旦定下来通常就不会再改变。我们有一个初始外部可配置的Qinitial和CRinitial,通过初始值和固定点(-b,0)我们就能够得到曲线方程CR=CRinitialQinitial+b(Q+b);]]>Qtarget能够通过公式Qtarger=CRtargetCRcur(Qcur+b)-b]]>计算,图2是压缩率与Q值的关系示意图,曲线方程图如图2所示。但实际上CR-Q曲线并不会是通过固定点的一条完美直线,因此用这种方法计算出的Qtarget并不能得到比较精确Q值。因此现在多是通过多次迭代的办法来求得想要的Q值。图3是多次迭代下的压缩率与Q值的关系示意图,如图所示,第一次压缩得到Q0和CR0,然后通过0号线性关系与CRtarget(目标压缩率)计算出Q1,用Q1压缩下一帧图像,以此类推直到CRn接近CRtarget。对于大多数图像通过2到3帧迭代能够很快的逼进实际曲线,当然收敛的速度与迭代的起始点有关,起始点越靠近目标值,收敛速度越快。由于在JPEG压缩中,很多硬件系统要求每帧图像压缩后都不得大于某个门限,否则会发生溢出而丢弃。但现在的JPEG压缩只能在整幅图像压缩后才能得知是否溢出,同时JPEG标准也不允许在压缩过程中修改量化表,也就是说所有8×8的块都必须用一样的量化表,即一样的Q值。因此无法通过调整Q值来提前调整压缩率。ABRC是通过用直线近似(CR-Q)来预测Q值,由于曲线近似度不够,因此预测过程是一个收敛过程,曲线相似度越低,收敛过程越长,收敛过程中的各帧会由于Q值不合适而过分压缩或欠压缩(即溢出)。ABRC同时还要求前后两帧内容变化不大,因为这样CR-Q曲线的变化才能不大,这对于高帧率或静止场景容易满足,但对于低帧率,剧烈运动场景或场景切换等情况则不易满足,进而造成错误预测,容易发生Q值过度调节或调节不足而导致严重的溢出丢帧现象。图4是大Q值与小Q值情况下的压缩率与Q值的关系示意图;如图所示,造成该缺陷的可以归纳为以下两种情况一、一帧复杂图像之后是一帧简单图像在这种情况下,简单图像将会被上一帧复杂图像压缩计算出来的大Q值(Qtarget_cmplx)压缩,该简单图像的目标压缩率(CRtarget)比实际压缩率(CRover)小很多,可能导致结果是该简单图像被过渡压缩,图像严重失真,这种情况可能会持续好几帧直到CR降到一个合理范围。二、一帧简单图像之后是一帧复杂图像在这种情况下,复杂图像将会被上一帧简单图像压缩计算出来的小Q值(Qtarget_smpl)压缩,该复杂图像的目标压缩率(CRtarget)比实际压缩率(CRlack)大很多,可能导致结果是该复杂图像压缩不够,以至于硬件图像存储空间溢出,这种情况可能会持续几帧直到CR升到一个合理范围。因此,在原始自动比特率控制JPEG图像压缩方法上存在着以下不足由于两帧图像之间大Q值变化引起图像压缩的不理想,无法正确的预测下一帧图像的Q值,会因减少图像过渡压缩或者压缩不够引起丢帧,无法提供高质量的图像压缩。
发明内容本发明所解决的技术问题在于提供了一种自动比特率控制方法及图像压缩装置,以达到当检测到两帧图像之间Q值变化较大时,在图像压缩过程中,正确预测下一帧图像的Q值,消除减少图像过渡压缩或者压缩不够引起丢帧的情况,从而保障提供高质量的图像压缩。为解决上述技术问题,本发明提供了一种自动比特率控制方法,根据当前压缩使用的Q值,预测出下一次压缩应使用的Q值,并据此进行连续图像压缩的码率控制,包括如下步骤(1)设定当前Q值Q_curr与下一次Q值Q_next之间的差值门限Q_Threshold;(2)判断当前Q值与预测出来的下一次的Q值之间的差值Q_diff是否超过差值门限;(3)如果当前Q值与预测的下一次的Q值的差值超过所述设定的差值门限,则调整所述计算出来的下一次的Q值,使差值增大,并使用调整后的下一次Q值压缩下一帧图像。其中,所述步骤(1)可以包括设定多个差值门限;所述步骤(2)可以包括根据所述多个差值门限所界定的不同区间,对应不同权值,判断所述差值处于哪一个区间,对所述下一次的Q值配以对应权值进行调整,使差值以不同幅度增大。其中,所述对下一次的Q值配以对应权值进行调整的步骤,调整后的新的下一次Q值等于当前差值乘以与该差值对应的权值,再加上调整前的下一次Q值。本发明所述自动比特率控制方法还可以进一步包括设定压缩率检测条件,该条件为在一帧图像压缩过程中的已压缩大小占整幅图像的比例;在当前帧图像压缩到所述比例时,根据当前使用的Q值预测整帧图像压缩完成后是否会引起存储空间溢出;如果预测到该帧图像会溢出,则丢弃经过离散余弦变换得到的交流系数,并对当前Q值进行补偿。本发明进而还提供一种图像压缩装置,包括前向离散余弦变换模块、量化模块、折线扫描模块、霍夫曼编码模块、自动比特率控制模块、量化表生成模块,其中,自动比特率控制模块根据当前压缩使用的Q值Qc,预测出下一帧压缩应使用的Q值Qn,量化表生成模块根据Qn生成新的量化表,供量化模块使用,所述压缩装置还包括Q值校正模块,用于根据自动比特率控制模块预测的Qn,判断Qc与Qn之间的差值是否超过预设门限,如果超出预设门限则对Qn进行调整,使Qc与Qn之间的差值进一步增大,并将调整后的Qn输入量化表生成模块。其中,所述Q值校正模块,进一步根据Qc与Qn之间的差值超过预设门限的程度,对Qn配以不同权值进行调整。本发明所述图像压缩装置,还可以进一步包括强行比特率控制模块,用于定期监测压缩率,如果检测到使用当前Q值对整帧图像压缩完成后会引起存储空间溢出,则丢弃预设数量的经过离散余弦变换得到的交流系数;Q值补偿模块,用于根据强行比特率控制模块的启动情况,为自动比特率控制模块当前使用的Q值进行补偿。使用本发明后,解决了在JPEG图像编码中压缩率控制不是很理想的问题。能够很好的控制JPEG编码中图像压缩失真和压缩不够引起图像丢帧的现象,最终达到输出视频图像的高质量与高流畅。图1是现有JPEG图像压缩装置的原理示意图;图2是压缩率与Q值的关系示意图;图3是多次迭代下的压缩率与Q值的关系示意图;图4是大Q值与小Q值情况下的压缩率与Q值的关系示意图;图5是本发明实施例中所述图像压缩装置的原理示意图;图6为本发明实施例中所述对JPEG编码自动比特率的控制方法实施流程示意图。具体实施例方式如图5所示,为根据本发明实施例所述的图像压缩装置的原理示意图,与现有压缩装置相比,本实施例中增加了强行比特率控制(RBRC)模块501、Q值补偿(Q-complement)模块502,与Q值校正(Q-correction)模块503。所述各模块中都配置有若干寄存器,存储有各自需要的参数。其中,Q值校正模块503,用于存储预先设置的当前Q值与下一次Q值之间的差值门限,在图像压缩过程中,判断当前Q值与预测的下一次Q值之间的差值是否超过预设门限,如果超出预设门限则对下一次Q值进行调整,使当前Q值与下一次Q值之间的差值进一步增大,并将调整后的下一次Q值输入量化表生成模块。进一步的,所述的差值门限可以设定多个,并为每个差值门限所界定出的区间对应配置一个权值,Q值校正模块503可以判断所述差值处于哪一个区间,对所述下一次的Q值配以对应权值进行调整,使差值以不同幅度增大。调整的具体方式可以是使调整后的新的下一次Q值等于当前差值乘以与该差值对应的权值,再加上调整前的下一次Q值。其中所述的差值门限,以及权值等参数,都可以通过Q值校正模块503内的寄存器配置来修改。强行比特率控制模块501,用于在一帧图像压缩过程中定期监测压缩率,如果检测到使用当前Q值对整帧图像压缩完成后会引起存储空间溢出,则丢弃预设数量的经过离散余弦变换得到的交流系数;所述定期监测,可以设置在1/4、1/2、或3/4的8×8块完成压缩时检测,具体的预测模式参数可以通过强行比特率控制模块501中的寄存器配置来修改。Q值补偿模块502,用于根据强行比特率控制模块的启动情况,为自动比特率控制模块当前使用的Q值进行补偿。补偿可以是加一个正数,具体补偿值可通过仿真确定,并通过Q值补偿模块502中的寄存器参数来修改与存储。根据图像输入情况复杂度级别,本发明的实施例分为两个阶段一、大Q变值化时的Q值校正这一阶段不需要使用RBRC和Q值补偿。这种方式实现的主要原理是,当检测到预测下一帧图像压缩所需Q值(Q_next)与当前图像所使用Q值(Q_curr)变化很大,即下一帧的Q值与当前Q值的差值(Q_diff)较大时,需在当前Q_next的基础上轻微增加或者减少得到一个新的Q值(New_Q_next)。增加或者减少数值由Q_diff=Q_next-Q_curr所在范围决定。在具体实现上可以采用多种方式,例如,可以选择4个门限值Q_Threshold3<Q_Threshold4<0<Q_Threshold2<Q_Threshold1,和四个权重因子weight1,weight2,weight3,weight4。这些参数都可以通过寄存器配置修改。那么,当检测到Q_diff>Q_Threshold1时,则New_Q_next=(Q_diff*Q_weight1)+Q_next;当检测到Q_Threshold1>=Q_diff>Q_Threshold2时,则New_Q_next=(Q_diff*Q_weight2)+Q_next;当检测到Q_Threshold2>=Q_diff>0,则New_Q_next=Q_next;当检测到Q_Threshold4<=Q_diff<0,则New_Q_next=Q_next;当检测到Q_Threshold3<=Q_diff<=Q_Threshold4,则New_Q_next==(Q_diff*Q_weight4)+Q_next;当检测到Q_diff<Q_Threshold3,则New_Q_next=(Q_diff*Q_weight3)+Q_next。由于Q值越大,图像压缩率越大,相反Q值越小,图像压缩率越小,所以,在Q_diff为正值时,可以预测下一帧图像为复杂图像,我们需要在Q_next基础上增加一个数值,这样能够快速加大压缩复杂图像的Q值,使得不至于该复杂图像压缩率不够;在Q_diff为负值时,可以预测下一帧图像为简单图像,我们需要在Q_next基础上减少一个数值,这样能够快速减少压缩简单图像的Q值,使得不至于该简单图像过压。这种方式能够加速Q值调整的收敛过程。具体Q值变化门限及调节值可通过仿真方法获得的值设定。该方法达到的效果是加快收敛,能有效的减少丢帧和图像过度压缩现象。二、强行BRC(RudeBRC,RBRC)和Q值补偿(Q-complement)如果在启动上述Q值校正后,仍经常出现丢帧情况(是否丢帧的依据是压缩后图像字节数,若该数值大于某一个特定值,则该图像将被丢弃),那么说明Q值校正的效果不是很理想,这时可以进一步启动强行比特率控制与Q值补偿这两个部分。利用本实施例,可以在一幅图像压缩的过程中定期监控压缩率,比如可设为1/4,1/2或3/4的8×8块完成压缩时,就进行检测的三个预测模式。如果当前压缩后的图像大小超过目标大小的1/4,1/2或3/4时则开启AC系数丢弃策略,丢弃按扫描顺序倒数N个AC系数。N值预先设定,不同预测模式N可不同。推荐值在32~56,具体值可仿真方法确定。丢弃AC系数可以提高压缩率,以有效预防可能发生的溢出,同时符合JPEG压缩标准的要求。由于丢弃AC系数改变了压缩率,破坏了CR-Q曲线,将会影响到后面的ABRC,因此在进行ABRC之前需要对当前Q值进行补偿,就是加上一个正数。补偿值的大小和预测模式,当前Q值以及AC丢弃个数N有关,目前没有明确公式,实际值由仿真方法获得,为三维表格,值的分布范围在0~64。这样可以有效的防止丢帧。如图6所示,为根据本发明实施例所述的对JPEG编码自动比特率的控制方法流程示意图,包括如下步骤步骤601、设定当前压缩使用的Q值与预测出的下一帧使用的Q值之间的差值的变化门限。步骤602、当检测到Q值的差值大小超过Q值变化门限后,在检测出来的下一帧Q值的基础上按设定调节值增加或减少预测下一帧的Q值,使得所述差值进一步增大。步骤603、设定压缩率检测条件,该条件为在一帧图像压缩过程中的已压缩大小占整幅图像的比例。可以设为在压缩比例为1/4、1/2、3/4等的时候。步骤604、检测条件满足时,比较图像根据所述压缩比率得到的大小与存储目标块根据所述压缩比率得到的大小。如我们将检测条件设置在压缩比例为1/2时,若图像总大小为A,可以储存的目标块大小为B时,则是将1/2×A与1/2×B比较。步骤605、当图像根据所述压缩比率得到的大小大于存储目标块根据所述压缩比率得到的大小时,丢弃交流系数。也就是当1/2×A大于1/2×B时,就丢弃交流系数。步骤606、根据设定对Q值增加补偿值。综上所述,本发明针对现有的视频芯片设计中,对JPEG图像编码的压缩率控制不是很理想的问题,具有针对性的提出了两种具体的控制手段,一种是通过Q值校正方法,调整两帧图像大Q值变化。它的基本思想是当检测到大Q值变化时,轻微改变原始ABRC计算出Q值。这种方法在Q值增加非常大时时,能够加速预期Q值调整的收敛过程,在Q值减小非常大情况下,能够阻止Q值调整过快引起图像失真严重的现象。另一种是强行BRC和Q值补偿方法。该方法主要是针对压缩率不够,引起存储空间溢出的情况。它的基本思想是在图像压缩过程中,预测该帧图像是否会溢出,如果判断该帧图像有溢出可能,则通过丢弃AC系数的方法得到更大的压缩率,使得最后图像大小能满足存储空间要求。由于该方法会破坏原有的Q值计算方法,因此需要对Q值计算进行补偿。通过该方法能够大大减少因存储空间限制而引起图像丢帧现象。权利要求1.一种自动比特率控制方法,根据当前压缩使用的Q值,预测出下一次压缩应使用的Q值,并据此进行连续图像压缩的码率控制,其特征在于,包括如下步骤(1)设定当前Q值与下一次Q值之间的差值门限;(2)判断当前Q值与预测出来的下一次的Q值之间的差值是否超过差值门限;(3)如果当前Q值与预测的下一次的Q值的差值超过所述设定的差值门限,则调整所述计算出来的下一次的Q值,使差值增大,并使用调整后的下一次Q值压缩下一帧图像。2.如权利要求1所述的方法,其特征在于所述步骤(1)包括设定多个差值门限;所述步骤(2)包括根据所述多个差值门限所界定的不同区间,对应不同权值,判断所述差值处于哪一个区间,对所述下一次的Q值配以对应权值进行调整,使差值以不同幅度增大。3.如权利要求2所述的方法,其特征在于,所述对下一次的Q值配以对应权值进行调整的步骤,调整后的新的下一次Q值等于当前差值乘以与该差值对应的权值,再加上调整前的下一次Q值。4.如权利要求1所述的方法,其特征在于,进一步包括设定压缩率检测条件,该条件为在一帧图像压缩过程中的已压缩大小占整幅图像的比例;在当前帧图像压缩到所述比例时,根据当前使用的Q值预测整帧图像压缩完成后是否会引起存储空间溢出;如果预测到该帧图像会溢出,则丢弃经过离散余弦变换得到的交流系数,并对当前Q值进行补偿。5.如权利要求4所述的方法,其特征在于,所述对当前Q值进行补偿的步骤,是对当前Q值加上一个正数。6.如权利要求4所述的方法,其特征在于,所述丢弃经过离散余弦变换得到的交流系数的步骤,是丢弃按照扫描顺序倒数N个交流系数,其中N值预先设定。7.如权利要求6所述的方法,其特征在于,所述N值为32~56。8.一种图像压缩装置,包括前向离散余弦变换模块、量化模块、折线扫描模块、霍夫曼编码模块、自动比特率控制模块、量化表生成模块,其中,自动比特率控制模块根据当前压缩使用的Q值Qc,预测出下一帧压缩应使用的Q值Qn,量化表生成模块根据Qn生成新的量化表,供量化模块使用,其特征在于,所述压缩装置还包括Q值校正模块,用于判断Qc与Qn之间的差值是否超过预设门限,如果超出预设门限则对Qn进行调整,使Qc与Qn之间的差值进一步增大,并将调整后的Qn输入量化表生成模块。9.如权利要求8所述的装置,其特征在于,所述Q值校正模块,进一步根据Qc与Qn之间的差值超过预设门限的程度,对Qn配以不同权值进行调整。10.如权利要求8所述的装置,其特征在于,进一步包括强行比特率控制模块,用于定期监测压缩率,如果检测到使用当前Q值对整帧图像压缩完成后会引起存储空间溢出,则丢弃预设数量的经过离散余弦变换得到的交流系数;Q值补偿模块,用于根据强行比特率控制模块的启动情况,为自动比特率控制模块当前使用的Q值进行补偿。11.如权利要求10所述的装置,其特征在于,所述Q值补偿模块,通过对当前使用的Q值加上一个正数来进行补偿。12.如权利要求10所述的装置,其特征在于,所述强行比特率控制模块在检测到使用当前Q值对整帧图像压缩完成后会引起存储空间溢出时,丢弃按扫描顺序倒数N个交流系数,其中N值预先设定。13.如权利要求12所述的装置,其特征在于,所述N值为32~56。全文摘要本发明公开了一种自动比特率控制方法及图像压缩装置,首先设定当前Q值与下一次Q值之间的差值门限,在图像压缩过程中,实时检测当前压缩使用的Q值与计算出来的下一次的Q值之间的差值,当超过设定的差值门限时,调整该下一次的Q值,使差值增大,并使用调整后Q值压缩下一帧图像;进而再设定压缩率检测条件,在当前帧图像压缩到与检测条件相符的比例时,根据当前使用的Q值预测整帧图像压缩完成后是否会引起存储空间溢出;如果预测到该帧图像会溢出,则丢弃经过离散余弦变换得到的交流系数,并对当前Q值进行补偿。使用本发明后,能够很好的控制JPEG编码中图像压缩失真和压缩不够而引起图像丢帧的现象。文档编号H04N7/30GK1852438SQ20061001169公开日2006年10月25日申请日期2006年4月14日优先权日2006年4月14日发明者郦文其,汪源,居晓波申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1