专利名称:多通路视频编码的制作方法
背景技术:
视频编码器通过利用多种编码方案编码视频图像序列(例如,视频帧)。视频编码方案典型地是以内帧或帧间的方式编码视频帧或视频帧的各部分(例如,视频帧内的像素集)。内帧编码的帧或像素集是独立于其他帧或其他帧内的像素集来编码的。帧间编码的帧或像素集是通过参考一个或多个其他帧或其他帧内的像素集来编码的。
当压缩视频帧时,一些编码器实现了“速率控制器”,其为将要编码的视频帧或视频帧的集合提供“比特预算”。比特预算指定已经分配给编码该视频帧或视频帧集合的比特数量。通过有效分配比特预算,速率控制器试图生成考虑到某种限制(例如,目标比特率等)的最高质量压缩的视频流。
迄今为止,已经提出了多种单通路和多通路速率控制器。单通路速率控制器为在单个通路中编码一系列视频图像的编码方案提供比特预算,而多通路速率控制器为在多个通路中编码一系列视频图像的编码方案提供比特预算。
单通路速率控制器在实时编码条件下是有效的。另一方面,多通路速率控制器基于一组限制为特定比特率优化编码。迄今为止,并没有很多的速率控制器在控制它们的比特率中考虑到帧或帧内像素集的空间或时间的复杂度。同样,大多数多通路速率控制器没有为虑及所期望比特率而对帧和/或帧内像素集使用最优量化参数的编码解决方案充分搜索解空间。
因此,现有技术中存在对使用新颖技术的速率控制器的需求,以便在控制用于编码一组视频图像的比特率的同时,考虑视频图像和/或视频图像各部分的空间或时间复杂度。现有技术中还存在对多通路速率控制器的需求,其充分检查各种编码方案以识别出针对视频图像和/或视频图像各部分使用最优量化参数集的编码方案。
发明内容
本发明的一些实施例提供一种编码多个图像(例如,视频序列的多个帧)的多通路编码方法。该方法重复执行编码这些图像的编码操作。该编码操作是基于标称量化参数,该方法使用该标称量化参数计算这些图像的量化参数。在该编码操作的几次不同的迭代过程中,该方法使用了几种不同的标称量化参数。该方法在达到了终结准则(例如,其识别到一个可接受的图像编码)时停止其迭代过程。
本发明的一些实施例提供一种用于编码视频序列的方法。该方法识别量化视频中的第一图像的复杂度的第一属性。它还基于所述识别的第一属性为编码第一图像识别量化参数。该方法接着基于所述识别的量化参数编码第一图像。在一些实施例中,这种方法为视频中的多个图像执行这三项操作。
本发明的一些实施例基于视频图像和/或视频图像的各部分的“视觉掩蔽”属性编码视频图像序列。图像或图像各部分的视觉掩蔽是对在图像或图像各部分中能够忍受多少编码人工因素的指示。为了表达图像或图像各部分的视觉掩蔽属性,一些实施例计算了量化图像或图像各部分的亮度能量的视觉掩蔽强度。在一些实施例中,该亮度能量测量作为图像或图像各部分的平均luma或像素能量的函数。
替代该亮度能量或与之结合,图像或图像各部分的视觉掩蔽强度也可以量化图像或图像各部分的活动性能量。活动性能量表示图像或图像各部分的复杂度。在一些实施例中,活动性能量包括量化图像或图像各部分空间复杂度的空间组件,和/或量化由于图像之间的移动而能够忍受/掩蔽的失真数量的运动组件。
本发明的一些实施例提供一种用于编码视频序列的方法。该方法识别视频中的第一图像的视觉掩蔽属性。其还识别用于基于所述识别的视觉掩蔽属性编码第一图像的量化参数。该方法接着基于所述识别的量化参数编码第一图像。
本发明的新颖特征在所附权利要求书中阐述。然而,出于解释的目的,在以下附图中阐述本发明的多个实施例。
图1给出了概念性举例说明本发明一些实施例的编码方法的过程;图2概念性举例说明了一些实施例的编解码系统;图3为举例说明一些实施例的编码过程的流程图;图4a为一些实施例中图像的标称移除时间和最终到达时间之间的区别与举例说明下溢条件的图像数量之间关系的曲线图;图4b举例说明了在消除下溢条件之后,对如图4a中所示的同一图像标称移除时间和最终到达时间的区别与图像数量之间的关系曲线图;图5举例说明了一些实施例中编码器用于执行下溢检测的过程;图6举例说明了一些实施例中编码器用于消除图像的单个片段中的下溢条件的过程;图7举例说明了视频流应用中缓冲器下溢管理的应用;图8举例说明了HD-DVD系统中缓冲器下溢管理的应用。
图9给出了利用其实现了本发明的一个实施例的计算机系统。
具体实施例方式
在以下对本发明的详细描述中,提出并描述了本发明的众多细节、实例及实施例。然而,对本领域技术人员明确并显而易见的是,本发明并不局限于所述的实施例,并且本发明可以无需一些指定细节和所讨论实例而实施。
I.定义此部分为这个文档中使用的多个符号提供了定义。
RT代表目标比特率,它是用于编码帧序列所期望的比特率。通常,这个比特率以比特/秒为单位表述,并且是从所期望的最终的文件尺寸、序列中帧的数量、以及帧速率计算得出的。
Rp代表通路p的结束处所编码比特流的比特率。
Ep代表在通路p的结束处比特率中的错误百分比。在一些情况下,这个百分比计算为 ε代表最终比特率中的误差容许范围。
εC代表针对第一QP搜索阶段的比特率中的误差容许范围。
QP代表量化参数。
QPNom(p)代表为帧序列编码的通路p中所使用的标称量化参数。QPNom(p)的值由本发明的多通路编码器在第一QP调整阶段中调整以达到目标比特率。
MQPp(k)代表屏蔽帧QP,其是通路p中帧k的量化参数(QP)。一些实施例通过利用标称QP和帧级视觉掩蔽计算该值。
MQPMB(p)(k,m)代表屏蔽宏块QP,其是帧k和通路p的单个宏块(具有宏块索引m)的量化参数(QP)。一些实施例通过利用MQPp(k)和宏块级视觉掩蔽计算MQPMB(p)(k,m)。
φF(k)代表成为帧k掩蔽强度的值。掩蔽强度φF(k)是对该帧的复杂度度量,在一些实施例中,这个值被用于确定视觉编码人工因素/噪声将如何呈现以及用于计算帧k的MQPp(k)。
φR(p)代表通路p中的参考屏蔽强度。该参考屏蔽强度用于计算帧k的MQPp(k),并且其由本发明的多通路编码器在第二阶段中调整以达到目标比特率。
φMB(k,m)代表帧k中具有索引号为m的宏块的屏蔽强度。屏蔽强度φMB(k,m)为该宏块复杂度的度量,并且在一些实施例中,其被用于确定视觉编码人工因素/噪声将如何呈现以及用于计算MQPMB(p)(k,m)。AMQPp代表通路p中的帧之上的平均屏蔽QP。在一些实施例中,该值作为通路p中的所有帧之上的平均MQPp(k)计算。
II.概述本发明的一些实施例提供了实现以给定比特率编码帧序列的最佳视觉质量的编码方法。在一些实施例中,该方法使用为每一个宏块分配量化参数QP的视觉掩蔽过程。这种分配基于图像或视频帧中较亮或空间上较复杂区域中的编码人工因素/噪声不如较暗或平面区域中的编码人工因素/噪声明显的认识。
在一些实施例中,这种视觉掩蔽过程作为发明的多通路编码过程的部分执行。为了使最终编码比特流达到目标比特率,这种编码过程调整标称量化参数并通过参考屏蔽强度参数φR控制视觉掩蔽过程。如以下的进一步描述,调整标称量化参数和控制屏蔽算法调整每幅图片(即,通常是视频编码方案中的每个帧)和每幅图片内的每个宏块的QP值。
在一些实施例中,多通路编码过程全局调整整个序列的标称QP和φR。在其他实施例中,这个过程将视频序列划分为片段,利用标称QP和φR调整每个片段。下面的描述涉及其上应用了多通路编码处理的帧序列。普通技术人员将意识到在一些实施例中这个序列包括整个序列,而在其他实施例中其仅包括序列的一个片段。
在一些实施例中,本方法具有三个编码阶段。这三个阶段为(1)在通路0中执行的初始分析阶段,(2)在通路1到通路N1中执行的第一搜索阶段,以及(3)在通路N1+1到N1+N2中执行的第二搜索阶段。
在初始分析阶段中(即,在通路0期间),本方法识别用于标称QP(QPNom(1),将在编码的通路1中使用)的初始值。在初始分析阶段期间,该方法还识别参考屏蔽强度φR的值,它在第一搜索阶段中的所有通路中使用。
在第一搜索阶段中,本方法执行编码过程的N1迭代(即,N1通路)。在通路p中对每一个帧k,该过程通过使用特定量化参数MQPp(k)和帧k内的各个宏块m的特定量化参数MQPMB(p)(k,m)编码该帧,在此MQPMB(p)(k,m)是利用MQPp(k)计算的。
在第一搜索阶段中,量化参数MQPp(k)在通路之间变化,因为其是由在通路之间变化的标称量化参数QPNom(p)得到的。换言之,在第一搜索阶段期间每个通路p的结束时,该过程计算用于通路p+1的标称QPNom(p+1)。在一些实施例中,标称QPNom(p+1)是基于来自之前的通路的标称QP值和比特率错误。在其他的实施例中,标称QPNom(p+1)值在第二搜索阶段中的每个通路的结束时不同地计算。
在第二搜索阶段中,本方法执行编码过程的N2迭代(即,N2通路)。正如在第一搜索阶段中的那样,该过程通过使用特定量化参数MQPp(k)和帧k内的各个宏块m的特定量化参数MQPMB(p)(k,m)在每个通路p期间编码每个帧k,在此由MQPp(k)得到MQPMB (p)(k,m)。
同样,正如在第一搜索阶段中的那样,量化参数MQPp(k)在通路间变化。然而,在第二搜索阶段期间,这个参数改变是由于其是利用在通路之间变化的参考屏蔽强度φR(p)计算的。在一些实施例中,参考屏蔽强度φR(p)是基于来自之前通路的比特率中的错误和φR值计算的。在其他的实施例中,该参考屏蔽强度在第二搜索阶段中的每个通路的结束时计算为不同的值。
尽管是结合视觉掩蔽过程描述了多通路编码过程,本领域的普通技术人员将意识到的是编码器无需同时一起使用这些两种处理过程。例如,在一些实施例中,通过忽略φR并省略以上所述的第二搜索阶段,多通路编码过程被用于编码给定目标比特率附近的比特流而无需视觉掩蔽。
在本申请的第III和IV部分进一步描述了视觉掩蔽和多通路编码过程。
III.视觉掩蔽给定一个标称量化参数,视觉掩蔽处理首先利用参考屏蔽强度(φR)和该帧屏蔽强度(φF)计算每个帧的屏蔽帧量化参数(MQP)。该过程接着基于该帧和宏块级屏蔽强度(φF和φMB)计算每个宏块的屏蔽宏块量化参数(MQPMB)。当在多通路编码过程中应用视觉掩蔽处理时,一些实施例中的参考屏蔽强度(φR)如上所述以及以下进一步的描述在第一编码通路中被识别。
A.计算帧级屏蔽强度1.第一种方法为了计算帧级屏蔽强度φF(k),一些实施例使用以下公式(A)φF(k)=C*power(E*avgFrameLuma(k),β)*power(D*avgFrameSAD(k),αF),(A)其中●avgFrameLuma(k)为利用bxb区域计算的帧k中的平均像素强度,其中b为大于或等于1的整数(例如,b=1或b=4);●avgFrameSAD(k)为帧k内所有宏块的MbSAD(k,m)的平均值;●MbSAD(k,m)为由函数Calc4×4MeanRemovedSAD(4×4_block_pixel_value)给出的具有索引为m的宏块中所有4×4块的值的总和;●αF,C,D,和E为常数和/或根据本地统计而调整;以及●power(a,b)意为ab。
用于函数Calc4×4MeanRemovedSAD的伪码如下Calc4×4MeanRemovedSAD(4×4_block_pixel_values){calculate the mean of pixel values in the given 4×4 block;subtract the mean from pixel values and compute their absolute values;sum the absolute values obtained in the previous step;return the sum;}2.第二种方法其他的实施例以不同的方式计算帧级屏蔽强度。例如,上述的公式(A)基本如下所示计算帧屏蔽强度φF(k)=C*power(E*Brightness_Attribute,exponent0)*power(scalar*Spatial_Activity_Attribute,exponent1)
在公式(A)中,帧的Brightness_Attribute等于avgFrameLuma(k),而Spatial_Activity_Attribute等于avgFrameSAD(k),其是帧内的所有宏块的平均宏块SAD(MbSAD(k,m))值,在此平均宏块SAD等于宏块内所有4×4块的平均移除4×4像素变更(如由Calc4×4MeanRemovedSAD给出)的绝对值之和。该Spatial_Activity_Attribute度量了正被编码的帧之内的像素区域中的空间修正的数量。
其他的实施例将活动度量扩展到包含穿过许多连续帧的像素区域中的时间修正的数量。特别的,这些实施例如下所示计算帧屏蔽强度φF(k)=C*power(E*Brightness_Attribute,exponent0)*power(scalar*Activity_Attribute,exponent1) (B)在这个公式中,Activity_Attribute由以下公式(C)给出E*power(F*Temporal_Activity_Attribuc,exponent_delta)(C)在一些实施例中,Temporal_Activity_Attribute量化了能够忍受(即,屏蔽)由于帧之间的移动而引起失真的数量。在这些实施例的一些中,帧的Temporal_Activity_Attribute等于该帧内所定义的像素区域的移动补偿错误信号的绝对值之和的常数倍。在另外一些实施例中,Temporal_Activity_Attribute由以下公式(D)提供Temporal_Activity_Attribute=]]>Σj=-1-N(Wj·avgFranieSAD(j))+Σj=1M(Wj·avgFrameSAD(j))+W0·avgFranieSAD(0)---(D)]]>在公式(D)中,“avgFrameSAD”代表(如上所述)帧内的平均宏块SAD(MbSAD(k,m))值,avgFrameSAD(0)为当前帧的avgFrameSAD,并且负的j指向当前帧之前的时间实例,而正的j指向当前帧之后的时间实例。由此,avgFrameSAD(j=-2)表示当前帧之前的两个帧的平均帧SAD,avgFrameSAD(j=3)表示当前帧之后的三个帧的平均帧SAD。
同样,在公式(D)中,变量N和M分别指当前帧之前和之后的帧的数量。代替简单的基于特定数量的帧选择值N和M,一些实施例基于当前时间帧的时间的之前或之后特定时间周期计算值N和M。将移动屏蔽与空间持续时间相关联比将移动屏蔽与一组数量的帧相关联更具优势。这是因为将移动屏蔽与时间周期相关联直接符合观察者基于时间的视觉感觉。另一方面,将这样的屏蔽与帧的数量相关联由于不同的显示装置以不同帧速率呈现视频而要忍受可变的显示持续时间。
在公式(D)中,“W”代指权重因数,在一些实施例中,当帧j进一步离开当前帧时其会减少。同样,在这个公式中,第一求和表示能够在当前帧之前屏蔽的移动数量。第二求和表示能够在当前正之后屏蔽的移动数量,而最后的表达式(avgFrameSAD(0))表示当前帧的帧SAD。
在一些实施例中,权重因数被调整以说明场景变化。例如,一些实施例解决先行范围内(即,在M帧内)即将来临的场景变化,但在场景变化之后没有任何帧。例如,这些实施例可以设置场景变化之后的先行范围内的帧的权重因数为零。同样,一些实施例不解决向后看范围内(即,在N帧之内)先于或位于场景变化的帧。例如,这些实施例可以设置涉及前面场景或落到先前场景变化之前的向后看范围内的帧的权重因数为零。
3.第二方法的变异a)限制过去帧和将来帧对Temporal_Activity_Attribute的影响以上的公式(D)基本上从以下条件表述Temporal_Activity_AttributeTemporal_Activity_Attribute=Past_Frame_Activity+Future_Frame_Activity+Current_Frame_Activity,在此Past_Frame_Activity(PFA)等于 Future_Frame_Activity(FFA)等于 而Current_Frame_Activity(CFA)等于avgFrameSAD(current)。
一些实施例修改Temporal_Activity_Attribute的计算以便Past_Frame_Activity和Future_Frame_Activity均不会过度控制Temporal_Activity_Attribute的值。例如,一些实施例初始定义PFA等于 而FFA等于 这些实施例接着判断PFA是否大于标量时间FFA。如果是的话,这些实施例就将PFA设置为等于PFA上限值(例如,标量时间FFA)。除了设置PFA等于PFA上限值,一些实施例可以执行将FFA设置为零以及将CFA设置为零的组合设置。其他的实施例可以将PFA和CFA之一或二者设置为PFA、CFA、以及FFA的加权组合。
与之类似,在基于加权总和初始定义了PFA和FFA值之后,一些实施例还判断FFA值是否大于标量时间PFA。如果是的话,这些实施例就将FFA设置为等于FFA上限值(例如,标量时间PFA)。除了设置FFA等于FFA上限值,一些实施例可以执行将PFA设置为零以及将CFA设置为零的组合设置。其他的实施例可以将FFA和CFA之一或二者设置为FFA、CFA、以及PFA的加权组合。
PFA和FFA值的潜在后续调整(在基于加权总和对这些值进行初始估算之后)防止了这些值的任一个对Temporal_Activity_Attribute的过度控制。
b)限制Spatial_Activity_Attribute和Temporal_Activity_Attribute对Activity_Attribute的影响以上的公式(C)基本从以下条件表述Activity_AttributeActivity_Attribute=Spatial_Activity+Temporal_Activity,其中,Spatial_Activity等于scalar*(scalar*Spatial_Activity_Attribute)β,而Temporal_Activity等于scalar*(scalar*Temporal_Activity_Attribute)Δ。
一些实施例修改Activity_Attribute的计算以便Spatial_Activity和Temporal_Activity任一个都不会过度控制Activity_Attribute的值。例如,一些实施例初始定义Spatial_Activity(SA)等于scalar*(scalar*Spatial_Activity_Attribute)β,以及定义Temporal_Activity(TA)等于scalar*(scalar*Temporal_Activity_Attribute)Δ。
这些实施例接着判断SA是否大于标量时间TA。如果是的话,这些实施例就将SA设置为等于SA上限值(例如,标量时间TA)。除了设置SA等于SA上限的这种情况之外,一些实施例还可以将TA值设置为零或设置为TA和SA的加权组合。
与之类似,在基于指数方程初始定义SA和TA值之后,一些实施例还判断TA值是否大于标量时间SA。如果是的话,这些实施例就将TA设置为等于TA上限值(例如,标量时间SA)。除了设置TA等于TA上限的这种情况之外,一些实施例还可以将SA值设置为零或设置为SA和TA的加权组合。
SA和TA值的潜在后续调整(在基于指数方程对这些值进行初始计算之后)防止了这些值之一对Activity_Attribute的过度控制。
B.计算宏块级屏蔽强度1.第一种方法在一些实施例中,宏块级屏蔽强度φMB(k,m)如下计算φMB(k,m)=A*power(C*avgMbLuma(k,m),β)*power(B*MbSAD(k,m),αMB),(F)其中avgMbLuma(k,m)为帧k、宏块m内的平均像素强度;αMB、β、A、B、和C为常数和/或适合于本地统计。
2.第二种方法以上所述的公式(F)基本上如下计算宏块屏蔽强度φMB(k,m)=D*power(E*Mb_Brightness_Attribute,exponent0)*power(scalar*Mb_Spatial_Activity_Attribute,exponent1)在公式(F)中,宏块的Mb_Brightness_Attribute等于avgMbLuma(k,m),而Mb_Spatial_Activity_Attribute等于avgMbSAD(k)。该Mb_Spatial_Activity_Attribute度量了正被编码的宏块内的像素区域中的空间修正的数量。
正如在帧屏蔽强度的情况下一样,一些实施例可以扩展宏块屏蔽强度中的活动度量以包含穿过许多连续帧的像素区域中的时间修正的数量。特别的,这些实施例将如下所示计算宏块屏蔽强度φMB(k,m)=D*power(E*Mb_Brightness_Attribute,exponent0)*power(scalar*Mb_Activity_Attribute,exponent1),(G)其中Mb_Activity_Attribute由以下公式(H)给出Mb_Activity_Attribute=F*power(D*Mb_Spatial_Activity_Attribute,exponent_beta)+G*power(F*Mb_Temporal_Activity_Attribue,exponent_delta)(H)宏块的Mb_Temporal_Activity_Attribute的计算可以与以上所述帧的Mb_Temporal_Activity_Attribute的计算相类似。例如,在这些实施例的一些中,Mb_Temporal_Activity_Attribute由以下公式(I)提供Mb_Temporal_Activity_Attribute=]]>Σi=1N(Wi·MbSAD(i,m))+Σj=1M(Wj·MbSAD(j,m))+MbSAD(m)---(I)]]>公式(I)中的变量在第III部分中定义。在公式(F)中,帧I或j中的宏块m可以是如与当前帧中宏块m的相同位置中的宏块,或可以是初始预测为对应当前帧中的宏块m的帧i或j中的宏块。
由公式(I)提供的Mb_Temporal_Activity_Attribute可以以与公式(D)所提供的帧Temporal_Activity_Attribute的修改(在以上第III.A.3部分中所讨论的)相类似的方式进行修改。特别的,可以修改由公式(I)提供的Mb_Temporal_Activity_Attribute以限制过去和将来帧中的宏块的过度影响。
类似的,由公式(H)所提供的Mb_Activity_Attribute可以以与公式(C)所提供的帧Activity_Attribute的修改(在以上第III.A.3部分中所讨论的)相类似的方式进行修改。特别的,可以修改由公式(H)提供的Mb_Activity_Attribute以限制Mb_Spatial_Activity_Attribute和Mb_Temporal_Activity_Attribute的过度影响。
C.计算屏蔽的QP值基于屏蔽强度(φF和φMB)值和参考屏蔽强度(φR)值,视觉掩蔽处理可通过使用两个函数CalcMQP和CalcMQPforMB计算帧级和宏块级的屏蔽QP值。这两个函数的伪码如下CalcMQP(nominalQP,φR,φF(k),maxQPFrameAdjustment){QPFrameAdjustment=βF*(φF(k)-φR)/φR;clip QPFrameAdjustment to lie within[minQPFrameAdjustment,,maxQPFrameAdjustment];maskedQPofFrame=nominalQP+QPFrameAdjustment;clip maskedQPofFrame to lie in the admissible range;return maskedQPofFrame(for frame k);}CalcMQPforMB(maskedQPofFrame,φF(k),φMB(k,m),maxQPMacroblockAdjustment){if(φF(k)>T) where T is a suitably chosen thresholdQPMacroblockAdjustment=βMB*(φMB(k,m)-φF(k))/φF(k);elseQPMacroblockAdjustment=0;clip QPMacroblockAdjustment so that it lies within[minQPMacroblockAdjustment,maxQPMacroblockAdjustment];maskedQPofMacroblock=maskedQPofFrame+QPMacroblockAdjustment;clip maskedQPofMacroblock so that it lies within the valid QP valuerange;return maskedQPofMacroblock;}在以上函数中,βF和βMB可以是预先设定的常数或适合于本地统计。
IV.多通路编码图1展示了过程100,其概念性地举例说明了本发明一些实施例的多通路编码方法。正如该图所示,过程100有三个阶段,在以下三个部分中描述。
A.分析和初始QP选择如图1所示,过程100最初在多通路编码过程的初始分析阶段(即,在通路0期间)计算参考屏蔽强度(φR(1))的初始值和标称量化参数(QPNom(1))的初始值(步骤105)。初始参考强度(φR(1))在第一搜索阶段期间使用,而初始标称量化参数(QPNom(1))在第一搜索阶段的第一通路期间使用(即,多通路编码过程的通路1期间)。
在通路0之初,φR(0)可以是某些任意值或基于实验结果选择的值(例如,φR值的典型范围的中间值)。在序列的分析期间,针对每帧计算屏蔽强度φF(k),然后在通路0的结束设置参考屏蔽强度φR(1)等于avg(φF(k))。对参考屏蔽强度φR的其他判定也是可能的。例如,它可以计算作为值φF(k)的中间值或其他算术函数,例如值φF(k)的加权平均值。
存在使用变化的复杂度进行初始QP选择的几种方法。例如,初始标称QP可以选择为如任意值(例如26)。可选的,可以基于编码实验选择已知的值以针对目标比特率生成可接受的质量。
初始标称QP值也可以基于空间解决方案、帧速率、空间/时间复杂度、以及目标比特率从查询表中选择。在一些实施例中,该初始标称QP值使用依赖于这些参数中的每一个的距离度量从表中选择,或者它可以利用这些参数的加权距离度量选择。
该初始标称QP值还可以如它们在使用速率控制器快速编码期间(无屏蔽)所选择的那样设置为帧QP值的调整平均值,其中该平均值已经基于通路0的比特率百分比速率误差E0调整。类似的,初始标称QP也可以设置为帧QP值的加权调整平均值,其中每个帧的权重由没有编码为跳跃宏块的宏块在这个帧中的百分比确定。可选的,初始标称QP可以如它们在使用速率控制器快速编码期间(带屏蔽)所选择的那样设置为帧QP值的调整平均值或调整加权平均值,同时考虑了参考屏蔽强度从φR(0)改变到φR(1)的效应。
B.快速搜索阶段标称QP调整步骤105之后,多通路编码过程100进入第一搜索阶段。在第一搜索阶段,过程100执行序列的N1编码,其中N1代表通过第一搜索阶段的通路数。在第一阶段的每个通路期间,该过程使用具有恒定参考屏蔽强度的变动标称量化参数。
特别的,在第一级搜索阶段的每个通路p期间,过程100计算(步骤107)每个帧k的特定量化参数MQPp(k),以及计算帧k内的每个单独宏块m的特定量化参数MQPMB(p)(k,m)。给定标称量化参数QPNom(p)和参考屏蔽强度φR(p)的参数MQPp(k)和MQPMB(p)(k,m)的计算在第III部分中描述(其中MQPp(k)和MQPMB(p)(k,m)是通过利用函数CalcMQP和CalcMQPforMB计算的,这在以上的部分III中描述)。在通过步骤107的第一通路(即,通路1)中,标称量化参数和第一阶段参考屏蔽强度为参数QPNom(1)和参考屏蔽强度φR(1),它们在初步分析阶段105期间计算。
步骤107之后,该过程基于在步骤107计算的量化参数值编码该序列(步骤110)。接下来,编码过程100判断其是否应该结束(步骤115)。不同的实施例具有结束整个编码过程的不同条件。完全结束多通路编码过程的退出条件的例子包括●|Ep|<ε,其中ε为最终比特率中的误差容许范围。
●QPNom(p)为QP值有效范围的上边界和下边界。
●通路的数量超过了允许的最大通路数PMAX。
一些实施例可能使用所有的这些退出条件,而其他实施例可能仅使用它们中的一些。然而其他的实施例可能使用其他的用于结束编码过程的退出条件。
当多通路编码过程决定结束(步骤115),过程100省略第二搜索阶段并转移到步骤145。在步骤145,该过程保存来自最后的通路p的比特流作为最终结果,然后结束。
另一方面,当该过程确定(步骤115)不能结束,其接着确定(步骤120)是否应当结束第一搜索阶段。同样,不同的实施例具有结束第一搜索阶段的不同条件。结束多通路编码过程的第一搜索阶段的退出条件的例子包括●QPNom(p+1)与QPNom(q)相同,并且q≤p,(在此情况下,比特率中的误差不能再通过修改标称QP进一步降低)。
●|Ep|<εC,εC>ε,其中εC为第一搜索阶段的比特率中的误差允许范围。
●通路的数量已超过了P1,其中P1小于PMAX。
●通路的数量已超过了P2,其小于P1,并且|Ep|<ε2,ε2>εC。
一些实施例可能使用所有这些退出条件,而其实施例可能仅使用它们中的一些。然而其他的实施例可能使用其他的用于结束第一搜索阶段的退出条件。
当多通路编码过程决定(步骤120)结束第一搜索阶段时,过程100继续到第二搜索阶段,其在以下部分中描述。另一方面,当过程确定(步骤120)其不应结束第一搜索阶段时,它就在第一搜索阶段中更新(步骤125)下一通路的标称QP(即,定义QPNom(p+1))。在一些实施例中,标称QPNom(p+1)如下更新。在通路1的结束,这些实施例定义QPNom(p+1)=QPNom(p)+χEp,其中χ为常数。在从通路2到通路N1的每个通路的结束,这些
InterpExtrap(x,x1,x2,y1,y2){if(x2!=x1)y=y1+(x-x1)*(y2-y1)/(x2-x1);else y=y1;return y;}标称QP值通常四舍五入为整数值并限制在QP值的有效范围之内。本领域普通技术人员将认识到其他实施例可以以不同于以上所述的方法来计算标称QPNom(p+1)。
在步骤125之后,该过程转移回到步骤107以开始下一通路(即,p=p+1),并且对于这个通路,针对当前通路p计算每个帧k的特定量化参数MQPp(k),以及帧k内的每个单独的宏块m的特定量化参数MQPMB(p)(k,m)(步骤107)。接下来,该过程基于这些新近计算的量化参数编码帧序列(步骤110)。该过程接着由步骤110转移步骤115,其已在上面描述。
C.第二搜索阶段参考屏蔽强度调整当过程100确定其应当结束第一搜索阶段时(步骤120),它转移到步骤130。在第二搜索阶段,过程100执行序列的N2编码,在此N2代表通过第二搜索阶段的通路数。在每个通路期间,该过程使用相同的标称量化参数和变化的参考屏蔽强度。
在步骤130,过程100计算下一通路,即通路p+1,其为通路N1+1,的参考屏蔽强度φR(p+1)。在通路N1+1中,过程100在步骤135中编码帧序列。不同的实施例以不同的方式在通路p的结束计算参考屏蔽强度φR(p+1)(步骤130)。以下描述了两种可选的实现方法。
一些实施例基于来自先前的通路的比特率中的误差和φR的值计算参考屏蔽强度φR(p)。例如,在通路N1的结束,一些实施例定义φR(N1+1)=φR(N1)+φR(N1)×Konst×EN1.
在通路N1+m的结束处,此处m为大于1的整数,一些实施例定义φR(N1+m)=InterpExtrap(0,EN1+m-2,EN1+m-1,φR(N1+m-2),φR(N1+m-1))或者,一些实施例定义φR(N1+m)=InterpExtrap(0,EN1+m-q2,EN1+m-q1,φR(N1+m-q2),φR(N1+m-q1))其中q1和q2为之前给出最优误差的通路。
其他实施例通过利用AMQP在第二搜索阶段在每个通路的结束计算参考屏蔽强度,其在第I部分中定义。以下将参考函数GetAvgMaskedQP的伪码描述给定标称QP和φR的一些值用于计算AMQP的一种方式
GetAvgMaskedQP(nominalQP,φR){sum=0;for(k=0;k<numframes;k++){MQP(k)=maskedQP for frame k calculated usingCalcMQP(nominalQP,φR,φF(k),maxQPFrameAdjustment);//seeabovesum+=MQP(k);}return sum/numframes;}一些使用AMQP的实施例基于来自之前通路的比特率中的误差和AMQP的值计算通路p+1所期望的AMQP。对应于这个AMQP的φR(p+1)于是通过由函数Search(AMQP(p+1),φR(p))给出的搜索过程而找到,该函数的伪码在本部分的最后给出。
例如,一些实施例在通路N1的结束计算AMQPN1+1,其中AMQPN1+1=InterpExtrap(0,EN1-1,EN1,AMQPN1-1,AMQPN1),when N1>1,并且AMQPN1+1=AMQPN1,when N1=1,这些实施例于是定义φR(N1+1)=Search(AMQPN1+1,φR(N1))在通路N1+m(其中m为大于1的整数)的结束,一些实施例定义AMQPN1+m=InterpExtrap(0,EN1+m-2,EN1+m-1,AMQPN1+m-2,AMQPN1+m-1),以及φR(N1+m)=Search(AMQPN1+m,φR(N1+m-1))给定所期望的AMQP和φR的一些默认值,对应于所期望的AMQP的φR可以利用Search函数找到,该函数在一些实施例中具有以下伪码
Search(AMQP,φR){interpolateSuccess=True; //until set otherwiserefLumaSad0=refLumaSad1=refLumaSadx=φR;errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSadx)-AMQP;if(errorInAvgMaskedQp>0){ntimes=0;do{ntimes++;refLumaSad0=(refLumaSad0*1.1);errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSad0)-amqp;}while(errorInAvgMaskedQp>0&&ntimes<10);if(ntimes>=10)interpolateSuccess=False;}else{ //errorInAvgMaskedQp<0ntimes=0;do{ntimes++;refLumaSad1=(refLumaSad1*0.9);errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSad1)-amqp;}while(errorInAvgMaskedQp<0&&ntimes<10);if(ntimes>=10)interpolateSuccess=False;}ntimes=0;do{ntimes++;refLumaSadx=(refLumaSad0+refLumaSad1)/2;//simple successiveapproximationerrorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSadx)-AMQP;if(errorInAvgMaskedQp>0)refLumaSad1=refLumaSadx;else refLumaSad0=refLumaSadx;}while(ABS(errorInAvgMaskedQp)>0.05&&ntimes<12);if(ntimes>=12)interpolateSuccess=False;}if(interpolateSuccess)return refLumaSadx;else return φR;}在以上伪码中,数字10、12和0.05可以使用适当选择的阈值代替。
在通过编码帧序列计算了下一通路(通路p+1)的参考屏蔽强度之后,过程100就转移到步骤132并开始下一个通路(即,p=p+1)。在每个编码通路p期间,对于每个帧k和每个宏块m,该过程计算每个帧k的特定量化参数MQPp(k)以及帧k中的单独宏块m的特定量化参数MQPMB(p)(k,m)(步骤132)。给定标称量化参数QPNom (p)和参考屏蔽强度φR(p)的参数MQPp(k)和MQPMB(p)(k,m)的计算在第III部分中描述(其中MQPp(k)和MQPMB(p)(k,m)通过利用函数CalcMQP和CalcMQPforMB计算,这在以上第III部分中描述)。在通过步骤132的第一通路期间,参考屏蔽强度正是在步骤130处计算的数值。同样,在第二搜索阶段期间,标称QP在整个第二搜索阶段保持为常数。在一些实施例中,第二搜索阶段之内的标称QP为第一搜索阶段期间由最优编码解决方案(即,在具有最低比特率误差的编码解决方案中)所得到的标称QP。
在步骤132之后,该过程利用在步骤130处计算的量化参数编码帧序列(步骤135)。在步骤135之后,该过程确定(步骤140)是否应当结束第二搜索阶段。不同的实施例使用不同的条件用于在通路p的结束处结束第一搜索阶段。这种条件的例子为●|Ep|<ε,其中ε为最终比特率中的误差容许范围。
●通路的数量超过了所允许的最大通路数PMAX。
一些实施例可能使用所有的这些退出条件,而其他实施例可能仅使用它们中的一些。然而其他的实施例可能使用其他的用于结束第一搜索阶段的退出条件。
当过程100确定(步骤140)不应当结束第二搜索阶段时,其返回到步骤130以重新计算下一编码通路的参考屏蔽强度。该过程从步骤130转移到步骤132以计算量化参数,然后转移到步骤135以通过利用新近计算的量化参数编码视频序列。
另一方面,当该过程决定(步骤140)结束第二搜索阶段时,则其转移到步骤145。在步骤145,过程100保存来自最后一个通路p的比特流作为最终结果,然后就结束。
V.解码器输入缓冲区下溢控制本发明的一些实施例提供对目标比特率检查视频序列的各种编码的多通路编码过程,为了识别有关由解码器使用的输入缓冲区的使用的最优编码方案。在一些实施例中,这种多通路过程遵循图1的多通路编码过程100。
由于各种因素的变化,例如已编码图像的大小、解码器接收已编码数据所使用的速度、解码器缓冲区的大小、解码过程的速度等方面的变动,解码器输入缓冲区(“解码器缓冲区”)的使用在解码已编码图片序列(例如,帧)的过程中在一定程度上变动。
解码器缓冲区下溢在图像已经完全到达解码器端之前解码器准备解码下一图像的情况下颇为重要。一些实施例的多通路编码器模拟解码器缓冲区并重新编码序列中所选择的片段以防止解码器缓冲区下溢。
图2概念性举例说明了本发明一些实施例的编码系统200。该系统包括解码器205和编码器210。在该图中,编码器210具有多个使其能够模拟解码器205的类似组件的操作的组件。
特别的,解码器205具有输入缓冲区215、解码过程220、以及输出缓冲区225。解码器210通过维护模拟解码器输入缓冲区230、模拟解码过程235、以及模拟解码器输出缓冲区240来模拟这些模块。为了不妨碍本发明的描述,简化图2以将解码过程220和编码过程245显示为单个的块。同样,在一些实施例中,没有利用模拟解码过程235和模拟解码器输出缓冲区240用于缓冲区下溢管理,从而在本图中仅出于举例而示意。
解码器维护输入缓冲区215以消除输入的编码图像的速率和到达时间的变化。如果解码器用完了数据(下溢)或填满了输入缓冲区(上溢)的话,就会有例如图片解码中断或输入的数据被丢弃的可视的解码中断。这两种情况都是不期望的。
为了消除下溢条件,在一些实施例中编码器210首先编码图像序列并将它们存储到存储器255。例如,编码器210使用多通路编码过程100以获取图像序列的第一编码。然后它模拟解码器输入缓冲区215并且重新编码可能导致缓冲区下溢的图像。在所有缓冲区下溢条件都消除之后,通过连接255将重新编码的图像提供给解码器205,连接255可以是网络连接(因特网、电缆、PSTN线路等),非网络直接连接,媒体(DVD等)等。
图3举例说明了一些实施例的编码器的编码过程300。该过程试图找到不会导致解码器缓冲区下溢的最优编码方案。如图3所示,过程300识别(步骤302)满足所期望目标比特率(例如,序列中满足所期望平均目标比特率的每个图像的平均比特率)的图像序列的第一编码。例如,过程300可以使用(步骤302)多通路编码过程100以获取图像序列的第一编码。
在步骤302之后,编码过程300通过考虑各种因素,如连接速度(即,解码器用于接收编码数据的速度)、解码器输入缓冲区的大小、所编码图像的大小、解码处理速度等,的变化模拟解码器输入缓冲区215(步骤305)。在步骤310,过程300确定所编码图像的任何片段是否会导致解码器输入缓冲区下溢。编码器用于确定(并随后消除)下溢条件的技术在下面进一步描述。
如果过程300确定(步骤310)所编码图像没有造成下溢条件,该过程结束。另一方面,如果过程300确定(步骤310)在所编码图像的任何片段中存在缓冲区下溢条件的话,其就基于来自先前编码通路的这些参数的值改进编码参数(步骤315)。然后该过程重新编码(步骤320)具有下溢的片段以减小该片段的比特大小。在重新编码该片段之后,过程300检查(步骤325)该片段以确定是否消除了下溢条件。
当该过程确定(步骤325)该片段仍会导致下溢时,过程300就转移到步骤315以进一步改进编码参数以消除下溢。可选的,当该过程确定(步骤325)该片段不会导致任何下溢时,该过程就指定(步骤330)用于重新检查并重新编码该视频序列的起始点作为步骤320的上一次迭代中重新编码的片段的结束之后的帧。接下来,在步骤335,该过程重新编码在步骤330所指定的视频序列部分,直到(并排除)在步骤315和320指定的下溢片段随后的第一IDR帧。在步骤335之后,该过程转移回到步骤305以模拟解码器缓冲区以确定余下的视频序列在重新编码之后是否仍就会导致缓冲区下溢。以上描述了过程300从步骤305开始的流程。
A.确定已编码图像序列中的下溢片段如上所述,编码器模拟解码器缓冲区条件以确定已编码或重新编码的图像的序列中的任何片段是否会导致解码器缓冲区中的下溢。在一些实施例中,编码器使用考虑了编码图像的大小、诸如带宽的网络条件、解码器因素(例如,输入缓冲区大小,移除图像的初始和标称时间,解码处理时间,每个图像的显示时间等)的模拟模型。
在一些实施例中,使用MPEG-4AVC编码图片缓冲区(CPB)模型模拟解码器输入缓冲区条件。CPB是在MPEG-4 H.264标准中使用的术语,指理想基准解码器(HRD)的模拟输入缓冲区。HRD为指定编码过程可能产生的合格数据流的可变性方面的限制的理想解码器模型。CPB模型是众所周知的,并且出于方便在以下部分1中描述。CPB和HRD的更为详细的描述可以在ITU-T推荐草案和International Standard of Joint Video Specification最终草案(ITU-TRec.H.264/ISO/IEC 14496-10 AVC)中找到。
1.使用CPB模型模拟解码器缓冲区以下段落描述了在一些实施例中是如何使用CPB模型模拟解码器输入缓冲区的。图像n的第一个比特开始进入CPB的时间被称为初始到达时间tai(n),其推导如下●tai(0)=0,当图像为第一图像时(即,图像0);●tai(n)=Max(taf(n-1),tai,earliest(n)),当图像不是正编码或重新编码的序列中的第一图像时(即,n>0)。
在以上公式中●tai,earliest(n)=tr,n(n)-initial_cpb_removal_delay,其中tr,n(n)为如下面所指定的图像n从CPB中移除的标称移除时间,而initial_cpb_removal_delay为初始缓冲周期。
图像n的最终到达时间通过下式推导
taf(n)=tai(n)+b(n)/BitRate,其中b(n)为图像n以比特为单位的大小。
在一些实施例中,编码器如下所述进行自身标称移除时间的计算,而非如H.264规范中的那样从比特流的可选部分读取。对于图像0,图像从CPB移除的标称移除时间指定为tr,n(0)=initial_cpb_removal_delay对于图像n(n>0),图像从CPB移除的标称移除时间指定为tr,n(n)=tr,n(0)+sumi=0 to n-1(ti)其中tr,n(n)为图像n的标称移除时间,而ti为图片i的显示持续时间。
图像n的移除时间如下指定●tr(n)=tr,n(n),当tr,n(n)>=taf(n)时,●tr(n)=taf(n),当tr,n(n)<taf(n)时后一种情况指示图像n的大小b(n)非常大以至于它阻止了在标称移除时间时移除。
2.下溢片段的检测如在前面的部分中的描述,编码器能够模拟解码器输入缓冲区状态并在立即给定的时间瞬间获取缓冲区中的比特数量。可选的,编码器能够跟踪每个单独的图像是如何通过其标称移除时间与最终到达时间之间的差异(即,tb(n)=tr,n(n)-taf(n))来改变解码器输入缓冲区状态的。当tb(n)小于0时,缓冲区就会在时间瞬间tr,n(n)和taf(n)之间,并且可能会在tr,n(n)之前和taf(n)之后遭遇下溢。
通过测试tb(n)是否小于0能够容易地发现直接陷入下溢的图像。然而,tb(n)小于0的图像并非必然导致下溢,反之导致下溢的图像的tb(n)不一定小于0。一些实施例通过连续不停地耗尽解码器输入缓冲区直至下溢达到其最低点将下溢片段定义为导致下溢的连续图像(以解码顺序)的伸展。
图4为一些实施例中图像tb(n)与图像数量的标称移除时间与最终到达时间之间的差别的曲线图。该曲线针对1500个编码图像序列而绘制。图4a示意了以箭头标记其开始和结束的下溢片段。注意图4a中在第一下溢片段之后还发生了另外一个下溢片段,出于简化没有对其使用箭头明显标注。
图5举例说明了编码器用于执行步骤305处的下溢检测操作的过程500。过程500首先通过如上述的解释模拟解码器输入缓冲区条件确定(步骤505)每个图像的最终到达时间taf和标称移除时间tr,n。注意,由于该过程在缓冲区下溢管理的迭代过程中可能被称为若干时间,其接收图像号作为起始点并从该给定的起始点开始检查图像序列。显而易见的是,对于第一次迭代,该起始点为序列中的第一个图像。
在步骤510,过程500通过解码器将解码器输入缓冲区处的每个图像的最终到达时间与该图像的标称移除时间相比较。如果该过程确定在标称移除时间之后没有具有最终到达时间的图像(即,不存在下溢条件),该过程就退出。另一方面,当找到了其最终到达时间在标称移除时间之后的图像时,该过程就确定存在下溢并转移到步骤515以识别下溢片段。
在步骤515,过程500将下溢片段识别为解码器缓冲区开始连续耗尽直至下一全局最小值的图像的片段,在此下溢条件开始改进(即,tb(n)在图像伸展期间不会更多的负值)。过程500于是退出。在一些实施例中,下溢片段的开始被进一步调整为以I帧开始,其是标记一组相关内编码图像的开始的内编码图像。一旦识别出一个或多个导致下溢的片段,编码器就继续消除下溢。以下部分B描述了单个片段情况下(即,当编码整个图像序列仅包含单个下溢片段时)下溢的消除。然后部分C描述用于多个片段下溢的情况下的下溢消除。
B.单个片段下溢消除参考图4(a),如果tb(n)与n的曲线具有下降斜率仅穿过n轴一次的话,那么在整个序列中就仅有一个下溢片段。该下溢片段开始于先前零交叉点的最近的本地最大值处,结束于零交叉点与序列结束之间的下一个全局最小值点。如果缓冲区从下溢中恢复的话,片段的结束点能够跟随具有上升斜率的曲线的另一个零交叉点。
图6举例说明了在一些实施例中在图像的单个片段内解码器用于(步骤315、320和325)消除下溢条件的过程600。在步骤605,过程600通过计算进入到缓冲区中的输入比特率的产出和在片段的结束处找到的最长延迟(例如,最小值tb(n))估算下溢片段内要减少的比特总数(ΔB)。
接着,在步骤610,过程600使用平均屏蔽帧QP(AMQP)以及来自上一编码通路(或多个通路)的当前片段中的比特总数估算用于实现该片段所期望的比特数的期望的AMQP,BT=B-ΔBp,其中p为该片段的过程600的当前迭代次数。如果该迭代为该特定片段的过程600的首次迭代的话,AMQP和比特的总数就是在步骤302处所识别的由初始编码解决方案推导得到的该片段的AMQP和比特总数。另一方面,当该迭代不是过程600的首次迭代的话,这些参数就可以由编码解决方案或在过程600的最后一个通路或最后多个通路中获得的解决方案推导得到。
接下来,在步骤615,过程600基于屏蔽强度φF(n)使用所期望的AMQP修正平均屏蔽帧QP,MQP(n),以便能够忍受更多屏蔽的图像得到更多得比特扣除。该过程接着基于在步骤315定义的参数重新编码(步骤620)视频片段。该过程接着检查(步骤625)该片段以判断下溢条件是否被消除。图4(b)举例说明了在将过程600应用于下溢片段以对其重新编码之后图4(a)的下溢条件的消除情况。当消除了下溢条件时,该过程就退出。否则,过程转移回到步骤605以进一步调整编码参数以减少总比特大小。
C.多下溢片段的下溢消除当序列中有多个下溢片段时,片段的重新编码改变了所有确保帧的缓冲区充满度时间tb(n)。为了解决修改的缓冲区条件,编码器从具有下降斜率的第一个零交叉点(即,在最低点n处)开始,一次搜索一个下溢片段。
下溢片段开始于先于该零交叉点的最近的本地最大值处,并结束于零交叉点和下一零交叉点(或如果没有更多零交叉点的话在序列的结束点)之间的下一全局最小值处。在找到一个片段之后,编码器理想地移除这个片段内的下溢并通过在片段结束处设置tb(n)为0以及对所有序列帧重新进行缓冲区模拟估算更新的缓冲区充满度。
编码器接着利用修改后的缓冲区充满度继续搜索下一片段。一旦如上所述的识别了所有的下溢片段,编码器就导出AMQP并正如在单个片段的情况下的那样独立于其他片段修改每个片段的屏蔽帧QP。
普通技术人员会认识到可以以不同方式实现其他的实施例。例如,一些实施例不会识别多个导致解码器的输入缓冲区下溢的片段。一些实施例而是会如上所述执行缓冲区模拟以识别导致下溢的第一片段。在识别这样的片段之后,这些实施例就修改该片段以校正那个片段内的下溢条件,然后继续执行随后的校正部分的编码。在编码了序列的剩余部分之后,这些实施例将对下一下溢片段重复这个过程。
D.缓冲区下溢管理的应用以上所述的解码器缓冲区下溢技术应用于众多编码和解码系统。以下描述了此类系统的多个例子。
图7举例说明了将视频数据流服务器710与几台客户端解码器715-725相连接的网络705。客户端通过具有诸如300Kb/秒和3Mb/秒的不同带宽的链路连接到网络705。视频数据流服务器710控制从编码器730到客户端解码器715-725的编码视频图像流。
流视频服务器可以决定使用网络中的最低带宽(即,300Kb/秒)和最小客户端缓冲区大小流动编码视频图像。在此情况下,流服务器710仅需要为300Kb/秒的目标比特率优化的一组编码的图像。另一方面,服务器可以生成并存储针对不同带宽和不同客户端缓冲区条件优化的不同编码。
图8举例说明了解码器下溢管理的另一个应用实例。在这个例子中,HD-DVD播放器805从已经存储了来自视频编码器810的已编码视频数据的HD-DVD 840接收编码视频图像。HD-DVD播放器805具有输入缓冲区815、出于简化显示为一个部件820的一组解码模块、以及输出缓冲区825。
播放器805的输出被发送到诸如TV 830或计算机显示终端835的显示装置。HD-DVD播放器可以具有很高的带宽,例如29.4Mb/秒。为了在显示装置上维持高质量的图像,编码器确保视频图像以某种方式编码,其中图像序列中不会有太大以致不能按时传递到解码器输入缓冲区的片段。
VI.计算机系统图9展示了所实现的本发明的一个实施例的计算机系统。计算机系统900包括总线905、处理器910、系统存储器915、只读存储器920、永久存储装置925、输入装置930、和输出装置935。总线905集中表示所有的系统、外围设备、和畅通连接计算机系统900的众多内部设备的芯片集总线。例如,总线905将处理器910与只读存储器920、系统存储器915、和永久存储器装置925畅通连接。
为了执行本发明的各个过程,处理器910从这些各种各样的存储单元中检索要执行的指令和要处理的数据。只读存储器(ROM)920存储了处理器910和计算机系统的其他模块所需的静态数据和指令。
另一方面,永久存储器装置925为读-写存储器装置。该装置是即使是当计算机系统900关闭时也存储指令和数据的非易失存储器单元。本发明的一些实施例使用大容量存储装置(如磁盘或光盘及其对应的盘驱动器)作为永久存储装置925。
其他的实施例使用可移动存储装置(如软盘或压缩盘,及其对应的盘驱动器)作为永久存储装置。与永久存储装置925相类似,系统存储器915为读-写存储器装置。然而,与存储装置925不同的是,系统存储器为非永久性读-写存储器,如随机存取存储器。系统存储器存储了处理器在运行时间所需的一些指令和数据。在一些实施例中,本发明的各种处理过程保存在系统存储器915、永久存储装置925、和/或只读存储器920中。
总线905还连接到输入和输出装置930和935。输入装置使用户能够与计算机系统沟通信息并选择到计算机系统的命令。输入装置930包括字母数字键盘和光标控制器。输出装置935显示由计算机系统生成的图像。输出装置包括打印机和显示设备,如阴极射线管(CRT)或液晶显示器(LCD)。
最后,如图9所示,总线905还通过网络适配器(未示出)将计算机900与网络965相连。在这种方式下,计算机可以是计算机网络(如局域网(“LAN”),广域网(“WAN”),或内部网)的一部分或网络(诸如因特网)的网络的一部分。计算机系统900的任何或所有组件都可以结合本发明使用。然而,本领域普通技术人员将理解的是,也可以结合本发明使用任何其他系统配置。
尽管已经参考各种特定细节描述了本发明,本领域普通技术人员将认识到的是,可以不偏离本发明的精神而以其他指定的方式实施本发明。例如,不是使用模拟解码器输入缓冲区的H264方法,也可以使用考虑到缓冲区大小、缓冲区中图像的到达和移除时间、以及图像的解码和显示次数的其他模拟方法。
以上所述的多个实施例计算了平均移除SAD以获得宏块中图像变化的指示。然而,其他实施例可以以不同的方式识别图像变化。例如,一些实施例可以预测宏块的像素的期望图像值。这些实施例接着通过从宏块的像素的亮度值中扣除该预测值,并加上该扣除部分的绝对值生成宏块SAD。在一些实施例中,该预测值不仅基于宏块内的像素值,而且基于一个或多个相邻宏块内的像素值。
同样,以上所述的实施例直接使用推导得出的空间和时间屏蔽值。其他的实施例为了挑出视频图像之中连续空间屏蔽值和/或连续时间屏蔽值的总体趋势而在使用它们之前对这些值应用平滑过滤。由此,本领域内普通技术人员将理解的是,本发明并不局限于前面所举例的细节。
权利要求
1.一种编码多个图像的方法,所述方法包括a)为编码所述图像定义标称量化参数;b)基于所述标称量化参数,为至少一个图像推导至少一个特定于图像的量化参数;c)基于所述特定于图像的量化参数,编码所述图像;以及d)迭代地重复所述定义、推导和编码操作以优化所述编码。
2.根据权利要求1的方法,还包括a)基于所述标称量化参数,推导多个图像的多个特定于图像的量化参数;b)基于所述特定于图像的量化参数,编码所述图像;以及c)重复所述定义、推导和编码操作以优化所述编码。
3.根据权利要求1的方法,还包括当编码操作满足一组终结准则时停止所述迭代。
4.根据权利要求3的方法,其中所述终结准则组包括所述图像的可接受编码的识别。
5.根据权利要求4的方法,其中所述图像的可接受编码为特定目标比特率范围内的图像的编码。
6.一种编码多个图像的方法,所述方法包括a)识别多个图像属性,每个特定的图像属性量化特定图像的至少特定部分的复杂度;b)识别量化所述多个图像的复杂度的参考属性;b)基于所述识别的图像属性、参考属性和所述标称量化参数,识别用于编码所述多个图像的量化参数;c)基于所述识别的量化参数,编码所述多个图像;以及d)迭代地执行所述识别和编码操作以优化所述编码,其中多次不同的迭代使用多个不同的参考属性。
7.根据权利要求6的方法,其中多个所述属性为每个图像的至少一部分的视觉掩蔽强度,所述视觉掩蔽强度用于估算在已经根据所述方法编码并随后解码所述视频序列之后,不会被所述视频序列的观察者所察觉的编码人工因素的数量。
8.根据权利要求6的方法,其中多个所述属性为每个图像的至少一部分的视觉掩蔽强度,其中用于图像的一部分的视觉掩蔽强度量化所述部分的图像的复杂度,其中在量化图像的一部分的复杂度的过程中,所述视觉掩蔽强度提供所述数量的压缩人工因素的指示,其中所述人工因素可在所述图像解码之后,在所述编码图像中无需可见失真而根据编码生成。
9.一种存储用于编码多个图像的计算机程序的计算机可读媒体,所述计算机程序包括指令组,用于a)为编码所述图像定义标称量化参数;b)基于所述标称量化参数,为至少一个图像推导至少一个特定于图像的量化参数;c)基于所述特定于图像的量化参数,编码所述图像;以及d)迭代地重复所述定义、推导和编码操作以优化所述编码。
10.根据权利要求18的计算机可读媒体,其中所述计算机程序还包括指令组,用于a)基于所述标称量化参数,推导多个图像的多个特定于图像的量化参数;b)基于所述特定于图像的量化参数,编码所述图像;以及c)重复所述定义、推导和编码操作以优化所述编码。
11.根据权利要求9的计算机可读媒体,还包括用于当编码操作满足一组终结准则时停止所述迭代的一组指令。
12.根据权利要求11的计算机可读媒体,其中所述终结准则组包括所述图像的可接受编码的识别。
13.根据权利要求12的计算机可读媒体,其中所述图像的可接受编码为特定的目标比特率范围内的图像的编码。
14.一种编码视频图像序列的方法,所述方法包括a)接收所述视频图像序列;b)迭代地检查所述视频图像序列的不同编码方案,以识别优化图像质量同时满足目标比特率且满足一组限制的编码方案,所述限制组考虑通过用于解码所述编码视频序列的假想参考编码器的输入缓冲区的编码数据流。
15.根据权利要求14的方法,其中所述迭代地检查包括当在处理所述视频序列内的任意一组图像的编码方案时,为每个编码方案确定所述假想参考编码器是否下溢。
16.根据权利要求14的方法,其中不同编码的所述迭代检查包括a)模拟假想参考编码器的输入缓冲区条件;b)利用所述模拟选择比特数以优化图像质量,同时最大化所述假想参考编码器上的输入缓冲区的使用;c)重新编码所述编码视频图像以实现所述优化的缓冲区使用;以及d)迭代地执行所述模拟、利用和重新编码,直至识别出最优的编码方案。
17.根据权利要求16的方法,其中模拟所述假想参考编码器输入缓冲区条件还包括考虑所述假想参考编码器接收编码数据的速率。
18.根据权利要求16的方法,其中模拟所述假想参考编码器输入缓冲区条件还包括考虑所述假想参考编码器输入缓冲区的大小。
19.根据权利要求16的方法,其中模拟所述假想参考编码器输入缓冲区条件还包括考虑来自所述假想参考编码器的输入缓冲区的初始移除延迟。
20.根据权利要求14的方法,还包括a)在所述迭代检查之前,识别不基于与所述缓冲区流有关的所述限制组的初始编码方案;以及b)利用所述初始编码方案,开始所述迭代检查中的第一检查。
21.一种存储计算机程序的计算机可读媒体,所述计算机程序用于在具有带输入缓冲区的假想参考编码器的系统中编码视频图像序列,所述计算机程序包括指令组,用于a)接收所述视频图像序列;b)迭代地检查所述视频图像序列的不同编码方案,以识别优化图像质量同时满足目标比特率且满足一组限制的编码方案,所述限制组考虑通过用于解码所述编码视频序列的假想参考编码器的输入缓冲区的编码数据流。
22.根据权利要求21的计算机可读媒体,其中用于所述重复检查的所述指令组包括当在处理所述视频序列内的任意一组图像的编码方案时,为每个编码方案确定所述假想参考编码器是否下溢的一组指令。
23.根据权利要求21的计算机可读媒体,其中用于不同编码的所述迭代检查的所述指令组包括一组指令,用于a)模拟假想参考编码器的输入缓冲区条件;b)利用所述模拟选择比特数以优化图像质量,同时最大化所述假想参考编码器上的输入缓冲区的使用;c)重新编码所述编码视频图像,以实现所述优化的缓冲区使用;以及d)迭代地执行所述模拟、利用和重新编码,直至识别出最优的编码方案。
24.根据权利要求23的计算机可读媒体,其中用于模拟所述假想参考编码器输入缓冲区条件的所述指令组还包括用于考虑所述假想参考编码器接收编码数据的速率的一组指令。
25.根据权利要求23的计算机可读媒体,其中用于模拟所述假想参考编码器输入缓冲区条件的所述指令组还包括用于考虑所述假想参考编码器输入缓冲区大小的一组指令。
26.根据权利要求23的计算机可读媒体,其中用于模拟所述假想参考编码器输入缓冲区条件的所述一组指令还包括用于考虑来自所述假想参考编码器的输入缓冲区中的初始移除延迟的一组指令。
27.根据权利要求21的计算机可读媒体,其中所述计算机程序还包括指令组,用于a)在所述迭代检查之前,识别不基于与所述缓冲区流有关的所述限制组的初始编码方案;以及b)利用所述初始编码方案,开始所述迭代检查中的第一检查。
28.一种编码视频的方法,所述方法包括a)识别所述视频序列中的第一图像的第一部分的第一视觉掩蔽强度,其中所述视觉掩蔽强度量化由于所述第一部分的复杂度导致的对观察者不可感知的编码人工因素的程度;以及b)基于所述识别的第一视觉掩蔽强度,编码所述第一图像的至少一部分。
29.根据权利要求28的方法,其中所述视觉掩蔽强度指定所述第一部分的空间复杂度。
30.根据权利要求29的方法,其中所述空间复杂度被计算作为所述图像的一部分的像素值的函数。
31.根据权利要求30的方法,其中所述第一部分具有多个像素和用于每个像素的图像值,其中识别所述第一部分的所述视觉掩蔽包括a)估算所述第一部分的像素的图像值;b)从所述第一部分的像素的图像值中扣除所述统计属性;c)基于所述扣除的结果,计算所述视觉掩蔽强度。
32.根据权利要求31的方法,其中所述估算的图像值为所述第一部分的像素的图像值的统计属性。
33.根据权利要求32的方法,其中所述统计属性为平均值。
34.根据权利要求31的方法,其中所述估算图像值部分地基于所述第一部分的像素的相邻像素。
35.根据权利要求28的方法,其中所述视觉掩蔽强度指定所述第一部分的时间复杂度。
36.根据权利要求35的方法,其中所述时间复杂度被计算作为所述第一图像的第一部分内定义的像素区域的移动补偿误差信号的函数。
37.根据权利要求35的方法,其中所述时间复杂度被计算作为所述第一图像的第一部分内定义的像素区域的移动补偿误差信号以及一组其他图像的一组第二部分内定义的像素的移动补偿误差信号的函数。
38.根据权利要求37的方法,其中所述其他图像组仅包括一个图像。
39.根据权利要求37的方法,其中所述其他图像组包括多于一个的其他图像。
40.根据权利要求39的方法,其中所述移动补偿误差信号是混合移动补偿误差信号,其中所述方法还包括a)为每个其他图像定义权重因数,其中第二图像的权重因数大于第三图像的权重因数,其中所述第二图像在所述视频序列中比所述第三图像更为靠近所述第一图像;b)计算所述第一图像和所述其他图像组中的每个图像的各个移动补偿误差信号;c)利用所述权重因数,根据所述各个移动补偿误差信号生成所述混合移动补偿误差信号。
41.根据权利要求40的方法,其中选择不是具有所述第一图像的场景的一部分的所述其他图像组中的图像子集的权重因数,以消除所述图像子集。
42.根据权利要求37的方法,其中所述其他图像组仅包括作为具有所述第一图像的场景的一部分的图像,并且不包括与另一个场景有关的任何图像。
43.根据权利要求37的方法,其中从发生在所述第一图像之前的一组过去的图像和发生在所述第一图像之后的一组将来的图像中选择所述第二图像。
44.根据权利要求28的方法,其中所述视觉掩蔽强度包括空间复杂度组件和时间复杂度组件,所述方法还包括将所述空间复杂度组件和所述时间复杂度组件相互比较,并基于某一准则修改它们,以维持所述空间复杂度组件的作用和所述时间复杂度组件的作用在具有彼此可接受范围的所述屏蔽强度。
45.根据权利要求44的方法,其中调整所述时间复杂度组件,以解决特定帧的先行范围内即将到来的场景变化。
46.根据权利要求28的方法,其中所述视觉掩蔽强度指定所述第一部分的亮度属性。
47.根据权利要求46的方法,其中所述亮度属性被计算作为所述第一部分的平均像素强度。
48.根据权利要求28的方法,其中所述第一部分是整个所述第一图像。
49.根据权利要求28的方法,其中所述第一部分小于整个所述第一图像。
50.根据权利要求49的方法,其中所述第一部分为所述第一图像内的宏块。
51.一种存储用于编码视频的计算机程序的计算机可读媒体,所述计算机程序包括指令组,用于a)识别量化所述视频序列中的第一图像的第一部分的复杂度的第一视觉掩蔽强度;以及b)基于所述识别的第一视觉掩蔽强度,编码所述第一图像的至少一部分。
52.根据权利要求51的计算机可读媒体,其中所述视觉掩蔽强度量化由于所述第一部分的空间复杂度导致的编码人工因素对观察者不可感知的程度。
53.根据权利要求51的计算机可读媒体,其中所述视觉掩蔽强度量化由于所述视频中的移动导致的编码人工因素对观察者不可感知的程度,其中所述移动由所述第一图像和所述第一图像之前和之后的一组图像捕捉。
54.根据权利要求51的计算机可读媒体,其中屏蔽强度包括空间复杂度和时间复杂度,所述方法还包括将所述空间复杂度和所述时间复杂度相互比较,并基于一组准则修改它们,以维持所述空间复杂度组件的作用和所述时间复杂度组件的作用在具有彼此可接受范围的所述屏蔽强度。
55.根据权利要求54的计算机可读媒体,其中屏蔽强度包括空间复杂度和时间复杂度,所述计算机程序还包括用于通过消除一组图像内的所述空间复杂度和所述时间复杂度的时间趋势而改变所述空间复杂度和时间复杂度的一组指令。
56.根据权利要求54的计算机可读媒体,其中调整所述时间复杂度组件,以解决特定帧的先行范围内即将到来的场景变化。
57.根据权利要求51的计算机可读媒体,其中所述屏蔽强度属性指定所述第一部分的亮度属性。
全文摘要
本发明的一些实施例提供了一种编码多个图像(例如,视频序列的几帧)的多通路编码方法。该方法重复执行编码这些图像的编码操作。该编码操作基于标称量化参数,该方法使用该标称量化参数计算该图像的量化参数。在该编码操作的几次不同的迭代操作期间,该方法使用了几种不同的标称量化参数。该方法在达到了终结准则(例如,其识别到一个可接受的图像编码)时停止其迭代过程。
文档编号H04N7/12GK1926863SQ200580006363
公开日2007年3月7日 申请日期2005年6月24日 优先权日2004年6月27日
发明者童歆, 吴锡荣, 托马斯·彭, 安德里亚那·杜米特拉, 巴林·哈斯凯尔, 吉姆·诺米勒 申请人:苹果电脑有限公司