离散余弦变换的处理方法及其装置的制作方法

文档序号:6575905阅读:170来源:国知局
专利名称:离散余弦变换的处理方法及其装置的制作方法
技术领域
本发明涉及在图像信号处理、通信等领域中的离散余弦变换,尤其是涉及一种离散余弦变换的处理方法及其装置。

背景技术
离散余弦变换是N.Ahmed等人在1974年提出的一种正交变换方法。它常被认为是对语音和图像信号进行变换的最佳方法,是性能接近K-L变换的准最佳变换。DCT是H.261、JPEG、MPEG等国际上公用的编码标准的重要环节,在目前的音视频编码中占据着重要地位。鉴于DCT的重要性,因此它的VLSI实现是很有必要的,而且集成电路技术的发展也为此提供了可能。
DCT有多种形式的定义,通常所指的DCT是离散余弦变换二型,其定义如下 对N个实数x(0),x(1),x(2),...,x(N-1)的离散余弦变换为 k=0,1,2,...,N-1 其中 一维DCT的快速变换方法有很多种,例如直接按照定义是来实现的基于快速傅立叶变换的方法,基于PT(Polynomial Transform)的方法,采用脉动结构的算法和FG(flow-graphic)算法实现的变换。在这些实现中,脉动结构由于其高度流水线化、模块化、规则、局部互连、并行处理等特点而备受关注。已有的脉动结构的实现大多是线性的结构,数据串行输入输出,这样虽然可以减少所需的硬件资源的数目,但是并行度较低,数据吞吐率低,设计也较复杂,并不能很好的体现出脉动结构的优点。
其中有一种脉动结构的实现是将DCT变形成某种循环卷积的形式,通过循环卷积的脉动结构来实现离散余弦变换,例如Chao Cheng和Keshab K.Parhi在《A Novel Systolic Array Structure for DCT》(IEEE Transactions on Circuits andSystems-IIExpress Briefs,VOL.52,No.7,2005.1,pp.366-369)中的方法,图6所示为基于该方法的N=13的DCT结构图。
其原理如下 DCT定义为 k=0,1,2,..,N-1(1.1) 其中y(i)和Y(k)分别为输入和输出序列。
上面公式可以变换为如下的形式 其中 k=0,1,...,N-1(1.3) 且序列x(i)定义为 x(N-1)=y(N-1) x(i)=y(i)-x(i+1),i=0,1,...,N-2(1.4) 如果N是一个素数,则对于整数集A={1,2,3,...,N-1},可以在其中找到至少一个素数g使得该整数集中的任意一个元素m经过(gm mod N)运算后所构成的整数集B与A相同,且构成一一映射。
因此(1.2)(1.3)式中的i和k也可作为g的指数代入式中,等式依然成立。此时(1.3)式可以改写为 k=1,...,N-1 其中
并且m做如下定义 gi×gk=gi+k+m×N,i,k=1,2,...,N-1(1.5b) gi表示为(gi mod N)的运算结果。
定义其具有Ci=-C(N-i)的特性。
以N=7为例,g可以取3。则根据(1.5),我们可以得到如下的矩阵等式 交换1和4行,可得 定义 很明显三者具有B3=A3R3的关系,因此(1.7)可以表示为 其中 T0=[T(4)T(2)T(6)]T T1=[T(3)T(5)T(1)]T X0=[x(1)x(5)x(4)]T X1=[x(6)x(2)x(3)]T 最终一个7点的DCT转换为两个3点的循环卷积运算。
对于长度为N,且N为素数的离散余弦变换,基于循环卷积的快速算法可以总结为如下步骤 1)将(1.5)代入T矩阵,并且根据Ci=-C(N-i)进行化简。
2)通过如下方式对T矩阵进行变形, a)根据(1.5b),定义
b)将所有满足1≤i,k≤(N-1)/2的k值记为集合{r1,r2,...}。
c)将T矩阵行号为{r1,r2,...}和

的对应行进行交换得到新的T矩阵,比如r1行和

行交换。
3)将2)中的到的T矩阵分解为如下所示的形式 式中R(N-1)/2是一个对角矩阵,其对角线上的元素为
且A(N-1)/2和R(N-1)/2都是

的矩阵。
4)将(1.9)式的运算用脉动结构实现。
5)利用(1.2)式完成剩余的计算。
可以计算出其所需的乘法器和加法器的个数分别为(N-1)/2和3(N-1)/2,完成一组DCT所需的平均运算时间为(N-1)T/2,工作周期为T=Tm+3Ta,其中Tm和Ta分别指乘法器和加法器的计算时间。虽然所需乘法器较少,这样可以有效的减小电路面积,但是串行输入输出的结构使得平均运算时间较长,也就是说(N-1)T/2才能得到一组数据,实时性较差,同时模块也较为复杂,这从工作周期中可以看出,每个模块中至少需要按序执行一次乘法操作和3次加法操作。
集成电路技术的发展,使得单个芯片上可集成的晶体管数量越来越多,这一数字有望在2012年突破20亿[8]。虽然集成度越来越高,但是功耗这一问题始终困扰着人们。除此之外,为了满足实时性的要求,芯片的处理速度也必须和系统其他部分相协调,更高的处理速度也是人们的需求。然而,要实现低功耗而不降低处理速度是很难实现的。因此,我们不能再仅仅只单一的关注面积复杂度或时间复杂度,而是两者的平衡,即面积-时间复杂度(area-timecomplexity)。
如果以乘法器个数和平均运算时间分别作为面积复杂度(A)和时间复杂度的衡量指标(τ)。则上述结构的面积-时间复杂度为 面积-时间积 若更重视时间复杂度,则为 面积-时间2积 集成电路技术的发展使得晶体管的集成度越来越高,单个晶体管的成本越来越低,相对人们应用需求,实时性的要求更加凸显,我们需要用Aτ甚至Aτ2为指标去衡量和优化我们的系统。显然,上述的算法和结构在面积时间复杂度上并不够理想,当我们更加重视实时性时就需要并行度更高的结构来降低时间复杂度,从而获得较小的Aτ或Aτ2。
同时,上述的算法和结构并未在整体上体现脉动结构规则、控制及通信简单等特点,无法发挥脉动结构本身的优势。


发明内容
本发明的目的是克服现有技术的不足,提供一种离散余弦变换的处理方法及其装置,以提高离散余弦变换的并行度,减小面积时间复杂度,发挥脉动结构的优势,从而满足实时性的应用需求。
为实现上述目的,本发明提出的技术方案如下 离散余弦变换的处理方法,用于处理N为偶数的离散余弦变换二型,包括以下步骤 步骤一,将每个x(i)与前一项x(N-i)求和得到对应的中间值v(i),将x(0)、(-1)kx(N-1)、

三项求和得到对应的中间值y0(k).其中x(i),i=0,1,2,...,N-1是离散余弦变换的输入; 步骤二,基于乘积累加处理计算的结果值; 步骤三,将步骤二的结果值与相应的常系数

相乘作为离散余弦变换过程的输出值y(k),其中 所述步骤二之前还包括预先计算v(i)、v(N-i)的和与差的步骤。
所述的步骤一计算y0(k)的方法是,计算x(0)加上x(N-1)并加上中间值之一

的值,计算x(0)加上x(N-1)并减去中间值之一

的值,计算x(0)减去x(N-1)的值,将上述三值分别赋值给k/2为偶数,k/2为奇数,以及k为奇数三种情况所对应的y0(k)。
所述步骤二在计算T(k)和T(N-k)时共用乘积项

其中 离散余弦变换的装置,用于处理序列长度N为偶数的离散余弦变换二型,包括 预处理模块,用于将并行输入的N个数据{x(i),i=0,1,2,...,N-1}中的将每个x(i)与前一项x(N-i)求和得到对应的中间值v(i),将x(0)、(-1)kx(N-1)、

三项求和得到对应的中间值y0(k),并预先计算v(i)、v(N-i)的和与差,并将v(i)、v(N-i)之和、v(i)、v(N-i)之差以及y0(k)并行输出,其中k=0,1,2,...,N-1; 主处理模块,以预处理模块的输出作为输入,基于乘积累加的方法计算的结果值,并且并行输出结果T(k); 后处理模块,以主处理模块的输出作为输入,完成其与相应的常系数

的乘法操作,并行输出结果值,作为离散余弦变换装置的输出。
所述的主处理模块由两类单元构成延迟单元和运算单元P,延迟单元有一对输入(xin1,xin2)和一对输出(xout1,xout2),用于将输入分别延时一个时钟周期输出,运算单元有两对输入(xin1,xin2)与(yin1,yin2)和两对输出(xout1,xout2)与(yout1,yout2)。
所述两类单元以下述方式连接 由运算单元P构成一个行X列为

的阵列,Pi,k(i表示列编号,取值为

k表示行编号,取值为

)的(xin1,xin2)、(xout1,xout2)、(yin1,yin2)、(yout1,yout2)分别和1的(xout1,xout2)、Pi,k+1的(xin1,xin2)、Pi+1,k的(yout1,yout2)、Pi-1,k的(yin1,yin2)相连接; 阵列边缘PN/2-1,k的(yin1,yin2)作为输入,分别输入为y0(k)和y0(N-k),但PN/2-1,0的(yin1,yin2)输入为y0(0)和y0(N/2); 阵列边缘P1,k的(yout1,yout2)作为输出,分别输出T(k)和T(N-k),但P1,0的(yout1,yout2)输入为T(0)和T(N/2); v(i)、v(N-i)之和以及v(i)、v(N-i)之差两输入值通过N/2-i-1个延迟单元后,分别作为阵列边缘Pi,0的(xin1,xin2)的输入,两输入分别作为第一个延迟单元的(xin1,xin2),而最后一个延迟单元的(xout1,xout2)与Pi,0的(xin1,xin2)相连接,相邻两延迟单元的(xin1,xin2)和(xout1,xout2)对应相连接,i=N/2-1时无延迟单元,两个输入直接作为Pi,0的(xin1,xin2); 阵列边缘Pi,N/2-1的(xout1,xout2)不与任何电路相连。
所述的运算单元由一个乘法器、两个加法或减法器、两个寄存器构成,用于基于乘积累加的方法同时计算T(k)和T(N-k)(其中)或T(0)和T(N/2);所述的延迟单元,由寄存器构成,用于和运算模块中寄存器一起在时钟的作用下控制数据流动和协调运算。
所述的运算单元Pi,k根据i,k的不同有四种形式的结构 结构一,i、k均为偶数时,xin1在乘法器中与常系数

相乘,结果与yin1、yin2分别求和,并把结果分别作为两个寄存器的输入,而寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连; 结构二,i为奇数、k为偶数时,xin1在乘法器中与常系数

相乘,结果作为加数和减数分别与yin1、yin2相加和相减,并把结果分别作为两个寄存器的输入,寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连; 结构三,i为偶数、k为奇数时xin2在乘法器中与常系数

相乘,结果与yin1、yin2分别求和,并把结果分别作为两个寄存器的输入,而寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连; 结构四,i、k均为奇数时,xin2在乘法器中与常系数

相乘,结果作为加数和减数分别与yin1、yin2相加和相减,并把结果分别作为两个寄存器的输入,寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连。
本发明方案主要是通过对N为偶数的DCT-II型进行公式变形,利用余弦函数的对称性,充分利用变换后算法中的相同乘积项和中间值,减少运算中的乘法器和加减法器。采用数据并行输入输出的方式,提高数据吞吐率,实现一个周期完成一次DCT运算;用二维脉动阵列结构实现算法,模块内部结构简单,高度流水线,工作周期短,从而有效的减小平均运算时间。整个结构实现了高并行度、低面积-时间复杂度,可以更好的满足实时性的应用需求。



图1是本发明的实施例的一维DCT的运算结构的系统电路图; 图2是本发明的实施例的一维DCT结构的预处理模块的电路图; 图3是本发明的实施例的一维DCT结构的主处理模块的电路图; 图4(a)是本发明的实施例i,k均为偶数时的运算单元Pi,k的电路图; 图4(b)是本发明的实施例i为奇数,k为偶数时的运算单元Pi,k的电路图; 图4(c)是本发明的实施例i为偶数,k为奇数时的运算单元Pi,k的电路图; 图4(d)是本发明的实施例i,k均为奇数时的运算单元Pi,k的电路图; 图5是本发明的实施例的一维DCT结构的后处理模块Pi,k的电路图; 图6是现有基于循环卷积的DCT脉动结构。

具体实施例方式 本发明技术方案通过对DCT算法的改进,提出一种与之相应的二维脉动阵列结构,该结构充分利用变换后算法中的相同乘积项和中间值,减少运算中的乘法器和加减法器。采用数据并行输入输出的方式,提高数据吞吐率,实现一个周期完成一次DCT运算;不仅如此,模块内部结构简单,高度流水线,工作周期短,从而有效的减小平均运算时间。整个结构实现了高并行度、低面积-时间复杂度,可以更好的满足实时性的应用需求。
离散余弦变换的处理方法,用于处理N为偶数的离散余弦变换二型,包括以下步骤 步骤一,将每个x(i)与前一项x(N-i)求和得到对应的中间值v(i),将x(0)、(-1)kx(N-1)、

三项求和得到对应的中间值y0(k),其中x(i),i=0,1,2,...,N-1是离散余弦变换的输入; 步骤二,基于乘积累加处理计算的结果值; 步骤三,将步骤二的结果值与相应的常系数

相乘作为离散余弦变换过程的输出值y(k),其中 所述步骤二之前还包括预先计算v(i)、v(N-i)的和与差的步骤。
所述的步骤一计算y0(k)的方法是,计算x(0)加上x(N-1)并加上中间值之一

的值,计算x(0)加上x(N-1)并减去中间值之一

的值,计算x(0)减去x(N-1)的值,将上述三值分别赋值给k/2为偶数,k/2为奇数,以及k为奇数三种情况所对应的y0(k)。
所述步骤二在计算T(k)和T(N-k)时共用乘积项

其中 离散余弦变换的装置,用于处理序列长度N为偶数的离散余弦变换二型,包括 预处理模块,用于将并行输入的N个数据{x(i),i=0,1,2,...,N-1}中的将每个x(i)与前一项x(N-i)求和得到对应的中间值v(i),将x(0)、(-1)kx(N-1)、

三项求和得到对应的中间值y0(k),并预先计算v(i)、v(N-i)的和与差,并将v(i)、v(N-i)之和、v(i)、v(N-i)之差以及y0(k)并行输出,其中k=0,1,2,...,N-1; 主处理模块,以预处理模块的输出作为输入,基于乘积累加的方法计算的结果值,并且并行输出结果T(k); 后处理模块,以主处理模块的输出作为输入,完成其与相应的常系数

的乘法操作,并行输出结果值,作为离散余弦变换装置的输出。
所述的主处理模块由两类单元构成延迟单元和运算单元P,延迟单元有一对输入(xin1,xin2)和一对输出(xout1,xout2),用于将输入分别延时一个时钟周期输出,运算单元有两对输入(xin1,xin2)与(yin1,yin2)和两对输出(xout1,xout2)与(yout1,yout2)。
所述两类单元以下述方式连接 由运算单元P构成一个行X列为

的阵列,Pi,k(i表示列编号,取值为

k表示行编号,取值为

)的(xin1,xin2)、(xout1,xout2)、(yin1,yin2)、(yout1,yout2)分别和1的(xout1,xout2)、Pi,k+1的(xin1,xin2)、Pi+1,k的(yout1,yout2)、Pi-1,k的(yin1,yin2)相连接; 阵列边缘PN/2-1,k的(yin1,yin2)作为输入,分别输入为y0(k)和y0(N-k),但PN/2-1,0的(yin1,yin2)输入为y0(0)和y0(N/2); 阵列边缘P1,k的(yout1,yout2)作为输出,分别输出T(k)和T(N-k),但P1,0的(yout1,yout2)输入为T(0)和T(N/2); v(i)、v(N-i)之和以及v(i)、v(N-i)之差两输入值通过N/2-i-1个延迟单元后,分别作为阵列边缘Pi,0的(xin1,xin2)的输入,两输入分别作为第一个延迟单元的(xin1,xin2),而最后一个延迟单元的(xout1,xout2)与Pi,0的(xin1,xin2)相连接,相邻两延迟单元的(xin1,xin2)和(xout1,xout2)对应相连接,i=N/2-1时无延迟单元,两个输入直接作为Pi,0的(xin1,xin2); 阵列边缘Pi,N/2-1的(xout1,xout2)不与任何电路相连。
所述的运算单元由一个乘法器、两个加法或减法器、两个寄存器构成,用于基于乘积累加的方法同时计算T(k)和T(N-k)(其中)或T(0)和T(N/2);所述的延迟单元,由寄存器构成,用于和运算模块中寄存器一起在时钟的作用下控制数据流动和协调运算。
所述的运算单元Pi,k根据i,k的不同有四种形式的结构 结构一,i、k均为偶数时,xin1在乘法器中与常系数

相乘,结果与yin1、yin2分别求和,并把结果分别作为两个寄存器的输入,而寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连; 结构二,i为奇数、k为偶数时,xin1在乘法器中与常系数

相乘,结果作为加数和减数分别与yin1、yin2相加和相减,并把结果分别作为两个寄存器的输入,寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连; 结构三,i为偶数、k为奇数时xin2在乘法器中与常系数

相乘,结果与yin1、yin2分别求和,并把结果分别作为两个寄存器的输入,而寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连; 结构四,i、k均为奇数时,xin2在乘法器中与常系数

相乘,结果作为加数和减数分别与yin1、yin2相加和相减,并把结果分别作为两个寄存器的输入,寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连。
下面将结合附图对本发明技术方案的主要原理、步骤及能达到的有益效果进行更进一步的阐述。
首先是本发明离散余弦变换处理方法的主要原理。
离散余弦变换的定义如下, 对N个实数x(0),x(1),x(2),...,x(N-1)的离散余弦变换为 k=0,1,2,..,N-1(2.1) 其中 根据(2.2)式对(2.1)式进行变形。
则(2.1)式可以被变换为如下形式 (2.3) 令v(i)=x(i)+x(i-1),i=1,2,...,N-1 则此时(2.3)式改写为如下的形式 余弦函数具有如下性质 从而(2.4)式可以转换为如下形式 可以设 则可将(2.6)式改写为如下形式 可设 且根据(2.5)式我们可以知道,N为偶数时, 其中k=1,2,...,N/2-1。
我们可以基于乘积累加的方法计算(2.9)式的结果。
根据上述算法的变换过程,我们将DCT的求解过程总结如下 步骤1,利用v(i)=x(i)+x(i-1)和将输入x(i)转换为中间值v(i)和y0(k),从而将运算处理转换为运算处理; 步骤2,基于乘积累加处理计算的结果值; 步骤3,将步骤2中求得的T(k)与相应的常系数

相乘作为离散余弦变换过程的输出值。
所述步骤2之前,可在步骤1中预先计算v(i)+v(N-i)、v(i)-v(N-i)。
所述的步骤1中计算y0(k)的方法是,计算x(0)加上x(N-1)并加上中间值之一

的值,计算x(0)加上x(N-1)并减去中间值之一

的值,计算x(0)减去x(N-1)的值,将上述三值分别赋值给k/2为偶数,k/2为奇数,以及k为奇数三种情况所对应的y0(k)。
所述步骤2在计算T(k)和T(N-k)时共用乘积项

其中 整个计算的核心为步骤2,其他步骤只是单一的加法和乘法操作。步骤1中预先计算v(i)+v(N-i)、v(i)-v(N-i)减少了步骤2中不必要的重复计算,减少了加法器的使用。步骤2中乘积项的共享减少了乘法器的使用。
下面说明本发明离散余弦变换装置的构成。
与算法的三个步骤相对应,如图1所示,整个装置分为三个部分 (1)预处理模块 用于完成上述算法中步骤1中所示的运算。
图2中给出了基于上述算法的预处理模块的结构图。模块的延迟为两个加/减法器延时之和,即2Ta。
(2)主处理模块 主处理模块是以预处理模块的输出作为输入的,是一个二维的脉动阵列结构。它由两类单元构成延迟单元和运算单元(P)。图3所示即为主处理的电路图,是一个二维的脉动阵列结构,图4所示为4种不同形式的运算单元的电路结构。
脉动阵列规则,模块及其之间的互连简单,有效的减小了设计复杂度以及所需的布线资源,同时流水线的形式又保证了运算的连续以及高度的并行性。
主处理模块完成从v(i)+v(N-i)、v(i)-v(N-i)、y0(k)到T(k)的计算。
以T(k)和T(N-k),k=1,2,...,N/2-1的计算为例说明脉动阵列的运算过程。
T(k)和T(N-k)的计算在第k行(这里假设k为偶数)PE中完成,下面为说明方便用Pi,k表示处在列号为i,行号为k的位置上的PE 在第1个周期,在PN/2-1,k中,由于k为偶数,v(N/2-1)+v(N/2+1)在常系数乘法器中完成与

的相乘,假如k为奇数,则应是v(N/2-1)-v(N/2+1);然后如图4所示,乘积项要分别和y0(k)、y0(N-k)在加/减法器中完成加/减法,至于是加法器还是减法器,由(i,k)来决定。完成加减法操作后,累加的结果送寄存器锁存,并作为输出,设为TN/2-1(k)和TN/2-1(N-k)。
在第2个周期,v(N/2-2)+v(N/2+2)经过一个延迟模块的延迟后到达PN/2-2,k,在这里,它与

相乘,并将乘积项的结果累加到PN/2-1,k的输出TN/2-1(k)和TN/2-1(N-k)中,累加结果同样送寄存器锁存,并作为输出,设为TN/2-2(k)和TN/2-2(N-k)。
以此类推,经过N/2-1个周期后,在第k行N/2-1个PE中完成下式中 所有乘积项的运算和累加过程,从而求得T(k)和T(N-k)。
(1)后处理模块 后处理模块完成T(k)到y(k)的运算,T(k)通过常系数乘法器分别乘上对应的常系数,从而得到y(k)。图5所示为后处理模块的电路图。
整个结构主要部分是主处理模块,这一部分是一个二维脉动阵列结构,它又和预处理、后处理模块共同构成一个流水线结构。
从图3可以看到,脉动阵列十分规则,互连仅在相邻单元间发生,这样减少布线资源的同时,也减少了线上延时,所需的乘法器和加法器个数分别为(N/2-1)2和N(N-1)/2;从图4可以看到运算单元内部结构十分简单,运算单元的延时是整个结构中最长的,决定了整个结构的工作周期T,T=Tm+Ta,其中Tm和Ta分别指乘法器和加法器所需的运算时间,且Tm往往远大于Ta;由于并行运算,每个周期都可完成一次DCT运算,因此平均计算时间为τ=T=Tm+Ta;由于乘法器面积远大于加法器,我们以乘法器个数来衡量面积复杂度A,且A=(N/2-1)2;则面积-时间复杂度为 面积-时间积 若更重视时间复杂度,则为 面积-时间2积 与背景技术中的方法相比,本发明的装置要低的多,特别是Aτ2。
综上所述,本发明的离散余弦变换装置通过对N为偶数的DCT-II型进行公式变形,利用余弦函数的对称性,充分利用变换后算法中的相同乘积项和中间值,减少运算中的乘法器和加减法器。采用数据并行输入输出的方式,提高数据吞吐率,实现一个周期完成一次DCT运算;用二维脉动阵列结构实现算法,模块内部结构简单,高度流水线,工作周期短,从而有效的减小平均运算时间。整个结构实现了高并行度、低面积-时间复杂度,可以更好的满足实时性的应用需求。本发明可以应用于在图像信号处理、通信等领域中,尤其是JPEG、MPEG、H26x等国际公用的编码标准中。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种离散余弦变换的处理方法,用于处理N为偶数的离散余弦变换二型,其特征在于包括以下步骤
步骤一,将每个x(i)与前一项x(N-i)求和得到对应的中间值v(i),将x(0)、(-1)kx(N-1)、
三项求和得到对应的中间值y0(k),其中x(i),i=0,1,2,...,N-1是离散余弦变换的输入;
步骤二,基于乘积累加处理计算的结果值;
步骤三,将步骤二的结果值与相应的常系数
相乘作为离散余弦变换过程的输出值y(k),其中
2.如权利要求1所述的方法,其特征在于,所述步骤二之前还包括预先计算v(i)、v(N-i)的和与差的步骤。
3.如权利要求1所述的方法,其特征在于,所述的步骤一计算y0(k)的方法是,计算x(0)加上x(N-1)并加上中间值之一
的值,计算x(0)加上x(N-1)并减去中间值之一
的值,计算x(0)减去x(N-1)的值,将上述三值分别赋值给k/2为偶数,k/2为奇数,以及k为奇数三种情况所对应的y0(k)。
4.如权利要求1的方法,其特征在于,所述步骤二在计算T(k)和T(N-k)时共用乘积项其中
5.一种离散余弦变换的装置,用于处理序列长度N为偶数的离散余弦变换二型,其特征在于包括
预处理模块,用于将并行输入的N个数据{x(i),i=0,1,2,...,N-1}中的将每个x(i)与前一项x(N-i)求和得到对应的中间值v(i),将x(0)、(-1)kx(N-1)、
三项求和得到对应的中间值y0(k),并预先计算v(i)、v(N-i)的和与差,并将v(i)、v(N-i)之和、v(i)、v(N-i)之差以及y0(k)并行输出,其中k=0,1,2,...,N-1;
主处理模块,以预处理模块的输出作为输入,基于乘积累加的方法计算的结果值,并且并行输出结果T(k);
后处理模块,以主处理模块的输出作为输入,完成其与相应的常系数
的乘法操作,并行输出结果值,作为离散余弦变换装置的输出。
6.如权利要求5所述的装置,其特征在于,所述的主处理模块由两类单元构成延迟单元和运算单元P,延迟单元有一对输入(xin1,xin2)和一对输出(xout1,xout2),用于将输入分别延时一个时钟周期输出,运算单元有两对输入(xin1,xin2)与(yin1,yin2)和两对输出(xout1,xout2)与(yout1,yout2)。
7.如权利要求6所述的方法,其特征在于,所述两类单元以下述方式连接由运算单元P构成一个行X列为
的阵列,Pi,k(i表示列编号,取值为
k表示行编号,取值为
)的(xin1,xin2)、(xout1,xout2)、(yin1,yin2)、(yout1,yout2)分别和1的(xout1,xout2)、Pi,k+1的(xin1,xin2)、Pi+1,k的(yout1,yout2)、Pi-1,k的(yin1,yin2)相连接;
阵列边缘PN/2-1,k的(yin1,yin2)作为输入,分别输入为y0(k)和y0(N-k),但PN/2-1,0的(yin1,yin2)输入为y0(0)和y0(N/2);
阵列边缘P1,k的(yout1,yout2)作为输出,分别输出T(k)和T(N-k),但P1,0的(yout1,yout2)输入为T(0)和T(N/2);
v(i)、v(N-i)之和以及v(i)、v(N-i)之差两输入值通过N/2-i-1个延迟单元后,分别作为阵列边缘Pi,0的(xin1,xin2)的输入,两输入分别作为第一个延迟单元的(xin1,xin2),而最后一个延迟单元的(xout1,xout2)与Pi,0的(xin1,xin2)相连接,相邻两延迟单元的(xin1,xin2)和(xout1,xout2)对应相连接,i=N/2-1时无延迟单元,两个输入直接作为Pi,0的(xin1,xin2);
阵列边缘Pi,N/2-1的(xout1,xout2)不与任何电路相连。
8.如权利要求7所述的方法,其特征在于,所述的运算单元由一个乘法器、两个加法或减法器、两个寄存器构成,用于基于乘积累加的方法同时计算T(k)和T(N-k)(其中)或T(0)和T(N/2);所述的延迟单元,由寄存器构成,用于和运算模块中寄存器一起在时钟的作用下控制数据流动和协调运算。
9.如权利要求7或8所述的方法,其特征在于,所述的运算单元Pi,k根据i,k的不同有四种形式的结构
结构一,i、k均为偶数时,xin1在乘法器中与常系数
相乘,结果与yin1、yin2分别求和,并把结果分别作为两个寄存器的输入,而寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连;
结构二,i为奇数、k为偶数时,xin1在乘法器中与常系数
相乘,结果作为加数和减数分别与yin1、yin2相加和相减,并把结果分别作为两个寄存器的输入,寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连;
结构三,i为偶数、k为奇数时xin2在乘法器中与常系数
相乘,结果与yin1、yin2分别求和,并把结果分别作为两个寄存器的输入,而寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连;
结构四,i、k均为奇数时,xin2在乘法器中与常系数
相乘,结果作为加数和减数分别与yin1、yin2相加和相减,并把结果分别作为两个寄存器的输入,寄存器的输出为(yout1,yout2),并且(xin1,xin2)分别与(xout1,xout2)直接相连。
全文摘要
本发明公开了一种离散余弦变换的处理方法及其装置,该处理方法基于对离散余弦变换算法的公式变型,并提出一种与之对应的装置,该装置由三个模块——预处理模块、主处理模块、后处理模块构成的流水线结构。主处理单元是由延迟单元和运算单元组成的脉动阵列结构。通过算法的改进以及脉动阵列的思想,使得整个结构实现了较高的并行度及较低的面积-时间复杂度。本发明可以应用于在图像信号处理、通信等领域中,尤其是JPEG、MPEG、H26x等国际公用的编码标准中。
文档编号G06F17/14GK101634981SQ20091010206
公开日2010年1月27日 申请日期2009年8月25日 优先权日2009年8月25日
发明者赟 潘, 曹晓阳, 严晓浪 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1