利用基于运动的分段和归并的视频编码器和解码器 【发明领域】
本发明总的来说涉及视频压缩。更准确的说,本发明涉及一种对视频数据作运动补偿编码的编码器和一种对视频数据作运动补偿编码的方法。本发明还涉及对这样编码的视频数据进行解码的一种解码器。
发明场景
运动补偿预测是多数视频编码方案的关键元素。图1是一编码器的示意图,它利用运动补偿对视频序列进行压缩。该编码器中的必要元素是运动补偿预测模块1,运动估算器2和运动字场编码器3。运动补偿视频编码器的操作原理是对预测误差En(x,y)进行压缩,该误差是输入要编码的帧In(x,y)即所谓当前帧,和预测帧n(x,y)之间的差,其中:
En(x,y)=In(x,y)-n(x,y) (1)
预测帧n(x,y)由运动补偿预测模块1构造,它是利用前面的象素值构造,或利用其它一些已编码的帧所谓参考帧来构造,运动向量描述了当前帧和参考帧之间象素的估算移动。运动向量在运动字段估算器2中计算,所产生的运动向量字场在送往预测模块1之前以某种方式进行编码。因而预测帧为:I^n(x,y)=I~n-1[x+Δx(x,y),y+Δy(x,y)]-----(2)]]>
我们把[Δx(x,y),Δy(x,y)]这对数称为当前帧中位置(x,y)处象素的运动向量,其中Δx(x,y)和Δy(x,y)是该象素在水平和垂直方向的位移。当前帧In(x,y)中所有象素的运动向量地集合称为运动向量字场。编码过的向量字场也作为运动信息传送给解码器。
在图2所示的解码器中,只要在参考帧中查找到象素的预测值n(x,y),当前帧In(x,y)的象素就可重建。运动补偿预测模块21利用接收到的运动信息和参考帧(在该图中参考帧就是当前帧)产生预测帧。在预测误差解码器22中,一个解码过的预测误差帧En(x,y)和预测帧相加,所得结果就是原始的当前帧In。
运动补偿(MC)预测编码器总的目标就是要最小化需传送给解码器的信息量。它应该能最小化检测到的预测误差量,例如En(x,y)的能量,和最小化表示运动向量字场所需的信息量。
文献N.Nguen,E.Dubois,“Representation of motioninformation for image coding”.Proc.Picture Coding Symposium’90,Cambridge,Massachusetts,March 26-18,1990,pages 841-845,给出了运动字场编码技术的一个综述。
作为显然的规则,预测误差的减少需要一个要更精细复杂的运动字场,即在编码中要花费更多的比特位。因此视频编码的总目标就是编码时尽可能对运动向量字场作压缩,同时保持尽可能低的预测误差检测量。
由于一帧中含大量的象素,传送每个象素的运动向量的做法是低效率的。取而代之的是,在大多数编码方案中当前帧被分为如图3中所示的图象段,以便段中的所有运动向量能用少数几个参数来描述。图象段可以是矩形块。例如16×16的象素块可用在符合国际标准ISO/IEC MPEG-1或ITU-T H.261的编码解码器上,或者它们可包含完全不规则形状的区域,这些区域例如是由分段算法得到的。实际中的段至少包括数十个的象素。
图1的运动字场估算模块1计算一个给定段中所有象素的运动向量,最小化了该段中的一些预测误差检测量,例如平方预测误差。运动字场估算技术在运动字场模型中和在最小化预测误差的一些选择检测量的算法中是不同的。
为了压缩表示段中象素的运动向量,它们的值需要用一含几个参数的函数来描述。这样的函数称为运动向量字场模型。一组已知的模型是线性运动模型,其中的运动向量近似等于运动字场基本函数的线性组合。在这些模型中图形段的运动向量通常可用下面的公式来描述:Δx(x,y)=Σi=1Ncifi(x,y)]]> (3)Δy(x,y)=Σi=N+1N+Mcifi(x,y)]]>
其中参数ci称为运动系数,它将传送给解码器。函数fi(x,y)称为运动字场基本函数,该函数不论对编码器还是解码器都有一已知的固定形式。
利用上述公式的线性运动模型时,问题是怎样以一种计算上的简单方式来最小化传送给解码器的运动系数ci的数目,同时保持某些检测量尽可能低的失真,例如预测误差En(x,y)的选中检测量。
需要传送给解码器的运动系数的总数取决于图象的段数和每段中运动系数的数目。因此,至少存在两种方式来减少运动系数的总数。
第一种方式是减少段数,通过组合(归并)那些可以用相同的运动向量字场模型来预测而不会引起预测误差较大增加的段。帧的段数是可以减少的,因为通常相邻的段可用相同的运动系数集进行很好的预测。组合这些段的过程称为运动协助归并。图3表示一帧被分为许多段。现有的运动系数编码技术包括好几种运动协助归并技术。所有段的运动向量都被估算出来之后,执行运动协助归并。这样做时要考虑每一对相邻段Si和Sj的运动系数Ci和Cj。Si和Sj的组合区域表示为Sij。如果区域Sij可用一运动系数集Cij来预测,并且和单独对Si和Sj进行预测的结果相比,没有引起预测误差过度的增加,那么Si和Sj就可以归并。这些运动协助归并方法的本质区别在于如何找到一个单独的运动系数集cij,使得用该系数集能对组合在一起的段进行良好的预测。
一种已知的方法是完全无遗漏运动估算归并。这种方法“从乱涂写”中估算出每对相邻段Si和Sj的新运动参数集Cij。如果Sij的预测误差没有过度增加,那么段Si和Sj就进行归并。尽管这种方法可以很好地选择出那些能归并的段,但它是不可行的,因为通常它会增加编码器好几个数量级的复杂度。
另一种已知的方法是通过运动字场扩展的归并。这种方法尝试区域Sij是否可以用运动参数Ci或Cj中的一个进行预测,而不会引起预测误差的过度增加。该方法的特征是运算复杂度很低,因为它不需要进行任何新的运动估算。可是,它通常不能归并较多的段,因为运动补偿中为一个段计算的系数很少也能很好地对相邻段进行预测。
还有一种已知的方法是通过运动字场适配的归并。在这种方法中运动系数Cij由近似方法计算得到。这样做是通过对每段中的几个运动向量赋值。段Si和Sj中的一些运动向量已在图3中画出。段Sij中运动字场的确定,是利用一些已知的适配方法并通过这些向量来适配共同的运动向量字场。该方法的缺点是由适配得到的运动字场不够精确,经常会导致让人无法接受的预测误差增加。
用不同模型执行运动估算并从中选出最合适模型的方法在下面的文献中被提到:H.Nicolas and C.Labit,“Region-based motionestimation using deterministic relaxation schemes for imagesequence coding,”Proc.1994 International Conference onAcoustics,Speech and Signal Processing,pp.Ⅲ265-268和P.Cicconi and H.Nicolas,“Efficient region-based motionestimation and symmetry oriented segmentation for image sequencecoding,”IEEE Tran.On Circuits and systems for Video Technology,Vol.4 No.3,June 1994,pp.357-364。这些方法试图根据运动的复杂度来调整运动模型,用不同的运动模型来执行运动估算并从中选出最合适的一个。这些方法的主要缺点是计算复杂度高,只有少数几个运动字场模型可在实际中试用。
第二种最小化运动系数数目的方式是为每段选择一个运动模型,以便用尽可能少的系数来获得满意的低预测误差。因为运动的总数和复杂度在帧与帧之间和段与段之间是变动的,所以每段总是使用所有N+M个运动系数是低效率的。必须找到每段的最小运动系数数目,以获得满意的低预测误差。这种调整选择系数的过程称为运动系数移去。
前面描述的这些方法没有一种能单独解决怎样最小化运动系数ci数目的问题,这些系数将传送给解码器,同时保持尽可能低的预测误差检测量。
发明概述
本发明的一个目的是创建一种运动补偿视频编码器、一种视频数据运动补偿编码的方法、一种对运动补偿编码过的视频数据进行解码的视频解码器,这种做法可以大大减少用一些已知运动估算器产生的运动向量字场数据的总量,而不会引起让人无法接受的运动向量字场的失真。运动字场编码器的复杂度应宁可低一些,以便能实际应用在可获得的信号处理器或通常意义的微处理器上。
本发明分散在权利要求1,10,20,23,26和39中作了相应的定义。本发明的实施例在从属的权利要求中作了定义。依照本发明的第一方面,编码器执行段的归并,用有效计算方式找到归并段的一个运动系数集来最小化失真检测量。如果需要,本发明的这方面还可对由于段归并而引起的失真进行简单有效的赋值。方便地,依据这方面的编码器可对视频帧的相邻段执行调整归并,方法是依据预定义的检测手段计算附加的失真,如果附加的失真可以容忍则归并这些段,例如当低于某一给定的阈值或对于所需比特率减少来说可以容忍时。选中用来计算失真的检测量可以是预测误差的某些检测量,例如段的能量或平方预测误差,但并不仅仅局限于这些检测量。失真的另一个检测量,例如可以是原始帧和经编解码后恢复的原始帧之间的平方差。为此,在视频编码器中运动字场编码器包括两个主模块。
第一主模块可称为QR运动分析器。它的任务是找出一种新的方式来表示输入的运动向量字场,该输入字场由运动字场估算器产生。这种新表示方式将用于第二主模块。第一主模块中的运算包括许多步的矩阵运算:在第一步中利用一些已知的近似方法对预测帧进行线性化,以便预测帧成为运动向量的线性函数。在第二步中构建矩阵Ei和矩阵yi,使得预测误差的适当检测量,例如平方预测误差,可降低到最小。为此矩阵Ei被分解为两个矩阵Qi和Ri的乘积。另外,还可从因数矩阵Qi和矩阵yi计算出一附加向量zi。矩阵Ri和附加向量zi部分将用于第二主模块。
第二主模块称为段归并模块,对成对的段Si,Sj执行归并操作。方便地,本模块检查这些组合区域是否可用同一个运动字场模型进行预测。在归并操作中,一个矩阵方程首先由上述的因数矩阵形成,然后利用已知的矩阵计算方法对因数矩阵进行处理。结果是矩阵方程可用一种简单有效的方式来计算运动系数,该系数在允许范围内同时适用于成对的两个段。利用这些系数可计算出归并段区域中失真的某些检测量。如果平方预测误差作为失真的检测量,那么可以用上面产生矩阵中的一个来简单计算出平方预测误差。如果依据选定标准,预测误差检测量的改变可以接受,那么段就进行归并。
当每一对段都可认为是段归并模块的输出后,图象就以减少的段数作了重新分段。并且对于每个新段,模块输出一矩阵R1ij和一向量z1ij,可以用它们来简单有效地计算所有运动系数。还有,编码器将信息提供给解码器,使之能重建帧中产生的新段。
依据本发明这方面的段归并模块,可从计算上简单判断哪些段可以归并为一个段。通过判断每对相邻的段是否可能进行归并,并且对新产生的段重复该过程,直到帧中剩下的每对相邻段都不适合进行归并为止,就可以做到归并尽可能多的段。
依据本发明的一个实施例,失真总量可从附加失真的线性近似计算得到,该附加失真是由于将运动向量字场近似为基本函数的线性组合而引起的。
依据本发明第二方面的编码器,从代表某段的运动向量字场的系数集当中移去一些系数,用有效计算方式找到那些对于失真的一种检测量来说最适宜留下的系数。如果需要,依据这方面的发明能检验省略掉系数集中的某个特定系数是否会引起向量字场失真的大大增加。这种检验是以有效的计算方式执行的,以便对每段Si系数集的每个系数都可进行这样的检验。那些经检验发现如果省略掉时会大大增加失真的系数,则需要传送给解码器。
依据本发明第二方面的编码器,包含一个第一主模块,该模块在操作上类似于本发明第一方面的第一主模块。该编码器还包含一个第二模块,它接收每段Si的由第一模块产生的矩阵Ri和向量zi,如果需要,还可基于每段的矩阵Ri和向量zi决定是否可能通过从模型中移去基本函数来简化运动向量模型,而不会使失真有不可容忍的增加。
第二模块中的运算是矩阵运算,其中矩阵方程首先作的修改是移去矩阵方程Ric=zi的一列和一行,c是包含模型的系数ci的向量。移去一列和一行对应于从运动模型中移去一个基本函数。然后矩阵方程被三角化。运动系数对应于减少了的基本函数集,可以通过求解上面产生的线性方程计算得到。该方程可以用逐步替代法或其它已知的算法解出。如果预测误差用作失真的一个检测量,那么移去基本函数而引起的段的预测误差改变,仅仅是所产生方程中一个的预定函数。
通过进一步重复这些矩阵运算,段的更多系数可以减少。利用这种途径,人们在用不同的已减少的基本函数集时,能很容易找出失真。能产生所期望较低失真的函数集被选出用来表示段的运动。
该模块输出每个处理段的选择信息,选择信息表明哪些基本函数可从运动向量模型中移去。另外该模块还输出新的运动系数,它对应于保留下的基本函数。选择信息和运动系数都传送给解码器。
从基本函数集中移去一个基本函数完全等价于将对应要移去的基本函数的系数值置为0。因此,在一种可替选实现中,编码器不是输出选择信息之后输出运动系数,而是输出所有的运动系数,其中那些与移去的基本函数对应的系数值等于0。
优选的是,一种运动补偿视频编码器同时可调整归并段和移去那些对总失真影响不大的运动系数。这种优选的编码器依据本发明的第一方面包括QR运动分析器和段归并模块,依据本发明的第二方面还包括系数移去模块。系数移去模块从段归并模块接收矩阵Rij和向量zij。只有在归并相邻段和生成移去系数的矩阵R和向量z之后,再计算每段的系数用于传送,才会大大减少视频编码器输出的运动数据量。
优选的是,依据本发明的视频编码器和解码器可用硬件实现,例如可用一个或多个集成电路,分别依据本发明的不同方面,适合于对接收到的视频帧进行编码和压缩,对已编码的视频数据进行解码等。
在视频编码技术中,通常用不同的编码模式对不同的视频帧区域进行编码。这些编码模式也包括本文中的运动补偿模式。其中有几个模式用在所有的现代视频编码解码器中,例如ITU的H.261和H.263以及ISO的MPEG-1和MPEG-2视频编码标准。
举例来说,一些视频帧区域的编码根本没有利用任何临时预测(所谓内部块)。对于这些图象区域不传送运动系数,这些区域也不参考任何先前的图象进行编码。本发明的实际实施例也包含了这种内部编码的发明。
而且,在通常的视频图象序列中,视频帧中的大部分区域在连续几帧时保持静止(即没有运动)。在计算上检测一个保持静止的区域比估算视频帧区域的运动要容易得多。因此,实际的编码解码器经常检测那些没有任何运动的区域,它包括一静止预测模式,这时不需要传送任何运动参数。本发明的实际实施例也包含了这种静止模式的发明。
MPEG视频编码标准还包括一种编码模式,其中它的运动估算是按照两个参考帧(双向预测)来执行的。这一区域的两种不同预测结果将被编码。编码器会决定采用预测中较好的那个,或决定组合这两个预测结果(例如取它们的平均)。有关模式的决定则需要传送给解码器。ITU的H.263标准还包括一利用两个参考帧的临时预测模式。显然,本发明能从利用多参考帧的类似技术中受益。
因此对于本领域的技术人员来说很显然,本发明可以作为视频编码解码器中一个或多个编码模式的基本成分,其中的视频编码解码器同时用到了现有的编码模式(例如内部编码,静止模式,或多参考帧)。
本发明的优选实施例将参照附图给出描述。
附图简述
图1是一已知编码器的示意图;
图2是一已知解码器的示意图;
图3描绘了要归并的相邻向量段;
图4举例说明了用运动字场近似法的归并;
图5是依据本发明的运动字场编码器;
图6是QR运动分析器的示意图;
图7是依据本发明的一个运动补偿预测模块实施例的示意图。
优选实施例描述
图1所示视频编码器的输出是分为段Si的压缩帧,每段Si都伴随有关于该段每个象素(x,y)的运动向量[Δx(x,y),Δ(x,y)]的信息。那么对于一个由P个象素组成的段Si来说,其中P个象素的坐标分别为(xi,yi),i=1,2,…,P,运动向量编码器3的任务就是,从运动字场估算模块2输出的运动向量字场[Δx(xi,yi),Δ(xi,yi)]中找到运动向量字场的运动系数c=(C1,C2,…,CN+M),其中近似等于[Δx(x,y),Δ(x,y)],尽可能精确地用线性运动模型表示为:Δx~(x,y)=Σi=1Ncifi(x,y)-------(4a)]]>Δ~y(x,y)=Σi=N+1N+Mcifi(x,y)--------(4b)]]>
这样它最小化了平方预测误差SPE:SPE=Σi=1P(In(xi,yi)-In-1(xi+Δ~x(xi,yi),yi+Δ~y(xi,yi)))2------(5)]]>
图5举例说明了依据本发明的视频编码器中运动字场编码器的一个实施例。它对应于图1中的模块3,但它同时也把参考帧和当前帧作为输入。该模块的第三个输入是运动向量字场[Δx(·),Δy(·)],它由图1中的运动字场估算模块2产生。
要完成上述任务,运动字场编码器3需由三个主构造模块组成:QR运动分析器31、段归并模块32和运动系数移去模块33。段归并模块32和运动系数移去模块33减少了运动信息量,这导致预测的准确度降低,因此平方预测误差会增加。
QR运动分析器的目的是找到运动字场的一种新表示方式,该表示方式适于有效判断段归并和系数移去对预测误差的影响到底有多大。这种新表示方式还将用在后面的其它两个模块中,用来快速灵活地找到段归并和系数移去后的运动系数。图6表示依据本发明的QR运动分析器的一个实施例。该模块包含一梯度滤波器,接收前一个视频帧输入In-1,或更优选地,接收前一个视频帧,该视频帧与由图2所示的视频解码器解码得到的帧类似。为此图1所示的视频编码器也包含一预测误差解码模块5和装置7,用来计算视频帧,它对应于由视频解码器解码得到的视频帧。
梯度滤波器的输出Gx,Gy输往模块42用来构造矩阵E,同时输往模块45用来构造向量y。矩阵构造模块42对预测帧执行线性化,以便近似的预测帧是和的线性函数,模块42还在线性化矩阵E的基础上计算上面等式4a,4b所示的乘积,乘积包含一个由系数ci构成的向量c,如果Δx,Δy替换为线性运动模型的基本函数fi(x,y)的线性组合,那么乘积可以被解释为预测误差结果。
用来构造向量y的模块45接收当前帧In,预测帧,梯度滤波器41的输出Gx,Gy,和图1中模块2估算出的运动向量[Δx(x,y),Δy(x,y)],然后用这些输入的正确值计算向量y,向量y可解释为由于场景的运动而引起的预测误差,即固有误差。
矩阵E和向量y分别被QR因数分解模块43和矩阵乘法模块46接收。这些模块的功能可视为对矩阵E和向量y的坐标转换,目的是下一步找到系数ci,以便对于给定段的所有象素来说,从基本函数fi的线性组合Δx,Δy得到的预测误差结果尽可能接近固有预测误差。这一点将在下面作更加详细的解释。
模块43输出矩阵R,它是以矩阵Q为坐标形式表示矩阵E,模块43同时输出矩阵Q。模块46不仅接收向量y,还接收从模块43来的矩阵Q,然后找到以矩阵Q为坐标表示y的向量z。更优选的,矩阵Q是正交的。以下会进一步说明,把E和y分别表示为R和z,这种表示法将大大有助于判断相邻段是否可以进行归并,而预测误差的增加可以容忍,这种表示法还有助找到表示归并段和不可归并段的运动向量字场所必需的最小系数数目,即从等式4a,4b的系数集中移去那些不重要的系数。
模块44和模块47分别接收矩阵R和向量z并从中选出一些行,这些行可用来判断段归并和/或运动系数移去的效果。这些操作是基于R和z执行的,不需要计算上述系数ci。而且,所有的操作都参考了R的行和z的对应行,以便为了段归并和/或运动系数移去的目的,R和z可被视作一个单独的列扩展矩阵A,该矩阵包含R的列,还包含作为附加列的向量z。因此,模块44和47在实现上可视为一个模块,它对矩阵A进行操作,从A中选择适当的行,然后输出包含选择行的修改矩阵A′。A′把从R选出的行表示为R1,把从z选出的行表示为z1。
段归并模块32接收每段的R1和z1,即矩阵A′,并且判断是否可对两段Si,Sj进行归并,即以相同的系数集来表示两段的运动向量字场,而预测误差的增加可以容忍。这样做是通过产生一个行扩展矩阵B,该矩阵包含段Si的矩阵Ai′的所有行和段Sj的矩阵Aj′的所有行。段Si,Sj可以是相邻段,但不一定非得是相邻段。矩阵B还要作进一步的坐标转换,例如三角变换,产生一个修改矩阵B′。图5中的模块32判断是否可能对从矩阵B′选出的某些元素项进行段归并,即从向量zi′和zj′得到的那些列和从矩阵R1i和R1j得到的行列式B′中为0的那些行。优选的是,上述进一步的坐标转换是正交的。所以由归并而产生的附加预测误差是上面所选元素项的平方和。
如果相应的段没有归并,图5的运动系数移去模块33在帧再分段后接收每段的矩阵A′,或如果段已归并,模块33接收矩阵B′,然后判断是否可能移去系数ci,而同时预测误差的增加可以容忍。在模块33中,先分别从矩阵A′或B′中抽取出一行,该行对应于系数ci,然后对从矩阵A′或B′得到的矩阵执行优选的正交坐标转换。由于移去系数ci而引起的附加预测误差,可以从变换后矩阵的一些选择元素项计算得到,这些选出元素项位于由转换后矩阵z1产生的列和由R1产生的所有行列中为0的那些行。图5的多路复用器34接收来自模块32的归并信息,含有选出系数ci用于传送的信息,和选出的系数ci,系数最后是在模块33中基于转换后矩阵计算得到的。多路复用器34输出的信息输往视频解码器(未画出)。
QR运动分析器更加详细的操作包含以下步骤:
步骤1是预测误差的线性化。在该步中式子(7)的预测误差帧(·)利用一些已知的近似方法作近似,以便它关于是线性的。那么公式(5)中元素项的和就成为系数ci的线性组合SPE=Σj=1P(ej,1c1+ej,2c2+···+ej,N+McN+M-yi)2-------(6)]]>
在优选实现中,采用了含12个系数的二次多项式运动向量字场模型:Δ~x(x,y)=c1+c2x+c3y+c4xy+c5x2+c6y2----(4c)]]>Δ~y(x,y)=c7+c8x+c9y+c10xy+c11x2+c12y2--------(4d)]]>
在实际中该模型可以很好地处理视频序列中甚至很复杂的运动,生成良好的预测结果。
在QR运动分析器模块中,步骤1的线性化就是对每个象素(xi,yi)作台劳展开(·),其中i=1,2,…,P,在这些点周围的点是:xi′=xi+Δ~x(xi,yi)]]>yi′=yi+Δ~y(xi,yi)]]>
利用特性∑a2=∑(-a)2,平方预测误差可表示为:SPE=Σi=1P(I~n-1(xi′,yi′)+(Δ~x(xi,yi)-Δx(xi,yi))Gx(xi′,yi′)]]>+(Δ~y(xi,yi)-Δy(xi,yi))Gy(xi′,yi′)-In(xi,yi))2]]>
辅助值gj(x,y)可用下面的公式计算:
其中函数fj(xi,yi)是一个预定义的基本函数,它依据等式(4a)和(4b)所定义的运动字场模型,或者更准确地说是依据等式(4c)和(4d)。
步骤2是矩阵的构造。它是基于这样的事实:依据公式(6)求SPE的最小值完全等效于求矩阵表达式(Ec-y)T(Ec-y)的最小值,其中E和y分别是:E=e1,1e1,2...e1,N+Me2,1e2,2...e2,N+M............eP,1eP,2...eP,N+M,y=y1y2...yP]]>
等式(9)中的矩阵E和向量y是利用下面的公式构造的:E=g1(x1,y1)g2(x1,y1)...gN+M(x1,y1)g1(x2,y2)g2(x2,y2)...gN+M(x2,y2)............g1(xP,yP)g2(xP,yP)...gN+M(xP,yP)]]>
Gx(x,y)和Gy(x,y)是利用下面公式计算出的参考帧(x,y)的水平和垂直梯度值:Gx(x,y)=I~n-1(x+1,y)-I~n-1(x-1,y)]]>Gy(x,y)=I~n-1(x,y+1)-I~n-1(x,y-1)]]>
(x,y)的象素值,Gx(x,y)和Gy(x,y)定义为整数坐标的x和y。当x或y不是整数时,象素值例如可以用双向最靠近整数坐标的象素值去改写来计算得到。
步骤3是QR因数分解。矩阵的QR因数分解是众所周知的,合适的算法在D.H.Golub和C.Van Loan的“矩阵运算”第二版,JohnsHopkins大学出版社,1989中有详细描述。这种算法可以将E分解为两个矩阵的乘积
E=QR (8)
换句话说,R是以Q为坐标来表示E。Q优选情况是正交的,所以R是一个上三角,即R的N+M+1到P行都为0。
在该步中还计算了一个辅助向量z,其中
z=QTy (9)
在步骤4中计算QR运动分析器模块的输出。该输出包含由矩阵R的首N+M行组成的矩阵R1和由向量z的首N+M个元素组成的向量z1。
在段归并模块中,归并操作是针对每对相邻的段Si和Sj执行的,见图4,通过判断组合段Sij的运动向量字场是否可以用一个共同的运动字场来表示,即用运动系数cij来描述。归并操作由以下几步组成:
步骤1包含矩阵计算。本发明运用了一种以前未知的特性,即运动系数cij在最小化归并段Sij的预测误差的同时也最小化了标量值(R1iR1jCij-Z1iZ1j)T(R1iR1jCij-Z1jZ1j)-----(10)]]>
如上所述,段Si和Sj的R1i,z1i和R1j,z1j已由QR分析模块产生。求解(10)的最小值等同于在最小平方检测基础上求解下面方程的超定系统R1iR1jCij=Z1iZ1j----(10a)]]>
步骤2包含对步骤1得到的矩阵作三角化。依据前面提到文献的技术,如果段Si的QR因数分解是Ei,段Sj的QR因数分解是Ej,那么矩阵R1i,R1j是一个上三角形,方程(10)中的系统R1iR1jCij=Z1iZ1j]]>
具有下面的形式
其中符号x表示非零元素项,zik表示向量z1i的第k个元素,zjk表示向量z1j的第k个元素。
方程(11)系统的三角化是运用一系列的标量行乘法和行加法完成的;即转换为下面的形式:对于该三角化,也可以利用依据上述文献提及的QR因数分解。
在步骤3中归并误差作了估值。由归并段Si和段Sj而引起的段Sij的平方预测误差ΔEij的改变,可以用下面的式子计算ΔEij=Σk=1N+Mqk2-------(13)]]>
在该优选实施例中,方程(11)的QR因数分解导致Q是正交的,以便等式13非常简洁。可是根据因数分解中Q的特性,如果用平方预测误差作为预测误差的一个检测量,ΔEij通常是q2k的函数,k=1,2,...,N+M;当然,也可以采用其它的预测误差检测量,因而qk和ΔEij之间也会有其它的函数关系。
最后,在步骤4中如果公式(13)的平方预测误差依据某一选定标准可以接受,那么段就进行归并。段归并模块在归并时用到下列策略:
a.一个阈值T被选出,对应于整个帧中平方预测误差的允许增加。
b.对所有的相邻段对,ΔEij是利用等式(13)计算得到的。
c.具有最小ΔEij的那一段对被归并。
d.重复步骤b-c,直到所有归并段对的ΔEij之和比T大。
在三角化方程(11)的系统时,可以利用一系列Givens旋转。
对于新产生的段Sij,矩阵R1ij和向量z1ij的构造是通过提取方程(12)系统的首N+M行,由下式给出:
当考虑了帧中所有对的段之后,我们可得到段归并模块的输出。输出包含三种信息。首先,它给出了一种新的图象分法,使图象具有减少数目的段数。其次,模块输出每个新段的矩阵R1ij和向量z1ij。第三,它给出了归并信息,归并信息将传送给解码器,以便解码器能识别出那些被归并了的段。
段Sij的运动系数cij=(c1,c2,...,CN+M)可通过求解方程R1ijcij=Z1ij计算出来,但如果利用系数移去模块33则计算并非是必须的。还有,下面将进一步说明,在现阶段和执行系数移去之前,对运动字场模型做相对于归并段的正交化处理是有益的。这种正交运动字场模型对量化运动系数时产生的量化误差不太敏感。可是,为了尽可能清楚地描述优选实施例,最佳的运动字场模型正交化过程在此处略去。
系数移去模块33接受当前帧新的分段作为输入,对于每段Sk它接受式(14)所示的矩阵R1k,z1k,矩阵是由前面的段归并模块产生的。每段的运动向量用N+M个运动系数表示,N和M由运动字场模型的Δx和Δy决定。
运动系数移去模块33决定给定段的运动字场模型是否可能简化,而不会引起预测误差的过度增加。当一些基本函数从本应用场景技术中等式(3)的模型中移去时,可以得到一种简化的运动字场模型,只需用更少的系数来描述这种简化的运动字场模型。
下面的程序在模块33中对所有段执行,目的是找出第i个基本函数是否可以从运动字场模型中移去:
步骤1包括矩阵修改,其中线性方程系统
R1kck=z1k (15)
作了修改,从R1k中移去了第i列和从ck中移去了第i个元素。
步骤2包括矩阵的三角化,优选的是利用前面文献中已提及的QR因数分解算法,或利用一系列Givens旋转。就是说,方程(15)的系统可以用已知的方式对其进行三角化,通过一系列的标量行乘法和行加法,即它可以转换为下面的形式:
步骤3包括误差估值。由于移去第i个系数而引起的段平方预测误差的改变简单地等同于方程(16)中的项q2i。而且,这基于上述QR因数分解的Q是正交的才有效。通常根据Q的特性和预测误差检测,平方预测误差的改变是qi的函数。
步骤4包括移去系数。如果预测误差的改变依据某个选定标准可以接受,那么系数ci就从系数集中移去。系数的新数目现在是N+M-1。矩阵R1k和向量z1k也作了修改,例如用QR因数分解修改为如下形式:
基于方程(17)重复步骤1-4还可以进一步减少段的系数数目。
在运动系数移去模块中,下面的策略将被用到:
a.一个阈值T被选出,对应于整个帧中平方预测误差的允许增加。
b.对所有的段,它们的基本函数qi2是利用方程(16)计算得到的。
c.具有最小qi2段的基本函数被移去。
d.重复步骤b-c,直到不同段中所有移去基本函数的qi2之和比T大。
最后,步骤5包括系数计算。在移去适当的系数后,在本步中段Sk最后的运动系数通过求解下面的线性方程系统计算得到:
R1kck=z1k (18)
其中矩阵R1k和向量z1k是前面步骤1-4的结果。该方程可以用我们熟知算法中的一种来求解,例如回代法。
该优选实施例并不计算基于R1k和z1k的系数ci,但它还包括一个图中未画出的模块,用来对运动字场模型作正交处理,正交是相对于围绕给定段的矩形而言的。该模块接收当前帧的分段作为输入,每段Sk都有从段归并模块来的矩阵R1k和zik,如(14)中所示。在这个正交处理模块中多项式基本函数fi(·)由正交多项式(x,y)代替。那么该段的运动向量字场可表示为:Δx(x,y)=Σi=1Nc~if~i(x,y)]]> (23)Δy(x,y)=Σi=N+1N+Mc~if~i(x,y)]]>尽管等式4中的运动向量字场完全等同于等式23中的一个,但后面的等式被采用,因为系数比ci对量化较不敏感,所以可用更少的比特数来表示。
正交多项式基本函数的计算将在下面的视频编码器和视频解码器中执行,基于每段的形状和运动模型的预定义基本函数fi。
假定围绕给定段的矩形大小为N1×N2象素。首先计算一维多项式例如拉格朗日多项式的两个序列:
1.gk(x),k=0,1,...在间隔[1,N1]上正交,
2.h1(y),l=0,1,...在间隔[1,N2]上正交,二维(2-D)正交多项式基本函数(x,y)是由1-D正交多项式的张量积构成:f~i(x,y)=gk(x)h1(y)----(24)]]>
选取多项式的更多细节可参看A.Akansu和R.Haddad的“Multiresolution Signal Decomposition”,Academic PressInc.,USA,1992,pages 55-56。
相对于围绕给定段矩形的这种正交化和用其它方法的正交化相比,在计算上复杂度要低得多,尽管如此,其它方法也可以用作替选,例如相对段的形状作正交化。
通常,众所周知的正交化算法例如Gramm-Schmidt算法用来将一般多项式转换为在任意形状段区域正交的多项式。正交多项式基本函数(·)被选出,以便它们可表示为多项式基本函数fk(·),k=1,2,...,i,的线性组合,即f~i(x,y)=Σk=1itk,ifk(x,y),i=1,2,···,N+M----(25)]]>
这种假定能保证,通过简单矩阵乘法从非正交到正交的基本函数转换可以用较低的计算复杂度来完成。
当基本函数形式fi(·)改变为它们的正交版本(·)时,描述段运动向量字场的矩阵R1k和z1k需要重新计算。对应正交多项式基本函数的新矩阵和满足方程(25),可以依据下面公式的矩阵R1k和向量z1k计算得到:R~1k=R1kT-------(26)]]>Z~1k=Z1k------(27)]]>
而矩阵T由下式给出T=t1,1t1,2t1,3...t1,N+M0t2,2t2,3...t2,N+M00t3,3...t3,N+M...............000...tN+M,N+M]]>其中元素项可从方程(25)得到。段Sk的新运动向量系数c~k=(c~1,c~2,···,c~N+M)]]>对应于正交多项式基本函数(·),i=1,...,N+M,可利用多项式基本函数fi(·),i=1,...,N+M对应的系数ck=(c1,...,CN+M)计算得到c~k=T-1ck-----(29)]]>或通过求解方程系统:R~1kc~k=z~1k--------(30)]]>系数移去模块33接收当前帧新的分段作为输入,对于每段Sk它都接收由正交化模块产生的矩阵和。每段的运动向量字场用N+M个运动字场模型基本函数表示。
如上所述,对于给定段Sk,运动系数移去模块33决定它是否能简化运动字场模型。
图7表示了图1中运动补偿预测模块1的一个实施例。该模块接收由运动字场编码模块3输出的运动信息,另外还接收一个参考帧(x,y)。基于这些信息,模块1输出预测帧n(x,y)。如图7所示,运动补偿预测模块1包含一多路分解器11,用来从运动字场编码模决3接收多路运动信息,然后输出分解了的多路运动信息成分,即图象分割信息,系数选择信息和要传送的运动系数值。参考数字12表示图象分割模块,它接收图象分割信息和参考帧(x,y),并且依据图象分割信息产生输出帧的段。参考数字13表示基本函数构造模块。该模块从一组预定义的基本函数中选出一些特定的基本函数,用来表示运动字场编码模块3中运动系数移去模块所产生的选择信息。参考数字14表示段预测模块,它接收参考帧(x,y)中每段的基本函数关联选择信息和关联运动系数,计算运动向量并且基于该运动向量计算每段中每个象素点(x,y)的预测帧n(x,y)。运动补偿预测模块1在结构和功能上对应于图2所述视频解码器的运动补偿预测模块21。这两个运动补偿预测模块的预测都是基于图1中视频编码器的运动字场编码模块3所输出的运动信息进行的。
从上面所有模块所有步骤的结果可知,依据本发明的运动字场编码器产生归并信息和选择信息,归并信息告知解码器哪些段被归并,选择信息告知解码器哪些基本函数被移去,运动字场编码器还产生运动系数信息。
本发明和现有技术解决方案相比,主要优点为它能大大减少运动信息量而不会引起预测误差的较大增加。另外整个系统的复杂度比较低,能在我们可以得到的信号处理器和通常意义的微处理器上具体实现。
段归并模块有一独特的功能,它可从为分离段估值的给定运动向量中得到组合段的运动向量。从保持组合段的平方误差最小方面看,可以证明该模块产生的运动向量事实上是最优的。这解释了该模决能大大减少段数目而平方预测误差的增加非常有限。
运动系数移去模块是一很有效的工具,用来即时调整运动模型以适合视频序列中运动的实际数量和类型。该模块能很容易利用大量的模块测试预测结果(段的平方预测误差值),例如可用运动字场基本函数的所有可能组合进行测试。本方案的一大优点是,它不需要重复运动估算过程因而在计算上简单。
在运动估算之后进行QR运动分析,运动字场编码器可以找到图象段任何要求组合的新运动系数或段中任何要求的运动字场模型,只需求解非常简单的线性方程系统。
系统可以用许多不偏离本发明的精神和范围的方式实现。例如,在方程(3)中可采用不同的线性运动模型。在方程(5)中可用不同的方法来线性化其中的项。还有,可用不同的标准来决定是否归并两个段。而决定一个给定基本函数是否应从模型中移去的策略也是各种各样的。方程(10)和(15)中矩阵的三角化可以采用其它的算法执行,通过求解方程(18)来计算最后的系数也可以利用许多已知的求解线性方程系统的算法。最后,可用不同的方法对(x,y),Gx(x,y)和Gy(x,y)值的非整数系数作修改。