专利名称:运动矢量检测设备的制作方法
技术领域:
本发明涉及一种活动画面压缩设备,尤其涉及一种运动矢量检测设备。
由于运动矢量检测对减小相邻画面之间的时域冗余很重要,因此它广泛用于H.261、MPEG1(活动图像专家组1)或MPEG2的影片压缩。然而,由于包含了太多的工作,这使得运动矢量检测实时实现很困难。
通常,运动矢量检测采用以块为基础的运动搜索算法。以下将参照
图1对按照该算法的运动矢量检测加以说明。在参考画面的第(n-1)帧的搜索区域SR中搜索具有相对于在当前画面中第n帧中具有M×N象素的宏块MB的最小平均绝对误差(MAE)的块。在(n-1)帧画面中具有最小MAE的块被称作最佳区配块BM。搜索区SR由下述块组成,这些块的参考点位于相对于宏块MB参考点(x,y)的(x-P,y-P)和(x+P,y+P)之间的范围,并包含(M+2P)×(N+2P)象素。MAE可由下式计算MAE(i,j)=1MNΣk=0M-1Σl=0N-1|C(x+k,y+l)-R(x+i+k,y+j+l)|......(1)]]>其中,C(x+k,y+1)表示当前画面中的宏块的象素,R(x+i+k,y+j+1)表示参考画面中的宏块的象素。
宏块MB的运动矢量MV是位于宏块MB与最佳匹配块BM的各参考点之间的矢量。例如,如果宏块MB和最佳匹配块BM的各参考点分别表示为(x,y)和(x+u,y+v),则运动矢量为(u,v)。
为搜索参考画面中的最佳匹配块BM,应当通过公式1所示的减法、绝对值计算和加法等运算步骤求取每个搜索点的MAE。
由于以上常规运动矢量检测方法的运算步骤太多,因此仅用软件是不行的。假定搜索范围是从+P到-P,参考画面的尺寸为I×J象素,宏块MB的尺寸为M×N象素,并且输入画面应当以每秒F帧的速率来处理,所需要的运算步骤次数可由下式给出
如果M=N=16,I=720,J=480,F=30,P=15,那么需要的运算步骤次数为29.89 GOPS(每秒千兆次操作)。
因此,在已有技术中,运动矢量检测算法是用诸如SGS-Thomson公司的协处理器STI 3220芯片之类的运动矢量检测VLSI芯片来实现的。此处,STI3220芯片最大可以以18MHz的象素速率工作,并且在例如由位于(-8,-8)至(+7,+7)之间范围的参考点处的宏块组成的搜索区域内检测在参考点(0,0)处的8×8或16×16象素宏块的运动矢量。
然而,一般的视频压缩算法,诸如MPEG2标准或ITU-T(国际电信联盟-电信分部)图像通信标准H.261规定,例如,应当在位于(-16,-16)到(+15,+15)范围内的参考点处的宏块组成的搜索区域内检测位于参考点(0,0)处的16×16象素宏块的运动矢量。这样,为了在搜索区内搜索,可以同时安排四片STI 3220芯片或将搜索区域分成四个区域,用一片STI 3220芯片检测各个区域内的运动矢量。
不过,前一种情况增大了硬件尺寸和成本,而后一种情况尽管具有硬件尺寸小的优点,但增加了处理时间,使实时处理困难。
本发明的目的是提供一种利用简单的硬件对运动矢量进行实时检测的运动矢量检测设备。
为实现以上目的,提供了一种运动矢量检测设备。在运动矢量检测设备中设置用于储存当前画面和参考画面的象素的总存储器以及局部存储器。第一缓冲器缓冲二次采样(subsample)宏块的象素和二次采样第一搜索区的象素。运动矢量检测协处理器从第一缓冲器接收二次采样宏块的象素和二次采样第一搜索区的象素,并检测第一运动矢量。第二缓冲器锁存从运动矢量检测协处理器接收的第一运动矢量。主处理器从总存储器中读取当前画面中宏块的象素和参考画面中第一搜索区的象素,将读出的象素存储在局部存储器中,对所存储象素进行二次采样,将二次采样的象素存入第一缓冲器,从第二缓冲器中读出第一运动矢量,并按照软件程序从包含第一运动矢量所指示的象素和参考画面中具有位于与该象素相邻象素处的参考点的各块的第二搜索区中,检测宏块的第二运动矢量。
通过参照附图详细说明本发明的优选实施例将会使本发明的目的和优点变得更加明显。附图中图1是常规运动矢量检测的示意图2是按照本发明优选实施例的运动矢量检测设备的方框图;图3是图2所示主处理器的操作流程图;图4A说明了宏块的二次采样;图4B说明了搜索区的二次采样;和图5说明了主处理器的运动矢量检测。
图2是按照本发明优选实施例的运动矢量检测设备的方框图。主处理器100控制带本发明运动矢量检测设备的整个图像处理设备。特别是,主处理器100从存有多个画面象素的总存储器102中读出当前画面中的宏块的象素和参考画面中的第一搜索区SRl的象素以便检测宏块的运动矢量。第一搜索区SRl由位于相对于例如16×16象素宏块的参考点(0,0)的(-16,-16)至(+15,+15)范围内的参考点处的块组成,如图4B所示,包括47×47象素。
读出宏块和第一搜索区SRl的象素之后,主处理器100在水平与垂直两个方向上对宏块象素和第一搜索区SRl的象素作2∶1的二次采样(subsample)从而使它们分别具有8×8象素和23×23象素。
然后,主处理器100将二次采样的宏块MB和第一搜索区域SR1的象素提供给第一缓冲器106。第一缓冲器106可以是FIFO(先入先出)缓冲器。可以用诸如STI 3220芯片的运动矢量器件作为运动矢量检测协处理器108。运动矢量检测协处理器108接收来自第一缓冲器106的数据,对数据进行运动估值,并将最后得到的第一运动矢量存入第二缓冲器110。
在更加详细的运动矢量检测说明中,运动矢量检测协处理器108从第一缓冲器106接收宏块的二次采样8×8象素和第一搜索区的二次采样23×23象素,在二次采样的第一搜索区域内搜索具有相对于二次采样宏块的最小MAE的8×8象素块,以及检测第一运动矢量。
运动矢量检测协处理器108向第二缓冲器110提供第一运动矢量并把第一运动矢量的检测情况通知主处理器100。锁存器可以作为第二缓冲器110。当从运动矢量检测协处理器108接收到有关第一运动矢量检测的信息时,主处理器100便从第二缓冲器110中读出第一运动矢量。然后,主处理器100从总存储器102中读出第一运动矢量所表示的16×16象素块的象素、具有位于与各个这些象素相邻的八个象素处的参考点的16×16象素块的象素、以及宏块的象素。主处理器100计算由第一运动矢量表示的块和具有位于与第一运动矢量相邻八个象素处的参考点的块的MAE,搜索具有最小MAE的块,检测第二运动矢量。此处,能够将搜索区域的非二次采样象素存储在局部存储器104,以检测第一和第二运动矢量。为了检测第一运动矢量,主处理器100从局部存储器104中读出搜索区域和宏块的象素,对这些象素进行二次采样,并将二次采样的象素存入第一缓冲器106。然后,为了检测第二运动矢量,主处理器100从局部存储器104中读出由第一运动矢量表示的16×16象素和具有位于与这些象素相邻的八个象素处的参考点的非二次采样块的象素,并检测第二运动矢量。
图3是图2所示主处理器的操作流程图,图4A和4B分别示出了宏块和搜索区的二次采样,图5示出了主处理器的运动矢量检测。参照这些附图,将对按照本发明优选实施例的运动矢量检测设备的操作进行详细说明。
在步骤200中,主处理器100从总存储器102中读出当前画面中宏块的象素和参考画面中第一搜索区的象素以便检测宏块的运动矢量。
在步骤202中,主处理器100在水平和垂直方向上以2∶1的比例二次采样宏块和第一搜索区的象素。参照图4A和4B,通过2∶1的二次采样,16×16象素宏块MB被重构成8×8象素二次采样宏块SMB,而47×47象素第一搜索区SRl则被重构成23×23象素二次采样搜索区SSRl。在步骤204中,主处理器100向缓冲器106提供宏块和第一搜索区的二次采样象素,然后驱动运动矢量检测协处理器108。当接收到主处理器100的驱动命令时,运动矢量检测协处理器108便接收装载在第一缓冲器106中的数据,检测第一运动矢量,将第一运动矢量锁存在第二缓冲器110中以及把第一运动矢量的检测情况通知给主处理器100。在步骤206中,主处理器100对运动矢量检测协处理器108是否已提供了第一运动矢量检测信息进行判定。如果运动矢量检测协处理器108已提供了信息,程序便继续执行步骤208。否则,主处理器100就等待运动矢量检测协处理器108提供第一运动矢量的检测信息。
在步骤208中,主处理器100先从第二缓冲器110中读取第一运动矢量,然后从总存储器102中读取当前画面中的相应宏块的象素和参考画面中的第二搜索区的象素。第二搜索区包括第一运动矢量所代表的16×16象素块及具有位于与这些象素相邻八个象素处的参考点的16×16象素块。参照图5,第二搜索区具有用第一运动矢量表示的象素MV1P及其具有位于与该象素MPlP相邻八个象素P1到P8处的参考点的16×16象素块的象素。在步骤210中,主处理器100计算由第一运动矢量表示的象素和具有位于与相对于宏块的16×16象素的该象素相邻八个象素处的参考点的16×16象素块的MAE,搜索具有最小MAE的块,并检测第二运动矢量。
当彻底检测出第二运动矢量时,主处理器100就判定该宏块是否为当前画面中的最后一个宏块。如果是最后一个宏块,那么程序结束,否则,程序便返回到步骤200去处理下一个宏块。
如上所述,在主处理器中对宏块和搜索区域进行二次采样,然后,在硬件的运动矢量检测协处理器中以双倍的象素值精度检测二次采样的运动矢量。然后,主处理器在包含双象素值精度的运动矢量表示的象素的搜索区域以及具有位于与该象素相邻八个象素处的参考点的块中,以整数象素值精度检测运动矢量。此种运动矢量检测方法的运算次数为MV=2MV1+MV2(-8≤MV1≤+7,-1≤MV2≤+1)......(3)这样,通过简单的硬件与软件的结合,也就是说,利用单个运动矢量检测协处理器,缓冲器和两个阶段分层次的运动搜索方法,可以有效地实时实现以块为基础运动搜索算法。
此外,在本发明中将用于检测16×16象素块的运动矢量的运算次数从单使用软件的现有技术中的786432(=(16+15+1)2×162×3)次显著减少到6912(=9×16×16×3)次。
权利要求
1.一种运动矢量检测设备,包括总存储器,用于储存当前画面和参考画面的象素;局部存储器;第一缓冲器,用于缓冲二次采样宏块的象素和二次采样第一搜索区的象素;运动矢量检测协处理器,用于从所述第一缓冲器接收所述二次采样宏块的象素和二次采样第一搜索区的象素,并检测第一运动矢量;第二缓中器,用于锁存从所述运动矢量检测协处理器接收的所述第一运动矢量;以及主处理器,用于从所述总存储器中读取所述当前画面中宏块的象素和所述参考画面中第一搜索区的象素,将所读出的象素存储在所述局部存储器,对所存储象素进行二次采样,将二次采样的象素存入所述第一缓冲器,从所述第二缓冲器中读出所述第一运动矢量,并按照软件程序从包含所述第一运动矢量所指示的象素和所述参考画面中具有位于与该象素相邻象素处的参考点的各块的第二搜索区中,检测宏块的第二运动矢量。
2.一种运动矢量检测设备,它包括总存储器,用于储存当前画面和参考画面的象素;局部存储器;第一缓冲器,用于缓冲对M×N象素宏块进行2∶1二次采样得到的(M/2×N/2)象素块以及对((M+2P)×(N+2P))象素搜索区域进行2∶1二次采样得到的((M+2P)/2×(N+2P)/2)象素数据;运动矢量检测协处理器,用于从所述第一缓冲器接收所述二次采样宏块和第一搜索区的象素,并检测第一运动矢量;第二缓冲器,用于锁存从所述运动矢量检测协处理器接收的所述第一运动矢量;以及主处理器,用于从所述总存储器中读取所述当前画面中M×N象素宏块的象素和所述参考画面中((M+2P)×(N+2P))象素第一搜索区的象素,将所读出的象素存入所述局部存储器,分别将所存储象素二次采样成((M/2)×(N/2))象素和((M+2P)/2×(N+2P)/2)象素,将二次采样的象素存入所述第一缓冲器,从所述第二缓冲器中读出所述第一运动矢量,并按照软件程序从包含所述第一运动矢量所指示的象素和所述参考画面中具有位于与该象素相邻象素处的参考点的M×N块的第二搜索区中,检测宏块的第二运动矢量。
全文摘要
一种运动矢量检测设备,包括储存当前和参考画面象素的总存储器;局部存储器;缓冲二次采样宏块和第一搜索区象素的第一缓冲器;检测第一运动矢量的运动矢量检测协处理器;锁存第一运动矢量的第二缓冲器;主处理器,用于将从总存储器中读取的象素数据存入局部存储器,二次采样它们后再存入第一缓冲器并读出第一运动矢量,从第二搜索区中检测宏块的第二运动矢量。
文档编号H04N7/32GK1227458SQ9812656
公开日1999年9月1日 申请日期1998年12月30日 优先权日1997年12月31日
发明者崔健荣 申请人:三星电子株式会社