用于半象素sad产生的方法和装置的制作方法

文档序号:6412713阅读:202来源:国知局
专利名称:用于半象素sad产生的方法和装置的制作方法
技术领域
本发明涉及运动估计编码器,尤其涉及使用绝对差值取和(SAD)计算的半象素运动矢量的确定。
在视频压缩系统中,通常需要从一帧到下一帧地估算象素块的运动。不是发送视频信息的全帧,而只是发送需要发送的象素块的变化增量或运动信息,即通常所述的运动矢量。视频压缩编码器执行这样的处理,即它产生比原始图象比特速率大大地降低的一个图象比特速率。以原来的初始的帧开始,视频解码器能够通过使用先前针对在帧中的每一块计算出的运动矢量来重建该原有帧。对运动估计处理更深入的讨论可见由Vasudev Bhaskaran和Konstantinas Konstanfinides所著的“图像与视频压缩标准,算法和结构”。
目前存在的视频压缩编码器可以执行对于半象素的运动估计。但是它们通常是规模大并且价格高。从制造更小和价格低廉的产品的长期趋势来看,非常希望降低视频压缩编码器的规模、重量、费用和复杂性。特别地,如果其规模和费用都被降低的话,该视频压缩编码器的运动估计部分将受益非浅。
因此,本发明的目的是提供一个克服已有技术的缺点的半象素SAD发生器。
本发明的另一目的是提供计算用于环绕一个全象素位置的全部八个可能半象素位置的SAD值的一个半象素SAD发生器。
本发明的另一目的是提供在串行基础上计算该用于每一半象素位置的SAD值的一个半象素SAD发生器。
本发明的再一个目的是提供这样一个半象素SAD发生器不需要同时得到全部搜索窗口的象素以及它们对应的内插半象素,或被存取一次以上。
本申请公开一种用于计算针对半象素的SAD值的新颖装置和方法。本发明以串行方式内插来自包含在一个搜索窗口中的全象素的半象素值。随后这些半象素与在一个模板宏块中的象素相比较。随后产生差值并累加在寄存器中。该搜索窗口和模板宏块象素被移位到FIFO装置中从而有多个加法器产生半象素值。锁存器被用于存储和延迟该半象素值,以便输入到一组减法器。减法器计算该内插的半象素和该模板宏块象素之间的差值。该减法器的输出被累加而产生八个SAD值。
因此,根据本发明优选实施例提供一个用于产生在包含在一个搜索窗口存储器中的全象素块和包含在一个预定义模板宏块存储器中的模板象素之间的半象素的绝对差值取和(SAD)的一个装置,该装置包括用于保持包含在该搜索窗口中的全象素的搜索窗口先进先出(FIFO)装置;用于保持包含在该模板宏块中的模板象素的模板宏块FIFO装置;连接到该搜索窗口FIFO装置的内插装置,该内插装置用于计算环绕每一全象素的半象素值;连接到该内插装置和该模板宏块FIFO装置的减法装置,该减法装置用于计算在该半象素和该模板象素之间的差值;连接到该减法装置的绝对值装置,该绝对值装置用于产生该减法装置的输出的绝对值;连接到该绝对值装置的输出的累加器装置,该累加器装置用于保持由绝对值装置输出的用于每一半象素SAD值的绝对差值的和;以及,控制器装置,用于产生适当的控制信号以便启动该半象素SAD值的产生。
此外,搜索窗口FIFO装置包括足够数目的寄存器,以便保持全象素的一个整行加上来自模板宏块的随后行的至少一个象素。该模板宏块FIFO装置包括足够数目的寄存器,以便保持全象素的一个整行加上来自模板宏块的随后行的至少一个象素。内插装置包括适当放置的加法器和寄存器,以便计算环绕每一全象素的半象素值。这种减法装置包括两输入端减法器。
该减法装置和该绝对值装置共同包括结合一个绝对值函数的两输入端减法器。该累加器装置和该绝对值装置共同包括在其输入端采用一个绝对值函数的一个累加器。每一全象素和每一模板象素只分别地从模板宏块存储器和该模板宏块存储器存取一次。
根据本发明优选实施例还提供一个用于产生在包含在一个搜索窗口存储器中的一个全象素块和包含在一个预定义模板宏块存储器中的模板象素之间的半象素的绝对差值取和(SAD)的一个方法,该方法包括步骤提供搜索窗口先进先出(FIFO)装置,用于移位通过包含在该搜索窗口中的全象素;提供一个模板宏块FIFO装置,用于移位通过包含在该模板宏块中的模板象素;对于每一全象素来说,只内插一次在水平、垂直和对角线的方向环绕每一全象素的半象素的值,计算在半象素和该模板象素之间的差值,确定计算步骤期间产生的差值的绝对值,以及累加在用于对每一半象素SAD值进行确定的步骤期间产生的绝对差值的和。
每一全象素和每一模板象素只分别地从该搜索窗口存储器和该模板宏块存储器存取一次。
在此以实例的方式参照附图描述本发明,其中

图1示出一个取样搜索窗口存储器的一部分以及对应于4×4大小模板宏块的一个区域;图2示出一个取样搜索窗口存储器的一部分、对应于4×4大小模板宏块的一个区域、以及环绕每一全象素的八个半象素;图3示出匹配定位在该框中的模板宏块的八个可能最佳半象素之一;图4示出与在该模板宏块中的左上端象素相关的八个半象素位置;图5示出与在该模板宏块中的左上中间的象素相关的八个半象素位置;图6是一个高等级框图,示出根据本发明一优选实施例构成的半象素SAD发生器;以及,图7示出一个取样搜索窗口的一部分,示出全象素和它们的相关半象素,以及模板宏块象素。
如先前所述,视频压缩技术目前被使用在广泛的应用中。例如MPEG 2的视频压缩标准详细定义视频编码器的输出规范。视频编码器的作用是把视频信息流从其相当大的原始带宽压缩到一个小得多的带宽。因此该编码的视频信息流能在一个通信信道上发送或存储在一个存储介质中。不管是在哪种情况中,通信信道的带宽要求都被大大地降低,并且为了保持视频节目所需要存储的信息量也被大大地降低。例如,以MPEG 2标准编码的一个视频信息流需要估计在连续的帧之间的运动中的变化。这种处理被称为运动估计。运动估计处理的更深入的讨论可见由Vasudev Bhaskaran和Konstantinas Konstantinides所著的“图像和视频压缩标准、算法和结构”的第11章,在此被结合作为参考。首先,帧被分解成例如16×16象素的象素块,然后针对在当前帧中的每一块寻找在先前帧中的最佳匹配块。不是把相同的块再一次地全部发送,而是发送该块从先前帧到当前帧的位置中的变化(即运动),这就大大地减小了需要被发送的数据量。
公开和描述的本发明在一个视频压缩系统的背景中实施一种用于产生针对在一个搜索区域中的数据的半象素SAD的(绝对差值的和)值的装置和方法。但是该决不限制本发明对于其它领域的应用。本发明可被应用在需要处理来源于相对于一个搜索窗口的数据的一个模板的内插值(例如寻找一个最佳匹配)的任何类型的系统中。此外,计算准则可以是在该数据模板中的数据和在该搜索窗口中的数据的任何一个函数(例如使用SAD值选择最佳匹配)。
在此介绍的视频压缩方案的范例使用一个运动估计方法,采用具有一个特定大小的搜索窗口。在当前帧中的把被称为模板宏块的每一象素块都和在该搜索窗口中的含有先前帧的数据的每个块相比较。通常,搜索窗口是帧面积的一个子集而不是整个帧,因为从一帧到下一帧该目标的移动不大可能相距很远。使用一个减小的搜索窗口将降低为了寻找最佳匹配块所需要的计算时间。
贯穿本申请文件使用的范例中,该搜索窗口包括多个4×4象素块。在该搜索窗口中的数据是以逐个块为基础处理的。搜索在搜索窗口的左上角开始,因此对于在该左上角中的块执行匹配函数。随后该块被右移一个象素并且再次执行匹配函数。该处理被逐个象素地重复,直到达到象素第一行的末尾为止。执行全象素搜索的一个装置和方法在由Skeletzky等人在1996年12月3日提交的申请号为No.08/754,059的标题是APPARATUS FOR AND METHOD OF REDUCING THEMEMORY BANDWIDTH REQUIREMENTS OF A SYSTOLICARRAY的美国专利中有所描述,在此处引用作为参考。
本发明将通常是(但是不必须)在获得全象素SAD结果之后使用。首先,在该搜索窗口中的数据被逐个块地与模板宏块数据比较,以便确定象素块的最佳匹配。在该搜索期间只考虑全象素。一旦发现该最佳匹配的全象素块的位置,即可执行一个半象素搜索,以便进一步改进该搜索的清晰度。执行半象素搜索导致系统的潜在清晰度增加四倍因数(每一轴增加二倍因数)。半象素的精确性与半象素SAD计算相关。该半象素SAD计算是通过把模板宏块象素和对应于环绕该全象素目标位置的半象素的一个特定搜索窗口相比较而确定的。
取样搜索窗口存储器的一部分以及对应于大小为4×4模板宏块的一个区域在图1中示出。在全象素搜索期间发现的搜索窗口中的最佳匹配块由方框70表示。每一′X′74代表在该搜索窗口中的一个全象素。
为了执行半象素搜索,使用环绕该最佳匹配全象素块的周边的象素。这在图2中示出。由大粗体′X′74表示的象素代表在该搜索窗口中的象素。在该框70中的象素74是在全象素搜索期间被发现属于是最佳匹配的搜索窗口象素。圆周72代表使用在该全象素搜索中的模板宏块象素。以相似于全象素搜索的方式,半象素搜索使用该模板宏块象素72,以便确定最佳匹配半象素块。实心圆点76代表与该全象素搜索结果相关的半象素。该半象素是从在该搜索窗口中的全象素计算出的。本发明包括用于计算这些半象素的一种装置和方法。用于左上全象素的八个可能的半象素76由箭头指示。每个半象素与模板宏块象素比较,以便产生八个SAD值。所以,全象素搜索和半象素搜索的配合产生九个SAD结果(即一个全象素结果加上八个半象素结果)。这九个SAD结果的最小值被确定并且用于产生该结果运动矢量。应该注意,作为半象素SAD计算的结果,可能该八个半象素的SAD值当中没有任何一个小于该全象素SAD结果。在这种情况下,运动矢量就从先前计算出的全象素块确定。
匹配由该圆周表示的模板宏块的可能的八个最佳半象素之一在图3中示出。为了确定该八个可能半象素74的哪一个是最佳匹配的半象素,该模板宏块象素72必须与八个半象素的每一个分别地比较。图3示出该模板宏块象素和与箭头指示的左上半象素相关的半象素块的比较。来自全部十六个比较的绝对差值被求和以便产生用于该八个半象素之一的SAD结果。该处理过程针对其余的七个半象素重复。一旦获得全部八个SAD结果,则与先前计算出的全象素SAD的结果结合,并且确定出全部九个SAD的最小值。
为了更好地说明半象素搜索,与在该模板宏块中的该左上象素相关的八个半象素位置在图4中示出。如前所述,来自全象素搜索的结果被包括在该正方形的框70中。为了确定环绕该框中左上角全象素的半象素76所需要的搜索窗口全象素被包括在正方形的框80中。对于左上角全象素来说,需要在该块70中的四个象素和在该块外面的五个象素。该角的半象素是通过对环绕它们的四个全象素取和并且最终被4去除以便获得该四个象素的平均值而确定的。例如,该角落的半象素86是通过取和四个全象素81、82、83、84并且最终被四除而被确定的。非角落的半象素是通过计算在任一侧的两个半象素并且被二除而确定的。例如,半象素88是通过求和全象素84和87并且最后把该结果除以二而获得的。
与在该模板宏块70中的左上中间位置象素相关的八个半象素位置在图5中示出。需要位于正方形框80中的全象素72,以便计算环绕在该宏块70的顶行中的左中位置的全象素89的半象素76。
对于在块70中的每个全象素,都必须计算出其全部八个半象素值。但是应该注意,包括在圆90中的与左中全象素89相关的左边的三个半象素也是它左边的全象素的右边的三个半象素。这些半象素先前针对左边全象素已计算出,而不需要再次计算。所以,除了在最左边的列中的全象素之外的列中的全象素,就只需要确定五个唯一的半象素,因为其余三个是针对该先前的全象素计算出的半象素。而且,对于每个全象素来说,只有五个半象素的三个需要被计算出,因为下层的两个半象素可以结合在下行中的全象素的处理而被计算出出来。唯一的例外是在块70中的第一和最后一行。
现在来更详细地描述对于八个半象素的每一个而计算SAD值的装置和方法。说明根据本发明优选实施例构成的半象素SAD发生器的高级别框图在图6中示出。本发明的装置和方法的操作为的是串行地计算这些半象素。七个搜索窗口象素和五个模板宏块象素被输入到寄存器中。半象素被从搜索窗口象素内插并且模板宏块象素被与这些半象素相比较。产生的差值被输入到一个累加器,该累加器起到将该差值取绝对值并且将它加到一个累加寄存器的作用。在下一周期中,来自搜索窗口的一个附加的新全象素被读入到该搜索窗口FIFO装置中。该搜索窗口象素被再一次内插以便产生新的半象素。该模板宏象素被与该新的半象素比较并且该产生的新差值被相加到在先前的周期中计算出的差值。针对在该搜索窗口象素块中的保持在该全象素搜索期间计算出的最小SAD的全部象素以及环绕该块的象素重复这个过程(图1)。
半象素SAD发生器10包括两个先进先出(FIFO)存储器阵列。第一个是搜索窗口FIFO装置12,包括七个寄存器,每个寄存器用于保持一个搜索窗口象素。第二个是模板宏块FIFO装置30,包括五个寄存器,每个寄存器用于保持来自该模板宏块的一个象素。箭头表明象素被写入到该FIFO装置中以及从该FIFO装置读出的方向。两个FIFO装置都被从象素块的左上角开始并且连续到右侧地馈送象素。在一行的最后,该过程从下面一行的左边继续进行。
发生器10还包括用于对这些值进行求和的多个加法器以及用于对中间结果提供延迟的寄存器或锁存器。对于该加法器的输入可以是其它加法器的输出、锁存器的输出或在该FIFO装置中的寄存器的输出。
该原理把象素的一个完整行加上一个象素装入到该搜索窗口FIFO装置中。这使得除在相同行中的相邻象素之间半象素之外还计算出在来自两个相邻的行的全象素之间的半象素。这个原理也被应用到模板宏块FIFO装置。一个完整象素行加上一个象素被装入到该模板宏块FIFO装置,以便实现在相邻行的象素之间的半象素的计算。
特别地,对于加法器14的输入是在该搜索窗口FIFO装置中的寄存器0和寄存器6的内容。对于加法器16的输入是在该搜索窗口FIFO装置中的寄存器0和寄存器1的内容。加法器14的输出被输入到锁存器18和第三加法器17。到该加法器17的其它输入是锁存器18的输出,它也是到锁存器22的输入。加法器17的输出是到锁存器24的输入,锁存器24的输出是到锁存器28的输入。加法器16的输出是到锁存器20的输入。锁存器20的输出是到锁存器26的输入。
锁存器20、22、24、26、28的输出被输入到八个减法器32、34、36、38、40、42、44、46的一个减法器组。每个减法器与一个半象素相关。加法器14、16、17的作用在于产生对于每个全象素是唯一的五个半象素。用四去除角落半象素以及用二去除非角落半象素的操作是在这些差值已经求和之后的更迟的时间执行。锁存器提供了在产生这五个半象素过程中的必要的延迟。
锁存器22的输出被输入到减法器34和40。锁存器24的输出被输入到减法器36和42。锁存器28的输出被输入到减法器32和38。锁存器20的输出被输入到减法器44。锁存器26的输出被输入到减法器46。模板宏块FIFO寄存器0的内容被输入到减法器38、40、42、44、46。模板宏块FIFO寄存器4的内容被输入到减法器32、34、36。随着差值被这些减法器计算出来,它们被输入到累加器48、50、52、54、56、58、60、62。一个累加器被与每个减法器相关联。对于累加器的输入是其相关减法器的输出。累加器的输出代表用于该八个半象素的SAD结果。
注意,累加器执行这种绝对值函数不是必须遵循的规则。做为选择这种绝对值函数可以由减法器执行。
控制器13把适当的控制信号提供到FIFO装置、加法器、锁存器、减法器和累加器,例如时钟、使能信号等等。该控制信号的定时可以来源于在下面介绍的定时表。该表描述了针对若干时钟周期的FIFO装置、加法器、锁存器、减法器和累加器中的每一个的内容。
如前所述,用于保持搜索窗口象素和模板宏块象素的寄存器是作为一个FIFO装置实现的。但是,这里介绍的该范例使用最小数目的寄存器实现本发明的方法。在不背离本发明的本质的条件下,本专业技术人员可以使用不同数目的FIFO装置或具有不同数目的寄存器的FIFO装置实现一个半象素SAD发生器。
使用图6的心动式处理硬件,能够实现利用最小的硬件和低成本确定该半象素SAD结果。而且,本发明的发生器只要求从存储器存取一次每个全象素的值。这种半象素以及对应的SAD值的计算不需要多余的存储器存取或多余的半象素计算。每个半象素只被计算一次。
本发明的这种半象素发生器的另一优点是直到这种累加过程的结束都保持完美的精确性。换句话说,这种由二或四所除的过程是在用于每个SAD值的所有象素值已经求和之后执行的,这就增加了每个象素的精确性。
为了帮助理解本发明的操作,描述针对前11个时钟周期的FIFO装置、加法器、锁存器、减法器和累加器的每一个的内容的一个表格作为表1在下面给出。表1是利用在图7中示出的象素标记构成的。搜索窗口全象素块的一部分在该图的上部分示出。模板宏块象素在该图的下部分示出。全部搜索窗口象素由在圆周中的大写字母代表。用于计算在边缘的半象素的环绕该块的搜索窗口象素由在正方框中的大写字母代表。半象素被表示为带下标的大写字母。针对每个全象素计算出的三个唯一半象素是被下标为1、2、3。在模板宏块中的象素被表示为包括在圆周中的小写字母表示。
在周期2,计算出半象素B1、B2和B3,并且半象素A1、A2和A3被分别地移入锁存器22、28和26。由于相加A1和B1产生半象素B2。在该周期中,第一模板宏块象素,象素a,被输入到模板宏块FIFO装置,以便能够产生第一差值。
在下一周期,周期3中,产生与全象素C相关的三个半象素C1、C2、C3,并且半象素B1、B2和B3被移位。全象素b被移入该FIFO装置并且计算出第一差值。减法器36、40、42、44、46分别地计算在象素a和锁存器28、22、24、20、和26的输出之间的差值。差值结果a-A2、a-A1、a-B2、a-B3和a-A3被分别地输入到累加器54、56、58、60、62。
该过程以针对输入到该搜索窗口FIFO装置的每个象素的新的一组三个半象素的计算继续进行。在每个周期期间,产生在与每个全象素(例如针对全象素A的A1、A2、A3、B2、B3)相关的五个上层半象素和对应的模板宏块象素(即象素a)之间的差值。三个下层半象素,例如E2、E1、F2不能被计算直到来自随后行的象素被输入到该FIFO装置为止。
在环绕该圆周中的块象素的正方框中的边缘象素对于某些半象素计算是需要的。对于半象素的计算来说属不需要的所获结果被放弃,并且不被用于产生输入到该累加器的差值。在周期7和周期8过程中显见其中没有值被钟控进入该累加器。控制器提供适当的时钟和使能信号以便实现这一目的。
一旦模板宏块FIFO装置充满,即在周期8,则产生八个差值并且被累加,而不是在周期3到6期间的仅仅五个差值。在表1中概述的处理被继续直到所有36个象素都被处理。在该点,该累加器保持用于八个可能半象素的每一个的SAD结果。这些结果结合与来自全搜索的原始最佳匹配,并且确定全部九个SAD值的最小值。
虽然本发明已经参考有限数目的实施例进行了描述,但是本发明可以实现许多变化、改进和其它的应用。
权利要求
1.一种用于产生在包含在一个搜索窗口存储器中的全象素块与包含在一个预定义模板宏块存储器中的模板象素之间的半象素的绝对差值和(SAD)的一个装置,所述的装置包括用于保持包含在所述的搜索窗口中的全象素的搜索窗口先进先出(FIFO)存储器装置;用于保持包含在所述的模板宏块中的模板象素的模板宏块FIFO装置;连接到所述的搜索窗口FIFO装置的内插装置,所述的内插装置用于计算环绕所述每一全象素的半象素值;连接到所述的内插装置和所述的模板宏块FIFO装置的减法装置,所述的减法装置用于计算在所述的半象素和所述的模板象素之间的差值;连接到所述的减法装置的绝对值装置,所述的绝对值装置用于产生所述的减法装置的输出的绝对值;连接到所述的绝对值装置的输出的累加器装置,所述的累加器装置用于保持由绝对值装置输出的用于每一半象素SAD值的绝对差值的和;以及,控制器装置,用于产生适当的控制信号以便使能所述的半象素SAD值的产生。
2.根据权利要求1的装置,其中所述的搜索窗口FIFO装置包括足够数目的寄存器,以便保持全象素的一个整行加上来自所述的搜索窗口的随后行的至少一个象素。
3.根据权利要求1的装置,其中所述的模板宏块FIFO装置包括足够数目的寄存器,以便保持全象素的一个整行加上来自所述的搜索窗口的随后行的至少一个象素。
4.根据权利要求1的装置,其中内插装置包括适当放置的加法器和寄存器,以便计算环绕每一全象素的半象素值。
5.根据权利要求1的装置,其中的减法装置包括两输入端减法器。
6.根据权利要求1的装置,其中所述的减法装置和所述的绝对值装置共同包括结合一个绝对值函数的两输入端减法器。
7.根据权利要求1的装置,其中所述的累加器装置和所述的绝对值装置共同包括在其输入端结合一个绝对值函数的一个累加器。
8.根据权利要求1的装置,其中每一个所述的全象素和每一模板象素只分别地从所述的搜索窗口存储器和所述的模板宏块存储器存取一次。
9.一种用于产生在包含在一个搜索窗口存储器中的全象素块和包含在一个预定义模板宏块存储器中的模板象素之间的半象素的绝对差值和(SAD)的一种方法,所述的方法包括步骤提供搜索窗口先进先出(FIFO)装置,用于移位通过包含在所述的搜索窗口中的全象素;提供一个模板宏块FIFO装置,用于移位通过包含在所述的模板宏块中的模板象素;对于每一全象素来说,只内插一次在水平、垂直和对角线的方向环绕每一全象素的半象素的值;计算在所述半象素和所述的模板象素之间的差值;确定计算步骤期间产生的差值的绝对值;以及,累加在用于对每一半象素SAD值进行确定的步骤期间产生的绝对差值的和。
10.根据权利要求9的方法,其中每一个所述的全象素和每一个所述的模板象素只分别地从所述的搜索窗口存储器和所述的模板宏块存储器存取一次。
全文摘要
公开一种用于计算针对半象素的SAD值的新颖装置和方法。本发明以串行方式内插来自包含在一个搜索窗口(70)中的全象素的半象素值。随后这些半象素与在一个模板宏块中的象素相比较。随后产生差值并累加在寄存器中。该搜索窗口(70)和模板宏块象素被移位到FIFO装置中从而有多个加法器产生半象素值。锁存器(20、22、24、26、28)被用于存储和延迟该半象素值,以便输入到一组减法器。减法器计算该内插的半象素和该模板宏块象素之间的差值。该减法器的输出被累加而产生八个SAD值。
文档编号G06T7/00GK1246187SQ97181535
公开日2000年3月1日 申请日期1997年12月30日 优先权日1997年1月3日
发明者厄勒兹·斯泊林, 米切尔·哈莱泊, 阿米尔·弗雷杰特, 吉尔帕特·斯卡尔特奇 申请人:萨帕克斯技术(以色列)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1