早鸽—汇聚行业精英
  • 联系客服
  • 帮助中心
  • 投诉举报
  • 关注微信
400-006-1351
您的问题早鸽都有答案
3000+专业顾问
搜索
咨询

一维余弦变换的计算装置以及包括该计算装置的图象编码装置和解码装置制作方法

  • 专利名称
    一维余弦变换的计算装置以及包括该计算装置的图象编码装置和解码装置制作方法
  • 发明者
  • 公开日
  • 申请日期
  • 优先权日
  • 申请人
  • 文档编号
  • 关键字
  • 专利详情
  • 全文pdf
  • 权力要求
  • 说明书
  • 法律状态
专利名称:一维余弦变换的计算装置以及包括该计算装置的图象编码装置和解码装置的制作方法本发明涉及计算余弦变换的装置,特别涉及用以图象编码以减少表示图象信息的数量的装置,该信息减少能允许用具有有限信息率的装置发射或贮存图象。众所周知,把表示图象象素的亮度和色度值通过二维余弦变换,产生一个N×N值的矩阵,这称为直接余弦变换,它对应于表示被编码图象的N×N象素区域块的N×N矩阵。这种图象通常被分成许多矩形部分,每个部分由一个N×N象素区域块所构成。变换值的加权减少了表示图象的信息的数量。解码包括运用反加权,这样导致N×N矩阵的反余弦变换使对应于直接变换的N×N矩阵逆变换,就象编码一样,能码是通过N×N图象象素区域来完成的。假如表示一个区域象素的值是f(i,j),i=0到N-1,i=0,N-1,则二维直接余弦变换的值由下式表示U=0到N-1V=0到N-1F (u ,v ) = 4c (u ) · c(v)N2·Σi = 0N - 1Σj = 0N - 1f (i , j ) · ai u· aj v(1)]]>其中c(u)=12,]]>当U=0时;而c(v)=12,]]>当v=0时,并且c(u)=1,当u=1,而c(v)=1,当v=1,2……N-1且aiu=cos ((2i+1).u.π)/(2N) and aj,v=cos ((2j+1).v.π)/(2N)逆变换后的值通过运用下列公式经二维反余弦变换给出f (i , j ) =Σu = 0N - 1Σv = 0N - 1c (u ) · c (v ) F · (u ,v) ·ai u· aj v(2)]]>该二维余弦变换可分成二个一维余弦变换,并且该二维变换可用二个串接在一起的一维变换计算装置来计算。一维余弦变换根据下列公式进行当k=0,1,2,…,N-1F (k ) =2Nc(k ) ·Σi = 0N - 1ai k· f (i ) (3)]]>其中 c(k)=12,]]>当k=0时,c(k)=1,当k=1,2,…,N-1时,并且aik=cos ((2i+1).k.π)/(2N)一维反应余弦变换由下式完成当i=0到N-1,f (i ) =Σk = 0N - 1bi k· F (k ) (4)]]>其中bik=c(k).cos ((2i+1).k.π)/(2N) =c(k).aik经余弦变换后加权的图象编码,大大减少了所发送的信息数量,但是有一个缺点,即需非常大量的计算。如此的计算数量需花费设备和计算时间。它使得利用余弦变换在通常频率即欧洲标准每秒50帧的一系列视频图象的编码和解码非常困难。利用相对减少数目的基本乘法和加法来完成余弦变换的高速算法已为公知,特别是由德亚(R·A·Duryea)在题为“图象传输系统的源/通道编码的效应”一文中描述的陈等人的算法(chen et al),该文登于AFIT/GE/EE/79 D-12上,即俄亥俄洲空军技术学院,1979年12月。它是利用系数aik间的数学关系由上式(3)导出的。用该算法,表示16个象素数值的一维余弦变换可由44次乘法和74次加法来完成。它被用于一维余弦变换计算装置中,但是该算法有一缺点即具有实现该运算的装置的复杂性而导致的不规则结构。因此,本发明的目的,是提供一种耗费低的,计算一维直接余弦变换和计算一维反余弦变换的装置,该装置具有较之于使用陈等人提出的算法,用来变换16值系列的装置,具有较简单的结构。本发明的目的还在于提供用于对符合通常电视标准的视频图象进行实时二维余弦变换的编码和解码装置。本发明特别提供了一种计算一维直接余弦变换的装置,以及用以计算一维反余弦变换的装置,它从已知的由比洋·杰·李(Beyeong Gi Lee)提出的“一种计算离散余弦变换的新算法”中导出二个算法。李的该文刊登于1 EEE杂志“音响,话音和信号处理”中,第ASSP-32卷n·6,第1243~1245页,1984年12月。比洋·(Beyeong Lee)的这些算法被改进,这样它们可用于由少量的ROM和少量的容易得到的集成电路构成的基本计算装置所构成的变换计算装置,并能在与惯用电视标准的象素分析的频率相同的情况下工作。本发明还提供了一种借助包括两个一维余弦变换计算装置的二维余弦变换对图象编码和解码的装置。
根据本发明变换16值系列的一维直接余弦变换计算装置包括一个用以存贮被变换的16值系列的输入存储装置;
计算式A+B和(A-B)×D二值的第一级计算装置,其中A和B是分别施加于二个输入端的二个运算量,D是预先确定的正系数;
耦合到第一计算装置的用以向其传输预先算好的运算值的第一中间量贮存装置;
用以计算式E+G的值的第二计算装置,其中E和G是两个连续作用到所述第二计算装置输入端的运算量;
耦合到第二计算装置的用以向其传输预先算好的运算值的第二中间量贮存装置;并耦合到变换计算装置的输出端,以传输其变换后的一个16值系列;
控制输入存储器,第一和第二中间值存贮装置,第一和第二计算装置的控制装置,该控制装置通过一具有二倍于被变换值频率的并且具有一对应于被变换的16值系列的周期的控制信号,并通过一具有二倍于被变换值频率的时钟信号装置来实现。
根据本发明的用以计算一维反余弦变换,变换经直接变换后的16值系列的装置,包括提供一值如E+G的计算装置,其中E和G是两个连续加到所述第一计算装置输入端的运算量;
耦合到第一计算装置的输入端及输出端的用以传输其预先计算好的运算值的第一中间值贮存装置,并且耦合到输入端以接收被变换值;
计算如式A+D·B和A-D·B二值的第二计算装置,其中A和B是两个分别加到该第二计算装置输入端的运算量,且D是预定系数;
耦合到用于传送其运算量的第二计算装置的用于贮存中间值的贮存装置,其运算数值预先被算好,并且耦合到反变换计算装置的输出端以传送给该输出端以一个个16反变换值系列;
用于控制第一和第二中间值贮存装置以及第一和第二计算装置的控制装置,它利用二倍于被变换值的频率以及具有对应于被变换的16值系列周期的控制信号,并且借助于具有二倍于被变换值的频率的时钟信号装置。
图1 是说明根据比洋·杰·李(Beyeong Gi Lee)的算法,计算16值系列的一维直接余弦变换的示意图;
图2 和图3是说明由图1抽出的基本运算示意图;
图4 是说明根据修改后的比洋·杰·李(Beyeong Gi Lee)的算法,计算16值系列的一维直接余弦变换的示意图;
图5 是说明根据本发明的用于16值区域块的一维直接余弦变换计算装置的一个构成例子的方框图;
图6 是说明该实施例的一部分的工作情况的示意图;
图7 是该实施例的较详细的方框图;
图8、图9和图10是说明该实施例的某些部分的较详细的框图;
图11是说明本发明的包括二个一维余弦变换计算装置的图象编码装置的一个实施例的方框图;
图12是说明该图象编码装置的变形的一个实施例的方框图;
图13和图14是说明根据本发明的用于16个值的区域块的一维直接余弦变换计算装置的两个变形的实施例的方框图;
图15是根据比洋·杰·李(Beyeong Gi Lee)的算法的计算16值系列的一维反接余弦变换计算框图;
图16是根据比洋·杰·李(Beyeong Gi Lee)的改进算法的计算16值系列的一维反余弦变换的示意图;
图17是由图15所示得出的基本运算示意图;
图18是根据本发明的用于16值区域块的一维反余弦变换计算装置的一个实施例的方框图;
图19到图21详细说明本实施例的某些部分方框图的详细示意图;
图22是本发明包括二个一维余弦变换计算装置的图象编码装置的一个实施例的方框图;
图1 是根据比洋·杰·李(Beyeong Gi Lee)的算法的所有运算执行的时间分布图。这些运算得出16个值F′(0),F′(1),…,F′,(15),这些值在一系数范围内等于由f(0),f(15),f(7),f(8),f(3),f(12),f(4),f(11),f(1),f(14),(6),f(9),f(2),f(13),f(5),f(10)经变换后的16个值F(0),F(1),…,F(15),该计算图使用了公式(3)但不考虑系数2·c(k),因此令F′(k)= (N)/(2.c(k)) ×F(k)以后将更清楚,即如果这些常系数在计算过程中不用而在变换计算的末端用的话,二维变换的编码装置的结构将更为简单。
系数 (N)/(2.c(k)) 是常数,在其后的计算步骤中将被考虑进去。下面,我们将把应用了该运算图而提供的值F′(0),…,F′(15)称为变换(后的)值,尽管它们与由公式(3)给出的理论值F(0),…,F(15)不同。
该运算图包括二个时间轴;一个从左到右的水平轴和一个由上到下的垂直轴,它们限定了运算的顺序,该16个被变换的值f(0),f(15),…f(10),是连续可得的。如果,举例而言,它们代表了16个象素线性区域块的亮度,它们在这些象素的采样速度下得到。在采样过程中,这些值的如下顺序获得f(0),f(1),…,f(15),接着它们被排成如此序列f(0),f(15),f(7),…,f(10),以使能应用算法。每个被变换值,每个中间值和每个变换值都由一点来表示。获得中间值和变换后值的运算由连续或间断线所表示。两条连续线的会聚表征了一次加法。一条连续线和一条间断线的会聚表征了一次减法,其上有数值的水平线表示了用该数值的一次乘法,没有数值表示以系数1传送。
图2和图3是由图1所导出的,给出了由图1所表征的运算实例。图2说明由对应于被变换的f(0)值的第一根计算线所导出的以及由对应于被变换的f(15)值的第九根计算线的一个抽出分支的示意图。在对应于f(0)的线上,第一中间值等于f(0)和f(15)的和,因为表征该第一中间值的点由一代表被变换值f(0)的实线和由一代表f(15)的值的实线所连接。第二中间值同样也等于f(0)+f(15),因为它是由其上没有标值的实线连到第一中间值上的。
在对应于f(15)的计算线上,第一中间值等于f(0)-f(15),因为表征它的该点由一虚线连到表示被变换的f(15)值的点上,并由一实线连到表示被变换的f(0)值上。在对应于f(15)线上的第二中间变量值等于(f(0)-f(15))× 1/(2C1) ,因为它是通过一其上标有值 1/(2C1) 的实线连到对应于f(15)线上的表示第二中间值的点上。
图3是说明由图1分出的对应于产生变换后值F′(4)和F′(12)的计算线的一部分示意图。在图中只示出这些线的最后三个中间值。计算被认为分别来自第一中间值g1和第一中间值g2。在对应于F′(4)的线上,第二中间值等于g1+g2,因为它是通过实线连到中间值g1和g2上的。第三中间值和变换后的值F′(4)等于g1+g2,因为计算被简化为第二中间值的不延时传输。在对应于F′(12)的线上,第二中间值、第三中间值和变换后的值F′(12)等于g2,因为计算被简化为不延时传输。
如图1所示的整个计算可由32次乘法和81次加法完成。在图1所示的运算图中,值的各列区分了运算的各列。对该图的观察表明在一列中的一系列运算是与其它列不同的。因此,该算法的使用要求在每个运算列中的不同运算顺序,它使附加装置的结构复杂化。
为了使附加装置的结构简单化,对比洋·杰·李(Beyeong Gi Lee)的算法的修改如图4所示,被变换值的次序被改成f(0),f(15),f(7),f(8),f(3),f(12),f(4),f(11),f(1),f(14),f(6),f(9),f(2),f(13),f(5),f(10),代表中间值的点的连线被置换成与被变换值一致。表示被变换值、中间值和变换值的点间的连接在上述置换过程中保持不变,仿佛这些连接的线条是一些橡皮筋。
因此,所获得的变换后的值相应变成F′(0),F′(1),F′(2),F′(3),…,F′(15)。应该注意到,被变换值不再以标号的上升次序排列,正相反,现在是变换后的值以标号的上升次序排列。该种修改的运算图最显著的优点是它包括了四个相同运算列,第一列,第二列,第三列和第四列。此外,其中每个运算列由图2所示的8个运算构成。这8个运算的每一个允许得到一个值形如A+B和一个值形如(A-B)×D,所述值来自第一运算值A,第二运算值B和第三个预先固定的运算值D。
该修改的运算图的重复性很强的结构在于,通过用一个具有分别接收A和B值的第一和第二运算量输入端,接收值D的第三运算量输入端和分别产生二个值A+B和(A-B)×D的输出端的计算装置;可得到对应于四个相同运算列第一列到第四列的64个中间值,如果该计算装置能以二倍于被变换值的运算速度传送一对对值,则用一个计算装置,能在对应于被变换的16个值的时间内获得64个中间值。结果是能有一结构非常简单的变换计算装置。
位于图4的计算图示右部的三个运算列包括17次加法运算。由第一级四个运算列所提供的一些值被无修改地传送,并通过延时形成变换后的值。这是变换后的值F′(0),F′(2),F′(12),F′(14),F′(15),的情况。
另外,应该注意到。在最后三个运算列中的几次加法产生的其它变换值应被认为是来自连加法,这就是说,计算此一个变换值的运算图包括一水平线,说明以前在同一根线上所获得的中间值的传送,同时还包括一表示在另外线上得到的另一中间值的加法的斜线。
例如,变换值F′(3)是由一图示中的第四根线上计算出的中间值而得到的,所述该线对应于F′(3),它首先加上对应于F′(7)上所计算得的中间值,接着再加上对应于变换后的值F′(5)线上所得的中间值。通过这些连加法运算,可得到一中间值或变换值,它的获得只要提供给每个加法器一个运算量,连加过程一旦被预置,该方式较之于给一个加法器提供二个运算量来说更为快速和简单。例如,为了执行如G+H+I+J的连加,第一次加法G+H为了连续装载值G和H,需有二个计算周期,但是其后所有加法只需一个简单计算周期来装载一新的运算量。
该运算图结构的第二个特征同样也使实现该算法的装置简化,如果计算装置执行连加的运算速度二倍于被变换值得到的速度,它可在对应于16个被变换值的时间内,容易地完成如图所示的17次加法并输出变换值。如此的执行连加计算的装置是令人满意的。
除了上述执行如图2所示形式运算的计算装置和计算连加运算的装置外,必须提供用以贮存中间值的存储单元,这些中间值是由计算装置以及加到这些计算装置的运算量所交替产生的。
图5是本发明的一维直接余弦变换计算装置的一个实施例的方框图。它包括;用以接受代表16个象素的线性区域块或者由另一个一维直接余弦变换计算装置产生的16个一维直接余弦变换值的16个数值的系列输入端1,本发明的两个装置被串联在一起以形成一个二维直接余弦变换计算装置;输入端2接收同步信号;输入存储器3;控制装置5;第一和第二中间值存贮装置4和8;第一和第二计算装置6和7,序列变换装置9;根据图14的运算图的计算产生16个变换值的序列的输出端11;以及产生同步信号的输出端13。
输入存贮器3有一连到输入端1的数据输入端以接受被变换的16位二进制形式的每个值,并具有分别连到计算装置6的第一和第二运算量输入端的二个输出端,分别产生二个16位二进制信号。用以存贮中间值的装置4具有平行地连到输入存贮器3的输出端和计算装置6的第一和第二运算量输入端的第一和第二输出端。装置4和存贮器3的输出可有三种状态,其中包括为防止在两输出间相抵触的高阻态。
计算装置6具有一连接到装置4的第一数据输入端的以及连到装置8的第一数据输入端的第一输出端,产生一16位二进制信号。该计算装置同样具有一连接到装置4的第二数据输入端的及连到装置8的第二数据输入端的第二输出端,该输出端产生一个16位二进制信号。装置8包括连到第二计算装置7的输出端的用以接收16位二进制信号的第三数据输入端;连到计算装置7的运算量输入端的以产生一个16位二进制信号的第一输出端,以及连到变序装置9的输入端的用以产生一个16位二进制信号的第二输出端。装置9具有一连到所示例子的输出端11的输出端,以提供一个形成变换值的16位二进制信号。
控制装置5连到输入端的接收同步信号。在该例子中,通过二维余弦变换,用该装置企图形成编码装置的一部分,同步信号对应于被变换的16个值的16个系列,也就是一个16×16个象素的区域块。装置5具有一连接到输出端13的用以产生对应于由输出端11提供的16个变换值的16个系列的同步信号的输出端。该同步信号允许一第二个一维直接余弦变换计算装置或其它变换值编码和传输装置同步工作。
控制装置5同样也有其它输出端,由接点连接到计算装置6和7的,中间值贮存装置4和8的,输入存贮器3的,以及变序装置9的输入控制端,图中没有画出。它们产生一个频率为二倍于加到输入端1的被变换值频率的时钟信号,它们还产生一个根据周期等于13个时钟周期的并对应于16个被变换值的控制信号,以控制计算装置6和7,存贮装置4和8,以及输入存贮器3;同时它们还产生一个用来控制装置9的控制信号,它的周期是512个时钟周期,对应于16×16个被变换的值。
输入存贮器3的目的是逐个存贮被变换的值,并且两两恢复它们以形成用于第一计算装置6的为完成如图4的运算图的第一列所示的二个运算量。被变换的值以如图4所示的次序施加f(0),f(15),f(7),f(8),…,f(10),而并不是以分析对应的象素次序排列。取样和数字化装置以及使值f(0),f(1),…f(15)变序的装置没有示出。它们可由惯用的:
达到。
装置4的目的是两两存贮由计算装置6的输出端提供的中间值,接着把它们传输到计算装置6的二个运算量输入端,以完成如图4所述的第2列第3列,第4列的运算。当两值A和B分别加到其运算输入端时,计算装置在两输出端分别产生形如A+B和(A-B)×D的输出值。第三运算值D是由装置5提供的控制信号所选择的常数。
装置8的目的是存贮一对由计算装置6的二个输出端提供的中间值,接着把它们分别提供到计算装置7的输入端或者到变序装置9的输入端。装置8也存贮由计算装置7所提供的加到装置8的第三数据输入端的中间值。
变序装置9完成由中间存贮装置8的第二输出端所提供的变换值的顺序变换。顺序的变换是根据以后所要用的变换值的顺序。装置9存贮16个变换值的16个逐行计算系列,如下表所示columnn°0 1 2 … j … 15linen°0 F′0(0), F′0(1), F′0(2), … … … F′0(15)1 F′1(0), … … F′1(15)2 F′2(0), … F′2(15)3 F′3(0), … F′3(15)
… … …i … … … … F′1(j) … …
如果变换值被加到第二个一维直接余弦变换计算装置上,为了获得二维直接余弦变换,变序有二个目的逐列从该表中读出值根据第二计算装置所需的顺序读出每列的值,这就是说,按图4的运算图所说明的被变换值的顺序F′0(0),F′15(0),F′7(0),F′8(0),…,F′10(0),变成,F′0(1),F′15(1),…,F′10(1),接着再成,F′0(2),…等等。第二变换计算装置具有一与输入存贮器3同样的存贮器。
在本实施例所形成的第二个一维余弦变换计算装置的情况下,其输出端11产生为适应以后处理所需顺序的变换值F′(u,v),一般来说是为减少代表图象信息的数量。该种合适的顺序一般由图6所示的顺序,被称为是Z字形顺序。该种顺序对应于变换值随递增的u和v值的分级,该种分级统计上对应于变换值的绝对值的递减。
值的格式的选择对于形成本发明的装置十分重要。计算装置6和8对具有预定格式的值运算13位用于整个部分而3位用于十进制部分。该格式由计算每个图4中遇到的中间值的强函数以及每个变换值的强函数来决定,它们都是被变换值强函数的函数。当后者由亮度信号构成时,它们被编成8位码包含了0到+255。中间值和变换值是+4080到-2778的强函数,为防止该格式的任何溢出,这些强函数值为表示整数部分而倾向于选择13位,包括一位专用于符号的位。因为在另一方面,目前商业上适用的乘法电路能处理16位值,因而选择了三位格式作为十进制小数部分。
二维余弦变换计算装置包括二个相串联的一维变换的计算装置。第一装置接收被变换的值,这些值用8位二进制数表示了0到+225间的亮度值。为了防止在运算过程中的任何溢出,在为整个加到输入端1的值所保留的13位中,这8位数占据了8个最小有效位。
第二个装置,除了变序装置9的运算之外,是与第一个相同的,它接收由第一装置的输出端11提供由一维余弦变换F′(u)形成的被变换值,u从1到15,这些值F′(u)具有预定形式,包括整个部分的13位码,包括符号位和三位表示十进制部分的码。F′(0)是从0到+4080而F′(u),从u=1到15是介于-1442和+1442之间,不考虑系数 2/(N) c(k)。
在确定第一个一维变换计算装置完整值的格式时,这些值并不在0,+255的范围内。把这些值引入该范围可通过除以16来实现。值F′(u)被16除以后在范围0,+255间,值F′(u),u=1到15,是介于-127和+127间,它是与该形式等效的,8位码在两种情况下都是有效的。由第一装置提供的值被引入0,+255或者-127,+127的范围内,以防止变换值或中间值的溢出,它通过向右移4位的方法来实现。十进制小数点位于三位十进制部分的前面。
此外,上述第一个一维余弦变换计算装置的被变换值的定义格式不包括十进制部分,换句话说十进制小数点设置在最小有效位的右边。当包括3个十进制值位的值F′(u)加到该输入端时,事情的发生就象其十进制小数点右移三位一样,换句话说,就象值被乘以8。
考虑二个值得注意的方面,二个一维变换计算装置间的格式的变化,导致传输值被除以2。被2除的这个除法在系数 (2.c(k))/(N) 被考虑进去的同时由归一化运算补偿。归一化运算在第二个一维直接变换后执行。
这样,在二个一维变换计算装置,计算由同样的定点格式进行。这些计算相对于移动十进制小数点的浮点计算来说,计算结果的精度降低。但是它们能用更简单、更快速、成本低以及容易集成的电路实现。
图7是如图5所示实施例的更详细的方框示意图。控制装置5由22.5MHZ的时钟25和定序器26构成。在该例子中,图象被以13.5MHZ以频率取样,而表征图象象素的值以11.25MHZ的频率传送到变换计算装置中,以适应图象扫描线恢复的抑制时间。时钟25的频率二倍于加到输入端1的被变换值的频率。时钟25的输出连到定序器26的一个输入端。定序器26以32倍于时钟25周期的周期产生加到整个变换计算装置的控制信号。它被加到输入端2的同步信号所同步表明被变换的16个值的16个序列的每个区域块的开始。定序器26的输出传送给输出端13一个同步信号,它可用于控制第二个一维直接余弦变换计算装置同步。定序器26的多个输出形成变换计算装置所需的同步信号。
输入存贮器3由一具有16位容量的寄存器23和其数据输入口连接到寄存器23的输出口的读写存贮器(RAM)24构成。其第一和第二个数据输出口形成了装置3的二个输出口,连接到控制装置5的多个输出端的双地址口允许存储器数据经过被分别选择的二个输出口输出。连接到控制装置5的多输出端的控制输入端可控制存储器读或写的操作。寄存器23具有一连到控制装置5多输出端的接收具有等于两个时钟周期的控制信号的时钟输入端。
存贮器24由四个AMD公司生产的集成电路构成。它允许同时读出分别由二个地址口选择的二个数据,或者同时读出或写入分别由二个地址口选择的地址的内容,或者读出二个分别由双地址口选择的二个地址的内容并同时在由一个地址口选择的地址中写入。这种形式的存贮器允许在同一个地址上同时写入或读出。它允许加到输入端1的被变换值的连续流被同时贮存和还原。在32个时钟周期内,存贮器24存贮16个被变换值,其速度与输入端1的输入速度一致,并在8个时钟期内,在三个输出口的每一个上重存8个值。
这8对值在8个第一时钟周期内,被计算装置6用以计算16个第一级中间值,接着在以后的24个时钟周期内,装置6接收由中间值存贮装置4的二个输出口提供的中间值。在起动的8个时钟周期内,在32个时钟周期的每个周期内,存贮器24同时运行读出和写入。在两个相连的时钟周期内,在这个8个第一周期中,写入操作和读出操作是在一个时钟周期内在第一个地址处完成的,接着在下一个周期内,读出操作在第二个地址处进行。在存贮器24内读出值的顺序是由算法固定的,即f(0),f(15),f(7),f(8),f(13),…,f(10),正如图4所示。因为写入必须在与读出相同的地址,而只是一半的速率,所以被变换的值必须以下述顺序加到输入端1f(0),(7),f(3),f(4),f(1),f(6),f(2),f(5),接着f(15),f(8),f(12),f(11),f(14),f(5),f(13),f(10)。
中间值存贮装置4由二个不同的存贮器21和22构成,该两存贮器21和22分别独立地存贮着加到计算装置6的第一和第二运算输入口的第一和第二运算量,存贮器21和22中的每一人由4个集成电路AM29707构成并能存贮16位的字。这些存贮电路的每一个都有一个数据输入口的及一个数据输出口。存贮器21和22的数据输入口形成装置4的二个数据输入口,其输出口形成装置4的二个数据输出口。存贮器21的地址口和存贮器22的地址口平行连到控制装置5的多输出端。存贮器21和22的读写控制输入也连到控制装置5的多输出端。
装置4由二个不同的存贮器21和22构成,因为它们必须同时存贮两个由计算装置6同时产生的值并给计算装置6同时提供二个运算值。它同样也可以用一个具有二输入端和二输出端的存贮器,但是在目前的技术条件下,这样的存贮器不具有足够的速度。
计算装置6包括一个计算电路28和二个具有二个输入和一个输出的多路转换器34和35,计算电路28具有二个输入端口30和31以形成装置6的第一和第二运算值输入。还有一个连到控制装置5多输出端的控制输入端29以及二个输出端口32和33。输出端32连到多路器34的第一输入端和多路器35的第一输入端。输出端33连到多路器34的第二输入端和多路器35的第二输入端。多路器34的输出和多路器35的输出分别构成装置6的第一和第二输出信号。多路器34和35分别具有并行连接在控制装置5的多输出端的二个控制输入。
计算电路在其输出端32和33分别产生如(A+B)的第一结果和如(A-B)×D的第二结果。当第一运算量A和第二运算量B被分别加到输入端30和输入端31时,在计算的休止时间内,由32端产生的结果在被装置4贮存以后用作为第一运算量或者加到输入端30或者在装置4存贮以后作为第二运算量加到输入端31。在图4中可以看出,运算图的第一列中的起始8条线上的中间值是A+B形式,而在最后8条线上的中间值是(A-B)×D形式的。
二个中间值中的一个和另一个分别形成计算电路28的第一和第二运算量。因此,形如A+B的作为第一运算量的结果必须交替存贮在存贮器21中,而作为第二运算量的则交替存贮在存贮器22中。同样地,为了式如(A-B)×D的结果,控制装置5控制多路器34和35以使由计算电路28提供的结果交替循环到存贮器21和22中。应该注意的是,如果装置4由二输入口二输出口的一个存贮器构成的话,则多路器34和35是不需要的。
同样也应注意到,在如图4所示的对应于修改的Beyeong Gi Lee的算法的运算图中,从上到下的一系列中间值是A、B形式交替的。装置4中的16个运算量的读出在8个时钟周期内被全部展开,另一方面,由运算电路28完成的每次运算产生的两个结果,将同时是未来的A形运算量或者同时是一未来的B形运算量。为了防止在存贮器21中同时写入二个A形结果以及在存贮器22中同样地写入二个B形结果,计算电路28把由其输出端32传送的A+B形信号延退一个周期以依次完成由计算电路28的每次运算产生的同样形式的两个结果的写操作。
计算装置8包括四个多路器36和39,每个等价于一个具有一个电路和两个设置位置的开关;二个具有双地址口的RAM40和41。多路器36的第一输入和多路器37的第一输入分别构成计算装置8的第一和第二输入端口。多路器36的第二输入和多路器37的第二输入被连接在一起以构成计算装置8的第三输入端口。多路器36的输出和多路器37的输出被分别连到存贮器40的数据输入以及存贮器41的数据输入。存贮器40的输出连到多路器38的第一输入端和多路器39的第一输入端。存贮器41的输出连到多路器38的第二输入端和多路器39的第二输入端。多路器38的输出和多路器39的输出分别构成了计算装置8的第一和第二输出。
多路器36到39中的每个都具有一个连接到控制装置5的一个输出的控制输入端。存贮器40到41的每个具有连到控制装置5输出端的二个地址端和一个读写输入控制端。每个存贮器都由四个AM29707型集成电路构成,它允许存贮16位的16个字。二个存贮器40和41的存在允许同时由计算装置6的二个输出所提供的二个值同时被存贮。这样在8个时钟周期内可以存贮16个值。存贮装置8的二个输出允许一个值加到计算装置7,同时一个值加到变序装置9。这样装置9可以接收16个变换值而计算装置7可同时接收16个中间值这对于在32个时钟周期内完成17个加法运算是必须的。在存贮装置8的输入端接收数值和把数值馈送到存贮装置8的输出端的程序是通过在32个时钟周期内控制装置5产生控制信号列来实现的。
变序装置9由二个能存贮16位值的寄存器43和46以及二个RAM44和45构成。寄存器43和46分别构成连到装置9的数据输入端和输出端11的输入缓冲器和输出缓冲器。寄存器43的输出连到存贮器44的数据输入端和存贮器45的数据输入端。寄存器45的一个输入端连到存贮器44的输出端和存贮器45的输出端。存贮器44和存贮器45中的每个都具有分别连到控制装置5的多输出端的地址输入和读写控制输入的图中没有表示的连线。存贮器44和45中的每个由Cypress公司生产的具有256×4位容量的4块集成电路Cy 7 C122构成。
当变换值稳定时,它们被存贮在装置9中,然后由装置9变序后重新存储。控制装置5分别给存贮器44和45的地址输入端提供对应于二种次序的二个地址值序列信号。它们在对应于16×16值的周期内交替地给一个存贮器44或者45提供一个写入控制信号并给另一个存贮器提供读出控制信号。应该注意到,变换值以它们合适的频率写入,这就是说在等于时钟频率的频率下进行,但它们又在等于被加到输入端1上的被变换值的频率下被重存,这个频率则是用于计算的时钟频率的一半。
图8是说明计算电路28的一个实施例的方框示意图。该计算电路包括8个能存贮16位字的寄存器50,51,54,55,57,59,60,62;一个加法器52;一个减法器53;一桶形(移位)寄存器58;一个120M56;一个乘法器61。输入端30和31分别连到寄存器50的输入端和寄存器51的输入端,以提供给它形成第一位运算量A的第一个16位字和形成第二运算量B的第二个16位字。寄存器50的输出端连到加法器52的第一输入和减法器53的第一输入。寄存器51的输出连到加法器52的第二输入端和减法器53的第二输入端。加法器52的输出连到寄存器54的输入。寄存器54的输出连到寄存器57的输入。寄存器57的输出连到输出端32以产生代表结果A+B的16位二字信号。
减法器53的输出端连到寄存器55的输入端。寄存器55的输出连到桶形寄存器58的数据输入端。桶形寄存器58允许16位字根据由加到控制输入端的二进位字决定的位数移位。该二进位字包括二位并且它是由ROM56的第一输出端所提供的。桶形寄存器58的一个输出连到寄存器59的输入端。寄存器59的一个输出端连到乘法器61的第一输入端。Ro M56具有一连到寄存器60输入端以提供给它16位字D1的第二输出端,同时还具有一连接到输入端29以接收为该ROM56形成地址的5位二进位字的控制输入端。寄存器60的一个输出端连到乘法器61的第二输入端。乘法器61的一个输出连到寄存器62的一个输入端。寄存器62的输出端连到输出端33以提供给它一个代表结果(A-B)×D的16位二进制数。计算电路28的每个寄存器具有一时钟输入端。在图中没有画出,用以接收由控制装置产生的时钟信号。
乘以预定值D的运算,一方面,借助产生移位0,或1,或2,或3,位的桶形寄存器58的装置来实现,另一方面,通过乘法器61来实现。ROM56一方面产生表明由桶形寄存器58执行的位移值的2位二进制字D2,另一方面产生加到乘法器61的第二输入端的形成运算量的16位二进制字D1,D值是,2D2×D;
在图4所示的计算过程中,必需由下列系数完成乘法1/(2C1) =0.50220 1/(2C9) =0.788091/(2C2) =0.50977 1/(2C10) =0.899901/(2C3) =0.52246 1/(2C11) =1.060551/(2C4) =0.54102 1/(2C12) =1.306401/(2C5) =0.56689 1/(2C13) =1.722411/(2C6) =0.60132 1/(2C14) =2.562741/(2C7) =0.64673 1/(2C15) =5.101071/(2C8) =0.70703明显地,系数 1/(2C1) 到 1/(2C10) 是介于0.5到1之间的。用0位代表整数部分而用16位代表小数部分可以允许在变换计算装置中为所有计算保持同一形式。事实上,在由整数部分的13位和小数部分的3位所表示的值相乘以后,其结果是一个包括整数部分的13位和小数部分的16位的形式,在留下16个最高有效位,把其他舍并之后给出了代表整数部分的13位和代表小数部分的3位的格式。在整个计算中保持代表整数部分的13位形式和代表小数部分的3位形式可以简化加法器和减法器的操作。
另一方面,系数 1/(2C11) 到 1/(2C15) 是大于1的。这导致了一个问题,即由代表整数部分的3位部分和代表小数部分的13位部分的格式所表示的值的系数的乘法将导致代表整数部分的16位形式和代表小数部分的16位形式的产生。该结果在对最高有限的16位进行截位后具有一代表整数部分的16位和代表小数部分的0位的格式。这样,随着这样的乘法运算,可能会失去代表整数部分的13位和小数部分的3位的格式,从表征整数部分的13位和代表小数部分的3位格式到表示整数部分16位和代表小数部分的0位格式将引起被选择的以代表在整个计算中所需数值强函数的代表整数部分的13位和小数部分的3位格式的精度损失,和代表整数值的16位形式的过剩。
下面来考虑这个问题,对系数 1/(2C11) 到 1/(2C15) 执行乘法,一方面,应将被乘数左移1位,2位或3位,即把该值乘以2,4或8;另一方面,应将系数 1/(2C11) … 1/(2C15) 预先除以2或4或8,再将所得的数与上值相乘。
以系数 1/(2C11) 或 1/(2C12) 或 1/(2C13) 为乘数的乘法,应执行的被乘数的移位是左移1位,而加到乘法器61第二输入端的系数值则是
1/2 × 1/(2C11) 或 1/2 × 1/(2C12) 或 1/2 × 1/(2C13) 。
与系数 1/(2C14) 相乘的乘法,由桶形寄存器58完成左移二位,并由乘法器61完成 1/4 × 1/(2C14) 的乘法。
与系数 1/(2C15) 的乘法,由桶形寄存器58完成左移3位并由乘法器61完成 1/8 × 1/(2C15) 的乘法。存贮器56存贮15个18位字,每个字包括控制位移的二位,可能是0,以及加到乘法器61第二输入端的系数值的16位码表示。
应该注意到在输入端30和输出端32间,数值经过了寄存器50,54,57,而在输入端31和输出端33间的数值通过四个寄存器51,55,59,62。因此形如(A-B)×D的结果被相对于形式A+B的结果延时一个时钟周期,这样这二个结果可连续的而不是同时地存贮在第一运算量存贮器21中或者第二运算量存贮器22中。
图9是说明计算装置的一个实施例的方框图。它包括具有16位字容量的二个寄存器67和68,以及一个加法器69。寄存器67的数据输入端连到输入端41以接收一个16位字。寄存器67的输出端连到寄存器68的数据输入端并连到加法器69的第一输入端。寄存器68的输出端连到加法器69的第二输入端。每个寄存器67和68具有一个连到输入端42的时钟输入端以接收由控制装置5产生的时钟信号。加法器69有一输出端连到输出端43以产生16位字输出。寄存器67和68串联在一起以同时提供给加法器69二个连续加到输入端41的值。例如,式E+G的和的计算,是通过在二个连续的时钟信号周期内。连续把E和G加到输入端41来的。为计算式(E++G)+H的和,必须在三个连续的时钟周期内,连续把E,再G,然后H提供到输入端41上。
在本实施例中,乘法器61是由AMD公司一个集成电路AM29517A构成的,每个加法器52和69是由AMD公司的集成电路74F374,74F381和74F182构成的减法器53也由同样的集成电路构成。
图10是更详细说明控制5的方框图,它们包括上面已经说明的时钟,从0计数线31的二进位计数器250,从0计到511的二进位计数器251,ROM252,ROM253,以及解码器254,计数器250和251具有一时钟输入端连到时钟25的输出以及一连到输端2的置0输入端以接收对应于被变换的16个值的16个序列的同步信号,计数器251具有输出端连到ROM253的地址输入端以及解码器254输入端,该输出端提供一个计数结果的9位字,解码器254的输出当计数器251计数到64个时钟周期时提供一个对应于16×16被变换值的区域块开始的同步信号。该输出端连到输出端13。计数器251的输出端连到输出端13,计数器250的输出端连到ROM252的输入端以提供给它一个5位字,ROM252的输出端提供给存贮器24,21,22,37,56地址信号和读写控制信号,并给多路器34,35,36控制信号。ROM253具有输出端,它们给存贮器44和45提供地址和读写控制信号。
图11是根据本发明的图象编码装置的一个实施例的方框图,该装置包括根据上述描述串联构成的二个一维直接余弦变换计算装置73和74,如图11所示的图象编码装置具有一输入端71以接收表示象素亮度值的数字值F(i,j)系列,这些数值被加到装置72的输入端以把一幅图象分解成对应于由16×16个亮度值组成的区域块的16×16个象素的区域块,装置72产生由16个值的16个系列组成的每个区域块,每个系列对应于一行的图象,并给变换计算装置73提供一个区块的同步信号。图象编码装置也包括一归一化装置75,一个变换编码装置76和输出变换值序列的输出端77,变换值被编码以减少信息量。
输入端71和72分别连到装置73的被变换值输入端和同步信号输入端。装置73具有一变换值的输出端和同步信号输出端,该两输出端分别连到装置74的被变换值的输入端和同步输入端。装置74具有一变换值输出端和同步信号输出端,分别连到归一化装置75的第和第二输入端,装置74把变换值F′(u)的一个个序列传送给装置75,归一化装置75具有一输出端,它连接到变换编码装置76的输入端以向它传送由变换值乘以预定系数构成的值F″(u,v)的一个系列,该预定系数被称为归一化系数。
每个一维直接余弦变换计算装置73和74执行对应于图4所示的一个系列的运算,接着它们产生必须被预定系数相乘以后以得到由公式1定义的理论变换值的变换值F′(u,v)。
F ′ ( u ,v ) =Σi = 015Σj = 015f (i . j ).cos(2 j + I ) .v. π32· cos(2i + I ) .u . π32(5 )]]>其中理论值是
这样N=16时的理论值即是F(u.v)= 1/64 c(u).c(v).F′(u.v) (7)
实际上,得到理论值F(u,v),以及在解码完成后存贮精确值F(i,j)是重要的。
为了把一幅图象解码,必须对直接变换得的值进行反余弦变换,反余弦变换式由上述公式(2)所定义。反变换的计算可用Beyeong Gi Lee的算法来完成,通过把如图1所示的运算图的时间轴反向。这样获得的值在依懒于被考虑的值而定的系数范围内等于由图2所定义的反变换后的值F(i,j)。从公式(2)可知,对于16×16个值的区块,每个反变换的精确值是f (i , j ) =Σu = 015Σv = 015c( u ). c( v) .f (u, v) . cos( 2j + 1 )32.v . π . cos(2 i + 1 ).u . π32(8 )]]>其中c(x)=12,]]>对于X=0;c(x)=1,对于x≠0时该值f(i,j)可表示为二次用了Beyeong Gi Lee的算法所得到的F′(u,v)是函数,如公式(5)所示
假定编码是通过二次对F′(u,v)运用Beyeong Gi Lee的反向算法来执行的,所得的值如下形式Σu = 015Σv = 015F ′ (u , v) · cos(2 j +1) ·v · π32· cos(2 i +1 ) ·u · π32(10)]]>为使这些值等于完全反变换值f(i,j),必须把来自装置74的值F′(u,v)乘以1/64 ×C2(u)C2(v)= 1/256 (u=0 v=0)
1/128 (u≠0 v=0,u=0 v≠0;)1/64 (u≠0 v≠0)归一化装置75可设置在直接余弦变换计算装置73,74和反余弦变换计算装置之间,同时必须执行的以下乘法F(O,O)× 1/256F(O,u)× 1/128F(u,O)× 1/128F(u,v)× 1/64乘法系数都是2的幂,这样这些乘法可由桶形寄存器中的简单移位装置执行。相反,如果在每个一维变换计算装置中执行的是乘以2·C(K)的乘法,则该乘法将难以做到,因为c(o)=12,]]>不是2的整数次幂。
如上所述,在第二个一维变换计算装置输入端上的第一个一维变换计算装置的输出格式的改变引起了每个传输值的被2相除,为了补偿该被2相除的除法,归一化装置到实上执行以下乘法。
F″(0,0)=F′(0,0)× 1/128F″(0,u≠0)=F′(0,u≠0)× 1/64F″(v≠0,0)=F′(v≠0,u)× 1/64F″(u≠0,v≠0)=F′(u≠0,v≠0)× 1/32归一化装置75的结构是本领域技术人员所了解的。它可由桶形寄存器构成,该寄存器能有16位容量,能提供2位或者1位或者0位的右移,并能考虑到对应于以1相乘的乘法的5倍定点位移,该以1相乘的乘法对于所存值F′(u,v)都是一个因素。位移的数目由计数装置控制,该装置接收由时钟产生的时钟信号,与加到装置73和74的信号一样。并当装置74产生16×16个变换值F′(u,v)的每个序列时被装置74产生的同步信号置0。
变换编码装置76的目的是减少被传输的信息量。它可根据下列给出的说明构成IEEE通讯会刊,第COM-32卷,No 3,1984年3月由陈文生和威廉·克·普拉特(WEN-HSIUNG·CHEN AND WILLAM·K·RATT)所写的“自适应景物编码器”(Scene Adaptive Coder)。
这样的编码包括把每个变换值和阈值相比较,当变换值小于阈值时被认为是0,有变换值的用霍夫曼码(Huffman code)传输,并通过间隔编码方法以矩阵方式传输这些变换的地址,间隔的长度通过霍夫曼码被自身编码。只有变换矩阵的第一个值F″(0,0)是以其绝对值传输。
图12是说明图象编码装置的一种变形的方框图。该变形包括为提高变换计算的精度的额外元件,其它元件保持不变并仍带有与图11所示的同样的标号,该种变形包括为16×16个亮度值的每个序列接收同步信号的输入端78,接收被变换值的序列的输入端79;为计算16×16亮度值的每个序列的中间值的装置82;提供一个等于装置82的计算时间的延迟的延迟器80;一个减法器81;二个一维直接余弦变换计算装置73和74;一个归一化装置75,有二个输入端一个输出端的多路器84,控制该多路器84的装置83;加法器85,变换编码装置76,以及一输出端86。
输入端79连到延迟器80的输入端并连到装置82的输入端以计算平均值,减法器81的第一输入端连到延迟器80的输出端,第二输入端连到装置82的一个输出端并且其输出端连到装置73的输入端以使值变换。计算装置82的输出同样也连到多路器84的第一输入端。多路器84同样包括接收恒0值的第二输入端,连到控制装置83输出端的控制输入端以及连到加法器85的第一输入端的输出端。
接收同步信号的输入端78连到装置73和83的同步输入端。装置73的变换值的输出连到装置74的输入端以使值被变换。装置73的同步输出端连到装置74的同步输入端,装置74的变换值的输出端连到归一化装置75的输入端。装置74的同步输出端连到装置75的同步输入端归一化装置75的输出端连到加法器85的第二输入端,后者的一个输出端连到变换编码装置76的一个输入端。装置76的输出端连到输出端86。
减法器81把16×16象素的区域块的每个亮度值减去这些亮度信号的平均值。接着装置73和74处理具有更少动态的被变换值,它提高了计算的精度或者说减少了用于代表被变换值的位数。在后者的情况下,计算装置更为简单。
在归一化装置75的输出端,加法器85允许对于每个16×16象素的区域通过把由计算装置82提供的平均值加到由归一化装置75提供的第一变换值上来修正精确值F″(0,0),对于归一化装置75产生的其它值,加法器85通过多路器84和控制装置83接收0值而不是平均值,控制装置83控制多路器84作为由归一化装置75产生的变换值的排列函数,装置83包括接收来自装置73和74的时钟信号的计数装置,并借助在输入端78接收的同步信号置0。
为了对彩色电视图象进行编码,必须提供二个相同的编码装置,其中一个处理亮度值而另一个处理色差值序列,红色差信号被夹在蓝色差信号值当中,接着色差值的总数等于亮度值的总数,这是根据亮度信号和色差信号的数字化的普通标准而定的。
图13是说明本发明的一维余弦变换计算装置的一种变形结构的方框示意图,该变形通过运用与刚刚说明的相似的装置,提高了精确度,它包括一个相似于图7所示的一维余弦变换计算装置187并进一步包括用于计算被变换的一个16值区域块的平均值的装置182;一个提供延迟等于装置182的计算时间的延迟装置180;一个减法器181;一个多路器184,控制多路器184的装置183,以及一个加法器185,输入端179连到延迟装置180的输入端并连到装置182的输入端以计算平均值,这样以提供被变换的16个值f(i,j)的序列。减法器181具有一个连接到延迟装置180的输出端的第一输入端,连到装置182输出端的第二输入端以及连到装置187的输入端1的输出端,它产生一个被变换值,计算装置182的输出也连到多路器184的第一输入端。多路器184具有接收恒0值的第二输入端,连到控制装置183输出端的控制输入端以及连到加法器185第一输入端的输出端,加法器185的第二输入端连到装置187的输出端并且,其输出端连到输出端186的产生16个一维被变换值的序列。
接收对应于16个被变换值的每个序列的开始的同步信号的输入端178,连到装置187的同步输入端并且连到装置183的同步信号输入端。装置187的输出端13产生另一个对应于16个变换值的每个序列开始的同步信号,这些变换值由输出端186所提供。
减法器181从被变换的16个值的序列的每个值减去其平均值。接着装置187处理具有较少动态的被变换值,这样就提高了计算的精度或者减少了用于代表被变换值的位数。在后一种情况下,计算装置187可被简化。
在装置187的输出端,加法器185允许通过对每一个16变换值系列把计算装置182提供的平均值加到由装置187提供的第一变换值上,使精确值F′(0,0)被检索。至于由装置187提供的每个16变换值序列的其他值,加法器185通过多路器184和控制装置183接收一个0值信号而不是平均值。这些后者控制多路器184,把它作为由装置187产生的变换值排列的函数,它们包括一个计数装置以接收来自装置187的同步信号,并由输入端178所接收的同步信号装置置0。
另一种提高一维变换计算精度的改进方法,可以是通过把这些值的格式确定为这些被变换值的最大有效值的函数,而不是作为被变换值的强函数的函数。这样就可能把代表这些值的码尽可能左移并避免了在计算过程中溢出的冒险,自然地,在一维变换计算装置的输出端必须执行相反的位移以使回复到原先格式。
图14是说明图5所示实施例的一个变形的方框图,该图包括为提高这些装置精度的附加元件,这些元件是三个桶形寄存器92,93,94;在16被变换值的一个序列中确定最大值的装置94;以及一个确定位移量的装置91。装置90的输入端连到输入端1以接收16被变换值序列,它具有一输出端连到装置91的输入端,该后者在计算装置6的输入端执行计算的移位的位数(D),这样在计算装置6中处理的数据决不会超过这些计算装置6的容量。
这样,加到计算装置6的值的形式并不是固定的,而是作为一个被变换值序列的16个值中最大有效值的函数而变化的,由装置91计算的位移通过桶形寄存器92和93来完成,这些桶形寄存器是设在输入存贮器3的输出端和计算装置6的二个运算输入端间的,这些寄存器92和93通过装置91输出所产生的二进制字控制。
桶形寄存器94位于变序装置9的输出端和一维直接余弦变换计算装置的输出端11间的,桶形寄存器94接收与寄存器92和93相同的二进制控制字但是它与寄存器92和93执行的方向相反执行D位的位移,使按定点格式重新存储变换值,包括代表整数部分的13位码和代表小数部分的3位码。
这些结构的变形不仅适用于第一个同时也适用于第二个一维余弦变换计算装置,它通过二维余弦变换形成一编码装置或者一个图象介码装置。这样,每个二维直接余弦变换计算装置自动决定了处理16个值的全部时间内所用的定点格式,通过把被变换值尽量左移且不导致计算过程中的溢出,该种变形当被变换值具有低动态时能提高精度,从而保持比用浮点的计算装置较简单的计算装置。
图15是一维反余弦变换根据Beyeong Gi Lee的算法完成的所有运算的时间分布图,这些运算产生16个值f(0),f(1),……,f(15)它们等于16个变换值F′(0),F′(8),F′(4),F′(12),F′(2),F′(10),F′(6),F′(14),F′(1),F′(9),F′(5),F′(13),F′(3),F′(11),F′(7)和F′(15)的反变换值,上述这些值通过运用修改的或没有修改过的Beyeong Gi Lee的算法而得到,这些值在一个系数范围内,等于16个由理论公式(1)所给出的变换后的值F(0),……,F(15)。该运算图可从图1所示的运算图对应于直接余弦变换把水平时间轴反向而得到。如图所示的该运算可被分成如下七列,第1列,第2列,……,第7列。就象直接变换的Beyeong Gi Lee的算法,该算法的逆变换在每列中需要一个不同的运算系列,它使实现运算的装置的结构复杂化。
为了简化实现运算的装置的结构,及变换的算法根据图16所示的相似方法修改,该种修改允许在图中的第4列,第5列,第6列,第7列中得到相同运算序列。为了描述该修改,标号被赋于由图15所示运算所提供的某些中间值。由第3列的运算所提供的中间值被称为J(0),J(8),J(4),J(12),J(2),J(10),J(6),J(14),J(1),J(9),J(5),J(13),J(3),J(11),J(7),J(15)。由第四列运算所提供的中间值被称为K(0),……,K(15)。由第5列运算所提供的中间值被称为L(0),……,L(15)。由第6列运算所提供的中间值被称为M(0),……,M(15)。
在图15中,可以看出第5列,第6列和第7列的运算可被分成能构成连续计算形式A+D×B和A-D×B二值的基本运算,上述二式来自运算量A和B以及预定恒定值D。
图17是从图15中抽出来的例子,说明由二中间值L(0)和L(2)及恒值 1/(2C2) 来计算M(0)和M(2)的示意图,其中L(0)L(2)被事先计算好了。图15所示的第1,2和3列中所示的运算是简单加法或者是无修改的传输。
图15所示的图被修改,这样如图17所示形式的基本运算可在两个连续得到的运算量上执行,因此,修改包括修改连续的第4列,第5列,第6列和第7列,以形成为每个基本运算所需的二个运算量的连续值。在如图17所示的例子中,修改包括改变第5列的计算的次序以使中间值L(0)和L(2)连续获得,以能快速执行图17所示的基本运算。运算图的修改包括在同一列中构成置换二个中间值的基本修改的组合。
在这些修改完成以后,由列提供的中间值的顺序是值J(0),……,J(15)的次序没有改变。由第4列计算所提供的值的顺序是K(0),K(4),K(2),K(6),K(1),K(5),K(3),K(7),K(8),K(12),K(10),K(14),K(9),K(13),K(11),K(15),第五列的计算所提供的值的顺序是L(0),L(2),L(1),L(3),L(8),L(10),L(9),L(11),(4),L(6),L(5),L(7),L(12),L(14),L(13),L(15)。由第6列计算提供的值的顺序是M(0),M(1),M(8),M(9),M(4),M(5),M(12),M(13),M(2),M(3),M(10),M(11),M(6),M(7),M(14),M(15)。
该修改的运算图具有重复的结构,可获得对应于同样运算的四列第4,5,6,7列的64个中间值,它用一个具有接收值A和B的第一,第二运算输入端,接收值D的第三运算输入端以及分别产生A+D×B和A-D×B值的二个输出端的计算装置。如果这样的计算装置在二倍于得到变换值的频率下产生一对值,则一个计算装置在对应于16个变换值的时间内足以获得64个中间值。
结果是反变换计算装置具有非常简单的结构,在第1,2,和3列中的计算运算由17次加法构成,而17次加法运算在对应于16个变换值的时间内易于执行,只要这些计算是在二倍于得到变换值的频率下进行。对于直接变换,应该注意到,这些加法通常是连加形式的,必须提供存贮中间值的存储器,这些中间值由计算装置提供的结果或加到这些计算装置上的运算量的值交替形成。
图18是说明本发明的一维反余弦变换计算装置的一个实施例的方框图,该实施例包括一个接收16个一维直接余弦变换值或其它16个二维直接余弦变换值的16值系列的输入端11′,对后者的情况下,用二个相串联的本发明的装置作为一个二维反变换计算装置;接收同步信号的输入端2′;变序装置9′;控制装置5′;第一和第二中间值存贮装置4′和8′;第一和第二计算装置6′和7′;根据图16所示运算图所计算的产生一个16反变换值系列的输出端1′;以及产生同步信号的输出端13′。
变序装置9′具有一连到输入端11′的接收每个16位二进制字的数据输入端;以及一连到存贮装置8′的第一输入端的产生16位字的输出端。装置8′具有一连到计算装置7′以提供16位二进制字的第二输入端,装置8′具有一个分别耦合到计算装置6′的第一、第二运算输入端的第一、第二输出端,并且具有一连到计算装置7′以提供16位二进制字的第三输出端。存贮装置4′具有分别耦合到计算装置6′的第1、第2输入端并耦合到反变换计算装置的输出端1′的第一、第二输出端、计算装置6′具有分别连到装置4′的第1、第2输入端的第1、第2输出端。
图16所示的运算图不能由图4所示的运算图通过把其水平时间轴反向而得到,但是它们与图4所示的有相似之处,这些相似之处对应于反变换计算装置和直接变换计算装置结构的相似之处,构成反变换计算装置的相似元件带有与直接变换计算装置同样的数字标号,但还另附上标(,)。
变序装置9′存贮并改变由输入端11′接收的16×16个变换值的顺序,以把要变换的值变成如图16所示的运算图左边所示的顺序F′(0),F′(8),……,F′(7),F′(15)。当二个一维反余弦变换计算装置串联在一起以形成一个二维反余弦变换计算装置时,包括变序装置9′的第一计算装置存贮了16个直接变换值的16个序列,它们一般是如图6所示的顺序,第二计算装置存贮了16个16变换值序列,它们是由第一装置以行的顺序所提供的,并以列的顺序重存。
中间值存贮装置8′的目的是存贮由计算装置7′计算的中间值并将其重新送入装置7′的输入端或者送到计算装置6′的二个运算输入端,装置7′和8′以闭合电路形式工作以完成如图16所示的第1,2和3列中的计算。装置7′计算由连续加到其输入端的二个运算量E和G构成的形式E+G的值,计算装置6′计算由连续加到二个运算输入端的运算量A和B构成的二式A+D和A-D×B的二个值。计算装置6′完成的算术运算与直接变换计算装置中的计算装置6完成的运算不同。
中间值存贮装置4′存贮由装置6′计算的值,并把它们提供给装置6′的运算输入端或者提供给反变换计算装置的输出端1′,装置6′和4′以闭路形式工作以完成图16所示的第5,6和7列中的计算,接着反变换后的值被送到输出端1′,控制装置5′产生控制整个反变换计算装置的全部元件的时钟信号和控制信号,特别是时钟信号在二倍于被变换值加到输入端11′的频率下控制计算。装置5′接收来自输入端2′的对应于连续加到输入端11′和16×16个直接变换值的每个区域块开始时的同步信号,它们提供给输入端13′以一个对应于由输出端1′提供的16×16个反变换值的每个区域块开始的同步信号。
图19和图20是该实施例的更详细的方框图,装置5′包括一产生22.5MHZ频率时钟信号的时钟25′和一定序器26′,定序器26′由时钟25′控制以产生加到输出端13′的控制信号和同步信号,变序装置9′由二个寄存器43′和46′以及二个RAM44′和45′构成,每个存贮器具有16×16个直接变换值的容量,它们交替工作,当一个用于写入时另一个用于读出。每个存贮器由西·皮里斯(Cypress)公司的四块集成电路Cy 7 C122构成。
寄存器43′具有一连到输入端11′的作为装置9′输入的输入端,以及一连到存贮器44′数据输入端和连到存贮器45′的数据输入的输出端。寄存器46′具有一连到存贮器44′数据输入端并连到存贮器45′数据输出端的输入端,以及一构成装置9′输出端的输出端。
每个存贮器44′和45′都有一连到控制装置5′多输出端上的地址输入端和读写控制输入端。寄存器43′具有一控制输入端,图中未画出,以在加到输入端11′的直接变换值的频率下接收装置5′提供的时钟信号,寄存器46′具有一控制输入端,图中未画出,在加到输入端11′的直接变换值的二倍频率下以22.5MHZ的频率接收装置5′提供的时钟信号。存贮器44′或者45′的读出运行是在二倍于这些存贮器写入运行的频率下进行的,对所有由装置清0′而重存的值的计算是在二倍于加到输入端11′的直接变换值的频率下进行的,计算装置7′是与直接余弦变换计算装置中的装置7相同的。
装置8′包括具有二个输入端一个输出端的三个多路器100到102;双地址端口和双输出端口的两个RAM103和104。多路器100和101的两个第一输入端连到装置8′的第一输入端,二个第二输入端连到装置8′的第二输入端并且两输出端分别连到存贮器103的数据输入端和存贮器104的数据输入端。每个存贮器103和104具有二个输出端,连到存贮器103的是A1,A2,连到存贮器104的是B1,B2。多路器102的第一输入端连到输出端A1,第二输入端连到输出端B2,输出端构成了装置8′的输出端,它是连到计算装置7′的输入端的。
输出端A1和B1构成了装置8′的第1输出端,输出端A2和B2构成了装置8′的第二输出端,每个多路器101和100具有连到控制装置5′输出端的控制输入端。每个存贮器103和104具有16×16个值的容量,可由AMD公司生产的四个集成电路AM29707构成。它在每个存贮器中可同时执行读出和写入操作,多路器100和101使由装置9′产生的直接变换值或者由装置7′产生的中间值存贮在存贮器103或104中,多路器102使存贮在存贮器103中的值或者存贮在存贮器104中的值传输到装置7′的输入端。
计算装置6′包括8输入端和二输出端的多路器107;计算电路108;以及有四输入端二输出端的多路器109,多路器107的第一输出端连到计算装置108的第一输入端A3,多路器107的第二输出端连到计算装置108的第二输出端133。多路器107的第一组四个输入端0,1,2,3可接通第1输出端,第一组四个输入端分别连到存贮器103和104的输出端A1和B1以及中间值存贮装置4′的输入端112和113,多路器107的第二组四个输入端0,1,2,3可接通该多路器107的第二输出端并分别连到存贮器103和104的输出端A2和B2以及装置4′的输出端122和123。多路器107由控制装置5′产生的二位二进制字P4,P5控制。
多路器109的第一组二个输入端分别连到计算电路108的第1,第2输出端;第二组二个输入端分别连到电路108的第二和第一输出端,并且第一和第二输出端在控制信号的作用下可分别与第一组输入端或第二组输入端相连,这些输出端构成计算装置6′的二输出端,并且分别连到装置4′的输入端114和115。
查看更多专利详情

下载专利文献

下载专利