基于分级运动估算检测运动矢量的方法及装置 本发明涉及一种确定运动矢量的方法及装置;更具体地,涉及一种改进的通过使用分时分级运动估算方法确定来自两相继的视频帧的运动矢量的方法及装置。
众所周知,数字视频信号的传输可获得比模拟信号传输质量高得多的视频图象。当包括一序列图象“帧”的图象信号以数字形式表示时,将生成大量用于传输的数据,特别是在高清晰度电视(HDTV)系统的情况中。然而,一常规传输信道的可用频带宽度是有限的,因此,为了发送大量的数字数据,必须压缩或减少传输数据的量,在各种视频压缩技术中,将时间及空间压缩技术与统计编码技术相结合的所谓的混合编码技术是所知最为有效的。
大多数混合编码技术采用运动补偿DPCM(差分脉冲码调制),二维DCT(离散余弦变换),DCT系数的量化及VLC(可变长度编码)。运动补偿DPCM是对在一当前帧和一先前帧之间一目标的运动进行估算,并根据该目标的运动流预测当前帧以产生一个代表当前帧及其预测之间的差的差分信号地处理。
二维DCT减少或去除诸如运动补偿的DPCM数据的图象数据间的空间冗余,将一例如为8×8象素块的数字图象数据块变换成一组变换系数数据。这种技术在例如Chen和Pratt的“场景自适应编码器”,IEEE Transactions on Communications,COM-32,NO.3第225-232页(1984年3月)中被描述。通过量化器、折线扫描及VLC对这些变换系数数据的处理,待传输的数据量可被有效地压缩。
具体地,在运动补偿DPCM中,基于对当前帧及先前帧间的运动的估算,当前帧数据自先前帧被预测。该被估算的运动可用表示先前帧及当前帧间的象素的位移的二维运动矢量描述。
在对一视频序列中一目标的位移进行估算中使用最多的一种方法是块匹配算法。根据该块匹配算法,一当前帧被划分成多个搜索块。一搜索块的大小典型地介于8×8与32×32象素之间。为确定当前帧中一搜索块的运动矢量,在当前帧的该搜索块与一先前帧内一通常更大的搜索区域内所包括的许多大小相同的候选块的各块之间执行一相似性计算。例如绝对平均误差或均方误差的一误差函数被用于实现在当前帧的该搜索块与该搜索区域内的候选块的各块之间的相似性测量。按照定义,一运动矢量表示该搜索块与一产生最小误差函数的候选块之间的位移。由于该搜索块与相应于该搜索块的一搜索区中的所有可能的候选块进行比较(例如,全搜索块匹配),因而产生了繁重的计算要求,进而必需有能进行高速处理的复杂的硬件及/或用于实时处理的大量的处理器。
考虑到全搜索块匹配过程中繁重的计算要求,已经有简化的算法被提出(见例如J.R.Jain等人的“帧间图象编码的位移测量及其应用”,IEEE Transactions of Communications,COM-29,No.12,第1799-1808页,1981年12月)。该被建议的简化算法对最小失真的方向进行检测,其中该检测是通过逐次地减少搜索的区域而完成的。其初始步骤是由对一搜索区内预定位置上的5个候选块中产生一最小误差函数的一候选块的搜索组成。在对该具有最小误差函数的候选块的检测完毕后,重复对由该被检测的候选块所确定的一搜索区上预定位置的5个候选块的处理。该过程被继续至该搜索区减小到3×3候选块的大小。在最后的步骤中,在该9个候选块中产生一最小误差函数的一候选块被确定为一搜索块的最相似的候选块;且该两块之间的位移被确定为该搜索块的运动矢量。
尽管这种简化的搜索方法可以减少计算的负担和硬件的要求,由于该被确定的运动矢量可能反映具有一局部最小误差函数的一候选块而非通过全搜索块匹配而被发现的最相似的候选块,因此它未必能提供该块匹配算法最佳的实现。
因此,本发明的一个目的是提供一种改进的,可减少硬件要求的,通过采用一分时分级运动估算方法提供运动矢量的方法及装置,其中在各分级中,一搜索块的运动矢量在相应于该搜索块的一搜索区所包括的一预定搜索域中被搜索。
根据本发明,提供了一种用于通过采用一分时多级分级运动估算,确定在一帧延续周期内在一当前帧与一先前帧之间的运动矢量的方法,其中该当前帧被划分为多个大小相同的搜索块且该先前帧被划分为相应数量的搜索区,各搜索区被进一步划分为多个所述相同大小的候选块,这些候选块被分组成从一最高级到一最低级的多个不同级的搜索域,该方法包括有以下步骤:
(a)相对于相应的最高级的搜索域对当前帧中各搜索块进行运动估算以提供各搜索块的一可能的运动矢量及一最小误差函数,所述可能的运动矢量表示各搜索块与一产生所述最小误差函数的候选块之间的位移;
(b)存储各搜索块的最小误差函数及可能的运动矢量;
(c)将各搜索块的最小误差函数与一最高级的阈值进行比较,从而选择具有大于该最高级的阈值的最小误差函数的搜索块为所选择的搜索块;
(d)相对于相应的较低级的搜索域对各选择的搜索块进行运动估算以提供用于各选择的搜索块的较低级的一可能的运动矢量及一最小误差函数,所述较低级的可能的运动矢量表示各选择的搜索块与一产生所述较低级的最小误差函数的候选块之间的位移;
(e)为各被选择的搜索块选择具有在存储的相应于所述各被选择的搜索块的最小误差函数与较低级的最小误差函数之间一较小值的一最小误差函数,并生成一表示用于所选择的搜索块的被选择的最小误差函数的一选择信号;
(f)用被选择的最小误差函数更新存储的用于所选择的搜索块的最小误差函数;
(g)响应于该选择信号,选择相应于所选择的最小误差函数的可能的运动矢量为用于所选择的搜索块的被选择的可能的运动矢量;
(h)用被选择的可能的运动矢量更新存储的用于所选择的搜索块的可能的运动矢量;
(i)将用于各选择的搜索块的被选择的最小误差函数与该较低级的一阈值进行比较,从而选择具有大于该较低级的阈值的被选择的最小误差函数的搜索块为所选择的次低级的搜索块;
(j)对步骤(i)中选择的搜索块进行所述步骤(d)至(i)直至完成对存储的最低级的可能的运动矢量的更新处理或超出该帧延续周期为止;及
(k)提供该存储的可能的运动矢量为当前帧的运动矢量。
从以下结合附图对给定的优选实施例的描述中,本发明的上述及其它目的和特征将变得明显,附图中:
图1为本发明的包括一运动估算器的一编码系统的方框图;
图2示出了图1中所示的该运动估算器的详细方框图;及
图3描绘了在本发明中所采用的分级搜索域的示例性结构。
参照图1,其示出了本发明的包括一运动估算器12且用于压缩数字视频信号的一编码系统的方框图。
作为输入数字视频信号的当前帧数据被馈送至一减法器18及该运动估算器12。实际上,该输入数字视频信号是在逐象素的基础上自一输入存储器(未示出)被读出的,在该存储器中,各视频信号帧作为用于在逐象素基础上处理的连续的象素数据块被存储。该输入数字视频信号的块的大小典型地介于8×8与32×32象素之间。
本发明的运动估算器12用于通过采用本发明的分时分级运动估算方法及在后参照图2及图3将被描述的装置确定各搜索块的运动矢量。在确定完当前帧的全部搜索块的运动矢量后,这些运动矢量被馈送给运动补偿器14及一可变长度编码器34。
响应于各运动矢量,一预测信号,即相应于该运动矢量的一候选块的象素数据自一帧存储器16被取出并通过运动补偿器14提供至减法器18及一加法器28。在减法器18,该来自运动补偿器14的预测信号被从输入的数字视频信号中减去,且该结果数据,即一误差信号被传送给一变换编码器,例如一DCT编码器20,其中该误差信号的一块,例如一8×8象素数据的块,被编码成一变换系数数据的块。熟悉本领域的技术人员将会意识到其它的变换技术也可被采用以替代在此描述的DCT。
在量化器22,来自DCT编码器20的该变换系数被量化成一组量化的DCT系数,后者随后被馈送至一扫描器30及一逆量化器(IQ)24。在IQ24,这些被量化的DCT系数被转换回成一组重建的DCT系数。该组重建的DCT系数然后被提供给一逆离散余弦变换器(IDCT)26并在其内被变换成一重建象素数据的块。在加法器28,来自运动补偿器14的预测信号和来自IDCT26的重建象素数据的块被求和以提供一当前帧的重建的块信号并被写到帧存储器16上。该帧存储器16有两个存储当前帧数据及先前帧数据的帧存储单元。来自加法器28的该输出信号包括象素数据的块。当所有表示当前帧的块被存储在帧存储器16中时,自该加法器28提供新的帧数据。在此时,该新的数据被认为是一当前帧且先前存储在帧存储器16中的当前帧数所被认为是先前帧。
同时,来自量化器22的量化的DCT系数被传送给扫描器30,后者以适于例如VLC编码器34的统计编码器的折线方式,自相应于DCT系数的DC分量的一值开始对这些量化的DCT系数进行扫描。该VLC编码器34将扫描的数据转换成一组可变长度编码的数据。该VLC编码器34基本上是一查寻表:即,在VLC编码器34中,提供许多码组以确定各组零点扫描宽度与这些量化的DCT系数的一水平之间的各自关系及其可变长度码,其中一水平是一具有非零值的量化的DCT系数且一零点扫描宽度是指在扫描序列中该水平之前的连续零点的总数。应当指出可采用其它的统计编码技术代替在此描述的VLC。来自运动补偿器12的运动矢量也通过VLC编码器34被编码。该来自VLC编码器34的被编码的数据被提供给一发送机(未示出)用于发送。
参照图2和图3,其中描述了本发明的分时分级运动估算。在图2中,说明了图1中所示的运动估算器12的方框图。输入的数字视频信号作为当前帧被存储在第一帧存储器210中并作为先前帧被存储在第二帧存储器212中。根据本发明,当前帧的运动估算是通过将一搜索区内的候选块分成多个,例如5个分级搜索域而实现的。
按照传统的块匹配算法,当前帧被分成多个相同大小,例如16×16象素的搜索块。为确定一用于一搜索块的运动矢量,在该搜索块与先前帧内一通常较大的搜索区中所包括的多个相等大小的候选块中的各块之间进行一相似性计算,该搜索区是由例如分别在水平和垂直方向上+/-12和+/-6个象素的预定的搜索范围确定的。
参照图3,其说明了一用于表示本发明的运动估算方法中所采用的分级搜索域的示例性图。在图3中,由线段所围成的各方形表示一搜索区300中包括的一候选块。在本发明的优选实施例中,假定最大的搜索范围是分别在水平和垂直方向上+/-12和+/-6个象素,且搜索区300包括有除了由该搜索范围所确定的该区的四个角候选块外的321个候选块。根据本发明,该搜索区300被分成,或换句话说,该321个候选块被分成多个,例如5个搜索域以实现分时分级运动估算,其中搜索区300内所示的数字0至4分别表示分级搜索域的级。在本发明的优选实施例中,由图中0所示的0级搜索域包括一个与搜索块位于相同位置的候选块,且其余的1级至4级搜索域分别包括80个候选块。应当注意,本发明可通过例如各搜索域具有与上述不同数量的候选块的一种不同的方式而实现,但并不限于此。
返回参照图2,本发明的当前帧的分级运动估算启始于通过对与其相应的0级搜索域相关的搜索块中的各块进行的运动估算。为了实现0级的运动估算,一存储控制器220发送一用于各搜索块的读地址给一块位置存储器222并发送一0级信息到线L20上,其中该读地址表示块位置存储器222内各搜索块的位置数据存于其中的一地址。响应于该读地址,用于该搜索块的待处理的位置数据被自块位置存储器222中取出送给帧地址生成器242及一MSE(均方误差)及MV(运动矢量)地址生成器224。该位置数据也被提供给一缓冲器240并被暂时地存入其中。
随后,响应于用于各搜索块的位置数据及在线L20上的0级信息,帧地址生成器242分别将用于该搜索块及相应的0级搜索域中的一候选块的地址数据提供给第一和第二帧存储器210和212。在减法器216,从自第一帧存储器210取出的搜索块的象素数据中减去自第二帧存储器212取出的候选块的象素数据;且该结果数据,即其间的差信号被馈送给一MSE单元218,在其中该差信号的一误差函数,例如MSE被计算。用于各搜索块的该MSE然后被提供给一开关SW1的一输入端A,该开关SW1响应于线L20上的0级信息连接该输入端A及其输出端C。同时,开关SW2的一输入端A和一输出端C也通过线L20上的0级信息被连接到一起,使在输入端A上的一用于各搜索块的零值运动矢量可被馈送至一MV存储器234,其中这些零值运动矢量作为用于这些搜索块的可能的运动矢量被存入其中。
该MSE及MV地址生成器224响应于来自块位置存储器222的位置数据并用于生成一所需的地址数据给MSE存储器226及MV存储器234以分别将开关SW1和SW2的输出端C上的数据存储在存储器226和234的适当的存储区上。
在比较器230,用于各搜索块的0级MSE值与来自阈值更新器228的一0级阈值进行比较。根据本发明的优选实施例,该阈值更新器228提供一预定的0级阈值,而生成用于其它级的更新的阈值,这些更新的阈值根据依照待被完成的作业量而确定的一作业进度而被自适应地调整。该阈值更新器228将在后作更详细的描述。然而应当注意,只要有助于对运动矢量的更好的估算,该0级阈值可根据输入数字视频信号的特性,例如其变化而被调整。
如果开关SW1的输出端C上的MSE值大于0级阈值,本发明的比较器230提供一逻辑高比较信号给阈值更新器228,缓冲器240和存储控制器220,否则提供一逻辑低比较信息。响应于来自该比较器230的逻辑高比较信号及线L20上的0级信息,阈值更新器228对具有大于该0级阈值的0级MSE值的许多搜索块进行计数。所计数的数字被用于更新下一级,即1级的阈值。用于更新下一阈值的详细方案将在后予以描述。
如果来自比较器230的比较信号是逻辑高,则存储控制器220发出一个写地址给块位置存储器222,从而使暂时存储在缓冲器240中的用于具有大于0级阈值的一MSE值的各搜索块的位置数据可被写到块位置存储器222上。在以上述方式对当前帧中所有的搜索块执行完0级运动估算后,MSE存储器226及MV存储器234分别存储用于各搜索块的该MSE值及该零值可能的运动矢量;而块位置存储器222存储具有大于预定的0级阈值的0级MSE值的搜索块的位置数据。
本发明的块位置存储器222具有用于处理0级运动估算的所有搜索块的预存的位置数据及用于暂时存储用于下一级运动估算中待被处理的搜索块的位置数据的附加存储空间。在本发明的优选实施例中,该预存的位置数据及暂存的在下一级运动估算中将被使用的位置数据以现有技术中众所周知的循环排队的方式被存入块位置存储器222中以达到有效的存取。
在完成对所有搜索块的0级运动估算后,存储控制器220提供1级信息到线L20上并生成用于相继取出生成的0级MSE值大于预定的0级阈值的搜索块的位置数据的读地址。用于在1级运动估算处理中将被处理的各搜索块的位置数据被从块位置存储器222中取出并提供给帧地址生成器242、缓冲器240和MSE及MV地址生成器224。
响应于来自块位置存储器222的位置数据及线L20上的1级信息,帧地址生成器242生成对应于搜索块的第一组地址数据和用于取出该搜索块的相应的1级搜索域内候选块的象素数据的地址数据以分别送给第一和第二帧存储器210和212。通过采用一传统的运动估算技术,一运动估算单元214然后基于来自第一帧存储器210的搜索块的象素数据及相应的1级搜索域内候选块的象素数据执行搜索块的1级运动估算,从而分别提供一最小的1级MSE值和该搜索块的一相应的1级运动矢量给一MSE选择器232和一MV选择器236。
该MSE选择器232然后将该最小的1级MSE值与通过MSE及MV地址生成器224自MSE存储器226取出的同一搜索块的0级MSE值进行比较;并从两值中选择一较小的MSE值以将该被选择的MSE值提供给开关SW1的输入端B且将一表示该被选择的MSE值的选择信号提供给MV选择器236。如果该两MSE值具有一相同的值,则该较高级的MSE值,即0级MSE值被确定为所选择的MSE值。响应于来自MSE选择器232的该选择信号,MV选择器236在来自运动估算单元214的1级运动矢量和通过MSE及MV地址生成器224自MV存储器234取出的零值可能的运动矢量中选择相应于被选择的MSE值的运动矢量作为用于搜索块的一可能的运动矢量并将该选择的运动矢量提供给开关SW2的输入端B。
在本发明的优选实施例中,开关SW1及SW2的各输出端C及输入端B响应于表示除0级以外的其它的一级的级信息被连接在一起。因此,该选择的MSE值及在端C上的运动矢量被分别送至各存储器226及234并作为1级MSE值和用于该搜索块的可能的运动矢量存入其中。
同时,在比较器230,将开关SW1的端C上的选择的MSE值与自阈值更新器228提供的一更新的1级阈值进行比较。用与在0级运动估算处理中相似的方式,如果开关SW1的端C上的MSE值大于1级阈值,本发明的比较器230提供一逻辑高比较信号至阈值更新器228、缓冲器240及存储控制器220,否则,提供一逻辑低比较信号。该馈送给阈值更新器228的逻辑高比较信号及1级信息在其中被用以计数具有大于1级阈值的被选择的MSE值的搜索块的数量。如果该来自比较器230的比较信号是逻辑高,则存储控制器220发出一个写地址到块位置存储器222,从而使暂存在缓冲器240中用于具有大于1级阈值的被选择的MSE值的各搜索块的位置数据可被写到块位置存储器222上。
除了在运动估算单元214中执行的运动估算是关于其各级的相应搜索域的之外,2级至4级的运动估算以与1级运动估算相似的方式被执行。在完成4级运动估算后,存在MV存储器234中的可能的运动矢量作为当前帧的搜索块的运动矢量经过线L12被提供给图1中所示的运动补偿器14。如果在一帧延续周期(例如,在视频信号具有每秒30帧的帧速率的情况下为33.3毫秒)内未完成全部运动估算,或者,换句话说,如果该帧延续周期在本发明的分时分级运动估算的任何阶段期间全部用完,在此时运动估算被中断且在该情况下存储在MV存储器234中的可能的运动矢量被提供作为当前帧的运动矢量,且运动估算继续为下一帧进行。
在本发明的优选实施例中,用于1级至4级的各阈值基于在先前级中被计数的逻辑高比较信号的数量,即其运动矢量在任何先前级中未被确定的搜索块的数量而被更新。例如,假定用于i级(i=1,2,3和4)的一阈值TH(i)通过TH(i)=TH(i-1)+(在i-1级中被计数的逻辑高比较信号的数量)/100确定,且在具有一预定的阈值TH(0)的0级运动估算中从当前帧的总共1000个搜索块中已确定了400个搜索块的运动矢量,即用于0级的计数值为600,则1级阈值TH(1)被确定为TH(0)+6。在该例子中,如果在1级运动估算中又确定了500个运动矢量,则2级阈值TH(2)为TH(1)+1,等等。在本发明的用于改进阈值更新方案的另一优选实施例中,在先前级的运动估算中所使用的处理时间也可被加入到确定一阈值中。
虽然本发明是结合特定的实施例进行展示和描述的,但是对于熟悉本领域的人员而言,显然可以做出许多变化和修改而不超过由所附的权利要求书所限定的本发明的精神和范围。