半象素运动估算器的制作方法

文档序号:6411828阅读:245来源:国知局

专利名称::半象素运动估算器的制作方法
技术领域
:本发明涉及用于压缩图象信号的运动估算器,更具体地涉及通过插入整象素(pe1)来估算半象素的运动的半象素运动估算器。用于图象压缩的半象素运动补偿的相关技术公开在美国专利号5,461,423、5,488,419、5,489,949及5,493,344中。美国专利号5,489,949详细公开了利用误差值来确定运动矢量的运动估算方法与装置。通常,运动估算是在用于确定运动矢量的图象处理方法中的一种压缩图象的方法,运动矢量表示连续的图象信号中前一帧的象素与当前帧的象素之间的运动差,以便只传输运动矢量及差分脉冲码调制(DPCM)值而不是完整的图象数据。在运动估算中广泛采用的块匹配算法(BMA)为在图象的运动是在水平方向或垂直方向上的平行移位的假定下,为了用当前图象内的对应块图象来估算前一帧内的块图象而使用运动矢量的方法。BMA通常采用8×8与16×16大小的块用于运动估算。为了搜索与当前帧的对照块紧密相似的前一帧的块,在对中前一帧的对照块的恒定范围内搜索前一帧,这里,该恒定范围为“搜索窗口”,而搜索窗口内的候选块与对照块之间的差为失真。此外,“全搜索块匹配算法”将搜索窗口内的所有候选块与对照块比较。为了搜索与对照块最相似的块,计算出f1(x-a,y-b)与f2(x,y)之间的差。将f1(x-a,y-b)与f2(x,y)之间的最小差指定为运动矢量。类似地,用平均绝对误差(MAE)法来得出块之间的最小误差值。MAE是用下式1得到的。式1中,“Eabs”与“B”分别为MAE值及块大小。相应地,使Eabs为最小的(a,b)为运动矢量。诸如MPEG2等用于压缩与编码图象的装置中,为了执行更精细的运动估算,运动估算是用两步执行的。如图1A中所示,运动估算传统上用下述步骤执行。首先,为了产生第一运动矢量MV1′,以整象素为单位在宽的搜索窗口SW1′内执行初始运动估算。第二,为了在窄搜索窗口SW2′内执行半象素运动估算,通过定中运动矢量MV1′计算邻接象素来插入半象素,而产生更精细的运动矢量MV2′。然而,包含在先有技术运动估算器中的插值器需要除法器来生成半象素。在用具有阵列处理器配置的半导体集成电路来实施时,除法器具有增加尺寸的问题。有鉴于此,本发明的目的为提供紧致与简化结构的半象素运动估算器,以利用移位器来插入整象素以压缩串行图象信号。为了达到这些目的,本发明提供了通过为第一搜索窗口的宏块估算整运动来计算整运动矢量及对应的绝对误差值的半象素运动估算器,其中形成第二搜索窗口来执行宏块的半象素运动估算,其中半象素运动估算包括一个插值器,用于通过求和及移位从第二搜索窗口顺序输入的延时象素及一对当前输入象素来生成半象素;及一个半象素运动估算装置,其中输入宏块的象素数据及延时了一条水平线的象素数据。通过处理来自插值器的数据及所接收的象素数据计算半象素运动的绝对误差值。通过比较来自半象素运动估算的绝对误差值与来自整运动估算的绝对误差值选择与输出一个最小的绝对误差值。从下面结合附图的本发明的较佳实施例的详细描述中,本发明的上述与其它目的、特征与优点是清楚的,其中图1A为说明两步运动估算的概念图;图1B为例示传统运动估算器的视图;图2A为例示用于运动估算的16×16宏块的视图;图2B为例示用于半象素运动估算的搜索窗口的视图3为说明半象素运动估算的概念图;图4为例示按照本发明的一个较佳实施例的半象素运动估算器的方框图;图5为例示按照本发明的一个较佳实施例的时序的表;图6为图4中所示的处理单元的详细方框图;以及图7为图4中所示的半象素生成装置的详细方框图。现在详细参照本发明,它的实例示出在附图中。只要可能,在全部附图中将用相同的参照数字来指代相同的部件。图1A示出用于说明更精细的运动估算的概念图。在更精细的运动估算中,在宽搜索窗口SW1′上的第一运动估算之后执行在窄搜索窗口SW2′上的第二运动估算。图1B示出一个传统运动估算器及一个本发明的运动估算器的方框图。该运动估算器包括一个当前帧缓冲器1,一个前一帧缓冲器2、一个整象素运动估算装置3、一个半象素运动估算装置4及一个垂直线延时装置5。图1B中,用于估算运动的当前帧内的图象数据(象素)是存储在当前帧缓冲器1中的。当前帧内的图象数据能以宏块为单位存取。前一帧内的图象数据起运动估算的对照图象的作用,它们是存储在前一帧缓冲器2中的。前一帧内的图象数据形成具有恒定大小的搜索窗口SW1′与SW2′。将来自帧缓冲器1的当前帧的对照块象素输入到整象素运动估算装置3。将来自前一帧缓冲器2的搜索窗口SW1′内的候选块的象素输入到整象素运动估算装置3。在整象素运动估算装置3中,在比较了对照块的象素与搜索窗口上的候选块的象素之后,输出具有最小绝对误差(或失真)的运动矢量MV0及绝对误差AE0。将从整象素运动估算装置3生成的运动矢量MV0的恒定范围内的象素输入到半象素运动估算装置4。半象素运动估算装置4比较从当前帧缓冲器1输入的对照块的象素与从前一帧缓冲器2输入的候选块的象素。此时,在窄搜索窗口SW2上生成半象素,并通过估算半象素的运动生成一个精确的运动矢量。可将对照块的象素直接输入到半象素运动估算装置4中,或在延时一条线的状态输入到垂直线延时装置5中。图2A示出按照本发明的一个16×16对照块。16×16宏块包括从a(1,1)到a(16,16)的256个象素。图2B示出按照本发明的半象素运动估算的搜索窗口SW2。搜索窗口SW2对中具有第一运动估算(即整象素运动估算)处理过的运动矢量的候选块7。通过插入搜索窗口SW2内的整象素生成半象素。从而9个候选块(8个半象素候选块与一个整象素候选块)退出搜索窗口。即通过逐个象素地延伸来自第一运动估算的对中候选块7而形成搜索窗口SW2,半象素是通过插入搜索窗口SW2的象素b(0,0)-b(17,17)生成的,从而形成8个候选块。最后,半象素运动估算通过分别比较在第一运动估算中生成的候选块的绝对误差与8个半象素候选块的绝对误差来搜索具有最小绝对误差的运动矢量,即第二运动矢量(最终运动矢量)。图3示出搜索窗口SW2中的某九个整象素b(x,y)、b(x+1,y)、b(x+2,y)、b(x,y+1)、b(x+1,y+1)、b(x+2,y+1)、b(x,y+2)、b(x+1,y+2)、b(x+2,y+2)。图3中,点(·)与“X”分别表示整象素及通过插入整象素生成的半象素。各箭头表示带有[b(x+1,y+1)]的8个候选块的半象素运动矢量。各箭头上的参照数字PE1至PE8分别表示用于生成半象素运动矢量的处理单元。图3中,b10表示一个半象素(垂直方向上的半象素),它是通过插入垂直方向的两个邻接整象素生成的。此外,b01与b11分别表示一个半象素(水平方向上的半象素),它是通过插入水平方向的两个邻接整象素生成的,及一个半象素(对角线方向上的半象素),它是通过插入构成一个四边形的四个邻接整象素生成的。上述b10(x+1,y)、b01(x,y+1)与b11(x,y)是用下式生成的;b01(x+1,y)={b(x+1,y)+b(x+1,y+1)}//2式2b10(x,y+1)={b(x,y+1)+b(x+1,y+1)}//2式3b11(x,y)={b(x,y)+b(x+1,y)+b(x,y+1)+b(x+1,y+1)}/4式4如图4中所示,本发明的半象素运动估算器大的方面分成插值器100及半象素运动估算装置200。插值器100包括一个锁存器110及三个半象素发生装置120、130、140。半象素运动估算装置200包括两个锁存器211、212及8个处理单元221-228、8个累加器231-238、及一个比较与选择装置240。如图2B中所示,将来自搜索窗口SW2的两个象素在垂直方向上从搜索窗口SW2顺序输入到插值器100。按照本发明的较佳实施例,一个象素由8位数据构成。输入的两个象素由锁存器110锁存。将新的两个象素及前面的象素输入到位于插值器101-104的线上的时钟。即如图3中所示,当将b(x,y)与b(x+1,y+1)象素输入到插值器100的前一时钟时,并将b(x,y+1)与b(x+1,y+1)象素随后在当前时钟上输入时,在前一时钟上锁存的b(x,y)与b(x+1,y)分别出现在线101、102上,而在当前时钟上输入的b(x,y+1)与b(x+1,y+1)分别出现在线103、104上。相应地,象素b(x,y)、b(x+1,y)、b(x,y+1)与b(x+1,y+1)被输入到对角线半象素发生装置120并在其中计算,并输出对角线方向的半象素b11。象素b(x+1,y)与b(x+1,y+1)被输入到垂直半象素发生装置130并在其中计算,并输出垂直方向半象素b10。象素b(x,y+1)与b(x+1,y+1)被输入到水平半象素发生装置140并在其中计算,并输出水平半象素b01(x,y+1)。图7中所示的各半象素发生装置120、130、140包括一个加法器151、一个移位器152及一个锁存器153。如详细描述的,在对角线半象素发生装置120中将四个8位象素与210(102)相加。在对角线半象素发生装置120的移位器中,将加法器的输出移位两次。此时,从加法器输出的10位中只有从最高位(MSB)到第8位的8位从移位器输出。此外,在垂直半象素与水平半象素发生装置130、140的加法器中,将两个8位象素与12相加。在垂直半象素与水平半象素发生装置130、140的移位器中,将加法器的输出移位一次。此时,在加法器的9位输出中,只有从最高位(MSB)到第8位的8位从移位器输出。这里为了用移位(即除法)生成整数,将二进制数字“102”加在对角线半象素发生装置120中及将二进制数字“12”加在垂直半象素与水平半象素发生装置130、140中。如图4中所示,将对照块的象素顺序输入到半象素运动估算装置200中。对照块的象素a(1,1)至a(16,16)顺序输入到垂直方向上的线105。将延时得比线105久的垂直线象素顺序输入到线106中。即,当对照块的第二垂直象素a(2,1)至a(2,16)输入到线105时,将对照块的第一垂直象素a(1,1)至a(1,16)输入到线106中。此外,未延时的垂直线输入象素锁存在锁存器211中,从而它们延时一个时钟。将未延时的输入象素输出到处理单元221,222。将垂直线延时输入象素锁存在锁存器212中,从而它们再度多延时一个时钟。将延时的输入象素输出到处理单元228。图4中,形成四组a、b、c、d的处理单元221-228表示与半象素同时处理的对照块的象素。处理被锁存器211处延时的来自线105的对照块的象素a(i,j)′及与象素a(i,j)′同时的从插值器100的输入的半象素是由组a的处理单元221、222执行的。处理通过线105输入的对照块的象素a(i,j)及与象素a(i,j)′同时从插值器100输入的半象素是由组b的处理单元223、224、225执行的。处理通过线106输入的延时一条垂直线的对照块的象素a′(i,j)及与象素a′(i,j)同时从插值器100输入的半象素是由组c的处理单元226、227执行的。处理又被锁存器212延时一次的通过线106输入的延时一条垂直线的对照块的象素a′(i,j)及与象素a′(i,j)′同时从插值器100输入的半象素是由组d的处理单元228执行的。如图6中所示,各处理单元221-228包括一个减法器251、一个锁存器252及一个绝对值计算器253。计算对照块的象素与插值器100生成的半象素之间的差是由减法器251执行的。锁存器252锁存该差,并由绝对值计算器253计算绝对值。和上述步骤一样,各象素的绝对误差是由处理单元221-228计算的,并将各象素的绝对误差连续地累加在累加器231-238中。在执行了整个宏块的象素的运算之后,将对照块与对应的候选块之间的绝对误差存储在累加器231-238中。如图3中所示,各处理单元221-228计算8个方向上半象素运动估算的误差。从而,比较与选择装置240在将来自第一运动估算的误差AE0与来自AE1-AE8累加器的误差比较之后,输出一个具有最小误差的候选块的运动矢量。例如,如果在与8个累加器231-238的各输出比较时来自第一运动估算的绝对误差为最小误差,最终的运动矢量便是来自第一运动估算的运动矢量MV0。如果来自累加器的绝对误差为最小误差,得出的矢量便是来自累加器的半象素运动矢量与来自第一运动估算的运动矢量之和。简言之,当第一运动矢量(MV0)之值为MV(m,n)时,第二运动矢量如后表1中所示那样确定。如表1中所示,比较与选择装置240将存储在各累加器231-238中的绝对误差AE1-AE8与来自第一运动估算的绝对误差AE0比较。当来自第一累加器231的绝对误差AE1为最小绝对误差时,则选择图3中的半象数运动矢量(-0.5,+0.5)。相应地,运动矢量MV(m,n)与半象素运动矢量(-0.5,+0.5)之和,即MV(m-0.5,n+0.5)(便是最终得出的运动矢量MV1。下面按照图5详细描述象上面那样构造的较佳实施例。如图5中所示,根据时钟分别将搜索窗口的象素对b(0,0)与b(17,17)输入到插值器100。即按照插值器100中的垂直线的次序顺序地输入诸如时钟0的b(0,0)、b(1,0)、时钟1的b(0,1)、b(1,1)及时钟2的b(0,2)、b(1,2)等若干象象数据。从插值器100顺序地输出来自时钟2的三个半象素(对角线方向上的一个半象素、垂直方向上的一个半象素及水平方向上的一个半象素)。即,从插值器100在时钟2上输出b11(0,0)、b01(1,0)与b10(0,1),及在时钟3上输出b11(0,1)、b01(1,1)与b11(0,2)。此外,根据时钟按垂直线的次序在处理单元221-228中顺序输入图2中的对照块的象素a(1,1)-a(16,16)。此时,按照处理单元221-228的各组a、b、c、d输入对照块的相同象素,供与来自插值器100的输出(即半象素)一起处理。即,在处理单元223-225中的时钟2上输入宏块的第一象素a(0,0)供与从插值器100输出的半象素b11(0,0)、b01(1,0)及b10(0,1)一起处理。第三、第四与第五处理单元223、224、225分别处理象素“a(0,0)-b11(0,0)”、“a(0,0)-b01(1,0)”与“a(0,0)-b10(0,1)”。将上述运算生成的绝对误差存储在对应于各处理单元223-225的各累加器acc3-acc5中。下面,第三、第四与第五处理单元223-225处理在时钟3上输入的对照块的第一垂直线的第二象素a(1,2)。第一与第二处理单元221、222处理来自锁存器211的延时一个时钟的第一象素a(1,1)。即第三、第四与第五处理单元223-225分别处理象素a(1,2)-b11(0,1)、a(1,2)-b01(1,1)及a(1,2)-b10(0,2),并将绝对误差输出给对应的累加器233-235。第一处理单元221处理来自时钟3的象素a(1,1)-b11(0,1),并将绝对误差输出到累加器231。在处理了a(1,1)-b01(0,1)之后,绝对误差值从第二处理单元222输出到第二累加器232。图5中,处理单元221-225顺序处理构成对照块的第一垂直线的象素,处理单元221-225还顺序处理构成对照块的第二垂直线的象素。构成对照块的第一垂直线与第二垂直线的象素是在同一时钟上输入的。即,在通过线106将其输入到处理单元226-228并与输入到同一时钟的半象素进行比较之前,对照块的第一垂直线的象素a(1,1)被延时一条线时,第六处理单元226处理象素a(1,1)-b11(1,0),并将绝对误差输出到第六累加器236。第七处理单元227处理象素a(1,1)-b10(1,1),并将绝对误差输出到累加器237。此时,锁存器212将延时了一条垂直线的对照块的第一垂直线的第一象素a(1,1)锁存以再将其多延时一个时钟。在下一时钟上,在第六与第七处理单元226、227中与a(1,2)-b11(1,1)与a(1,2)-b10(1,2)一起处理下一象素a(1,2)。此外,在上述同一时钟上,第八处理单元228中与a(1,1)-b11(1,1)一起处理锁存的第一象素a(1,1),并将绝对误差输出到第八累加器238。当将各处理单元处理的绝对误差存储在各对应的累加器中时,便完成了对全部象素的运算。从而,一个对照块及8个半象素候选块的绝对误差是分别存储在累加器231-238中的。最后,如表1所示,在完全处理了对照块的全体象素时,便从比较与选择装置240输出具有最小绝对误差的运动矢量。如上所述,本发明的半象素运动估算器具有由移位器执行插值器的操作及用顺序方法执行半象素运动估算的运算优点,从而消除了对阵列处理器的需求。从而,能够实现本发明的紧致尺寸与更快的处理速度的半象素运动估算器,由于它完全是由简单的半导体集成电路构成的。虽然已经结合当前认为是最实际与最佳的实施例描述了本发明,但应理解本发明不限于公开的实施例,反之,它旨在覆盖所附的权利要求书的精神与范围内所包括的各种修改及等价的配置。表1根据最小误差的第二运动矢量</tables>权利要求1.一种半象素运动估算器,其中用存储在前一缓冲器中的象素形成一个具有恒定大小的第一搜索窗口,并在第一窗口上执行第一运动估算以生成一个整矢量及绝对误差;以及通过对中由整象素运动矢量确定的候选块形成一个具有恒定大小的第二搜索窗口;通过比较具有恒定大小的对照块的象素与通过插入在第二搜索窗口中的整象素生成的半象素而输出一个第二运动矢量,所述半象素运动估算器包括一个插值器,它为前一时钟上输入的象素对及当前时钟上输入的象素对执行运算以生成半象素,其中第二搜索窗口中水平方向上的象素对是在垂直方向上顺序输入的;以及一个半象素运动估算装置,其中象素是在对照块的垂直线方向上顺序输入的;延时了一条垂直线的对照块的象素是在水平方向顺序输入的;通过为插值器的输出执行运算而生成绝对误差;以及通过比较所述绝对误差与来自整象素运动估算的绝对误差选择具有最小绝对误差的所述象素、一个半象素运动矢量或一个整运动矢量;输出一个整象素矢量或从该整象素矢量与该半象素运动矢量相加中得出的一个运动矢量。2.权利要求1的半象素运动估算器,其中所述插值器包括一个延时装置,用于为了延时象素数据对一个时钟而锁存在前一时钟上从第二搜索窗口输入的象素数据对;一个对角线半象素发生装置,它通过相加与移位两次在延时装置中延时了一个时钟的象素对、在当前时钟上输入的象素对及一个一定的二进制数字而输出对角线方向的半象素;一个垂直半象素发生装置,它通过相加与移位一次在延时装置中延时了一个时钟的象素对的第二对、在当前时钟上输入的象素对的第二对及一个一定的二进制数字而输出垂直方向上的半象素;以及一个水平半象素发生装置,它通过相加与移位一次在当前时钟上输入的一对象素及一个一定的二进制数字而输出水平方向上的半象素。3.权利要求2的半象素估算器,其中该延时装置是用一个锁存器实施的。4.权利要求2的半象素运动估算器,其中所述对角线半象素发生装置包括一个加法器,用于将第二搜索窗口的四个象素加在二进制数字“10”上;一个移位器,用于移位两次来自加法器的输出;及一个锁存器,用于临时存储来自移位器的输出。5.权利要求2的半象素运动估算器,其中所述垂直半象素发生装置包括一个加法器,用于将第二搜索窗口的两个象素加在二进制数字“1”上;一个移位器,用于移位一次来自加法器的输出;及一个锁存器,用于临时存储来自移位器的输出。6.权利要求2的半象素运动估算器,其中所述水平半象素发生装置包括一个加法器,用于将第二搜索窗口的两个象素加到二进制数字“1”上;一个移位器,用于移位一次加法器的输出;及一个锁存器,用于临时存储移位器的输出。7.权利要求1的半象素估算器,其中所述半象素运动估算装置包括一个第一延时装置,用于延时当前象素一个时钟;一个第二延时装置,用于延时延时了一条垂直线的对照块的象素一个时钟;多个处理单元,其中输入对照块的当前象素、延时了一个时钟的象素、延时了一条垂直线的象素、及延时了一条垂直线及一个时钟的象素,及在同一时钟上输入来自插值器的输出,及从处理单元输出各象素的绝对误差;多个累加器,其累加与相加来自所述处理单元的绝对误差,在完成了对照块的全体象素的运算时,输出其中的半象素运动的绝对误差;以及一个比较与选择装置,它分别比较所述累加器输出的绝对误差与整运动估算生成的绝对误差,如果整运动估算生成的绝对误差为最小绝对误差则输出该整矢量,及如果来自所述累加器的任何绝对误差为最小绝对误差则输出相加的该半象素运动矢量与整象素运动矢量。8.权利要求7的半象素运动估算器,其中所述第一延时装置是用一个锁存器实施的。9.权利要求7的半象素运动估算器其中所述第二延时装置是用一个锁存器实施的。10.权利要求7的半象素运动估算器,其中所述处理单元包括一个第一处理单元,它通过为对照块的延时了一个时钟的当前象素及在同一时钟上输入的对角线方向上的半象素执行运算而输出象素的一个绝对误差;一个第二处理单元,它通过为对照块的延时了一个时钟的当前象素及在同一时钟上输入的垂直方向上的半象素执行运算而输出象素的一个绝对误差;一个第三处理单元,它通过为对照块的当前象素及在同一时钟上输入的对角线方向上的半象素执行运算而输出象素的一个绝对误差;一个第四处理单元,它通过为对照块的当前象素及在同一时钟上输入的垂直方向上的半象素执行运算而输出象素的一个绝对误差;一个第五处理单元,它通过为对照块的当前象素及在同一时钟上输入的水平方向上的半象素执行运算而输出象素的一个绝对误差;一个第六处理单元,它通过为对照块的延时了一条垂直线的象素及在同一时钟上输入的对角线方向上的半象素执行运算而输出象素的一个绝对误差;一个第七处理单元,它通过为对照块的延时了一条垂直线的象素及在同一时钟上输入的水平方向上的半象素执行运算而输出象素的一个绝对误差;以及一个第八处理单元,它通过为对照块的延时了一条垂直线且延时了一个时钟的象素及在同一时钟上输入的对角线方向的半象素执行运算而输出象素的一个绝对值。11.权利要求10的半象素运动估算器,其中所述处理单元包括一个减法器,用于相减对照块的象素与来自插值器的半象素以生成误差;一个锁存器,用于临时存储所述误差;及一个绝对值计算器,用于为所述锁存的误差生成绝对误差。全文摘要一种半象素运动估算器,其中用存储在前一缓冲器中的象素形成具有恒定大小的第一搜索窗口,并在第一窗口上执行第一运动估算生成一个整矢量及绝对误差;及通过定中由整象素运动矢量确定的候选块来形成具有恒定大小的第二搜索窗口,通过比较具有恒定大小的对照块的象素与通过在第二搜索窗口中插入整象素而生成的半象素输出第二运动矢量。半象素运动估算器包括一个插值器,以及一个半象素运动估算装置。文档编号G06T7/20GK1163542SQ9710370公开日1997年10月29日申请日期1997年3月24日优先权日1996年3月22日发明者安庭模申请人:大宇电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1