帧层速率控制的视讯编码方法和系统
技术领域
本发明是有关于视讯编码器的帧层速率控制,尤其是有关于具有帧层速率控制的视讯编码方法和系统。
背景技术
视讯通讯随着计算机和通讯技术的发达而广泛应用,因而产生了各种视讯编码标准。有些视讯编码标准如MPEG-1,MPEG-2和MPEG-4,是设计成非对话式应用,使用于储存媒体、串流和广播。此外,如H.261和H.263,是设计成对话式应用,使用于视讯电话和会议。视讯编码标准基本上包含的动作有离散余弦转换(DCT)、移动估算(ME)或移动补偿(MC)、量化(quantization)以及可变长度编码(VLC)。用在一帧(Frame)或一宏区块(MB)之中的量化步阶值(quantizer step-size)决定了视讯的品质,必须视情况使用适当的速率控制算法以决定在特定应用和编码环境下最恰当的量化步阶值。因此,速率控制成为一重要课题。
速率控制算法一般分为两大类,单程(single-pass)和多程(multi-pass),根据视讯序列需要几回的编码而定。当一视讯序列只需编码一次,或应用于实时编码场合,不易取得未来的帧及不容许延迟的情况下,使用单程速率控制算法。单程算法的范例在下列文件中有详细参考:
[1]MPEG-2 Test Model Test Model 5(TM5)Doc.,Test Model EditingCommittee,ISO/IEC JTC1/SC29/WG11/93-255b,Apr.1993;
[2]C.Crecos and J.Jiang,“On-line improvement of therate-distortion performance in MPEG-2 rate control,”IEEE Trans.Circuits Syst.Video Technol.,pp.519-528,June 2003;
[3]T.Chiang and Y.-Q.Zhang,“A new rate control scheme using anew rate-distortion model,”IEEE Trans.Circuits Syst.Video Technol.,pp.246-250,Feb.1997;
[4]F.Pan,Z.Li,K.Lim,and G.Feng,“A study of MPEG-4 rate controlscheme and its improvements,”IEEE Trans.Circuits Syst.Video Technol.,pp.440-446,May 2003;
[5]J.Ribas-Corbera and S.Lei,“Rate control in DCT video codingfor low-delay communications,”IEEE Trans.Circuits Syst.Video Technol.,pp.172-185,Feb.1999;
[6]Z.He,Y.K.Kim,and S.K.Mitra,“Low-delay rate control forDCT video coding via rho-domain source modeling,”IEEE Trans.CircuitsSyst.Video Technol.,pp.928-940,Aug.2001.
多程速率控制算法,在视讯序列已经存在的前提下,或是没有实时编码压力、可离线作业的情况下,可测得最佳化的量化步阶值。多程速率控制算法的文献包含下列文件:
[7]A.Ortega,K.Ramchandran,and M.Vetterli,“Optimaltrellis-based buffered compression and fast approximation,”IEEE Trans.Image Processing,pp.26-40,Jan.1994;
[8]K.Ramchandran,A.Ortega,and M.Vetterli,“Bit allocation fordependent quantization with applications to multi-resolution and MPEGvideo coders,”IEEE Trans.Image Processing,pp.533-545,Sept.1994;
[9]L.J.Lin and A.Ortega,“Bit-rate control using piecewiseapproximated rate-distortion characteristics,”IEEE Trans.CircuitsSyst.Video Technol.,pp.446-459,Aug.1998;
[10]W.Ding and E.Liu,“Rate control of MPEG video coding andrecording by rate-quantization modeling,”IEEE Trans.Circuits Syst.Video Technol.,pp.12-20,Feb.1996.
速率控制算法也可以依照量化步阶值的决定方式分为三大类,包含直接缓冲状态回授法(direct buffer-state feedback method)、模型分析法(model-based analytical method)以及操作性速率-失真模型化方法(operational rate-distortion modeling method)。直接缓冲状态回授法根据缓冲器满溢与活动程度决定量化步阶值。模型分析法利用数个速率和失真模型以控制速率,例如将速率模型化成量化步阶值的二次方程式。一般来说,直接缓冲状态回授法和模型分析法属于单程速率控制算法。而操作性速率-失真模型化方法则使用动态设定和Lagrange最佳化法以决定一组画面(GOP)中帧的量化步阶值。因耗用大量运算复杂度,大部份操作性速率-失真模型化方法不能应用于实时速率控制。曾有人提出以模型为基础的操作性速率-失真模型化方法以降低复杂度,其中模型是以准确度为代价,从一限定数量的控制点中预测输入视讯序列的速率-失真特征。然而这些方法,在实时编码的应用中仍然造成计算上的负担,以致于某种程度上仍然会造成延迟。
H.264是一种视讯标准,应用于对话式及非对话式通讯,其引进许多新编码技术,例如帧内预测(intra prediction),不同的区块形状和多个参考帧之间的帧间预测(inter prediction),再加上速率失真最佳化的移动估算以及模式判断(rate-distortion optimized motion estimation and modedecision),以下简称为RDO。由于这些新引进的技术,使H.264相较其它编码标准,具有可观的优势。
针对H.264,出现了许多单程速率控制算法。相关文献包含:
[11]S.Ma,W.Gao,P.Gao,and Y.Lu in“rate control for advancevideo coding(AVC)standard,”in Proc.Int.Conference,Circuits Syst.,pp.25-28,May 2003。
基于MPEG-2 TM5速率控制算法,S.Ma提供了一宏区块层(macroblock layer)速率控制。假定已提供一帧的目标位速率,利用前一宏区块的一量化参数(QP)来为目前宏区块执行RDO运算,使前一量化参数可做为目前宏区块的预估量化参数。进行RDO运算之后,应用于目前宏区块的新量化参数可根据缓冲器满溢程度和宏区块活动而决定。如果前一量化参数和新量化参数的差异小于一阀值,则根据原来预估的量化参数,将目前宏区块的余值信号量化;否则,利用新量化参数再次为目前宏区块执行RDO运算,并根据新的量化参数将余值信号量化。
下列文献为一基于二次方程式速率模型,应用于H.264编码器的单程帧层速率控制算法:
[12]Z.G.Li,F.Pan,K.P.Lim,G.N.Feng,X.Lin,S.Rahardja,and D.J.Wu in“Adaptive frame layer rate contrl for H.264,”in Proc.Int.Conference,Multimedia Expo,pp.581-584,June 2003.
因RDO运算和速率控制的交互依赖关系,在执行RDO运算之前无法取得余值信号。曾有人提出一线性模型,用以预测目前帧和前一帧的余值信号的平均绝对差(mean absolute difference,MAD)。然而该线性模块无法准确估算目前帧的平均绝对差,尤其是当帧之间的移动变化量极大的时候。
许多为H.264设计的速率控制算法都不能解决RDO运算和速率控制之间交互依赖关系所造成的瓶颈,因此在求出宏区块或帧的新量化参数之前,余值信号是无解的。此外还有一个问题,H.264的速率控制中,忽视了文件头位数(header bits)的重要性。H.264和其它视讯编码标准不同的是,利用帧内预测并且以各种区块大小的多个参考帧来进行移动估算和模式选择。因为这类信息需要和视讯内容一起被编码,所以文件头位数会占去整体位数的一大部份,且随着帧和宏区块而异。因此,准确的文件头位数信息对于H.264速率控制算法是有必要的,因为它没办法透过缓冲器容量的程度和速率模型来估计。
发明内容
本发明的目的在于提供一种帧层速率控制方法与单程帧层速率控制的视讯编码方法和系统。
本发明的帧层速率控制方法,包含下列步骤:指派一目标位数给一目前帧;用一先前帧的一量化参数将目前帧的宏区块编码,以获得一余值信号及目前帧的一预估文件头位数;然后根据目前帧的余值信号计算目前帧的复杂度;最后根据目标位数、预估文件头位数、以及目前帧的复杂度计算目前帧的新量化参数。其中上述将目前帧的宏区块编码的步骤,可以是包含:以先前帧的量化参数对目前帧的宏区块进行速率失真最佳化的移动估算与模式判断,由此为目前帧中每一宏区块产生一宏区块模式和移动向量,并且根据目前帧中的宏区块模式和移动向量估算目前帧的文件头位数。在编码步骤之后,可以对目前帧中内编码过的宏区块再次进行内编码模式判断。
假设目前帧的每一宏区块包含十六个4x4亮度样本区块以及八个4x4色度样本区块,则计算目前帧的复杂度的步骤可以包含:根据目前帧的余值信号,计算目前帧中宏区块所属的二十四个4x4区块各自的绝对差值的总和,并以下列公式计算目前帧中每一宏区块的复杂度CMB:
CMB=max{SAD0,..,SAD3}+max{SAD4,..,SAD7}+...+max{SAD20,..,SAD23}
其中SADi表示第i个4x4区块的绝对差值的总和,接着以下列公式计算目前帧的复杂度CFrm:
其中NMB是目前帧中宏区块的数目,Ci,MB代表目前帧中第i个宏区块的复杂度。目前帧的新量化参数可以是由下列二次方程式求出:
其中,R(Qs)定义为目标位数减去预估文件头位数;X1和X2是模型参数;而Qs是一待解的量化步阶值。如果在编码之后对目前帧中的一宏区块再次进行内编码模式判断,则重新计算该宏区块的复杂度,从而更新目前帧的复杂度。更进一步地,可以对目前帧的余值信号进行离散余弦转换并且以新量化参数进行量化,以及根据下列式子更新上述二次方程式的模型参数:
以及
其中w为先前帧的数目,而Ri、Ci和QSi分别代表第i个先前帧的速率、复杂度和量化步阶值。其中目前帧的新量化参数QPRO可以由下式修正:
if QPRO>QPG+Δ,QPRO=QPG+Δ
else if QPRO<QPG-Δ,QPRO=QPG-Δ
其中QPG代表先前帧的量化参数,而Δ代表一预设临界值。目前帧的新量化参数可以更进一步限定在一预设范围。本发明另提供一视讯编码系统,用以执行上述步骤。
本发明可视情况使用适当的速率控制算法以决定在特定应用和编码环境下最恰当的量化步阶值,从而提高视讯的品质。
附图说明
图1为一视讯编码器包含一使用H.264以外视讯标准的单程速率控制器;
图2为速率控制和速率-失真最佳化之移动估算与模式判断之间的交互依赖关系;
图3a和图3b为两个QCIF格式的范例序列(“news”和“grandma”)运用三个参考帧的P帧的MAD(平均绝对差);
图4a和图4b为图3a和图3b的范例序列以三个参考帧做为帧间预测时的P帧文件头位数;
图5a和图5b为两个QCIF格式范例序列(“carphone”和“hall”)运用单一参考帧编码的文件头位数百分比;
图6a和图6b为两个QCIF格式范例序列(“table tennis”和“suzie”)运用五个参考帧编码的文件头位数百分比;
图7a和图7b为两个QCIF格式范例序列(“table tennis”和“mother &daughter”)以单一参考帧使用不同QPRO但相同QPG的情况下的速率失真曲线;
图8a和图8b为两个QCIF格式范例序列(“salesman”和“mobile”)以五个参考帧使用不同QPRO但相同QPG的情况下的速率失真曲线;
图9为H.264编码器所用的一单程帧层速率控制算法与两步编码法的实施例;
图10为宏区块的结构与编号顺序;
图11a~图11d为QCIF格式序列(“suzie”、“carphone”、“salesman”以及“table tennis”)的C/Qs和速率的二次关系;
图12a~图12d图为QCIF格式序列(“waterfall”、“news”、“mother& daughter”以及“foreman”)的C/Qs和速率的二次关系;以及
图13为一单程帧层速率控制算法与两步编码法的实施例。
12 视讯编码单元; 14 速率控制器;
121 移动估算单元; 122 余值信号储存单元;
123 离散余弦转换/量化单元;
124 熵编码单元;
125 离散余弦反转换/逆量化单元;
126 重建帧储存单元; 14 速率控制器;
141 文件头位数估算单元;142 复杂度量测单元;
143 位指派单元;
144 速率-失真模型化单元;
145 量化参数决策单元;
202 速率控制;
204 速率-失真最佳化的移动估算与模式判断;
92 第一步编码装置;
94 速率控制装置;
96 第二步编码装置;
921 速率-失真最佳化的移动估算与模式判断单元;
922 余值信号储存单元;
923 离散余弦转换/量化单元;
924 离散余弦反转换/逆量化单元;
925 第一重建帧储存器;
941 位指派单元;
942 速率-失真模型化单元;
943 量化参数判断单元;
944 文件头位数估算单元;
945 复杂度量测单元;
961 选择性内编码模式判断单元;
962 离散余弦转/换量化单元;
963 熵编码单元;
964 离散余弦反转换/逆量化单元;
965 第二重建帧储存器;
1002亮度信号;
1004色差信号Cb;
1006 色差信号Cr。
具体实施方式
图1为一视讯编码器,具有一使用非H.264的视讯标准的单程速率控制器1,其包含一视讯编码单元12和一速率控制器14。视讯编码单元12包含一移动估算单元121、一余值信号储存单元122、一离散余弦转换/量化单元123、一熵编码单元124、一离散余弦反转换/逆量化单元125以及一重建帧储存单元126。速率控制器14与视讯编码器12交互作用以更新宏区块且/或帧的量化参数,并包含一文件头位数估算单元141、一复杂度量测单元142、一位指派单元143、一速率-失真模型化单元144以及一量化参数决策单元145。文件头位数估算单元141在移动估算之后,估计宏区块或帧的文件头位数,而复杂度量测单元142量测一余值信号的复杂度。文件头位数和余值信号复杂度都是位指派和速率-失真模型化的必要信息。位指派单元143根据缓冲器状态、信道频宽和相关编码状态,为一既定的宏区块或帧计算需要的位数。在速率-失真模型化单元144中,速率和/或失真模型由前一宏区块或帧的实际编码资料而更新。在量化参数决策单元145中,目前宏区块或帧的量化参数在离散余弦转换和量化之前被择定。
对H.264编码器而言,其单程速率控制算法的实施,是利用与图1中的单程速率控制器1相似的方法。然而因为速率控制和RDO运算的交互依赖关系,这个方法并不能精准的应用在H.264编码器上。给定一量化参数,通过RDO运算和下列式子,一H.264编码器为每一宏区块区块选择一最佳参考帧以及一最佳移动向量(Motion Vector),以及最佳宏区块模式,
JQP(SQP)=D(SQP)+λ(QP)·R(SQP) [1]
其中SQP代表一组移动向量、参考帧、以及宏区块模式,而λ(QP)是一个Lagrange乘法子。事实上总共有两种Lagrange乘法子,各被用于移动估算和模式选择,根据一给定的量化参数以及下列式子而进行:
换句话说,对于一已知量化参数,H.264编码器由这两个Lagrange乘法子,为每一宏区块选择满足下式的最佳组的移动向量、参考帧、以及最佳宏区块模式:
图2为速率控制202和速率-失真最佳化的移动估算与模式判断(RDO)204之间的交互依赖关系。速率控制202利用包括余值信号的一些信息如平均绝对差(mean absolute difference,以下简称MAD)以及文件头位数等,计算出一量化参数。然而该多个信息只有在H.264编码器进行RDO 204之后才能获取。此外,因为RDO 204的进行是以Lagrange最佳化方法为基础,如第1式和第2式所示,所以RDO 204之后的所有信息皆仰赖量化参数。因此量化参数必须在RDO204之前就取得。
在下列文献中提出了一适应性帧层速率控制法:
[13]Z.G.Li et al.“Adaptive frame layer rate control for H.264,”in Proc.Int.Conference,Multimedia Expo,pp.581-584,June 2003。该方法目前被H.264参考编码器采用。其中,一单程速率控制算法由一个二次方速率模型而实现,如下式:
其中X1和X2是模型参数,而Qs是量化步阶值。在第4式中,第n个帧的MAD,是根据第5式的一线性模块,由第n-1个帧的MAD来预测,以解决图2所示的相互依赖关系。
MADn=α·MADn-1+b [5]
其中a和b是参数。然而,MAD无法由如此单纯的模型获得精准的预估,尤其是当视讯序列中的帧包含不断变动的特征。
图3a和图3b为两个QCIF(Quarterc ommon intermediateformat)格式的范例序列(“news”和“grandma”),当使用三个参考帧做为帧间预测时的MAD变动情形。一目前帧的MAD和前几个帧并没有明显关联。二次方速率模型的模型参数,在编码每一帧后,根据速率和前几个帧的平均绝对差而更新,而目前帧的量化参数则利用第5式预估的MAD而决定,该预估的MAD可能不同于实际的MAD。因此,即使速率模块很精准,也会受到MAD预估不精准的影响。另一个相关技术的问题是忽略了文件头位数变化的影响。相关技术是以前几个帧的平均文件头位数来预估目前帧的文件头位数。图3a和图3b的范例序列以三个参考帧做为帧间预测时的P帧文件头位数则显示于图4a和图4b,其中目前帧的文件头位数与前几个帧没有关联。此外,对H.264编码器而言,因为文件头位数占整体位数相当大的比例,精准估算文件头位数是相当重要的事。
图5a和图5b为两个QCIF格式范例序列(“carphone”和“hall”)运用单一参考帧编码的实质内容(Texture)与文件头位数百分比。图6a和图6b为两个QCIF格式范例序列(“table tennis”和“suzie”)运用五个参考帧编码的实质内容与文件头位数百分比。文件头信息包含移动向量(MV)、模式(Mode)和编码区块态样(CBP)。其中在低位速率时,文件头位数占了整体位数超过百分之五十的比例,这个比例通常随参考帧的数目而增加。文件头位数的估算,相当影响速率模块和位指派。
本发明现提供一单程帧层速率控制算法搭配两步编码法,利用两个不同的量化参数进行RDO和量化。为简化说明,符号表示如下:
QPG:代表前一帧的量化参数,用于目前帧中所有宏区块的RDO运算;
QPRO:通过一速率模型而得,用于余值信号的量化;
QPn:目前帧或第n个帧的量化参数;
QPn-1:第n-1个帧或前一帧的量化参数,相同于第n-1个帧的QPRO_。
在某些实施例中,两个连续帧之间的不同量化参数值,可以通过第6式限定在一定范围,以柔化品质变化。
|QPn-QPn-1|≤Δ where Δ=2 or 3 [6]
如果由速率-失真模型获得的量化参数与前一量化参数的差异极大,通过此式可将其值限定于一既定范围内。即使RDO运算用的QPG和量化用的QPRO之间差异很大,所导致编码增益,例如速率失真效能的降低,亦微不足道。假设差异被限定在一很小范围:
|QPG-QPRO|≤Δ where Δ=2 or 3 [7]
由于QPG用于RDO运算,编码器选择满足第8式的最佳一组移动向量、参考帧和宏区块模式,
则当QPRO被第7式所限定时,即使余值信号在RDO运算之后被以QPRO量化,速率失真效能降低的情况亦非常微小。
图7a和图7b为两个QCIF格式范例序列(“table tennis”和“mother &daughter”)以单一参考帧使用不同QPRO但相同QPG的情况下的速率失真曲线。图8a和图8b为两个QCIF格式范例序列(“salesman”和“mobile”)以五个参考帧使用不同QPRO但相同QPG的情况下的速率失真曲线。其中对所有曲线,QPG被设为量化参数QP,而QPRO被设为QP-3、QP和QP+3,分别对应每一曲线。如图所示,若QPG和QPRO之间的差异很小,速率失真效能几乎相同,甚至相同量化参数QP下的位速率也相差极微。
图9为H.264编码器所采用的单程帧层速率控制算法与两步编码法的实施例,其显示一帧速率控制系统9。帧速率控制系统9包含一第一步编码装置92、一速率控制装置94以及一第二步编码装置96。第一步编码装置92与前述视讯编码器相似,除了熵编码单元之外。第一步编码装置92包含一速率-失真最佳化的移动估算与模式判断单元921、一余值信号储存单元922、一离散余弦转换/量化单元923、一离散余弦反转换/逆量化单元924以及一第一重建帧储存器925。在速率-失真最佳化的移动估算与模式判断单元921中,首先以QPG(对帧中所有宏区块而言是QPn-1)进行速率-失真最佳化的移动估算和模式判断。余值信号储存单元922储存了参考帧、移动向量和从速率-失真最佳化的移动估算与模式判断单元921撷取的帧的余值信号。H.264有一特色使得速率控制的实施更加困难,即选择性的帧内预测。在帧内预测模式中,根据前一宏区块邻近像素的重建值预测宏区块。帧内预测重建每一宏块,由此得以通过离散余弦转换/量化单元923和离散余弦反转换/逆量化单元924来编码接下来的宏区块。离散余弦反转换/逆量化单元924输出的重建帧被储存在第一重建帧储存器925。离散余弦转换/量化单元923和离散余弦反转换/逆量化单元924也需要QPG以进行量化及逆量化。速率控制装置94更新一速率模型的参数,并决定目前帧的量化参数。速率控制装置94包含一文件头位数估算单元944、一复杂度量测单元945、一位指派单元941、一速率-失真模型化单元942以及一量化参数判断单元943。文件头位数估算单元944在第一步编码之后,估算目前帧中所有宏区块所需的文件头位数。文件头信息包含参考帧、移动向量、宏区块模式以及由第一步编码装置92取得的CBP。复杂度量测单元945计算余值信号的复杂度,以决定量化参数判断单元943进行量化所需的量化参数值。稍后将详述复杂度量测算法的实施例。在位指派单元941中,根据可用的信道频宽、缓冲器状态、或期望的帧品质,指派一帧所需的适当位数。不同的位指派方法可视速率控制的目标而应用。举例来说,在恒定位速率(CBR)的应用中,可指派相同数量的位数给每一帧,相对的在可变速率(VBR)应用中,帧品质是影响指派给每一帧的位数的主要因素。在速率-失真模型化单元942中,速率模型的参数,在每一帧的第二步编码之后,利用先前数个已编码的帧的复杂度和实质内容位数,由线性平方近似(LSA)方法更新。速率-失真模型化单元942使用一修订的二次方速率模型。在量化参数判断单元943中,运用速率模型搭配指派给一帧的位数和余值信号的复杂度,决定量化参数值,即第二步编码装置96量化该余值信号所用的QPRO__。
第二步编码装置96主要用于量化和熵编码,以产生一编码输出比特流。第二步编码装置96包含一选择性内编码模式判断单元961、一离散余弦转换/量化单元962、一熵编码单元963、一离散余弦反转换/逆量化单元964以及一第二重建帧储存器965。在第一步编码时,以QPG进行RDO运算,并且以QPG和前一宏区块邻近重建素像进行帧内预测。第一步编码装置92中产生的重建帧是根据QPG而进行离散余弦转换、量化、逆量化和离散余弦反转换而得。因量化和逆量化是在第二步编码装置96中使用QPRO而进行,如果QPG和QPRO不同的话,先前宏区块的邻近重建像素和第一步编码产生的重建像素将有差异。选择性内编码模式判断单元961只有在一宏区块模式属于模式“内编码”时启用。举例来说,如果在第一步编码时宏区块模式是4x4内编码模式之一,便在第二步编码时再度进行内编码模式预测,并根据QPRO选择一新的4x4内编码模式。因余值信号在内编码模式选择之后已经不同,所以选择性内编码模式判断单元961重新计算余值信号的复杂度,而帧内预测耗费的运算资源相对于整个RDO运算并不算高,因此选择性内编码模式判断单元961所增加的运算复杂度相当微不足道。帧中只有极少数宏区块在帧间预测时使用内编码模式,除非发生场景改变或出现大幅的移动。经过离散余弦转换/量化单元962与熵编码单元963之后产生输出比特流,其中量化部份是以QPRO进行。在离散余弦转换和量化之后,离散余弦反转换/逆量化单元964再次重建该帧,并将结果储存在第二重建帧储存器965。离散余弦反转换/逆量化单元964所产生的重建帧是用于目前帧中后续宏区块的帧内预测,以及后续帧的帧间预测。
在此亦提出一基于余值信号的复杂度的帧层速率模型。此处所提的复杂度是以称为修订的绝对差值总和(sum of absolute difference,以下简称SAD)。在H.264中,一8x8区块如果其中只包含单一或高代价系数要编码,则被视为高代价区块。
图10为宏区块的结构与编号顺序。在一亮度信号(Y)1002中有十六个4x4区块,在色差信号(Cb)1004和色差信号(Cr)1006中各四个4x4区块。在H.264中,每一4x4离散余弦转换系数皆有其成本,而一4x4区块的系数成本CoeffCost4×4是所有4x4离散余弦转换系数的成本总和。如果一8x8区块系数成本CoeffCost8×8少于一临界值,H.264编码器定义该8x8区块为一高代价区块:
if Coeff Cost8×8≤T,the 8×8 block is not encoded [9]
其中
虽然上述离散余弦转换系数的编码方法并不是标准规范,却因为其速率失真效能的优势而适合应用在H.264编碥器中。根据该离散余弦转换系数的编码方法,具有低系数成本的4x4区块与实质内容的位数目较为无关。此修订的SAD方法定义了SADi为图10中区块Bi的绝对差值总和。宏区块的复杂度CMB是以下式表示
CMB=max{SAD0,..,SAD3}+max{SAD4,..,SAD7}+...+max{SAD20,..,SAD23} [10]
换言之,在每一8x8区块中会有一具有最大SAD的4x4区块被选出,而一宏区块的复杂度则定义为六个8x8区块的各最大SAD的总和。一帧的复杂度CFrm,则定义为该帧中所有宏区块的CMB总和,如下式:
其中NMB代表帧中的宏区块数目。
一种新帧层速率模型,称为修订的二次元速率模块,是以上述修订的SAD当做复杂度,这种新模型可应用在帧层速率控制的实施例中。可以观察到的是:速率正比于复杂度,而反比于量化步阶值Qs。图11a到图11d为QCIF格式序列(“suzie”、“carphone”、“salesman”以及“table tennis”)的C/Qs和速率的二次关系,图12a到图12d为QCIF格式序列(“waterfall”、“news”、“mother & daughter”以及“foreman”)的C/Qs和速率的二次关系,速率代表不计文件头位数的实质内容位数目。在图11a到图11d以及图12a到图12d中,以各种量化步阶值将序列里的多个帧编码,而速率与CFrm/Qs之间具有二次元关系。因此一帧的速率可模型化成一CFrm/Qs的二次元函式:
其中X1和X2_是模型参数,而Qs是量化步阶值。
在第二步编码之后,要编码任一帧时,就可使用LSA方法用前w个帧的资料更新该模型参数。在第一步编码之后,给定了目标位速率,便可用更新后的参数来解出二次元方程式,以决定接下来帧的量化步阶值。实验结果证明使用修订的SAD做为复杂度的速率模型可以比第4式更适合实际资料。
图13所示的流程是一单程帧层速率控制算法与两步编码法的实施例。该单程帧层速率控制方法包含:在步骤1300中,进行位指派;在步骤1302中,以QPG进行第一步编码;在步骤1304中,决定QPRO;在步骤1306中,以QPRO进行第二步编码;以及在步骤1308中,进行后编码(post-encoding)程序。在步骤1300中,所指派全部位数,是包含一帧中的实质内容位和文件头信息。位数目是依据各种数据而得,例如缓冲器状态、信道频宽、品质需求等。在某些实施例中,该帧层速率控制方法可实施于恒定位速率信道,位数目则是由MPEG-2TM5速率控制算法中的位指派方法而决定。在步骤1302中,根据前一帧的量化参数QPG进行目前帧的第一步编码。运用QPG为帧中所有宏区块进行速率-失真最佳化的移动估算和模式判断(RDO)。在RDO运算之后,储存所有宏区块的信息,例如宏区块模式,移动向量(Motion Vector)和参考帧,以及余值信号等。利用前几个宏区块的邻近重建像素进行帧内预测,因此在RDO运算之后,每个帧中的一宏区块其余值信号经过离散余弦转换、量化、逆量化和离散余弦反转换而重建。步骤1302中,第一步编码并未执行熵编码。
在步骤1304中决定在第二步编码中用以量化该余值信号的QPRO。首先估算帧的文件头位数和复杂度,而文件头位数和复杂度可由下列信息来估算:移动向量、参考帧、以及在步骤1302中第一步编码求得的余值信号。文件头位数可由查表而得,或通过使用熵编码器的来编码文件头信息而得。编码文件头信息需要较多的运算资源,然而,可以获得更精准的估计结果。相对的,查表方式较不精准,但只需要很少的运算资源。帧的复杂度,亦即修订的SAD,是由第10式和第11式求得。在估算帧的文件头位数和复杂度之后,通过解第12式的二次方程式而求得QPRO。需注意第12式的R(Qs)被定义为每一帧被指派的位数减去它的预估文件头位数。如果QPG和QPRO的差异大于3或QPRO超过范围(对H.264而言为0到51)之外,QPRO被下式限缩范围:
if QPRO>QPG+3,QPRO=QPG+3
else if QPRO<QPG-3,QPRO=QPG-3 [13]
if QPRO>51,QPRO=51
else if QPRO<0,QPRO=0 [14]
第13式的限缩方法柔化了两个连续帧的品质变化,并缩减了以第7式得到的QPG进行移动估算和模式判断的速率失真效能下降。
步骤1306根据步骤1304中所得的QPRO将帧进行第二步编码。在第二步编码1306中,从第一步编码1302获取的余值信号以QPRO进行量化。当一宏区块在第一步编码1302中予以帧内编码,且QPG和QPRO不同时,宏区块邻近重建像素可能会有所不同,必须再度对该宏区块进行帧内预测。宏区块的复杂度应重新被计算,以更新所属帧的复杂度。在后编码程序1308中,已更新的复杂度是用来更新速率模型的参数。在步骤1306中,所有在第一步编码1302得到的帧间编码宏区块的文件头信息、第二步编码1306中新获取的帧内编码宏区块的文件头信息、以及根据QPRO重新量化的离散余弦转换系数,皆予以熵编码以产生一输出比特流。针对帧中后续宏区块的帧内预测及后续帧的帧间预测,量化过的离散余弦转换系数通过逆量化和离散余弦反转换而被重建。后编码程序1308包含通过线性平方近似方法,采用第15式所示的前w个帧的资料来更新第12式中速率模型的参数。在某些实施例中,w设定为20。更新后的参数被用来为后续帧的第二步编码1306估算一量化步阶值。步骤1308亦更新了缓冲器容量水位。
其中Ri、Ci以及QSi分别为第i个先前帧的速率、复杂度以及量化步阶值。
二步编码法中的速率-失真最佳化的移动估算和模式判断只在第一步编码中为每一宏区块执行一次,除非某宏区块为帧内编码,才会在第二步编码中针对可能的帧内编码模式进行再次选择。因此,在本发明中的单程二步编码法中,虽然离散余弦转换、量化、逆量化和离散余弦反转换在两个编码步骤中皆执行,但运算复杂度,相较于整体计算复杂度,并不会明显增加。
上述实施例仅用以说明本发明,而非限定本发明。