运动估计算法的制作方法

文档序号:7643087阅读:158来源:国知局
专利名称:运动估计算法的制作方法
背景技术
本发明一般涉及在数字视频编码器中具有特定用途的一种提高硬件效率的高性能运动估计算法。该运动估计算法也可用在其它视频信号处理器中,如用在场频转换器中。
为了尽可能减小传送给定图象质量的数字编码视频数据(“数字视频数据”)所需的带宽,多种不同的视频压缩算法已经被开发用于数字编码(“压缩”)视频数据。几个多媒体技术规范委员会已经建立并提出了用于编码/压缩音频和视频数据的标准。广为人知并被广泛接受的国际标准是由运动图象专家组(MPEG)提供的,它包括MPEG-1和MPEG-2标准。这些用于运动图象压缩的MPEG标准被用在现有的各类视频重放产品中,包括数字多用(或视频)盘(DVD)播放器、具有DVD重放能力的多媒体PC和卫星广播数字视频。
尽管MPEG标准通常提供高图象质量,但对于某些应用来说,数据速率/带宽要求太大了。视频会议是一个特别的应用,它一般不需要MPEG提供的编码分辨率,这是因为图象与图象之间的画面内容一般变化不大,例如在图象中,大部分运动被限定在与会者的头和肩所处的菱形区中。总之,由于在视频会议应用中运动图象序列几乎没有什么运动,因此图象与图象之间会有大量的冗余,结果,对于给定的图象质量来说,视频数据的压缩程度会非常大。而且,许多视频会议的可用带宽小于2M比特/秒,这相对于MPEG传输来说则太慢了。
与MPEG一样,H.261编码算法使用DCT(离散余弦变换)编码和差分编码的组合。但只使用I-图象和P图象。I-图象只使用该图象中所含的信息进行编码,所以它被称作“帧内编码”或“帧内”图象。P-图象使用基于过去参考(或“锚(anchor)”)图象的信息的运动补偿预测(或“运动估计”)进行编码,所以它被称作“预测”或“被预测的”图象。根据H.261标准,压缩的数字视频数据流分层排列在四个层中图象、块组(GOB)、宏块(MB)和块。图象是顶层。每个图象被分成块组(GOB)。GOB是CIF(公用中间格式)图象的十二分之一。每个GOB被分成33个宏块。每个宏块由16×16的像素阵列构成。
总之,就象MPEG一样,H.261使用运动估计来编码序列图象中那些可能由于运动而发生变化的部分。具体来说,H.261使用“运动矢量”(MV),根据在给定的N×N个像素的搜索范围内的当前宏块的像素与锚图象中的相应像素阵列之间的比较,这些运动矢量规定当前图象内的“宏块”相对于其在锚图象中的原始位置的位置。根据H.261标准,最小搜索范围是+/-7个像素,最大搜索范围是+/-15个像素。应当理解,在所有H.261应用中使用最大搜索范围并不一定能提高压缩信号的质量。在这方面,由于H.261应用能够以范围从64k比特/秒到1,084k比特/秒的各种比特率操作,所以实际采用的搜索范围会有所不同。例如,在高比特率下,相邻图象间的时间间隔较小,因此使用较小的搜索范围就可实现给定的图象质量。在低比特率下,情况正好相反,实现给定的图象质量则需要较大的搜索范围。
一旦一个特定宏块的运动矢量被确定,那么就从当前宏块的相应像素中减去由该运动矢量识别的锚图象中的最匹配宏块的像素值,随后,由此产生的差值使用离散余弦变换(DCT)算法进行变换,其产生的系数均被量化和霍夫曼编码(与运动矢量和其它信息所涉及的一样并识别该宏块)。在运动估计处理期间,如果在锚图象中未检测到充分的宏块匹配(即该差值超过一个预定的阈值量度),或者如果当前图象是I图象,则该宏块被指定为“帧内”宏块并且该宏块被相应地编码。
H.261标准并不规定所采用的运动估计算法的任何特定实施方案。换句话说,H.261为视频会议系统的制造商留下了开放的运动估计算法实施方案的细节。总之,各种测量方法和量度(metrics)被使用并被推荐用于计算与当前宏块最匹配(即最小差值/误差)的锚图象内的像素阵列的位置,并且各种运动估计算法被使用并被推荐用于搜索并确定锚图象中最匹配宏块的位置。这些运动估计(M.E.)算法一般由处理器上运行的软件来执行,处理器可以是PhilipsSemiconductors制造并销售的TriMedia处理器,它的任务是在视频会议系统中编码视频数据。其中心目的是尽快确定锚图象中最匹配宏块的位置,同时尽可能减小处理器执行该算法的负载,并保持一个可接受的误差/不准确度水平。实际执行运动估计搜索算法的硬件/软件有时被称作“搜索引擎”。就搜索引擎而言,其中心目的是优化其性能,同时尽可能减小执行运动估计算法所需的资源。简而言之,其基本目的就是尽可能减少计算量和计算时间。
用于估算匹配质量的最熟知的标准或量度是绝对差值之和(SAD)和方差之和(SSD)。SAD量度构成当前宏块中的N个像素中的每个像素(对于一个16×16的宏块来说,N=256)和估算的锚图象中的比较宏块的相应像素中的各个像素的差值的绝对值之和。SSD量度构成上述像素差的平方和。在一个给定运动估计搜索序列期间,在锚图象中得出最小SAD或SSD值(使用标准/量度均可)的候选宏块被选为“最佳匹配”。该宏块相对于当前宏块的水平和垂直位置(即x,y位置)(即x,y“位移”),或者其导数被规定为当前宏块的“运动矢量”。如果SAD或SSD的值(无论哪一个均可)大于预定的阈值,则可以确定当前宏块不存在合适的匹配,因此作为帧内宏块编码。通常,与SSD量度相比,SAD量度的计算简便快速,但准确性较低。换言之,SSD量度的计算与SAD量度的计算相比需要更大的处理器来发挥作用,因而从“成本函数”的观点来看则被认为比较“贵”。
在H.261领域中,假定搜索范围是+/-15个像素,那么就必须估算961个候选运动矢量,即在锚图象的给定搜索范围内总共有961个不同宏块大小的像素阵列,它们作为被估算的当前宏块的“最佳匹配”的候选宏块。被估算的每个运动矢量将得出一个不同的均方误差(MSE)差值。具有最小MSE值的运动矢量是真正的“最佳匹配”。由于每个运动矢量的估算需要进行大量的减法和加法,因此对于运动估计搜索引擎来说在给定搜索范围内计算961个不同运动矢量中的每一个矢量的MSE值是完全不现实的。这种理论上的“完全搜索算法”总会产生真正的“最佳匹配”。但是,由于从实施的角度来讲是不现实的,因此它仅仅被用作是一个参考或标准,以能够对更多不同的实际运动估计算法进行比较,这些实际的运动估计算法只估算给定搜索范围内的运动矢量全集的一个子集,有时把这种技术称作“二次取样”。使用这种二次取样技术的运动估计算法有时被称作“快速搜索算法”,这是因为它们与“完全搜索算法”相比可以被更快地执行并且计算量更小。
总之,在运动估算搜索速度和运动估算搜索精确度(以及由此产生的编码数字视频数据的图象质量)之间存在固有的折衷。而且,搜索引擎的性能与其最小化其产生的数据集的能力直接有关。因此,把当前宏块与参考图象中的所选“最佳匹配”宏块之间的MSE减少因数n将会把性能近似提高n的倒数。因此,其中心目的就是设计一种能够优化性能并在同时尽可能减小所需计算量和计算时间的运动估计算法(搜索策略)。在这方面,运动估计可被认为在数学上等价于一个找出成本函数的最小值的优化问题。
为了便于更好地理解本发明的原理,下面将回顾一下运动估计搜索的理论框架。概括来说,MSE差值的阵列(在H.261领域中的961个MSE差值)可被看作是一个“误差面”,它具有与误差成正比的高度。由于大多数视频会议的景物绝大部分是低空间频率的数据,因此该误差面的空间频率一般也较低并且是均匀波动的,其中一个或仅仅一些“谷值”围绕在最小误差周围。在H.261领域中的误差面的这些特性允许在搜索运动估计的最小误差值时使用严格的二次取样。特别是,与任意一个候选运动矢量估算相关的误差值可提供有关搜索空间的整个区域的信息,与两个候选运动矢量估算相关的两个误差值的比较可提供有关两个候选项之间的误差面的斜率的信息。异常情况会发生,就象在使棋盘格成像时一样。在这种图象中,在白方格匹配白方格的每种情况下,误差面将会受到抑制,并且确定在其中象和马也对齐的实际最小误差值的位置是困难的。因而可以理解,二次取样可能会导致错误的判断,并且在其它条件均相同的情况下,任何搜索策略的“成功”(准确度/分辨率)均与进行估算的取样数有关(即取样密度)。另外还应理解,根据二次取样而定的搜索策略的成功至少在某种程度上是依赖于误差面的连续性而定的。
从一个宏块到空间相邻的宏块以及从一帧中的一个宏块到下一帧中的相同宏块也会存在矢量相关性。举例来说,如果与会者的肘部在第n帧中向东北方向移动了三个像素,那么可以合理地推断出在相邻宏块中的与会者的手部在第n帧中也将具有相同类型的运动,并且两个宏块在第n+1帧中将具有相似的矢量。这些空间及时间相关性是不完善的,并且不可能被忽略。但是,完全依赖这些空间及时间相关性的搜索策略只能提供可从运动补偿/运动编码获得的一小部分益处。
前面提出的一些运动估计算法过分依赖于误差面的简单性,从而极大地降低了正确解释它的概率。举例来说,一类特别有效的运动估计算法是那些以“维度序列”方式运行的算法。尽管这类运动估计算法在细节上会有所不同,但对以“维度序列”方式运行的一种典型运动估计算法的以下描述将会呈现出使用这种运动估计算法的上述弱点。具体来说,根据该典型算法,第一系列的估算是沿着水平轴来执行的,以便沿着水平轴确定第一最小误差点的位置。第二系列的估算是沿着经过上面识别的第一最小误差点的垂直线来执行的,并且沿着该垂直线的第二最小误差点被识别。由于该搜索是在搜索空间的水平和垂直方向上交替进行的,所以它可被认为是“维度序列”处理。候选项之间的间隔则被减小,并且该维度序列处理被重复,以确定在所识别的每个最小误差点的一行候选项的位置。最后,如果时间允许的话,与最终“胜者”(即具有最小误差值的候选项)最接近的候选项可被估算。尽管这种维度序列方法所需的总估算数是最小的,但如果误差面包含不只一个“谷值”,那么在整个误差面中漏掉实际最小误差的概率是相当高的。
大多数运动估计算法是二维操作的,而且是在不断增加的分辨率(即下降的搜索范围)的几个级别中操作的,因此可将其看作为多级或多层的。一个典型的多层算法可使四个分级中的每一级的分辨率加倍。如

图1所示,在每一级中,间隔为45°的八个矢量均被估算。如果矢量尺寸是等概率的,那么这将表示一个最佳的解决办法。但是,这种策略并不匹配视频会议数据集中高峰值分布的矢量。在这方面,运动估计的大部分益处来源于小矢量,但上述典型的分层算法却将其大部分时间用在了搜索大矢量上。其行为也是完全不适合的,因为它忽略了建议修改搜索序列的误差面数据。在每一级中,“西北的”候选项首先被估算,第八个估算的是“西南的”候选项,而这与沿着该路线确定的误差面形状无关,即根据搜索序列期间作出的判断,该搜索序列并不适合。
如果希望减轻处理负担,这必然意味着减少估算的数目,那么最显而易见的策略是更粗略地取样。在这方面,由Compression Labs,Inc.(CLI)在二十世纪八十年代晚期制造并销售的商标名为“Rembrandt”的56Kbs编解码器采用了一种运动估计算法,如图2所示,该算法在每个级别中估算间隔为90°的四个矢量,在其它级别中则将该模式旋转45°。在偶数级中,位移是N、E、W和S,在奇数级中是NE、SE、SW和NW。在视频会议应用中,尽管这种运动估计算法对于为其设计的应用来说是良好工作的,但这个搜索方案由于取样少的原因而往往漏掉最佳矢量。
本发明的一个优选实施例包括一种方法,在执行运动估计的处理中,该方法用于识别当前图象中的当前像素块的最佳运动矢量。该方法通过下面的步骤来执行对于每个候选运动矢量来说,通过计算表示当前像素块的像素值与在参考像素块中的相应数目的像素值之间的差值的误差值来估算当前像素块的多个候选运动矢量。当估算每个候选运动矢量时,最好在几个点检验误差值,同时计算误差值,并且一旦确定该候选运动矢量的误差值超过预定阈值时,则停止该运动矢量的估算。具有最低计算误差值的候选运动矢量被选为当前像素块的最佳运动矢量。
候选运动矢量最好在两个不同阶段中估算,包括第一阶段估算具有成为最佳候选运动矢量的内在高概率的候选运动矢量的子集;以及第二阶段在参考图象的预定搜索区中执行空间搜索,以便识别每个相应的候选运动矢量估算的预定搜索区中的一个不同的参考像素块。
候选运动矢量的子集最好包括第一候选运动矢量,它对应于与当前图象中的当前像素块的位置相同的参考图像中的参考像素块的位置;第二候选运动矢量,它对应于与当前图象中的当前像素块的位置相同的前个图像中的参考像素块的位置;及第三候选运动矢量,它构成先前为当前图像中的之前像素块确定的最佳运动矢量。优选地,如果确定第一候选运动矢量的误差值低于预定的运动估计终止阈值,则不执行另外的估算。
空间搜索最好在多个不同的搜索级别中执行。在目前优选的实施例中,在每个搜索级别的空间搜索是可重入的,并在每个搜索级别被优选执行,其方式是重新确定空间搜索的中心是被识别为空间搜索中的该点的最佳候选运动矢量,该最佳候选运动矢量是其误差值低于在空间搜索的该点发现的最低误差值的矢量。优选地,根据空间搜索期间进行估算的结果,空间搜索的搜索模式适合于以试探的方式变化。
该方法由用来操作软件实施的状态机的软件来执行。该软件最好包括定义搜索序列的源代码和在规定存储空间中构建状态机的函数。源代码最好只在初始化时执行一次。该搜索序列最好是自适应试探搜索序列。通过从预定存储空间进行的单一读取,在搜索序列的任意一点的源代码可识别要被估算的下一个候选运动矢量的合适x,y位置。另外,根据表示一个新的最佳候选运动矢量已被识别或者表示两个最近估算之间的比较的测试比特的极性,通过在存储空间中读出两个位置之一,在搜索序列的任意一点的源代码可识别要被估算的下一个运动矢量。
本发明的详细描述下面将描述本发明的一个典型实施例的运动估计算法。该运动估计算法在处理器上运行的软件中执行,该处理器可以是PhilipsSemiconductors制造并销售的TriMedia处理器。
本发明的运动估计算法将以不同的方式来获得高性能并在同时尽可能减少计算时间和计算量,下面对每一种方式均进行描述。
根据本发明的第一创新方面,最好在几个点检验所有正在进行的估算,如果当前值大于以前识别的最佳值,则立即中止该估算,以节省大量的计算时间和计算量。应当认识到,重要的是尽可能识别最小的可能误差值,以便最大限度的节省计算量,而这可通过使用这种估算中止方案实现。
根据本发明的第二创新方面,最佳运动矢量的搜索被分成粗略搜索阶段和精确搜索阶段。在粗略搜索阶段中,最可能的候选运动矢量(即,那些具有最低误差值的具有最高固有概率的候选运动矢量)被估算。如果这些最可能的候选运动矢量中的任意一个矢量近似正确的话,它们将得出一个小误差值。在精确搜索阶段,空间搜索是在多个(如3个)不同搜索级别中进行的。粗略搜索阶段也可被看作是“预先的空间搜索阶段”。
根据该特定的典型实施例,如下是三个最可能的候选矢量。被估算的第一个最可能的候选运动矢量是(0,0),即在参考帧中的相同宏块的矢量。在该典型实施例中,所使用的搜索估算量度是SAD。如果SAD值低于一个预定阈值(在该典型实施例中被设置为“384”),则通过该运动估计处理程序不能期望明显的增益,因而立即退出该功能。为了充分利用该判断结果,该调用功能(calling function)应当把返回的低误差值解释为VCAP“不编码”命令,并跳过正向DCT以及该运动估计。这个措施本身就可明显地节省计算时间和计算量。在这方面,据估计,在H.261编码应用中的总计算负担的大约60%都用于运动估计处理。在几乎所有视频会议应用中的很大一部分宏块(如33%的宏块)可被简单地“填满”,因而几乎不需要任何处理时间和系数数据。因此,上述措施可潜在地大大减少运动估计的计算负担。
被估算的第二个最可能的候选矢量是在之前帧中的相同宏块的矢量。这个选择是以下面的事实为基础的,即在一个特定区域中,几个帧之间的速度和方向常常是连续的,并且在一帧中经历的运动与下一帧中的运动密切相关。
被估算的第三个最可能的候选矢量(除了该帧左边的宏块)是为相同帧的前个宏块确定的运动矢量。同样,该选择是基于以下的事实,即如果运动区域大于一个宏块,则整个宏块组将具有类似的运动矢量。
如图3所示,根据本发明的第三创新方面,在精确搜索阶段的前两个搜索级别,彼此间隔60°的六个候选项被估算。在前两个搜索级别中,两个“六角形”搜索模式被按顺序估算。第一搜索模式具有(x,y)坐标(4,0)和(2,3),有四个共轭对,第二搜索模式具有(x,y)坐标(2,0)和(1,2),有四个共轭对。全部八个外围候选项在第三搜索级中估算。作为比较,经典的分层搜索执行1+8+8+8+8=33个SAD估算,而本发明的运动估计算法采用的典型搜索包括粗略搜索阶段(即在空间搜索之前)在内执行3+6+6+8=23个SAD估算。但应当认识到,根据上述的估算中止方案,这些估算中的大部分在进行过程中都将被减弱。
根据本发明的第四创新方面,在每个搜索级别中执行的搜索以所识别的最佳候选项为中心,而不是以搜索区的中心为中心。利用这种方式,正如所分析的一样,误差面是沿着它所指引的任意一个方向的斜面的随之的“下坡”。具体来说,在每个搜索级别中执行的搜索是“可重入的”,也就是说,在每个搜索级别中,无论何时识别出具有新的最小误差值(即低于以前识别的最佳误差值)的候选运动矢量,其位置均成为另一组估算即彼此间隔60°的六个候选项的中心。估算以这种方式继续,直到确定最近的“最佳”候选运动矢量由六个“次级”候选运动矢量(在精确搜索阶段的第三级别中为八个,这可从下面的描述中看出)围绕为止。应当认识到,构成视频会议应用的大部分的小矢量(例如,处在零误差值的周围)只需要少数的额外估算来完成重入。大矢量则需要更多的估算,但它们并不常见。
利用这种方法将找出具有真正“总体”最小误差值的候选运动矢量,或者将找出具有所谓的“局部”最小误差值的候选运动矢量。在任意一种情况下,一些运动补偿增益将会产生,当然,如果未找到具有真正“总体”最小误差值的候选运动矢量,则该增益将会减小。通过这种方式,较小的第一搜索模式可快速地沿着误差面的斜面到达远处的最小值。就是在这个区域中,运动估计算法应当花费一些时间来确定最小值的位置,而不是有规律地把整个搜索空间分类。
尽管这个“捷径”容易出现一些错误,但在视频会议应用的上下文中的整个性能通过该应用中的视频数据的统计行为得以加强。举例来说,在误差面的东向和西向均较低的情况下,西向的最小值最可能被识别,这仅仅是因为该方向首先被估算,从而使其难以在向东方向上跟踪误差面。尽管如此,即使在这种及类似情况下找到的错误最小值往往也是一个小数值,从而会减轻该误差的反面效果。
根据本发明的第五创新方面,对于每组估算来说,搜索区域或范围被减小,例如,只估算一个规定像素位移(搜索区域)内的候选运动矢量,例如从最近识别的“最佳”候选运动矢量的位置开始的+/-四个像素。这种技术基于以下的观察,即由于绝大多数的最佳运动矢量具有小矢量值,因此在每个搜索序列开始时估算六个非常远的候选项是非常浪费处理器资源的。尽管在快速识别具有大矢量值的运动矢量时较大的搜索范围是非常有效的,但其在这种不常见情况下的速度将会付出很大的代价。在大部分情况下,减小搜索范围的技术仍然能够用来识别最佳运动矢量。在真正的最小值较远的少数情况下,假设在最小值的通常方向上的第一级别的候选项具有比零候选项低的值,并且搜索可从该点开始进行。当然,任意的误差面构型都是可能的,在某些情况下,该假设将会被证明为是错误的,从而使该算法难以确定远处最小值的位置。在这方面,应当理解,本发明的运动估计算法并不能保证成功,但它会尽力提高成功的概率。该算法的每个方面并不是必然以统计概率为基础的,而且大部分性能是通过下面的步骤来实现的,即提高确定非常远的大量小矢量最小值的位置的概率,同时只是略微降低确定非常远的不常见大矢量最小值的概率。
根据本发明的第六创新方面,搜索模式根据搜索历史以试探方式自适应变化。传统的分层搜索模式是从左向右,从上向下,没有任何变化。本发明的算法的可重入方面有利于根据搜索历史来改变搜索序列。假定一种简单的情况,如果“西边”的候选项被首先估算,并在随后发现“东边”的候选项最小,则搜索模式应当重新确定所找到的最佳矢量(即“东边”的候选项)为中心并且重新开始。为了把该发现考虑进去,搜索模式可自适应变化。在这方面,该算法被编程以具有以“东边”候选项开始下一组估算的智能,并且不再估算新的“西边”的候选项,这是因为它在重新确定搜索中心之前是旧的“中心”候选项,因此早已在以前的估算序列中估算过。通常,本发明的算法被编程以使用从以前的估算所获得的知识来避免重复处理,并且自适应改变搜索来尽可能提高搜索效率。由于(精确搜索阶段的)三个搜索级别中的每个级别可被重入多次,其中搜索中心在六个或八个方向中的几个方向上移动,所以可利用字面上的数百个搜索模式来估算矢量阵列,每一种模式均针对所遇到的特定误差面进行优化(尽可能具有较少的给定参数)。
根据本发明的第七创新方面,该运动估计算法可由软件执行状态机来执行。搜索智能驻留于由函数stseq所指的512个字的存储空间中。包含其自身地址的存储空间仅仅是状态机的定义。定义搜索模式的源代码只需在初始化时执行一次。
在搜索序列的任意一点,要被估算的下一个候选矢量合适的x,y位置可利用从512个字的存储空间的单一读出来获得。在搜索序列的任意一点,根据形成存储器(缓冲器)地址的最高有效比特(MSB)的单个“测试”比特的极性(‘1’或‘0’),两个矢量之一被读出。通常,该“测试”比特表示已经发现一个新的“最佳”候选矢量;在其它情况下,它表示两个最近估算之间的比较结果。以此方式,在每个测试点,在接着要估算的两个潜在候选矢量之间进行二元选择。剩余的8个地址比特由缓冲器本身提供。通过把位移设置为一个不能接受的值,则可在影响到给定组的位移或者把当前状态解释为比较请求之间进行选择。随后,该地址被增加。
应当理解,任何运动估计搜索策略,无论多么复杂,都可被嵌入状态机的缓冲器中,且不会增加处理器的开销,如TriMedia的周期。执行时间将大体保持在一个估算(即SAD计算)所需周期的候选矢量估算时间数,如果一个良好的候选项被快速定位,则可以减少一些时间。还应当理解,上述的特定搜索方案只是不限数目的方案中的一种,这些方案可被容易地结合,也许还具有非常优良的效果。
现在参考图4A-4D,可以看到表示构成本发明目前所考虑的优选实施例的上述运动估计算法的流程图的连续部分。参考图4A,该算法开始于步骤10,并在步骤20立即进入第一搜索阶段。在第一搜索阶段,第一个最可能的候选运动矢量(MV)的SAD在步骤30被计算。在步骤40,判断SAD是否小于一个预定阈值,该阈值优选为之前的最小SAD。如果判断结果为“是”,则整个算法在步骤50结束(退出)。如果判断为“否”,则该算法前进到步骤60,在步骤60,第二个最可能的候选运动矢量(MV)的SAD被计算。该算法则前进到步骤70,在步骤70,第三个最可能的候选运动矢量(MV)的SAD被计算。接着,在步骤80,该算法前进到第二搜索阶段。
现在参考图4B,在步骤90,该算法进入第二搜索阶段的第一搜索级别。接着,在步骤100,通过计算每个此类候选MV的SAD,彼此间隔60°的6个候选MV被估算。在步骤110,判断该SAD是否小于一个预定阈值。如果在步骤110判断结果为“是”,则在步骤150通过重新确定新最佳候选MV,即具有新的最小SAD的候选MV的搜索中心来重新进入该搜索。该算法随后前进到步骤160,在步骤160,围绕着新的最佳候选MV的6个新候选MV被估算,其中搜索模式最好以试探方式来变化。每个估算的新候选运动矢量的SAD被计算。该算法随后返回到步骤110。如果在步骤110的判断结果为“是”,则在步骤120判断全部6个候选MV是否均被估算。如果在步骤120的判断结果是“否”,则该算法前进到步骤130,在步骤130,下一个候选MV被估算,该算法返回至步骤110。如果在步骤120的判断结果为“是”,则在步骤140,该算法前进到第二搜索阶段的下一个(第二)搜索级别。
现在参考图4C,在步骤170,该算法进入第二搜索阶段的第二搜索级别。接着,在步骤180,通过计算每个此类候选MV的SAD,彼此间隔60°的6个候选MV被估算。在步骤190,判断SAD是否小于一个预定阈值,该阈值最好是之前的最小SAD。如果在步骤190的判断结果为“是”,则在步骤230通过重新确定新的最佳候选MV,即具有新的最小SAD的候选MV的搜索中心来重新进入搜索。该算法随后前进到步骤240,在步骤240,围绕着新的最佳候选MV的6个新候选MV被估算,其中搜索模式最好以试探方式来变化。每个被估算的新候选运动矢量的SAD被计算。该算法随后返回到步骤190。如果在步骤190的判断结果是“否”,则在步骤200判断全部6个候选MV是否均被估算。如果在步骤200的判断结果是“否”,则该算法前进到步骤210,在步骤210,下一个候选MV被估算,并且该算法返回至步骤190。如果在步骤200的判断结果为“是”,则在步骤220,该算法前进到第二搜索阶段的下一个(第三)搜索级别。
现在参考图4D,在步骤250,该算法进入第二搜索阶段的第三搜索级别。接着,在步骤260,通过计算每个此类候选MV的SAD,彼此间隔45°的8个候选MV被估算。在步骤270,判断SAD是否小于一个预定阈值,该阈值最好是之前的最小SAD。如果在步骤270的判断结果为“是”,则在步骤310通过重新确定新的最佳候选MV,即具有新的最小SAD的候选MV的搜索中心来重新进入搜索。该算法随后前进到步骤320,在步骤320,围绕着新的最佳候选MV的8个新候选MV被估算,其中搜索模式最好以试探方式来变化。该算法随后返回到步骤270。如果在步骤270的判断结果是“是”,则在步骤280判断全部8个候选MV是否均被估算。如果在步骤280的判断结果是“否”,则该算法前进到步骤290,在步骤290,下一个候选MV被估算,并且该算法返回至步骤270。如果在步骤280的判断结果是“是”,则在步骤300,该算法结束(退出)。
尽管未在上述典型实施例中执行,但也可在包括大范围搜索区的第一搜索阶段中使用较粗略的搜索估算量度,如SAD,并在包括较小搜索区的第二搜索阶段中执行较精确的搜索估算量度,如SSD。利用这种方式,快速SAD估算量度可在搜索区较宽时使用,并且更高计算强度的SSD估算量度可在搜索区变窄之后使用。
图5表示根据本发明的视频信号处理设备。该设备包括运动估算器ME,用于不依赖于估算的运动矢量来执行视频信号。该视频信号处理器可以是诸如MPEG或H.261型的数字视频编码器。视频信号处理器VSP也可以是场频转换器,如用于获得100Hz电视信号的场频倍频器,该100Hz电视信号在图5的视频信号处理设备的100Hz显示器D上显示。
尽管上面已经详细描述了本发明,但应当理解,对于本专业技术人员来说显见的在此所教导的本发明基本概念的许多变化和/或改进和/或其它实施例仍然在所附权利要求定义的本发明的宗旨和范围之内。
权利要求
1.一种用于在执行运动估计的处理过程中识别当前图像中的当前像素块的最佳运动矢量的方法,包括识别当前像素块的多个候选运动矢量;对于每个候选运动矢量来说,通过计算表示当前像素块的像素值与参考像素块中的相应数目的像素值之间的差值的误差值来估算(30,100,180,260)当前像素块的多个候选运动矢量;并且选择具有最低计算误差值的候选运动矢量作为最佳运动矢量;其中该估算包括第一阶段(20)包括估算(30,60,70)具有成为最佳候选运动矢量的内在高概率的候选运动矢量的子集;以及第二阶段(80)包括在参考图象的预定搜索区中执行空间搜索(90,170,250),以便识别每个相应的候选运动矢量估算的预定搜索区中的一个不同的参考像素块。
2.如权利要求1所述的方法,其中第二阶段(80)在多个不同搜索级别(90,170,250)中执行。
3.如权利要求1所述的方法,其中该空间搜索(90,170,250)是一种自适应试探搜索。
4.如权利要求1所述的方法,其中候选运动矢量的子集包括第一候选运动矢量,它对应于与当前图象中的当前像素块的位置相同的参考图像中的参考像素块的位置;第二候选运动矢量,它对应于与当前图象中的当前像素块的位置相同的前个图像中的参考像素块的位置;及第三候选运动矢量,它构成先前为当前图像中的之前像素块确定的最佳运动矢量。
5.如权利要求4所述的方法,其中如果确定第一候选运动矢量的误差值低于预定的运动估计终止阈值,则不执行另外的估算(50)。
6.如权利要求1所述的方法,其中空间搜索(90,170,250)通过重新确定空间搜索的中心(150,230,310)为被识别为空间搜索中的该点的最佳候选运动矢量来执行,该最佳候选运动矢量是其误差值低于在空间搜索中的该点发现的最低误差值的矢量。
7.如权利要求1所述的方法,其中空间搜索(90,170,250)的搜索模式根据空间搜索期间进行估算的结果而自适应变化。
8.如权利要求1所述的方法,其中该方法由软件来执行,包括定义搜索序列的源代码;和在规定存储空间中构建状态机的函数。
9.如权利要求8所述的方法,其中该搜索序列是一种自适应试探搜索序列。
10.如权利要求8所述的方法,其中通过从预定存储空间进行的单一读取,在搜索序列的任意一点的源代码可识别要被估算的下一个候选运动矢量的合适的x,y位置。
11.如权利要求10所述的方法,其中根据表示一个新的最佳候选运动矢量已被识别或者表示两个最近估算之间的比较的测试比特的极性,通过在存储空间中读出两个位置之一,在搜索序列的任意一点的源代码可识别要被估算的下一个候选运动矢量。
12.如权利要求1所述的方法,还包括在估算每个候选运动矢量时,检验误差值并在同时计算误差值,并且一旦确定该候选运动矢量的误差值超过一个预定阈值时就中止该候选运动矢量的估算。
13.一种用于在执行运动估计的处理过程中识别当前图像中的当前像素块的最佳运动矢量的设备,该设备包括用于识别当前像素块的多个候选运动矢量的装置;对于每个候选运动矢量来说,通过计算表示当前像素块的像素值与参考像素块中的相应数目的像素值之间的差值的误差值来估算(30,100,180,260)当前像素块的多个候选运动矢量的装置;并且选择具有最低计算误差值的候选运动矢量作为最佳运动矢量的装置;其中该估算装置包括第一装置(20)包括估算(30,60,70)具有成为最佳候选运动矢量的内在高概率的候选运动矢量的子集;以及第二装置(80)包括在参考图象的预定搜索区中执行空间搜索(90,170,250),以便识别每个相应的候选运动矢量估算的预定搜索区中的一个不同的参考像素块。
14.一种数字视频编码器,包括如权利要求13所要求的用于估计运动矢量的设备;以及不依赖于运动矢量而产生压缩视频信号的装置。
15.一种视频信号处理设备,包括如权利要求13所要求的用于估计运动矢量的设备(ME);以及不依赖于运动矢量而处理视频信号的装置(VSP)。
全文摘要
一种用于在执行运动估计的处理过程中识别当前图象中的当前像素块的最佳运动矢量的方法。该方法通过下面的步骤来执行:对于每个候选运动矢量来说,通过计算表示当前像素块的像素值与在参考像素块中的相应数目的像素值之间的差值的误差值来估算(30)当前像素块的多个候选运动矢量。当估算每个候选运动矢量时,最好在几个点检验误差值,同时计算误差值,并且一旦确定该候选运动矢量的误差值低于预定阈值,则中止(40,50)该候选运动矢量的估算。具有最低计算误差值的候选运动矢量被选为当前像素块的最佳运动矢量。候选运动矢量最好在两个不同阶段中估算,包括:第一阶段:包括估算具有成为最佳候选运动矢量的内在高概率的候选运动矢量的子集;以及第二阶段(80):包括在参考图象的预定搜索区中执行空间搜索,以便识别每个相应的候选运动矢量估算的预定搜索区中的一个不同的参考像素块。
文档编号H04N7/01GK1381145SQ01801368
公开日2002年11月20日 申请日期2001年3月13日 优先权日2000年3月23日
发明者A·E·拉克特 申请人:皇家菲利浦电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1