CN1256686C - 一种运动估计方法和应用该方法的运动估计电路 - Google Patents
一种运动估计方法和应用该方法的运动估计电路 Download PDFInfo
- Publication number
- CN1256686C CN1256686C CN 200410043874 CN200410043874A CN1256686C CN 1256686 C CN1256686 C CN 1256686C CN 200410043874 CN200410043874 CN 200410043874 CN 200410043874 A CN200410043874 A CN 200410043874A CN 1256686 C CN1256686 C CN 1256686C
- Authority
- CN
- China
- Prior art keywords
- row
- pin
- matching unit
- mux
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开一种基于FSBM算法的运动估计方法及运动估计电路——一种运动估计方法和应用该方法的运动估计电路。步骤:(1)初始化阶段(101)。进行像素数据的输入。(2)中间数据组织阶段(102)。(3)运动向量计算阶段(103)。(4)运动向量值输出阶段(104)。利用该算法描述的输入数据流进行MAD计算,非常有利于电路比较、判别、找到和输出运动向量,有利于降低电路的复杂性。电路将上述的二维算法映射为脉动阵列结构,将l映射成(PE)阵列,先前帧数据有两套输入总线,(Y1)和(Y2)。它们通过多路选择器单元将数据送到(PE)单元。当前帧中的当前参考块数据要被预装到(PE)中的(RA)寄存器组中。本发明克服了已有技术的运动估计电路硬件利用率低、电路规模大的缺陷。
Description
技术领域:
本发明涉及一种基于FSBM算法的运动估计方法及应用该方法的帧级流水阵列结构的运动估计电路。该方法和电路主要应用于各种基于MPEG(-1、-2、-4)和H26x等压缩编码标准的视频编码器中。
背景技术:
在众多的视/音频压缩编码标准中,大多通过对视频对象进行运动估计和运动补偿来消除图像的时间冗余,以达到数据压缩的目的。在运动估计过程中,全搜索块匹配算法(Full Search Block Matching Algorithm,简称FSBM)通过对搜索区域的所有搜索块进行穷尽式对比来寻找最佳匹配块。通常的FSBM算法中,采用MAD标准进行匹配,其算法表述如下:
其中x(i,j)为当前帧的亮度值,y(i+m,j+n)为先前帧的亮度值,(i,j)为参考宏块的相对坐标。偏移量与搜索距离p之间的关系满足-p≤m,n≤p。在搜索距离p的约束下,运动相量MV即为偏移量(m*,n*),且满足MAD(m,n)的值最小,即为,
MV=arg{min MAD(m,n)}...-p≤m,n≤p (2)
图4给出了该匹配算法的示意图。(1)式即为常说的块级流水算法。用机器语言对其进行描述,即为一个四层循环的嵌套算法。采用四层循环嵌套算法、通过规范映射方法得到的运动估计电路存在工作效率低、需要大量内部缓存单元、超大规模集成电路实现困难等缺点。
为了克服基于块级流水的运动估计电路的上述缺点,人们提出了基于帧级流水的运动估计算法,它的核心是一个六层循环嵌套,表述见表1,其中每一个运动估计的基本块的大小为N×N像素,每个图像帧包含Nh×Nv个基本块。
do v=1 to Nv
do h=1 to Nh
MV(h,v)=(0,0);
Dmm(h,v)=∞;
do m=-p to p
do n=-p to p
MAD(m,n)=0;
do i=1 to N
do j=1 to N
MAD(m,n)=MAD(m,n)+|x((h-1)N+i,(v-1)N+j)-y((h-1)N+i+m,(v-1)N+j+n)|;
enddo j,i
If Dmin(h,v)>MAD(m,n)
Dmin(h,v)=MAD(m,n);
MV(h,v)=(m,n);
endif
enddo n,m,h,v
表1
基于上述算法通过规范映射方法得到的电路可以消除运动估计时相邻参考块间的停顿,从而实现相邻参考块进行运动估计时的流水执行。然而,上述映射过程的过于复杂,使得该方法没有得到广泛的应用。
为了解决上述方法中映射过程过于复杂的问题,早在1995年人们就提出了一种新的想法,即先将表1所示的六维算法等价变换成三维算法,再进行投影得到二维脉动阵列结构。但是,通过该方法得到的结构中,存在着两个难以克服的缺点:
(1)需要将像素数据向阵列进行广播输入,使得超大规模集成电路实现变得困难。
(2)搜索距离P和块N大小必须满足N=2p的关系,限制了该结构的应用范围。
为此,2001年人们又提出了一种新的算法,它先将表1所示的六维算法等价变换成二维算法,再进行投影得到一维阵列结构。这种结构中,虽然不再要求象素数据进行广播输入,但是N=2p的关系仍然必须满足。而且,它还存在如下缺点:
(1)PE单元的结构复杂,所需的硬件资源太多
(2)PE数目PEs=(2p+1)2,对于不同的p,电路的规模也不同。
(3)PE数目过多,硬件实现的成本太大。
为了克服N=2p的限制,2003年人们在表1的算法的基础上通过直接映射的方法得到基于p=kN,k≥1/2的帧级流水运动估计电路结构。但该结构除了上述三个缺点外,还大量的使用延迟寄存器,使得电路的规模变得不可接受。
发明内容:
本发明的目的是提供一种运动估计方法和应用该方法的运动估计电路,利用该方法输入数据流进行运动向量值计算,非常有利于电路比较、判别、找到和输出运动向量,有利于降低电路的复杂性。本发明的技术方案如下:一种运动估计方法,它通过下述步骤完成:
(一)初始化阶段101:初始化两个没有任何像素数据的临时当前帧和临时先前帧图像。这两帧图像每行包含N2个象素点,每列包含NhNv(2p+1)2个像素;在列的方向上将这两个临时帧划分为NhNv个像素组,每组包含(2p+1)2行,每组共包含N2(2p+1)2个像素,按列的顺序分别命名为第1组,第2组…第NhNv组。以帧的左上角为顶点,用(l,k)表示该像素在先前或当前帧图像中的位置,其中1≤l≤N2,1≤k≤NhNv(2p+1)2;对于作为输入的当前帧图像和先前帧图像,每行包含N×Nh个象素点,每列包含N×Nv个像素;初始化阶段前的原始视频图像帧依照当前的视频编码标准划分为Nh×Nv个编码块,每个块的大小为N×N个像素点,p为运动估计时的搜索距离。
(二)中间数据组织阶段102:
第1步:将当前帧的象素数据和先前帧的象素数据分别存放到临时当前帧和临时先前帧中去;
第2步:对于临时当前帧的每一像素组,第一行处有数据,其他位置为空。将每列第一行处的数据复制每列的其他行处,使得在每一像素组中,每列的象素数据都相同;按照上述方法,完成临时当前帧的数据复制工作;
第3步:从先前帧搜索区域中像素取数的顺序为:(1)、从搜索区域的第一列第一行处按列的顺序取出(2p+1)个数据;(2)、从搜索区域的第二列第一行处按列的顺序取出(2p+1)个数据;(3)、依此类推,重复上述过程;(4)、将按(1)(2)(3)步顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第一列中;(5)、从搜索区域的第一列第二行处按列的顺序取出(2p+1)个数据;(6)、从搜索区域的第二列第二行处按列的顺序取出(2p+1)个数据;(7)、直到从搜索区域的第(2p+1)列的第二行处按列的顺序取出(2p+1)个数据为止;(8)、从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第二列中;(9)、直到临时先前帧的第一像素组的前N列都填满数据;
第4步:将先前帧的第一像素组的N+1~2N列都填满数据;
第5步:重复中间数据组织阶段第4步的过程,直到临时先前帧的第一像素组的所有列中都填满数据。
第6步:重复中间数据组织阶段第5步的过程,直到临时先前帧的所有像素组都填满数据。
(三)运动向量计算阶段103:
第1步,按行的顺序将临时当前帧和临时先前帧第一像素组中第一行的象素数据取出进行差的绝对值计算,并将计算出的N2个值进行累加(MAD计算),同时用行坐标k(k=1)来标记该值;
第2步,按行的顺序将临时当前帧和临时先前帧第一像素组中第二行的象素数据取出进行差的绝对值计算,并将计算出的N2个值进行累加;
第3步,按照运动向量计算阶段第1步和第2步的方法,重复该过程,直到临时当前帧和临时先前帧中第一像素组的所有行都完成了MAD计算;
第4步,按照运动向量计算阶段第3步的方法,不断重复该过程,直到临时当前帧和临时先前帧中所有的像素组都被取出并都完成了MAD计算。
(四)运动向量值输出阶段104:
在由临时当前帧和临时先前帧中各自的第一像素组的数据产生的(2p+1)2个MAD值中,找出这(2p+1)2个MAD值中的最小值,并把该最小值的标记k作为当前帧第一参考块的运动向量值进行输出。在由临时当前帧和临时先前帧中各自的第二像素组的数据产生的(2p+1)2个MAD值中,找出这(2p+1)2个MAD值中的最小值,并把该最小值的标记k作为当前帧第二参考块的运动向量值进行输出。重复上述过程,直到当前帧中所有的参考块的运动向量都输出为止,整个方法结束。
传统的FSBM算法一般可分为初始化和输入、MAD计算、MV产生和输出三个阶段。其中进行MAD计算的数据为从先前帧图像和当前帧图像输入的象素数据。为了方便描述本发明中如何进行输入数据流的组织,定义两个图像帧,一个为临时当前帧,另一个为临时先前帧。当前帧和先前帧像素数据先输入到临时当前帧和临时先前帧中暂存,然后再从临时当前帧和临时先前帧中取出进行MAD计算。在高效的运动估计电路中,当前帧像素数据和先前帧像素数据按照一定的格式和方式组织成数据流源源不断的输入到电路中进行MAD计算。这种数据流的组织方式以及在这种数据流格式下是否能够找到合适的硬件结构也就成为决定电路的工作效率高低的主要因素。本发明提出的新的两层Do循环嵌套FSBM算法,主要描述了一种新的输入数据流组织方式,以及在该数据流格式下,像素如何进行MAD计算,如何输出运动向量等工作。该算法的最大特点在于:利用该算法描述的输入数据流进行MAD计算,非常有利于电路比较、判别、找到和输出运动向量,有利于降低电路的复杂性。
本发明还提供了应用该运动估计方法的运动估计电路,以克服已有技术的运动估计电路硬件利用率低、电路规模大的缺陷,本发明的技术方案如下:一种应用运动估计方法的运动估计电路,它由N2个块匹配单元PE1~PEN2、总线Y1、总线Y2、总线C1、总线C2、N个多路选择器M1~MN、二个先入先出模块FIFO1和FIFO2、N-2个多路选择器ME2~MEN-1、N-1个延迟寄存器Delay2~DelayN、N-1个延迟寄存器组Delay_1~Delay_N-1、N-1个加法器a2~aN和运动向量生成单元MV组成。每个块匹配单元都由四个寄存器Reg1~Reg4、三个多路选择器Mx1~Mx3、D触发器DEF、二个寄存器RA1和RA2、多路选择器M和MUX)、加法绝对值单元|X-Y|和加法器MAD组成。
本发明涉及如下的数学变量:
v,h:当前参考块在当前帧中的块坐标(以帧左上角为坐标顶点)。
m,n:当前搜索块与先前帧中坐标为(v,h)的搜索块之间的偏移量。
i,j:像素在参考块中的坐标(以块左上角为坐标顶点)。
is,js:参考块像素在当前帧中的绝对坐标(以帧左上角为坐标顶点)。
iu,ju:搜索块在先前帧中的绝对坐标(以帧左上角为坐标顶点)。
k:搜索匹配块进行运动估计的块号。
l:进行块匹配时像素的匹配顺序编号。
其中,k和l可以同时按行顺序进行,也可同时按列顺序进行。这里以按列顺序为例进行说明。
由此,:定义
l=(i-1)N+j,1≤i,j≤N (3)
k=(v-1)Nh(2p+1)2+(h-1)(2p+1)2+(m+p)(2p+1)+n+p+1 (4)
块匹配单元PE的说明
MAD_in,MAD_out:MAD累加值的输入输出端口,中间进行了锁存。
Y_in1,Y_out1:先前帧数据的输入和输出端口,中间进行了锁存。
Y_in2,Y_out2:先前帧数据的输入和输出端口,中间进行了锁存。
Sel_in:寄存器RA1和RA2的MAD计算的选通信号。
Sel_out:Sel_in的锁存输出信号。
Sel1n:当前帧数据的输入输出选通端口。
块匹配单元PE的逻辑功能说明
具有相同索引号的当前参考块和下一参考块的像素数据交替存放到寄存器组的RA1寄存器和RA2寄存器中,Sel1信号负责像素存放过程中寄存器的选通。sel_in则负责PE进行MAD运算时的参考块像素寄存器RA1和RA2的输出选通。同时,sel_in还要作为D触发器的时钟触发信号,由此产生PE进行MAD运算时搜索块像素Y_in1和Y_in2的选择信号。搜索块像素与参考块像素的差的绝对值与MAD_in相加后,在时钟的锁存下作为MAD_out进行输出,它执行(1)式所述的运算。图7给出PE中主要信号的时序说明。
图8为基于p=kN(k≥1/2)的运动估计电路的硬件结构。其中,先前帧数据有两套输入总线,Y1和Y2。它们通过多路选择器将数据送到PE单元。在图中,FIFO1和FIFO2可以分别接受来自Y1和Y2的数据,并可以送到总线C1和C2上去,大小分别是(N-1)(2p-1)和(N-1)2。Delay_2p+1和Delay2p+2-N分别指深度为(2p+1)和(2p+2-N)的两个延迟移位寄存器组。
该电路的工作原理为:
(1)、在电路开始工作前,当前帧中的当前参考块数据要被预装到PE中RA的某一个寄存器组中。在电路完成当前参考块数据的运动估计任务之前,下一参考块数据也要被预装到PE中RA的另一个寄存器组中。
(2)、以电路刚开始工作时为时间节拍的零点。在1~N(2p+1)节拍中,FIFO1和FIFO2不被使用,来自Y1、Y2的先前帧数据通过端口A向阵列送数,总线C1和C2不工作。Y1的数据按临时先前帧中的第一列数据进行输入,Y2输入的数据则有点复杂。将临时先前帧的前N列数据依照列号在数据的开头插入列号数个零。按行的顺序进行比较,如果这N列某一行的数据相同,则此时Y2输入的数据与Y1相同,如果哪一行这N数据不相同,则Y2输入的数据为那个不相同的数据。
(3)、在N(2p+1)+1~(2N-1)(2p+1)节拍中,FIFO1接受来自Y1的(N-1)(2p+1)个数据并进行存放;在(N+r)(2p+1)+1~(N+r)(2p+1)+N-1的节拍中,FIFO2接受来自Y2的(N-1)2个数据,并进行缓存(其中,0<r<N,且r为整数)。在上述过程中,来自Y1、Y2的数据通过端口A向阵列送数,而FIFO并不向阵列送数,总线C1和C2不工作。
(4)、在(2p+1)2+1~(2p+1)2+(N-1)(2p+1)的节拍过程中,FIFO1要向总线C1送数,Y1,Y2也要PE端口A送数。此时,来自FIFO1的数据被送向B端口,而来自Y1、Y2的数据被送向A端口。Y1、Y2送的是当前参考块对应搜索区域的最后(N-1)(2p+1)个数据,FIFO1送的是它存放的(N-1)(2p+1)个数据;在(2p+r+1)(2p+1)+1~(2p+r+1)(2p+1)+N-1的节拍中,FIFO2要向总线C2送数,此时可能会出现FIFO1和FIFO2的数据通过总线C1和C2同时向B端口送数,而Y1、Y2同时向A端口送数(其中,0<r<N,且r为整数)。
(5)、在(2p+N)(2p+1)+1节拍后,FIFO1停止送数,而Y1、Y2继续向A端口送数,它此时开始从下一参考块对应的搜索区域数据的第(N-1)(2p+1)+1个数据开始送数;在(2p+N)(2p+1)+1~(2p+N)(2p+1)+N-1的节拍过程中,FIFO2要向端口B送完最后(N-1)个数据。
在FIFO开始向阵列送数的过程中,PE阵列处在当前参考块和下一参考块进行运动估计的重叠过程。(5)过程结束后,重叠执行过程也就结束,此时PE只执行下一参考块的运动估计。对于下一参考块来说,开始进行运动估计的零点为(4)过程的开始,它只须重复上述过程即可。
图8给出了图6结构中一些关键信号的时序关系。其中,FIFO1_w,FIFO1_r,FIFO2_w,FIFO2_r分别为两个FIFO的读写信号。L=18_A_e指顺序为18的PE的A端口使能信号。上述信号中,低电平有效。
运动向量的获取:
图6的最下方,有一条由移位寄存器和加法器构成的数据通路,它们将每一列PE单元的MAD值进行累加,并传送到MV模块。MV模块负责产生运动向量。由于帧图像在进行运动估计的时候会有边界存在,而PE阵列中的MAD计算并不对边界问题进行处理,所有这些工作都交由MV模块完成。它包含有一个同步的计数器。通过计数器可知当前运动估计的参考块在当前帧中的位置,由此可以确定有效MAD计算区间,及有效的k值。
有益效果
由上述方法映射出的电路结构有如下优势:
(1)PE的工作效率接近100%。
(2)PE单元的结构简单,节省硬件资源40%~60%。
(3)PE数目PEs=N2。由于通常的编码标准中,N是一个固定值,而p则希望可变。由此,对于此种结构,p发生变化时,电路的结构变化较小,通过改变电路输入数据的组织方式即可完成相应的工作,电路的适应性好、可扩展性好。
(4)PE的数目合适,且不随p发生变化,电路的规模也基本变化不大,电路的实现成本变化不大,性价比高。
无需满足N=2p关系,使得该结构具有广泛的应用前景和较大的实用价值
附图说明:
图1是本发明方法的步骤示意图,图2是图1中步骤102的示意图,图3是本发明方法中临时当前帧和临时先前帧的结构示意图,图4是运动估计时的块匹配示意图,图5是本发明中块匹配单元PE的结构示意图,图6本发明运动估计电路的结构示意图,图7是块匹配单元PE各管脚所加信号和内部信号的时序对照图,图8是运动估计电路中信号的时序关系图。
具体实施方式:
具体实施方式一:
下面结合图1至图3具体说明本实施方式。一种运动估计方法,它通过下述步骤完成:
(一)初始化阶段101:初始化两个没有任何像素数据的临时当前帧和临时先前帧图像。这两帧图像每行包含N2个象素点,每列包含NhNv(2p+1)2个像素;在列的方向上将这两个临时帧划分为NhNv个像素组,每组包含(2p+1)2行,每组共包含N2(2p+1)2个像素,按列的顺序分别命名为第1组,第2组…第NhNv组。以帧的左上角为顶点,用(l,k)表示该像素在先前或当前帧图像中的位置,其中1≤l≤N2,1≤k≤NhNv(2p+1)2;对于作为输入的当前帧图像和先前帧图像,每行包含N×Nh个象素点,每列包含N×Nv个像素;
(二)中间数据组织阶段102:
第1步:将当前帧的象素数据和先前帧的象素数据分别存放到临时当前帧和临时先前帧中去,在存放的过程中确定存放的位置和存放的顺序;对于当前帧图像,帧中参考块按行扫描的顺序、参考块内按列扫描的顺序从图像中串行取出;以(l,k)表示像素存放到临时当前帧和临时先前帧中的位置。对于当前帧第一个参考块中的象素,按列扫描的顺序从参考块中取出,按行的顺序存放到临时当前帧中第一象素组的第一行中。相应的,当前帧第二个参考块中的象素,按列扫描的顺序从参考块中取出,按行的顺序的存放到临时当前帧中第二象素组的第一行中;重复上述过程,将当前帧中所有参考块的像素数据存放到临时当前帧中每一象素组的第一行中;
第2步:对于临时当前帧的每一像素组,第一行处有数据,其他位置为空。将每列第一行处的数据复制每列的其他行处,使得在每一像素组中,每列的象素数据都相同;按照上述方法,完成临时当前帧的数据复制工作;
第3步:对于先前帧第一个搜索区域中的象素(即为当前帧第一个参考块所对应的搜索区域中的象素),共有(2p+N)2象素点,临时先前帧中第一象素组共有N2(2p+1)2个空位置可以存放像素。从先前帧搜索区域中取像素数据的顺序为:(1)、从搜索区域的第一列第一行处按列的顺序取出(2p+1)个数据;(2)、从搜索区域的第二列第一行处按列的顺序取出(2p+1)个数据;(3)、依此类推,重复上述过程,从搜索区域的第三列第一行处按列的顺序取出(2p+1)个数据,从搜索区域的第四列第一行处按列的顺序取出(2p+1)个数据,…,直到从搜索区域的第(2p+1)列第一行处按列的顺序取出(2p+1)个数据为止;(4)、将按(1)(2)(3)步顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第一列中;(5)、从搜索区域的第一列第二行处按列的顺序取出(2p+1)个数据;(6)、从搜索区域的第二列第二行处按列的顺序取出(2p+1)个数据;(7)、依此类推,重复上述过程,从搜索区域的第三列第二行处按列的顺序取出(2p+1)个数据,从搜索区域的第四列第二行处按列的顺序取出(2p+1)个数据,…,直到从搜索区域的第(2p+1)列的第二行处按列的顺序取出(2p+1)个数据为止;(8)、将按(5)(6)(7)步顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第二列中;(9)、依此类推,重复(8)的过程,直到临时先前帧的第一像素组的前N列都填满数据;
第4步:这一步要将先前帧的第一像素组的N+1~2N列都填满数据,方法与第3步相同,简述为:(10)、从搜索区域的第二列第一行处按列的顺序取出(2p+1)个数据;(11)、从搜索区域的第三列第一行处按列的顺序取出(2p+1)个数据;(12)、依此类推,重复上述过程,直到从搜索区域的第(2p+2)列第一行处按列的顺序取出(2p+1)个数据为止;(13)、将按(10)(11)(12)、顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第N+1列中;(14)、从搜索区域的第二列第二行处按列的顺序取出(2p+1)个数据;(15)、从搜索区域的第三列第二行处按列的顺序取出(2p+1)个数据;(16)、依此类推,重复上述过程,直到从搜索区域的第(2p+2)列的第二行处按列的顺序取出(2p+1)个数据为止;(17)、将按(14)(15)(16)顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第N+2列中;(18)、依此类推,重复(17)的过程,直到临时先前帧的第一像素组的前2N列都填满数据;
第5步:重复中间数据组织阶段第4步的过程,直到临时先前帧的第一像素组的所有列中都填满数据。
第6步:重复中间数据组织阶段第5步的过程,直到临时先前帧的所有像素组都填满数据。
(三)运动向量计算阶段103:
第1步,按行的顺序将临时当前帧和临时先前帧第一像素组中第一行的象素数据取出进行差的绝对值计算,并将计算出的N2个值进行累加(MAD计算),同时用行坐标k(k=1)来标记该值;
第2步,按行的顺序将临时当前帧和临时先前帧第一像素组中第二行的象素数据取出进行差的绝对值计算,并将计算出的N2个值进行累加(MAD计算),同时用行坐标k(k=2)来表记该值;
第3步,按照运动向量计算阶段第1步和第2步的方法,重复该过程,直到临时当前帧和临时先前帧中第一像素组的所有行都完成了MAD计算,并用行坐标k(k=1,2,3…(2p+1)2)来表记这些MAD值;
第4步,按照运动向量计算阶段第3步的方法,不断重复该过程,直到临时当前帧和临时先前帧中所有的像素组都被取出并都完成了MAD计算。并且,用这些计算值都用它们的行坐标k(k=1,2,3…(2p+1)2,(2p+1)2+1,…2(2p+1)2…NvNh(2p+1)2)来表记这些MAD值。
(四)运动向量值输出阶段104:
在MAD计算阶段共产生了NvNh(2p+1)2个MAD值,其中临时当前帧和临时先前帧中每一对像素组的数据会产生(2p+1)2个MAD值。在由临时当前帧和临时先前帧中各自的第一像素组的数据产生的(2p+1)2个MAD值中,找出这(2p+1)2个MAD值中的最小值,并把该最小值的标记k作为当前帧第一参考块的运动向量值进行输出。在由临时当前帧和临时先前帧中各自的第二像素组的数据产生的(2p+1)2个MAD值中,找出这(2p+1)2个MAD值中的最小值,并把该最小值的标记k作为当前帧第二参考块的运动向量值进行输出。重复上述过程,直到用上述方法找到的当前帧中所有的参考块的运动向量都输出为止,整个方法结束。
具体实施方式二:
下面结合图5和图6具体说明本实施方式。一种应用运动估计方法的运动估计电路,它由N2个块匹配单元PE1~PEN2、总线Y1、总线Y2、总线C1、总线C2、N个多路选择器M1~MN、二个先入先出模块FIFO1和FIFO2、N-2个多路选择器ME2~MEN-1、N-1个延迟寄存器Delay2~DelayN、N-1个延迟寄存器组Delay_1~Delay_N-1、N-1个加法器a2~aN和运动向量生成单元MV组成。块匹配单元PE1~PEN2排布成N行N列的阵列结构,总线Y1分别连接多路选择器M1~MN的一个输入端,多路选择器M1~MN的另一个输入端都连接在总线Y2上,多路选择器M1的输出端分别连接块匹配单元PE1的脚Y_in1和先入先出模块FIFO1的输入端,先入先出模块FIFO1的输出端连接总线C1,多路选择器M2~多路选择器MN-1的输出端分别连接在块匹配单元PE2~块匹配单元PEN-1的脚Y_in1上,多路选择器MN的输出端分别连接块匹配单元PEN的脚Y_in1和先入先出模块FIFO2的输入端,先入先出模块FIFO2的输出端连接总线C2,总线C2还分别连接多路选择器ME2~多路选择器MEN-1的一个输入端和块匹配单元PEN的脚Y_in2,总线C1还连接块匹配单元PE1的脚Y_in2、多路选择器ME2~多路选择器MEN-1的另一个输入端,多路选择器ME2~多路选择器MEN-1的输出端分别连接块匹配单元PE2~块匹配单元PEN-1的脚Y_in2,每一列块匹配单元中,位于上方的块匹配单元的脚MAD_out、脚sel_out、脚X_out、脚Sellt分别连接位于下方的块匹配单元的脚MAD_in、脚Sel_in、脚X_in和脚Selln,每一行块匹配单元中位于左方的块匹配单元的脚Y_out1和脚Y_out2分别连接位于右方的块匹配单元的脚Y_in1和脚Y_in2,块匹配单元PEN的脚MAD_out连接延迟寄存器组Delay_1的输入端,块匹配单元PEN的脚Sel_out连延迟寄存器Delay2的输入端,延迟寄存器Delay2的输出端连接块匹配单元PEN+1的脚Sel_in,块匹配单元PEN的脚X_out连接块匹配单元PEN+1的脚经X_in,块匹配单元PE2N的脚MAD_out连加法器a2的一个输入端,加法器a2的另一个输入端连延迟寄存器组Delay_1的输出端,加法器a2的输出端连延迟寄存器组Delay_2的输入端,块匹配单元PE2N的脚X_out连块匹配单元PEKN+1的脚X_in,块匹配单元PE2N的脚Sel_out连延迟寄存器Delay3的输入端,延迟寄存器Delay3的输出端连块匹配单元PEKN+1的脚Sel_in,块匹配单元PE(k+1)N的脚MAD_out连加法器aN-1的一个输入端,加法器aN-1的输出端连延迟寄存器组Delay_N-1的输入端,块匹配单元PE(K+1)N的脚Sel_out连延迟寄存器DelayN的输入端,延迟寄存器DelayN的输出端连块匹配单元PEN(N-1)+1的脚Sel_in,块匹配单元PE(K+1)N的脚X_out连接块匹配单元PEN(N-1)+1的脚X_in,块匹配单元PEN2的脚MAD_out连加法器aN的一个输入端,加法器aN的输出端连运动像量生成单元MV的输入端;每个块匹配单元都由四个寄存器Reg1~Reg4、三个多路选择器Mx1~Mx3、D触发器DEF、二个寄存器RA1和RA2、多路选择器M和MUX、加法绝对值单元|X-Y|和加法器MAD组成,块匹配单元的脚Selln连接脚Sellt、多路选择器Mx1的控制端、多路选择器Mx2的控制端和多路选择器MUX的控制端,块匹配单元的脚X_in分别连多路选择器Mx1和多路选择器Mx2的一个输入端,多路选择器Mx1的另一个输入端连寄存器RA1的输出端、多路选择器Mx3的一个输入端和多路选择器MUX的一个输入端,多路选择器Mx1的输出端连寄存器RA1的输入端,多路选择器Mx2的另一个输入端连寄存器RA2的输出端、多路选择器Mx3的另一个输入端和多路选择器MUX的另一个输入端,多路选择器MUX的输出端连块匹配单元的脚X_out,块匹配单元的脚Sel_in连D触发器DEF的脚clk、多路选择器Mx3的控制端和寄存器Reg3的输入端,寄存器Reg3的输出端连块匹配单元的脚Sel_out,块匹配单元的脚Y_in1连寄存器Reg1的输入端和多路选择器M的一个输入端,块匹配单元的脚Y_in2连寄存器Reg2的输入端和多路选择器M的另一个输入端,寄存器Reg1和寄存器Reg2的输出端分别连块匹配单元的脚Y_out1和脚Y_out2,多路选择器M的控制端连D触发器DEF的脚Q,多路选择器M的输出端连加法绝对值单元|X-Y|的一个输入端,加法绝对值单元|X-Y|的另一个输入端连多路选择器Mx3的输出端,加法绝对值单元|X-Y|的输出端连累加法器MAD的一个输入端,加法器MAD的另一个输入端连块匹配单元的脚MAD_in,加法器MAD的输出端连寄存器Reg4的输入端,寄存器Reg4的输出端连块匹配单元的脚MAD_out。N的数值为按照运动估计方法确定的基本编码块每一行或每一列所包含的像素点的个数。
Claims (3)
1、一种运动估计方法,其特征是它通过下述步骤完成:
(一)初始化阶段(101):初始化两个没有任何像素数据的临时当前帧和临时先前帧图像。这两帧图像每行包含N2个象素点,每列包含NhNv(2p+1)2个像素;在列的方向上将这两个临时帧划分为NhNv个像素组,每组包含(2p+1)2行,每组共包含N2(2p+1)2个像素,按列的顺序分别命名为第1组,第2组...第NhNv组;以帧的左上角为顶点,用(l,k)表示该像素在先前或当前帧图像中的位置,其中1≤l≤N2,1≤k≤NhNv(2p+1)2;对于作为输入的当前帧图像和先前帧图像,每行包含N×Nh个象素点,每列包含N×Nv个像素;初始化阶段前的原始视频图像帧依照当前的视频编码标准划分为Nh×Nv个编码块,每个块的大小为N×N个像素点,p为运动估计时的搜索距离;
(二)中间数据组织阶段(102):
第1步:将当前帧的象素数据和先前帧的象素数据分别存放到临时当前帧和临时先前帧中去,在存放的过程中确定存放的位置和存放的顺序;对于当前帧图像,帧中参考块按行扫描的顺序、参考块内按列扫描的顺序从图像中串行取出;以(l,k)表示像素存放到临时当前帧和临时先前帧中的位置;对于当前帧第一个参考块中的象素,按列扫描的顺序从参考块中取出,按行的顺序存放到临时当前帧中第一象素组的第一行中;相应的,当前帧第二个参考块中的象素,按列扫描的顺序从参考块中取出,按行的顺序的存放到临时当前帧中第二象素组的第一行中;重复上述过程,将当前帧中所有参考块的像素数据存放到临时当前帧中每一象素组的第一行中;
第2步:对于临时当前帧的每一像素组,第一行处有数据,其他位置为空;将每列第一行处的数据复制每列的其他行处,使得在每一像素组中,每列的象素数据都相同;按照上述方法,完成临时当前帧的数据复制工作;
第3步:对于先前帧第一个搜索区域中的象素,即为当前帧第一个参考块所对应的搜索区域中的象素,共有(2p+N)2象素点,临时先前帧中第一象素组共有N2(2p+1)2个空位置可以存放像素;从先前帧搜索区域中取像素数据的顺序为:(1)、从搜索区域的第一列第一行处按列的顺序取出(2p+1)个数据;(2)、从搜索区域的第二列第一行处按列的顺序取出(2p+1)个数据;(3)、依此类推,重复上述过程,从搜索区域的第三列第一行处按列的顺序取出(2p+1)个数据,从搜索区域的第四列第一行处按列的顺序取出(2p+1)个数据,...,直到从搜索区域的第(2p+1)列第一行处按列的顺序取出(2p+1)个数据为止;(4)、将按(1)(2)(3)步顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第一列中;(5)、从搜索区域的第一列第二行处按列的顺序取出(2p+1)个数据;(6)、从搜索区域的第二列第二行处按列的顺序取出(2p+1)个数据;(7)、依此类推,重复上述过程,从搜索区域的第三列第二行处按列的顺序取出(2p+1)个数据,从搜索区域的第四列第二行处按列的顺序取出(2p+1)个数据,...,直到从搜索区域的第(2p+1)列的第二行处按列的顺序取出(2p+1)个数据为止;(8)、将按(5)、(6)、(7)步顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第二列中;(9)、依此类推,重复(8)步的过程,直到临时先前帧的第一像素组的前N列都填满数据;
第4步:这一步要将先前帧的第一像素组的N+1~2N列都填满数据,简述为:(10)、从搜索区域的第二列第一行处按列的顺序取出(2p+1)个数据;(11)、从搜索区域的第三列第一行处按列的顺序取出(2p+1)个数据;(12)、依此类推,重复上述过程,直到从搜索区域的第(2p+2)列第一行处按列的顺序取出(2p+1)个数据为止;(13)、将按(10)、(11)、(12)顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第N+1列中;(14)、从搜索区域的第二列第二行处按列的顺序取出(2p+1)个数据;(15)、从搜索区域的第三列第二行处按列的顺序取出(2p+1)个数据;(16)、依此类推,重复上述过程,直到从搜索区域的第(2p+2)列的第二行处按列的顺序取出(2p+1)个数据为止;(17)、将按(14)、(15)、(16)顺序从先前帧取出的(2p+1)2个数据按列的顺序存放到临时先前帧的第一像素组的第N+2列中;(18)、依此类推,重复(17)的过程,直到临时先前帧的第一像素组的前2N列都填满数据;
第5步:重复中间数据组织阶段第4步的过程,直到临时先前帧的第一像素组的所有列中都填满数据;
第6步:重复中间数据组织阶段第5步的过程,直到临时先前帧的所有像素组都填满数据;
(三)运动向量计算阶段(103):
第1步,按行的顺序将临时当前帧和临时先前帧第一像素组中第一行的象素数据取出进行差的绝对值计算,并将计算出的N2个值进行累加,同时用行坐标k=1来标记该值;
第2步,按行的顺序将临时当前帧和临时先前帧第一像素组中第二行的象素数据取出进行差的绝对值计算,并将计算出的N2个值进行累加,同时用行坐标k=2来表记该值;
第3步,按照运动向量计算阶段第1步和第2步的方法,重复该过程,直到临时当前帧和临时先前帧中第一像素组的所有行都完成了MAD计算,并用行坐标k=1,2,3…(2p+1)2来表记这些MAD值;
第4步,按照运动向量计算阶段第3步的方法,不断重复该过程,直到临时当前帧和临时先前帧中所有的像素组都被取出并都完成了MAD计算;并且,用这些计算值都用它们的行坐标k=1,2,3…(2p+1)2,(2p+1)2+1,…2(2p+1)2…NvNh(2p+1)2来表记这些MAD值;
(四)运动向量值输出阶段104:
在MAD计算阶段共产生了NvNh(2p+1)2个MAD值,其中临时当前帧和临时先前帧中每一对像素组的数据会产生(2p+1)2个MAD值;在由临时当前帧和临时先前帧中各自的第一像素组的数据产生的(2p+1)2个MAD值中,找出这(2p+1)2个MAD值中的最小值,并把该最小值的标记k作为当前帧第一参考块的运动向量值进行输出;在由临时当前帧和临时先前帧中各自的第二像素组的数据产生的(2p+1)2个MAD值中,找出这(2p+1)2个MAD值中的最小值,并把该最小值的标记k作为当前帧第二参考块的运动向量值进行输出;重复上述过程,直到用上述方法找到的当前帧中所有的参考块的运动向量都输出为止,整个方法结束。
2、一种应用运动估计方法的运动估计电路,其特征是它由N2个块匹配单元PE1~PEN2、总线Y1、总线Y2、总线C1、总线C2、N个多路选择器M1~MN、二个先入先出模块FIFO1和FIFO2、N-2个多路选择器ME2~MEN-1、N-1个延迟寄存器Delay2~DelayN、N-1个延迟寄存器组Delay_1~Delay_N-1、N-1个加法器a2~aN和运动向量生成单元(MV)组成,块匹配单元PE1~PEN2排布成N行N列的阵列结构,总线Y1分别连接多路选择器M1~MN的一个输入端,多路选择器M1~MN的另一个输入端都连接在总线Y2上,多路选择器M1的输出端分别连接块匹配单元PE1的脚Y_in1和先入先出模块FIFO1的输入端,先入先出模块FIFO1的输出端连接总线C1,多路选择器M2~多路选择器MN-1的输出端分别连接在块匹配单元PE2~块匹配单元PEN-1的脚Y_in1上,多路选择器MN的输出端分别连接块匹配单元PEN的脚Y_in1和先入先出模块FIFO2的输入端,先入先出模块FIFO2的输出端连接总线C2,总线C2还分别连接多路选择器ME2~多路选择器MEN-1的一个输入端和块匹配单元PEN的脚Y_in2,总线C1还连接块匹配单元PE1的脚Y_in2、多路选择器ME2~多路选择器MEN-1的另一个输入端,多路选择器ME2~多路选择器MEN-1的输出端分别连接块匹配单元PE2~块匹配单元PEN-1的脚Y_in2,每一列块匹配单元中,位于上方的块匹配单元的脚MAD_out、脚Sel_out、脚X_out、脚Sellt分别连接位于下方的块匹配单元的脚MAD_in、脚Sel_in、脚X_in和脚Selln,每一行块匹配单元中位于左方的块匹配单元的脚Y_out1和脚Y_out2分别连接位于右方的块匹配单元的脚Y_in1和脚Y_in2,块匹配单元PEN的脚MAD_out连接延迟寄存器组Delay_1的输入端,块匹配单元PEN的脚Sel_out连延迟寄存器Delay2的输入端,延迟寄存器Delay2的输出端连接块匹配单元PEN+1的脚Sel_in,块匹配单元PEN的脚X_out连接块匹配单元PEN+1的脚X_in,块匹配单元PE2N的脚MAD_out连加法器a2的一个输入端,加法器a2的另一个输入端连延迟寄存器组Delay_1的输出端,加法器a2的输出端连延迟寄存器组Delay_2的输入端,块匹配单元PE2N的脚X_out连块匹配单元PEKN+1的脚X_in,块匹配单元PE2N的脚Sel_out连延迟寄存器Delay3的输入端,延迟寄存器Delay3的输出端连块匹配单元PEKN+1的脚Sel_in,块匹配单元PE(k+1)N的脚MAD_out连加法器aN-1的一个输入端,加法器aN-1的输出端连延迟寄存器组Delay
_N-1的输入端,块匹配单元PE(K+1)N的脚Sel_out连延迟寄存器DelayN的输入端,延迟寄存器DelayN的输出端连块匹配单元PEN(N-1)+1的脚Sel_in,块匹配单元PE(K+1)N的脚X_out连接块匹配单元PEN(N-1)+1的脚X_in,块匹配单元PEN2的脚MAD_out连加法器aN的一个输入端,加法器aN的输出端连运动向量生成单元(MV)的输入端,N的数值为按照运动估计方法确定的基本编码块每一行或每一列所包含的像素点的个数。
3、根据权利要求2所述的一种应用运动估计方法的运动估计电路,其特征是每个块匹配单元PE1~PEN2都由四个寄存器Reg1~Reg4、三个多路选择器Mx1~Mx3、D触发器(DEF)、二个寄存器RA1和RA2、两个多路选择器M和MUX、加法绝对值单元(|X-Y|)和加法器(MAD)组成,块匹配单元的脚Selln连接脚Sellt、多路选择器Mx1的控制端、多路选择器Mx2的控制端和多路选择器MUX的控制端,块匹配单元的脚X_in分别连多路选择器Mx1和多路选择器Mx2的一个输入端,多路选择器Mx1的另一个输入端连寄存器RA1的输出端、多路选择器Mx3的一个输入端和多路选择器MUX的一个输入端,多路选择器Mx1的输出端连寄存器RA1的输入端,多路选择器Mx2的另一个输入端连寄存器RA2的输出端、多路选择器Mx3的另一个输入端和多路选择器MUX的另一个输入端,多路选择器MUX的输出端连块匹配单元(PE)的脚X_out,块匹配单元(PE)的脚Sel_in连D触发器(DEF)的脚clk、多路选择器Mx3的控制端和寄存器Reg3的输入端,寄存器Reg3的输出端连块匹配单元的脚Sel_out,块匹配单元的脚Y_in1连寄存器Reg1的输入端和多路选择器M的一个输入端,块匹配单元的脚Y_in2连寄存器Reg2的输入端和多路选择器M的另一个输入端,寄存器Reg1和寄存器Reg2的输出端分别连块匹配单元的脚Y_out1和脚Y_out2,多路选择器的控制端连D触发器(DEF)的输出端脚Q,多路选择器(M)的输出端连加法绝对值单元(|X-Y|)的一个输入端,加法绝对值单元(|X-Y|)的另一个输入端连多路选择器Mx3的输出端,加法绝对值单元(|X-Y|)的输出端连加法器(MAD)的一个输入端,加法器(MAD)的另一个输入端连块匹配单元的脚MAD_in,加法器(MAD)的输出端连寄存器Reg4的输入端,寄存器Reg4的输出端连块匹配单元的脚MAD_out。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410043874 CN1256686C (zh) | 2004-09-15 | 2004-09-15 | 一种运动估计方法和应用该方法的运动估计电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410043874 CN1256686C (zh) | 2004-09-15 | 2004-09-15 | 一种运动估计方法和应用该方法的运动估计电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1599461A CN1599461A (zh) | 2005-03-23 |
CN1256686C true CN1256686C (zh) | 2006-05-17 |
Family
ID=34665498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410043874 Expired - Fee Related CN1256686C (zh) | 2004-09-15 | 2004-09-15 | 一种运动估计方法和应用该方法的运动估计电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1256686C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2487200A (en) * | 2011-01-12 | 2012-07-18 | Canon Kk | Video encoding and decoding with improved error resilience |
GB2491589B (en) | 2011-06-06 | 2015-12-16 | Canon Kk | Method and device for encoding a sequence of images and method and device for decoding a sequence of image |
-
2004
- 2004-09-15 CN CN 200410043874 patent/CN1256686C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1599461A (zh) | 2005-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1179553C (zh) | 用于数字信号内插的方法和系统 | |
CN100342401C (zh) | 基于段的运动估计 | |
CN1582457A (zh) | 从2d图像序列生成立体图像序列 | |
CN107087171B (zh) | Hevc整像素运动估计方法及装置 | |
CN1992517A (zh) | 一种可编程内插滤波器装置及其实现方法 | |
CN1306412C (zh) | 像素数据块生成装置及像素数据块生成方法 | |
CN1278563C (zh) | 视频数据压缩和解压缩的方法 | |
CN1235483A (zh) | 预测滤波器 | |
CN1536876A (zh) | 隔行与逐行视频信号的帧频转换方法 | |
CN1227913C (zh) | 水平滤波器 | |
CN1658667A (zh) | 基于方向性插值的图像边缘平滑系统与方法 | |
CN1256686C (zh) | 一种运动估计方法和应用该方法的运动估计电路 | |
CN1140958A (zh) | 接收mpeg2的半象素运动补偿控制器 | |
Ling et al. | Lite-stereo: a resource-efficient hardware accelerator for real-time high-quality stereo estimation using binary neural network | |
CN1297940C (zh) | 一种图像缩放的方法 | |
CN101256668B (zh) | 一种计算均衡的多核进行视频滤波的方法 | |
CN1040936C (zh) | 一种变换视频信号接收机扫描线的方法和装置 | |
CN1780402A (zh) | 视频图像运动补偿装置 | |
CN101500168B (zh) | 一种图像亮度1/3插值装置 | |
JP4990622B2 (ja) | 画像のグループを符号化及び/又は復号化するための方法 | |
CN1296872C (zh) | 快速建立人脸影像平面模型的方法 | |
CN1767659A (zh) | 视频信号中的色串抑制方法与系统 | |
JP4101645B2 (ja) | 動きベクトル検出装置,動きベクトル検出方法,プログラム,および記録媒体 | |
CN1209918C (zh) | 图象处理设备和方法和信号转换输出装置 | |
CN109672841A (zh) | 一种低成本de-interlace处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |