自适应反向变换装置的制作方法

文档序号:6585437阅读:180来源:国知局
专利名称:自适应反向变换装置的制作方法
技术领域
本发明涉及一种通过反向变换矩阵将变换数据反向变换为反向变换数据的方法和装置。
还涉及一种通过变换矩阵将原始数据变换为变换数据的方法和装置。
在数字视频数据的压缩/解压缩领域可以找到其应用,这些数字视频数据例如可以是MPEG(运动图像专家组)类型的数据,特别是用于如数字电视接收机、MPEG2或MPEG4类型的视频编码器和解码器、数据存储装置或移动电话这样的装置。
背景技术
离散余弦变换或DCT的性质使其在图像序列压缩领域中发挥着重要的作用。相反,对于视频解码器,通过反向离散余弦变换或IDCT可使图像序列再现。正向和反向离散余弦变换被应用于许多视频标准中,例如JPEG、MPEG-1、MPEG-2、MPEG-4或其他标准中的H263。
国际专利申请WO99/10818描述了一种实现二维反向离散余弦变换的实例。根据该现有技术的陈述,通过可以实现一维反向离散余弦变换的第一处理器对N×N数据块逐列进行反向变换。然后从该第一处理器输出的中间结果被暂存到一个转置存储器中。当所有的列已被处理时,通过可以实现一维反向离散余弦变换的第二处理器逐行对所述中间结果进行反向变换。从所述第二处理器输出的结果构成二维反向离散余弦变换的最终结果。在该国际专利申请所描述的实施例中,将被处理的数据块包括16行每行16个数据项并且被分解成分别为8×8、4×4和2×2数据项的缩减尺寸的数据块。一种蝶形类型的运算结构简化了该16×16项数据块的二维反向离散余弦变换的运算。
新的视频应用引入了新的功能,这些功能增加了硬件实现离散余弦变换的复杂度。这种实现必须能够在有必要对不同视频流并行处理时对不同大小的数据块例如用于镶嵌编码器/解码器的2×2数据、用于H26L编码器/解码器的4×4数据、用于MPEG-2或MPEG-4编码器/解码器的8×8数据、用于JPEG2000编码器/解码器或用于某些后处理算法的16×16数据执行这种变换。另外,所述硬件的实现必须简单以便考虑到某些低速应用例如移动电话的低性能。然而,现有技术的状况并不适于以简单的方式实现可伸缩的、即对不同大小的数据块的反向离散余弦变换。实现所述反向离散余弦变换的装置的一些输入或许可以用于运算2×2数据、4×4数据或8×8数据块的变换,但为了得到最后结果,其后必须执行所有的运算步骤,即使是对2×2IDCT变换也不例外。其结果会导致这种反向离散余弦变换运算的复杂度过大。

发明内容
本发明的目的在于提供一种通过可以使其利用有限的运算资源对不同大小的数据块执行变换的变换矩阵实现正向或反向变换的方法和装置。
为此,根据本发明的反向变换装置使用沿所述矩阵的对角线分解为子矩阵的一个反向变换矩阵,并且包括—能根据要处理的多个数据项对变换数据重新排序的置换装置;—能产生重新排序的变换数据和子矩阵的乘积的可伸缩运算模块;—能根据要处理的数据数目将从可伸缩运算模块产生的数据线性组合的线性组合装置。
为此,根据本发明的变换装置使用沿所述矩阵的对角线分解为子矩阵的一个变换矩阵,并且包括—能线性组合原始数据的线性组合装置;—能产生从所述线性组合装置输出的数据和子矩阵的乘积的可伸缩运算模块;—能根据要处理的多个数据对从可伸缩模块输出的数据重新排序以便提供变换数据的置换装置。
根据要处理的数据数目和简单线性组合,通过使所述变换矩阵对称,二维变换运算实际上是模矩阵运算。因此,这种变换装置执行与要处理的数据块的大小和由此对变换的复杂度成比例的若干操作。这种解决方案简单且仅需有限的运算资源。此外,该变换装置能够进行模运算,从而能够进行可伸缩二维变换运算并且使得该变换装置能够集成在一个多标准解码器上。


本发明将参照附图所示的具体实施例作进一步描述,但本发明并不限于此。附图中—图1示出了根据本发明的反向变换装置的结构,—图2a、2b、2c、2d示出了根据本发明用于各种配置的反向变换装置的置换装置,—图3a、3b、3c示出了根据本发明分别用于运算2×2、4×4和8×8IDCT的反向变换装置的可伸缩运算模块,—图4a和4b示出了分别用于运算4×4和8×8IDCT的线性组合装置,—图5描述了包括本发明的反向变换装置、用于解压缩压缩的数字视频数据的装置,—图6示出了包括本发明的正向变换装置、用于压缩数字视频数据的装置。
具体实施例方式
以下描述本发明正向和反向离散余弦变换的情况。然而,对于本领域技术人员来说,很明显本发明可适用于傅立叶或同类的任何变换,无论何时所述变换矩阵都可以沿变换矩阵的对角线分解为子矩阵。
首先考虑二维反向离散余弦变换的情况。所述变换使得可以使用如下公式将在频域中的数据变换到时域中,频域中的数据随后将被称为变换数据(X),时域中的数据随后将被称为反向变换数据(x)x(m,n)=Σi=0N-1Σj=0N-1C(i,j)·cosπ(2m+1)i2N·cosπ(2n+1)j2N·X(i,j)=Mi(i,j)·X(i,j)]]>由于该反向离散余弦变换装置位于消费电子设备中,所以其必须设计为高速操作,具有极大的灵活性和最低的复杂度。
为此,根据以下在8×8反向变换矩阵的情况下描述的方法,所述反向变换矩阵Mi可以沿所述矩阵的对角线被分解为子矩阵。
初始反向变换矩阵Mi8×8如下所示Mi8*8= 通过使用值cos(π4)=12]]>并进行 的因式分解来简化该矩阵Mi8*8= 然后第2列与第5列进行置换,同样,第4列与第7列进行置换,以A8×8给出Mi8×8=A8×8·P8 和P8=1000000000001000001000000000001001000000000001000001000000000001]]>利用A8×8矩阵的对称性,变换矩阵Mi8×8可分解如下Mi8×8=S8,8·S4,8·B8,8·P8S8,8=100000010100001000100100000110000001-100000100-100010000-101000000-1]]>S4,8=100100000110000001-100000100-1000000001000000001000000001000000001=]]>S4,404,404,4I4,4]]>其中04,4和I4×4分别为空矩阵和四行四列的单位矩阵,并且B8,8=122M102,202,402,2M202,404,204,2M3]]>其中M1=111-1]]>M2=2cos3π8-2cosπ82cosπ82cos3π8]]>M3=2cos7π162cos3π16-2cos5π16-2cosπ162cos5π162cos7π16-2cosπ162cos3π162cos3π16-2cosπ16-2cos7π16-2cos5π162cosπ162cos5π162cos3π162cos7π16]]>对于16×16反向变换矩阵同样可以分解为子矩阵Mi16×16=S16,16·S8,16·S4,16·B16×16·P16S16,16=11..111-1..1-1,]]>S8,16=S8,808,808,8I8,8,]]>S4,16=S4,404,12012,4I12,12]]>B16,16=122M102,202,402,802,2M202,402,804,204,2M304,808,208,208,4M4]]>图1示出了根据本发明的一种反向变换装置的结构。该装置执行可以处理2×2、4×4、8×8和16×16数据块的可伸缩反向离散余弦变换IDCT。为此该装置包括—置换装置PER(11),能根据要处理的多个数据对变换数据(X)重新排序,这些要处理的数据根据要处理的数据块的大小可以为2、4、8或16;—可伸缩运算模块DA1到DA4(12、13、14、15),能产生重新排序的变换数据和子矩阵的乘积,模块DA1通过子矩阵M1处理2×2变换数据块,模块DA1和DA2分别通过子矩阵M1和M2处理4×4变换数据块,模块DA1、DA2和DA3分别通过子矩阵M1、M2和M3处理8×8变换数据块,并且模块DA1、DA2、DA3和DA4分别通过子矩阵M1、M2、M3和M4处理16×16变换数据块;—线性组合装置LC4到LC16(16、17、18),能根据要处理的数据数目对从可伸缩运算模块产生的数据进行线性组合,装置LC4使用矩阵S4,4并且线性组合模块DA1和DA2的输出,装置LC8使用矩阵S8,8并且线性组合模块DA3和装置LCA的输出,装置LC16使用矩阵S16,16并且线性组合模块DA4和装置LC8的输出;—选择装置SEL(19),能够根据要处理的数据数目,对从第一可伸缩运算模块DA1(12)和从线性组合装置LC4、LC8和LC16(16、17、18)产生的数据进行选择,以便分别提供2×2、4×4、8×8和16×16的反向变换数据块。
图2a到2d描述了根据本发明的以各种配置方式的反向变换装置的置换装置。置换矩阵P16和16×16变换数据块X的一列的乘积产生了中间数据块Y的一列。在16×16变换数据X的IDCT变换的情况下,数据的置换是由图2a所示的互连电路来执行的,Y0对应于X0,Y1对应于X8,Y2对应于X4以此类推。这在图2b到2d中由虚线箭头重复示出。
该置换装置在无论要处理的数据数目是多少时都能对变换数据重新排序。因此,在8×8 IDCT变换情况下,根据图2b所示,输入到置换装置的数据每两个输入被分配给一个。这样,该置换装置的连线保持一致,Y0对应于X0,此时Y1对应于X4,Y2对应于X2以此类推。同理,在4×4IDCT变换情况下,根据图2c所示,输入到置换装置的数据每四个输入被分配给一个,这样,Y0对应于X0,Y1对应于X2,Y2对应于X1,Y3对应于X3。最后,在2×2IDCT变换情况下,根据图2d所示,在置换装置输入的数据每八个输入被分配给一个,Y0对应于X0,Y1对应于X1。
图3a、3b、3c示出了根据本发明分别用于运算2×2、4×4和8×8IDCT变换的反向变换装置的可伸缩运算模块。这些可伸缩运算装置是基于分布式运算算法的。根据第一个原则,基于只读类型的ROM存储器,这些算法能够顺序进行数值的右移和加法运算。该技术的优点在于由于省去了乘法器从而减少了运算的复杂度。然而,使用ROM存储器对于大型变换矩阵来说则会有问题。根据一个更优的原则,该分布式运算算法基于一系列的移位和累加。
在2×2IDCT变换情况下,图3a描述了可伸缩运算模块DA1(12)。其接收数据Y0、Y1并使用子矩阵M1来实现他们的乘积。为此,该可伸缩运算模块仅包括一个实现Y0和Y1的和Z0的加法器(31)和一个实现Z1=Y0-Y1的减法器(32)。
在4×4IDCT变换情况下,图3b示出了可伸缩运算模块DA2(13)。其接收数据Y2、Y3并使用子矩阵M2来实现他们的乘积。为此,该可伸缩运算模块包括一个能将Y3倒置的反相器(33)、一个能将Y2和Y3相加的加法器(31)、和两个能在其各个输入Y2、Y3、Y2+Y3和-Y3中选择一个输入的多路复用器MUX(34)。最后,该可伸缩运算模块还包括两组加法器(31)和移位寄存器(35),能够根据移位和累加法则计算最终结果(Z2,Z3)。
例如,如果要运算如下乘积A1A2A3A4Y2Y3]]>第一行和第一列的乘积包含运算A1Y2+A2Y3。
A1和A2根据其二进制值以二的补码进行运算。例如,如果A1=1011101001和A2=0100101000,则需要运算Y2*20+Y3*2-1+Y2*2-2+Y2*2-3+(Y2+Y3)*2-4+(Y2+Y3)*2-6+Y2*2-9随后执行如下操作Y2+(Y3+(Y2+(Y2+((Y2+Y3)+(0+((Y2+Y3)+(0+(0+(Y2*2-1))*2-1)*2-1)*2-1)*2-1)*2-1)*2-1)*2-1)*2-1所述多路复用器MUX能在X1、X4、X1+X4和0中选择一个输入。在其输出端首先输出具有最小幂次的数据项,此处为Y2,接着,该数据项右移一位,实际上是得到Y2和2-1的乘积。然后,在随后的两个时钟周期中,该多路复用器提供空值;中间结果为Y2*2-3。在第四时钟周期里,该多路复用器提供Y2+Y3等数据项直到在可伸缩运算模块的输出端得到最后结果Y2*20+Y3*2-1+Y2*2-2+Y2*2-3(Y2+Y3)*2-4+(Y2+Y3)*2-6+Y2*2-9。
在8×8IDCT变换情况下,图3c示出了可伸缩运算模块DA3(13)。其接收数据Y4到Y7并使用子矩阵M3来实现他们的乘积。为此,所述子矩阵M3又被分解为4个子矩阵M31、M32、M33和M34的乘积M31=2cos7π1600-2cosπ1602cos3π16-2cos5π1600-2cos5π16-2cos3π1602cosπ16002cos7π16]]>M32=11001-100001100-11]]>M33=100001100-1100001]]>M34=100001200001200001]]>该可伸缩运算模块DA3(14)包括串联的四级,每一级对应于M31、M32、M33、M34四个子矩阵中的一个。第一级(301)接收数据Y4至Y7并使用子矩阵M31实现他们的乘积。所述第一级包括两个多路复用器(34),其中一个接收Y5和空值,另一个接收Y6和空值,每个多路复用器都连接有一组加法器(31)和移位寄存器(35)。第二级(302)实现子矩阵M32并且包括一个加法器(31)和一个减法器(32)。第三级(303)实现子矩阵M33并且包括两个加法器(31)和两个减法器(32)。最后,第四级(304)实现子矩阵M34并且包括两个加法器(31)和两个反相器(33),使得可以在四个多路复用器MUX(34)的输入端提供可达四个数据。每个多路复用器MUX均与包括一个加法器和一个移位寄存器的组连接,能够提供最终的结果(Z4至Z7)。
图4a和4b分别描述了用于运算4×4和8×8IDCT的线性组合装置。
根据图4a,线性组合装置LCA(16)对应于前述矩阵S44。该线性组合装置LCA包括结果分别为T0=Z0+Z3与T1=Z1+Z2的两个加法器(31)和结果分别为T2=Z1-Z2与T3=Z0-Z4的两个减法器。
根据图4b,线性组合装置LC8(17)对应于前述矩阵S8,8。该线性组合装置LC8包括结果分别为U0=T0+Z7、U1=T1+Z6、U2=T2+Z5、U3=T3+Z4的四个加法器(31)。还包括结果分别为U4=T3-Z4、U5=T2-Z5、U6=T1-Z6、U7=T0-Z7的四个减法器。
然后,所述选择装置SEL(19)可以选择—从用于2×2IDCT变换的第一可伸缩运算模块DA1(12)中产生的数据X0=Z0和x1=Z1;—从用于4×4IDCT变换的线性组合装置LCA(16)中输出的数据x=T;—从用于8×8IDCT变换的线性组合装置LC8(17)中输出的数据x=U;—或者从用于16×16IDCT变换的线性组合装置LC16(18)中输出的数据x。
下面考虑正向离散余弦变换的情况。
所述变换使用如下公式将数据从时域变换到频域X(i,j)=C(i,j)·Σm=0N-1Σn=0N-1cosπ(2m+1)2N·cosπ(2n+1)2N·x(m,n)=]]>M(m,n)·x(m,n)为此,所述变换矩阵M为了16×16DCT变换可以如下所示沿所述矩阵的对角线分解为子矩阵M16×16=P16·B16×16·S4,16·S8,16·S16,16根据本发明用于将原始数据(x)正向变换为变换数据(X)的装置,与所述反向变换装置对称,因此包括—线性组合装置(16,17,18),能对原始数据进行线性组合;—可伸缩运算模块(12,13,14,15),能产生从所述线性组合装置输出的数据和子矩阵的乘积;—置换装置(11),能根据要处理的多个数据对从可伸缩模块输出的数据重新排序以便提供变换数据。
图5描述了用于将压缩的数字视频数据(ES)解压缩为解压缩的数字视频数据(DS)的视频解码器,所述视频解码器包括根据本发明的反向变换装置。
所述视频解码器包括—用于可变长解码压缩的数字数据的VLD装置(51),能够提供量化数据;—用于反向量化所述量化数据的IQ装置(52),能够提供变换数据;—IDCT装置(53),用于如前所述将所述变换数据反向离散余弦变换为反向变换数据。
考虑到在屏幕DIS(56)上的显示,该视频解码器还包括通过一个图像存储器MEM(55)由数据块再现数据块图像的REC的步骤(54)。
图6描述了用于将输入的数字视频数据(IN)压缩为压缩的数字视频数据(ES)的视频编码器。所述视频编码器包括一个编码单元,该编码单元包括—用于如前所述将数字视频数据正向离散余弦变换DCT为变换数据的装置(61);—用于量化变换数据、能够提供量化数据的装置Q(52);—用于将量化数据进行可变长编码VLC、能够提供压缩数据的装置(63);所述视频编码器还可以包括一个预测单元,该预测单元顺次包括—用于反向量化IQ所述量化数据、能够提供变换数据的装置(52);—用于如前所述将变换数据反向离散余弦变换IDCT为反向变换数据的装置(53);—用于所述变换装置IDCT和移动补偿装置MC(66)的输出数据的加法器(63);—能将用于移动补偿装置MC和移动估计装置ME(67)的图像进行存储的图像存储器MEM(65);—移动补偿装置MC;—能从输入数字视频数据(IN)中减去从移动补偿装置输出的数据的减法器(60),该减法器输出的结果被提供给所述变换装置DCT。
在当前文本中括号间的任何参考标记不应认为是限制性的。动词“包括”及其变化也应当广义地进行理解,也就是说不排除存在这样的情况除了在该动词后面所列部件或步骤以外还包括在该动词后面已经列出的加上“一”或“一个”的多个部件或步骤。
权利要求
1.一种用于通过一个反向变换矩阵将变换数据(X)反向变换为反向变换数据(x)的装置,所述反向变换矩阵可以沿该矩阵的对角线分解为子矩阵,所述装置包括-置换装置(11),能根据要处理的多个数据项对变换数据重新排序;-可伸缩运算模块(12,13,14,15),能产生重新排序的变换数据和子矩阵的乘积;-线性组合装置(16,17,18),能根据要处理的数据数目对从所述可伸缩运算模块输出的数据进行线性组合。
2.如权利要求1所述的变换数据处理装置,其特征在于,所述可伸缩运算装置基于分布式算术算法。
3.如权利要求1所述的变换数据处理装置,其特征在于,还包括选择装置(19),能够根据要处理的数据数目,对从第一可伸缩运算模块(12)或从线性组合装置(16、17、18)输出的数据进行选择,以便提供反向变换数据。
4.一种用于通过一个变换矩阵将原始数据(x)变换为变换数据(X)的装置,所述变换矩阵可以沿所述矩阵的对角线分解为子矩阵,所述装置包括-线性组合装置(16,17,18),能线性组合原始数据;-可伸缩运算模块(12,13,14,15),能产生从线性组合装置输出的数据和子矩阵的乘积;-置换装置(11),能根据要处理的多个数据对从所述可伸缩运算模块输出的数据重新排序,以便提供变换数据。
5.一种视频解码器,包括用于可变长解码压缩数字数据、能够提供量化数据的装置(51),用于反向量化所述量化数据、能够提供变换数据(X)的装置(52)和用于如权利要求1所述将变换数据反向变换为反向变换数据(x)的装置(53)。
6.一种包括如权利要求4所述的将原始数据(x)变换为变换数据(X)的装置(61)的视频编码器。
7.如权利要求6所述的视频编码器,还包括预测装置,该预测装置包括如权利要求1所述的将变换数据(X)反向变换为反向变换数据(x)的装置(53)。
8.一种用于通过一个反向变换矩阵将变换数据(X)反向变换为反向变换数据(x)的方法,其特征在于,所述方法包括如下步骤-沿所述反向变换矩阵的对角线将其分解为子矩阵;-进行欲产生变换数据与子矩阵的乘积的运算;-进行欲对所述运算步骤输出的数据进行线性组合的线性组合。
9.一种用于通过一个变换矩阵将原始数据(x)变换为变换数据(X)的方法,其特征在于,所述方法包括如下步骤-沿所述变换矩阵的对角线将其分解为子矩阵;-进行欲对所述原始数据进行线性组合的线性组合;-进行欲产生从线性组合步骤输出的数据与子矩阵的乘积的运算。
10.一种观看装置,尤其是一种电视接收机,包括如权利要求5所述的视频解码器。
全文摘要
本发明涉及一种用于通过一个反向变换矩阵将变换数据(X)反向变换为反向变换数据(X)的装置,所述反向变换矩阵可以沿其对角线分解为子矩阵。所述装置包括置换装置(11),能根据要处理的数据数目对所述变换数据重新排序。还包括可伸缩运算模块(12,13,14,15),能产生重新排序的变换数据和子矩阵的乘积。最后,还包括线性组合装置(16,17,18),能根据要处理的数据数目对从可伸缩运算模块输出的数据进行线性组合。
文档编号G06F17/14GK1428719SQ02128168
公开日2003年7月9日 申请日期2002年12月26日 优先权日2001年12月28日
发明者C·米罗索罗拉, J·阿德莱德, J·德惠斯梅 申请人:皇家菲利浦电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1