用于先进视频标准的先进宏块熵编码的制作方法

文档序号:7691072阅读:126来源:国知局

专利名称::用于先进视频标准的先进宏块熵编码的制作方法
技术领域
:本发明总的涉及对视频数据帧的编码,更具体地,本发明涉及基于前面的头的元素值对宏块头的元素进行编码。视频编码器通过消除视频数据间的冗余来实现压缩。视频数据间的冗余有两种空域冗余和时域冗余。去除空域和时域冗余的方法分别包括,在帧内使用变换编码技术,在帧间使用运动估计和补偿技术。MPEG4("CodingofMovingPicturesandAudio,,,IS0/IECJTC1/SC29/WG11N3312,2000年3月),H.263("H.263VideocodingforLowBitRateCommunication,"ITUTRcommendation,1993)和H.264("T.Wiegand,"WorkingDraftNumber2,Revision8(WD-2rev8),,JVT-B118r8,IS0/IECMPEG&ITU-T-TVCEG,Geneva,Switzerland,2002年1月29日-2月29日")中使用基于块的编码机制,其中图像分为更小的称为块的单元,这些单元按照光栅扫描顺序被编码器和解码器逐个处理。块在H.264中定义为一组4x4个像素,在H.263和MPEG4中定义为一组8x8个像素。一个合计大小为16x16的块组就是所谓的宏块(MB)。一定数量的连续宏块被分组成条带(slice),条带代表独立的、不需要参考同一帧的其它条带就可解码的编码单元。通过DCT变换以及量化,块的一组数据采样值首先被线性变换,然后量化成为一组变换系数,导致输入采样值的能量集中在少量的低频系数中。在编码得到的剩余数据时,通常使用可变长度编码(VLC)。在低比特率视频编码中,为了节约在剩余的数据上花费的比特数,编码器会使用更大的量化参数。结果,头的开销成为制约总比特率的重要因素,在高复杂度视频标准例如H.264当中,这点尤其突出。在4氐比特率视频编码当中,这对低速率网络应用(K.Yu,J.Li,C.Shi,和S.Li,"ANovelModel—basedRate—ControlMethodforPortraitVideoCoding,,,IEEETrans.CircuitsSyst.VideoTechnol.,Vol.15,No.12,Dec.2005;X.Yang,W.Lin,Z.Lu,X.Lin,S.Rahardja,E.ong,和S.Yao,"RateControlforVideophoneUsingLocalPerceptualCues,,,IEEETrans.CircuitsSyst.VideoTechnol.,Vol.15,No.4,Apr.2005)是^艮重要的,这些4氐速率网络应用包括20-40kbps的2.5G无线网络,24-64kbps的视频电话以及64kbps的ISDN。现在,市场上正在销售中的手机,绝大多数都已经具有观看视频的功能。手机视频已经越来越普及了。按照2006年四月发布的移动视频统计("MobileVideoResearch&Statistics",Http://mmaglobal.com/modules/wfsection/article.phparticleid=378),超过半数的手机用户使用手机观看视频的频率,是至少每周一次。在韩国,最近,移动电视也已经嵌入手机当中。像美国等其他国家,也将为移动电视提供视频流。在不久的将来,通过移动电话来使用视频将逐渐成为移动电话用户的普遍趋势。因此,需要为这样的视频应用提供一种先进的编码机制。
发明内容本发明提供了一种用于对视频数据帧进行编码的方法以及一种包含对视频数据帧进行编码的计算机程序的计算机可读介质。本发明的一方面提供了一种用于对视频数据帧进行编码的方法,该视频数据帧包括多个宏块(MB),宏块被分成未跳过宏块和已跳过宏块,每个宏块包括具有多个元素的宏块头和宏块的剩余数据,其中宏块头的元素是基于先前宏块头的相同元素的值编码的,以减少宏块头中的总比特数。根据另一方面,本发明包括一种用于对视频数据帧进行编码的方法,该视频数据帧包括多个宏块(MB),该宏块被分成未跳过宏块和已跳过宏块,每个宏块包含具有多个元素的宏块头和宏块剩余数据,该多个元素的其中之一是宏块游程,该方法包括以下步骤确定帧中的第i个宏块是否是未跳过宏块;如果帧中的第i个宏块是未跳过宏块则确定i是否为零;如果i是零,正常编码宏块头的元素的当前值;如果i不是零,确定宏块头的该元素的所述当前值是否为零。根据又一方面,本发明包括一种包括用于编码视频数据帧的计算机程序的计算机可读介质,该視頻数据帧包括多个宏块(MB),宏块被分成未珧过宏块和已跳过宏块,每个宏块包含具有多个元素的宏块头和宏块剩余数据,该多个元素的其中之一是宏块游程,该计算机程序包括确定械中的第i个宏块是否是未跳过宏块的笫一代码;如果楨中的笫i个宏块是未跳过宏块则确定i是否为零的笫二代码;如果i是零则正常编码宏块头的元素的当前值的笫三代码;以及如果i不是零则确定宏块头的该元素的当前值是否为零的第四代码.附困说明参考以下描述中的示例以及附图将会清楚明确本发明的这些和其他方面,其中困1示出作为条带的帧内的基本H.264宏块格式.田2示出了"Akiyo"的宏块头的比特数比重在H.26A和H.263中的对比的曲线图.困3示出了"Foreman"的宏块头的比特数比重在H.264和H.263中的对比的曲线闺.田4示出了"Stefan"的宏块头的比特数比重在H."4和H.263中的对比的曲线困.图5示出了作为条带的帧内的H.264宏块格式.困6是示出根据本发明实施例的用于编码P械中的宏块头的先进算法的流程困.困7示出了MBR的减小百分比的曲线图.困8示出了JIBV,的减小百分比的曲线图.困9示出了MBVy的减小百分比的曲线困.图IO示出了MBC的减小百分比的曲线困.困ll示出了MBQ的减小百分比的曲线图.困12示出了头的减小百分比的曲线困.困13示出了全部比特的减小百分比的曲线困.困14示出了"Akiyo"的PSNR对比特率的曲线困.困15示出了"Foreman"的PSNR对比特率的曲线图.困16示出了"Stefan"的PSM对比特率的曲线图,具体实施方式本申请中,申请人提出了一种先进的用于对宏块头进行熵编码的编码算法,主要应用于例如可在实时视频流应用当中使用的帧间编码的帧(即p帧)。申请人首先介绍宏块头的特性。申请人发现,在低比特率的视频编码中,宏块头的比特数量对组合的宏块剩余数据的比特数量的百分比比较高(即量化参数(QP)大),并且相邻宏块之间每单个元素的头相关性很大,这些元素即游程(run-length),模式,运动矢量,块编码模式以及量化参数。基于这些宏块头的特性,申请人利用了宏块头的最可能值,并且提出了一种先进的宏块头熵编码的编码算法。宏块头简介在H.264当中,每个帧被划分为宏块,每一个宏块包含16x16的亮度样本和两个对应的8x8的色度样本。在QCIF的图像格式中,每一帧包括99个宏块。按照光栅扫描顺序的多个连续宏块可以被分组成条带,代表不参考同一帧中其它条带就可解码的独立编码单元。假定整个帧作为一个单位条带,对帧头(FH)编码,继而依次处理N个宏块。得到的宏块格式如图1所示,每一个宏块格式包括宏块头(MBH)以及后面的宏块剩余数据(MBD)。在P帧中,MB头基本上包括诸如游程(MBR)、宏块模式(MBM)、运动矢量数据(MBV)、块编码模式(MBC)以及量化参数的变化(MBQ)等元素。当开始对宏块头编码的时候,游程表明通过复制前一已解码帧中对应位置的图像信息而造成的已跳过宏块数目。利用运动估计,通过搜索最佳模式宏块和当前宏块之间的最佳匹配确定和编码最佳宏块模式。为了定位由最佳模式造成的参考帧间块,指定二维的运动矢量。宏块编码模板(codedblockpattern,CBP)表明宏块的每个8x8亮度子块和每个4x4色度子块是否都包括非零的残余系数。利用非零系数,MBQ确定当前宏块的量化参数和前一块量化参数的差别。宏块头编码结束后,非零的亮度和色度系数都将使用UVLC或者CABAC进行熵编码("T.Wiegand,"WorkingDraftNumber2,Revision8(WD-2rev8),,,JVT-B118r8,IS0/IECMPEG&ITU-T-TVCEG,Geneva,Switzerland,2002年1月29日-2月29日")。对该帧内的下个宏块以及其余宏块重复该编码过程。宏块头特性1.量化参数的作用中有很大的作用。编码的比特数通常是由量化参数决定的。量化参数越大,总比特率就越小。最新的视频标准H.264中的帧和宏块头信息的复杂度比以前的标准如H.263高很多。因为在H.264的宏块头中引入了游程以及先进的宏块模式,导致H.264的宏块头4艮大。表1显示了H.264和H.263中的宏块头(Phsadi!r)以及亮度色度剩余数据(Pdm)的比特数的比重。图2、图3和图4分别显示了视频序列"Akiyo"、"Foreman"以及"Stefan"中的对应图。在H.264和H.263中的测试条件基本上相似图像格式是QCIF,编码帧率是10帧/秒(fps),图像组(GOP)的结构是H.264帧间图像(interpicture)(IPPP),最大的搜索范围是16,参考帧数为1,熵编码方法是VideoLANClient(VLC)。值得注意的是,在H.264的量化参数范围之中,H.264中的量化参数值[12…43]类似于H.263中的量化参数值。H.264中的QP-12,37,43分别近似等于H.263中的QP=1,16,32。在H.264中QP每加6(例如37->43),等同于H.263中的QP翻倍。选出的其它QP值也可以相应地近似。视频序列e户H.264H.263(%>Akiyo126.4893.525.9394.071810.3489.667.0192.992417.2282.7811.1388.873023.1276.8816.5683.443731.5968.4126.4473.564379.4520.5567.7432.26Foreman123.5296.482.8997.11187.0192.993.5596.452411.8988.117.0093.003018.1381.8781.8788.933727.3672.6421.1178.894366.3233.6851.2048.80Stefan122.0997.911.8498.16183.7896.222.397.72451194.893.2096.80307.0292.984.0395.973710.3589.657.9992.014338.8861.1222.7577.25表1观察到对于任意给定的QP,H.264中的Ph。ad。r都要比H.263高。这是因为H.264中编码了更大的游程值以及先进的宏块模式,因而剩余数据的比特数减小。同时我们也可以注意到,当QP增加的时候,PhM^在H.264和H.263中都会增加。在"Akiyo"和"Foreman"中,当QP-43时,宏块头成为制约全部编码比特数的关键因素。这是因为大多数的剩余数据的系数都被量化成0,对比特数的贡献微不足道。此外,在宏块头中为已跳过宏块使用了更大的游程值,导致游程比特数变大。H.264中采用更大的QP值(即>43)甚至导致Phe由更大。所以,宏块头在低比特率视频编码的时候,会成为制约编码比特数的重要因素,在H.264的更大的QP范围中尤甚。2.宏块头相关性如上所述,每个宏块的宏块头都包括它自己的元素,包括MBR、MBM、MBV、MBC和MBQ。这里,每一个宏块头都是独立编码的。相邻宏块的头之间存在着相关。我们可以发现,当QP增大的时候,相邻宏块头的元素的最可能值更可能重复,并且所有元素的最可能值趋向于0。表2显示了假定在同之前所述的H.264相同的测试条件下前一值也是最可能值,则宏块头的当前元素取得最可能值"0"(Pm。)的概率。<table>tableseeoriginaldocumentpage9</column></row><table>总体上来说,优选依照代价方程最小化宏块头和宏块剩余数据的比特数,该代价方程在T.Wiegand,"WorkingDraftNumber2,Revision8(WD-2rev8),"JVT-B118r8,IS0/IECMPEG&ITU-T-TVCEG,Geneva,Switzerland,2002年1月29日-2月29日以及F.Moscheni等的"EntropyCriterionforOptimalBitAllocationbetweenMotionandPredictionErrorInformation",Proc.SPIEVisualCommun.AndImageProc.Pp.235-242,1993年11月中有所介绍。发现除了MBR和MBQ之外其他所有元素的P^。都随着QP增加而增加。当QP=43的时候P^。的取值范围从27.8%到98.8%。因为复制对应位置的参考宏块而没有MBV信息比特,MBM趋向于模式0。MBVx(水平方向)和MBVy(垂直方向)可能给出0分量以最小化运动矢量的开销。MBC趋向于包含"0"CBP,用于指明没有亮度和色度系数要编码,也没有为这些系数花费比特。在MBR的情况下,非零游程是优选的,在QP更大时更多的宏块被跳过以节省比特数。虽然,MBR的Pzer。会随着QP变大而变小,但它的结果值仍然是很大的(即akiyo中的35.5%)。因为实验中使用固定QP,因此MBQ的值不因QP值的变化而改变。所以,宏块头相关性高意味着为了达到更好的压缩编码效率需要更高的头信息冗余,这在低比特率视频编码(即更大的QP)中很重要。提出的宏块头分组如上所述,宏块头在大QP时成为制约全部编码比特数大小的关键因素,高的宏块头相关性可以达到更高的编码效率。为了减少总比特数不再单独地编码每一个宏块头,而是基于前面的值,通过将不同宏块的同一元素分组在一起来编码当前宏块头的元素。公知当前值的熵H(Y)(D.S.TaubmanandM.W.Marcel1in,JPEG2000ImageCompressionFundamentals,StandardsandPractice,Norwell,KluwerAcad.,2002)大于在前一值已知情况下当前值的熵H(YIX)。//(r)^//(F|jr)(1)证明<formula>formulaseeoriginaldocumentpage11</formula>类似地,如果已知前面更多的值X,,X2,.,.,Xk,当前值的熵就会变得更小,如下公式所示<formula>formulaseeoriginaldocumentpage11</formula>为了说明和简便起见,以"Foreman"为例,在QP=37时选择元素"MBR",并且使用两个符号、即0和非0值。首先假设前面的值是O和非O的概率分别为0.7和0.3。如果前一值为"0",当前值为"0"和"非0"的概率分别为0.8和0.2。如果前一值为"非0",当前值为"o"和"非0"的概率分别为0.6和0.4。所以,如果已知前一值,当前值为"0"或"非0"的概率分别为0.7x0.8+0.3x0.6=0.74和0.7x0.2+0.3x0.4=0.26。熵计算过程见下表.<table>tableseeoriginaldocumentpage11</column></row><table>注意到由于前一值和当前值间的相关性,如果前一值已知则下个将来值的熵会更小(即0.8144)。因此,优选基于前一值来编码当前值和/或将来值。图5示出了本方法提出的作为条带的帧内的H.264宏块格式。在提出的格式当中,如果将一帧内所有宏块的类似的元素放在一起,将会更有利于视频编码器对宏块头的单个元素进行编码。不再依次对宏块头以及每个宏块头后面的宏块数据编码,本方法首先放置一帧中的所有宏块的宏块头并对这些宏块头编码。在处理完宏块头之后,再对剩下的宏块数据编码。先进的MB编码算法如上所述,在大QP值时,所有元素的最可能值趋向于0,而相邻宏块头的元素的最可能值更有可能重复。通过使用游程编码(D.S.Taubman和M.W.Marcel1in,JPEG2000ImageCompressionFundamentals,StandardsandPractice,Norwel1,KluwerAcad.,2002),本方法提出的对P帧中的宏块头编码的算法描述如下对于宏块头中的每个元素Element—Run—length=0Foreachi—thnon-skippedMBwithinaframeIf(i=0)Encodecurr—valueasnormalElseIf(curr_value="zero")If(prev—value="zero")Element-Run—length++If(i=lastMB)EncodeElement_Rim-lengthElseEncodecurr—valueasnormalElseIf(prev—value=,,zero")(1)EncodeElement—Run-length(2)Encodecurr—valuewithindex=curr—value-l(3)Element—Run—length=0ElseEncodecurr—valueasnormalIfOastMB=skippedMBandelement=MBR)If(Element—Run-length>0)(1)EncodeElement—Run-length(2)Encodecurr—valuewithindex=curr—value-lElseEncodecurr—valueasnormal参照提出的宏块格式,宏块头的每一个元素组,包括MBR,MBM,MBVx,MBVy,MBC和MBQ,将被依次编码。图6是示出上面所提出的算法的实施方式的流程图。首先,宏块游程设置为"0"(SIOI)。然后确定第i个宏块(MB)是否是帧内的未跳过宏块(S101)。如果确定第i个宏块是帧内的未跳过宏块,则确定i是否为"0",即第一个未跳过宏块,该元素的当前值"curr—value"会按照原有的H.264编码方式进行编码(S102、5103)。另一方面,如果i不是"0",并且元素的当前值为"0"(S102、5104),则当前一值"prev-value"也为"0"时(S105),游程加一(S106)。这里,如果第i个宏块是帧中的最后宏块,则与游程增加(S106)同时地编码游程这个元素(S107)。否则,即在前一值不为"0"的情况下,仍然按照原来的H.264方法对当前的这个"0"值进行编码。如果当前值为"非0",则当前一值为"0"时编码游程值(S104、S108)。同时用等于"curr-value-l"的码字索引对"非0"的当前值进行编码,并且将游程这个元素设置为"0"(SllO、Sill)。已知前一"0"值之后的当前值是"非0",并且编码其游程(S109)。"0"索引可以排除在H.264中使用的码字表之外。在相同的码字表中,可以用一个较低的码字索引对非零的当前值进行编码以实现较小的编码比特数。如果当前值和前一值为"非0",则按照原来的H.264对当前值编码(S112)。当处理过的未跳过宏块是帧中的最后一个时,并且当前值和前一值等于"0",则对游程编码(S107)。在步骤S103、S107、Slll、S112结束之后,该过程又移至步骤S101以确定第i个宏块是否是帧内的未跳过宏块。在步骤sl01)中,如果确定第i个宏块是帧内的已跳过宏块,即在"否"的情况下,确定第i个宏块是否是最后的宏块以及元素是否是宏块游程(S113)。当最后的宏块是已跳过宏块时,对游程编码并且对于非零游程用等于"curr—value-l"的码字索引来编码"非0"当前值(S113、S114、S115、S116)。另一方面,如果第i个宏块不是最后的宏块,或者元素不是宏块游程,则该过程又移至步骤S101(S113).对于零游程,对当前值正常编码(S117)。表3提出了元素游程的码字。<table>tableseeoriginaldocumentpage14</column></row><table>表3对于游程值K,码字是"0…01X",其中对于奇数K,X=0,对于偶数K,X-l。对于K>0,对应的比特数是[K/2]+2。在QCIF图像格式中,最大游程是98,码字是"0…011",51个码字比特。在解码器一侧,当前一值非零或者宏块是解码每个元素组时的第一个未跳过宏块,则按照原来的H.264将码字解码为当前值。否则,用一个较低的码字索引在帧内对游程和下一码字进行解码。以相同的方式对随后的宏块进行解码直到最后一个宏块。对于下一帧和后面的帧重复该过程。实验结果申请人在JVTJM10.2("JVTJM10.2",http:〃iphome.hhi.de/suehring/tml/,2006)上效'J试了提出的方法。在以下实验中,将提出的算法和原始的H264JM10.2编码器进行了比较。基本档次(baselineprofile)中使用的测试条件如下图像格式是QCIF,编码帧率是10帧/秒,最大的搜索范围是16,参考帧数为1,熵编码方法是UVLC,MV的分辨率是四分之一像素,哈达玛(Hadamard)变换关闭,RD优化关闭,并且约束搜索范围为0。除第一帧是帧内编码帧(I帧)以外,随后的帧都是帧间编码帧(P帧)。<table>tableseeoriginaldocumentpage15</column></row><table>表34表4示出了与原始的H.264宏块头编码算法相比,提出的算法中P帧的每个元素的编码比特数以及减小百分比P,。图7-13示出了在"Akiyo","Foreman"和"Stefan"视频序列中QP的对应减小百分比。Pr定义为(R。ld-RJ/R。ld*100,其中R。ld和Rne分别是原始H.264和本算法的比特数。两个算法给出了相同的峰值信噪比(PSNR)但是不同的编码比特数,因为它们的宏块头熵编码方法不同。实验表明,本算法可以达到更小的头比特数和总比特数。头比特数的P,大约是20%,变动范围为9.2%到24.5%.可以看出头比特数的Pr在QP-43的时候并不是很大,可能是因为MBR和MBQ的P,不是很大。MBR的Pr低,可能因为已跳过宏块的数量在全部宏块上变化,导致已跳过宏块的零游程的数量较低。MBQ的Pr小,可能是因为未跳过宏块的数量小并且MBQ的编码比特数不高,导致提出的方案中比特减少相对较低。在"Foreman"序列中,QP-43时,总比特数的Pr高达10.3%。可以看出本算法在低比特率视频编码(即大QP)中的比特减少改进是显而易见的,因为宏块头的开销是主要的并且被有效压缩。值得注意的是,每个元素的Pr具有类似于表2中示出的P^。的行为。对于MBM,MBV和MBC,P,和Pz。都随着QP的增大而增大。对于MBC,观察发现Pr在QP-12的时候等于0,因为非零系数(而不是零)是优选的并且正常编码。对于MBR,Pr和P^。都随着QP减小而减小。而对于MBQ,Pr大约是50%,因为提出的码字中的比特减少(即[K/2]+2)对于固定的QP来说接近50。/。。同时也发现随着QP增大,Pr会稍微减少,因为未跳过宏块的数量变小,导致比特减少的效应相对不显著。同样的实验也在H.263上作过,得出了相类似的结论但是Pr稍稍低了一些。图14到图16示出了在低比特率的视频序列"Akiyo","Foreman"以及"Stefan"中PSNR对比特率的曲线图。在任何视频序列中,在任何给定的比特率下都有PSNR增益。在10kbps的"Foreman"序列中,提出的算法的PSNR增益比JM10.2大约高0.3-0.4dB。头信息通常比数据信息具有更高的优先权,因为数据信息的使用主要依赖于头。在头损坏的情况下无法识别数据信息。在提出的格式中,分开处理头和数据信息,使得可以容易地采取不同的保护方法。例如,可以使用更鲁棒的信道编码来用于编码头信息。此外,当使用提出的格式时,视频解码器更有效,因为分离了主要存在于宏块头中的低效决策操作,例如if-then-else(如果-则-否则)操作。决策操作可以实时进行,随后剩余的宏块数据可以几乎不需要决策操作就可有效解码。而且,低级緩存中的诸如函数参数的值可以在分离的头和数据部分中重复使用,因为编码过程是在宏块头的元素组内和/或分离的数据的元素组内逐个宏块地重复的。还发现在解码一方是没有延时的,因为只有当帧(即条带)中的所有宏块都完全解码才显示整个帧。换句话说,显示每帧的解码时间不管帧条带的格式是什么都是相同的。虽然对本发明进行了描述,但是显而易见其可以许多方式改变。这些改变不能认为是脱离本发明的精神和范围,并且所有这些改变对本领域技术人员来说是显而易见的,都要包括在所附权利要求书的范围内。权利要求1.一种用于对视频数据帧进行编码的方法,该视频数据帧包括多个宏块(MB),每个宏块包括具有多个元素的宏块头和宏块的剩余数据,其中宏块头的元素是基于先前宏块头的相同元素的值编码的,以减少宏块头中的全部比特数。2.根据权利要求l的方法,其中所述宏块头的元素是通过将该多个宏块的元素分组来编码的。3.—种用于对视频数据帧进行编码的方法,该视频数据帧包括多个宏块(MB),宏块被分成未跳过宏块和已跳过宏块,每个宏块包括具有多个元素的宏块头和宏块的剩余数据,该多个元素的其中之一是宏块游程,该方法包括以下步骤确定第i个宏块是否是帧内的未跳过宏块;如果第i个宏块是帧内的未跳过宏块,则确定i是否为零;如果i为零,则正常编码该宏块头的元素的当前值;以及如果i不是零,则确定所述宏块头的元素的所述当前值是否为零。4.根据权利要求3的方法,其中该方法还包括以下步骤如果所述宏块头的元素的当前值是零并且i不为零,则确定该元素的先前值是否为零。5.根据权利要求4的方法,其中该方法还包括以下步骤如果所述元素的先前值为零,则将宏块游程增加一;以及如果所述元素的先前值不为零,则正常编码该元素的当前值。6.根据权利要求5的方法,其中该方法还包括以下步骤如果i不为零,所述当前值不为零并且所述先前值为零,则编码宏块游程。7.根据权利要求3的方法,其中该方法还包括以下步骤如果所述当前值不为零,i也不为零,则确定所述元素的所述先前值是否为零。8.根据权利要求7的方法,其中如果所述当前值不为零并且所述先前值为零,该方法还包括以下步骤编码宏块游程;以及用等于(当前值-l)的索引编码该元素的所述当前值。9.根据权利要求7的方法,其中该方法还包括以下步骤如果所述先前值不为零,所述当前值也不为零,则正常编码所述当前值。10.根据权利要求3的方法,其中该方法还包括以下步骤如果第i个宏块不是所述帧内的未跳过宏块,则确定第i个宏块是否是最后一个宏块。11.根据权利要求10的方法,其中该方法还包括以下步骤如果第i个宏块是最后一个宏块,则确定宏块游程是否大于零。12.根据权利要求ll的方法,其中该方法还包括以下步骤如果宏块游程大于零,则用等于(当前值-l)的索引编码宏块游程和所述元素的所述当前值;以及如果宏块游程不大于零,则正常编码所述元素的所述当前值。13.根据权利要求3的方法,其中该方法还包括以下步骤如果正常编码宏块头的元素的当前值已经完成,则再次确定第i个宏块是否是所述帧内的未跳过宏块。14.根据权利要求10的方法,其中该方法还包括以下步骤如果第i个宏块不是最后一个宏块,则再次确定第i个宏块是否是所述帧内的未跳过宏块。15.—种包含用于编码视频数据帧的计算机程序的计算机可读介质,该视频数据帧包括多个宏块(MB),宏块被分成未跳过宏块和跳过宏块,每个宏块包括具有多个元素的宏块头和宏块的剩余数据,该多个元素的其中之一是宏块游程,所述计算机程序包括第一代码,用于确定第i个宏块是否是帧内的未跳过宏块;第二代码,如果第i个宏块是帧内的未跳过宏块,用于确定i是否为零;笫三代码,如果i为零,用于正常编码宏块头的元素的当前值;以及第四代码,如果i不是零,用于确定所述宏块头的元素的当前值是否为零。全文摘要提供了一种用于对视频数据帧进行编码的方法和包含用于视频数据帧进行编码的计算机程序的计算机可读介质。该视频数据帧具有多个宏块。每个宏块包括具有多个元素的宏块头和宏块的剩余数据。宏块头的元素是基于先前宏块头的相同元素的值编码的,以减少宏块头的全部比特数。宏块头的元素是通过将该多个宏块的元素分组而编码的。文档编号H04N7/50GK101282480SQ200810091178公开日2008年10月8日申请日期2008年4月7日优先权日2007年4月5日发明者区子廉,黄智华申请人:香港科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1