CN1115880C - 在运动估算系统中以矩阵阵列处理数据的方法 - Google Patents
在运动估算系统中以矩阵阵列处理数据的方法 Download PDFInfo
- Publication number
- CN1115880C CN1115880C CN96121870A CN96121870A CN1115880C CN 1115880 C CN1115880 C CN 1115880C CN 96121870 A CN96121870 A CN 96121870A CN 96121870 A CN96121870 A CN 96121870A CN 1115880 C CN1115880 C CN 1115880C
- Authority
- CN
- China
- Prior art keywords
- array
- band
- block
- pixels
- polyphone
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/223—Analysis of motion using block-matching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种在运动估算系统中以矩阵阵列处理数据的方法,其特征是:每个阵列对当前图像的象素块进行象差(Err)计算;至少串连安排2个阵列对所说当前图像的至少2个相邻块进行计算;所有这些块的参考窗口以象素条带引入到第一个阵列并且在该串连阵列中传递;而对阵列中块的分配和引入到阵列中的条带的方向是使引入到阵列中条带的最后一部分(相应A的C)相应于分配给第一个阵列的块(相应1的2)的部分窗口。本发明适用于图像压缩领域。
Description
本发明涉及在运动估算系统中以矩阵阵列处理数据的方法。本发明的方法尤其适用于使用运动补偿方法的电视图像编码器。
本申请同专利申请“运动估算的方法和设备(Method and device for motionestimation)”联合申请。该专利申请涉及用矩阵阵列对几个块并行处理。
很多图像压缩系统是以象素块为基础进行处理的。在MPEG2(“MotionPicture Expert Group”)中,图像被分成8×8的象素块,4个块组成一个16×16象素的宏块,这些块或宏块进行各种处理操作,以减少图像之间和一幅图像内的冗余度,所用处理操作之一是运动估算。这种方法在于根据前面图像或将来图像估算部分当前图像的移动。用这种方法,确定定义移动的一个或多个运动矢量,这些运动矢量可以从前面或将来的图像中得到当前图像的预测。则在预测图像和当前图像之间的差被确定,正是该差被用在后面压缩中。通常,运动矢量用于称为“inter帧间”和“bidirectional双向”图像中,亦可用于称为“intra帧内”图像中,以减少任何传输错误的影响。
运动估算通常对每个宏块实现,为代替前面图像,亦可以用存贮在编码器中的参考图像。这个图像对应于由解码器解码的图像(亦就是说一图像要考虑由于压缩引起的信息损失)。
一种在参考图像中确定“最佳”宏块的技术在于把当前宏块同参考图像的每个宏块比较。误差函数Err用作比较标准,它计算在参考图像中每个宏块的可能位置。函数Err值最小的位置将确定移动矢量,后者能具有各种精度,这取决于可能的计算容量及为运动矢量编码保留的通带。部分象素的精度通过象素间插值实现,如果运动矢量在幅度上被限制,适当尺寸的搜寻窗口,围绕当前宏块定义的位置而安置。
运动矢量的计算需要大的计算量,这种计算量随着要求精度、图像分辨率及频率等的增加而增加。
传统使用的误差函数为:
这里i和j表示宏块内位置,m,n表示运动矢量的坐标,而a和b分别表示当前宏块和窗口图像或搜寻图像的移动宏块的象素亮度值。
函数D可为例如D(x,y)=|x-y|。
运动估算处理器和基于串列阵列(systolic arrays)的协处理器在汤姆森消费电子有限公司(Thomson consumer Electronics)于1994年8月19日申请的法国专利申请9410158中叙述。
串列阵列是一种电路,这种电路估算当前象素块和过去或将来图像搜寻窗口的同样尺寸的块之间象差。串列阵列具有存贮元件以存贮当前块,这些当前块同参考窗口中同样尺寸的块进行比较。参考窗口的块以象素条带的形式被引入串列阵列,再逐列传送进阵列。
协处理器的不同串列阵列可以以不同方式工作,尤其是能形成串连的串列阵列,以处理不同的当前块。
本发明的目的是优化串列阵列的数据馈送。
本发明的主题是在运动估算系统中以矩阵阵列处理数据的方法,其特点在于:每个阵列对当前图像的象素块进行象差计算;至少串连安排2个阵列对所说当前图像的至少2个相邻块进行计算;对应于所有这些块的参考窗口以象素条带引入到所说的第一阵列并且在所说串连阵列中从一个阵列传送到另一个阵列;而对阵列中块的分配和引入到阵列中的条带的方向是使引入到阵列中条带的最后一部分对应于分配给第一阵列的块的部分窗口。
根据一特定的实施方案,参考窗口大约位于当前块位置的中央,因此,2个相邻的窗口是由一个块移位得到的。
根据一特定的实施例,不同的窗口具有相同的尺寸,对阵列中块的分配和引入到阵列中条带的方向是使由不同阵列进行象差计算的第一个结果同时得到。
根据一特定的实施例,第一块和第二块是水平相邻的,它们分别通过以此次序串连排列的第一阵列和第二阵列被处理。从第一阵列开始引入象素条带采用的方向是使同第二块相联系的窗口的部分条带首先被引入。
根据一特定的实施例,当对应于参考窗口部分的象素条带末端一般不被处理给定块的特定阵列考虑时,还是要考虑从对应于所说窗口部件的数据中得到的计算结果,以便加宽与用所说特定阵列处理的块有关的参考窗口。
本发明的其它特点及优点将通过由附图示出的具体但非限定性实施例进行说明,附图中:
图1表示运动估算处理器的功能图;
图2a和图2b简要表示本实施例所用的比较方法;
图3表示用于运动矢量计算的串列阵列的功能图;
图4表示了图3的串列阵列的称为“S”单元的功能图;
图5示出非交错工作方式的简化串列阵列的功能图;
图6示出交错工作方式的简化串列阵列的功能图;
图7表示第一种变化方案的协处理器功能图;
图8表示第二种变化方案的协处理器功能图;
图9表示对应于两个相邻当前块的2个参考窗口的排列;
图10表示按照第一例子,2个串连串列阵列的数据的馈送;
图11表示本发明第一实施例中2个串连串列阵列的数据的馈送。
图12表示本发明第二实施例中2个串连串列阵列的数据的馈送。
首先说明实现本发明的运动估算处理器的一个例子。特别强调协处理器的描述。该协处理器是实现有关每个运动矢量的误差计算的元件。
关于MPEG标准的图像压缩中使用的运动矢量信息参考:
“信息技术,运动图像和相关音频的分类编码,建议H.262国际标准化组织/国际电工委员会13818-2(视频)委员会草案1993年11月”(Informationtechnology,Generic coding of moving pictures and associated audio,Recommendation H.262 ISO/IEC 13818-2(Video)Committee Draft ofNovember 1993)。
运动估算处理器可以计算各种类型运动矢量,这取决于MPEG标准的要求:用于一些帧或图像的矢量、从前一幅图像到当前图像的矢量,或从未来的图像到当前图像的矢量(分别称“前向矢量(forward vectors)”和“后向矢量(backward vectors)”)等。其次,为了清楚起见,取从前一幅图像到当前图像(前矢量)的矢量例子。当然,本发明并不限于所提供的实施方案的例子。
图1功能性地说明了运动估算处理器101。处理器101包括一个RISC控制器102(RISC为“精简指令集计算机”),串列阵列协处理器103,3个独立的用来装入图像的输入端口104、105、106,一个用来发送运动矢量的输出端口107以及本地RAM和本地ROM(分别参见108和109)。
在有几个独立输入端口的情况下,使它可能对许多独立视频源工作。根据不同的实施方案,每个输入端口备有子采样电路,以实现分级运动估算。
所涉及到各种子组件通过数据总线111通信,其中包括连到DRAM外部存贮器110。存贮器管理单元(UGM)112操纵本地存贮器间的数据流。对应的图像(参考图像或当前图像)数据被传送到动态存贮器(DRAM)110。然后它们被读出,以便在适当时候提供给协处理器103。由协处理器103计算的运动矢量经过缓冲存贮器(MV BUFF)114送到动态存贮器110。在适当时候,这些矢量被读出,并通过输出端口107传送。
处理器101还装备有微处理器接口115,用于利用下载码和计算参数给RISC控制器102编程和配置。存贮在动态存贮器110中的运动矢量亦可以通过接口115访问。
单元(MAX-AVR)113为每幅图像计算平均运动矢量和最大运动矢量。
根据本例,RISC控制器102是包含62个寄存器和64字数据存贮器的19位处理器。控制器102的角色是处理来自处理器101的各个单元的请求,并在适当时候激活它们。
RISC控制器102连到本地RAM 108和本地ROM 109。在ROM中包含有公用子程序。
协处理器103包括几个并行或串行工作的串列阵列,这取决于编程的配置,下文,我们首先说明单个串列阵列的工作。根据本例,这将为协处理器103的操作提供更好的了解。这里协处理器对8个阵列进行混合处理。
图2a说明在串列阵列中信息流的最简单的情况。这阵列的基本功能是把当前象素块同参考窗口的内容比较。当前块存贮在串列阵列201中。参考窗口以条带为单位传到阵列中。对每个可能位置,计算误差函数Err。
部件202根据从搜寻的窗口中抽取不同块中同一当前块的误差函数的各种值,确定最适当的矢量,该部件将在以后作更详细的叙述。
图2b说明用来确定传送给串列阵列的条带的方法,每个条带有对应于一定数目阵列行的一些象素行(本例中的行数为4)。第一条带包含参考窗口中起始4行。当第一条带全部处理完时,继续处理下一个条带,下一条带包括第一条带的最后3行,以及紧跟着第一条带的一行。因此,每个条带相对于前面的条带位移一行。
每个条带逐列被传送到串列阵列。因此,对于与每个条带有同样的行数的当前块,同同样尺寸的每个条带的所有块比较。最后,当前块完成同同样尺寸的参考窗口的所有块的比较。同样多的误差函数值将完成计算,并传送到部件202中。
应该指出,2个条带只相差一个象素行,这种允余将在以后利用,以便限制从存贮器10中装入数据。
图3说明了一个4行5列的串列阵列。该阵列包括称为“S”的单元,缓冲器“B”,加法器“+”,旁通单元(bypass cells)301及最后旁通单元302。
S单元执行|a-b|计算,其中a和b分别为当前块的象素值和参考窗口的象素值。同一行的每个S单元的输出通过缓冲器B连到下一个S单元的输入。每行的第一个S单元的前面也有一个缓冲器B。象素值b在每个周期的同一行中从一个缓冲器传到下一个缓冲器。当S单位进行它们的计算时,缓冲器保持值b。
每个S单元还具有输出C,以传送计算出的|a-b|的结果。输出C同样连到缓冲器B上。同一列的所有缓冲器B连到同一个加法器(+)。因此,加法器的数量同列数相同。
加法器的输出通过串连的3个缓冲器B连到下一个加法器。根据所选择的工作方式,确定3个缓冲器中的最后一级缓冲器是否由旁通单元301短路。
最后旁通单元或者以不交叉的正常工作方式在每个周期都传送误差函数值,或者以交叉方式每2个周期传送误差函数值。在后面的情况,并有最后旁通单元302的加法器把连续2个误差函数值加起来。
根据不同的实施方案,加法器Add实施为具有3个输入的保留进位的加法器。
图4详细表示了S单元的功能。S单元包括:输入401;直接同输入401相连的输出402;具有2个输入端的计算单元403,其中一个输入端连到输入401,另一端连到多路器404的输出端;多路器可以通过选择线405选择缓冲器406的内容或缓冲器407的内容;缓冲器406和407的输入都连到单元的输入端401。
这两个缓冲器均包含当前块的象素值。这些值在适当的时候经输入401被装入,缓冲器的控制电路是常规电路,在此不作详细说明。并行存在的两个缓冲器,可以在单个串列阵列中同时存贮2个当前块。从而在参考窗口中同一位置上可以实现2个比较。这样,减少了在动态存贮器10和协处理器3之间传送的数据量。
而且,在每个S单元中存在2个缓冲器提供称为交错工作方式,这样工作可根据串列阵列行数形成2倍的当前块的行数。这种操作将在后面讨论。
计算单元传送存在在它输入端的两个值的差的绝对值。
应该指出,在本例范围内,参考窗口的象素值b存贮在S单元之间的缓冲器B中。而当前块或当前一些块的象素值a存贮在S单元的缓冲器中。
还应该指出,通过S单元形成的累加中间结果的功能全部由在每列S单元底部的加法器执行。
串列阵列的正常工作(非交叉),借助图5简图作解释。该简图表示包含一行8列的串列阵列。这种阵列的工作同具有很多行的阵列的工作完全相似。每个S单元的输出结果(输出S)在同一瞬间由加法器提供,在正常操作范围内,每列端点的加法器之间仅需要2个缓冲器。在简图中,为了清楚起见,第3个缓冲器和旁通单元没有说明。
象素值a已经存贮在阵列中。值b在每个周期提供到阵列的输入端。表1表示经过很多周期输出C的过程。
表1
C. | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 |
0 | --- | --- | --- | --- | --- | --- | --- | --- |
1 | |b0-a0| | --- | --- | --- | --- | --- | --- | --- |
2 | |b1-a0| | |b0-a1| | --- | --- | --- | --- | --- | --- |
3 | |b2-a0| | |b1-a1| | |b0-a2| | --- | --- | --- | --- | --- |
4 | |b3-a0| | |b2-a1| | |b1-a2| | |b0-a3| | --- | --- | --- | --- |
5 | |b4-a0| | |b3-a1| | |b2-a2| | |b1-a3| | |b0-a4| | --- | --- | --- |
6 | |b5-a0| | |b4-a1| | |b3-a2| | |b2-a3| | |b1-a4| | |b0-a5| | --- | --- |
7 | |b6-a0| | |b5-a1| | |b4-a2| | |b3-a3| | |b2-a4| | |b1-a5| | |b0-a6| | --- |
8 | |b7-a0| | |b6-a1| | |b5-a2| | |b4-a3| | |b3-a4| | |b2-a5| | |b1-a6| | |b0-a7| |
9 | |b8-a0| | |b7-a1| | |b6-a2| | |b5-a3| | |b4-a4| | |b3-a5| | |b2-a6| | |b1-a7| |
10 | |b9-a0| | |b8-a1| | |b7-a2| | |b6-a3| | |b5-a4| | |b4-a5| | |b3-a6| | |b2-a7| |
11 | |b10-a0| | |b9-a1| | |b8-a2| | |b7-a3| | |b6-a4| | |b5-a5| | |b4-a6| | |b3-a7| |
12 | |b11-a0| | |b10-a1| | |b9-a2| | |b8-a3| | |b7-a4| | |b6-a5| | |b5-a6| | |b4-a7| |
13 | |b12-a0| | |b11-a1| | |b10-a2| | |b9-a3| | |b8-a4| | |b7-a5| | |b6-a6| | |b5-a7| |
14 | |b13-a0| | |b12-a1| | |b11-a2| | |b10-a3| | |b9-a4| | |b8-a5| | |b7-a6| | |b6-a7| |
15 | |b14-a0| | |b13-a1| | |b12-a2| | |b11-a3| | |b10-a4| | |b9-a5| | |b8-a6| | |b7-a7| |
在周期0期间,值b0被存贮在阵列输入端的第一个缓冲器B中(参考501)。只是在周期1上,由第一个S单元传送的结果被存贮在输出C0的缓冲器502中。在周期1中,值b0同样被存贮在第一缓冲器B503。
在阵列工作所给瞬间中,对应于参考窗口中所给的当前块位置(本例中8个象素一行)的所有差的绝对值之和在最后加法器的输出端重新得到。经加法器级附加到参考窗口的第一行中的结果,在表中用粗黑体表示。
累加函数决定在加法器之间的缓冲器504引入的延迟。显然,为了正确地在加法器级间传播结果,必须引入2个周期的延迟。这就是在每个加法器之间存在2个缓冲器的原因。每个缓冲器引起一个周期的延迟。另外,开始2个加法器之间的缓冲器504和505抵消了由缓冲器501和502引入的延迟。
在第15周期的结尾,当前块的第一个可能位置的函数Err的值出现在阵列的输出506上。
应该指出,当工作时,存贮在每个S单元中的2个值,只有一个值被使用。根据不同的实施方案,在每个S单元中使用单个存贮当前块的象素值的缓冲器。
图6和表2描述了称为交叉方式的串列阵列的工作。这种方式可确定包含的行数目等于串列阵列行数2倍的当前块的误差函数。这可简单地通过在每个S单元中附加额外的缓冲器,以及在每个加法器之间附加额外的缓冲器来实现。
图6与图5相似,所不同的是每对加法器之间插入一个附加缓冲器。而且,每个S单元包括图4中所示的2个内部缓冲器。在偶数周期中,每个S单元的第一缓冲器的内容被传输到相应的计算单元,而第二个缓冲器的内容在奇数周期中使用。
双倍尺寸的当前块被分成2个垂直重叠的子块a和a′,第一子块a存贮在每个S单元的第一缓冲器中,而第二子块a′存贮在每个S单元的第二缓冲器中。
参考窗口的条带同样具有双倍行数。它包括上子条带b和下子条带b′。在偶数周期中,子条带b的列在串列阵列的输入端出现。而子条带b′的列在奇数周期出现。
表2给出了在每个周期之后输出C的状态。正如前面所述,黑体字符表示中间结果。这些结果将相加以形成对应于子块的误差函数。
就非交错工作而论,在2个子块和2个子条带之间交替,导致了在对应所给位置上,总合误差的加法器输出端的状态和对应于下一级加法器的输入端中间结果的状态之间,出现一个周期的额外延迟。因为这个原因,第三缓冲器被插入到每对加法器之间。
图6的阵列的最后一个加法器601,一方面连到加法器602的第一输入端,而另一方面连到缓冲器603,而缓冲器的输出连到加法器602的第二输入端。
对应于子块的误差函数在每个周期被传送到加法器601的输出(一旦阵列已经正确初始化)。表2显示相对子块a′的误差函数值比相应子块a的误差函数值延迟一个周期。这两个值必须加在一起,以得到对应于完整块a+a′的误差函数值。在第一周期期间,对应a的值被存贮在缓冲器603中。在下个周期中,对应于块a′的值出现在加法器601的输出端。加法器602实现求和。因此,每2个周期,在加法器602的输出产生有效的结果。
这个称为交错工作的方式是非常有利的。因为它可以减少向协处理器传送象素条带的数据总线的大小。
表2
C. | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 |
0 | --- | --- | --- | --- | --- | --- | --- | --- |
1 | |b0-a0| | --- | --- | --- | --- | --- | --- | --- |
2 | |b0′-a0′| | |b0-a1| | --- | --- | --- | --- | --- | --- |
3 | |b1-a0| | |b0′-a1′| | |b0-a2| | --- | --- | --- | --- | --- |
4 | |b1′-a0′| | |b1-a1| | |b0′-a2′| | |b0-a3| | --- | --- | --- | --- |
5 | |b2-a0| | |b1′-a1′| | |b1-a2| | |b0′-a3′| | |b0-a4| | --- | --- | --- |
6 | |b2′-a0′| | |b2-a1| | |b1′-a2′| | |b1-a3| | |b0′-a4′| | |b0-a5| | --- | --- |
7 | |b3-a0| | |b2′-a1′| | |b2-a2| | |b1′-a3′| | |b1-a4| | |b0′-a5′| | |b0-a6| | --- |
8 | |b3′-a0′| | |b3-a1| | |b2′-a2′| | |b2-a3| | |b1′-a4′| | |b1-a5| | |b0′-a6′| | |b0-a7| |
9 | |b4-a0| | |b3′-a1′| | |b3-a2| | |b2′-a3′| | |b2-a4| | |b1′-a5′| | |b1-a6| | |b0′-a7′| |
10 | |b4′-a0′| | |b4-a1| | |b3′-a2′| | |b3-a3| | |b2′-a4′| | |b2-a5| | |b1′-a6′| | |b1-a7| |
11 | |b5-a0| | |b4′-a1′| | |b4-a2| | |b3′-a3′| | |b3-a4| | |b2′-a5′| | |b2-a6| | |b1′-a7′| |
12 | |b5′-a0′| | |b5-a1| | |b4′-a2′| | |b4-a3| | |b3′-a4′| | |b3-a5| | |b2′-a6′| | |b2-a7| |
13 | |b6-a0| | |b5′-a1′| | |b5-a2| | |b4′-a3′| | |b4-a4| | |b3′-a5′| | |b3-a6| | |b2′-a7′| |
14 | |b6′-a0′| | |b6-a1| | |b5′-a2′| | |b5-a3| | |b4′-a4′| | |b4-a5| | |b3′-a6′| | |b3-a7| |
15 | |b7-a0| | |b6′-a1′| | |b6-a2| | |b5′-a3′| | |b5-a4| | |b4′-a5′| | |b4-a6| | |b3′-a7′| |
16 | |b7′-a0′| | |b7-a1| | |b6′-a2′| | |b6-a3| | |b5′-a4′| | |b5-a5| | |b4′-a6′| | |b4-a7| |
根据不同实施方案,串列阵列设计成可处理的当前块所具有的行数等于N倍阵列的行数,这里的N是大于2的整数。在这种情况下,需要很多缓冲器提供给每个S单元。
图7示意地表示按照实施例的第一种变化方案的协处理器。按照这种变化,这协处理器包括十个先进先出栈(FIFO栈)701到710,它们并行的联到数据总线11。每个FIFO数据字数目确定所搜寻窗口的象素的列数。栈701到710的输出连到具有10个输入端和8个输出端714到721的开关电路712。
电路712可以把十个FIFO的任意一个输出端连到电路的8个输出端中任意一个上。每个FIFO包括搜寻窗口的所有行。8个FIFO在给定的时刻上连到对应于所处理的搜寻窗口的条带行的输出端。
2个未被连结的附加FIFO通过数据总线将存贮器10中所存的数据装入。所装入的数据对应于搜索窗口的同当前所处理条带不同的一些行。
例如,假设搜寻窗口的8行L1到L8的第一条带包括在FIFO 701到708中。在这8行处理期间,行L9被装入到FIFO 709中。当第一个条带的处理终止时,存贮在FIFO 701中的行L1变为无用。子实上,第二条带包含行L2到L9。而第二条带的处理能在空闲时刻开始,因为全部条带存在于FIFO中。“纵横(crossbar)”型开关电路802,在存贮行送到串列阵列722至725之前,重新确定它们的正确顺序。
在条带具有8行的情况下,对所述的工作方式,9个FIFO是足够的。第十个FIFO用于例如当并行处理2个4行条带的时候。
根据这一方案,每个都具有4行16列的4个串列阵列722到725连到开关电路的输出端。按照惯例,输出714表示8行的条带的上面行,而输出721表示底下行。第一和第三个阵列(分别为722和724)被连到4个上面输出端714到717,而第2和第4个阵列(分别为723和725)被连到4个下面的输出端718到721。
上述安排允许用灵活的方式处理不同尺寸的当前块。实际上,可以用不同方式安排4个阵列:
8个4×8元素阵列,每个4×16元素阵列处理2个4×8元素的当前块;
4个8×8元素阵列;
2个8×16元素阵列;
2个16×16元素阵列。
在后面情况中,阵列以交叉方式工作,只有8个输出而不是16个输出可用。8个输出端交替地传送参考窗口的上面条带和下面条带的8个象素的各列。
显然,可以使用16个FIFO而不用8个FIFO(不考虑为装入下一行所需的FIFO)。
正象前面说明的那样,FIFO的深度确定参考窗口的宽度。当用4×8元素阵列工作时,可以成对的组合FIFO,并且以每个FIFO对存贮等于双倍长度的象素行。
此外,图7以箭头形式指出根据工作方式,在每个4×16元素阵列的输出端分组计算结果的状态。
图8说明第二种变化方案。9个FIFO馈送到开关电路802(在参考801下分组)。按照本例的协处理器包括8个4×8元素的串列阵列803到810。实际上,图8的2个级联的4×8阵列同图7的4×16阵列相同。当8个4×8的当前块被并行处理时,图8较好地说明由每个阵列计算结果的路径。本例中,2个上面的阵列803和804被采用。阵列803的输出端的最终结果(表示误差函数的值)被直接地传送到阵列804。根据是用8个4×8的当前块还是用4个8×8的当前块工作,确定在阵列803的输出端结果是否提供给后面的处理。当用8个4×8象素的当前块工作时,这个结果对确定由阵列803处理的当前块的运动矢量将是需要的。
根据这一方案,单元M同每个4×8个元素的阵列相联系。每个单元M从与块有关的所有误差值中确定由某一阵列输出的误差函数的最小值,并在存贮器中保存相应的运动矢量坐标。其结果经专门的数据总线811传送。
每个阵列803及804、807及808的输出连到具有两个输入端的多路器的输入。多路器的输出连到相关单元M的输入处。每个相同阵列的输出亦连到具有2个输入端的加法器的输入处,该加法器的另一输入接收紧接着下面阵列的输出,对应阵列803、804、807和808,这些输入分别是阵列805、806、809和810的输出。
当处理器按8个每个为4×8象素的当前块工作时,每个阵列的输出直接连到相关单元M。然后,每个单元M独自确定误差函数的最小值和运动矢量,这样形成8个独立矢量。通过阵列803、805、807和809输出的误差函数的值并不传送给跟它们串连的随后阵列。
当处理器按4个8×8象素的块工作时,经过多路器切换,使与在同样块上工作的2个重叠的阵列相联系的一个单元M接收由这二个阵列计算的误差函数值的和。例如,与阵列803相联系的单元M,根据在阵列803和805中处理的8×8块的误差函数值,进行它的计算。这产生单个矢量。正如前述的情况一样,阵列的第一列引入的误差函数值并不传送给第2列。
当处理器工作在2个8×16象素的块上时,只是同阵列804和808相联系的单元M被使用。4×8阵列对803和804、805和806、807和808和最后的809和810可以认为每对只是形成大小为4×16的连续阵列。例如,同阵列804相联系的加法器,把来自阵列804和806的误差加起来。由阵列803和805计算的误差函数值包括在由阵列804和806计算的误差函数值内,并且,通过分别在阵列803和804、805和806之间联结,传递给后面的值。
在交叉方式的情况下,原理是相同的。简单的说,一单元或单元M具有2个运动矢量,每个块一个。
图1的控制器2根据所选择的工作方式操纵多路器的切换。
图9说明了当2个当前块被处理时,2个参考窗口的安排。这些当前块对应标号1和2,标符X1Min和X1Max定义对应于块1的参考窗口的横坐标,而X2Min和X2Max定义对应于块2的参考窗口的横坐标。对应于本例中的块1和2的位置基本上在窗口的中间。显然,2个窗口共享在横坐标X2Min和X1Max之间的全部。
串列协处理器提供一种处理,这种处理对2个块1和2的计算,只要求位于横坐标X1Min和X2Max之间的象素通过。
正如早已说明过的那样,串连的2个串列阵列(例如2个阵列803和804)能处理2个单独块。当象素数据直接从一个阵列传到下一阵列时,由第一个阵列计算的误差函数值并不简单地传送到下一个阵列。分别同第一和第二阵列相联系的2个单元M,各自重新存贮对应于2个阵列中每一个的误差函数值。
图10说明了把象素数据安排和引入到串连的两个串列阵列中的第一个例子。图中示出,上面的象素条带位于横坐标X1Min和X2Max之间。标符A和B表示了在2个参考窗口中同当前块相对应的第一块的位置,并说明数据被引入到阵列中的方式。
很自然,由第一串列阵列处理块1(例如阵列803)和用第二阵列处理块2(例如阵列804)。因此,这种安排符合在当前图像中块1和2的自然安排。而且,当2个阵列对以双倍块1或2尺寸的块串连工作时,这种安排是很自然的。
很明显,这样安排对下面描述的及图11所说明的本发明方法不利。
在表1中可以看到,对8个象素长度的阵列,第一参考块的最后一列所进行的计算只在周期15实现。
如果考虑图10的安排,关于块A和块1的计算在周期15之后完成,当整个块B已通过第一阵列时,对应于块2和B的计算仅在周期17开始。
因此,可以看到,来自第一阵列的第一个有效结果(相当于块A)不可能同时提供作为来自第二阵列的第一个有效结果(相当于块B)。
这个要求对来自2个阵列的每个结果交错管理,以使系统变得更加复杂。
而且,条带必需进入阵列,直到图10的块C全部到第二阵列内。这意味着为了处理全部条带,需要2×(X2Max-X1Min+X2Min-X1Min)个周期。当块C进入第二个阵列的同时,第一阵列将进行无效的计算。相反,在等待块B象素的第一列通过第一阵列时,第二阵列将进行无效的计算。根据不同实施例,通过连续地处理一幅图像的所有条带,一个条带接一个条带插入到串列阵列不会留下空隙,使这个缺点降至最小程度。
图11说明了按照本发明的方法的一个具体例子。两个块1和2是以这样方式存贮的,即它们的安排同当前图像中的安排相反。在这种情况下,块2存贮在第一阵列中,而块1存贮在下一个阵列中。
因此,当块B通过第一阵列被处理的同时,块A通过第二阵列处理。在同一时间两个块同一条带的结果可以并行得到。只要块A的象素的第一列没有到达第二阵列,2个阵列进行的计算是无用的(至少前面条带的计算尚未完成)。而且,因为只用第一阵列处理块C,所以并不需要等待块C完全通过第一阵列。因此,考虑到连续引入条带时,或者处理每个条带,或者处理每幅图像,可节省对应一个完整块的处理时间(16个周期)。
根据本发明的另一实施例,通过第一阵列传送的结果还涉及象素块A。这引起有关块2位置参考窗口的不对称。就不对称来说是不麻烦的(因为,所确定的运动矢量可以没有相等幅度的最大负和正分量),这个改变加宽了参考场而不增加整体计算时间。这个改变正好可用在条带的开始以及用在条带的结尾。然而,在这种情况下,丢失了同时能得到2个块结果的优点。
应该指出,对图10中安排的块1和块2倒向等于在图10的安排中采用反向的象素条带。也就是说,从横坐标X2Max象素开始,在横坐标X1Min象素终止。在这种情况下,在每个当前块1和2中的象素被反向。该实施方案由图12来说明。
本发明并不限于所说的串列阵列的例子。但同样地可用于特别是在运动估算方面的其它类型阵列中,。
另外,还能够串连放置2个以上的阵列。
Claims (5)
1.一种在运动估算中确定失真函数值的方法,所述运动估算至少包括两个串连排列的失真函数计算元素的阵列,每个阵列用于计算其中存储的当前图像像素块和参考窗口像素块之间的失真,所述参考窗口以像素条带的形式在所述串连阵列的一端插入到所述阵列中并沿所述串连阵列移动,所述方法包括以下步骤:
从所述当前图像中选择一序列相邻像素块;
按所述块的邻接次序或按所述块邻接次序的相反次序,将所述相邻像素块序列存储在一序列相邻阵列中;
将一包含对应于所述相邻像素块序列中每个块的各参考窗口的复合参考窗口的像素条带,引入到所述串连阵列的一端,其中到所述串连阵列的所述像素块序列的所述存储次序和所述像素条带的引入方向,使得引入到所述串连阵列的所述条带的最后部分,对应于所述串连阵列中在引入方向上位于第一个的像素块的参考窗口的一部分。
2.如权利要求1所述的方法,其中,在参考图像中,所述当前图像像素块的位置处于所述像素块所对应的参考窗口的中央,两个相邻块的参考窗口偏移一个块。
3.如权利要求1或2的方法,其中,所述串连阵列包括一左和一右阵列、分别存储在所述左阵列和所述右阵列的所述当前图像的第一像素块和与所述第一像素块的右侧水平相邻的第二像素块、所述复合参考窗口的各条带,所述条带是从它们各自的右端开始被引入到所述左阵列的。
4.如权利要求1或2的方法,其中,所述串连阵列包括一左和一右阵列、分别存储在所述右阵列和所述左阵列的所述当前图像的第一像素块和与所述第一像素块的右侧水平相邻的第二像素块、所述复合参考窗口的各条带,所述条带是从它们各自的右端开始被引入到所述左阵列的。
5.如权利要求1所述的方法,还包括下列步骤:
将所述条带沿整个串连阵列移动;并且
控制所述阵列中的至少一个阵列,用于对所述复合参考窗口的所述条带的一些段执行失真计算,这些段不是存储在所述阵列的所述至少一个阵列中的块的参考窗口的部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9514432A FR2742248B1 (fr) | 1995-12-06 | 1995-12-06 | Procede de traitement de donnees dans des reseaux matriciels dans un systeme d'estimation de mouvement |
FR9514432 | 1995-12-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1156384A CN1156384A (zh) | 1997-08-06 |
CN1115880C true CN1115880C (zh) | 2003-07-23 |
Family
ID=9485205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN96121870A Expired - Fee Related CN1115880C (zh) | 1995-12-06 | 1996-12-06 | 在运动估算系统中以矩阵阵列处理数据的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5870500A (zh) |
EP (1) | EP0778544B1 (zh) |
JP (1) | JPH09182088A (zh) |
CN (1) | CN1115880C (zh) |
DE (1) | DE69609931T2 (zh) |
FR (1) | FR2742248B1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3226020B2 (ja) * | 1997-05-28 | 2001-11-05 | 日本電気株式会社 | 動きベクトル検出装置 |
JP3540142B2 (ja) * | 1998-01-30 | 2004-07-07 | 株式会社東芝 | 動きベクトル検出回路および動きベクトル検出方法 |
US6400764B1 (en) * | 1999-04-06 | 2002-06-04 | Koninklijke Philips Electronics N. V. | Motion estimation method featuring orthogonal-sum concurrent multi matching |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
JP4164257B2 (ja) * | 2001-12-06 | 2008-10-15 | キヤノン株式会社 | 画像処理装置、画像処理方法、プログラム、及び記憶媒体 |
JP2004005287A (ja) * | 2002-06-03 | 2004-01-08 | Hitachi Ltd | コプロセッサを搭載したプロセッサシステム |
US7817717B2 (en) * | 2002-06-18 | 2010-10-19 | Qualcomm Incorporated | Motion estimation techniques for video encoding |
JP3934568B2 (ja) * | 2003-03-04 | 2007-06-20 | 松下電器産業株式会社 | 動画符号化方法および装置 |
CN100356780C (zh) * | 2005-02-03 | 2007-12-19 | 清华大学 | 用于压缩视频信号解码的图像存储方法 |
TWI277010B (en) * | 2005-09-08 | 2007-03-21 | Quanta Comp Inc | Motion vector estimation system and method |
KR100856411B1 (ko) * | 2006-12-01 | 2008-09-04 | 삼성전자주식회사 | 조도 보상 방법 및 그 장치와 그 방법을 기록한 컴퓨터로 읽을 수 있는 기록매체 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04207788A (ja) * | 1990-11-30 | 1992-07-29 | Sony Corp | 画像信号符号化装置及び方法 |
US5198901A (en) * | 1991-09-23 | 1993-03-30 | Matsushita Electric Corporation Of America | Derivation and use of motion vectors in a differential pulse code modulation system |
JPH0595540A (ja) * | 1991-09-30 | 1993-04-16 | Sony Corp | 動画像符号化装置 |
US5594813A (en) * | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
WO1993023816A1 (en) * | 1992-05-18 | 1993-11-25 | Silicon Engines Inc. | System and method for cross correlation with application to video motion vector estimation |
JPH06205388A (ja) * | 1992-12-28 | 1994-07-22 | Canon Inc | 画像符号化装置 |
EP0613293B1 (en) * | 1993-02-22 | 1999-11-17 | Industrial Technology Research Institute | Multiple module block matching architecture |
US5467413A (en) * | 1993-05-20 | 1995-11-14 | Radius Inc. | Method and apparatus for vector quantization for real-time playback on low cost personal computers |
JP3153404B2 (ja) * | 1994-02-02 | 2001-04-09 | 松下電器産業株式会社 | ディジタルビデオ・ビットストリームコーダ |
TW321748B (zh) * | 1994-02-23 | 1997-12-01 | Rca Thomson Licensing Corp | |
FR2723796B1 (fr) * | 1994-08-19 | 1996-11-29 | Thomson Consumer Electronics | Dispositif d'estimation de mouvement |
US5596369A (en) * | 1995-01-24 | 1997-01-21 | Lsi Logic Corporation | Statistically derived method and system for decoding MPEG motion compensation and transform coded video data |
-
1995
- 1995-12-06 FR FR9514432A patent/FR2742248B1/fr not_active Expired - Fee Related
-
1996
- 1996-11-25 US US08/758,115 patent/US5870500A/en not_active Expired - Fee Related
- 1996-12-05 DE DE69609931T patent/DE69609931T2/de not_active Expired - Fee Related
- 1996-12-05 JP JP8325689A patent/JPH09182088A/ja active Pending
- 1996-12-05 EP EP96402631A patent/EP0778544B1/fr not_active Expired - Lifetime
- 1996-12-06 CN CN96121870A patent/CN1115880C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
FR2742248B1 (fr) | 1998-01-23 |
US5870500A (en) | 1999-02-09 |
DE69609931T2 (de) | 2001-03-29 |
CN1156384A (zh) | 1997-08-06 |
FR2742248A1 (fr) | 1997-06-13 |
DE69609931D1 (de) | 2000-09-28 |
EP0778544B1 (fr) | 2000-08-23 |
EP0778544A1 (fr) | 1997-06-11 |
JPH09182088A (ja) | 1997-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1115880C (zh) | 在运动估算系统中以矩阵阵列处理数据的方法 | |
CN101919250B (zh) | 压缩多个像素块的方法和压缩器、以及对压缩像素块进行解压的方法和解压器 | |
CN1110187C (zh) | 选择运动矢量的方法及实现该方法的图象处理装置 | |
CN1157956C (zh) | 运动估计器 | |
US8766992B2 (en) | Methods and apparatus for image processing at pixel rate | |
CN103650496A (zh) | 用于在hevc中编码的基于像素的帧内预测 | |
CN1794814A (zh) | 流水线化解块滤波器 | |
CN101068364A (zh) | 视频编码器与图形处理单元 | |
CN1143301A (zh) | 视频信号编码系统控制器 | |
US9800874B2 (en) | Image decoding apparatus executing successive tile decoding and filtering around tile boundary | |
CN109886891A (zh) | 一种图像复原方法及装置、电子设备、存储介质 | |
CN1253696A (zh) | 降低一个脉动阵列对存储器的带宽需求的装置与方法 | |
CN102113327B (zh) | 图像编码装置、方法、集成电路 | |
KR101677242B1 (ko) | 컨볼루션 기법 기반의 고속 적응적 샘플 오프셋 필터링 장치 및 방법 | |
CN1703094A (zh) | 1/4像素插值应用于1/2像素插值结果的图象插值装置和方法 | |
CN1112654C (zh) | 图像处理装置 | |
CN106851298A (zh) | 一种高效视频编码方法及装置 | |
JPH09327019A (ja) | 物体領域符号化装置 | |
US20050047502A1 (en) | Method and apparatus for the efficient representation of interpolated video frames for motion-compensated coding | |
CN1110209C (zh) | 用于预测运动的设备及其相应的图像压缩系统 | |
CN1299510C (zh) | 压缩运动图像信息的方法和系统 | |
CN104506867A (zh) | 采样点自适应偏移参数估计方法及装置 | |
De Cea-Dominguez et al. | GPU-oriented architecture for an end-to-end image/video codec based on JPEG2000 | |
CN101051263A (zh) | 处理器、图像处理系统和处理方法 | |
CN1780402A (zh) | 视频图像运动补偿装置 |
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 |