具体实施方式
数字TV广播和其他的普通视频应用采用隔行扫描和4:2:0格式来代表颜色信息。利用诸如运动向量搜索、运动补偿、和离散余弦变换(DCT)编码等技术对原始画像进行压缩和编码。隔行扫描是通过间隔的水平线即奇数行和偶数行来扫描画像的过程。利用这种方式,每个视频帧被划分成被称为顶场(top field)和底场(bottom field)的两个场。
如先前图51中所描述的,4:2:0颜色采样过程在水平和垂直两个方向上对色彩信息进行亚采样。但是,利用这种视频格式,传统的运动向量估计可能导致包含运动的帧中的色度分量质量下降,因为上述检测仅基于这些帧的亮度信息。虽然即使仅由亮度分量来计算运动向量,对不动的或者几乎不动的画像也可以预测出正确的颜色,但是如果视频帧包含运动物体的图像,则在色度分量上原始画像中的块和参考画像中的对应块之间不匹配的几率增加。这样的色度偏差将使得预测误差的级别上升,从而在系统带宽有限的情况下导致编码后的视频数据量增加或者画像质量下降度增加。
先前提到的已有技术(日本专利申请公布No.2001-238228)通过简单地拒绝那些具有可能引起大量色度偏差的特定垂直分量的运动向量而在一定程度上解决了上面的问题。但是,因为该技术没有充分考虑涉及运动向量的其他情况,所以该技术并不总是最佳的解决方案。
鉴于前述内容,本发明的目的是提供一种运动估计和补偿设备,所述运动估计和补偿设备具有用于寻找运动向量和进行运动补偿预测的改进算法,并且具有合理的电路大小和计算负荷。
下面将参考附图来描述本发明的优选实施例,其中类似的参考标号指代类似的元件。
图1是根据本发明第一实施例的运动估计和补偿设备的概念视图。此运动估计和补偿设备10包括运动向量估计器11和运动补偿器12。
运动向量估计器11通过评估原始画像中的目标块和参考画像中的每个候选块之间的绝对差值和(SAD)来在以4:2:0格式构造的色度亚采样视频信号的隔行序列的亮度分量中找到运动向量。为了抑制此过程中可能存在的色度偏差的影响,运动向量估计器11进行运动向量校正,取决于所取的运动向量的垂直分量值,所述运动向量校正向正在评估的SAD值加上不同的偏移量。这里,术语“块(block)”指的是大小为16个像素×16行的画像宏块或者正方块。运动向量估计器11识别参考画像中一个显示最小SAD的候选块,并且计算代表目标块相对于所找到的候选块的位移的运动向量。
更具体地说,参考图1的下半部分,运动向量的垂直分量具有值4n+0、4n+1、4n+2或者4n+3,其中n为整数。这些值相应于4个候选块B0、B1、B2和B3,将所述4个候选块和原始画像中给定的目标块B就像素间的SAD进行比较。运动向量估计器11对目标块B和位于垂直距离4n+0的候选块B0之间的SAD给出0偏移量。对于分别位于垂直距离4n+1、4n+2和4n+3的其他的候选块B1、B2和B3,运动向量估计器11给出自适应地确定的偏移值。这里术语“自适应”意思是运动向量估计器11考虑传输比特率、量化参数、色度边缘信息、和色度分量的预测误差中的至少一个来确定偏移值。这里量化参数包括量化步长,即量化后的值的精度。稍后将描述此自适应设置。利用以此方式得到的运动向量,运动补偿器12产生预测画像并且通过从原始画像中减去预测画像来计算预测误差。
色度偏差
在进行解释本发明的细节之前,我们首先详细阐述本发明将要解决的问题,包括关于如何寻找运动向量的大概浏览。图2和图3示出了包括在从左上向右下的方向上移动的矩形物体的参考画像和原始画像。具体地说,图2示出了构成单个参考画像的顶场和底场的二维图像,以及图3示出了构成单个原始画像的顶场和底场的二维图像。注意,两个画像都仅给出了采样后的视频信号的亮度分量。由于顶场和底场具有相反的奇偶性(即,一个由偶数行组成,另一个由奇数行组成),所以图2和图3以及几个后继的附图用一行的偏移量来描绘它们。
将图2的参考画像和图3的原始画像相比较,其中黑色框(像素)指示物体在从左上向右下的方向上的明显运动。还应该注意的是,即使在图2的同一参考画像中,在顶场和底场之间也可以观察到物体在水平方向上两个像素的移动。同样地,图3示出了在一个场周期期间类似的物体水平移动。
图4和图5示出了图2的参考画像和图3的原始画像中的4:2:2格式和4:2:0格式之间的关系。更具体地说,图4将注意力集中于位于图2中的虚线指示的特定水平位置x1处的像素,把代表图2的同一参考画像的4:2:2画像和4:2:0画像进行对比。以同样的方式,图5将注意力集中于位于图3中虚线指示的另一水平位置x2处的像素,把相应于图3的原始画像的4:2:2画像和4:2:0画像进行比较。
图4和图5中使用的标记如下:白正方和黑正方代表亮度分量,自三角和黑三角代表色度分量,其中白和黑分别指示目标图像的存在和不存在。左端所见的数字是行号。用虚线代表偶数的扫描行,并且每两条线的垂直间隔被再次划分成8部分,所述8部分用分数“1/8,”、“2/8,”、“3/8,”等来称呼。
如先前所讨论的,将视频采样格式从4:2:2转换到4:2:0的过程实际上涉及到色度亚采样操作。在图4的示例中,4:2:0画像中的第一顶场色度分量a3是由原始4:2:2画像中的色度分量a1和a2内插得到的。即a3的值的计算方式是两个最近邻色度分量a1和a2的加权平均,由于a3位于a1下面“2/8”处,而位于a2上面“6/8”处所以所述加权平均实际上是(6×a1+2×a2)/8。为了图示说明的目的,由于色度分量a3是由白三角和黑三角内插得到的分量,所以色度分量a3用灰三角来表示。
对于另一示例,4:2:0参考画像中的第一底场色度分量b3是以同样方式由4:2:2分量b1和b2内插得到的,由于b3位于b1下面“6/8”处,而位于b2上面“2/8”处,所以色度分量b3值为(2×b1+6×b2)/8,即它的原始4:2:2画像中最近邻色度分量b1和b2的加权平均。所得的色度分量b3用白三角表示,这是因为它的源分量都是白三角。图5中所示出的原始画像也经历了格式转换和颜色亚采样的类似过程。
如可以从亮度分量和色度分量的垂直密度(density)中看到的,从4:2:2到4:2:0的转换使得色度信息以2∶1的比例减少。然而图4和图5仅示出了颜色亚采样的简化版本,实际的实现使用了不止两个邻域分量来计算新的分量,邻域分量的数目取决于每个编码设备的规定。例如,前述顶场色度分量a3可以不仅由a1和a2而且由其他周围的色度分量来计算。对诸如b3等的底场色度分量也可以应用同样的操作。
参考图6到图9,图2到图5中所讨论的移动矩形物体现在被以4:2:0格式的亮度画像和色度画像分开画出,更具体地说,图6和图7分别示出了4:2:0参考画像的亮度分量和色度分量,而图8和图9分别示出了4:2:0原始画像的亮度分量和色度分量。由于视频数据是隔行扫描得出的,所以所有的帧被划分为顶场和底场。
在由两个水平像素乘两个垂直像素的块中,4:2:0格式为每四个亮度分量仅提供了一个颜色分量。例如,顶亮度场中的四个像素Y1到Y4(图6)被假定共享一个色度分量CbCr(CbCr实际上是用来代表一个特定颜色的一对色差Cb和Cr)。由于该CbCr相应于“白”像素Y1和Y2以及“黑”像素Y3和Y4,所以出于图示说明的目的在图7中CbCr被图示为“灰”框。
图8的左手边的区域R1指示在图6的相应顶场参考画像中所见到的黑矩形(即,移动物体)的位置。类似地,图8的右手边的区域R2指示在图6的相应底场参考画像中所见到的黑矩形的位置。两个箭头是顶场和底场中的运动向量。注意,这些运动向量在此特定情况下是等同的(即,同样的长度和同样的方向),从而当前帧预测产生了分别由+2个像素和+2条线的水平分量和垂直分量组成的运动向量。
图10和图11示出了在所解释的4:2:0原始画像和参考画像中找到的运动向量。更具体而言,图10给出了亮度运动向量(在适当时称为“亮度向量”),所述亮度运动向量指示了相对于参考画像的水平位置x1(图6)和原始画像的水平位置x2(图8)而言像素到像素的关联。以同样的方式,图11给出了色度运动向量(在适当时称为“色度向量”),所述色度运动向量指示了相对于参考画像的水平位置x1(图7)和原始画像的水平位置x2而言(图9)像素到像素的关联。
图10和图11中所使用的标记如下:自正方和白三角分别代表亮度分量和色度分量,在这样的像素中不存在物体。黑正方和黑三角分别代表亮度分量和色度分量,在这样的像素中存在移动的矩形物体。即“白”和“黑”符号化每个像素的值。
设Va是图8的亮度画像中所得到的亮度向量。参考图10,亮度向量Va具有+2行的垂直分量,并且参考画像的每个像素的值和原始画像中位于两行的距离处的相应像素的值相一致。以顶场参考画像中的像素y1a为例,查看顶场原始画像的相应部分,位于距离该像素y1a下面两条线处的是运动向量Va的箭头所指向的像素y1b。就亮度分量而论,不管计算什么运动向量,每个原始画像元素在参考画像中都具有对应元素,反之亦然。这是因为亮度分量没有被亚采样。
另一方面,色度分量在从4:2:2到4:2:0的格式转换过程中被亚采样了。由于这个原因,单独从未进行亚采样的亮度分量计算得到的运动向量不太适用于画像的色度分量。如图11中所图示的,运动向量Va不能够直接将参考画像的色度分量关联到原始画像的色度分量。以顶场原始画像中的色度分量c1为例。如它的符号(黑三角)所暗示的,此分量c1是矩形物体的运动图像的一部分,并且根据运动向量Va,它在顶场参考画像中的相应色度分量应该在c2处找到。但是,由于颜色亚采样,所以在c2处没有色度分量。在这种情况下,位于底场的行#1处的最近邻色度分量c3将被选择以用于运动补偿。问题在于,此替代性分量c3属于画像的“白”区;即,c3在运动的物体图像的外部。这意味着运动向量Va给出了错误的颜色估计,这导致预测误差增加。
简而言之,运动向量Va建议c2将是c1的最佳估计,但是c2不存在。传统的方法然后使用近邻的c3作为c2的替代物,虽然c3在不同的场中。这个替换使得用c3来预测c1,由于c1是运动物体图像的一部分,而c3不是,所以c3的色度值完全不同于c1。原始像素和它的估计之间的如此的严重失配导致较大的预测误差。
另一示例是在位于底场原始画像的行#3处的色度分量c4。虽然c4的最佳估计应该位于底场参考画像中的c5处,但是在该像素位置没有色度分量。尽管c4不是运动物体图像的一部分,但是位于顶场画像的线#2处的c6还是被选作c4的估计以用于运动补偿。由于该色度分量c6是运动物体图像的一部分,所以所预测的画像将具有较大的误差。
总结上述讨论,视频编码设备仅由给定画像的亮度分量来估计运动向量,并且相同组的运动向量也被应用来预测色度分量。另一方面,色度分量在前面的4:2:2到4:2:0的格式转换中已经被亚采样,在这样的情形下,使用基于亮度的运动向量导致在运动补偿预测中对色度分量的错误引用。例如,为了预测顶场原始画像的色度分量,当运动补偿器实际上应该使用顶场参考画像时,运动补偿器使用底场参考画像。至于另一示例,为了预测底场原始画像的色度分量,当运动补偿器实际上应该使用底场参考画像时,运动补偿器使用顶场参考画像。这样的色度偏差混淆了运动补偿过程,从而引起额外的预测误差。结果是编码后的数据量增加和画像质量下降。
上述问题可以通过独立估计用于亮度分量和色度分量的运动向量来解决。但是,此解决方案必然需要显著的额外计算量以及更大的电路规模和更重的处理负荷。
色度偏差的进一步分析
这部分以更一般的方式来描述色度偏差的问题。图12A到图16B假定前述的矩形物体将进行不同的运动量,示出了亮度运动向量的几个不同图案。
首先参考图12A和图12B,矩形物体仅在水平方向移动,从而所得的运动向量V0没有垂直分量。参考图16A和图16B,物体在垂直方向上移动了4行的距离,使得运动向量V4具有垂直分量+4。在这两种情况下,亮度向量V0和V4可以用作色度向量而不会引起问题。
接下来参考图13A和图13B,物体垂直地移动了一行的距离,所得的运动向量V1具有垂直分量+1。此亮度向量V1不能担任色度向量。由于没有色度分量存在于运动向量V1所指定的像素中,所以每个这样的像素的色度用半像素内插来计算。以色度分量d1为例。由于亮度向量V1未能指定参考画像中的现有色度分量,所以新的分量不得不用邻近的色度分量d2和d3的加权平均来计算。另一示例是色度分量d4。由于假定提供d4的估计的参考像素没有包含色度分量,所以新的分量不得不从邻近的分量d3和d5内插得到。
参考图14,物体垂直地移动了两条线的距离,结果得到了具有垂直分量+2的运动向量V2。这种情况产生了和上面在图10和图11中所讨论的同样的情形。使用亮度向量V2作为色度向量,编码器将错误地用物体内部的像素值来估计物体边缘外部的像素。
参考图15,物体垂直地移动了3行的距离,结果得到了具有垂直分量+3的运动向量V3。这种情况产生了和图13A及图13B中讨论的同样的情形。即,在运动向量V3所指定的像素中没有色度分量存在。需要半像素内插以产生预测图像。以色度分量e1为例。由于亮度分量V3未能指定参考画像中的现有色度分量,所以新的分量不得不用邻近的色度分量e2和e3的加权平均来计算。另一类似示例是色度分量e4。由于假定提供e4的估计的参考像素未分配有色度分量,所以新的分量不得不从邻近的分量e3和e5内插得到。
总结上述结果,当运动向量的垂直分量为0时不存在偏差,但是当垂直分量为+1、+2或者+3时则发生偏差。当垂直分量为+4时,又是另一不存在偏差的情形。换言之,当垂直分量是4n+0时,不存在失配,但是当垂直分量是4n+1、4n+2或者4n+3时,则存在失配。
当垂直分量是4n+2时,会发生最严重的偏差和由此引起的预测误差的增加,在垂直分量是4n+2的情况下,视频编码设备错误地估计沿着移动物体的垂直边缘的像素。在垂直分量是4n+1和4n+3的情况下,需要顶场和底场之间的半像素内插,虽然误差的严重程度小于垂直分量是4n+2的情况,但是预测误差量还是将有某种程度的增加。
如先前所描述的,日本专利申请公布No.2001-238228公开了通过简单地拒绝垂直分量为4n+2的运动分量来减少预测误差的技术。但是,此技术对4n+1或者4n+3的情况没有帮助。因而,为得到编码后图像的更佳质量,有必要设计可应付垂直运动的所有不同图案的更综合方法。
利用理想的通信信道,不管预测误差怎样大或者怎样小,都可以在接收端正确地再生成编码后的画像。从这个意义上讲,只要视频传输系统能够提供足够高的比特率和带宽,预测误差的增加就其本身而言不是急迫的问题。前述专利申请中描述的已有技术简单地阻止具有4n+2的垂直分量的运动向量,而不管可用的传输带宽。在这种情况下视频的质量可能降低。
考虑上面的描述,更中意的途径是以更灵活的方式来处理具有垂直分量4n+1、4n+2和4n+3的候选向量,以抑制预测错误的增加,而不是简单地丢弃4n+2的运动向量。于是,本发明提供了一种新的运动估计和补偿设备,以及使用上述设备的视频编码设备,上述运动估计和补偿设备以及视频编码设备可以有效地避免色度偏差问题而不会过多增加电路规模或者处理负荷。
运动向量估计
这部分提供了有关根据本发明第一示例的运动估计和补偿设备10的更多细节,具体地提供了有关其运动向量估计器11的操作的更多细节。
图17示出了偏移量表。此表定义了对于运动向量分量的几种不同图案,要向候选块的SAD加上多少偏移量。具体地说,当运动向量的垂直分量是4n+0时,运动向量估计器11没有给出具体的偏移量,因为在这种情况下没有色度偏差发生。当运动向量的垂直分量是4n+2、4n+2或者4n+3时,将存在色度偏差的风险。由于在4n+2的情况下的严重程度被认为远大于其他两种情况,所以图17的偏移量表为4n+2赋予了专门的偏移值OfsB,为4n+1和4n+3赋予了公共偏移值OfsA。
运动向量估计器11通过考虑了下面的因素以自适应的方式确定这些偏移值OfsA和OfsB:传输比特率、量化参数、色度边缘条件以及色度分量的预测误差。基本上根据量化参数或者可选地考虑传输比特率和画像颜色条件来调整OfsA和OfsB值。
图18A到图19B示出了如何由传输比特率或者色度边缘条件来确定偏移量。这些图图示了如下情形:运动向量估计器11搜索参考画像以找到给出了对给定原始画像中的目标宏块M1的最佳估计的块。
参考图18A和图18B,假定相对于原始画像中的目标宏块M1,参考画像中的候选块M1a和M1b分别具有平均绝对差值(MAD)11和10。平均绝对差值(MAD)等于SAD除以块中像素的数目的商,在本示例中像素的数目为256。相对于目标宏块M1,M1a位于垂直距离4n+0处,M1b位于垂直距离4n+1处。
两个候选块M1a和M1b中的任一个将被选择为目标宏块M1的预测块,这取决于相对于M1哪个具有更小的SAD。在低比特率的环境中,尖锐的色度边缘(如果存在的话)将导致色度偏差,进而由此引起的预测误差将以由量化效应而得到的扭曲画像告终。考虑到此,运动向量估计器11给出了适当的偏移量OfsA,从而即使M1和Mb1之间的SAD比M1和M1a之间的SAD更小些,在4n+0处的M1a也更有可能被选作预测块。
现假设OfsA被设置成例如257。由于对于位于4n+0的M1a而言偏移量为零,所以如下计算M1a和M1b的SAD值:
SAD(M1a)=MAD(M1a)×256+0
=11×256
=2816
SAD(M1b)=MAD(M1b)×256+OfsA
=10×256+257
=2817
其中SAD()和MAD()分别代表块的绝对差值和以及块的平均绝对差值。由于结果指示SAD(M1a)<SAD(M1b)(即,2816<2817),所以4n+0处的第一候选块M1a被选作预测块,尽管实际上在通过偏移值进行偏置前M1b的SAD小于M1a的SAD。可以把此结果归因于偏移量OfsA,偏移量OfsA被预先加到了M1b的SAD上以增加选择另一块M1a的几率。
在传输比特率较低和正被编码的画像在色度分量上具有尖锐变化的境况下,4n+0处的块一般比4n+1处的块更优选。当4n+0处的优良候选块和4n+1(或者4n+3)处甚至更优良的候选块之间就它们的平均绝对差值而言的差不超过1时,选取第二最佳块将不会在亮度分量的质量上产生显著下降。运动向量估计器11因此设置了偏移量OfsA以使得选取4n+0处的块而不是4n+1处的块,选择4n+1处的块可能产生色度偏差。
图19A和图19B示出了类似的情形,其中相对于原始画像中的目标块M1而言,候选宏块M1a具有MAD值12,另一候选块M1c具有MAD值10。相对于目标块M1,M1a位于垂直距离4n+0处,M1c位于垂直距离4n+2处。
现假设OfsB被设置成例如513。则如下计算M1和M1c之间的SAD以及M1和M1a之间的SAD:
SAD(M1c)=MAD(M1c)×256+OfsB
=10×256+513
=3073
SAD(M1a)=MAD(M1a)×256+0
=12×256
=3072
由于结果指示SAD(M1a)<SAD(M1c)(即,3072<3073),所以4n+0处的第一候选块M1a被选作预测块,尽管实际上在通过偏移值进行偏置前4n+2处的M1c的SAD值小于4n+0处的M1a的SAD值。可以把此结果归因于偏移量OfsB,偏移量OfsB被预先加到了M1c的SAD上以增加选择另一块M1a的几率。
在传输比特率较低和正被编码的画像在色度分量上具有尖锐变化的境况下,4n+0处的块一般比4n+2处的块更优选。当4n+0处的优良候选块和4n+2处甚至更优良的候选块之间就它们的平均像素值而言的差不超过2时,选取4n+0处的第二最优块将不会在亮度分量的质量上产生显著下降。运动向量估计器11因此设置了偏移量OfsB从而选取4n+0处的块而不是4n+2处的最佳块,选择4n+2处的块可能产生色度偏差。
和上面的两示例不同,高比特率的环境容许要被原封不动传送到接收端的编码后的视频数据包含较大的预测误差。在这种情况下,为4n+1、4n+2和4n+3处的块提供相对较小的偏移量(例如,OfsA=32,OfsB=64),从而降低了选择4n+0(即,具有垂直分量4n+0的运动向量)处的块的几率。
运动估计程序
这部分描述用于估计运动向量的更具体的程序。图20示出了用于运动向量估计的示例程序代码,假定普通的TV广播系统中使用720像素×480行的视频图像大小。画像以4:2:0格式存储在帧存储器中,这意味着一个帧包含720×480个亮度样本和360×240个色度样本。
设Yo[y][x]为原始画像的个体亮度分量,Yr[y][x]为参考画像的个体亮度分量,其中x=0到719,y=0到479,并且每个这样的分量在0到255的范围内取值。而且,设Vx和Vy为在帧预测模式中找到的运动向量的分量,所述找到的运动向量的分量相对于在给定原始画像中宏块坐标(Mx,My)处的特定宏块而言具有最小的SAD值。Vx和Vy是由例如图20中所示出的程序得到的,其中Mx为0到44,My为0到29,函数abs(v)给出v的绝对值。图20的程序代码具有如下步骤:
(S1)此步骤是声明语句的集合。声明了变量Rx和Ry分别代表参考画像中像素的水平位置和垂直位置。变量x和y代表原始画像中像素的水平位置和垂直位置。如已描述的,Vx和Vy是运动向量的水平分量和垂直分量。第二个声明语句赋予Vdiff初始值,该初始值足够大以超过每个可能的SAD值。具体地说,考虑到像素的每对显示最大差值255的极端情况,Vdiff的初始值被设置为16×16×255+1。第三语句声明用于保存带有偏移量的SAD计算结果的diff。
(S2)第一个“for”语句用增量1将Ry从0增加到(479-15),而内循环中的第二个“for”语句用增量1将Rx从0增加到(719-15)。
(S3)第一行从Ry(候选块的y轴坐标)中减去My×16(目标块的y轴坐标),并且结果除以4。如果余数是0,则diff被清零。如果余数是1,则diff被设置为OfsA。如果余数是2,则diff被设置为OfsB。如果余数是3,则diff被设置为OfsA。注意,diff在此步骤获得了具体值。
(S4)另两个“for”语句用增量+1将y从0增加到15,在内循环中用增量+1将x从0增加到15。这些嵌套的循环计算原始画像中的目标宏块和参考画像中的候选块之间的SAD(如稍后将在图21A和21B中所描述的)。
(S5)将Vdiff(在先计算得到的SAD)和diff(新计算得到的SAD)相比较。如果Vdiff>diff,则Vdiff用diff代替。而且,此时将像素坐标Rx和Ry传递给Vx和Vy。此步骤S5实际上测试并且更新最小的SAD。
(S6)最后Vx和Vy被改写为向量分量;即,Vx用Vx-Mx×16代替,Vy用Vy-My×16代替。
图21A和图21B示出了在计算SAD过程中搜索像素的过程。如图20的程序中的步骤S4中所见,Yo[My*16+y][Mx*16+x]代表原始画像中的像素,Yr[Ry+y][Rx+x]代表参考画像中的像素。想要获得原始画像中的宏块M1和参考画像中的块M2之间的SAD。由于宏块M1在宏块坐标(My,Mx)=(0,1)处,所以M1内部的像素表示如下:
Yo[My*16+y][Mx*16+x]=Yo[0*16+y][1*16+x]
=Yo[y][16+x]
由于参考画像块M2在行#16、像素#16处开始,所以M2内部的像素表示如下:
Yr[Ry+y][Rx+x]=Yr[16+y][16+x]
通过在0到15的范围内改变x和y,步骤S4中的代码比较块M1和M2内部的所有像素对,由此得出M1和M2的SAD值。例如,对于x=0且y=0,Yo[y][16+x]=Yo[0][16](M1的左上角处的像素)和Yr[16][16](M2中的相应像素)之间的绝对差值在步骤S4计算出来。以x=15且y=15为另一例,Yo[y][16+x]=Yo[15][31](M1的右下角处的像素)和Yr[31][31](M2中的相应像素)之间的绝对差值在步骤S4计算出来。在SAD值被确定之前这种计算被重复256次。
步骤S3是根据本发明添加的步骤,而程序的其他步骤也可以在传统的运动向量估计过程中找到。如可以从上述示例见到的,本发明中提出的处理函数被实现为用于根据候选运动向量的垂直分量来设置不同偏移量的程序以及支持此处理的电路。利用这样的很小的额外电路和程序代码,本发明有效地避免了色度偏差的问题,否则在运动向量估计的过程中将遇到色度偏差的问题。
亮度误差
现参考图22到图35,我们将再次讨论先前在图3和图2中所解释的情形。即,想象其上暗的矩形物体图像以从左上到右下的方向移动的视频画像序列。画像的每帧由顶场和底场组成。假定在参考画像和原始画像中,对于背景,亮度值是200,对于物体图像,亮度值是150。下面将给出运动向量分量的各种图案和所得的差分画像。术语“差分画像”指的是代表给定原始画像和通过根据估计的运动向量来移动像素而创建得到的预测画像之间的差异的画像。
图22示出了当运动向量具有垂直分量4n+2时的参考画像和原始画像,图23示出了所得的差分画像。图24示出了当运动向量具有垂直分量4n+1时的参考画像和原始画像,图25示出了所得的差分画像。图26示出了当运动向量具有垂直分量4n+0时的参考画像和原始画像,图27示出了所得的差分画像。图28示出了当运动向量具有垂直分量4n+3时的参考画像和原始画像,图29示出了所得的差分画像。所有这些画像都是以隔行格式即作为顶场和底场的组合示出的。
现参考图22,运动向量和物体移动量+2相符。这使得移动后的参考画像元素可以很好的原始画像相吻合。从而图23的差分画像除了0误差分量外什么也没示出,在此情况下所得的SAD值也是0。但是,下面的情况一定会有预测误差。
参考图24,图示了具有垂直分量4n+1的运动向量。如从图25所见到的,所得的SAD值是2300(=50×46)。参考图26和图27,在4n+0的情况下得到SAD值600(=50×12)。参考图28和图29,在4n+3的情况下得到SAD值2100(=50×42)。
虽然,在本示例中,传统的系统将选取图22中所图示的最小SAD的运动向量,但是本发明可以选择图26中所示出的第二佳运动向量。即,大于600的偏移量OfsB使得可以选取具有垂直分量4n+0(图26)的运动向量,而不是具有垂直分量4n+2的最小SAD运动向量。
下面是另一组示例,其中矩形物体仅在垂直方向移动了一个像素的距离。图30示出了当运动向量具有垂直分量4n+1时的参考画像和原始画像,图31示出了所得的差分画像。图32示出了当运动向量具有垂直分量4n+0时的参考画像和原始画像,图33示出了所得的差分画像。图34示出了当运动向量具有垂直分量4n+2时的参考画像和原始画像,图35示出了所得的差分画像。
参考图30,示出了具有垂直分量4n+1的运动向量。由于该向量和实际的物体移动相符,所以如图31所示它的SAD值变为0。参考图32和图33,在4n+0的情况下SAD值高达2500。参考图34和图35,在4n+2的情况下SAD值是2300。
虽然,在本示例中,传统的系统将选取图30中所图示的最小SAD的运动向量,但是本发明可以选择图32中所示出的第二佳运动向量。即,大于2500的偏移量Ofsa使得可以选取具有垂直分量+0(图32)的运动向量,而不是具有垂直分量+1的最小SAD运动向量。
参考图36到图39,下面是另一组示例,其中矩形物体具有不统一(non-uniform)的亮度图案。图36示出了当运动向量具有垂直分量4n+2时的参考画像和原始画像,图37示出了所得的差分画像。图38示出了当运动向量具有垂直分量4n+0时的参考画像和原始画像,图39示出了所得的差分画像。
如图22的前述示例中的那样,图36的示例涉及+2的垂直物体移动量,但是矩形物体具有不统一的外观。具体地说,它具有40和160两个不同亮度值的水平斑纹纹理。如图37所示,具有+2的垂直分量的运动向量得出了没有误差的差分画像。如图38和图39中所示,当垂直向量分量具有值4n+0时,SAD变得大到9120(=160×12+120×6×10)。即使在这种情形下,等于9120或者更大的偏移量OfsB将使得“+0”运动向量被选取而不是上面的“+2”向量。但是,给出如此大的偏移量意味着允许选择任何较差的候选块。虽然可以避免色度偏差,但是“4n+0”运动向量引起如此大的亮度误差以致于所得的画像将产生可见的劣化。从而,在这种情形下“4n+2”向量对于画像质量是更佳选择,即使会出现一些色度偏差。
具有垂直分量4n+1、4n+3和4n+2的运动向量倾向于产生色度偏差。最终通过设置OfsA和OfsB为65280(=250×256)甚至可以排除所有这些向量,65280是色度分量可以取的理论上的SAD的最大值。但是,由于当会得到不合理地大的亮度误差的时候这根本不是期望得到的结果,所以本发明通过设置恰当的OfsA和OfsB来管理这些倾向于产生偏差的运动向量以维持施加于亮度和色度上的代价的平衡。
基于色度预测误差的偏移量
虽然SAD偏移量OfsA和OfsB可以被设置成由可得的比特率或者场景内容确定的适当固定值,但是本发明还设想以本部分将描述的自适应方式由色度分量的预测误差来确定这些偏移值。简而言之,根据本发明,运动补偿器12具有计算色度分量的绝对差值和的附加功能。此SAD值,称为Cdiff,实际上包括Cb上的绝对差值和Cr上的绝对差值,其是运动补偿器12在色度域上从原始画像中减去预测画像的过程中计算得到的。
图40示出了用于计算Cdiff的程序。给予此程序在运动补偿预测的输出中的色度的差分图像组。diff_CB[][]和diff_CR[][]具体地分别代表Cb和Cr的差分画像。注意,三个加了下划线的语句是用来计算Cdiff的新加步骤,而图40的程序的其他部分自从用来计算运动补偿参考画像和原始画像之间的差分的原始版本以来就已存在。
运动补偿器12还计算亮度分量的SAD值。设Vdiff代表宏块中的该SAD值。虽然宏块包含亮度分量的256个样本(16×16),但是因为4:2:0的颜色采样格式所以同一块中色度样本的数目只有64(8×8)。由于每个色度样本由Cb样本和Cr样本组成,所以Cdiff包含Cb和Cr的128个样本的数据,这意谓着Cdiff的值大约是Vdiff的一半。总之,在不存在色度偏差的理想情形下,亮度SAD值(Vdiff)和相应的色度SAD值(Cdiff)之间的关系如下:
2×Cdiff-Vdiff≈0 ....(1)
只要不存在色度偏差在大多数情况下条件(1))成立。当垂直向量分量具有值4n+1、4n+3或者4n+2并且存在色度偏差的时候,Cdiff变大,因而2×Cdiff>Vdiff。考虑此事实,所提出的方法根据下面的公式(2)和(3)给出偏移量OfsA和OfsB
其中i是垂直向量分量为4n+1或者4n+3的宏块的标识符,nA代表这样的宏块的数目。
其中j是垂直向量分量为4n+2的宏块的标识符,nB代表这样的宏块的数目。
上面所提出的方法还带有如下风险:产生太大的OfsA或者OfsB而不允许选取4n+1、4n+3和4n+2的垂直向量分量,实际的实现需要某适当的机制以通过例如为OfsA和OfsB设置上限来确保OfsA和OfsB的收敛。其他选项是随着过程前进逐渐减少OfsA和OfsB,或者当遭遇大的场景改变时,将OfsA和OfsB返回到它们的初始值。
代表Cdiff和Vdiff之间的关系的前述公式(1)实际上为了解释的目的而过度简化了。亮度和色度具有不同的动态范围,并且在近似单色的图像中它们的平衡和在色彩丰富的图像中的完全不同。从而首先应该使用下面的公式(4)。
α×Cdiff-Vdiff≈0 ....(4)
其中α是校正系数。而由于校正系数和系统中使用的A/D转换器的特性和许多其他因素有关,所以我们没有指定任何确定此次数的具体方法。下面的公式(5)是确定α的一个示例方法。即在没有色度偏差的条件下,在几个连续帧上计算Vdiff与Cdiff的平均比率,所得结果用作系数α。
其中m代表这样的宏块的数目,k是满足Vdiff(k)<OfsA并且Vdiff(k)<OfsB的宏块的标识符。关于Vdiff的条件是为了避免在由于OfsA和OfsB而使得向量被限制于4n+0的情况下的效应。利用通过这种方式计算的系数α,运动向量估计器如下确定偏移值OfsA和OfsB:
第二实施例
这部分描述本发明的第二实施例。为了避免色度偏差的问题,第一实施例向和具有垂直分量4n+1、4n+3或者4n+2的候选运动向量对应的SAD值加入例如OfsA和OfsB等的适当偏移量,从而减少了选取这些向量为最佳匹配的机会。另一方面,第二实施例利用不同的途径来解决同一问题。即,第二实施例通过自适应地在帧预测模式和场预测模式之间切换来避免色度偏差,而不是用偏移量来偏置SAD度量。
图41示出了第二实施例的概念视图。所示出的运动检测和补偿设备20具有运动向量估计器21和运动补偿器22。运动向量估计器21用色度亚采样后的视频信号的隔行序列的亮度分量来估计运动向量。该估计是在帧预测模式中完成的,在此模式中找到的最佳匹配运动向量被称为“帧向量”。运动向量估计器21根据此帧向量的垂直分量来选择(一个或多个)适当向量。
具体地说,帧向量的垂直分量可以取值4n+0、4n+1、4n+2或者4n+3(n:整数)。为了在随后的运动补偿中使用,如果帧向量的垂直分量是4n+0,则运动向量估计器21选取帧向量自己。在垂直分量是4n+1、4n+2和4n+3的情况下,运动向量估计器21切换它的模式并且在场预测模式中在参考画像中搜索运动向量。在此场预测模式中找到的运动向量被称为“场向量”。利用帧向量或者场向量,无论选择哪一个,运动补偿器22都产生预测画像并通过从原始画像中减去预测画像来计算预测误差。利用这样方式,第二实施例通过选择帧向量或者场向量避免了色度偏差。
MPEG-2编码器可以在一个宏块一个宏块的基础上选择帧预测或者场预测以寻找运动向量。一般地,当顶场和底场运动向量倾向于显示很好的一致性时使用帧预测,否则使用场预测。
在帧预测模式中,所得的运动向量数据包括从参考画像延伸到原始画像的向量的水平分量和垂直分量。图41的下半部分示出了帧预测模式中的运动向量Vb,Vb的数据由水平分量和垂直分量组成。另一方面,在场预测模式中,运动估计过程为每帧产生两个运动向量,从而所得的数据包括每个向量的水平分量和垂直分量以及指示哪个场是该向量的参考场的场选择位。图41的下半部分示出了两个示例场向量Vc和Vd。Vc的数据包括它的水平分量和垂直分量以及指示“顶场”为参考场的场选择位。Vd的数据包括它的水平分量和垂直分量以及指示“底场”为参考场的场选择位。
本实施例在所获得的帧向量具有4n+1、4n+2或者4n+3的垂直分量时启动场预测模式,并且通过如此做,避免了色度偏差的问题。下面将提供为什么可以达到此效果的细节。
图42示出了在场预测中如何避免色度偏差的问题。如先前在图11中所描述的,当帧向量是4n+2等时产生色度分量上的偏差,结果例如,将由顶场参考画像中的像素c2处的色度分量来预测顶场原始画像的色度分量c1。由于在该像素c2处不存在相应的色度分量,所以运动补偿器使用另一色度分量c3,c3在同一参考画像的底场中(这是在帧预测模式下发生的)。结果是原始色度分量c1和相应的参考色度分量c3之间具有的较大偏差。
在如上面的同样情形中,即使在参考像素c2中没有发现色度分量,在场预测中操作的运动补偿器也将选择同一场中的最近像素c6。即,在场预测模式中,每个运动向量的场选择位准许运动补偿器识别哪个场被选作参考场。例如,当相应的顶场色度分量缺失时,运动补偿器22可以从属于同一场的其他像素中选择替代性像素,而不会冒产生较大误差的风险。这和帧预测不同,帧预测模式在它错误地选择底场像素作为最近的替代性像素时可能引入较大的误差。
如从上面可以看出的,第二实施例首先在帧预测模式中扫描亮度分量,并且如果最佳向量具有4n+2、4n+1或者4n+3的垂直分量,则第二实施例把它的操作模式从帧预测变为场预测以避免色度偏差的风险。但是,和帧预测相比,场预测产生了更大量的向量数据来描述运动,从而增加了在编码后的视频流中向量数据的开销。为了解决此问题,本实施例采用了用于检测每个宏块中的色度边缘的色度边缘检测器,从而仅当色度偏差很可能引起对预测效率的显著影响时才启动场预测模式。
色度分量上的偏差实际导致预测误差增加的情况发生在当在例如物体图像和它的背景之间的边界存在强烈的颜色对比的时候。画像中这样的高对比部分被称为“色度边缘”。注意,色度边缘和亮度分量无关。因为黑色和白色两者都没有颜色(即,它们的Cb和Cr分量彼此一致)并且可以单独用亮度值来代表(例如,Y=oxff表示白色,Y=0x00表示黑色),所以白色背景上的黑色物体决不会引起色度边缘。
考虑例如在红(Cb<127,Cr>128)的背景色上包含蓝色(Cb>128,Cr<127)矩形物体的画像。这种颜色组合易于产生色度偏差。当物体具有和背景颜色类似的色调(蓝,红,无论哪一种)时,物体和背景仅能通过它们的亮度对比来区别,物体图像不会被色度偏差(如果有的话)破坏。
如从上面可以看到的,色度分量之间的相似性减轻了和运动向量估计有关的色度偏差的影响。实际上,人物和风景落入这种物体组中,它们的图像几乎不包含尖锐的颜色对比。对于这样的多个物体,运动向量估计器没有必要将它的操作从帧预测模式切换到场预测模式。另一方面,广告牌和说明字幕经常在物体边缘具有较大的颜色对比,从而在这些情况下,色度偏差将导致诸如颜色伸展到物体外的假象。从而需要色度边缘检测器来检测这种情况。
场向量
这部分解释场向量是如何确定的。图43是示出了帧向量的垂直分量和场向量的垂直分量之间关系的表。运动向量估计器21首先在帧预测模式中找到运动向量。如果运动向量的垂直分量是4n+2、4n+1和4n+3中的一个,并且如果色度边缘检测器指示存在色度边缘,则运动向量估计器21将自身切换到场预测模式,从而如图43的表中所示的那样估计场向量。
现参考图44到图46,下面将通过示例来解释图43中所指定的场向量。首先,图44示出了当帧向量具有垂直分量4n+2时的场向量。在这种情况下,场预测模式下的运动向量估计器21产生亮度域中的如下两个场向量。一个场向量(称为“顶场运动向量”)从顶场参考画像指向顶场原始画像、具有垂直分量2n+1、并且伴有指示“顶场”的场选择位。另一场向量(称为“底场运动向量”)从底场参考画像指向底场原始画像、具有垂直分量2n+1、并且伴有指示“底场”的场选择位。
上面在亮度域上的向量的(2n+1)垂直分量转化成色度域中的一半大的垂直分量(n+0.5)。相应于此向量分量的半像素部分的中间色度分量是通过相关参考场中的两个邻近像素的内插(或者平均)来预测得到的。在图44的示例中,色度分量f1和f2的估计分别是(Ct(n)+Ct(n+1))/2和(Cb(n)+Cb(n+1))/2。
虽然上面在场预测模式中进行的半像素内插有一些误差,但是此误差量小于帧预测模式下的误差量,其等于由4n+1或者4n+3的情况下的半像素内插所引入的误差(在先前描述的第一实施例中)。此差别的原因在于:在场预测模式下,半像素内插在相同的画像场中发生,即,它从同时存在于顶场或者底场的两个像素来计算中间点。相反,帧预测模式下的半像素插值从顶场中的一个像素和底场中的另一像素计算中间点(参见图13A和图13B)。
图45示出了当帧向量具有垂直分量4n+1时的场向量。在这种情况下,场预测模式下的运动向量估计器21产生亮度域中的如下两个场向量。一个场向量(或者顶场运动向量)从底场参考画像指向顶场原始画像、具有垂直分量2n、并且伴有指示“底场”的场选择位。另一场向量(或者底场运动向量)从顶场参考画像指向底场原始画像、具有垂直分量2n+1、并且伴有指示“顶场”的场选择位。
上面在亮度域上的向量的(2n)和(2n+1)垂直分量分别转化成色度域上的(n)和(n+0.5)垂直分量。通过邻近分量g2和g3的内插估计出中间色度分量g1。
图46示出了当帧向量具有垂直分量4n+3时的场向量。在这种情况下,场预测模式下的运动向量估计器21产生亮度域中的如下两个场向量。一个场向量(或者顶场运动向量)从底场参考画像指向顶场原始画像、具有垂直分量2n+2、并且伴有指示“底场”的场选择位。另一场向量(或者底场运动向量)从顶场参考画像指向底场原始画像、具有垂直分量2n+1、并且伴有指示“顶场”的场选择位。
上面在亮度域上的向量的(2n+2)和(2n+1)垂直分量分别转化成色度域上的(n+1)和(n+0.5)垂直分量。通过邻近分量h2和h3的内插估计出中间色度分量h1。
2:3上拉和3:2下拉
这部分描述其中所提出的校正运动向量的功能不得不禁用的某些情况。在前面的多个部分,我们讨论了如何防止在由隔行视频信号估计运动向量的过程中可能发生的色度偏差。第一实施例提出来添加SAD偏移量,第二实施例提出切换到场预测模式。但是,应该注意色度偏差问题是由视频帧的隔行引起的。即,非隔行的视频格式,称为“逐行扫描”,从本质上没有色度偏差。当源视频信号以逐行形式到达时不需要第一和第二实施例中所描述的运动向量校正功能。从而运动向量估计器不得不禁用它的校正功能。
一个需要考虑的问题是“2:3上拉”,2:3上拉是通过将单个视频画像分解成顶场画像和底场画像来将电影帧转换成电视兼容形式的过程。虽然这是一种隔行形式,但是因为顶场和底场最初是偶数行和奇数行同时采样的单个的逐行扫描画像,所以这些顶场和底场没有色度偏差。当源视频信号以这种隔行格式输入时,视频编码设备首先应用3:2下拉转换而不启动它的运动向量校正功能。
图47示出了2:3上拉和3:2下拉的过程。当记录电影时,运动画像照相机以24帧/秒(fps)的速度捕捉图像。从而需要帧速率转换以在30-fps的电视系统上播放24-fps的运动画像。这被称为“2:3上拉”或者“电视电影转换”。现假设24-fps的电影帧序列A到D将要被转换成30-fps的TV帧。帧A被转换成3个画像:顶场AT、底场AB和顶场AT。然后帧B被划分成底场BB和顶场BT。帧C被转换成底场CB、顶场CT和底场CB。帧D被划分成顶场DT和底场DB。以这种方式,持续时间为1/6秒((1/24)×4)的四个24-fps的帧被转换成持续时间为1/6秒((1/60)×10)的10个60-fps的场.
现考虑如下情况:提供给MPEG编码器一种已利用2:3上拉技术转换成TV广播格式的视频信号。在这种情况下,在场序列输入到MPEG编码器之前向场序列应用3:2下拉过程。此3:2下拉过程丢弃了编码过程中不必要的重复的场(例如,F3和F8)。然后,将所得的画像场序列提供给编码器。就运动而言第一顶场AT和底场AB是一致的,因为它们是由单个电影帧产生的。同样对由帧B到D组成的后续场也是如此。同样地3:2下拉的视频信号由顶场和底场组成。但是,在此类视频输入信号中场之间的一致性使得视频编码设备能够对它们进行编码而不需使用它的运动向量校正功能。
视频编码设备
这部分描述了用于和MPEG-2或者其他标准视频压缩系统一起使用的根据本发明的采用运动估计和补偿设备的视频编码设备。
图48示出了采用根据本发明第一实施例的运动估计和补偿设备10的视频编码设备的结构。图示的视频编码设备30-1具有如下构件:A/D转换器31、输入画像转换器32、运动估计器/补偿器10a、编码器33、本地解码器34、帧存储器35和系统控制器36。编码器33由DCT单元33a、量化器33b和可变长编码器33c构成。本地解码器34具有反量化器34和反DCT(IDCT)电路34b。
A/D转换器31将TV广播的给定模拟视频信号等转换成具有以4:2:2格式被采样的亮度分量和色度分量的数字信号流。输入画像转换器32将该4:2:2视频信号转换成4:2:0形式。所得的4:2:0视频信号存储在帧存储器35中。系统控制器36管理帧存储器35中的帧图像,控制视频编码设备30-1中的多个构件之间的交互,并且进行其他多种任务。
运动估计器/补偿器10a提供如第一实施例所描述的操作。运动向量估计器11从帧存储器35中读取原始画像的每个宏块,以及从帧存储器35中读取参考画像的更大区域,以在给出若干量的偏移量的同时找到相对于给定的原始宏块像素而言使像素的绝对差值和最小化的最佳匹配参考块。然后运动向量估计器11计算最佳匹配参考块和所关心的原始宏块之间的距离,从而得到运动向量。运动补偿器12也访问帧存储器35以取得视频信号并且由此通过使用检测出的运动向量并且从原始画像中减去相应的参考图像来创建预测画像。所得的预测误差被发出到DCT单元33a。
DCT单元33a进行DCT变换以将预测误差转换成一组变换系数。量化器33b根据由系统控制器36指定的量化参数对变换系数进行量化。其结果被提供给反量化器34a和可变长编码器33c。可变长编码器33c用哈夫曼编码算法对量化后的变换系数进行压缩,从而产生编码后的数据。
另一方面反量化器34a根据量化参数对量化后的变换系数进行反量化并且将结果提供给后继的IDCT单元34b。IDCT单元34b通过反DCT过程再生成预测误差信号。通过向预测画像加入再生成的预测误差信号,运动补偿器12产生本地解码的画像并且存储于帧存储器35中以在下一编码周期中用作参考画像。
图49示出了采用根据本发明第二实施例的运动估计和补偿设备20的视频编码设备的结构。图示的视频编码设备30-2除了它的运动估计器/补偿器20a和色度边缘检测器37外,基本上具有和图48中所解释的视频编码设备30-1同样的结构。运动估计器/补偿器20a提供了本发明第二实施例的功能。色度边缘检测器37是新构件,用于在运动估计器/补偿器20a需要确定选择帧预测模式还是场预测模式以寻找运动向量的时候检测宏块中的色度边缘。
色度边缘检测器37检查由输入画像转换器32提供的视频信号以寻找每个宏块中的色度边缘并且将结果存储于帧存储器35中。运动向量估计器21由从帧存储器35读出的原始画像、参考画像和色度边缘条件来估计运动向量。请参见本部分的前一半以得到进一步的细节。
结论
如由上面的解释可看到的,本发明避免了色度分量中的偏差问题而无需增加电路规模或者处理负荷。为实现上述目的,第一实施例在选取具有最小SAD值的最佳匹配块以计算运动向量之前向和参考画像中的候选块相应的SAD值加上适当的偏移量。该途径只需向现有的运动向量估计电路添加很小的电路。另一方面,第二实施例提供了色度边缘检测器以检测画像中的尖锐颜色对比,其用来确定色度偏差是否实际上会导致预测误差增加。第二实施例仅当色度边缘检测器建议从帧预测模式切换到场预测模式时才从帧预测模式切换到场预测模式,否则不进行专门的运动向量校正。以这种方式,第二实施例使编码后的视频数据量的增加最小化。
虽然上述第一和第二实施例是分开描述的,但是应该理解在实际实现中此两个实施例可以组合起来。例如,可以构建如下的运动估计和补偿设备,所述运动估计和补偿设备用第一实施例以普通的方式来控制候选的运动向量并且还采用第二实施例来应对第一实施例不能管理的异常情况。
前面所述的应该仅视为对本发明的原理的示例说明。而且,由于本领域的技术人员很容易想到各种改变和变化,所以不要将本发明局限于所示出和所描述的具体构造和应用,因此所有适当的改变和等价物都可以视为落入本发明权利要求和其等价物的范围内。