使用蝶形处理器对离散余弦变换编码和计算的设备和方法

文档序号:6357188阅读:192来源:国知局
专利名称:使用蝶形处理器对离散余弦变换编码和计算的设备和方法
背景技术
发明领域本申请要求2001年5月16日提出的美国临时专利申请第60/291,467号的优先权利益,这里通过完整的引用将该专利加入于此。本发明涉及数字信号处理。尤其,本发明涉及一种设备和方法,用于确定经编码的数据块的变换。
现有技术的描述在数字信号处理的一般学科中,数字图片处理具有突出的位置。人类视觉感觉的重要性已经在本技术领域和数字图片处理的科学中鼓动了极大的兴趣和进步。在发送和接收视频信号的领域中,诸如那些用于放映影片或电影的那些领域中,正在对图像压缩技术作出各种改进。许多当前的和建议的视频系统都使用数字编码技术。这个领域的一些方面包括图像编码、图像恢复以及图像特征选择。图像编码表示尝试以有效的方式发送数字通信信道的图片,使之使用尽可能少的比特数以使所需要的带宽最小,同时使失真维持在某个范围内。图像恢复表示努力再现目标的真实图像。在通信信道上发送的经编码的图像可能由于各种因素而失真。降级的根源可能起因于从目标产生原始图像。特征选择是指对图片的某些属性的选择。这些属性在识别、分类和在更宽背景中的判决中可能需要。
诸如在数字电影中的那些视频的数字编码是从改进的图像压缩技术得益的一个领域。一般可以把数字图像压缩分成两类无损方法和有损方法。无损图像被恢复不会丧失任何信息。有损方法涉及根据压缩比、压缩算法质量以及算法的实施,某些信息丧失而不可恢复。一般,考虑有损压缩方法以得到成本有效的数字电影方法所要求的压缩比。为了达到数字电影质量水平,压缩方法应该提供视觉上无损的性能水平。如此,虽然作为压缩过程的结果存在数学上的信息损失,但是由这个损失产生的图像失真对于正常观看条件下的观看者应该是觉察不到的。
已经为其它应用发展了现有的数字图像压缩技术,即,用于电视系统。这种技术已经使设计对于指定的应用适当地折衷,但是不符合电影呈现所要求的质量要求。
数字电影压缩技术应该提供看电影者以前已经经历的视觉质量。理想地,数字电影的视觉质量应该尝试超过高质量的发行复制片(print film)。同时,压缩技术应该具有实用的高的编码效率。如这里所定义,编码效率是指符合某个定性水平的压缩图像质量所需要的比特率。此外,系统和编码技术应该具有内在的灵活性以适应不同的格式,并且应该是成本有效的,即,小的尺寸和有效的解码器和编码器处理。
能够提供显著的压缩水平同时保留所要求的质量水平的一种压缩技术是利用被编码的离散余弦变换(DCT)系数数据的自适应大小的块以及子块。虽然作为一种数字压缩方法的DCT技术正得到广泛的接受,但是有效的硬件实施是有困难的。
发明概要本发明提供自适应块大小的DCT编码数据的硬件实施。一种设备,用于确定经编码数据的块的变换,经编码数据的块包括多个数据元素。配置输入寄存器以接收预定数量的数据元素。把至少一个蝶形处理器耦合到输入寄存器,并配置成对所选择的一对数据元素上执行至少一种数学运算,以产生经处理的数据元素的输出。把至少一个中间寄存器耦合到蝶形处理器,并配置成临时存储经处理的数据。把反馈回路耦合到中间寄存器和蝶形处理器,如果启用的话,配置成把经处理的数据元素的第一部分传递到合适的蝶形处理器以执行附加的数学运算,如果禁用的话,配置成把经处理的数据元素的第二部分传递到至少一个保持寄存器。
因此,一个实施例的一个方面是提供一种处理器,所述处理器有效地执行离散余弦变换(DCT)和离散四元树变换(DQT)技术。
一个实施例的另一个方面是提供一种处理器,所述处理器有效地执行离散余弦反变换(IDCT)和离散四元树反变换(IDQT)技术。
一个实施例的另一个方面是实施一种处理器,所述处理器的灵活性在于可以重新配置相同的硬件元件以计算在相同变换网格网格(trellis)中的不同数学运算。
一个实施例的另一个方面是提供一种图像处理器,所述图像处理器保持高质量图像同时使图像失真最小。
一个实施例的另一个方面是并行地处理经编码数据的各部分。
一个实施例的另一个方面是在单个时钟周期中处理读、写和蝶形操作。
一个实施例的另一个方面是提供和实施一个控制序列发生器,所述控制序列发生器具有可变性,以控制数据的不同块大小以及保持实时处理所需要的速度。
一个实施例的另一个方面是实施一种处理器,使得把处理器配置成在可变的块大小上操作。
附图简述从下面结合附图的详细描述中,对本发明的方面、特性、目的和优点将更为明了,在所有的附图中,用相同的标记作相应的识别,其中

图1a和1b是数据块的列和行处理的方框图;图2a是方框图,说明通过编码过程的数据流;图2b是方框图,说明通过解码过程的数据流;图2c是方框图,说明涉及在基于方差的块大小分配中的处理步骤;图3是方框图,说明实施本发明的一种设备,用于计算诸如离散余弦变换(DCT)和离散量化变换(DQT)之类的变换;图4说明通过图3的设备实施的DCT网格结构;图5说明通过图3的设备实施的IDCT网格结构;图6说明具有输入和输出多路复用器的单个蝶形处理器;图7说明写入多路复用器的方框图;图8示出蝶形处理器的方框图;图9a说明图8的蝶形处理器可以执行的否定操作配置;图9b说明图8的蝶形处理器可以执行的累加操作配置;图9c说明图8的蝶形处理器可以执行的蝶形DCT操作配置;图9d说明图8的蝶形处理器可以执行的蝶形IDCT操作配置;图9e说明图8的蝶形处理器可以执行的累加寄存器操作配置;图9f说明图8的蝶形处理器可以执行的DQT/IDQT操作配置;图10说明流程图,示出实施本发明的一种过程,用于计算诸如离散余弦变换(DCT)和离散量化变换(DQT)之类的变换;图11a说明示例块大小分配;图11b说明对于图11a的块大小分配的对应的四元树分解;以及图11c说明对于图11a的块大小分配的对应的PQR数据。
较佳实施例的详述为了便于数字信号的数字发送和享受到相应的利益,一般需要使用某些形式的信号压缩。为了在所产生的图像中得到高分辨率,保持图像的高质量也是很重要的。此外,对于小型硬件实施,希望计算效率,这在许多应用中是很重要的。
因此,诸如傅里叶变换、小波以及离散余弦变换(DCT)之类的空间频域技术一般满足上述准则。DCT具有能量紧缩能力,以及在信号的去相关中趋近统计的最优化变换。开发有效实施DCT的各种算法进一步对它的主流可应用性作出了贡献。这些算法的减少和计算复杂性以及它的递归结构导致更简化的硬件方案。DCT一般是正交的和可分开的。DCT是正交的这个事实暗示在变换下保留了信号的能量或信息;即,映射到DCT域。DCT是可分开的这个事实暗示可以通过一系列一维DCT来实施多维DCT。因此,可以对于一维DCT开发较快的算法,并且直接扩展到多维变换。
在DCT中,把一个象素块变换成频域中的系数的相同大小的块。基本上,变换把一个象素块表示为正交基图像的线性组合。系数的量值表示象素块和基图像的相似程度。
一般,要在数字域中处理的图像包括分成大小为N×N的非重叠块的阵列的象素数据。在每个块上可以执行两维DCT。通过下列关系式定义两维DCTX(k,l)=α(k)β(l)NΣm=0N-1Σn=0N-1x(m,n)cos[(2m+1)πk2N]cos[(2n+1)πl2N].0≤k,l≤N-1]]>其中 以及x(m,n)是在N×M块中的象素位置(m,n),以及X(k,l)是对应的DCT系数。
由于象素值是非负的,所以DCT分量X(0,0)始终是正的,并且通常具有最多能量。事实上,对于一般图像,分量X(0,0)周围集中了大多数变换能量。这个能量紧缩特性使DCT技术成为如此吸引人的一种压缩方法。
已经观察到,大多数自然图像是由平坦的变化相当慢的区域和诸如目标边界和高对比度纹理之类的快变化区域构成的。对比度自适应编码方案通过把更多位分配给快变化区域和较少位分配给较少变化区域而利用了这种因素的优点。在已转让给本发明的受让人、并在此引用作为参考的、题为“Adaptive BlockSize Image Compression Method and System”的美国专利第5,021,891号中、在已转让给本发明的受让人、并在此引用作为参考的、题为“Adaptive BlockSize Image Compression Method and System”的美国专利第5,107,345号中揭示了这种技术。此外,在题为“Adaptive Block Size Image CompressionMethod and System”的美国专利第5,452,104号中揭示了结合差分四元树变换技术的ABSDCT技术的使用,该专利也已转让给本发明的受让人,并在此引用作为参考。在这些专利中描述的系统使用所谓的“帧内”编码,其中对图像数据的每个帧进行编码而不管任何其它帧的内容。使用ABSDCT技术,可以大大地降低可得到的数据速率而图像质量没有可察觉的降级。
使用ABSDCT,一般把视频信号分段成为用于处理的帧和象素的块。DCT操作符是把按时间取样的信号变换成相同信号的频率表示的一种方法。通过变换成频率表示,已经示出DCT技术允许很高的压缩程度,因为可以设计成利用图像的频率分布特征优点的量化器。在一个较佳实施例中,把一个16×16 DCT施加于第一排序,把四个8×8 DCT施加于第二排序,把16个4×4 DCT施加于第三排序,以及把64个2×2 DCT施加于第四排序。
为了图像处理的目的,对分割成不重叠块的阵列的象素数据执行DCT操作。注意,虽然这里以N×N的大小来讨论块的大小,但是预见可以使用各种各样的块大小。例如,可以使用N×M块大小,其中N和M两者都是整数,M可以大于或小于N。另一个重要方面是可以把块分割成至少一个层次的子块,诸如N/ixN/i、N/ixN/j、N/ixM/j以及等等,其中i和j是整数。此外,这里讨论的示例块大小是DCT系数的相应的块和子块的16×16象素块。可以进一步预见,可以使用诸如偶整数或奇整数之类的各种其它整数,例如,9×9。
可以把彩色信号从RGB空间变换到YC1C2空间,其中Y是辉度分量,或亮度分量,而C1和C2是色度分量或彩色分量。因为眼睛对于彩色的空间灵敏度较低,许多系统在水平和垂直方向上通过一个为四的因子对C1和C1分量进行子取样。然而,子取样不是必需的。已知为4∶4∶4格式的全分辨率图像在诸如称之为覆盖数字摄像机之类的某些应用中可以是极有用的或是必需的。两种可能的YC1C2表示为YIQ表示和YUV表示,两者都是本技术领域中众知的。使用已知为YCbCr的、YUV表示的一种变型也是可能的。
图1a和1b示出经编码数据100和120的N×N块的列和行处理。可以执行N维变换作为N个一维变换的级联。例如,执行2×2 DCT作为两个一维DCT处理的级联,首先在每个列上操作,然后在每个行上操作。首先处理第一列m(124),接着处理列m+1(108),接着列m+2(112),依次类推直到列n(116)。在处理列之后,处理行120,如在图1b中所示。首先处理行m(124),接着处理行m+1(128),接着行m+2(132),依次类推直到行n(136)。
相似地,另一个例子可以是需要IDCT处理的8×8数据块。可以把8×8块分解成四个两维IDCT。然后可以用相对于图1a和1b描述的两维DCT方式的相同方式来处理每个两维IDCT。
图2a说明编码过程期间的经编码数据流的方框图250。在编码过程中,把经编码数据从象素域变换到频域。图2b说明通过解码过程的经编码数据流的方框图254。在解码过程中,把经编码数据从频域变换到象素域。如在编码过程250中所示,首先执行经编码数据的块大小分配(BAS)(258)。在实施例的一个方面,处理Y、Cb和Cr分量中的每一个而无需子取样。因此,把16×16象素块的输入提供给块大小分配单元258,它执行块大小分配,准备用于视频压缩。
块大小分配单元258根据块中图像的感知特征来确定块的分解。块大小分配根据16×16块中的活动性按四元树方式把每个16×16块子分割为较小的块。块大小分配单元258产生称之为PQR数据的四元树数据,它的长度可以在1和21比特之间。因此,如果块大小分配确定要分割16×16块,则设置PQR数据的R比特,接着是对应于四个经分割的8×8块的Q数据的四个附加的比特。如果块大小分配确定要对任何8×8块进行子分割,则对于每个经子分割的8×8块添加P数据的四个附加比特。
把数据分割成诸如2×2、4×4、8×8和16×16之类的块大小。然后编码数据处理器执行经编码数据(262)的变换(DCT/DQT),如相对于图3所描述。在完成DCT/DQT过程262之后,在经编码数据上执行量化过程(QB)266。这完成了经编码数据从象素域到频域的变换。
在一个实施例中,使用频率加权掩码(FWM)以及量化标度因子使DCT系数量化。FWM是与输入DCT系数的块的维数相同的频率权重的一个列表。频率权重把不同的权重施加于不同的DCT系数。设计权重来突出具有人类视觉系统更敏感的频率内容的输入取样,并且使具有视觉系统不敏感的频率内容的取样不突出。还可以根据诸如观看距离之类的因素来设计权重。
从图像的测量统计值或理论统计值来设计哈夫曼码。已经观察到,大多数自然图像是由单调的或变化相当慢的区域和诸如目标边界和高对比度纹理之类的快变化区域构成的。具有诸如DCT之类的频域变换的哈夫曼编码器通过把更多位分配给快变化区域和把较少位分配给单调区域而利用这些特征。一般,哈夫曼编码器使用查找表对游程长度和非零值进行编码。
根据经验数据来选择权重。在国际标准组织,1994年的“Digitalcompression and encoding of continuous-tone still image-part 1Requirements and guidelines”,ISO/IEC JTCT CD10918中,揭示了用于设计8×8 DCT系数的加权掩码的一种方法,这里引用该文作为参考。一般,设计两个FWM,一个用于亮度分量,而一个用于色度分量。通过抽选得到用于块大小2×2、4×4的FWM表格,以及通过对于8×8块的内插得到16×16。标度因子控制经量化的系数的质量和比特率。
因此,根据关系式量化每个DCT系数 其中DCT(i,j)是输入DCT系数,fwm(i,j)是频率加权掩码,q是标度因子以及DCTq(i,j)是经量化的系数。注意,根据DCT系数的符号,使在括号内的第一项向上或向下舍入(round up and down)。还使用合适的加权掩码使DQT系数量化。然而,可以使用多个表格或掩码,并施加于Y、Cb和Cr分量中的每一个。
把经量化的系数提供给之字形扫描串行器268。串行器268按之字形方式对经量化的块进行扫描,以产生经量化的系数的串行化流。可以选择许多不同的之字形扫描图案,以及不同于之字形的图案。一种较佳技术使用8×8块大小的之字形扫描,虽然可以使用诸如4×4或16×16之类的其它大小。
注意,可以把之字形扫描串行化器268放置在量化器266的前面或后面。净结果是相同的。
在任何情况中,把经量化的系数流提供给可变长度编码器269。可变长度编码器269可以使用后面跟着编码的零游程长度编码。在所述美国专利申请第5,021,891、5,107,345和5,452,104号以及这里引用作为参考和这里概括的未决的美国专利申请第<000163>号中详细讨论这种技术。游程长度编码器取得经量化的系数,并相对于不连续系数标注出连续系数的游程。把连续值称为游程长度值,并进行编码。对于不连续值进行分开编码。在一个实施例中,连续系数是零值,而不连续系数是非零值。一般,游程长度是从0到63位,而大小是从1-10的AC值。文件码的结束添加附加的码-,因此,存在总数为641个的可能的码。
在解码过程中,把在频域中的经编码数据转换回象素域。可变长度解码器270产生数据的游程长度和大小,并把数据提供给反之字形扫描串行器271,它根据所使用的扫描方案对系数进行排序。反之字形扫描串行器271接收PQR数据,以辅助使系数正确地排序成为复合的系数块。把复合块提供给反量化器272,用于恢复由于频率加权掩码的使用而引起的处理。
然后在经编码的数据上执行指纹机(H20)273。指纹机把一个水印或其它识别符信息放到数据上。可以在以后时间恢复水印,以显露识别符信息。识别符信息可以包括信息,诸如何处和何时播放材料、以及核准谁来播放这种材料。接在指纹机273之后,开始相对于图4详细描述的解码器数据过程274(IDQT/IDCT)。在对数据进行解码之后,把数据发送到帧缓冲器接口(FBI)278。配置FBI使之一次读出和写入一帧的未压缩数据。在一个实施例中,FBI具有四帧的容量,虽然设想可以改变存储容量。
现在参考图2c,提供示出块大小分配单元258的操作的详细说明的流程图。算法使用块的方差作为对块进行子分割的判决中的量度。在步骤202处开始,读出象素的16×16块。在步骤204处,计算16×16块的方差v16。计算方差如下var=1N2Σi=0N-1Σj=0N-1x2i,j-(1N2·Σi=0N-1Σj=0N-1xij)2]]>其中N=16,而xij是在N×N块中的第i行、第j列中的象素。在步骤206处,首先修改方差门限值T16以提供新的门限值T’16,如果块的平均值在两个预定值之间,则块方差与新的门限值T’16进行比较。
如果方差v16不大于门限值T16,则在步骤208处,写入16×16块的开始地址,并把PQR数据的R比特设置为0,以表示不子分割16×16块。然后算法读出象素的下一个16×16块。如果方差v16大于门限值T16,则在步骤210处,把PQR数据的R比特设置为1,以表示要把16×16块子分割成四个8×8块。
顺序考虑四个8×8块,i=1∶4,进行进一步的子分割,如在步骤212中所示。在步骤214中,对于每个8×8块,计算方差v8i。在步骤216处,首先修改方差门限值T4,以提供新的门限值T’8,如果块的平均值在两个预定值之间,则块方差对照这个新的门限值进行比较。
如果偏差v8i不大于门限值T4,则在步骤218处,写入8×8块的开始地址,以及把对应的Q比特,Qi,设置为0。然后处理下一个8×8块。如果方差v8i大于门限值T4,则在步骤220处,把对应的Q比特,Qi,设置为1,以表示要把8×8块子分割成四个4×4块。
顺序考虑四个4×4块,ji=1∶4,进行进一步的子分割,如在步骤222中所示。在步骤224中,对于每个4×4块,计算方差v4ij。在步骤226处,首先修改方差门限值T4,以提供新的门限值T’4,如果块的平均值在两个预定值之间,则块偏差与这个新的门限值进行比较。
如果方差v4ij不大于门限值T4,则在步骤228处,写入4×4块的地址,以及把对应的P比特,Pij,设置为0。然后处理下一个4×4块。如果方差v4ij大于门限值T4,则在步骤230处,把对应的P比特,Pij,设置为1,以表示要把4×4块子分割成四个2×2块。此外,写入四个2×2块的地址。
门限值T16、T8和T4可以是预定的常数。这被称之为硬判决。另一方面,可以执行自适应或软判决。软判决根据2N×2N块的平均象素值改变方差的门限值,其中N可以是8、4或2。因此,可以使用平均象素值的函数作为门限值。
为了说明的目的,考虑下面的例子。让Y分量对于16×16块、8×8块和4×4块的预定的方差门限值分别为50、1100和880。换言之,T16=50、T8=1100和T16=880。让平均值的范围为80和100。假定所计算的16×16块的方差是60。由于60和它的平均值90大于T16,所以把16×16块子分割成四个8×8子块。假定所计算的8×8块的方差是1180、935、980和1210。由于8×8块中的两个块具有超过T8的偏差,所以进一步子分割这两个块以产生总共八个4×4块。最后,假定八个4×4块的偏差为620、630、610、590、525、930和690,其中前面的四个对应于平均值90、120、110、115。由于第一个4×4块的平均值落在范围(80,100)中,所以它的门限值要降低到小于880的T’4=200。所以将子分割这个4×4块作为第七个4×4块。在图11a中示出所产生的块大小分配。在图11b中示出对应的四元树分解。在图11c中示出这种块大小分配产生的PQR数据。
注意,使用相似的过程来分配彩色分量C1和C2的块大小。彩色分量是可以水平地抽选的、垂直地抽选的或两者。此外,注意,虽然已经作为其中先估计最大的块(在本例子中是16×16)的自顶到下的方法来描述块大小分配,但是也可以用自底到上的方法来代替。自底到上的方法先估计最小的块(在本例子中是2×2)。
把PQR数据与所选择块的地址一起提供给DCT/DQT单元262。DCT/DQT单元262使用PQR数据来执行所选择块上适当大小的离散余弦变换。只有所选择块需要进行DCT处理。还使用DQT来减少DCT的DC系数中间的冗余。在每个DCT块的左上角处遇到DC系数。一般,DC系数比AC系数大。大小的差异使之难于设计有效的可变长度编码器。因此,减少DC系数中间的冗余是有利的。DQT单元在DC系数上执行两维DCT,每次取2×2。从4×4块中的2×2块开始,在四个DC系数上执行两维DCT。把这个2×2 DCT称为四个DC系数的差分四元树变换,或DQT。其次,DQT的DC系数和具有8×8块的三个相邻DC系数一起使用来计算下一个层次的DQT。最后,使用在16×16块中的四个8×8块的DC系数来计算DQT。因此,在16×16块中,存在一个真实的DC系数,而其余的是对应于DCT和DQT的AC系数。
在一帧中,独立地计算每个16×16块。因此,通过由PQR所确定的,可以按需要改变给定块所使用的处理算法。
图3是方框图,说明DCT/DQT的计算以及经编码数据300的一个块的IDQT/IDCT。如在图3中示出的编码模式中,经编码数据起初在象素域中。当通过中间步骤处理经编码数据时,把经编码数据变换到频域中。在解码模式中,经编码数据起初在频域中。当通过中间步骤处理经编码数据时,把经编码数据变换到象素域中。
参考图3,把经编码数据的至少一个M×N块存储在转置RAM304中。转置RAM304可以包括M×N数据的一个或多个块。在具有两个经编码数据块的一个实施例中,把一个块配置成包括当前M×N数据块308,把另一个配置成包括下一个M×N数据块312。如在图2a中所示从块大小分配208(在编码模式中)或如在图2b中所示从指纹机220(在解码模式中),把数据块308和312传递到转置RAM304。在一个实施例中,转置RAM304可以是双端口RAM,致使转置RAM接口316处理当前数据块308以及接收来自指纹机220的下一个数据块。转置RAM接口316控制定时并可以使缓冲存储器允许从转置RAM304读出数据块或把数据块写入转置RAM304中。在一个实施例中,转置RAM304和转置RAM接口316可以响应从控制序列发生器324来的一个或多个控制信号。
经编码数据进入数据处理器328,从转置RAM304(或通过转置RAM接口316)到一个或多个输入寄存器332。在一个实施例中,有16个输入寄存器332。在一个实施例中,数据处理器328首先处理列数据,接着处理行数据,如在图1中所示。另一方面,数据处理器328可以先处理有列再处理行,然而,下面的说明假定在处理行数据之前处理列数据。输入寄存器332包括16×16块的单个列编码的数据。数据处理器328通过在经编码数据上一列一列地执行数学运算而计算变换,并把数据写回转置RAM304中。在处理数据列之后,数据处理器328处理经编码数据的每个行。在处理经编码数据的每个行之后,数据处理器328通过输出寄存器352输出数据。
在一个实施例中,数据块是经编码数据的16×16块,虽然可以设想使用任何大小的数据块,诸如32×32、8×8、4×4或2×2,或它们的组合。因此,当数据处理器328正在处理来自转置RAM304的数据块时(例如,当前的M×N数据块308),转置RAM接口316接收来自BSA208(编码模式)或指纹机220(解码模式)的下一个数据块312。当数据处理器328完成当前数据块308的处理时,转置RAM接口316从转置RAM304接口读出下一个数据块312,并把它装载到数据处理器328中。如此,通过转置RAM接口316和控制序列发生器324的指挥,从转置RAM304来的数据在当前数据块308和下一个数据块312之间反复转换。
数据处理器328包括输入寄存器332、在专权蝶形处理器簇336中的至少一个蝶形处理器以及至少一个中间数据寄存器340。数据处理器328还可以包括保持寄存器334、写入多路复用器348以及输出数据寄存器352。专用蝶形处理器簇336可以进一步包括第一输入多路复用器356,而中间数据寄存器340进一步包括第二输入多路复用器360。最好由控制序列发生器324来控制数据处理器328的上述部件。
在操作中,对于给定的数据列或行,把输入寄存器332配置成通过转置RAM接口316接收来自转置RAM304的经编码数据。控制序列发生器324启使能输入寄存器的某些地址,以通过输入多路复用器356发送数据。通过多路复用器356经过选择而对数据输入再排序,使得选择适当的编码数据对来进行数学运算。通过控制序列发生器324的控制,输入多路复用器356把数据传递到专权蝶形处理器簇336。专权蝶形处理器簇336包括一个或多个蝶形处理器。在一个实施例中,专权蝶形处理器簇336包括四个独立的蝶形处理器364、368、372和376,而控制序列发生器324通过输入多路复用器356按选择路线把经编码数据传递到合适的蝶形处理器。
每个独立的蝶形处理器364、368、372或376能够执行一维变换,诸如DCT、IDCT、DQT和IDQT。一维变换一般包括算术运算,诸如简单的加法器、减法器或乘法器。在一对数据元素上执行一维变换之后,把所产生的输出传递到中间数据寄存器340。中间数据寄存器340可以响应控制序列发生器324。控制序列发生器可以是诸如状态机、微控制器或可编程处理器之类的装置。在中间数据寄存器340响应控制序列发生器324的一个实施例中,使用反馈路径380和通过第一输入多路复用器356使存储在中间数据寄存器340中的选择数据元素反馈回蝶形处理器以进行再次处理(即,一维变换的另一个部分)这个反馈循环继续直到完成对于经编码数据的所有一维变换。当完成数据的处理时,把来自中间数据寄存器340的数据写入WRBR保持寄存器344。如果正在处理的数据是列数据,则从WRBR保持寄存器344通过写入多路复用器348写入数据,并返回到转置RAM304进行存储,这样就可以开始行处理。对写入多路复用器348控制,以对经处理的列数据进行再排序使之回到它的原始排序。如果保持寄存器数据是行数据(因此,所有列数据的处理已完成),则按选择路线把数据传递到输出寄存器352。然后控制序列发生器324可以控制来自菊花链多路复用器和输出数据寄存器352的数据的输出。
图4说明可以通过图3的数据路径处理器328在编码模式中实施的DCT网格结构。相似地,图5说明可以通过图3的数据路径处理器328在解码模式中实施的IDCT网格结构。通过PQR数据的指挥和/或根据所执行的计算的类型,控制序列发生器324可以选择经编码数据元素的不同对,以组合和执行部分一维变换的各部分。例如,在图4的网格结构中,在列404中发生八种运算。所示的运算如下x(0)+x(7)、x(1)+x(6)、x(3)+x(4)、x(2)+x(5)、x(0)-x(7)、x(1)-x(6)、x(3)-x(4)和x(2)-x(5)。蝶形处理器364、368、372和376(如图3所示)中的每一个在给定时钟周期中处理四种运算中的一种。因此,例如,蝶形处理器364计算x(0)+x(7)和x(0)-x(7)的运算,蝶形处理器368计算x(1)+x(6)和x(1)-x(6)的运算,蝶形处理器372计算x(3)+x(4)和x(3)-x(4)的运算以及蝶形处理器376计算x(2)+x(5)和x(2)-x(5)的运算,都在同一个时钟周期中计算。可以把这些运算中的每一个的结果临时存储在流水线寄存器中或中间数据寄存器340中,然后按选择路线传递到输入多路复用器360。在说明书中相对于图9c和9d描述流水线寄存器的操作。
任选地,在下一个时钟周期中,使用相同的四个蝶形处理器计算剩余的四种乘法运算。因此,蝶形处理器364计算[x(0)-x(7)]*(1/2C116),蝶形处理器368计算[x(1)-x(6)]*(1/2C316),蝶形处理器372计算[x(3)-x(4)]*(1/2C716)以及蝶形处理器376计算[x(2)-x(5)]*(1/2C516)。把这些计算的结果临时存储在中间数据寄存器340中。当完成计算时,经编码数据的排序与原始输入时的经编码数据的排序不同。因此,按需要,在每个反馈回路后,控制序列发生器324和输入多路复用器356对经编码数据或部分处理过的经编码数据进行再排序。
在接着的时钟周期中,处理对于列408的计算,再次把处理结果存储在中间数据寄存器340中,并通过输入多路复用器360反馈。再次,对现在已部分处理过的被反馈的经编码数据进行再排序,使得把经编码数据的各正确部分按选择路线传递到合适的蝶形处理器。因此,蝶形处理器364处理b(0)+b(2)和b(0)-b(2)。相似地,蝶形处理器368计算b(1)+b(3)和b(1)-b(3),蝶形处理器372计算b(4)+b(6)和b(4)-b(6)以及蝶形处理器376计算b(5)+b(7)和b(5)-b(7)。再次把计算结果存储在中间数据寄存器340或流水线寄存器中,并通过输入多路复用器360按选择路线传递。在下一个时钟周期中,按相对于列404描述的方式相同方式执行乘以1/2C18、1/2C38、1/2C18和1/2C38的乘法。因此,蝶形处理器364计算b(0)-b(2)*1/2C18,蝶形处理器368计算b(1)-b(3)*1/2C38,蝶形处理器372计算b(4)-b(6)*1/2C18,蝶形处理器376计算b(5)-b(7)*1/2C38。
在下一个时钟周期中,处理对于列412的计算,对于在d(0)到d(7)位置的值进行计算,再次把计算结果存储在中间数据寄存器340中,并反馈到输入多路复用器360中。因此,每个蝶形处理器计算每个输入的每个级,使得蝶形处理器364计算d(0)+d(1)和d(0)-d(1)的运算,蝶形处理器368计算d(2)+d(3)和d(2)-d(3)的运算,蝶形处理器372计算d(4)+d(5)和d(4)-d(5)的运算以及蝶形处理器376计算d(6)+d(7)和d(6)-d(7)的运算,都在同一个时钟周期中计算。在接着的时钟周期中,按相对于列404和408描述的方式相同的方式执行乘以1/2C14的乘法。
列416说明在下一个时钟周期中通过蝶形处理器计算的下一组数学运算。如在图4的例子中所示,在列416中,在这个时钟周期期间只需要两种运算即,f(2)和f(3)分量的相加以及f(6)和f(7)分量的相加。因此,蝶形处理器364计算f(2)+f(3),而蝶形处理器368计算f(6)+f(7)。
在接着的时钟周期中,处理在列420中表示的计算。如此,计算h(4)、h(5)和h(6)的值。因此,蝶形处理器364计算h(4)+h(6),蝶形处理器368计算h(5)+h(8),而蝶形处理器372计算h(5)+h(6)。
可容易地观察到,图5说明按相似方式操作的IDCT网格结构,但是与相对于图4描述的网格结构具有相反的顺序。在解码过程中使用与编码过程中操作的DCT网格结构对反的IDCT网格结构。蝶形处理器364、368、372和376按相对于图4描述的方式相似的方式操作,利用了并行处理中效率的优点。在编码和解码两种过程中,一个实施例的明显的优点是对于网格结构的每个级再使用相同的硬件。因此,列504中说明的计算所使用的硬件与列508、512、516和520中说明的计算所使用的硬件是相同的。相似地,列404中说明的计算所使用的硬件与列408、412、416和420中说明的计算所使用的硬件是相同的。
一旦计算了表示图4中网格结构的终点的最终结果,就从中间数据寄存器340把数据传递到保持寄存器344。控制序列发生器324控制保持寄存器344和输出数据寄存器352。如果数据是列数据,则把数据传递到写入多路复用器348并存储回转置RAM304。再次,对经编码数据进行再排序以反映经编码数据的原始序列。如果数据是行数据,则因此而完成了所有的计算,并把数据从保持寄存器344传递到输出数据寄存器352。
图6说明具有一个或多个输入和输出多路复用器600的单个蝶形处理器的例子。在一个实施例中,把从一个或多个中间数据寄存器340输出的数据耦合到输入多路复用器604的输入端口(见图3)。在一个实施例中,把从每个中间数据寄存器340输出的数据输入到蝶形处理器到第一多路复用器608和第二多路复用器612。把从输入AR寄存器332(见图3)输出的数据也通过输入多路复用器604传递。特别,把AR寄存器AR(0)和AR(8)的输出耦合到多路复用器616的输入端,并把AR(1)、AR(8)和AR(15)的输出耦合到多路复用器620的输入端。通过控制序列发生器324的指挥,多路复用器624和628选择来自AR或BR寄存器的信号(在图3中示出)。因此,多路复用器624选择来自多路复用器608或616的数据,而多路复用器628选择来自多路复用器620或多路复用器612的数据。因此把多路复用器624和628的输出耦合到单独的蝶形处理器532的输入端。蝶形处理器632计算DCT/IDCT/DQT/IDQT变换的一级,如相对于图3、4和5所述。把蝶形处理器632的两个输出,输出636和638,的每一个耦合到每个中间数据多路复用器642和646的输入端。然后把数据从多路复用器642和646选择到一组中间寄存器650。在一个实施例中,有16个如此的中间多路复用器和数据寄存器。
图7说明写入多路复用器的方框图。如在图3中所示,把中间数据寄存器340的偶数输出输入到多路复用器704,并把中间数据寄存器340的奇数输出输入到多路复用器708。如在图3中所示,通过控制序列发生器324的控执,多路复用器704、708、712和716对每个中间寄存器中的数据进行再排序,并分别存储在17比特的寄存器720和724中。然后把经再排序的数据存储在转置RAM304中。
图8说明每个蝶形处理器800的操作。在一个实施例中,实施四个蝶形处理器。然而,设想可以实施服从定时和大小限制的任何数目的蝶形处理器。数据通过输入804和808进入蝶形处理器。在一个实施例中,输入804有时表示DC值,并通过截尾器812传递。截尾器812负责1/N函数,如关于下文两维DCT公式所描述。输入804的DC值是17比特-单个符号比特加上16个整数比特。截尾器812从DC值输入数据截去n比特以产生经截尾的DC值816,其中如果所处理的数据是16×16块,则n是4比特,如果所处理的数据是8×8块,则n是3比特,如果所处理的数据是4×4块,则n是2比特,以及如果所处理的数据是2×2块,则n是1比特。如果输入是AC值,则旁路截尾器812,并按选择路线传递到第一选择器814。然后第一选择器814从输入A804选择经截尾的DC值816或AC值。在这个实施例中,不使用分数比特,虽然设想可以使用分数比特。
把第一选择器的输出816按选择路线传递到延迟820和第二选择器824。当选择器输出值816通过选择路线传递到延迟820时,经截尾的DC值在通过选择路线传递到第二选择器824之前可以保持一个时钟周期。在一个实施例中,延迟820是寄存器。在第二选择器824中的数据选择是要在数据上执行的一种数学运算类型的函数。最好从控制序列发生器通过选择路线传递过来的控制字826触发第二选择器824。如在整个图8中所示,控制字826提供对于许多部件的控制。再次根据要执行的数学运算的类型,然后,把数据传递到加法器832或减法器836。第三选择器还接收来自延迟820的经延迟的输出值,以及输入808。再次,在第三选择器828中的数据选择是要在数据上执行的数学运算类型的函数。
对数据进行加或减,然后把数据传递到第四选择器840或第五选择器844,用于从蝶形处理器800输出。把输入804也传递到第四选择器840,并把输入808传递到第五选择器844。在编码模式中,可以按选择路线把数据传递到第六选择器848。在一个实施例中,在编码模式中,在通过选择路线传递到第六选择器848之前,通过编码延迟852而使数据按选择路线传递。
第二输入,输入808,通过第三选择器828和第六选择器848传递。如果第六选择器848选择输入808,则使数据通过选择路线传递到乘法器856,输入808在那里乘上标量860。具有标量860的乘法过程对数据定标以产生经定标的输出864。在一个实施例中,然后把经定标的输出864通过选择路线传递到格式化器868。格式化器868使数据从24比特格式(一个符号比特、16个整数比特和7个分数比特)舍入和饱和(saturate)成为17比特格式。因此,相对于长度的20位,经格式化的定标输出872是17比特。如此处理的数据允许当计算时保持精确度,但是使用较少位来表示相同的数据,这依次节约了硬件空间。通过延迟876把经格式化的定标输出872通过选择路线传递到第三选择器828和第五选择器844,用于进一步处理。
图9a-9f说明每个蝶形处理器能够执行的各种数学运算。图9a说明蝶形处理器900可能执行的NO(非)运算。给出两个输入,输入A(902)和输入B(904),简单地把每个输入传递到输出C(906)和输出D(908)。因此,在NO运算中,C=A和D=B。
图9b说明蝶形处理器910执行的累加运算。给出两个输入,输入A(912)和输入B(914),输出C(916)表示和A+B。通过加法器913组合输入A(912)和输入B(914)。输出D(918)表示输入B(914)的通过。因此,在累加运算中,C=A+B和D=B。
图9c说明蝶形处理器920执行的蝶形DCT运算。给出两个输入,输入A(922)和输入B(924),输出C(926)表示输入A(922)和输入B(924)的和,致使C=A+B。由加法器923组合输入922和输入924。输出D(928)表示输入A(922)和输入B(924)的减法器并被乘以系数CF(930),致使D=CF×(A-B)。减法器925从输入922减去输入924,然后通过乘法器927作乘法。任选地,可以使用流水线寄存器932和934来临时存储中间产物直到下一个时钟周期。
图9d说明蝶形处理器936执行的蝶形IDCT运算。给出两个输入,输入A(938)和输入B(940),输出C(942)表示输入A(938)和输入B(940)乘以系数CF(943)的和,致使输出C=A+(B×CF)。通过乘法器945使输入B(940)乘以系数CF(943),然后通过加法器947加到输入A(938)上。相似地,输出D(944)表示输入A(938)和输入B(940)乘以系数CF(943)的差,致使D=A-(B×CF)。乘法器945使输入B(940)乘以系数CF(943),然后通过减法器949从输入A(938)中减去。任选地,可以使用流水线寄存器946和948来存储在下一个时钟周期中要计算的中间产物。
图9e说明蝶形处理器950执行的累加寄存器运算。给出两个输入,输入A(952)和输入AREG(954),输出C(956)表示输入A和AREG的和,致使C=A+AREG。与输入值不同,AREG也可以是以前时钟周期存储在寄存器951中的一个值。通过加法器953使输入A(952)和输入AREG(954)相加。
图9f说明蝶形处理器958执行的DQT/IDQT运算。给出两个输入,输入A(960)和输入B(962),输出C(964)表示输入A和B的和,致使C=A+B。相似地,输出D(966)表示输入A和B的差,致使D=A-B。通过加法器963组合输入A(960)和输入B(962)。通过减法器965从输入A(960)减去输入B(962)。
在图10中说明计算图像数据1000的变换的过程,并且可以在关于图3描述的结构中实施。对于诸如DCT、IDCT、DQT和IDQT之类的频域技术,容易地配置过程。数据的列或行起初驻留在转置RAM1004中,并传递到蝶形处理器中的保持寄存器1008中。选择要组合的数据块的各个数据元素1012,以及选择要在各个数据元素上执行的数学运算1016。可以执行关于图9a-9f描述的数学运算,并包括非操作1020、累加1024、DCT蝶形1028、IDCT蝶形1032、累加寄存器1036和DQT/IDQT蝶形1040。临时存储数学运算的结果1044。然后根据是否需要进一步的数学运算来进行反馈判决1048。在一个实施例中,控制序列发生器控制反馈判决,如关于图3所描述。如果反馈数据1052,则把数据反馈到保持寄存器1008,并重复进行处理。如果不反馈数据1056,则把数据传递到输出保持寄存器1060。根据对于数据的列或行是否需要另外的数学运算来进行另一个判决1064。如果需要(1068),则把数据的列或行传递到保持器1072,然后写回到转置RAM1004中。如果不需要(1076),则把数据块传递到输出数据寄存器1080。
作为例子,可以用专用集成电路(ASIC)、可编程逻辑器件、分立门或晶体管逻辑、例如,诸如寄存器和FIFO之类的分立硬件部件、执行一组固件指令的处理器、任何传统的可编程软件和处理器、或任何它们的组合,在硬件或软件中实施或执行与这里揭示的实施例描述相关连的各种示意的逻辑块、流程图以及步骤。有利地,处理器可以是微处理器,但是另一方面,处理器可以是任何传统的处理器、控制器、微控制器或状态机。软件可以驻留在RAM存储器、快闪存储器、ROM存储器、寄存器硬盘、可移动盘、CD-ROM、DVD-ROM或本技术领域中众知的任何其它形式的存储媒体中。
提供较佳实施例的上述描述,以使熟悉本领域技术的人员可以制造或使用本发明。熟悉本领域技术的人员将不费力地明了这些实施例的各种修改,可以把这里所定义的一般原理应用到其它的实施例而不需要用发明创造。因此,不打算把本发明限于这里所示出的实施例,而是和这里所揭示的原理和新颍特征符合的最宽广的范围相一致。
权利要求
1.确定经编码数据的块的变换的一种设备,所述经编码数据的块包括多个数据元素,所述设备包括输入寄存器,配置成接收预定量的数据元素;耦合到所述输入寄存器的至少一个蝶形处理器,把所述蝶形处理器配置成在所选择的数据元素对上执行至少一种数学运算以产生经处理数据元素的输出;耦合到所述蝶形处理器的至少一个中间寄存器,把所述中间寄存器配置成临时存储经处理的数据;以及耦合到所述中间寄存器和所述蝶形处理器的反馈回路,其中,如果使能的话,把所述反馈回路配置成把经处理的数据元素的第一部分传递到合适的蝶形处理器以执行附加的数学运算,其中如果禁用的话,则把它配置成把经处理数据元素的第二部分传递到至少一个保持寄存器;其中把所述保持寄存器配置成存储经处理数据直到处理了所有第一部分数据元素。
2.如权利要求1所述的设备,进一步包括耦合到所述反馈回路和所述中间寄存器的至少一个输入多路复用器,其特征在于,把每个输入多路复用器配置成临时选择数据元素和把数据元素传递到合适的蝶形处理器。
3.如权利要求1所述的设备,进一步包括耦合到所述蝶形处理器和所述中间寄存器的至少一个输入多路复用器,其特征在于,把每个输入多路复用器配置成临时选择数据元素和把数据元素传递到合适的中间寄存器。
4.如权利要求1所述的设备,其特征在于,从下述组中选择所述变换,所述组包括离散余弦变换(DCT)、差分四元树变换(DQT)、离散余弦反变换(IDCT)以及差分四元树反变换(IDQT)。
5.如权利要求1所述的设备,其特征在于,可以把经编码数据的块表示成行数据和列数据,并且进一步包括耦合到输入寄存器的转置随机存取存储器(RAM),其中把所述转置RAM配置成当正在处理列数据时存储行数据,以及其中把所述转置RAM配置成当正在处理行数据时存储列数据。
6.如权利要求5所述的设备,其特征在于,把所述转置RAM配置成存储经编码数据的两个块。
7.如权利要求5所述的设备,进一步包括耦合到所述保持寄存器的写入多路复用器,其特征在于,把所述写入多路复用器配置成对数据元素进行再排序以完成一维变换。
8.如权利要求1所述的设备,其特征在于,所述反馈回路允许再使用相同的部件而不管块大小。
9.如权利要求1所述的设备,其特征在于,所述反馈回路允许再使用相同的部件而不管变换的类型。
10.如权利要求1所述的设备,其特征在于,所述反馈回路允许再使用相同的部件而不管数学运算。
11.如权利要求1所述的设备,进一步包括耦合到所述反馈回路的控制序列发生器,其特征在于,把所述控制序列发生器配置成使能或禁用所述反馈回路。
12.如权利要求11所述的设备,其特征在于,所述控制序列发生器把唯一的系数乘法器提供给所述蝶形处理器。
13.如权利要求12所述的设备,其特征在于,所述唯一的系数乘法器是基于B.G.Lee的算法。
14.如权利要求11所述的设备,其特征在于,所述控制序列发生器根据预定事件使能所述输入寄存器中的某一些。
15.如权利要求11所述的设备,其特征在于,所述控制序列发生器根据预定准则使能启动所述蝶形处理器中的某一些。
16.如权利要求11所述的设备,其特征在于,所述控制序列发生器根据预定准则使能所述中间寄存器中的某一些。
17.如权利要求11所述的设备,其特征在于,所述控制序列发生器根据预定准则使能所述输出寄存器中的某一些。
18.如权利要求1所述的设备,其特征在于,所述数学运算是来自包括加、乘和减的组。
19.如权利要求1所述的设备,其特征在于,每个所述蝶形处理器执行一维变换的一部分。
20.如权利要求1所述的设备,其特征在于,计算所述经编码数据的块的变换作为一系列一维变换被计算。
21.确定经编码数据的块的变换的一种设备,所述经编码数据的块能够作为行数据和列数据来表示,每个行和列包括多个数据元素,所述设备包括配置成存储经编码数据的块的转置随机存取存储器(RAM);耦合到所述转置RAM的至少一个输入寄存器,把所述输入寄存器配置成接收来自所述转置RAM的数据的列;耦合到所述输入寄存器的至少一个蝶形处理器,把所述蝶形处理器配置成在所选择的来自列数据的数据元素对上执行一维变换的一部分以产生第一阶列数据的输出;耦合到所述蝶形处理器的至少一个中间寄存器,把所述中间寄存器配置成临时存储第一阶列数据;以及耦合到所述中间寄存器和所述蝶形处理器的反馈回路,其中,如果使能的话,把所述反馈回路配置成把所选择的第一阶列数据的数据元素传递到所述蝶形处理器以执行一维变换的附加部分,其中如果禁用的话,则把它配置成把列数据传递到所述转置RAM;其中把输入寄存器配置成接收来自所述转置RAM的数据的行,把蝶形处理器配置成在所选择来自数据的行的数据元素对上执行一维变换的一部分,以产生第一阶行数据的输出,把中间寄存器配置成临时存储第一阶行数据,把反馈回路配置成把第一阶行数据的所选择的数据元素传递到蝶形处理器以执行一维变换的附加部分,其中如果禁用的话,则把它配置成把行数据传递到输出寄存器。
22.如权利要求21所述的设备,其特征在于,根据在列或行数据上完成一维变换而禁用所述反馈回路。
23.如权利要求21所述的设备,进一步包括耦合到所述反馈回路和所述中间寄存器的至少一个输入多路复用器,其特征在于,把每个输入多路复用器配置成临时选择数据元素和把数据元素传递到合适的蝶形处理器。
24.如权利要求21所述的设备,进一步包括耦合到所述蝶形处理器和所述中间寄存器的至少一个输出多路复用器,其特征在于,把每个输出多路复用器配置成临时选择数据元素和把数据元素传递到合适的中间寄存器。
25.如权利要求21所述的设备,其特征在于,从下述组中选择所述变换,所述组包括离散余弦变换(DCT)、差分四元树变换(DQT)、离散余弦反变换(IDCT)以及差分四元树反变换(IDQT)。
26.如权利要求21所述的设备,其特征在于,配置所述转置RAM以存储所述经编码数据的两个块。
27.如权利要求21所述的设备,进一步包括耦合到保持寄存器的写入多路复用器,其特征在于,把所述写入多路复用器配置成对数据元素进行再排序使得完成了一维变换。
28.如权利要求21所述的设备,其特征在于,所述反馈回路允许再使用相同的部件而不管块大小、变换的类型或数学运算的类型。
29.如权利要求21所述的设备,进一步包括耦合到所述反馈回路的控制序列发生器,其特征在于,把所述控制序列发生器配置成使能或禁用所述反馈回路。
30.如权利要求29所述的设备,其特征在于,所述控制序列发生器把唯一的系数乘法器提供给所述蝶形处理器。
31.如权利要求29所述的设备,其特征在于,所述唯一的系数乘法器是基于B.G.Lee的算法。
32.如权利要求29所述的设备,其特征在于,所述控制序列发生器根据预定则使能所述输入寄存器、所述蝶形处理器、所述中间寄存器或所述输出寄存器中的某一些。
33.如权利要求21所述的设备,其特征在于,所述数学运算是来自包括加、乘和减的组。
34.如权利要求21所述的设备,其特征在于,每个所述蝶形处理器执行一维变换的一部分。
35.如权利要求21所述的设备,其特征在于,计算所述经编码数据的块的变换作为一系列一维变换被计算。
36.在经编码数据的块上执行作为N个一维变换的级联的N维变换的一种设备,所述经编码数据包括多个数据元素,所述设备包括耦合到输入寄存器的蝶形处理器的簇,把每个蝶形处理器配置成在所选择的数据元素对上执行一维变换的一部分,以产生包括多个经部分处理的数据元素的部分经处理的数据输出;耦合到每个蝶形处理器的至少一个中间寄存器,把所述中间寄存器配置成临时存储部分经处理的数据;以及耦合到所述中间寄存器和所述蝶形处理器的反馈回路,其中按需要使能反馈回路,以通过选择路线把所选择的经部分处理的数据元素对传递到合适的蝶形处理器,以执行一维变换的附加部分直到完成一维变换。
37.如权利要求36所述的设备,其特征在于,从下述组中选择所述变换,所述组包括离散余弦变换(DCT)、差分四元树变换(DQT)、离散余弦反变换(IDCT)以及差分四元树反变换(IDQT)。
38.如权利要求36所述的设备,其特征在于,可以把所述经编码数据的块表示为行数据和列数据,并且进一步包括耦合到输入寄存器的转置只读存储器(RAM),其中配置所述转置RAM以当正在处理列数据时存储行数据,其中配置所述转置RAM以当正在处理行数据时存储列数据。
39.如权利要求38所述的设备,其特征在于,配置所述转置RAM以存储所述经编码数据的两个块。
40.如权利要求36所述的设备,其特征在于,所述反馈回路允许再使用相同的部件而不管块大小、变换的类型或数学运算的类型。
41.如权利要求36所述的设备,进一步包括耦合到所述反馈回路的控制序列发生器,其特征在于,把所述控制序列发生器配置成使能或禁用所述反馈回路。
42.如权利要求41所述的设备,其特征在于,所述控制序列发生器把唯一的系数乘法器提供给所述蝶形处理器。
43.如权利要求42所述的设备,其特征在于,所述唯一的系数乘法器是基于B.G.Lee的算法。
44.如权利要求41所述的设备,其特征在于,所述控制序列发生器根据预定准收使能所述输入寄存器、所述蝶形处理器、所述中间寄存器或所述输出寄存器中的某一些。
45.确定经编码数据的块的离散余弦反变换的一种设备,所述经编码数据的块包括多个数据元素,所述设备包括输入寄存器,配置成接收预定量的数据元素;耦合到所述输入寄存器的至少一个蝶形处理器,把所述蝶形处理器配置成在所选择的数据元素对上执行至少一种数学运算以产生经处理数据元素的输出;耦合到所述蝶形处理器的至少一个中间寄存器,把所述中间寄存器配置成临时存储经处理的数据;以及耦合到所述中间寄存器和所述蝶形处理器的反馈回路,其中,如果使能的话,把所述反馈回路配置成把经处理数据元素的第一部分传递到合适的蝶形处理器以执行附加的数学运算,其中如果禁用的话,则把它配置成把经处理数据元素的第二部分传递到至少一个保持寄存器;其中把所述保持寄存器配置成存储经处理数据直到处理了所有第一部分数据元素。
46.确定经编码数据的块的变换的一种设备,所述经编码数据的块能够作为行数据和列数据来表示,每个行和列包括多个数据元素,所述设备包括配置成存储经编码数据的块的转置随机存取存储器(RAM);耦合到所述转置RAM的至少一个输入寄存器,把所述输入寄存器配置成接收来自所述转置RAM的数据的列;耦合到所述输入寄存器的至少一个蝶形处理器,把所述蝶形处理器配置成在所选择的来自列数据的数据元素对上执行第一阶变换的一部分以产生第一阶列数据的输出;耦合到所述蝶形处理器的至少一个中间寄存器,把所述中间寄存器配置成临时存储第一阶列数据;以及耦合到所述中间寄存器和所述蝶形处理器的反馈回路,其中,如果使能的话,把所述反馈回路配置成把所选择的第一阶列数据的数据元素传递到所述蝶形处理器以执行附加的变换,其中如果禁用的话,则把它配置成把列数据传递到所述转置RAM;以及耦合到所述反馈回路的控制序列发生器,其中把所述控制序列发生器配置成使能或禁用所述反馈回路,其中把输入寄存器配置成接收来自所述转置RAM的数据的行,把蝶形处理器配置成在所选择的来自数据的行的数据元素对上执行第一阶变换,以产生第一阶行数据的输出,把中间寄存器配置成临时存储第一阶行数据,把反馈回路配置成把所选择的第一阶行数据的数据元素传递到蝶形处理器以执行附加的变换,其中如果禁用的话,则把它配置成把行数据传递到输出寄存器。
47.确定经编码数据的块的变换的一种方法,所述经编码数据的块包括多个数据元素,所述方法包括(a)接收预定量的数据元素;(b)所选择的在数据元素对上执行至少一种数学运算以产生经处理数据元素的输出;(c)作出任何经处理的数据元素是否需要附加的数学运算的确定;(d)选择需要附加数学运算的经处理数据元素的第一部分;(e)选择不需要附加数学运算的经处理数据元素的第二部分;(f)在所选择的经处理数据元素的第一部分对上执行至少一种数学运算以产生经处理数据元素的第二输出;以及(g)存储经处理数据元素的第二部分直到处理了数据元素的所有第一部分。
48.如权利要求47所述的方法,其特征在于,进一步包括(h)按需要重复步骤(c)、(d)、(e)、(f)和(g)。
49.如权利要求47所述的方法,其特征在于,进一步包括(i)当经编码数据的块的所有数据元素不需要附加的数学运算时,输出经编码数据的块。
50.如权利要求47所述的方法,其特征在于,从下述组中选择所述变换,所述组包括离散余弦变换(DCT)、差分四元树变换(DQT)、离散余弦反变换(IDCT)以及差分四元树反变换(IDQT)。
51.如权利要求47所述的方法,其特征在于,可以把经编码数据的块表示为行数据和列数据,并且进一步包括当正在处理列数据时,存储行数据;以及当正在处理行数据时,存储列数据。
52.如权利要求47所述的方法,其特征在于,进一步包括在存储步骤之前对数据元素进行再排序,使得以有效的方式执行数据元素的后续的传递。
53.如权利要求47所述的方法,其特征在于,进一步包括根据预定准则控制步骤(a)、(b)、(c)、(d)、(e)、(f)、(g)和(h)。
54.如权利要求53所述的方法,其特征在于,进一步包括根据预定准则把唯一的系数乘法器提供给某些数据元素。
55.如权利要求54所述的设备,其特征在于,所述唯一的系数乘法器是基于B.G.Lee的算法。
56.如权利要求47所述的方法,其特征在于,所述数学运算是来自包括加、乘和减的组的。
57.如权利要求47所述的方法,其特征在于,每个所述蝶形处理器执行一维变换的一部分。
58.如权利要求47所述的设备,其特征在于,计算所述经编码数据的块的变换作为一系列一维变换而被计算。
59.一种计算机可读出媒体,包括用于控制计算机系统执行一种方法的结构,所述方法包括(a)接收预定量的数据元素;(b)所选择的在数据元素对上执行至少一种数学运算以产生经处理数据元素的输出;(c)作出任何经处理的数据元素是否需要附加的数学运算的确定;(d)选择需要附加数学运算的经处理数据元素的第一部分;(e)选择不需要附加数学运算的经处理数据元素的第二部分;(f)在经处理数据元素的第一部分的所选择的对上执行至少一种数学运算以产生经处理数据元素的第二输出;以及(g)存储经处理数据元素的第二部分直到处理了数据元素的所有第一部分。
60.确定经编码数据的块的变换的一种设备,经编码数据的块包括多个数据元素,所述设备包括(a)一种装置,用于接收预定量的数据元素;(b)一种装置,用于在所选择的数据元素对上执行至少一种数学运算以产生经处理数据元素的输出;(c)一种装置,用于作出任何经处理的数据元素是否需要附加的数学运算的确定;(d)一种装置,用于选择需要附加数学运算的经处理数据元素的第一部分;(e)一种装置,用于选择不需要附加数学运算的经处理数据元素的第二部分;(f)一种装置,用于在所选择的经处理数据元素的第一部分对上执行至少一种数学运算以产生经处理数据元素的第二输出;以及(g)一种装置,用于存储经处理数据元素的第二部分直到处理了数据元素的所有第一部分。
61.如权利要求47所述的设备,其特征在于,进一步包括(h)一种装置,用于按需要重复步骤(c)、(d)、(e)、(f)和(g)。
62.如权利要求47所述的设备,其特征在于,进一步包括(i)一种装置,用于当经编码数据的块的所有数据元素不需要附加的数学运算时,输出经编码数据数据的块。
63.如权利要求47所述的设备,其特征在于,从下述组中选择所述变换,所述组包括离散余弦变换(DCT)、差分四元树变换(DQT)、离散余弦反变换(IDCT)以及差分四元树反变换(IDQT)。
64.如权利要求47所述的设备,其特征在于,可以把经编码数据的块表示为行数据和列数据,并且进一步包括一种装置,用于当正在处理列数据时,存储行数据;以及一种装置,用于当正在处理行数据时,存储列数据。
65.如权利要求47所述的设备,其特征在于,进一步包括一种装置,用于在存储步骤之前对数据元素进行再排序,使得以有效的方式执行数据元素的后续的传递。
66.如权利要求47所述的设备,其特征在于,进一步包括一种装置,用于根据预定准则控制单元(a)、(b)、(c)、(d)、(e)、(f)、(g)和(h)。
67.如权利要求66所述的设备,其特征在于,进一步包括根据预定准则把唯一的系数乘法器提供给某些数据元素。
68.如权利要求67所述的方设备,其特征在于,所述唯一的系数乘法器是基于B.G.Lee的算法。
69.如权利要求60所述的设备,其特征在于,所述数学运算是来自包括加、乘和减的组的。
70.如权利要求60所述的设备,其特征在于,每个所述蝶形处理器执行一维变换的一部分。
71.确定经编码数据的变换的一种设备,所述经编码数据包括象素域中的多个数据元素,所述设备包括配置成接收多个数据元素和把数据元素分组成象素域中的数据元素的多个组的块大小分配器;配置成把数据元素从象素域变换到频域的DCT/DQT变换器,所述变换器进一步包括输入寄存器,配置成接收所述组的预定量的数据元素;耦合到所述输入寄存器的至少一个蝶形处理器,把所述蝶形处理器配置成在所选择的数据元素对上执行至少一种数学运算以产生经处理数据元素的输出;耦合到所述蝶形处理器的至少一个中间寄存器,把所述中间寄存器配置成临时存储经处理的数据;以及耦合到所述中间寄存器和所述蝶形处理器的反馈回路,其中,如果使能的话,把所述反馈回路配置成把经处理数据元素的第一部分传递到合适的蝶形处理器以执行附加的数学运算,其中如果禁用的话,则把它配置成把经处理数据元素的第二部分传递到至少一个保持寄存器;其中把所述保持寄存器配置成存储经处理数据直到处理了所有第一部分数据元素;量化器,配置成对频域元素进行量化,以突出对于人的视觉系统更敏感的那些元素,并且使对于人的视觉系统较不敏感的那些元素不突出;串行化器,配置成产生频域元素的串行化流;以及可变长度编码器,配置成确定连续频域元素和不连续频域元素。
72.如权利要求71所述的设备,其特征在于,进一步包括耦合所述反馈回路和所述中间寄存器的至少一个输入多路复用器,其中把每个输入多路复用器配置成临时选择数据元素和把数据元素传递到合适的蝶形处理器。
73.如权利要求71所述的设备,其特征在于,进一步包括耦合所述蝶形处理器和所述中间寄存器的至少一个输出多路复用器,其中把每个输出多路复用器配置成临时选择数据元素和把数据元素传递到合适的中间寄存器。
74.如权利要求71所述的设备,其特征在于,可以把经编码数据的块表示为行数据和列数据,并且进一步包括耦合到输入寄存器的转置随机存取存储器(RAM),其中把所述转置RAM配置成当正在处理列数据时,存储行数据;以及当正在处理行数据时,存储列数据。
75.如权利要求74所述的设备,其特征在于,把所述转置RAM配置成存储经编码数据的两个块。
76.如权利要求74所述的设备,进一步包括耦合到所述保持寄存器的写入多路复用器,其特征在于,把所述写入多路复用器配置成对数据元素进行再排序以完成一维变换。
77.如权利要求71所述的设备,其特征在于,所述反馈回路允许再使用相同的部件而不管块大小。
78.如权利要求71所述的设备,其特征在于,进一步包括耦合到所述反馈回路的控制序列发生器,其特征在于,把所述控制序列发生器配置成使能或禁用所述反馈回路。
79.如权利要求78所述的设备,其特征在于,所述控制序列发生器把唯一的系数乘法器提供给所述蝶形处理器。
80.如权利要求78所述的设备,其特征在于,所述控制序列发生器根据预定事件使能所述输入寄存器中的某一些。
81.如权利要求78所述的设备,其特征在于,所述控制序列发生器根据预定准则使能所述蝶形处理器中的某一些。
82.如权利要求78所述的设备,其特征在于,所述控制序列发生器根据预定准则使能所述中间寄存器中的某一些。
83.如权利要求78所述的设备,其特征在于,所述控制序列发生器根据预定准则使能所述输出寄存器中的某一些。
84.如权利要求71所述的设备,其特征在于,所述数学运算是来自包括加、乘和减的组。
85.如权利要求71所述的设备,其特征在于,每个所述蝶形处理器执行一维变换的一部分。
86.把经编码数据从象素域变换到频域的一种方法,所述经编码数据包括多个数据元素,所述方法包括(a)把象素域中的多个数据元素分组成多个块,每个块包括象素域中的多个数据元素;(b)在所选择的对上执行至少一种数学运算以产生经处理的数据元素数据元素的输出;(c)作出任何经处理的数据元素是否需要附加的数学运算的确定;(d)选择需要附加数学运算的经处理数据元素的第一部分;(e)选择不需要附加数学运算的经处理数据元素的第二部分;(f)在所选择的经处理数据元素的第一部分对上执行至少一种数学运算以产生经处理数据元素的第二输出;(g)存储经处理的数据元素的第二部分直到处理了数据元素的所有第一部分;(h)按需要重复步骤(c)、(d)、(e)、(f)和(g)直到所有数据元素不需要附加的数学运算,并被转换成频域元素。(i)对频域数据元素进行量化,以突出于人的视觉系统更敏感的那些元素,并且使对于人的视觉系统较不敏感的那些元素不突出;(j)使经量化的频域元串行化以产生频域元的串行化流;以及(k)对经串行化的频域元进行编码,以判定连续频域元和不连续频域元。
87.如权利要求86所述的方法,其特征在于,可以把经编码数据的块表示为行数据和列数据,并且进一步包括当正在处理列数据时,存储行数据;以及当正在处理行数据时,存储列数据。
88.如权利要求86所述的方法,其特征在于,进一步包括根据所需要控制信号控制步骤(a)、(b)、(c)、(d)、(e)、(f)、(g)和(h)。
89.如权利要求88所述的方法,其特征在于,进一步包括根据预定准则把唯一的系数乘法器提供给某些数据元素。
90.如权利要求86所述的方法,其特征在于,每个所述蝶形处理器执行一维变换的一部分。
91.如权利要求86所述的方法,其特征在于,计算经编码数据的块的变换作为一系列一维变换被计算。
全文摘要
确定经编码数据的块的变换的一种设备,所述经编码数据的块包括多个数据元素。配置输入寄存器以接收预定量的数据元素。把至少一个蝶形处理器耦合到输入寄存器,并把所述蝶形处理器配置成在所选择的数据元素对上执行至少一种数学运算以产生经处理数据元素的输出。把至少一个中间寄存器耦合到所述蝶形处理器,并且配置成临时存储经处理的数据。把反馈回路耦合到中间寄存器和所述蝶形处理器,并且如果使能的话,则把反馈回路配置成把经处理数据元素的第一部分传递到合适的蝶形处理器以执行附加的数学运算,其中如果禁用的话,则把经处理的数据元素的第二部分传递到至少一个保持寄存器。
文档编号G06F7/00GK1518706SQ02810009
公开日2004年8月4日 申请日期2002年5月15日 优先权日2001年5月16日
发明者J·拉劳卡, C·A·额维尼, J·A·莱文, J 拉劳卡, 莱文, 额维尼 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1