视频信号处理的制作方法

文档序号:7950217阅读:261来源:国知局
专利名称:视频信号处理的制作方法
技术领域
本发明涉及数字视频压缩,尤其涉及可变比特率处理。
背景技术
视频流可以用在移动IP网络(3G、GPRS、Wimax、WLAN等)、固定网络(如DSL、有线电视、PSTN等)以及数字电视服务中,并且不断开发出诸如DVD录像机、用于数字视频存储的个人视频播放器(PVP),以及数字摄像机之类的新产品。所有这些服务和产品都在竞争最佳视频质量和最佳固定(best-fixed)存储空间管理。
视频压缩技术已经成为数字视频通信中的关键技术。已经创建了一些视频压缩的国际标准,如MPEG-2、MPEG-4、H263,以及最新的标准,H264。这些国际标准的一个共同特征是,它们只提供压缩后视频流的语义(syntax)。输出比特流可以使用恒定比特率编码处理(CBR)或可变比特率处理(VBR)。由于许多数字视频应用程序受限于恒定信道带宽或固定存储(缓冲器)大小的,所以CBR编码由于其比较实用而被广泛采用。但是,CBR编码有一些缺陷。
首先,它导致不一致的视觉质量。所需要的压缩量可能在一帧画面与另一帧画面,或者甚至在同一帧画面中的宏块(macro-block)之间有很大的不同。结果,解码后的视频序列表现出不一致的视觉质量。其次,它可能导致低的编码效率。所选择的比特率必须足够大以便为传输的所有部分都提供可接受的画质。但是,该比特率必须比传输中的大部分所需的比特率要高。
真实的视频序列通常由许多场景组成,每个场景都可以描述显著不同的活动性和运动特征。因此,应该为那些高活动性的场景分配更多的比特而为那些低活动性的场景分配较少的比特。这就是可变比特率编码(VBR)的基础。与CBR编码相比,VBR可以为很多视频序列提供更小的延迟、一致的视觉质量和更高的编码效率。但是,VBR编码存在非常严格的比特率和缓冲器大小限制,具体原因是,由于瞬间比特率可能显著地波动,所以非受限VBR编码器可能不满足信号要在其上传输的媒介的带宽限制。此外,VBR很难在多流链路(multi-streaming link)上工作,这是因为流的各个部分不能像例如简单的时分复用器那样被一致地分配给每个流。
大多数标准压缩处理是对帧的每个8×8像素(或者一组几个相邻的块,被称作“宏块”)进行的。识别出上一帧中与当前考虑的块类似程度最相近的块(一般为同一位置或者相邻位置的块),并识别出当前考虑的块的每个像素的亮度和色度值与所选的之前块的相应值的差。对所得数据进行离散余弦变换,随后在传输之前将所得值除以量化因子Q。量化因子将各个值减小,使这些数据能够以可变比特率进行传输。Q值越大,它所容许的值的范围就越大(某一块与和它进行比较的块之间的差异就越大),但结果是细节的丢失,因为实际值的小差异会导致相同的量化级别。故Q值与画质成反比。在VBR系统中,Q值在整个传输中是恒定的,然而在CBR系统中,它在各帧之间是可变的。
欧洲专利申请EP0742674描述了一种系统,在该系统中,对每一帧进行分析以决定适于对该帧进行编码的量化级别。但是,这导致了一帧与下一帧之间频繁的质量变化,因而使观众分心。

发明内容
本发明提供了一种视频信号压缩处理,其中将视频序列分为若干多帧段,确定以非压缩形式对每个视频段进行编码所需的比特数,并且选择用于传输每一段的量化级别,使得这些段的总体比特率落入预定限度内。本发明还提供了一种适于执行本发明的处理的编码器。
通过对几个帧的段应用相同的量化级别,降低了量化级别的令人分心的变化,进而降低了图像质量的这种变化。本发明还降低了信令开销,因为量化级别的改变并不频繁,并且降低的可变性使得缓冲器控制管理变得更容易。
在优选结构中,所述段被定义为在每个段中,以未压缩形式对每个帧进行编码所需的比特数都落入具有预定大小的范围,并且为每个段都确定了量化级别。这就使得段的长度可变,在适当的编码率不变时进行较少的转换(transition),但在需要时也有能力对更迅速的变化作出响应。
为了使量化级别的令人分心的变化进一步最小化,提供了一优选实施例如果在三个连续的段中,第一和第三段都选择了相同的量化级别,则该量化级别同样适用于中间段。此外,在该优选实施例中,对一个段和下一个段之间的量化级别的明显变化进行平滑处理。这可以通过对位于两个段之间的边界上的若干帧上逐步增量调节量化级别来实现。优选的是,对量化级别的逐步调节降低了具有较高比特率的段中的帧的比特率。
确定对每个段进行编码所需的量化级别的处理可以如下来执行用多个量化值中的每一个对序列中的每一帧进行编码,并从中确定出最满足所需求比特率的量化值。得到此值的适当数学过程随后将在本说明书中进行描述。
优选的是,该过程如下进行操作在对序列进行的第一次处理(firstpass)中,确定该序列中的每一个段的量化级别,而在对序列进行的随后编码中,使用所选的量化级别对每一个段进行编码以便进行传输。
在将要描述的实施例中,本发明利用对视频序列的第一次处理,通过为每个段选择合适的量化参数,针对视频流或固定存储应用来优化可变比特率处理,之后在第二次处理中传送完整的序列。需要两次编码使传输延迟了进行额外编码所消耗的时间。但是,对于某些应用,可以预先为多个选定的比特率值确定合适的参数,从而可以更快地实现以给定比特率进行传输的请求。
与所有数字编码方案相同,该结构依赖于传输的接收端有足够的缓冲存储器可用,因为每一帧的比特数是变化的,并且需要在生成重构(recreation)帧所必需的所有数据之前对其进行存储。如果每帧的比特数很大(传输帧的速率因而下降),以至于解码器没有足够的数据在要显示下一帧时生成该下一帧,则会出现缓冲器“下溢”或者缓冲器饥饿。当缓冲存储器对于已经接收但尚未使用的比特数不足时会出现缓冲存储器溢出。
可以如下所述对其中数据的各个段就重构各个段所需的数据量而言不同的信号进行编码用编码器来确定解码该信号所需的缓冲器参数,并将这些缓冲器参数与编码后的信号一同传输。这种参数可以包括避免在解码器侧造成缓冲器饥饿状态所需的最小缓冲器延迟和避免在解码器侧造成缓冲器溢出状态所需的最小缓冲器大小。该缓冲器数据可以通过要与本申请的发明的处理同时传输的传输序列的初次编码来确定,之后对该序列进行编码,然后在对该序列的第二次处理中对缓冲器数据进行编码,并在编码后的序列的头部进行传输。
通过在开始视频包传输之前向解码器侧的缓冲器提供与这些值中的一个或二者有关的信息,可以防止出现“缓冲器下溢”和“缓冲器溢出”。另一种对“VBR”流所需的缓冲器大小进行控制,且不需要此额外头信息的方法在申请人同日提交的题为“防止缓冲器下溢”的未决申请中公开,并要求0428155.6号英国专利申请的优先权,该申请提供了一种传输经数字编码的视频流的处理,其中对数据的各个段进行编码的速率依据生成每个段所需的数据量而变化,其中,从传输中选择性地省略帧,使得累积的帧速率不会比预定值低。这就确保了接收器不会出现下溢状态。可以为每帧的比特数可以在给定序列中变化的量设定阈限,由此来限制可以被删除的帧的数量。
申请人的与本申请同日提交的题为“防止缓冲器溢出”,且要求了0428156.4号英国专利申请的优先权的申请提供了一种对经数字编码的视频输入流进行解码的处理,其中按照依据重构各个段所需的数据量而变化的速率来对数据的各个段进行编码,其中,对输入中的累积平均帧速率进行监控,并响应于监控到的累积平均值从所接收的输入中选择性地删帧,使得解码输出中的累积平均帧速率不会比预定值低。
这两个发明还提供了一种可变比特率数据解码处理,该处理用于识别传输中的被删除的部分,并使所显示的流重新同步。这可以通过延长各个帧的持续时间,或者通过重复某些帧来完成。同步可以通过对视频流与相应的音频流中的时间戳进行比较,或者通过重复帧来实现。优选的是,可以为每帧的比特数可以在给定序列中变化的量设定阈限,由此来限制由于帧速率降低而引起的感观质量的损失。如果与本发明共同使用,则该阈限可以是预定的大小,其中以未压缩形式对每一帧进行编码所需的比特数受到限制而不降低。
该模式不需要在“视频流会话”之前传输额外的信息,并且避免了在剪辑的开始部分进行缓冲,所以显著减小了启动延迟。显示出的每一帧都将具有相同的视频质量,但视频是以降低的帧速率显示的,因此感观视频质量可能会略有影响。
阈限的设定还使得可以为接收器对序列进行解码所需的缓冲存储器确定最大值。


在此将结合附图,以举例的方式对本发明的实施例进行描述,附图中图1是根据第一实施例的合作来执行本发明的各种部件的示意图。
图2是根据第二实施例的合作来执行本发明的各种部件的示意图。
图3例示了示例性帧序列中的每帧比特的变化。
图4例示了该处理的分析步骤。
图5例示了形成该处理一部分的选择步骤。
图6例示了对于示例性帧序列,该处理所生成的量化值。
图7例示了可以对量化值执行的平滑处理的第一部分。
图8例示了平滑处理的其余部分。
图9例示了缓冲处理。
图10例示了典型视频序列的结构,例示了各种帧类型。
图11例示了从序列中选择性省略帧的处理。
图12例示了在图2的解码器上进行的帧省略处理。
具体实施例方式
图1和图2将实现本发明所执行的操作表示为一系列功能元件。应当理解,这些操作可以由微处理器来执行,并且物理组件不必是独立(distinct)的。具体地说,图中所示的并行或顺序进行的类似处理10、11、12、13、19可以由单个组件循环执行。
图1和图2的不同之处在于,它们采用不同的方法来防止缓冲器饥饿和缓冲器溢出,这将在下文进行描述。
在这些图中,视频编码器1和解码器2经由通信链路3互连。视频编码器1与数据库4相关联,可从中获取用于编码的数据并将数据传输至解码器2,解码器2与诸如电视机的显示设备5相关联以显示解码后的数据。解码器2有相关联的缓冲存储器6。
视频编码器1包括许多功能元件。编码器1使用“两次编码”处理来处理从数据库4获取的数据。首先,对整个序列进行分析(10,11,12,13)。根据分析结果,将该序列分割(14)成许多段,并存储(15)这些段的统计资料。使用编码处理产生的数据来生成比特率与量化级别之间的一般关系(16),之后为每个段确定(17)最佳的量化级别。通过平滑处理对该值进行修改(18)。使用这些统计资料,可以在第二次处理中生成带有“VBR”特性的最终比特流(或多比特流)(19)。该统计资料也可以用来防止“缓冲器溢出”和“下溢”。
另一部分21、22、23(图1)或31、32(图2)执行了用来控制远程解码器2的缓冲器控制处理,这将在下文中讨论。
因为这是“两次编码”处理,所以引入了延迟,使得该处理主要适合于非直播的视频内容(按需视频)。但是,应当理解,第一次处理所需的处理时间可以比传输速率更快,这是由于它不受连接3的带宽的限制。
下面将更详细地讨各个处理。
在第一次处理中,首先通过多个并行工作的VBR编码器(10、11、12、13)对视频序列进行分析,以针对各个量化级别Q1、Q2、Q3和Q4对视频序列进行编码。此步骤是逐帧进行的。其图示在附图4中,该图示出了4个流,每个流都有其自己的量化值(quantizer)。例如,首先用每个量化级别“Q1”、“Q2”、“Q3”和“Q4”对“帧1”进行编码。然后,按照相同的量化值序列对“帧2”进行编码,直到对整个序列处理完毕为止。此步骤需要的处理能力是标准“VBR”编码器的4倍。经验测试显示,对于在H264标准下工作的编码器来讲合适的量化值应为Q1=10、Q2=20、Q3=30、Q4=40。这样可以确定出精确的R-Q函数(处理16),R-Q函数使量化级别Q与每帧比特数R产生关联。相应的计算开销大约是一般VBR编码器的4倍。
R-Q函数适用于可变比特速率的多个流,所以下文称之为“多流速率控制(MRC)”函数。该函数可按如下方式(处理16)来确定。在该实施例中采用了两个数学模型,如实验结果所表示的,它们在Q的不同范围上非常准确。
R=a’e-b’Q(MRC函数1)第二模型是三次多项式R=aQ3+bQ2+cQ+d(MRC函数2)其中R为平均比特/每帧,Q为量化参数,a’、b’、a、b、c、d为待确定的建模参数。
第一模型在21<Q<50范围内是良好的近似,第二模型在O<Q<30范围内是良好的近似。
在此需要注意,因为每帧的比特数R随着Q(量化参数)的增加而下降,并且两个特性都只能是正值,所以系数a、b、c中的至少一项为负数,而a’、b’必须都为正数。
“模型1”需要两个建模参数a’和b’,故需要2个流来确定这些参数的值,而“模型2”需要4个建模参数,故需要所有4个流来确定它们的值。
值得注意的是,如将要参照途5所描述的,在范围20<Q<30内,模型的选择需要另一阶段A,即“切换机制”,来确定当“Q”落入[21,30]之间的范围时,“模型1”还是“模型2”能够为所考虑的特定段提供“平均比特/帧(R)”的更精确的预测值。
对于“模型1”,应用Q3=30、Q4=40,由此得到建模参数a’和b’。
对于“模型2”,应用Q1=10、Q2=20、Q3=30、Q4=40,从而生成建模参数a、b、c、d。
在生成上述两个方程式之后,为每个方程式设“Q=20”,由此为两个模型生成不同值的R20和R20’。
计算这两个值之间的“偏差%(D)”D=[(R20’-R20)/R20’]*100%用于在21<Q<30的范围内针对Q值预测“R”的模型是根据D的绝对值来选择的。如果-6%<D<+6%,则使用模型1,而如果D落在+/-6%的范围之外,则使用模型2。
与此处理平行进行的是,通过分段(Wn)’处理14将视频序列分为可变长度的视频段。“分段”处理14在视频序列中限定了各个窗口或段。它利用固定的量化值,例如Q4=40,从多个并行编码器13之一中提取编码数据,并确定每S帧的R值(每帧的平均比特),其中“S”是采样速率。例如如果“S=1”,则对每一帧都要进行这种检查。更典型的是将该值设定为与目标帧速率相等。例如,如果对于要编码的视频序列的目标帧速率为15帧/秒,则将S值设定为15,这样,这种检查将每15帧进行一次。在图4所示的示例中,整个序列的长度为49帧,其被动态地分成4个段Wn。当然,在其他示例中,段Wn的数量可以更少或更多,这取决于内容和在编码处理开始时所设定的阈值(A)的值。
特殊情况下,第一段使用的帧数等于由“S”设定的值的两倍。这意味着“第一次检查”发生在2*S=2*15=30,即30帧之后。该检查还需考虑剪辑(clip)开始处会出现“内”帧,内帧产生了比“P”帧更多的比特。这样,比特更好地分布在第一段中,从而产生了更好的VBR特性。
在第一次处理期间,对于整个视频序列计算R值(平均比特/帧),并将存储(15)结果。该R值表示在特定瞬间每帧的平均比特数。例如,计算第5帧的“R”,为了例示我们假设头5帧分别是以2000比特、1000比特、500比特、1000比特和500比特生成的。R(5)=(2000+1000+500+1000+500)/5=1000比特/帧。图3示出了典型的轨迹,“Y轴”表示“平均比特/帧(R)”,而“X轴”表示“帧号(N)”。
如果R值较之以前的R值超出了阈值A(例如大了30%),则将当前帧设定为当前段(Wn)的最后一帧,并生成新的段。
该阈值由终端用户在处理之初设定。该值越大,结果越接近“VBR”特性。如果该值接近于“0”,则该序列将被以近乎于“CBR”的特性来编码。该参数的典型值为30%。
这样,在第一次处理中,以如图4所示的固定量化值的不同值创建了4个流,并且根据该平均比特/帧的变化来创建可变长度的段Wn。然后针对量化值“Q”的不同值的每一段,预测平均比特/帧速率(R),范围[1,50]。
由于段被定义为,在每一个这种段中,R值都只在有限的范围变化,故可以使用每个段中的R值,利用R-Q函数(16)为整个序列中各个段确定要在第二次处理中使用的适当量化因子Q(处理17)。适当的R值和适当的Q值可以基于某些限制条件,例如解码器缓冲能力、传输速率或总存储器大小。这些限制条件可以预先设定,或者可以从解码器2中作为数据而获取。
为了给每个段选择最佳的量化值Q,如通过优化处理所确定的,选择满足以下条件的R值R<Tg/f其中R是由R-Q函数16确定的每帧平均比特f是目标帧速率将帧传输至目的地所用的传输速率Tg是目标比特率表示维持目标帧速率所需的比特率。
Tg值和f值由传输媒介3和用户设备2的能力,以及视频流内容的性质决定。
例如,如果Tg=20000且f=10,那么R<2000Kbits/帧。
最佳量化值Qbest可利用R-Q函数来确定。该处理适用于由分段器14生成的每一段。如果在某个段与下一段间Q值有很大的变化,则终端用户会注意到视频质量的突变,这很令人厌烦。为减轻这种影响,本实施例对优化器17所产生的量化值应用平滑处理18。该处理被示于图6、图7、图8和图9中。
图6中的上部轨迹例示了如下的实施例在优化器17中应用“MRC”函数之后但在平滑之前,每个段Wn都有自己的量化级别Q值。可以注意到,在段“Wn”和相邻段“Wn-1”和“Wn+1”之间的过渡处量化值Q有突然的变化,段“Wn-1”和段“Wn+1”的量化级别为QL和QR。另外还请注意低“Q”值对应于高的每帧比特数。
图7和图8例示了平滑处理。该处理首先为所考虑的段设定一修改后的量化参数。如果该段或者紧接着的下一段的量化参数较之当前窗口的量化参数大了预定阈值,则修改后的量化参数与紧挨着的前一段的量化参数相同(步骤62-64)。即使对过渡进行平滑,这种大的变化也会使人类观察者感分心,故在这种情况下,将量化级别保持为其之前的值。
如果这种变化小得足以通过平滑处理来解决,则在从某一段向下个段过渡的地方逐步地改变量化值Q(步骤73、74)。这总是可以通过增加来自Q值较低的段的各帧的Q值(降低比特/帧)而进行,因为不大可能使目的地的缓冲器过载。但是,如果所考虑的段的量化值既低于紧挨着的前一段的量化值也低于紧接着的下一段的量化值,则首先将要使用的Q值设定为这两个量化值的中间值(步骤67),而不是该段的(较低)最佳值。
现对平滑处理做更详细的描述。首先计算段Wn的左右边界处量化Q值的差异。
GapLeft=QL-Qn(步骤60)GapRight=QR-Qn(步骤61)(请注意,Qn和QR是优化器17生成的值,但是QL是在对前一段应用平滑处理后得到的值。针对前一段,轮到将QR修改成要生成的Qn’值)。
接下来对这些差异进行评估,以确定它们是否超出了阈值(步骤62、63)。在本示例中,阈值被设定为+10。
如果GapLeft或GapRight超过了该阈值,则我们将值设定为Qn’=QL,其中Qn’是新的Q值(步骤64)。如果GapLeff和GapRight都落在阈值之上或者低于阈值,则要进行进一步的测试,以确定这些差异的符号(步骤65)。如果两者中有一个是负数,则我们设定Qn’=Qn(步骤66),换言之,使用优化器17得到的值。如果两个差值都是正数或零,则我们设定Qn’=(QL+QR)/2(步骤67),由此设定了位于紧挨着所考虑的段与紧接着所考虑的段之间的值。其结果是为这一段设定的质量低于优化器17所设定的质量(大于其量化值),但它却使段之间的质量过渡最小化。
现参照图8,使用Qn’值来生成两个新值(步骤70)GapLeftNew=QL-Qn’GapRightNew=QR-Qn’使用这些值对段Wn的最初几帧和最后几帧应用平滑处理,如步骤73所示。
如果GapLeffNew为正值,则相邻帧的量化值QL适用于段Wn的第一帧,而对于随后的每一帧,量化值将以“Step-value”逐步减小,直至达到最小值Qn’。随后的帧都取该最小值Qn’。例如,如果QL=40,Qn’=32,且Step-value=1,则我们得到GapLeffNew=40-32=+8。该值为正,故对该段的从第一帧开始的每一帧,量化值“Q”都从之前帧的值减小“1”,直至达到级别Qn’。所以例如,Qn1=40,Qn2=39,Qn3=38,…Qn9=32,其中Qn1为“段Wn”中的第一帧的量化值,Qn2指代第一帧之后的那帧的量化值,以此类推。第九帧之后的所有帧都取值Qn=Q9=32。
类似的是,如果GapRightNew为正,则对该段的最后几帧采用同样方法处理(步骤72、74),具体如下。如果GapRightNew为正,则将该段的最后一帧的“Q”值提高至QR,并且每一个之前帧的Q值从后继帧的Q值开始以Step-value减少,直至达到最小值Qn’。例如,如果QR=38,Qn’=32,Step-value=1,则我们得到GapRightNew=38-32=+6。该值为正,该段的最后6帧(Qnlast-5至Qnlast)的量化值从Qn’=32到QR=38逐步增加,由此Qnlast-6=32,Qnlast-5=33…Qnlast-1=37,Qnlast=38。
可以看出,任意给定段的GapLeffNew值都与之前段的GapRightNew的符号相反。如果GapLeftNew为负值,则在所考虑的段的开始处没有使量化值(Qn’)“逐步”变化(步骤75)。相反,GapRightNew为正的之前段会经历平滑处理。类似的是,如果GapRightNew为负,则在所考虑的段的结尾处没有使量化值(Qn’)“逐步”变化(步骤75),但是随后的段由于其GapLeftNew为正值而要经历平滑处理。
如果任一过渡的差值都为0,当然就没有必要对该过渡进行平滑处理。但是应该注意这样的情况不大可能发生,因为段是根据适当的量化级别的变化而限定的。
图6的下部示出了平滑处理应用于该图上部的轨迹后的结果。使得平滑处理按照以下方式进行在较低值的段的帧中增加Q值(如图6的下部轨迹所示),而不是在较高值的段中增加Q值,保证了在任何给定段中Qn’总是大于Qn,从而比特率永远不会超出传输媒介3的能力。
至此“第一次处理”(步骤10-18)结束。此时,在对数据的第二次处理中,编码器19可以按照与常规VBR编码器(编码器19)一样的方式对整个视频序列进行编码。该编码器使用在优化和平滑过程17、18中确定的,为各个段估计出的量化因数Q,并将所得到的比特流通过网络3传输至编码器2。
由于任意比特率的最佳量化值都可以通过第一次处理中预测出来,所以可以利用“VBR”特性(多流)同时对多个流进行编码,因为各个流的合适比特率都可以从该处理中容易地预测出来。第一次处理可以在任何时刻进行,或预料到对于给定比特率的相关序列的请求,或可以应特定要求而进行。
VBR型输入会给接收器2带来如下问题要保证有足够的缓冲资源可用。要确定两个相互关联的标准,即缓冲容量和缓冲延迟。由于每帧的比特数各不相同,而比特率本身是恒定的,所以帧速率会变化。所需的缓冲延迟是其足以使最慢的帧(每帧比特数最高)被传送并且及时处理从而显示它们,而缓冲容量是根据在需要已经解码了的帧之前对其进行存储所需的容量来确定的。由于这些能力有赖于每帧比特数的变化,所以如果没有一些与待解码的序列有关的数据,解码器就无法进行预测。
就讨论到目前为止的优化处理而言,图1和图2是相同的,只是图示出了不同的处理(分别为21、22、23;以及31、32、41、42),以防止缓冲器6处的溢出和下溢与解码器2相关联。图1示出了第一处理21、22、23,通过该处理,解码器2中的缓冲器6可以接受VBR型输入,从而避免了解码器缓冲器中出现任何“溢出”或“下溢”状态。图2示出了第二处理31和32,通过该处理,解码器2中的缓冲器6可以接受VBR型输入,从而避免了解码器缓冲器中出现任何“下溢”状态,图2还示出了另一处理41、42,通过该处理,解码器2中的缓冲器6可以接受VBR型输入,从而避免了解码器缓冲器出现任何“溢出”状态。
首先,给出一种数学模型来描述“视频流应用”中解码器侧的缓冲器级别。
图9例示了解码器2处的缓冲器6的级别,示出了在比特流90通过固定带宽网络3传输时,如何随时间来构造缓冲数据。定义了下列参数。
T传输速率(比特/秒)—这是传输信道3的带宽。
f目标帧速率(帧/秒)—这是比特流所代表的帧在显示设备5上进行显示的速率。
R(t)时间t内的平均比特/帧。这是随时间变化的累积参数。
t过去的时间(秒)。
B(t)插入到缓冲器中的比特—该参数表示在时间段t内插入缓冲器的比特数。
B(t)’从缓冲器提取出的比特—该参数表示在同一时间段t内从缓冲器提取出的比特数。
在给定时刻t处包含在缓冲器内的比特数“dB”由下式给出dB(t)=B(t)-B(t)’另外,在给定时间“t”内插入到缓冲器内的比特数B(t)由下式给出B(t)=T*t类似地,在同一时间内从缓冲器提取出的比特数B(t)’由下式给出B(t)’=R(t)*f*t结果,在给定时刻t处,剩余在缓冲器中的比特数“dB”的净数由下式给出dB(t)=B(t)-B(t)’=(T-R(t)*f)t该函数确定了在假设传输速率十分理想并且固定为速率T的条件下,给定时刻t处包含在缓冲器中的比特数。由于T和f是预先确定的,故dB(t)的值以函数R(t)的形式随时间变化。
缓冲器下溢,或称“饥饿”是指要对下一帧进行解码,但所需数据还未抵达的情况下出现的状态,换言之,缓冲器空了。为了避免缓冲器下溢,通常是在第一数据抵达缓冲存储器之后延迟解码处理的开始。这会对终端用户造成视频序列显示的延迟,故希望使这种延迟最小化。
根据以上函数,可以确定最小值dBmin(tmin)和会出现该最小值的时刻tmin。如果该最小值为负,也就是说如果存在时刻tmin,在该时刻处,解码器2接收到的比特数少于要保持显示在显示设备5上的帧速率所需解码的比特数时,则存在下溢状态。
在本实施例中,为避免缓存下溢,在针对一时间段的解码处理开始时引入缓冲器延迟tb=dBmin(tmin)/T这样,在解码处理开始前所收到的比特数为T*tb,由此将这么多的比特装入缓冲器中。这样就将dBmin升高到零,从而对缓冲器延迟进行了最小化。
所需缓冲量亦会变化,这是因为在低比特/帧速率时,到达的比特数大于解码器对它们进行处理的速率。如果在对视频包解码之前没有分配足够的空间来存储它们,就会出现缓冲器“溢出”。如果可以在传输视频序列之前确定出所需的峰缓冲器大小,就可以预先在解码器中预留出足够的缓冲器容量。
如已经讨论过的,在给定时刻t处包含在缓冲器中的比特数“dB”由下式给出dB(t)=(T-R(t)*f)t利用该函数,如果R(t)的值已知,则可以确定出特性dB(t)达到其峰值dBmax时的时间“tmax”。由此,可确定出为防止缓冲器溢出而分配的缓冲器大小“Bf”Bf=dBmax(tmax)+dBmin(tmin)其中dBmin表示为防止下溢而装入缓冲器的比特的绝对最小值,如上文已经讨论过的那样。
在真实的VBR传输中,tb值和Bf值不可能事先预知,因为它们有赖于累积变量R(t),而R(t)本身又依赖于编码处理。但是本实施例在编码器1处对序列采用了两次编码,所以能够利用第一次处理(处理21)用编码器1处的缓冲器控制处理21、22确定出函数R(t)。其他参数T和f也可以为编码器1所用,故编码器1可以确定出所需的缓冲时间tb(处理22)和缓冲器容量Bf(处理23),从而在数据的第二次处理中作为头信息插入到传输序列的开头。因此,通过在视频序列传输之初将这些值告知解码器侧的缓冲器,可以防止“缓冲器下溢”和“缓冲器溢出”。另选的是,对这些值的限制可以由解码器系统2来指定,并通知给编码器1,从而对编码器所确定的值进行检查,使之在对“剪辑”进行流传送之前同这些预定限制相兼容。
为了如上所述来控制缓冲器,需要提供头信息,或设定默认值。图2例示了一种无需这种额外头信息来传输比特流的方法,该方法依据的是我们的共同未决国际申请的发明,该国际申请要求了上文提到的英国GB0428155.6号和GB0428156.4号专利申请的优先权。
在该实施例中,比特流在具有固定保证带宽(T)的传输信道上传输。回忆上文所述,在给定时刻t,剩余在缓冲器中的净比特数“dB”由下式给出dB(t)=(T-R(t)*f)t其中f是帧速率,R(t)是累积平均每帧比特数,为了避免缓冲器下溢,我们要求对于整个序列中的所有时刻“t”都有dB(t)≥0,并且得到R(t)≤T/f。为了将累积平均每帧比特数R(t)保持在该最大值以下,可能必须从传输中省略掉代表某些帧的数据。
为了实现这一点,根据上文提到的我们共同未决、要求了英国GB0428155.6号专利申请优先权的国际申请所公开的发明,对编码器19进行控制(31、32),以选择性地从传输中省略掉代表某些帧的数据,由此来避免下溢。这可以用三种不同的方式来进行第一,它可以是“离线”处理,该处理可以发生在上述编码处理结束之后。作为另一种方式,它可以在上述第二次处理过程中动态地进行。第三种可能是,通过检查每秒传输了多少帧,并依据下文所述的规则丢弃一些帧,该处理发生在传输某剪辑之前,而在对整个流编码完成之后。
图10例示了具有I帧、P帧和B帧的标准编码视频序列。H264、MPEG-4、MPEG-2和所有相关视频压缩的标准都使用了该模型(schema)。I帧建立起序列的初始状态,后续帧是通过确定每一帧与其相邻帧的差异而生成的。每一P帧都被编码为与之前的P(或I)帧不同,每一B帧都被编码为与之前和之后的P帧均不同。可以看到相邻的帧并不依赖于B帧,所以如果丢弃一些B帧,则剩余的帧还是可以被解码,而不会损失视频解码质量和一致性。但是,丢弃个别P帧会影响对它们相邻帧的解码。因而得到只能丢弃B帧的结论。(应注意,在确定累积每帧比特数R(t)时,将丢弃的B帧计算作大小为零的帧,这样丢掉一帧就会造成整体每帧比特数的减小。类似地,接收到的帧速率f的值也会将丢弃的帧考虑在内)。
要丢弃的B帧的数是按如下确定的。在任意时间段t上,传输的比特数都不得超出目标传输速率T。为实现这一点,在该时间段t内对由帧生成的比特数进行求和(处理31),然后丢弃B帧,由此减去它们的比特数,直到实现目标速率为止(步骤32)。
∑B(i)≤T×t其中T目标传输速率,∑B(i)时间段t内由帧数生成的比特总和。
B帧可以随机丢弃,或根据诸如“最大的先丢弃”(这样所需丢弃的帧会较少)的标准来选择性地丢弃,直到满足条件为止。图11中对此进行了展示。在每对P帧之间丢弃一个B帧,直到比特数降低到目标数为止。如果在达到目标之前,遇到了该段的末尾,则该处理重新来过,从每对P帧之间丢弃第二B帧,直到满足条件为止。当然,B帧与P帧的比率n(B)/n(P),在本实施例中是2,必须足以使本方法可行。
例如,设目标帧速率f=10帧/秒,传输速率T=20000比特/秒,时间窗口t=2秒,累积比特率/帧R(t)=2325,帧大小P1=3500比特,B2=1500比特,B3=1800比特,P4=4000比特,B5=2200比特,B6=1000比特,P7=3000比特,B8=1300比特,B9=1300比特,P10=2800比特。
该时间帧段内编码的总比特数=2240比特/帧,注意该值与R(t)不相同,因为R(t)是到此时间点时整个序列上的积累值。
将这些值代入上面得出的不等式f≤T/R(t),该10帧窗口生成了f’=20000/2325=8.6fps的帧速率。
为了达到目标帧速率f=10fps,需要在该窗口至少丢弃两个B帧以使启动延迟最小化,同时避免出现缓冲器下溢。要丢弃的帧的精确数由∑B(i)≤T*t求和公式来确定。对帧的大小进行求和3500+1500+1800+4000+2200+1000+3000+1300+1300+2800=22400=T+2400换句话说,必须通过丢弃“B帧”的方式去掉至少2400比特。从该段的头开始,我们丢弃紧跟着第一个两P帧中每一个的第一B帧(即B2、B5)。这样的结果是丢掉了1500+1800=3300比特,足以满足目标帧速率f。
图11展示了如何按照这种方式来丢弃B帧。在该示例中丢弃了两个帧,这样就节省出2400比特,使启动延迟得以最小化,并且无缓冲器下溢。对整个序列重复该处理。本发明通过在实际传输剪辑之前对要传输的信号进行修改,能够避免缓存下溢。
允许存在剩余的启动延迟tb,为的是少丢弃些帧。这会提供些额外的比特E=tb×T。
这些额外比特可以在整个序列中使用,从而保留一些B帧。例如,如果缓冲被设定为不超过2秒,则tb=2秒。如果T=20000比特/秒,则E=2秒*20000比特/秒=40000额外比特。在前面的实施例中,2400比特就可以使B帧免于被丢弃。所以如果从先前描述的示例中的时段(t)所需的比特中减去该额外比特,我们就得到40000-2400=37600比特>0。
换句话说,在那个时段,我们“保留”了两个“B帧”(未被丢弃),并且我们还保存了37600额外比特可以用于接下来的时段,重复该处理直至剪辑的末尾。很明显“缓冲”越大,被丢弃的“B帧”越少,但是启动延迟却会越大。
该处理需要从传输中丢弃序列的某些帧。需要遵守特定的原则,以保证所产生的对质量的影响最小化。再参照图1和图2,我们可以想起,分段处理14被设置成,使得任意给定段中量化级别的变化都受限于阈值参数A。在要描述的处理中,在将流传送至终端用户时,该参数会限制帧速率的下降。
该阈值的存在确保了帧速率不会降低到以下给出的fnin之下fmin=(1-A)其中,f是目标帧速率,A是上文所定义的阈值。例如,如果阈值A=30%,则目标帧速率f=25fps,fmin=25×(1-0.3)=17.5fps。
在本例中,帧速率在整个序列中都不能降至17.5fps以下。
为了只能从“B帧”中选择要丢弃的帧,“B帧”与“P帧”的比率为n(B)/n(P)≥kA
其中,n(B)=“B帧”的数量n(P)=“P帧”的数量k是选择用于补偿相对较大的P帧的常数,通常比B帧大1.5至2倍。在下例中,我们选择k=2。
例如,给定阈值A=30%,“B帧”与“P帧”的比率可以从下式得出n(B)/n(P)≥k×0.3=0.6。
换句话说,该处理要求针对该阈值,B/P比率应该不小于0.6。在大多数执行H264标准的情况下,该比率可以非常容易地设立。当然,当实际比率超过目标帧速率时,就无需为了避免缓冲器饥饿而丢弃任何帧了。
需要注意的是,虽然丢弃了单独的B帧,但接收器可以通过对视频流中和相应的音频流中的时间戳进行比较,或者通过代替丢失帧而传输的经编码的“位置标记(place marker)”,或者因为接收到的B帧和P帧的常态模式(nomal pattem)中B帧的缺失,而检测到这些帧的缺失。接收器通过重复一帧、在帧间进行内插,或者延长已存在帧的持续时间,来补偿丢失的帧。
在对序列进行流传送的过程中,在接收器处进行根据我们的共同未决国际申请(要求GB0428156.4号英国专利申请的优先权)中的发明的缓冲器溢出避免处理。与前文所述的缓存下溢避免系统类似,这有赖于B帧的存在,以及利用阈值A对流进行编码,该阈值A限制了每帧比特数的变化。
将分配给终端设备的最大内存定义为M。如果超出了该值,就会出现“缓冲器溢出”。已经知道,“缓冲器”在对序列进行流传送的整个过程中的状态由下式来表示dB(t)=(T-R(t)*f)t。
通过应用早先描述的处理,我们可以确信对于任何t,都有dB(t)≥0。
为了避免“缓冲器溢出”,对于任意时段t,都有dB(t)≤M,将最大传输帧速率fmax的阈值定义为fmax≤f(1+A)其中,f目标帧速率,
A阈值变化fmax最大实际传输帧速率例如,对于目标帧速率f=25fps,阈值变化设为A=30%,fmax≤25*(1+0.3)=32.5帧每秒。
这是传输帧速率的最大值,其负责构造缓冲器内容。
特性fmax确保了在时间段t上传输的帧中,将丢弃不大于A(=30%)的比例,所以得出的帧速率不会低于目标帧速率的30%。
缓冲器溢出可以通过使用这两个参数M和fmax来避免。首先确定比特率(步骤41)。如果条件dB≤M得到满足,就无需进行任何测量,因为缓冲器溢出不会发生。但是,在该条件未得到满足的情况下,从最近从网络上传送来的段中丢弃帧。按照与结合编码器已经讨论过的方式相同的方式来确定要丢弃的“B帧”的数量∑B(i)≤T*t其中,T目标传输速率,∑B(i)由包含在该时段t中的帧数生成的比特总和。
可以利用与前文所述同样的规则来丢弃B帧从而避免下溢,如图11和图12所示。
图12展示了在图2中解码器2处进行的处理42,并例示了在省略掉其中一个帧(93)的所选B帧从而避免了“缓冲器溢出”前后的四帧(91,92,93,94)序列。在整个序列上重复该处理。
接收器2对解码出的视频帧时间戳和音频流时间戳应用同步处理7。这使得帧保持显示较长时间,或者重复显示一帧直到音频时间戳重新和它同步为止。
图2、10、11和12中例示的模式不需要在“视频流会话”之前传输额外的信息,而且各个图像的质量并没有下降,但在显示视频时感观质量可能受损,这是因为省略了某些帧。然而,感观质量总比通过“CBR”编码达到的好得多。这种模式还无需在剪辑开始时进行缓冲,从而使“启动”延迟最小化,而不会出现缓冲器下溢。此外,可以容易地控制缓冲器溢出,从而内存有限的设备将能够尽可能有效地显示经VBR编码的视频序列。
本发明可以用来控制单个流,或者它也可用于多信道速率控制。换句话说,一个流可以被传送到与具有不同传输速率(T)或“带宽”的不同“管道”上的设备。例如,如果对“VBR”剪辑进行编码,则应用上述定义的规则且目标传输速率T=500kbps,该序列可以被流传送至连接在网络上的带宽范围很大的若干设备。所有这些设备都将接收到同样的视频质量,但低带宽设备会体验到降低的帧速率。每台设备都可以根据其连接来设定其“目标传输速率”,然后对该“目标传输速率”应用上文描述的规则以及函数。
权利要求
1.一种视频信号压缩处理,其中将视频序列分为多帧段,确定以非压缩形式对各个视频段进行编码所需的比特数,为传输各个段而选择量化级别,使得段的总体比特率落入预定限度内。
2.根据权利要求1所述的处理,其中将所述视频序列分为多个段,使得在每个段中,以非压缩形式对各个帧进行编码所需的比特数都落入预定大小的范围内,并为每个段确定一量化级别。
3.根据权利要求1或权利要求2所述的处理,其中如果在三个连续的段中,第一和第三段都选择了相同的量化级别,则该量化级别同样适用于中间段。
4.根据权利要求1、2或3所述的处理,其中对一个段和下一个段之间的量化级别的较大变化进行平滑处理。
5.根据权利要求4所述的处理,其中所述平滑处理是通过对位于所述段之间的边界上的多个帧逐步增量调节量化级别来执行的。
6.根据权利要求5所述的处理,其中对量化级别的逐步调节降低了具有较高比特率的段中的帧的比特率。
7.根据前述任意一项权利要求所述的处理,其中通过以下方式来确定对各个段进行编码所需的量化级别用多个量化值中的每一个对所述序列中的每一帧进行编码,并从中确定出最满足所需比特率的量化值。
8.根据前述任意一项权利要求所述的处理,该处理还包括用于确定对所得比特流进行解码所需的缓冲器参数的处理。
9.根据权利要求1至7中任意一项所述的处理,该处理还包括用于从所得比特流中选择性地删除帧,以使所述比特流可以在预定的缓冲器延迟内不出现缓冲器下溢的情况下被解码的处理。
10.根据前述任意一项权利要求所述的处理,其中在对所述序列进行的第一次处理中,为所述序列中的每个段确定量化级别,而在对所述序列进行的随后处理中,使用所选的量化级别对每个段进行编码,并传输所述序列。
11.一种用于生成压缩信号的视频编码器,该视频编码器包括用于将视频序列分为多帧段的装置;用于确定以非压缩形式对各个段进行编码所需的比特数的装置;以及用于为传输各个段而选择量化级别,使得段的总体比特率落入预定的限度内的装置。
12.根据权利要求11所述的编码器,该编码器包括用于将所述序列分为多个段,使得在每个段中,以非压缩形式对各个帧进行编码所需的比特数都落入预定大小的范围内的装置;以及用于为每个段选择一量化级别的装置。
13.根据权利要求11或权利要求12所述的编码器,其中所述量化级别选择装置被构造用于识别出现在所述序列中的介于两个选择了相同量化级别的段中间的段,并且将该级别也应用于所述中间段。
14.根据权利要求11、12或13所述的编码器,该编码器包括用于对一个段和下一个段之间所选择的量化级别的较大变化进行平滑处理的装置。
15.根据权利要求14所述的编码器,该编码器包括用于对位于所述段之间的边界上的多个帧逐步增量调节量化级别的装置。
16.根据权利要求15所述的编码器,其中所述调节装置被构造用于降低具有较高比特率的段中的帧的比特率。
17.根据权利要求11到16中任意一项所述的编码器,该编码器包括利用多个量化值中的每一个对序列中的每一帧进行编码的装置;以及用于从中为各个段确定最满足所需比特率的量化值的装置。
18.根据权利要求11到17中任意一项所述的编码器,该编码器还包括用于确定对所得比特流进行解码所需的缓冲器参数的装置。
19.根据权利要求11到17中任意一项所述的编码器,该编码器还包括用于识别所述序列的将导致足以造成缓冲器饥饿的帧速率降低的段的装置;以及用于从所得比特流中选择性地删除帧,从而可以在不出现缓冲器饥饿的情况下对所述比特流进行解码的装置。
20.根据权利要求11到19中任意一项所述的编码器,该编码器包括用于在对所述序列进行第一次处理时确定要采用的编码模式的装置;以及用于在对所述序列进行第二次处理时利用所选量化级别对所述序列的各个段进行编码以进行传输的装置。
全文摘要
本发明涉及视频信号处理。对视频序列(4)进行信号压缩处理,其中将所述视频序列分为(14)多个段,使得在各个段中,以非压缩形式对各个帧进行编码所需的比特数都落入预定大小的范围内,并且选择(17)用于对各个段进行编码(19)的量化级别,使得该段的总体比特率对应于预定值。该值可以预先设定,或者可以响应于来自传输网络(3)或远程解码器(2)的输入而设定。根据每帧比特数R的函数来确定量化级别Q,该函数是通过在传输前对整个序列进行分析(10、11、12、13)而确定的。
文档编号H04N7/26GK101084676SQ200580044043
公开日2007年12月5日 申请日期2005年12月8日 优先权日2004年12月22日
发明者奥顿·卡玛里奥蒂斯, 罗里·斯图尔特·特恩布尔, 罗伯托·阿尔瓦雷斯·阿雷瓦洛 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1