译码单元的局部运动向量推导的方法与相应装置的制作方法

文档序号:7635800阅读:228来源:国知局
专利名称:译码单元的局部运动向量推导的方法与相应装置的制作方法
技术领域
本发明是与视频处理的运动补偿相关,更准确地,本发明是与译码单元(coding unit)的视频译码中执行局部运动向量推导的方法以及执行上述方法的装置有关。
背景技术
运动向量补偿是视频压缩中对视频数据进行编码与解码所使用的技术。通过运动补偿的帮助,当前图像能够以一或多个参考图像的某些部分来描绘,其中上述参考图像可为时间上提前或者延后。典型地,图像可通过运动补偿而由先前所传输/存储的图像来准确地合成,并且可提升压缩效率。随着编码技术的进步,关于新标准的设计被引进以更增进压缩效率。

发明内容
因此,本发明目的之一是提供一种在译码单元的视频译码过程中执行局部运动向量推导的方法,并且提供执行上述方法的相关装置,以提高视频处理的压缩效率。本发明的一个实施方式提供了一种在译码单元的视频译码过程中执行局部运动向量推导的方法,上述方法包含将译码单元分割为多个子译码单元进行处理;对每一子译码单元执行运动向量预测。更具体来说,其中对每一子译码单元执行运动向量预测的步骤包含通过利用至少一其他子译码/译码单元的至少一运动向量,获得特定子译码单元的运动向量;以及通过利用不同于获得特定子译码单元的运动向量所使用的运动向量的至少一运动向量,获得译码单元的另一子译码单元的运动向量。此外,上述方法包含依据特定子译码单元的运动向量,对特定子译码单元执行运动补偿。本发明的另一实施方式提供了一种对译码单元的视频译码过程中执行局部运动向量推导的装置,上述装置包含处理电路,执行上述译码单元的视频译码。处理电路包含 预处理模块与至少一个译码模块。其中上述预处理模块将译码单元分割为多个子译码单元进行处理,并且对每一子译码单元执行运动向量预测,其中预处理模块通过利用至少一其他子译码/译码单元的至少一运动向量,获得特定子译码单元的运动向量,以及依据特定子译码单元的运动向量对特定子译码单元执行运动补偿,其中预处理模块通过利用不同于获得特定子译码单元的运动向量所使用的运动向量的至少一运动向量,获得译码单元中另一子译码单元的运动向量。并且上述至少一译码模块依据预处理模块执行的运动补偿来对译码单元执行视频译码本发明的又一实施方式提供了一种在译码单元的视频译码中执行局部运动向量推导的方法,上述方法包含接收译码单元,其中译码单元包含多个子译码单元;解析译码单元的数据;以及依据预定准则指定译码单元的特定子译码单元的参考运动向量,其中上述参考运动向量是用来供给至少一其他子译码/译码单元参考,并且并非使用上述参考运动向量来进行特定子译码单元的运动向量预测。本发明的优势在于编码器与解码器可适当地执行局部运动向量推导。通过利用本发明的方法与相应装置,运动向量预测操作与运动补偿操作可提高编码效率。


图IA举例说明了依据本发明第一实施方式的在译码单元的视频译码过程中执行局部运动向量推导的装置100的简单示意图。图IB举例说明了本发明的图IA所示的实施方式中的帧间/帧内预测模块110的预测操作。图2为依据本发明实施方式的在译码单元的视频译码过程中执行局部运动向量推导的方法910的流程图。图3-6是依据本发明的图2所示的实施方式的方法910的不同实施方式的相关细节图。
具体实施例方式在说明书及后续的申请专利范围当中使用了某些词汇来指称特定的组件。所属领域中具有通常知识者应可理解,制造商可能会用不同的名词来称呼同样的组件。本说明书及后续的申请专利范围并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及后续的请求项当中所提及的“包含”是为一开放式的用语,故应解释成“包含但不限定于”。另外,“耦接”一词在此是包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或透过其他装置或连接手段间接地电气连接至第二装置。请参考图1A,图IA举例说明了依据本发明第一实施方式的在译码单元的视频译码中执行局部运动向量推导的装置100的简单示意图。装置100包含帧间/帧内预测模块(inter/intra prediction module) 110,计算单元 120,转换以及量化模块(transform and quantization module) 130,j;商译石马电各(entropy coding circuit) 140,反转换以及反量化模块(inversed transform and inversed quantization module) 150,重建电各 (reconstruction circuit) 160,解块滤波器(deblocking filter) 170,巾贞缓冲器(frame buffer) 180。装置100能够对初始信号109执行视频译码,以产生一个携带编码结果的输出信号,例如携带熵译码电路140的输出的输出信号。举例来说,初始信号109可代表具有译码单元数据的输入视频,并且熵译码电路140的输出可为一比特流(bitstream)输出。依据第一实施方式,帧间/帧内预测模块110是用来执行帧间/帧内预测,以产生预测信号119。如图IA所示,计算单元120是用来执行初始信号109与帧间/帧内预测模块110所产生的预测信号119之间的算术计算,例如减法计算。此外,转换与量化模块130、 熵译码电路、反转换以及反量化模块150、重建电路160是用来分别执行转换与量化,熵编码,反转化与反量化以及重建操作。因此,重建电路160产生一个携带重建操作的重建结果的重建信号169。另外,解块滤波器170是用来对重建信号169执行解块操作,以获得一个携带了解块视频数据的解块信号179,以暂时存储在帧缓冲器180中,并且帧间/帧内预测模块110能够通过恢复信号(restored signal) 189自帧缓冲器180中存取解块视频数据。 上述说明仅仅用来举例,而并非为本发明的限制。依据第一实施方式的一些变型,可省略解块滤波器170以及其解块操作,重建信号169所携带的重建结果可暂时存储在帧缓冲器180中,并且帧间/帧内预测模块110能够通过恢复信号189存取上述重建结果。具体来说,至少一部分(例如一部分或者全部)装置100可由硬件电路(hardware circuit)来实现。举例来说,装置100可由针对译码单元执行视频译码的处理电路 (processing circuit)来实现,其中上述处理电路可包含预处理模块(preprocessing module)与至少译码模块(coding module),上述预处理模块包含帧间/帧内预测模块110, 上述译码模块包含计算单元120,转换以及量化模块130,熵译码电路140,反转换以及反量化模块150,重建电路160,解块滤波器170。具体来说,装置100的一或多个组件可由数字信号处理技术来实现。上述说明仅仅用来举例说明,而并非为本发明的限制。依据第一实施方式的一些变型,装置100的至少一部分可通过程序模块(program module)来实现。举例来说,处理电路可为执行多个程序模块的处理器,其中执行第一部分程序模块的处理器可执行上述预处理模块相同或者相似的操作,并且执行第二部分程序模块的处理器可执行上述译码模块的相同或者相似的操作。无论装置100的至少一部分(例如一部分或者全部)是由硬件电路还是程序模块来实现,装置100皆可执行译码单元的视频译码。举例来说,译码单元可为16x16的宏区块 (MBs, macroblocks)。在另外的例子中,译码单元可具有特定的尺寸,其中上述特定尺寸可提前设定,并且不需要与宏区块一致。在处理至少一个图像的译码单元(例如上述译码单元)的过程中,需要预测一或者多个运动向量。依据本发明的实施方式,上述预处理模块能够分割上述译码单元为多个子译码单元(sub-coding unit),例如,上述译码单元的多种分区(例如正方或非正方分区),并且能够针对每一子译码单元执行运动向量预测。更准确地说,预处理模块可利用至少一其他已编码的子译码/译码单元的至少一运动向量来获得多个子译码单元中的特定子译码单元(specific sub-coding unit)的运动向量,并且依据上述特定子译码单元的运动向量来对上述特定子译码单元执行运动补偿。此外,上述译码模块可依据上述预处理模块所执行的运动补偿来对上述译码单元执行视频译码。图IB举例说明了本发明的图IA所示的实施方式中的帧间/帧内预测模块110 的预测操作。在此实施方式中,记号F(tQ-3)、Fac^hF(Vl)、以及F(tQ)可用来代表多个后续帧{F(t)}中的一部分,其中Fatl)为当前帧。当前帧Fatl)可包含多个译码单元 IcuatlM,并且译码单元⑶(、)可包含多个子译码单元{S⑶(、)},其中记号V可代表特定子译码单元的运动向量,例如图IB所示的子译码单元Sraatl)的运动向量。因此,上述预处理模块可利用如上所述的至少一运动向量来获得运动向量V,例如利用当前帧F(tQ) 中的其他译码单元的子译码单元A与B的运动向量vA与Vb以及先前帧Fatl-I)的译码单元⑶(、-1)的子译码单元T的运动向量Vt来获得运动向量V。具体来说,上述其他译码单元(或子译码单元)为已编码的译码单元(或子译码单元)。举例来说,在上述译码单元为区块(bi0Ck)的情况下,译码单元Cuatl-D可配置为译码单元Cuatl)的同位置块 (collocated block)。通常来说,子译码单元S⑶(t0)的运动向量ν可表示如下ν=Σ keK(wk(i)vk);其中指数k在集合K中变化,记号Vk与Wk⑴分别代表其他子译码/译码单元(更具体来说,一些已编码的子译码/译码单元)的运动向量与其相关的加权参数。举例来说, 当变量k等于1时,则仅仅使用一个其他子译码/译码单元的一个运动向量Vk来获得运动向量V,更准确地说,上述加权参数Wk (i)简单地等于1。在其他例子中,当变量k大于1时,上述至少一其他子译码单元/译码单元包含多个其他子译码/译码单元,并且上述至少一运动向量包含多个其他子译码/译码单元(更具体来说,一些已编码的子译码/译码单元) 的多个运动向量lvk},特别地,上述加权参数lwk(i)}的总和等于1。上述操作的细节请参考图2。图2为依据本发明的实施方式的在译码单元的视频译码中执行局部运动向量推导的方法910的流程图。方法910可应用于图IA所示的装置100,特别地,可应用在上述处理电路上。上述方法详述如下在步骤912中,上述预处理模块处理译码单元OTUci)(例如,当前译码单元)为多个子译码单元,例如多个子译码单元{scuaj},并且对多个子译码单元{scuaj}中的每一个执行运动向量预测。举例来说,上述预处理单元可接收包含多个子译码{scuaj}的译码单元⑶(、),并且解析(parse)上述译码单元⑶(、)的数据。特别地,预处理模块利用上述至少一子译码/译码单元的至少一运动向量(例如上述运动向量IvJ)来获得多个子译码单元{s⑶(、)}中的特定子译码单元Sraatl)的运动向量ν。预处理模块可进一步使用至少一与获得特定子译码单元Scuatl)的运动向量所使用的运动向量不同的运动向量来获得译码单元Cuatl)中的另一子译码单元的运动向量。当仅使用一个运动向量来获得另一子译码单元(即,上述提及的译码单元Cuatl)中的另一子译码单元)的运动向量时,获得上述另一子译码单元的运动向量所使用的运动向量与获得特定子译码单元Sraatl)的运动向量所使用的任何运动向量不同。当使用多个运动向量来获得上述另一子译码单元的运动向量时,获得上述另一子译码单元的运动向量所使用的运动向量与获得特定子译码单元 Scuatl)的运动向量所使用的运动向量不完全相同。举例来说,获得上述另一子译码单元的运动向量所使用的运动向量可为第一运动向量集合lva,Vb, V。},而获得上述特定子译码单元的运动向量所使用的运动向量可为第二运动向量集合lva,vb,vd}。上述特定子译码单元与上述另一子译码单元为同一译码单元中的任意两个子译码单元。依据本发明的实施方式,例如图3所示,译码单元⑶(、)可为一当前处理区块,并且子译码单元Sraatl)可为子区块(sub-block) SB,其中图3所示的阴影部分可代表至少一部分已编码区块集合{CB}。参见图3,上述已编码区块集合{CB}可包含已编码左区块CBy 已编码左上区块CBm已编码上区块CBu,以及已编码右上区块CBm。并且运动向量集合{vk} 可包含至少一部分(例如,部分或者全部)已编码区块{CB}的运动向量,例如一或多个已编码区块CBp CBul, CBu与CBuk的运动向量。在步骤914,上述预处理模块依据特定子译码单元S⑶(t0)的运动向量ν对特定子译码单元S⑶(to)进行运动补偿。举例来说,每一译码单元(例如,译码单元⑶Utl))可为一区块,更具体来说,可为包含像素数组的区块,例如扩展宏区块、宏区块、或者一部分宏区块。因此,子译码单元可为子区块。依据本发明的实施方式,如图3所示,上述预处理模块可如上所述般依据运动向量ν对处理中区块进行运动补偿,其中上述运动向量ν可为多个已编码区块{CB}的至少一部分(例如一或多个已编码区块CBlWBpCBu以及CBrai)的运动向量的加权总和。在本实施方式中,上述多个已编码区块{CB}可为运动补偿区块。图4是依据本发明的图2所示的实施方式的方法910的相关细节图。依据本实施方式,上述预处理模块利用多个运动向量的加权总和(例如Σ keK(wk(i)vk))作为上述特定子译码单元的运动向量V。为了获得更好的补偿效果,已编码区块CBpCB皿、CBu以及08^可与图3所示相同。举例来说,上述多个其他子译码/译码单元可包含已编码区块CBp CBul, CBu以及CBuk中的一或多个,并且上述多个运动向量可包含已编码区块CBp CBul, CBu以及 CBue所对应的运动向量^、vUL, Vu以及νυκ中的一或多个。更具体来说,对于上述图4所示的每一子区块,例如第i个子区块bi;可依据已编码区块{CB}的多个运动向量来获得子区块、的运动向量v(i),或称为运动向量预测子 (motion vector predictor),如下式所不v(i) =Σ keK(wk(i)vk);其中参数k在集合K中变化,并且记号Vk与Wk⑴分别代表第k个参考运动向量以及相关的加权参数。举例来说,h e Bm,并且记号Bm代表处理中区块的子区块集合。如图4所示,运动向量集合{vk}中的运动向量vk在已编码区块CBu中,说明在此情况下,运动向量集合Iv1J包含已编码区块CBu的运动向量集合{%}。在实施方式中,例如图4所示的实施方式的变型中,上述预处理模块可利用多个运动向量{vk}的最佳维纳滤波(optimum Wiener filtering)来决定运动向量集合 IvJ中的每一个对应的加权参数的集合lwk(i)},以产生上述加权总和(在此变型中即为 Σ keK(wk(i)vk))0举例来说,上述预处理模块可利用最佳维纳滤波来依据下式获得加权参数集合Iwk (i)}(w0*, . . . , wK*) = arg min v*(i)- Σ keK(wk(i)vk) | ;上述算式表示加权参数集合Iwk (i)}可通过搜寻在上述预处理模块所执行的最佳维纳滤波中V*(i)- Σ keK(wk(i)vk) I的最小值所对应集合(W0*, · · ·,Wk*)。上述说明仅仅用来举例,而并非为本发明的限制。依据本发明的图4所示的实施方式的变型,上述预处理模块可依据至少一临近(neighboring)译码单元的内容来决定运动向量集合{vk}中的每一个所分别对应的加权参数的集合Iwk⑴},例如依据已编码区块CBpCB皿、CBu与CBra中的一或多个的内容(content)来产生加权总和(此变型中为Σ ke K(wk(i) vk)) 0依据本发明的图4所示的实施方式的另一变型,上述预处理模块可依据多个其他子译码/译码单元的内容来决定运动向量集合Iv1J中的每一个所分别对应的加权参数的集合lwk(i)},以产生加权总和(此变型中为Σ keK(wk(i)vk))0在其他实施方式中,例如本发明的图4所示的实施方式的一些变型中,上述预处理模块可利用离线训练(offline training)或者线上训练(online training)来决定上述运动向量集合lvk}中的每一个所对应加权参数的集合lwk(i)},以产生加权总和(此变型中即为Σ keK(wk(i)vk))。依据本发明的图4所示的实施方式的另一些变型中,上述预处理模块可利用多个运动向量lvk}的平均值为上述特定子译码单元的运动向量v,这也代表了上述加权参数中集合lwk(i)}中的任意两个相等。更确切地说,在此变型中,上述加权参数Iwk (i)}中每一个等于l/n(K),其中n(K)代表集合K中的变量k的可能值。图5A-5D是依据本发明的图2所示的方法910的不同实施方式的相关细节图。在这些实施方式中,在k的可能值的数量大于1的情况下,上述至少一其他子译码单元/译码单元依然包含多个其他子译码/译码单元,并且上述至少一运动向量依然包含上述多个其他子译码/译码单元的运动向量Ivk}。然而,上述预处理模块并不需要利用如上所述的加权总和(例如Σ keK(wk(i)vk))来作为特定子译码单元的运动向量。依据上述实施方式,上述预处理模块可预处理多个运动向量lvk}来获得特定子译码单元的运动向量ν。举例来说,上述预处理模块可计算多个运动向量的中值(median),滤波多个运动向量,计算上述多个运动向量的加权总和,或者执行计算多个运动向量的中值,滤波多个运动向量,计算上述多个运动向量的加权总和的任意组合。具体来说,运动向量集合{vk}可包含至少一子译码单元的至少一运动向量。举例来说,运动向量集合ivk}可包含同一译码单元Cuatl)中的至少一其他子译码单元(即为处理中的子译码单元Sraatl)之外的子译码单元)的至少一运动向量,例如图5D所示的子译码单元A、B、C以及D的运动向量vA、vB、Vc以及vD中的一或多个。在另一举例说明中, 运动向量集合Iv1J可包含其他译码单元中的至少一子译码单元的至少一运动向量,例如图 5A-5C所示的子译码单元A、B、C以及D的运动向量vA、vB、vc以及vD中的一或多个。在另一举例说明中,运动向量集合{vk}可包含至少一自时序(temporal direction)所获得的运动向量,例如自时序上前一帧所包含的子译码单元获得。具体来说,当译码单元为区块时, 图5A-5D所示的子译码单元A、B、C以及D可视为子区块。依据图5A所示的实施方式,子译码单元A、B、C以及D分别属于已编码区块CBp CBuXBue以及CBp此外,已编码区块CBpCB1^CBuk以及CB皿分别为当前处理区块的已编码左区块,已编码上区块,已编码右上区块,以及已编码左上区块。更具体来说,针对图5A所示的第i个子区块h来说,在已编码左区块CB^中选择子译码单元A,在已编码上区块CBu 中选择子译码单元B,在已编码右上区块CBuk中选择子译码单元C,在已编码左上区块CB皿中选择子译码单元D。此外,上述预处理模块预处理图5A所示的子译码单元A、B以及C的运动向量vA、vB以及来计算特定子译码单元(例如第i个子区块b》的运动向量ν。本实施方式中的运动向量ν可通过计算运动向量A、vB以及的中值(median)来获得,表示如下ν = Median (vA, vB, vc);其中记号Median代表括号中的向量/值的中值。如果无法获得运动向量Vc,可用运动向量vD代替运动向量以计算运动向量ν。在其他实施方式中,可向子译码单元A、B 以及C的运动向量VA、Vb以及V。指定不同的加权参数。举例来说,加权参数可依据特定子译码单元(例如bi)与子译码单元A、B以及C之间的距离来决定。较短的距离可对应较大的加权参数。在另一实施方式中,预处理模块可过滤预先决定的已编码子译码单元的运动向量来获得运动向量V。上述预处理模块可决定上述特定子译码单元(例如第i个子译码区块b》的尺寸为译码单元的视频译码的变换尺寸(transform size),并且用来获得特定子译码单元(例如第i个子译码区块h)的运动向量ν的子译码单元的尺寸可与变换尺寸相同(例如,4乘 4,8乘8,16乘16等等)。依据图5B所示的实施方式,子译码单元A属于已编码左区块CBy并且子译码单元 B、C以及D属于已编码上区块CB 。更具体来说,针对图5B所示的第i个子区块h来说, 在已编码左区块CB^中选择子译码单元A,在已编码上区块CBu中选择子译码单元B。此外, 针对子译码单元B而言,子译码单元C为已编码上区块CBu中右临近子译码单元(如果存在),并且子译码单元D为已编码上区块CBu中左临近子译码单元(如果存在)。因此,针对图5B所示的第i个子区块、来说,在已编码上区块CBu中选择三个子译码单元B、C以及 D。在其他实施方式中,当预处理模块处理当前区块的第一列(column)子译码单元时,子译码单元D可属于已编码左上区块CB1^子译码单元C可属于已编码右上区块CBm。此外,上述预处理模块可利用图5B所示的子译码单元A、B、C以及D的运动向量vA、vB、vc以及vD中的一或多个来计算运动向量ν。举例来说,计算上述预先决定的四个子译码单元的运动向量的中值,来作为特定子译码单元(例如第i个子区块b》的运动向量V。表示如下ν = Median (vA, vB,vc,vD).上述预处理模块可决定上述特定子译码单元的尺寸为译码单元的视频译码的变换尺寸,并且图5B所示的子译码单元的尺寸可与变换尺寸相同(例如,4乘4,8乘8,16乘 16等等)。依据其他实施方式,例如图5B所示的实施方式以及一些变型,当利用中值函数 Median (·)来计算运动向量ν时所使用的运动向量(例如图5Β所示的实施方式中的运动向量vA、vB、vc以及vD)数目为偶数时,中值函数的定义可变化。利用中值函数来计算运动向量ν所使用的运动向量存储结果可依照顺序写成如下形式Vl,v2,...,v2N。即,假设vn与 v(n+1)代表所存储结果Vl,V2, ... , V2n中的两个临近运动向量,则运动向量Vn小于运动向量 v(n+1)(即IvnI < |v(n+1)l)。在一些实施方式中,中值函数Median(·)可定义为vN、V(N+1)或 (vn+V(n+1))/2。举例来说,上述多个运动向量的数目为4(即2N = 4),并且上述多个运动向量可写为力^、%与、则中值可为(v2+v3)/2,即代表了运动向量ν等于(V2+V3)/20在其他实施方式中,上述多个运动向量的数目等于4,并且上述多个运动向量可写为V1、v2、V3与 V4,并且中值可为V2,即代表了运动向量ν等于v2。在另一实施方式中,上述多个运动向量的数目等于4,并且上述多个运动向量可写为Vl、v2、V3与v4,并且中值可为v3,即代表了运动向量ν等于v3。 依据图5C所示的实施方式,子译码单元A属于已编码左区块CBy子译码单元B以及C属于已编码上区块CBu,子译码单元D属于已编码左上区块CBp更具体来说,针对图 5C所示的第i个子区块h来说,在已编码左区块CB^中选择子译码单元A,在已编码上区块 CBu中选择子译码单元B,在已编码左上区块CBul中选择子译码单元D。此外,针对子译码单元B而言,子译码单元C为已编码上区块CBu中右临近子译码单元(如果存在)。此外,上述预处理模块可利用图5C所示的子译码单元A、B、C以及D的运动向量vA、vB、vc以及vD中的一或多个来计算运动向量ν。举例来说,计算运动向量vA、vB、ve以及vD的中值,来作为特定子译码单元(例如第i个子区块h)的运动向量V,或者如果无法获得运动向量\,则计算运动向量vA、vB以及vD的中值,来作为特定子译码单元(例如第i个子区块b》的运动向量v。表示如下ν = Median (vA, vB, vc).上述预处理模块可决定上述特定子译码单元的尺寸为译码单元的视频译码的变换尺寸,并且图5C所示的子译码单元的尺寸可与变换尺寸相同(例如,4乘4,8乘8,16乘 16等等)。依据图5B-5C所示的实施方式的变型,上述预处理模块可利用或多或少的子译码单元的运动向量来获得运动向量V。属于一或多个子译码单元的运动向量的多种组合可用来推导特定子译码单元的运动向量V。其精神在于特定子译码单元的运动向量是从一组运动向量来局部导出,并且该组运动向量可与获得当前处理区块中的另一子译码单元的运动向量所使用的一组运动向量不同,依据图5D所示的实施方式,上述预处理模块可利用步骤912中提及的多个子译码
12单元的一部分运动向量来获得相同译码单元中另一子译码单元的运动向量。参见图5D,子译码单元A、B、C以及D属于当前处理区块,其中子译码单元A、B、C以及D为步骤912中提及的多个子译码单元的一部分。更具体来说,针对图5D所示的第i个子区块、来说,子译码单元A为左临近子译码单元,子译码单元B为上临近子译码单元,子译码单元C为右上临近子译码单元,子译码单元D为左上临近子译码单元。在本实施方式中,上述预处理模块可利用图5D所示的子译码单元A、B以及C的运动向量vA、vB以及ν。的中值来作为特定子译码单元(例如第i个子区块h)的运动向量V。表示如下ν = Median (vA, vB, vc).如果无法获得子译码单元C,上述预处理模块则利用图5D所示的子译码单元A、B 以及D的运动向量VA、Vb以及Vd的中值,来作为特定子译码单元的运动向量V。上述预处理模块可决定上述特定子译码单元的尺寸为译码单元的视频译码的变换尺寸,并且图5D所示的子译码单元的尺寸可与变换尺寸相同(例如,4乘4,8乘8,16乘 16等等)。依据另一实施方式,例如图5D所示的实施方式的变型,上述预处理模块可利用图 5D所示的子译码单元A、B、C以及D的运动向量vA、vB、vc以及vD的中值来作为特定子译码单元(例如第i个子区块h)的运动向量V,并且表示如下ν = Median (vA, vB,vc,vD).本实施方式的细节在此不再赘述。依据本发明的一些实施方式以及其变型,当利用中值函数Median ( ·)来计算运动向量ν时所使用的运动向量数目为偶数时,中值函数的定义可变化。相似地,利用中值函数Mediant)来计算运动向量ν所使用的运动向量存储
结果可依照顺序写成如下形式Vl、V2.....v2N,中值函数Median ( ·)可定义为vN、v(N+1)或
(vn+V(n+1))/2。相似的细节在此不再赘述。依据图5A-5D所示的实施方式的变型,上述预处理模块可在不同的模式下(例如模式1、2、3与4)选择性操作,其中模式1、2、3与4的操作分别与图5A-5D所示的实施方式相同或的相似。举例来说,在模式1中,上述预处理模块可依据图5A所示的实施方式的相同方法来操作,而在其他模式中,例如模式2、3与4中,上述预处理模块可分别依据图5B-5D 所示的实施方式的相同方法来操作。依据图5A-5D所示的任意实施方式的变型,在步骤912中,上述预处理模块可依据至少一临近译码单元的至少一模式来分割译码单元为多个子译码单元,例如依据已译码单元CBpCBuWBuk以及CBul中的一或多个的模式1、2、3以及/或者4来分割译码单元为多个子译码单元。依据第5A-5D图所示的任意实施方式的另一变型,在步骤912中,上述预处理模块可依据至少一个临近译码单元的内容来分割译码单元为多个子译码单元,例如依据已译码单元CBp CBu, CBue以及CB皿中一或多个的内容来分割译码单元为多个子译码单元。依据上述任意实施方式的变型,无论上述预处理单元是否利用加权总和(例如 Σ keK(wk(i)vk))或者利用中值(例如 Median (vA,vB, vc)或 Median (vA,vB, vc, vD))作为上述特定子译码单元的运动向量V,上述提及的至少一其他子译码/译码单元为已编码的子译码/译码单元。举例来说,在一部分实施方式变型中,上述提及的至少一其他子译码/译码单元包含至少一空间(spatially)已编码的子译码/译码单元,以及/或者至少一时间 (temporally)已编码的子译码/译码单元。在另一实施方式中,上述提及的至少一其他子译码单元可为运动补偿子译码/译码单元。图6是本发明的图2所示的实施方式的方法910所涉及的细节图。依据本实施方式,上述预处理模块依然分割译码单元Cuatl)(例如当前处理译码单元)为多个子译码单元(例如子译码单元{SCU(、)}),并且在步骤912中对每一子译码单元{scuaj}执行运动向量预测。然而,当上述预处理模块利用多个运动向量,例如如上所述的运动向量lvk},来获得特定子译码单元Scuatl)的运动向量ν时,对每一子译码单元需指定一个运动向量(例如一个参考运动向量),从而可提供给其他子译码/译码单元后续参考。在编码器与解码器相互匹配的条件下,上述指定运动向量的准则可任意运用。在一些制定运动向量的预定规则中,包含H. 264中定义的运动向量预测子,H. 264中定义的运动向量预测具有运动向量缩放(scaling),自左区块填充(padding),自上区块填充以及自左上区块填充。依据一种自左区块与上区块填充的实施方式,上述预处理模块获得上述特定子译码单元SCUaci)的运动向量v,并且利用另一译码单元(当前处理译码单元Cuatl)之外的译码单元)的子译码单元的运动向量来指定运动向量,举例来说,利用译码单元Cuatl)的临近译码单元CU.aj 的一个已编码的子译码单元。更具体来说,对于特定子译码单元Scuatl)而言,其他译码单元(例如译码单元CUawUci))的一个子译码单元为上述其他译码单元中最接近的子译码单元,并且上述预处理模块可利用其他译码单元(例如译码单元CUawUci))中的最接近子译码单元的运动向量来作为特定子译码单元SCUaci)的指定的运动向量。上述指定一个译码单元或者一个子译码单元的运动向量主要用来作为其他译码单元或者子译码单元的一个参考运动向量,而并非一定用来运动预测。如图6所示,对于译码单元CUatl)(例如当前处理区块)而言,本实施方式中的临近译码单元{CU.aj}可包含至少一部分的已编码左区块CBp已编码上区块CBu、已编码右上区块CBra、以及已编码左上区块CBm其中上述已编码区块CBp CBu, CBue以及CBul中的子译码单元可视为子区块。为了获得更好的补偿效果,已编码左区块CB^中的最右列的子译码单元的运动向量yi、y2、y3、y4、y5、y6、y7以及y8分别标示在最右列的子译码单元中。相似地,已编码上区块CBu中的最低行的子译码单元的运动向量乂”&“卩乂^乂卩乂^乂,以及X8 分别标示在最低行的子译码单元中。此外,已编码右上区块CBuk的右底子译码单元的运动向量d以及已编码左上区块CB皿的左底子译码单元的运动向量X9分别标示其中。依据本实施方式,上述预处理模块接收包含多个子译码单元{S⑶(、)}的译码单元Cuatl), 并且解析译码单元Cuatl)的数据,以及依据预先决定准则指定多个子译码单元 Iscua0) ι中的特定子译码单元Scuatl)的参考运动向量,其中上述参考运动量是用来被至少一其他子译码单元参考,而并非用于特定子译码单元Scuatl)的运动向量预测。利用参考运动向量,上述预处理模块可快速操作,而不需要等待特定子译码单元Scuatl)的实际运动向量的复杂的计算。具体来说,上述预处理模块可指定上述参考运动向量为临近译码单元的至少一部分的运动向量。更确切地说,上述临近译码单元的至少一部分可为上述临近译码单元中的最接近特定子译码单元的一部分。举例来说,假设上述特定子译码单元Sraatl)代表当前处理区块中某一行(row) 子译码区块的第j个子译码区块,其中j在1至8之间变化。在第一指定准则(例如垂直指定)中,上述预处理模块可利用已编码上区块CBu中的最接近子译码单元的运动向量Xj 来作为特定子译码单元SCUaci)的参考运动向量。
在另一实施方式中,假设上述特定子译码单元Sraatl)代表当前处理区块中某一列子译码区块的第j个子译码区块,其中j在1至8之间变化。在第二指定准则(例如水平指定)中,上述预处理模块可利用已编码左区块CB^中的最接近子译码单元的运动向量 yj来作为特定子译码单元SCuatl)的参考运动向量。
在另一实施方式中,可选择混合指定(hybrid designation)准则来决定上述参考运动向量。假设上述特定子译码单元SCUaci)代表当前处理区块中第4/8行子译码区块的第j个子译码区块,其中j在1至8之间变化。参见图6中箭头所指向的第4/8行子译码区块的第j个子译码区块,上述预处理模块可利用已编码上区块CBu中的最接近子译码单元的运动向量Xj来作为特定子译码单元Sraatl)的参考运动向量。此外,假设上述特定子译码单元SCU (t0)代表当前处理区块中第4/8列子译码区块的第j个子译码区块,其中j在 1至7之间变化。参见图6中箭头所指向的第4/8列子译码区块的第j个子译码区块,上述预处理模块可利用已编码左区块CB^中的最接近子译码单元的运动向量y」来作为特定子译码单元SCUaci)的参考运动向量。在此实施方式中,译码单元Cuatl)中的剩余子译码单元的参考运动向量可利用上述任意实施方式的相同或者相似方法来获得。在此不再赘述。需注意的是,在上述实施方式的一些变型中,上述预处理模块可利用旗标(flag) 来控制上述操作,更准确地说,可利用明确地发出一个旗标来控制上述操作。举例来说,依据一或多个实施方式所实施的编码器可发出指示上述指定准则为“垂直指定”还是“水平指定”(甚至为“混合指定”)的旗标,从而通过接收携带上述旗标的比特流,相应地解码器可了解所应用的指定准则。此外,在一些实施方式中,上述多种运动向量指定方法(例如“垂直指定”、“水平指定”以及“混合指定”)可用来执行局部运动向量推导。举例来说,当应用“垂直指定”时,每一行子译码单元的运动向量可由已编码上译码单元CBu的相应位置(例如已编码上译码单元CBu中的最接近子译码单元)来分别获得。本发明的优势在于编码器与解码器可适当地执行局部运动向量推导,更准确地说,本发明可通过预先决定准则自多个子译码单元的多个运动向量中选择一个运动向量来获得较好的压缩性能。通过利用本发明的方法与相应装置,运动向量预测操作与运动补偿操作可不引入相关的困扰(例如较低的编码效率)。以上所述仅为本发明的较佳实施方式,凡依本发明权利要求所做的均等变化与修饰,都应属本发明的涵盖范围。
权利要求
1.一种在译码单元的视频译码中执行局部运动向量推导的方法,上述方法包含将上述译码单元分割为多个子译码单元进行处理;对每一上述子译码单元执行运动向量预测,其中上述对每一上述子译码单元执行运动向量预测的步骤包含通过利用至少一其他子译码/译码单元的至少一运动向量,获得特定子译码单元的一运动向量;以及通过利用不同于获得上述特定子译码单元的运动向量所使用的运动向量的至少一运动向量,获得上述译码单元的另一子译码单元的运动向量;以及依据上述特定子译码单元的上述运动向量,对上述特定子译码单元执行运动补偿。
2.根据权利要求1所述的方法,其特征在于,上述至少一其他子译码/译码单元包含多个其他子译码/译码单元,并且上述至少一其他子译码/译码单元的上述至少一运动向量包含上述多个其他子译码/译码单元的多个运动向量;并且上述对每一子译码单元执行运动向量预测的步骤更包含计算上述多个运动向量的加权总和,以获得上述特定子译码单元的上述运动向量。
3.根据权利要求2所述的方法,其特征在于,上述对每一子译码单元执行运动向量预测的步骤更包含对上述多个运动向量执行最佳维纳滤波,以决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
4.根据权利要求2所述的方法,其特征在于,上述对每一子译码单元执行运动向量预测的步骤更包含依据至少一临近译码单元的内容来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
5.根据权利要求2所述的方法,其特征在于,上述对每一子译码单元执行运动向量预测的步骤更包含依据上述多个其他子译码/译码单元的内容来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
6.根据权利要求2所述的方法,其特征在于,上述对每一子译码单元执行运动向量预测的步骤更包含利用离线训练来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总禾口。
7.根据权利要求2所述的方法,其特征在于,上述对每一子译码单元执行运动向量预测的步骤更包含利用即时线上训练来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
8.根据权利要求1所述的方法,其特征在于,上述至少一其他子译码/译码单元包含多个其他子译码/译码单元,并且上述至少一其他子译码/译码单元的上述至少一运动向量包含上述多个其他子译码/译码单元的多个运动向量;并且上述对每一子译码单元执行运动向量预测的步骤更包含计算上述多个运动向量的平均值,以获得上述特定子译码单元的运动向量。
9.根据权利要求1所述的方法,其特征在于,上述至少一其他子译码/译码单元包含多个其他子译码/译码单元,并且上述至少一其他子译码/译码单元的上述至少一运动向量包含上述多个其他子译码/译码单元的多个运动向量;并且上述对每一子译码单元执行运动向量预测的步骤更包含计算上述多个运动向量的中值,以获得上述特定子译码单元的运动向量。
10.根据权利要求1所述的方法,其特征在于,上述不同于获得上述特定子译码单元的上述运动向量所使用的运动向量的至少一运动向量包含上述多个子译码单元中的一部分子译码单元的多个运动向量,并且上述对每一子译码单元执行运动向量预测的步骤更包含计算上述多个运动向量的中值,以获得上述另一子译码单元的运动向量。
11.根据权利要求1所述的方法,其特征在于,上述将该译码单元处理为多个子译码单元的步骤更包含决定上述特定子译码单元的尺寸,作为上述译码单元的视频译码的变换尺寸。
12.根据权利要求1所述的方法,其特征在于,上述将该译码单元处理为多个子译码单元的步骤更包含依据至少一临近译码单元的至少一模式,分割上述译码单元为上述多个子译码单元。
13.根据权利要求1所述的方法,其特征在于,上述将该译码单元处理为多个子译码单元的步骤更包含依据至少一临近译码单元的内容,分割上述译码单元为上述多个子译码单元。
14.根据权利要求1所述的方法,其特征在于,上述至少一其他子译码/译码单元中的每一个是已编码的子译码/译码单元。
15.根据权利要求14所述的方法,其特征在于,上述至少一其他子译码/译码单元包含至少一空间编码的子译码/译码单元以及/或者至少一时间编码的子译码/译码单元。
16.根据权利要求14所述的方法,其特征在于,上述至少一其他子译码/译码单元中的每一个是运动补偿子译码/译码单元。
17.一种对译码单元的视频译码过程中执行局部运动向量推导的装置,上述装置包含处理电路,执行上述译码单元的视频译码,其中上述处理电路包含预处理模块,将上述译码单元分割为多个子译码单元进行处理,并且对每一上述子译码单元执行运动向量预测,其中上述预处理模块通过利用至少一其他子译码/译码单元的至少一运动向量,获得特定子译码单元的运动向量,以及依据上述特定子译码单元的上述运动向量对上述特定子译码单元执行运动补偿,其中上述预处理模块通过利用不同于获得上述特定子译码单元的运动向量所使用的运动向量的至少一运动向量,获得上述译码单元中另一子译码单元的运动向量;以及至少译码模块,依据上述预处理模块执行的上述运动补偿来对上述译码单元执行视频译码。
18.根据权利要求17所述的装置,其特征在于,上述至少其他子译码/译码单元包含多个其他子译码/译码单元,并且上述至少一其他子译码/译码单元的上述至少一运动向量包含上述多个其他子译码/译码单元的多个运动向量;并且上述预处理模块计算上述多个运动向量的加权总和,以获得上述特定子译码单元的上述运动向量。
19.根据权利要求18所述的装置,其特征在于,上述预处理模块对上述多个运动向量执行最佳维纳滤波,以决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
20.根据权利要求18所述的装置,其特征在于,上述预处理模块依据至少一临近译码单元的内容来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
21.根据权利要求18所述的装置,其特征在于,上述预处理模块依据上述多个其他子译码/译码单元的内容来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
22.根据权利要求18所述的装置,其特征在于,上述预处理模块利用离线训练来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
23.根据权利要求18所述的装置,其特征在于,上述预处理模块利用线上训练来决定上述多个运动向量所分别对应的多个加权参数,以获得上述加权总和。
24.根据权利要求17所述的装置,其特征在于,上述至少一其他子译码/译码单元包含多个其他子译码/译码单元,并且上述至少一其他子译码/译码单元的上述至少一运动向量包含上述多个其他子译码/译码单元的多个运动向量;并且上述预处理模块计算上述多个运动向量的平均值,以获得上述特定子译码单元的上述运动向量。
25.根据权利要求17所述的装置,其特征在于,上述至少一其他子译码/译码单元包含多个其他子译码/译码单元,并且上述至少一其他子译码/译码单元的上述至少一运动向量包含上述多个其他子译码/译码单元的多个运动向量;并且上述预处理模块计算上述多个运动向量的中值,以获得上述特定子译码单元的上述运动向量。
26.根据权利要求17所述的装置,其特征在于,上述不同于获得上述特定子译码单元的上述运动向量所使用的运动向量的至少一运动向量包含上述多个子译码单元中的一部分子译码单元的多个运动向量,并且上述预处理模块计算上述多个运动向量的中值,以获得上述另一子译码单元的运动向量。
27.根据权利要求17所述的装置,其特征在于,上述预处理模块决定上述特定子译码单元的尺寸,作为上述译码单元的视频译码的变换尺寸。
28.根据权利要求17所述的装置,其特征在于,上述预处理模块依据至少一临近译码单元的至少一模式,分割上述译码单元为上述多个子译码单元。
29.根据权利要求17所述的装置,其特征在于,上述预处理模块依据至少一临近译码单元的内容,分割上述译码单元为上述多个子译码单元。
30.根据权利要求17所述的装置,其特征在于,上述至少一其他子译码/译码单元中的每一个是已编码的子译码/译码单元。
31.根据权利要求30所述的装置,其特征在于,上述至少一其他子译码/译码单元包含至少一空间编码的子译码/译码单元以及/或者至少一时间编码的子译码/译码单元。
32.根据权利要求30所述的装置,其特征在于,上述至少一其他子译码/译码单元中的每一个是运动补偿子译码/译码单元。
33.一种在译码单元的视频译码过程中执行局部运动向量推导的方法,上述方法包含接收上述译码单元,其中上述译码单元包含多个子译码单元; 解析上述译码单元的数据;以及依据预定准则指定上述译码单元的特定子译码单元的参考运动向量,其中上述参考运动向量是用来供给至少一其他子译码/译码单元参考,并且并非使用上述参考运动向量来进行上述特定子译码单元的运动向量预测。
34.根据权利要求33的方法,其特征在于,上述依据预定准则指定上述译码单元的特定子译码单元的参考运动向量的步骤更包含指定上述参考运动向量为临近译码单元的至少一部分的运动向量。
35.根据权利要求34的方法,其特征在于,上述临近译码单元的上述至少一部分是在上述临近译码单元中最接近上述特定子译码单元的部分。
36.根据权利要求33的方法,其特征在于,上述依据预定准则指定上述译码单元的特定子译码单元的参考运动向量的步骤更包含指定上述参考运动向量为定义在H. 264标准中的运动向量预测子。
全文摘要
本发明揭露一种在译码单元的视频译码过程中执行局部运动向量推导的方法与相应的装置,上述方法包含将译码单元分割为多个子译码单元进行处理,并且对每一子译码单元执行运动向量预测。其中对每一子译码单元执行运动向量预测的步骤包含通过利用至少一其他子译码/译码单元的至少一运动向量,获得特定子译码单元的运动向量,从而上述方法依据特定子译码单元的运动向量,对特定子译码单元执行运动补偿。本发明的优势在于编码器与解码器可适当地执行局部运动向量推导。通过利用本发明的方法与相应装置,运动向量预测操作与运动补偿操作可提高编码效率。
文档编号H04N7/32GK102223542SQ20111008938
公开日2011年10月19日 申请日期2011年4月11日 优先权日2010年4月14日
发明者林建良, 蔡玉宝, 雷少民 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1