运动估计器的制作方法

文档序号:7616040阅读:104来源:国知局
专利名称:运动估计器的制作方法
技术领域
本发明涉及运动估计器,更详细地,涉及能够在运动的图象压缩时进行快速运动估计的运动估计器。
运动估计器是用来通过去除视频编码器中的输入视频数据的暂时冗余来增加压缩效率。用于压缩运动图象的通常标准大多基于块编码器。这种块编码器使用块匹配算法。块匹配算法执行基于块的运动估计。根据块匹配算法,在当前帧中一个图象块和某一个图象块大多相似时,该图象块就被从前一帧的搜索域中的候选块中选出。在此,当前帧中处理的块和前一帧中极相似的候选块之间的相应区域的差异被称为运动矢量(motion vector MV)。通常,绝对差异和(sum of the absolute difference SAD)由运动估计器计算出来。当运动估计器按照16×16的块单元执行时,SAD和MV分别由方程1和方程2计算。SAD(u,v)=Σi=015Σj=015|C(i,j)-P(i+u,j+v)|...(1)]]>MV=arg(u,v)minSAD(u,v)…(2)在此,C(i,j)是当前帧的块数据,P(i+u,j+v)是前一帧的候选块数据,以及(u,v)是候选的运动矢量。
当根据这种计算方法确定实际设计运动估计器时,需要考虑运动估计的性能和运算总量。对于运动估计,大部分工作量是计算SAD。换言之,要计算一个SAD,必须进行绝对值运算和累加运算。具体地说,这种运算的运算量正比于所要处理的块的大小。根据常规的运算估计方法,因为运算量大,可以需要很多时间进行运动估计。
为了解决这个问题,提出了分层运动估计。

图1说明了这种分层运动估计方法。根据图1中所示的分层运动估计方法,下层的图象是被二次采样,接着产生中层的二次采样以及上层的二次采样。接着,为了从中层的图象中选择初始的搜索域候选图象,根据上层的二次采样图象来计算SAD。然后,利用外围的宏块之间的相互关系从中层的图象中选出更多的搜索域候选。根据选定的初始搜索域候选块来计算SAD,以及某个位置上的具有最小SAD的最终的MV可以从下层的图象中获得。
这种方法并不降低估计性能并且可以获得比全搜索方法更快速的处理。但是,更快速的运动估计仍是需要的。
为了解决上述问题,本发明的目的之一就是提供一种可以快速执行运动估计的运动估计器。
相应地,为了获得本发明上述目的,提供了一种可以执行运动估计的运动估计器以压缩图象数据帧。该运动估计器包括第一存储器、前一搜索域存储器提供器、第一开关部分、第二开关部分、计算器和移位寄存器。第一存储器包括用于按照行方式存储前一搜索域数据的具有多个存储器区域的前一搜索域存储器和用于按照行方式存储当前处理域的数据的当前处理域存储器;前一搜索域存储器提供器用于提供移位和输出从呈环形的多个存储器域中输出的前一搜索域数据;第一开关部分用于选择从前一搜索域存储器提供器中输出的前一搜索域数据;第二开关部分用于选择从当前处理域存储器中按照行输出的当前搜索域数据;计算器包括多个并行连接的绝对差异和(SAD)的计算器,这组SAD计算器计算所选的前一处理域数据和当前处理域数据的SAD;移位寄存器用于接收和移位一系列SAD计算器输出的SAD数据并将移位后的数据和其他系列SAD计算器的SAD数据进行相加,然后输出一个部分SAD(partial SAD)。
最好是当搜索域的大小置为p时,计算器包括p个并行连接的SAD计算器,并且该移位寄存器包含有2p+1个寄存器。
运动估计器最好还包括用于缓冲输入数据的缓存器;用于从缓存器输出的25_移位数据的25_移位寄存器;用于将部分SAD和25_移位寄存器输出的数据相加并输出一SAD的加法器;用于利用加法器输出的SAD产生运动矢量的SAD比较和运动矢量产生单元;用于20_移位该运动矢量并将结果输出到SAD比较和运动矢量产生单元的20_移位寄存器。
最好的运动估计器还包括当分层运动估计器使用3层时,用于处理22_移位运算并利用中层的外设宏块的运动矢量间的相互关系获得一个初始搜索点的22_移位寄存器。
运动估计器最好还包括DMA控制器、运动估计控制器和第二存储器。DMA控制器用于控制当前处理域和前一搜索域的数据并分别将他们存储到第一存储器中,并根据运动估计控制器的处理提供数据给计算器;运动估计控制器用于根据DMA控制器输出的控制信号来控制运动估计;第二存储器用于存储所计算的部分SAD。
第一存储器分为包含三个区域的前一搜索域存储器和当前处理域存储器,计算器包括利用前一搜索域数据和当前处理域数据计算SAD的第一、第二、第三和第四SAD计算器。移位寄存器包括第一9_移位寄存器、第一加法器、第二9_移位寄存器、第二加法器、第三9_移位寄存器和第三加法器。第一9_移位寄存器用于9_移位和输出第一SAD计算器输出的SAD数据;第一加法器用于将第一9_移位寄存器输出的数据和第二SAD计算器输出的数据进行相加;第二9_移位寄存器用于9_移位和输出第二SAD计算器输出的SAD数据;第二加法器用于将第二9_移位寄存器输出的数据和第三SAD计算器输出的数据进行相加;第三9_移位寄存器用于9_移位和输出第三SAD计算器输出的SAD数据和第三加法器用于将第三9_移位寄存器输出的数据和第四SAD计算器输出的数据进行相加。
最好是,每个第一到第四SAD计算器包括存储器和减法器,每个减法器的输入端连接到相应的寄存器的输出端,每个减法器的另一个输入端连接到相应的开关。
最好是,该运动估计器还包括插补器,用于对前一搜索域的数据执行插补并将插补后的结果数据输出。
运动估计器进一步包括DMA控制器,DMA控制器用于在前一搜索域数据和当前处理数据之间执行识别并依据处理状态控制被提供给前一搜索域数据提供器和计算器的数据。
上述本发明的目的和优点通过附图中优选的实施例的详细说明将会得到更好的阐述。
图1说明了常规的分层运动估计方法;图2的框图示出了根据本发明的实施例的运动估计器的配置;图3A详细说明了图2中的运动估计器中的第一存储器,部分SAD计算器,和插补器;图3B详细说明了图2中的运动估计器中的开关和开关控制器;图4示出了前一搜索域数据在存储器中排列顺序;图5示出了在图3中所示的计算器内当前块数据4×4像素在寄存器中的排列顺序;图6示出了图2中的运动估计器中数据流;图7示出了在根据本发明的运动估计器中以半像素单元进行搜索的步骤;图8示出了图2中的运动估计器中插补器的一个例子;图9示出了是图2中当使用半像素进行搜索时,运动估计器中的数据流;图10示出了当采用根据本发明的分层搜索的运动估计器时,中层和下层搜索域;图11示出了是用于使用在图2中的运动估计器的外设宏块间进行插补的方法再多选择一个初始搜索点的22_移位寄存器的配置;图12示出了在前一搜索域数据中按照垂直方向进行4∶1抽选的过程;图13示出了上层中的数据处理流;图14示出了在前一搜索域数据中按照垂直方向进行2∶1抽选的步骤;图15示出了中层的数据处理;图16示出了中层的数据处理流;图17示出了下层的数据处理;和图18示出了下层的数据处理流。
下面,将参照图详细描述一个根据本发明的优选实施例。
根据本发明的实施例中的运动估计器是基于使用3层的分层运动估计的方法。SAD的计算是在下层按照16×16的块,在中层按照8×8的块,在上层按照4×4的块进行计算的。换言之,通过在下层执行1/2抽选后得到中层,在中层执行1/2抽选后得到上层。而且,在上层的±4像素的单元中执行搜索,在中层和下层的±2像素单元进行搜索。本实施例中的运动估计器在全像素单元中完成下层的估计后,在半像素单元中执行下层的估计。在由本申请人提出的韩国专利申请No.98-6718中公开了一种改进的运动估计方法,这种运动估计方法可以包括在本说明书中作为一个参考的例子。根据上述专利申请公开的运动估计方法,和从中层选择的候选宏块一起使用在下层中外设宏块之间的相互关系至少要多选择一个候选宏块。
参照图2,根据本发明的优选实施例中的运动估计器包括第一存储器200,部分绝对差异和(SAD)计算器(处理组件processing element(PE))210,插补器212,加法器220,和缓存器222。而且,运动估计器还包括25移位寄存器230,SAD比较器和运动矢量(MV)产生部分240,22_移位寄存器250,直接存储器存取(DMA)控制器260,运动估计(ME)控制器270和第二存储器280。第一存储器分为前一搜索域存储器202和当前处理域存储器204。
在操作中,DMA控制器260为了执行运动估计控制分别存储于第一存储器200的当前的块数据和前一搜索域数据。DMA控制器还控制第一存储器200以根据ME控制器270的处理将数据提供给部分SAD计算器210。
部分SAD计算器210接收当前块数据和前一搜索域数据并计算部分SAD。运动估计器包括22移位寄存器250,在使用3层执行分层运动估计时,22移位寄存器通过使用在中层外设宏块的MV之间相互关系来获得一个初始搜索点。
图3A详细示出了图2中的运动估计器中的第一存储器200,部分SAD计算器210和插补器212。参照图3A,第一存储器200分为前一搜索域存储器和当前处理域存储器,前一搜索域存储器具有三个区域(前一搜索域存储器A、前一搜索域存储器_B、前一搜索域存储器_C)。部分SAD计算器210包括前一搜索域数据提供器30,计算器32和移位寄存器部分34。参见图3B,开关部分382和386被提供到前一搜索域数据提供器30和计算器32之间。开关384被提供在插补器212的输出端和计算器32之间。开关388被提供在当前处理域存储器的输出端和计算器32之间。在本实施例中,开关和开关部分由开关控制器36输出的控制信号Ctrl_A,Ctrl_B,Ctrl_C,和Ctrl_D控制。开关控制器36可以在ME控制器270内提供。
前一搜索域数据提供器30包括第一前一搜索域数据提供器30a、第二前一搜索域数据提供器30b和第三前一搜索域数据提供器30c。计算器32包括第一SAD计算器322、第二SAD计算器324、第三SAD计算器326和第四SAD计算器328。移位寄存器部分34包括第一9_移位寄存器340、第二9_移位寄存器344、第三9_移位寄存器348和加法器342、346以及350。
在操作中,开关部分382根据控制信号Ctrl_A选择从前一搜索域数据提供器30输出的前一搜索域数据。开关部分388根据控制信号Ctrl_D选择从当前处理域存储器输出的当前处理域数据的行。部分SAD计算器210接收来自前一搜索域存储器中的相应前一搜索域的数据和来自当前处理域存储器中的相应当前被处理的数据块数据并计算部分SAD。DMA控制器260识别相应前一搜索域的数据和相应当前被处理的数据块数据。本实施例中的部分SAD计算器210可以仅对相对于4×4块的±4像素的搜索域执行操作。因此,本实施例中的运动估计器通过使用加法器220和缓存器222以及25_移位寄存器230可以得到大于4×4块的SAD。
部分SAD计算器210通过前一搜索域存储器的三个通道(前一搜索域存储器_A、前一搜索域存储器_B、前一搜索域存储器_C)和当前处理域存储器的通道接收前一搜索域数据和当前处理域数据。
图4示出了前一搜索域数据在存储器中的排列顺序。参见图4,前一搜索域数据第一行的数据是从前一搜索域存储器_A中输出的,第二行的数据是从前一搜索域存储器_B中输出的,第三行的数据是从前一搜索域存储器C中输出的。然后,第四行的数据是从前一搜索域存储器_A中输出的。在图4中,从前一搜索域存储器A中输出的数据用“○”代表,从前一搜索域存储器_B中输出的数据用“◇”代表,从前一搜索域存储器_C中输出的数据用“□”代表。
部分SAD计算器210也可以从当前处理域存储器中接收当前处理域数据。图5示出了4×4像素的当前处理域数据在图3A中的计算器32的寄存器中的排列顺序。如图5所示,由4×4像素组成的当前处理域数据被装入图3A中的寄存器CR0,CR1,…,CR15中。当当前处理域数据被装入到寄存器CR0,CR1,…,CR15的同时,前一搜索域的数据被装入到PAR0,PAR1,…,PAR4,PBR1,…,PBR4,PCR0,…,PCR4。当数据被完全装入到寄存器后,部分SAD计算器210的每个减法器SUB计算前一搜索域数据和当前处理域数据之间的差异。尽管图中未示出,SAD计算器分别接收来自减法器的差异,并将这些差异的绝对值输出。SAD计算器的输出值是在各自的像素上执行操作后得到的数值,并且将这些数值中具有相同的水平元素的值进行相加。经过这样的处理,一旦当前一搜索域数据被输入,则当前处理域中各行的差异的绝对值就计算出来了。
为了描述的清楚起见,图4中前一搜索域数据的最顶行中左边的第一个像素定义为p(0,0)。从像素数据p(0,0)右移一个像素位置的像素数据定义为p(0,1),从像素数据p(0,0)右移两个像素位置的像素数据定义为p(0,2),从像素数据p(0,0)下移一个像素位置的像素数据定义为p(1,0),从像素数据p(0,0)下移两个像素位置的像素数据定义为p(2,0)。
同样地,图5中当前处理域数据的最顶行中左边的第一个像素定义为c(0,0)。从像素数据c(0,0)右移一个像素位置的像素数据定义为c(0,1),从像素数据c(0,0)右移两个像素位置的像素数据定义为c(0,2),从像素数据c(0,0)下移一个像素位置的像素数据定义为c(1,0),从像素数据c(0,0)下移两个像素位置的像素数据定义为c(2,0)。通过这样的定义,数据c(0,0)被装入寄存器CRO。数据c(0,1)被装入寄存器CR1。数据c(1,0)被装入寄存器CR4。数据c(1,1)被装入寄存器CR5。数据c(3,3)被装入寄存器CR15。部分SAD计算器210在当前处理域内以行为单位执行运算得到结果L0(0,0),L1(0,0),L2(0,0),L3(0,0)经由第一到第四SAD计算器322,324,326,328输出,L0(0,0),L1(0,0),L2(0,0),L3(0,0)分别由下列方程3a,方程3b,方程3c,方程3d表示。L0(0,0)=|c(0,0)-p(0,0)|+|c(0,1)-p(0,1)|+|c(0,2)-p(0,2)|+|c(0,3)-p(0,3)|…(3a)L1(0,0)=|c(1,0)-p(0,0)|+|c(1,1)-p(0,1)|+|c(1,2)-p(0,2)|+|c(1,3)-p(0,3)|…(3b)L2(0,0)=|c(2,0)-p(0,0)|+|c(2,1)-p(0,1)|+|c(2,2)-p(0,2)|+|c(2,3)-p(0,3)|…(3c)L3(0,0)=|c(3,0)-p(0,0)|+|c(3,1)-p(0,1)|+|c(3,2)-p(0,2)|+|c(3,3)-p(0,3)|…(3d)结果值L0(0,0),L1(0,0),L2(0,0),L3(0,0)分别对应当前处理域数据的第一到第四行。假设i是一个正数,指示一行;j是一个正数,指示一列,和当前一搜索域数据表示为p(i,j),则前一搜索域数据p(i,j)和本处理域数据的相应的第一到第四行经运算后的结果表示为L0(i,j),L1(i,j),L2(i,j),L3(i,j)。根据这些表示,搜索域的顶行左起第一个数据的SAD可以由方程(4)表示。
SAD=L0(0,0)+L1(1,0)+L2(2,0)+L3(3,0)…(4)前一搜索域的数据一行接一行地输入到部分SAD计算器210。因此,经方程(4)计算的SAD值是首先由部分SAD计算器210获得的SAD值。
通过对前一搜索域数据和当前处理域数据的第一行进行计算获得了值L0(0,0)。但是,仅当前一搜索域数据的第二行输入到部分SAD计算器210时,值L1(0,0)才可以获得。仅当前一搜索域数据的第三行输入到部分SAD计算器210时,值L2(0,0)才可以获得。仅当前一搜索域数据的第四行输入到部分SAD计算器210时,值L3(0,0)才可以获得。换言之,当搜索域的范围设为-p到+p时,获得值L0(0,0)和L1(0,0)需要相应2p+1的时间差异。因此,为了增加L0(0,0)值和L1(0,0)值需要2p+1个时钟周期的时间延迟。在本实施例中,搜索域设为-4到+4,所以需要9个时钟周期的时间延迟。移位寄存器部分34的9_移位寄存器340,344和348是用于延迟操作的。再参见图3A,第一9_移位寄存器340通过9个时钟周期将自第一SAD计算器322输出的SAD数据移位并将结果输出。第一加法器342将第一9_移位寄存器340的输出数据和第二SAD计算器324的输出数据进行相加。第二9_移位寄存器344通过9个时钟周期将自第二SAD计算器324输出的SAD数据移位并将结果输出。第二加法器346将第二9_移位寄存器344的输出数据和第三SAD计算器326的输出数据进行相加。第三9移位寄存器348通过9个时钟周期将自第三SAD计算器326输出的SAD数据移位并将结果输出。第三加法器350将第三9_移位寄存器348的输出数据和第四SAD计算器328的输出数据进行相加。第三加法器350的输出数据是用于给定的搜索域的部分SAD。
参见图6,在本实施例的运动估计器中,为了增加值L0(0,0)和L1(0,0)需要9个时钟周期的时间延迟。另外,在本实施例中并未出现为了将前一搜索域数据的第一行装入寄存器部分34所必须的除了9个时钟延迟之外的延迟。换言之,图6中阴影线部分所示的L0(0,0),L1(1,0),L2(2,0)和L3(3,0)是依次在每个时钟周期内获得的。接下来,图6中用打点的块表示的L0(0,1),L1(1,1),L2(2,1)和L3(3,1)也是依次在每个时钟周期内获得的。因此,当除去初始数据存储时间,通过全部搜索而得到的4×4像素搜索域的单独的SAD所需的全部时间是9×12,即,108个时钟周期。
当完成全像素的搜索后,根据本发明的运动估计器在通过全像素搜索后获得的MV点的基础上执行半像素搜索。
插补器212从三个前一搜索域存储器(前一搜索域存储器_A、前一搜索域存储器_B、前一搜索域存储器_C)中接收数据。
参照图7来描述在根据本发明的运动估计器中使用的半像素搜索过程。应该确定半像素搜索的搜索点。当搜索点用alpha(i,j),beta(i,j)和gamma(i,j)表示时,他们可以分别由方程(5a),方程(5b),和方程(5c)确定。
alpha(i,j)=p(i,j)+p(i+1,j)+p(i,j+1)…(5a)+p(i+1,j+1)//4 …(5a)beta(i,j)=p(i,j)+p(i+1,j)//2 …(5b)gamma(i,j)=p(i,j)+p(i,j+1)//2 …(5c)例如,和alpha(0,0)对应的搜索点称为70,和beta(0,1)对应的搜索点称为72,和gamma(1,0)对应的搜索点称为74,和alpha(0,4)对应的搜索点称为76,gamma(1,4)对应的搜索点称为78。
图8示出了图2的运动估计器中的插补器212的一个例子。例如,插补器212从寄存器PAR0,PBR0和PCR0中的两个寄存器,从寄存器PAR1,PBR1和PCR1中的两个寄存器,从寄存器PAR2,PBR2和PCR2中的两个寄存器,从寄存器PAR3,PBR3和PCR3中的两个寄存器,以及从寄存器PAR4,PBR4和PCR4中的两个寄存器中有选择地接收前一搜索域数据。接着,插补器212根据方程(5a)(5b)和(5c)执行插补操作,从而获得alpha,beta和gamma像素值。插补器212通过输出端顺序输出像素值。
因此,插补器212输出包括一个最高有效位(MSB)和一个最低有效位(LSB)的4位插补后的数据。开关384根据控制信号Crtl_B从插补器212的一个输出端顺序转换到另一个输出端,从而选择的数据被输入到计算器32。开关转换部分386根据控制信号Crtl_C选择插补数据并将这个插补后的数据输出到计算器32。通过计算器32和移位寄存器部分34可以获得一个与插补后数据相应的部分SAD。
换言之,根据本发明的运动估计器在读取前一帧域数据的单一操作中可同时产生alpha,beta,gamma搜索点的像素值。因此,根据本发明的运动估计器的处理速率要快于常规运动估计器的处理速度。
另外,当完成一个4×4域的运动估计后对另一个4×4域进行运动估计,例如,与alpha(0,4)相应的搜索点76的像素值和与beta(1,4)相应的搜索点78的像素值可以移位写入已经读出的前一搜索域数据来获得。因此,根据本发明的运动估计器可以有效地执行快速半像素搜索。
图9示出了当在图2的运动估计器施行半像素搜索后出现的数据流。参见图9,对于运动估计器需要24个时钟周期来完成一个单一的4×4块的半像素搜索。
图2的运动估计器提供的部分SAD计算器的处理单元是4×4块。当该运动估计器用于3层分层搜索时,运动估计器在上层的4×4块内的-4到+4像素间的搜索域内进行全搜索。运动估计器在中层的8×8块内的-2到+2像素间的搜索域内进行搜索。运动估计器在下层的16×16块内的-2到+2像素间的搜索域内进行搜索。
图2的运动估计器中的部分SAD计算器可以处理4×4块。因此,为了在中层的8×8块和下层的16×16块中进行运动估计,必须将中层分为4个块,将下层分为16个块,在每个块内计算SAD并将结果相加。但是,如图10所示,因为中层和下层的搜索域相应于-2到+2像素,所以通过一个简单的搜索操作就可以得到相应25点的部分SAD。为此,参见图2,根据本发明的运动估计器包括25_移位寄存器230。运动估计器将一部分SAD输入到25_移位寄存器,只要后续的部分SAD输出就对在25_移位寄存器230中存储的数据移位,并将相对于第一4×4块的部分SAD与相对于下一个4×4块的部分SAD进行相加,从而对每一执行在中层和下层中执行搜索操作。
图2中的运动估计器根据相邻宏块间的相互关系的三个初始搜索点中选择一个。外设宏块的位置可以按照图11中所示的进行设置。因为MV是从在水平方向的左上的一个输入图象帧开始获得,所以当前块和当前块前的宏块之间距离和输入图象帧内水平宏块的数目相同。因此,当假设输入图象帧是具有352×288的CIF型像素时,输入图象帧在水平方向上最大可以有22个宏块。因此,在本发明的另一个实施例中,运动估计器还包括22_移位寄存器阵列1100和中值计算器1102。22_移位寄存器阵列1100接收外设宏块的MV,并将中值计算器1102输出作为候选MV的MV的中值,从而使用在外设宏块间的相互关系选择一个候选MV。所选的候选MV作为中层的初始搜索点使用。
在应用了根据本发明实施例中的运动估计器的3层分层搜索中,上层数据通过对原始数据进行4∶1抽选而获得。在本实施例中,抽选是对原始数据采用每4个采样值中选取一个的方式而执行的。因为当前处理域数据被存储在单一的当前处理域数据存储器中,所以当前处理域数据按照从水平和垂直方向每4个采样值中选取一个的方法获得。因为前一搜索域数据分别存储在三个的前一搜索域数据存储器中,在水平方向上,前一搜索域数据按照当前处理域数据的方法在每4个采样值中选取一个,在垂直方向上,前一搜索域数据按照图12所示的方法进行抽选。换言之,因为前一搜索域数据按照本实施例存储在前一搜索域数据存储器中,所以,搜索域数据的第一行存储在前一搜索域存储器_A中,搜索域数据的第二行存储在前一搜索域存储器_B中,搜索域数据的第三行存储在前一搜索域存储器_C中,需要在图2中的DMA处理器260中增加4个地址并且按照前一搜索域存储器_A、前一搜索域存储器B、前一搜索域存储器_C的顺序从前一搜索域存储器中读出控制数据。
从存储器读出的数据存储在部分SAD计算器210的寄存器中。在搜索域的±4像素范围内进行全搜索,这样具有最小SAD的两个位置被选为中层的初始搜索点。上层的数据处理流如图13所示。图13和图6基本一样,因此它的描述就忽略了。
中层数据按照2∶1从下层数据中抽选获得。相应地,如图14所示,在当前处理域存储器和前一搜索域存储器的水平和垂直方向上地址递加2,从而在存储于存储器中的数据进行读出和跳过操作,如图14所示。因为前一搜索域数据分别存储在三个前一搜索域数据存储器中,所以在垂直方向按照前一搜索域存储器_A、前一搜索域存储器_B、前一搜索域存储器_C的顺序读出数据,这样在垂直方向的前一搜索域数据中可以进行2∶1抽选。
在中层,在根据上层中的两个初始搜索点和从22_移位寄存器250中得到的候选MV所对应的一个初始点的基础上相对于8×8块的±2像素搜索域内进行全搜索后就得到了部分SAD。因为部分SAD计算器210是设计用于在4×4块单元内进行搜索的,所以为了对中层的8×8的块进行搜索,则当前帧中的8×8的块应该分为四个4×4块,如图15所示。换言之,在±2像素搜索域中的25点的部分SAD可以根据第一4×4块获得并存储到25_移位寄存器230中。接着加法器220将根据第一4×4块获得的部分SAD和根据下一4×4块获得的部分SAD相加。将上述过程重复四次就得到了对应8×8块的SAD。得到的对应基于中层三个初始搜索点的单个±2像素搜索域的SAD中,具有最小的SAD的被用做下层的初始搜索点。图16示出了中层的数据处理流。参见图16,为了将L0(0,0)和L1(1,0)进行相加,中层需要5个时钟周期的延迟。换言之,阴影块中的L0(0,0),L1(1,0),L2(2,0)和L3(3,0)是按顺序在每个时钟周期中获得,接着打点的块L0(0,1),L1(1,1),L2(2,1)和L3(3,1)也是按顺序在每个时钟周期中获得。
下层数据是原始数据。在从中层得到的初始搜索点的基础上通过相应于16×16块的±2像素搜索域的全搜索得到了一个具有最小SAD的位置。从这一位置,基于全像素搜索的最终的MV就得到了。在下层的运动估计是按照16×16块进行的,如图17所示。当部分SAD计算器210按照4×4块单元进行运算时,可以将在4×4块的搜索重复执行16次来获得16×16块相应的SAD。下层的数据处理流如图18所示。图18中的数据处理流和图16中的一样,图16示出的是按照±2域进行搜索的中层的数据处理流,因此图18的描述忽略。
如上所述,根据本发明的运动估计器可以快速地进行,特别是,对基于半像素的搜索进行得有效且快速。
权利要求
1.一种运动估计器用于为了压缩图象数据帧而进行的运动估计,包括第一存储器,包括用于按照行方式存储前一搜索域数据的具有多个存储器区域的前一搜索域存储器和用于按照行方式存储当前处理域的数据的当前处理域存储器;前一搜索域存储器提供器,用于提供移位和输出从呈环形的多个存储器区域中输出的前一搜索域数据;第一开关部分,用于选择从前一搜索域存储器提供器中输出的前一搜索域数据;第二开关部分,用于选择从当前处理域存储器中按照行输出的当前搜索域数据;计算器,包括多个并行连接的绝对差异和(SAD)的计算器,这些SAD计算器计算所选的前一处理域数据和当前处理域数据的SAD;和移位寄存器,用于接收和移位一系列SAD计算器输出的SAD数据并将移位后的数据和其他系列SAD计算器的SAD数据进行相加,然后输出一个部分SAD(partial SAD)。
2.如权利要求1中所述的运动估计器,当搜索域的大小置为p时,计算器包括p个并行连接的SAD计算器,和含有2p+1个寄存器的移位寄存器。
3.如权利要求1或2中所述的运动估计器,进一步包括用于缓冲输入数据的缓存器;用于从缓存器输出25_移位数据的25_移位寄存器;用于将部分SAD和从25_移位寄存器输出的数据相加从而输出一个SAD的加法器;一个用于利用加法器输出的SAD产生运动矢量的SAD比较和运动矢量产生单元;一个用于20_移位运动矢量并将该结果输出到SAD比较和运动矢量产生单元的20_移位寄存器。
4.如权利要求1中所述的运动估计器,进一步包括用来当使用3层的分层运动估计器被执行时,用于处理22_移位运算,并利用中层的外设宏块的运动矢量间的相互关系获得一个初始搜索点的22_移位寄存器。
5.如权利要求1中所述的运动估计器,进一步包括DMA处理器,用于控制当前处理域数据和前一搜索域数据并分别将他们存储到第一存储器中,并根据运动估计控制器的处理提供数据给计算器;运动估计控制器,用于根据DMA控制器输出的控制信号来控制运动估计;和第二存储器,用于存储计算后的部分SAD。
6.如权利要求1中所述的运动估计器,其中,第一存储器分为具有三个区域的前一搜索域存储器和当前处理域存储器,计算器包括利用前一搜索域数据和当前处理域数据计算SAD的第一、第二、第三和第四SAD计算器,以及移位寄存器包括用于9_移位和输出第一SAD计算器输出的SAD数据的第一9_移位寄存器;用于将第一9_移位寄存器输出的数据和第二SAD计算器输出的数据进行相加的第一加法器;用于9_移位和输出第二SAD计算器输出的SAD数据的第二9_移位寄存器;用于将第二9_移位寄存器输出的数据和第三SAD计算器输出的数据进行相加的第二加法器;用于9_移位和输出第三SAD计算器输出的SAD数据的第三9_移位寄存器;和用于将第三9_移位寄存器输出的数据和第四SAD计算器输出的数据进行相加的第三加法器。
7.如权利要求6中所述的运动估计器,其中第一到第四SAD计算器包括存储器和减法器,减法器的一个输入端连接到相应的寄存器的输出端,每一减法器的另一输入端连接到相应的开关。
8.如权利要求1中所述的运动估计器,进一步包括执行插补前一搜索域的数据并将插补的结果数据输出的插补器。
9.如权利要求1中所述的运动估计器,进一步包括用于在前一搜索域数据和当前处理数据之间执行识别并将根据一处理状态将他们提供给前一搜索域数据提供器和计算器的DMA控制器。
全文摘要
提供了一种能够在压缩运动图象时进行快速运动估计的运动估计器。该运动估计器包括第一存储器、前一搜索域存储器提供器、第一开关部分、第二开关部分、计算器和移位寄存器。该运动估计器可以快速地进行,特别是,对基于半像素的搜索进行得有效且快速。
文档编号H04N7/32GK1316856SQ0110128
公开日2001年10月10日 申请日期2001年1月17日 优先权日2000年1月27日
发明者崔成圭 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1