CN101361062A - 用于信号及数据处理的高效无乘法计算 - Google Patents

用于信号及数据处理的高效无乘法计算 Download PDF

Info

Publication number
CN101361062A
CN101361062A CNA2006800455119A CN200680045511A CN101361062A CN 101361062 A CN101361062 A CN 101361062A CN A2006800455119 A CNA2006800455119 A CN A2006800455119A CN 200680045511 A CN200680045511 A CN 200680045511A CN 101361062 A CN101361062 A CN 101361062A
Authority
CN
China
Prior art keywords
value
series
intermediate value
multiplication
constant
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.)
Pending
Application number
CNA2006800455119A
Other languages
English (en)
Inventor
尤里·列兹尼克
钟奕俊
哈里纳特·加鲁达德里
纳维恩·D·斯里尼瓦沙穆尔蒂
蓬·塞奇通
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101361062A publication Critical patent/CN101361062A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明说明用于高效地对信号及数据处理执行计算的技术。对于无乘法的处理来说,基于将要处理的数据的输入值来产生一系列中间值。基于所述系列中的至少一个中间值产生所述系列中的至少一个其它中间值。提供所述系列中的一个中间值作为所述输入值与常数值相乘的输出值。所述常数值可以是整数常数、有理常数或无理常数。无理常数可用具有整数分子及为2的幂的分母的有理二进常数来近似。所述种无乘法处理可用于各种变换(例如,DCT及IDCT)、滤波器、及其它类型的信号及数据处理。

Description

用于信号及数据处理的高效无乘法计算
35 U.S.C.§119项下的优先权请求
本申请案请求对2005年10月12日提出申请的第60/726,307号美国临时申请案、2005年10月13日提出申请的第60/726,702号美国临时申请案(两者标题均为“DCT(离散余弦变换)/IDCT(反离散余弦变换)的高效无乘法实施方案(EfficientMultiplication-Free Implementation of DCT(Discrete Cosine Transform)/IDCT(InverseDiscrete Cosine Transform))”)的优先权,所述临时申请案受让予本发明的受让人且以引用的方式并入本文中。
技术领域
本揭示内容大体来说涉及处理,且更具体来说涉及用于高效地执行信号及数据处理的计算的技术。
背景技术
在各种应用中对各种类型的数据广泛地执行信号及数据处理。一种重要类型的处理是数据在不同域之间的变换。举例来说,通常使用离散余弦变换(DCT)来将数据从空间域变换到频域,且通常使用反离散余弦变换(IDCT)来将数据从频域变换到空间域。DCT广泛用于图像/视频压缩以使图像或视频帧中的像素块在空间上解相关。所得到的变换系数彼此的相关性通常小得多,此使所述系数更适用于量化及编码。DCT还表现出能量集中性质,其是将像素块的大多数能量映射到仅几个(通常低阶)系数的能力。此种能量集中性质可简化编码算法的设计。
可对大量数据执行例如DCT及IDCT等变换、以及其它类型的信号及数据处理。因此,希望尽可能高效地执行信号及数据处理的计算。此外,希望使用简单的硬件执行计算,以降低成本及复杂性。
因此,在所属技术中需要高效地执行信号及数据处理的计算的技术。
发明内容
本文说明用于高效地执行信号及数据处理的计算的技术。根据本发明的实施例,说明一种设备,其接收将要处理的数据的输入值并基于所述输入值产生一系列中间值。所述设备基于所述系列中的至少一个中间值来产生至少一个其它中间值。所述设备提供所述系列中的一个中间值作为所述输入值与常数值相乘的输出值。所述常数值可以是整数常数、有理常数、或无理常数。无理常数可用具有整数分子及为2的幂的分母的有理二进常数来近似。
根据另一实施例,说明一种对一组输入数据值执行处理以获得一组输出数据值的设备。所述设备执行至少一个输入数据值与用于所述处理的至少一个常数值的至少一次乘法。所述设备针对所述至少一次乘法产生至少一系列中间值,其中每一系列具有至少一个基于所述系列中至少一个其它中间值产生的中间值。所述设备提供每一系列中的一个或一个以上中间值作为将相关联输入数据值与一个或一个以上常数值相乘的一个或一个以上结果。
根据又一实施例,说明一种对一组输入值执行变换并提供一组输出值的设备。所述设备执行至少一个中间变量与用于所述变换的至少一个常数值的至少一次乘法。所述设备针对所述至少一次乘法产生至少一个系列中间值,其中每一系列具有至少一个基于所述系列中至少一个其它中间值产生的中间值。所述设备提供每一系列中的一个或一个以上中间值作为将相关联的中间变量与一个或一个以上常数值相乘的结果。所述变换可以是DCT、IDCT或某种其它类型的变换。
根据再一实施例,说明一种对八个输入值执行变换以获得八个输出值的设备。所述设备对第一中间变量执行两次乘法,对第二中间变量执行两次乘法,且针对所述变换执行总共六次乘法。
下文将进一步详细说明本发明的各个方面及实施例。
附图说明
图1显示8点IDCT的实例性因数分解的流程图。
图2显示实例性二维IDCT。
图3显示8点DCT的实例性因数分解的流程图。
图4显示实例性二维DCT。
图5显示图像/视频编码及解码系统的方块图。
图6显示编码系统的方块图。
图7显示解码系统的方块图。
图8A至8C显示三个实例性有限冲激响应(FIR)滤波器。
图9显示实例性无限冲激响应(IIR)滤波器。
具体实施方式
本文中所使用的“实例性”一词意指“用作实例、示例或例证”。本文中所说明的任何实例性实施例未必应视为较其它实例性实施例为优选或有利。
本文所说明的计算技术可用于各种类型的信号及数据处理,例如变换、滤波等等。所述技术还可用于各种应用,例如图像及视频处理、通信、计算、数据联网、数据存储等等。大体来说,所述技术可用于执行乘法的任何应用。为清楚起见,下文中将针对在图像及视频处理中常用的DCT及IDCT来具体说明所述技术。
II型的一维(1D)N点DCT及1D N点IDCT可定义如下:
F ( X ) = c ( X ) 2 · Σ x = 0 N - 1 f ( x ) · cos ( 2 x + 1 ) · Xπ 2 N , 及       方程式(1)
f ( x ) = Σ X = 0 N - 1 c ( X ) 2 · F ( X ) · cos ( 2 x + 1 ) · Xπ 2 N ,          方程式(2)
其中
f(x)是1D空间域函数,且
F(X)是1D频域函数。
方程式(1)中的1D DCT处理N个空间域值(其中x=0,...,N-1)并产生N个变换系数,其中X=0,...,N-1。方程式(2)中的1D IDCT处理N个变换系数并产生N个空间域值。II型DCT是一种类型的变换且通常被认为是针对图像/视频压缩所提出的几种能量集中变换中的最有效变换中的一种。
二维(2D)N×N DCT及2D N×N IDCT可定义如下:
F ( X , Y ) = c ( X ) · c ( Y ) 4 · Σ x = 0 N - 1 Σ y = 0 N - 1 f ( x , y ) · cos ( 2 x + 1 ) · Xπ 2 N · cos ( 2 y + 1 ) · Yπ 2 N , 及方程式(3)
f ( x , y ) = Σ X = 0 N - 1 Σ Y = 0 N - 1 c ( X ) · c ( Y ) 4 · F ( X , Y ) · cos ( 2 x + 1 ) · Xπ 2 N · cos ( 2 y + 1 ) · Yπ 2 N , 方程式(4)
其中
Figure A20068004551100097
f(x,y)是2D空间域函数,且
F(X,Y)是2D频域函数。
方程式(3)中的2D DCT处理空间域样本或像素的N×N块(其中x,y=0,...,N-1)并产生N×N变换系数块,其中X,Y=0,...,N-1。方程式(4)中的2D IDCT处理N×N变换系数块并产生N×N空间域样本块。大体来说,可针对任何尺寸的块执行2D DCT及2D IDCT。然而,8×8 DCT及8×8 IDCT通常用于图像及视频处理,其中N等于8。举例来说,在各种图像及视频编码标准(例如,JPEG、MPEG-1、MPEG-2、MPEG-4(P.2)、H.261、H.263等等)中使用8×8 DCT及8×8 IDCT作为标准构建块。
方程式(3)指示2D DCT可在X及Y方面分离。此种可分离的分解允许通过如下方式来计算2D DCT:首先对8×8数据块的每一行(或每一列)执行1D N点DCT变换以产生8×8中间块,随后对所述中间块的每一列(或每一行)执行1D N点DCT以产生8×8变换系数块。同样,方程式(4)指示2D IDCT可在x及y方面分离。通过将2D DCT/IDCT分解成一连串1D DCT/IDCT,使所述2D DCT/IDCT的效率取决于1D DCT/IDCT的效率。
1D DCT及1D IDCT可实施为分别显示于方程式(1)及(2)中的其原始形式。然而,可通过找到导致尽可能少的乘法及加法的因数分解来实现计算复杂性的显著降低。
图1显示8点IDCT的实例性因数分解的流程图100。在流程图100中,每一加法由符号“⊕”表示且每一乘法由方框表示。每一次加法将两个输入值相加或相减并提供输出值。每一次乘法将输入值乘以显示于方框内的变换常数并提供输出值。此因数分解使用以下常数因数:
Cπ/4=cos(π/4)≈0.707106781,
C3π/8=cos(3π/8)≈0.382683432,及
S3π/8=sin(3π/8)≈0.923879533.
流程图100接收八个经换算变换系数A0·F(0)至A7·F(7),对这些系数执行8点IDCT,且产生八个输出样本f(0)至f(7)。A0至A7是换算因数且在下文中给出。
A 0 = 1 2 2 ≈ 0.3535533906 , A 1 = cos ( 7 π / 16 ) 2 sin ( 3 π / 8 ) - 2 ≈ 0.4499881115 ,
A 2 = cos ( π / 8 ) 2 ≈ 0.6532814824 , A 3 = cos ( 5 π / 16 ) 2 + 2 cos ( 3 π / 8 ) ≈ 0.2548977895 ,
A 4 = 1 2 2 ≈ 0.3535533906 , A 5 = cos ( 3 π / 16 ) 2 - 2 cos ( 3 π / 8 ) ≈ 1.2814577239 ,
A 6 = cos ( 3 π / 8 ) 2 ≈ 0.2705980501 , A 7 = cos ( π / 16 ) 2 + 2 sin ( 3 π / 8 ) ≈ 0.3006724435 .
流程图100包括多次蝶形运算。蝶形运算接收两个输入值并产生两个输出值,其中一个输出值是所述两个输入值的和且另一输出值是所述两个输入值的差。举例来说,输入值A0·F(0)及A4·F(4)的蝶形运算对于顶部分支产生输出值A0·F(0)+A4·F(4)且对于底部分支产生输出值A0·F(0)-A4·F(4)。
图1显示8点IDCT的一个实例性因数分解。通过使用向其它已知的快速算法(例如,库利-图基DFT算法)的映射或通过应用系统性因数分解程序(例如,按时间抽取或按频率抽取),也已导出其它因数分解。图1中所示的因数分解导致总共6次乘法及28次加法,此明显少于方程式(2)的直接计算所需要的乘法及加法次数。大体来说,因数分解减少本质乘法(其是乘以无理常数的乘法)的次数,但不消除所述本质乘法。
在数学中通常使用以下术语:
·有理数-两个整数的比a/b,其中b不为0。
·无理数-不为有理数的任何实数。
·代数数-可表达为具有整数系数的多项式方程式的根的任何数。
·超越数-不为有理数或代数的任何实数或复数。
图1中的乘法是乘以无理常数,或更具体来说乘以代表不同角度(π/8的倍数)的正弦及余弦值的代数常数。这些乘法可使用浮点乘法器来执行,而此可能增大成本及复杂性。另一选择为,这些乘法可使用定点整数算术来高效地执行,以使用本文所说明的计算技术来实现所需要的精度。
在实例性实施例中,用具有二进分母的有理常数来近似无理常数,如下式:
α≈c/2b,                                            方程式(5)
其中α是将要近似的无理常数,c及b是整数,且b>0。分数c/2b通常还称作二进分数或二进比值。c还称作常数乘数,且b还称作移位常数。
方程式(5)中的近似值允许使用定点整数算术来执行整数变量x与无理常数α的乘法,如下式:
x·α≈(x·c)>>b,                                 方程式(6)
其中“>>”是指逐位右移位运算,其近似为除以2b。所述移位运算类似于但不确切地等于除以2b
在方程式(6)中,x与α的乘法是通过将x乘以整数值c并将结果右移b个位来近似的。然而,仍存在x与c的乘法。对于某些具有单循环乘法的计算环境来说,此乘法是可接受的。然而,在许多其中乘法占用多个循环或者较大硅面积的环境中,则可能希望避免乘法。所述现有环境的实例包括个人计算机(PC)、无线装置、蜂窝式电话及各种嵌入式平台。在这些情形中,可将乘以常数的乘法分解为一系列更简单的运算,例如加法及移位。
可使用实例来例示使用加法及移位来执行乘法。在此实例中,α=2-1/2=0.7071067811。使用二进分数对α进行的5个位的近似可表示为:α5≈23/32。可将十进制数23用二进制表示表示为:23=b 010111,其中“b”是指二进制。那么,x与α的乘法可近似为:
方程式(7)
方程式(7)中的乘法可使用四次移位及三次加法来实现。实质上,可对常数乘数c中的每一“1”位执行至少一次运算。
还可使用减法及移位来执行同一乘法,如下式:
Figure A20068004551100121
方程式(8)
可仅使用两次移位及两次减法来实现方程式(8)中的乘法。大体来说,通过使用上文所说明的技术,乘法的复杂性应与常数乘数c中“01”及“10”跃迁的次数成比例。
方程式(7)及(8)是用加法及移位来近似乘法的某些实例。在某些其它示例中可找到更高效的近似。
根据各个实例性实施例,可通过移位及加法运算并使用中间结果来高效地执行乘法减少总运算次数。所述实例性实施例可归纳如下。
在实例性实施例中,使用一系列通过移位及加法运算产生的中间值来实现与整数常数的乘法。术语“系列”及“序列”是同义的且可互换使用。此实例性实施例的大体程序可表示如下。
在给定整数变量x及整数常数u的情况下,整数值乘积
z=x·u,                                                  方程式(9)
可使用一系列中间值来获得
z0,z1,z2,...,zt,                                      方程式(10)
其中z0=0,z1=x,且对于所有2≤i≤t的值,zi获得如下:
z i = ± z j ± z k · 2 s i , 其中j,k<i,                    方程式(11)
其中“±”意指加或减,
zk·2si意指中间值zk左移位si个位,且
t意指所述系列中中间值的数量。
在方程式(11)中,zi可等于
Figure A20068004551100124
所述系列中的每一中间值zi可基于所述系列中的两个先前中间值zj及zk导出,其中zj或zk可等于0。每一中间值zi可通过一次移位及/或一次加法来获得。如果si等于0,那么不需要所述移位。如果zj=z0=0,那么不需要所述加法。针对所述乘法的加法及移位的总次数由所述系列中中间值的数量(其为t)以及每一中间值所使用的表达式决定。乘以常数u的乘法实质上分解为一系列移位及加法运算。
所述系列经定义使得所述系列中的终值变为所需要的整数值乘积,或
zt=z.                                                     方程式(12)
在另一实例性实施例中,用一系列由移位及加法运算产生的中间值来近似乘以具有二进分母的有理常数(其还称作有理二进常数)的乘法。此实例性实施例的大体程序可表示如下。
在给定整数变量x及有理二进常数u=c/2b(其中b及c是整数且b>0)的情况下,整数值乘积
z=(x·c)/2b,                                     方程式(13)
可使用一系列中间值来近似
z0,z1,z2,...,zt,                              方程式(14)
其中z0=0,z1=x,且对于所有2≤i≤t的值,zi获得如下:
z i = ± z j ± z k · 2 s i , 其中j,k<i,                方程式(15)
其中zk·2si意指中间值zk左移位或右移位(取决于常数si的符号)|si|个位。
所述系列经定义使得所述系列中的终值变为所需要的整数值乘积,或
zt≈z.                                             方程式(16)
在又一实例性实施例中,使用由移位及加法运算产生的共用系列中间值来实现乘以多个整数常数的乘法。此实例性实施例的大体程序可表示如下。
在给定整数变量x及整数常数u及v的情况下,两个整数值乘积
y=x·u  及  z=x·v                               方程式(17)
可使用一系列中间值来获得
w0,w1,w2,...,wt,                              方程式(18)
其中w0=0,w1=x,且对于所有2≤i≤t的值,按下式获得wi
w i = ± w j ± w k · 2 s i , 其中j,k<i,                   方程式(19)
其中
Figure A20068004551100133
意指中间值wk左移位si个位。
所述系列经定义使得在步骤m及n中获得所需要的整数值乘积:
wm=y  及  wn=z,                                 方程式(20)
其中m,n≤t及m或n等于t。在再一实例性实施例中,使用由移位及加法运算产生的共用系列中间值来实现乘以多个有理二进常数的乘法。此实例性实施例的大体程序可表示如下。
在给定整数变量x及有理二进常数u=c/2b及v=e/2d,其中b、c、d、e为整数,b>0且d>0的情况下,两个整数值乘积
y=(x·c)/2b  及  z=(x·e)/2d                     方程式(21)
可使用一系列中间值来近似
w0,w1,w2,...,wt,                              方程式(22)
其中w0=0,w1=x,且对于所有2≤i≤t的值,按下式获得wi
w i = ± w j ± w k · 2 s i , 其中j,k<i,                 方程式(23)
其中意指中间值wk左移位或右移位(此取决于常数si的符号)|si|个位。
所述系列经定义使得在步骤m及n中获得所需要的整数值乘积,如下式:
wm≈y  及  wn≈z,                               方程式(24)
其中m,n≤t及m或n等于t。
表1归纳根据上文所说明实例性实施例的乘法的程序。
                              表1
Figure A20068004551100141
上文已说明整数变量x乘以一个及两个常数的乘法。大体来说,整数变量x可乘以任何数量的常数。可通过使用一共用系列的中间值进行联合因数分解来实现整数变量x乘以两个或更多个常数的乘法以产生所述乘法的所需乘积。所述共用的中间值系列可利用所述乘法计算中的任何相似性或重叠,以减少针对这些乘法的移位及加法运算的次数。
在上文所说明的每一实例性实施例的计算过程中,可省略例如加上或减去0及移位0个位等平凡运算。可进行以下简化:
z i = ± z 0 ± z k · 2 s i ⇒ z i = ± z k · 2 s i , 方程式(25)
w i = ± w 0 ± w k · 2 s i ⇒ w i = ± w k · 2 s i , 方程式(26)
z i = ± z j ± z k · 2 0 ⇒ z i = ± z j ± z k , 方程式(27)
w i = ± w j ± w k · 2 0 ⇒ w i = ± w j ± w k . 方程式(28)
在方程式(25)及(26)中的每一者中,左边的表达式涉及加上或减去0(由z0或w0表示),并可如
Figure A20068004551100147
右边的对应表达式(其可通过一次移位来执行)所指示来进行简化。在方程式(27)及(28)中的每一者中,
Figure A20068004551100148
左边的表达式涉及移位0个位(由20表示),并可如
Figure A20068004551100149
右边的对应表达式(其可通过一次加法来执行)所指示来进行简化。
在上文所说明的实例性实施例中,每一系列的元素(为简明起见)称作“中间值”,即使一个中间值等于输入值且一个或一个以上中间值等于一个或一个以上输出值。还可将系列的元素称作其它术语。举例来说,可将系列定义为包括输入值(对应于z1或w1)、0个或多个中间结果及一个或一个以上输出值(对应于zt或wm及wn)。
在上文所说明的每一实例性实施例中,中间值系列可经选择使得整个运算的总计算或实施成本降到最低。举例来说,所述系列可经选择使得其包括最少数量的中间值或最小的t值。所述系列还可经选择,使得可通过最少数量的移位及加法运算来产生所述中间值。最少数量的中间值通常会(但并非总是)导致最少数量的运算。可以各种方式来决定所需要的系列。在实例性实施例中,通过如下方式来决定所需要的系列:评价所有可能的中间值系列,计算每一系列的中间值数量或运算次数,并选择具有最少中间值数量及/或最少运算次数的系列。
上文所说明的任一实例性实施例可用于整数变量x与一个或一个以上常数的一次或一次以上乘法。将要使用的特定实例性实施例可取决于所述常数是整数常数还是无理常数。与多个常数相乘在变换及其它类型的处理中普遍。在DCT及IDCT中,通过乘以正弦及余弦来实现平面旋转。举例来说,图1中的中间变量Fc及Fd分别乘以cos(3π/8)及cos(3π/8)两者。
可使用上文所说明的实例性实施例来高效地执行图1中的乘法。图1中的乘法与以下无理常数相乘:
Cπ/4=cos(π/4)≈0.707106781,
C3π/8=cos(3π/8)≈0.382683432,及
S3π/8=sin(3π/8)=cos(π/8)≈0.923879533.
以上无理常数可用具有足以实现最终结果的所需要精度的位数的有理常数来近似。在以下说明中,每一超越常数用两个有理二进常数来近似。第一有理常数经选择以满足IEEE 1180-1190对于8位像素的精度准则。第二有理常数经选择以满足IEEE1180-1190对于12位像素的精度准则。
超越常数Cπ/4可用8个位及16个位的有理二进常数来近似,如下式:
C π / 4 8 = 181 256 = b 010110101 b 100000000 C π / 4 16 = 46341 65536 = b 01011010100000101 b 10000000000000000 , 方程式(29)
其中Cπ/4 8是Cπ/4的8个位的近似值,而Cπ/4 16是Cπ/4的16个位的近似值。
整数变量x乘以常数Cπ/4 8的乘法可表达为:
z=(x·181)/256.                                    方程式(30)
方程式(19)中的乘法可使用以下一系列运算来实现:
z1=x,              //1                                方程式(31)
z2=z1+(z1>>2),   //101
z3=z1-(z2>>2),   //01011
z4=z3+(z2>>6),   //010110101.
“//”右边的二进制值是乘以变量x的中间常数。
所需要的8个位的乘积等于z4,或z4=z。可通过三次加法及三次移位来执行方程式(30)中的乘法以产生三个中间值z2、z3及z4
整数变量x乘以常数Cπ/4 16的乘法可表达为:
z=(x·46341)/65536.                                    方程式(32)
方程式(32)中的乘法可通过在方程式组(31)中所示的一系列中间值再加上一次运算来实现:
z5=z4+(z2>>11),    //01011010100000101.             方程式(33)
所需要的16个位的乘积近似等于z5,或z5≈z。可通过四次加法及四次移位来执行方程式(32)中的乘法来获得四个中间值z2、z3、z4及z5
在因数分解的奇数部分中在平面旋转中使用常数C3π/8及S3π/8。所述奇数部分包含具有奇数索引的变换系数。如图1中所示,乘以这些常数的乘法针对中间变量Fc及Fd中的每一者同时执行。因此,可针对这些常数使用联合因数分解。
超越常数C3π/8及S3π/8可用有理二进常数来近似,如下式:
C 3 π / 8 7 = 49 128 = b 00110001 b 10000000 , C 3 π / 8 13 = 3135 8192 = b 00110000111111 b 10000000000000 , 及    方程式(34)
S 3 π / 8 9 = 473 512 = b 0111011001 b 1000000000 , S 3 π / 8 15 = 30273 32768 = b 0111011001000001 b 1000000000000000 , 方程式(35)
其中C3π/8 7是C3π/8的7个位的近似值,C3π/8 13是C3π/8的13个位的近似值,S3π/8 9是S3π/8的9个位的近似值,且S3π/8 15是S3π/8的15个位的近似值。C3π/8的7个位的近似值及S3π/8的9个位的近似值足以满足IEEE 1180-1190对于8个位像素的精度准则。C3π/8的13个位的近似值及S3π/8的15个位的近似值足以实现16个位像素的所需要的较高精度。
整数变量x乘以常数C3π/8 7及C3π/8 9的乘法可表达为:
y=(x·49)/128  及  z=(x·473)/512.                   方程式(36)
方程式(36)中的乘法可通过以下一系列运算来实现:
w1=x,                 //1                            方程式(37)
w2=w1-(w1>>2),      //011
w3=w1>>6,           //0000001
w4=w2+w3,             //0110001
w5=w1-w3,             //0111111
w6=w4>>1,           //00110001
w7=w5-(w1>>4),      //0111011
w8=w7+(w1>>9),      //0111011001.
所需要的8个位的乘积等于w6及w8,或w6=y且w8=z。可通过五次加法及五次移位来执行方程式(36)中通过联合因数分解的两次乘法以产生七个中间值w2到w8。在w3及w6的产生中省略了0的加法。在w4及w5的产生中省略了0个位的移位。
整数变量x乘以常数C3π/8 13及C3π/8 15的乘法可表达为:
y=(x·3135)/8192  及  z=(x·30273)/32768.            方程式(38)
方程式(38)中的乘法可通过以下一系列运算来实现:
w1=x,                //1                             方程式(39)
w2=w1-(w1>>2),     //011
w3=w1>>6,          //0000001
w4=w1+w3,            //1000001
w5=w1-w3,            //0111111
w6=w2>>1,          //0011
w7=w6+(w5>>7),     //00110000111111
w8=w5-(w1>>4),     //0111011
w9=w8+(w4>>9),     //0111011001000001.
所需要的16个位的乘积等于w7及w9,或w7=y且w9=z。可通过六次加法及六次移位来执行方程式(38)中的两次乘法以产生八个中间值w2到w9。在w3及w6的产生中省略了0的加法。在w4及w5的产生中省略了0个位的移位。
对于图1中所示使用因数分解的8点IDCT来说,使用本文所说明的乘以常数Cπ/4 8、Cπ/4 7及Cπ/4 9的技术,可将8个位精度的总复杂性表示为:28+3·2+5·2=44次加法及3·2+5·2=16次移位。对于具有乘以常数Cπ/4 16、C3π/8 13及C3π/8 15的乘法的8点IDCT来说,16个位的精度的总复杂性可表示为:28+4·2+6·2=48次加法及4·2+6·2=20次移位。大体来说,可通过对每一常数使用足够数量的位来实现任何所需要的精度。总复杂性相对于方程式(2)中所示的强力计算显著降低。此外,可在无任何乘法且仅使用加法及移位的情况下实现变换。
方程组(31)、(33)、(37)及(39)中的中间值序列是实例性序列。还可使用其它中间值序列来获得所需要的乘积。大体来说,希望使既定序列中的加法及/或移位运算次数降到最低。在某些平台上,加法可能比移位复杂,因此所述目标变为找到具有最少数量的加法的序列。在某些其它平台上,移位可能更昂贵,在此情形中,所述序列应包含最少数量的移位(及/或在所有移位运算中所移位的位总数)。大体来说,所述序列可包含最少加权平均数量的加法及移位运算,其中加权相应地表示加法及移位的相对复杂性。在寻找所述序列时,还可设置某些额外约束条件。举例来说,确保相互依赖的中间值的最长子序列不超过某既定值可能是重要的。可用于选择所述序列的其它实例性准则可包括由右移位引入的逼近误差的某些度量(例如,平均值、方差、量值等)。
可通过不同的中间值序列来实现整数变量x与一个或一个以上常数的乘法。可以不同方式确定具有最少数量的加法及/或移位运算或具有额外所施加约束条件或最优化准则的序列。在一种方案中,通过穷尽性搜索来识别所有可能的中间值序列并对其进行评价。选择使用具有最少数量的运算(及满足所有其它约束条件及准则)的序列。
中间值序列取决于用于近似无理常数的有理常数。每一有理常数的移位常数b决定位移位的数量且还可影响移位及加法运算的次数。较小的移位常数通常(但并非总是)意味着用于近似乘法的移位及加法运算次数较少。
在某些情形中,可为流程图中的各组乘法找到共用的换算因数,以便使无理常数的逼近误差降到最低。所述共用换算因数可与所述变换的输入换算因数A0至A7相组合并合并。
曾通过计算机模拟来测试上文所说明的8个位及16个位的IDCT实施方案。IEEE标准1180-1190及其待决的替代标准为实际DCT/IDCT实施方案的精确度提供了被广泛接受的基准。总的来说,此标准规定测试参考64个位浮点DCT,后跟使用来自随机数产生器的输入数据的近似IDCT。所述参考DCT接收所述输入数据并产生变换系数。所述近似IDCT接收所述变换系数(经适当舍入)并产生输出样本。然后,使用在表2中给出的五个不同度量将所述输出样本与所述输入数据相比较。另外,要求所述近似IDCT在被供以变换系数0时产生全0值并展现接近DC的反转行为。
                                 表2
 度量   说明   要求
 P   所重构像素之间的最大绝对差   p≤1
 d[x,y]   像素之间的平均差   对于所有[x,y],|d[x,y]|≤0.015
 M   所有逐像素差的平均值   |m|≤0.0015
 e[x,y]   像素之间的平均平方差   对于所有[x,y],|e[x,y]|≤0.06
 N   所有逐像素平方差的平均值   |n|≤0.02
计算机模拟指示采用上文所说明的8个位的近似值的IDCT对于表2中的所有度量满足IEEE 1180-1190精度要求。计算机模拟进一步指示采用上文所说明的16个位的近似值的IDCT对于表2中的所有度量超过IEEE 1180-1190精度要求。8个位及16个位的IDCT近似值进一步超过全0值输入及接近DC的反转测试。
为清楚起见,以上许多说明针对满足IEEE标准1180-1190的精度要求的经8点换算的ID IDCT的高效实施方案。此经换算1D IDCT适用于JPEG、MPEG-1,2,4、H.261、H.263编码器/解码器(编解码器)及其它应用。所述1D IDCT采用图1中所示的经换算IDCT因数分解,其具有28次加法及与无理常数的6次乘法。这些乘法可如上文所说明分解为移位及加法运算的序列。通过使用中间结果产生中间值序列来减少运算次数。另外,联合计算既定变量与多个常数的乘法,以便通过将存在于这些常数中的共用因数(或图案)仅计算一次来进一步减少移位及加法运算的次数。上文所说明的8个位的8点经换算1D IDCT的总复杂性为44次加法及16次移位,此使此IDCT成为迄今为止最简单的无乘法器且符合IEEE-1180的实施方案。上文所说明的16个位的8点经换算1D IDCT的总复杂性是48次加法及20次移位。更精确的此1D IDCT可用于MPEG-4演播室类及其它应用且还适用于新的MPEG IDCT标准。
图2显示以经换算及分离方式实施的2D IDCT 200的实例性实施例。2D IDCT 200包含输入换算级212,后跟用于各列(或各行)的第一经换算1D IDCT级214,再后随用于各行(或各列)的第二经换算1D IDCT级216,且最后是输出换算级218。经换算因数分解是指变换的输入及/或输出乘以已知换算因数的事实。所述换算因数可包括共用因数,所述共用因数移至所述变换前面及/或后面以在流程图内产生更简单的常数且由此简化计算。输入换算级212可使变换系数中的每一者自左乘常数C=2P,或使每一变换系数左移位P个位,其中P表示所保留“尾数”位的数量。在所述换算之后,可对DC变换系数附加一个量2p-1,以在输出样本中实现正确的舍入。
第一1D IDCT级214对经换算变换系数块的每一列执行N点IDCT。第二1D IDCT级216对第一1D IDCT级214产生的中间块的每一列执行N点IDCT。对于8×8IDCT来说,可如上文所说明及图1中所示对每一列及每一行执行8点1D IDCT。第一级及第二级的1D IDCT可直接对其输入数据进行运算而不进行任何内部左换算及右换算。在处理各行及各列两者之后,输出换算级218可将从第二1D IDCT级216得到的量右移P个位,以产生2D IDCT的输出样本。换算因数及精度常数P可经选择,以便可使用所需要宽度的寄存器来实施整个2D IDCT。
图2中的2D IDCT的经换算实施方案应导致总数量更少的乘法且进一步允许在量化及/或反量化级执行所述乘法中的一大部分。量化及反量化通常由编码器执行。反量化通常由解码器执行。
图3显示8点DCT的实例性因数分解的流程图300。流程图300接收八个输入样本f(0)至f(7),对这些输入样本执行8点DCT,并产生八个经换算变换系数8A0·F(0)至8A7·F(7)。换算因数A0至A7已在上文中给出。流程图300经定义以使用尽可能少的乘法及加法。用于中间变量Fe、Ff、Fg及Fh的乘法可如上文所说明来执行。特定来说,无理常数1/Cπ/4、C3π/8及S3π/8可用有理常数来近似,且与所述有理常数的乘法可通过中间值序列来实现。
图4显示以可分离方式实施并采用经换算1D DCT因数分解的2D DCT 400的实例性实施例。2D DCT 400包含输入换算级412,后跟用于各列(或各行)的第一1D DCT级414,再后随用于各行(或各列)的第二1D DCT级416,且最后是输出换算级418。输入换算级412可自左乘输入样本。第一1D DCT级414对经换算变换系数块的每一列执行N点DCT。第二1D DCT级416对第一1D DCT级414产生的中间块的每一列执行N点DCT。输出换算级418可对第二1D DCT级416的输出进行换算以为2D DCT产生经变换的系数。
图5显示图像/视频编码及解码系统500的方块图。在编码系统510中,DCT单元520接收输入数据块(表示为Px,y)并产生变换系数块。所述输入数据块可以是N×N像素块、N×N像素差值(或残数)块或从源信号(例如,视频信号)产生的某种其它类型的数据。所述像素差值可以是两个像素块之间的差或像素块与预测像素块之间的差等等。N通常等于8,但还可以是其它值。编码器530从DCT单元520接收变换系数块,对所述变换系数进行编码,并产生经压缩数据。编码器530可执行各种功能,例如N×N变换系数块的折线扫描、所述变换系数的量化、熵编码、包化等等。可将来自编码器530的经压缩数据存储在存储单元中及/或经由通信信道(云状540)发送。
在解码系统550中,解码器560从存储单元或通信信道540接收所述经压缩数据并重构所述变换系数。解码器560可执行各种功能,例如解包化、熵解码、反量化、反折线扫描等等。IDCT单元570从解码器560接收所重构的变换系数并产生输出数据块(表示为P’x,y)。所述输出数据块可以是N×N经重构像素块、N×N经重构像素差值块等等。所述输出数据块是提供到DCT单元520的输入数据块的估计且可用于重构所述源信号。
图6显示编码系统600的方块图,编码系统600是图5中的编码系统510的实例性实施例。捕获装置/存储器610可接收源信号,执行向数字格式的转换,并提供输入/原始数据。捕获装置610可以是摄像机、数字化器或某种其它装置。处理器620处理所述原始数据并产生经压缩数据。在处理器620内,所述原始数据可由DCT单元622变换、由折线扫描单元624扫描、由量化器626量化、由熵编码器628编码并由包化器630包化。DCT单元622可根据上文所说明的技术对所述原始数据执行2D DCT。单元622至630中的每一者可实施为硬件、固件及/或软件。举例来说,DCT单元622可使用专用硬件、或一组用于算术逻辑单元(ALU)的指令等等、或其组合来实施。
存储单元640可存储来自处理器620的经压缩数据。发射机642可发射所述经压缩数据。控制器/处理器650控制编码系统600中各个单元的运作。存储器652存储编码系统600的数据及程序码。一个或一个以上总线660互连编码系统600中的各个单元。
图7显示解码系统700的方块图,解码系统700是图5中的解码系统550的实例性实施例。接收器710可从编码系统接收经压缩数据,且存储单元712可存储所述所接收的经压缩数据。处理器720处理所述经压缩数据并产生输出数据。在处理器720内,所述经压缩数据可由解包化器722解包化,由熵解码器724解码,由反量化器726反量化,由反折线扫描单元728布置成正确的次序,并由IDCT单元730进行变换。IDCT单元730可根据上文所说明的技术对所重构的变换系数执行2D IDCT。单元722至730中的每一者可实施为硬件、固件及/或软件。举例来说,IDCT单元730可使用专用硬件、或一组用于ALU的指令等等、或其组合来实施。显示器单元740显示来自处理器720的经重构图像及视频。
控制器/处理器750控制解码系统700中各个单元的运作。存储器752存储解码系统700的数据及程序码。一个或一个以上总线760互连解码系统700中的各个单元。
处理器620及720可分别使用一个或一个以上专用集成电路(ASIC)、数字信号处理器(DSP)及/或某种其它类型的处理器来实施。另一选择为,处理器620及720可分别替换为一个或一个以上随机存取存储器(RAM)、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、磁盘、光盘及/或所属技术中已知的其它类型的易失性及非易失性存储器。
本文所说明的计算技术可用于各种类型的信号及数据处理。上文已说明所述技术对变换的应用。下文将说明所述技术对某些实例性滤波器的应用。
图8A显示有限冲激响应(FIR)滤波器800的实例性实施例的方块图。在FIR滤波器800中,将输入样本r(n)提供到多个串联耦合的延迟元件812b至812l。每一延迟元件812提供一个样本周期的延迟。将所述输入样本及延迟元件812b至812l的输出分别提供到乘法器814a至814l。每一乘法器814还接收相应的滤波器系数,将其样本乘以所述滤波器系数,并将经换算的样本提供到加法器816。在每一样本周期中,加法器816将来自乘法器814a至814l的经换算样本相加并提供所述样本周期的输出样本。样本周期n的输出样本y(n)可表达为:
y ( n ) = Σ i = 0 L - 1 h i · r ( n - i ) , 方程式(40)
其中hi是FIR滤波器800的第i个分支的滤波器系数。
乘法器814a至814l中的每一皆可如上文所说明使用移位及加法运算来实施。每一滤波器系数皆可用整数常数或有理二进常数来近似。来自每一乘法器814的每一经换算样本可基于一系列中间值来获得,所述一系列中间值基于用于所述乘法器的整数常数或有理二进常数产生。
图8B显示FIR滤波器850的实例性实施例的方块图。在FIR滤波器850中,将输入样本r(n)提供到L个乘法器852a至852l。每一乘法器852还接收相应的滤波器系数,将其样本与所述滤波器系数相乘,并将经换算的样本提供到延迟单元854。单元854将每一FIR分支的经换算样本延迟适当的量。在每一样本周期中,加法器856将来自单元854的N个经延迟样本相加并提供所述样本周期的输出样本。
FIR滤波器850还实施方程式(40)。然而,使用L个滤波器系数对每一输入样本执行L次乘法。可对这些L次乘法使用联合因数分解以降低乘法器852a至852l的复杂性。
图8C显示FIR滤波器870的实例性实施例的方块图。FIR滤波器870包括L/2个级联耦合的区段880a至880j。第一区段880a接收输入样本r(n),而最后区段880j提供输出样本y(n)。每一区段880是二阶滤波器区段。
在每一区段880内,将FIR滤波器870的输入样本r(n)或来自先前区段的输出样本提供到串联耦合的延迟元件882b及882c。将延迟元件882b及882c的输入样本及输出分别提供到乘法器884a至884c。每一乘法器814还接收相应的滤波器系数,将其样本与所述滤波器系数相乘,并将经换算的样本提供到加法器886。在每一样本周期中,加法器886将来自乘法器884a至884c的经换算样本相加并提供所述样本周期的输出样本。来自最后区段880j的样本周期n的输出样本y(n)可表达为:
y ( n ) = Π i = 1 L / 2 [ h 0 , i · r ( n ) + h 1 , i · r ( n - 1 ) + h 2 , i · r ( n - 2 ) ] , 方程式(41)
其中h0,i、h1,i及h2,i是第i个滤波器区段的滤波器系数。
对每一区段中的每一输入样本最多执行三次乘法。可对这些乘法使用联合因数分解以降低每一区段中乘法器882a、882b及882c的复杂性。
图9显示无限冲激响应(IIR)滤波器900的实例性实施例的方块图。在IIR滤波器900内,乘法器912接收输入样本r(n),将其乘以滤波器系数k并提供经换算的样本。加法器914从所述经换算样本中减去乘法器918的输出并提供输出样本z(n)。寄存器916存储来自加法器914的输出样本。乘法器918将来自寄存器916的经延迟输出样本乘以滤波器系数(1-k)。样本周期n的输出样本z(n)可表达为:
z(n)=k·r(n)-(1-k)·z(n-1),                          方程式(42)
其中k是决定滤波程度的滤波器系数。
乘法器912及918中的每一者如上文所说明使用移位及加法运算来实施。滤波器系数k及(1-k)可分别用整数常数或有理二进常数来近似。来自乘法器912及918中的每一者的每一经换算样本可基于一系列中间值来导出,所述一系列中间值基于用于所述乘法器的整数常数或有理二进常数产生。
本文所说明的计算可实施于硬件、固件、软件或其组合中。举例来说,将输入值与常数值相乘的移位及加法运算可使用一个或一个以上逻辑来执行,所述逻辑还可称作单元、模块等。逻辑可以是硬件逻辑,包含逻辑门、晶体管及/或所属技术中所熟知的其它电路。逻辑还可以是固件及/或软件逻辑,包含机器可读码。
在一种设计中,一种设备包含:(a)第一逻辑,其用于接收将要处理的数据的输入值,(b)第二逻辑,其用于基于所述输入值来产生一系列中间值并基于所述系列中至少一个中间值来产生所述系列中的至少一个其它中间值,及(3)第三逻辑,其用于提供所述系列中的一个中间值作为将所述输入值与常数值相乘的输出值。所述第一、第二及第三逻辑可以是分离的逻辑。另一选择为,所述第一、第二及第三逻辑可以是同一共用逻辑或共享逻辑。举例来说,所述第三逻辑可以上所述第二逻辑的一部分,而所述第二逻辑可以是所述第一逻辑的一部分。
一种设备还可通过如下方式对输入值执行运算:基于所述输入值产生一系列中间值,基于所述系列中至少一个中间值产生所述系列中至少一个其它中间值,并提供所述系列中的一个中间值作为所述运算的输出值。所述运算可以是算术运算、数学运算(例如,乘法)、某种其它类型的运算或一组运算或运算的组合。
对于固件及/或软件实施方案来说,可使用执行所需要的移位及加法运算的机器可读码来实现输入值与常数值的乘法。所述码可硬接线于或存储于存储器(例如,图6中的存储器652或图7中的存储器752)中并由处理器(例如,处理器650或750)或某种其它硬件单元执行。
本文所说明的计算技术可实施于各种类型的设备中。举例来说,所述技术可实施于不同类型的处理器、不同类型的集成电路、不同类型的电子装置、不同类型的电子电路等等中。
本文所说明的计算技术可使用硬件、固件、软件、或其组合来实施。可将所述计算编码为携载于所属技术中熟知的任一计算机可读媒体上的计算机可读指令。在本说明书及随附权利要求书中,术语“计算机可读媒体”是指参与向任何处理器(例如,图6及7中所示的控制器/处理器)提供用于执行的指令的任何媒体。此种媒体可以是存储器类型且可采取如上文所说明的易失性或非易失性存储媒体(举例来说,分别在对图6及7中的处理器620及720的说明中)的形式。此种媒体还可以是传输类型并可包括同轴电缆、铜导线、光缆及能够携载机器或计算机可读的信号的声波或电磁波的空中接口。
所属领域的技术人员应了解,可使用各种不同技术及技法中的任一者来表示信息及信号。举例来说,整个以上说明可能提及的数据、指令、命令、信息、信号、位、符号及芯片可由电压、电流、电磁波、磁场或粒子、光场或粒子或其任一组合表示。
所属领域的技术人员应进一步了解,结合本文所揭示实施例而说明的各种例示性逻辑块、模块、电路、及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清楚例示硬件与软件的此种可互换性,上文就其功能性大体说明了各种例示性组件、块、模块、电路及步骤。所述功能性实施为硬件还是软件取决于施加到整个系统的特定应用和设计约束条件。所属领域的技术人员可针对每一特定应用以不同的方式实施所述功能性,但此类实施方案决策不应被解释为导致背离本发明的范围。
结合本文所揭示实施例说明的各种例示性逻辑块、模块及电路可通过以下装置实施或执行:通用处理器、DSP、ASIC、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其设计用于执行本文所说明功能的任一组合。通用处理器可以是微处理器,但另一选择为,所述处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合或任何其它此类配置。
结合本文所揭示实施例说明的方法或算法的步骤可直接体现于硬件、由处理器执行的软件模块或两者的组合中。软件模块可驻存于RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可抽换式磁盘、CD-ROM或所属技术中已知的任何其它形式的存储媒体中。实例性存储媒体耦合到所述处理器使得所述处理器可从所述存储媒体读取信息及将信息写入所述存储媒体。另一选择为,所述存储媒体可整合到所述处理器中。所述处理器及所述存储媒体可驻存于ASIC中,所述ASIC可驻存于用户终端中。另一选择为,所述处理器及所述存储媒体可作为离散组件驻存于用户终端中。
提供对所揭示实施例的以上说明以使所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将易于得出对这些实施例的各种修改,且本文所定义的一般原理可在背离本发明的精神或范围的情况下适用于其它实施例。因此,本文并非打算将本发明限定为本文所示实施例,而是赋予其与本文所揭示原理及新颖特征相一致的最宽广范围。

Claims (49)

1、一种设备,其包含:
第一逻辑,其接收将要处理的数据的输入值;
第二逻辑,其基于所述输入值来产生一系列中间值并基于所述系列中的至少一个中间值产生所述系列中的至少一个其它中间值;及
第三逻辑,其提供所述系列中的一个中间值作为所述输入值与常数值的乘法的输出值。
2、如权利要求1所述的设备,其中所述第二逻辑基于所述系列中的至少一个先前中间值产生除所述系列中的第一中间值以外的所述系列中的每一中间值。
3、如权利要求1所述的设备,其中所述第二逻辑将所述系列中的第一中间值设定为所述输入值并基于所述系列中的至少一个先前中间值来产生每一后续中间值,且其中所述第三逻辑提供所述系列中的最后中间值作为所述输出值。
4、如权利要求1所述的设备,其中所述第二逻辑通过对所述系列中的至少一个先前中间值执行位移位、加法或位移位及加法来产生除所述系列中的第一中间值以外的所述系列中的每一中间值。
5、如权利要求1所述的设备,其中所述常数值用整数值来近似。
6、如权利要求1所述的设备,其中所述常数值用有理二进常数来近似,所述有理二进常数具有整数分子及为2的幂的分母。
7、如权利要求1所述的设备,其中所述第三逻辑提供所述系列中的另一中间值作为所述输入值与另一常数值的另一乘法的另一输出值。
8、如权利要求7所述的设备,其中所述常数值用整数值来近似。
9、如权利要求7所述的设备,其中所述常数值用有理二进常数来近似,每一所述有理二进常数具有整数分子及为2的幂的分母。
10、如权利要求1所述的设备,其中所述系列包括用以获得所述输出值的最少数量的中间值。
11、如权利要求1所述的设备,其中所述系列的中间值用最少数量的移位及加法运算来产生。
12、一种方法,其包含:
接收将要处理的数据的输入值;
基于所述输入值来产生一系列中间值,所述系列中的至少一个中间值是基于所述系列中的至少一个其它中间值而产生的;及
提供所述系列中的一个中间值作为所述输入值与常数值的乘法的输出值。
13、如权利要求12所述的方法,其中所述产生所述系列的中间值包含
将所述系列中的第一中间值设定为所述输入值,及
基于所述系列中的至少一个先前中间值产生每一后续中间值。
14、如权利要求12所述的方法,其中所述产生所述系列的中间值包含
通过对所述系列中的至少一个先前中间值执行位移位、加法或位移位及加法来产生除所述系列中的第一中间值以外的所述系列中的每一中间值。
15、如权利要求12所述的方法,其进一步包含:
提供所述系列中的另一中间值作为所述输入值与另一常数值的另一乘法的另一输出值。
16、一种设备,其包含:
接收装置,其用于接收将要处理的数据的输入值;
产生装置,其用于基于所述输入值来产生一系列中间值,所述系列中的至少一个中间值是基于所述系列中的至少一个其它中间值而产生的;及
提供装置,其用于提供所述系列中的一个中间值作为所述输入值与常数值的乘法的输出值。
17、如权利要求16的所述设备,其中所述用于产生所述系列的中间值的装置包含
设定装置,其用于将所述系列中的第一中间值设定为所述输入值,及
产生装置,其用于基于所述系列中的至少一个先前中间值产生每一后续中间值。
18、如权利要求16所述的设备,其中所述用于产生所述系列的中间值的装置包含
产生装置,其用于通过对所述系列中的至少一个先前中间值执行位移位、加法或位移位及加法来产生除所述系列中的第一中间值以外的所述系列中的每一中间值。
19、如权利要求16所述的设备,其进一步包含:
提供装置,其用于提供所述系列中的另一中间值作为所述输入值与另一常数值的另一乘法的另一输出值。
20、一种用以获得运算的输出值的设备,其包含:
第一逻辑,其接收将要处理的数据的输入值;
第二逻辑,其基于所述输入值来产生一系列中间值并基于所述系列中的至少一个中间值来产生所述系列中的至少一个其它中间值;及
第三逻辑,其提供所述系列中的一个中间值作为所述运算的所述输出值。
21、如权利要求20所述的设备,其中所述运算是所述输入值与常数值的乘法。
22、如权利要求20所述的设备,其中所述第二逻辑将所述系列中的第一中间值设定为所述输入值并基于所述系列中的至少一个先前中间值来产生每一后续中间值,且其中所述第三逻辑提供所述系列中的最后中间值作为所述运算的所述输出值。
23、一种获得运算的输出值的方法,其包含:
接收将要处理的数据的输入值;
基于所述输入值来产生一系列中间值,所述系列中的至少一个中间值是基于所述系列中的至少一个其它中间值而产生的;及
提供所述系列中的一个中间值作为所述运算的所述输出值。
24、一种计算机可读媒体,其包括存储于其上的至少一个指令,所述计算机可读媒体包含:
用以接收将要处理的数据的输入值的至少一个指令,
基于所述输入值来产生一系列中间值的至少一个指令,所述系列中的至少一个中间值是基于所述系列中的至少一个其它中间值而产生的,及
用以提供所述系列中的一个中间值作为运算的输出值的至少一个指令。
25、一种设备,其包含:
第一逻辑,其对一组输入数据值执行处理以获得一组输出数据值;
第二逻辑,其执行输入数据值与用于所述处理的常数值的乘法,以针对所述乘法产生一系列中间值,且基于所述系列中的至少一个中间值来产生所述系列中的至少一个其它中间值;及
第三逻辑,其提供所述系列中的一个中间值作为所述输入数据值与所述常数值的乘法的结果。
26、如权利要求25所述的设备,其中所述第一逻辑执行所述处理以将所述组输入数据值从第一域变换为第二域。
27、如权利要求25所述的设备,其中所述第一逻辑执行所述处理以过滤所述组输入数据值。
28、如权利要求25所述的设备,其中所述常数值用整数值来近似。
29、如权利要求25所述的设备,其中所述常数值用有理二进常数来近似,所述有理二进常数具有整数分子及为2的幂的分母。
30、一种方法,其包含:
对一组输入数据值执行处理以获得一组输出数据值;
执行输入数据值与用于所述处理的常数值的乘法;
针对所述乘法产生一系列中间值,所述系列具有基于所述系列中的至少一个中间值产生的至少一个其它中间值;及
提供所述系列中的一个中间值作为所述输入数据值与所述常数值的乘法的结果。
31、如权利要求30所述的方法,其中所述执行处理包含
执行所述处理以将所述组输入数据值从第一域变换为第二域。
32、如权利要求30所述的方法,其中所述执行处理包含
执行所述处理以过滤所述组输入数据值。
33、一种设备,其包含:
用于对一组输入数据值执行处理以获得一组输出数据值的装置;
用于执行输入数据值与用于所述处理的常数值的乘法的装置;
用于针对所述乘法产生一系列中间值的装置,所述系列具有基于所述系列中的至少一个中间值产生的至少一个其它中间值;及
用于提供所述系列中的一个中间值作为所述输入数据值与所述常数值的乘法的结果的装置。
34、如权利要求33所述的设备,其中所述用于执行处理的装置包含用于执行所述处理以将所述组输入数据值从第一域变换为第二域的装置。
35、如权利要求33所述的设备,其中所述用于执行处理的装置包含用于执行所述处理以过滤所述组输入数据值的装置。
36、一种设备,其包含:
第一逻辑,其对一组输入值执行变换以获得一组输出值;
第二逻辑,其执行中间变量与用于所述变换的常数值的乘法,以针对所述乘法产生一系列中间值,并基于所述系列中的至少一个中间值来产生所述系列中的至少一个其它中间值;及
第三逻辑,其提供所述系列中的一个中间值作为所述中间变量与所述常数值的所述乘法的结果。
37、如权利要求36所述的设备,其中所述第一逻辑对所述组输入值执行离散余弦变换(DCT)且获得用于所述组输出值的一组变换系数。
38、如权利要求36所述的设备,其中所述第一逻辑对用于所述组输入值的一组变换系数执行反离散余弦变换(IDCT)以获得所述组输出值。
39、如权利要求36所述的设备,其中所述常数值用整数值来近似。
40、如权利要求36所述的设备,其中所述常数值用有理二进常数来近似,所述有理二进常数具有整数分子及为2的幂的分母。
41、一种方法,其包含:
对一组输入值执行变换以获得一组输出值;
执行中间变量与用于所述变换的常数值的乘法;
针对所述乘法产生一系列中间值,所述系列具有基于所述系列中的至少一个中间值产生的至少一个其它中间值;及
提供所述系列中的一个中间值作为所述中间变量与所述常数值的所述乘法的结果。
42、如权利要求41所述的方法,其中所述执行变换包含
对所述组输入值执行离散余弦变换(DCT)以获得用于所述组输出值的一组变换系数。
43、如权利要求41所述的方法,其中所述执行变换包含
对用于所述组输入值的一组变换系数执行反离散余弦变换(IDCT)以获得所述组输出值。
44、一种设备,其包含:
对一组输入值执行变换以获得一组输出值的装置;
执行中间变量与用于所述变换的常数值的乘法的装置;
针对所述乘法产生一系列中间值的装置,所述系列具有基于所述系列中的至少一个中间值产生的至少一个其它中间值;及
提供所述系列中的一个中间值作为所述中间变量与所述常数值的所述乘法的结果的装置。
45、如权利要求44所述的设备,其中所述用于执行变换的装置包含用于对所述组输入值执行离散余弦变换(DCT)以获得用于所述组输出值的一组变换系数的装置。
46、如权利要求44所述的设备,其中所述用于执行变换的装置包含用于对用于所述组输入值的一组变换系数执行反离散余弦变换(IDCT)以获得所述组输出值的装置。
47、一种设备,其包含:
第一逻辑,其对八个输入值执行变换以获得八个输出值;
第二逻辑,其对用于所述变换的第一中间变量执行两次乘法;及
第三逻辑,其对用于所述变换的第二中间变量执行两次乘法,所述第二及第三逻辑针对所述变换执行总共六次乘法中的四次。
48、如权利要求47所述的设备,其中所述第二逻辑根据所述第一中间变量针对所述两次乘法产生第一系列中间值,且其中所述第三逻辑根据所述第二中间变量针对所述两次乘法产生第二系列中间值。
49、如权利要求48所述的设备,其进一步包含:
第四逻辑,其根据用于所述变换的第三中间变量针对乘法产生第三系列中间值;及
第五逻辑,其根据用于所述变换的第四中间变量针对乘法产生第四系列中间值。
CNA2006800455119A 2005-10-12 2006-10-12 用于信号及数据处理的高效无乘法计算 Pending CN101361062A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US72630705P 2005-10-12 2005-10-12
US60/726,307 2005-10-12
US60/726,702 2005-10-13

Publications (1)

Publication Number Publication Date
CN101361062A true CN101361062A (zh) 2009-02-04

Family

ID=40332809

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800455119A Pending CN101361062A (zh) 2005-10-12 2006-10-12 用于信号及数据处理的高效无乘法计算

Country Status (1)

Country Link
CN (1) CN101361062A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800387A (zh) * 2021-03-30 2021-05-14 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C.-Y.PAI ET AL.: "low-power data-dependent 8×8 DCT/IDCT for video compression", 《IEEE》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800387A (zh) * 2021-03-30 2021-05-14 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN101796506B (zh) 具有比例缩放式和非比例缩放式接口的变换设计
JP5113067B2 (ja) 信号およびデータ処理のための効率的な無乗算計算
CN101375274B (zh) 用于执行数据变换的设备和方法
CN102007489B (zh) 逆向离散余弦变换的计算期间的误差减少
US20140010284A1 (en) Image transform and inverse transform method, and image encoding and decoding device using same
KR20120098499A (ko) 영상의 변환 방법 및 장치, 및 영상의 역변환 방법 및 장치
Shawahna et al. JPEG image compression using the discrete cosine transform: an overview, applications, and hardware implementation
Martisius et al. A 2-D DCT hardware codec based on Loeffler algorithm
CN101361062A (zh) 用于信号及数据处理的高效无乘法计算
De Silva et al. Exploring the Implementation of JPEG Compression on FPGA
CN100520765C (zh) 确定给定变换函数的变换元素的过程和设备,数字信号变换方法和设备及计算机可读介质
CN100388316C (zh) 高精度的无乘法器的数字余弦变换电路及其变换方法
TWI432029B (zh) 具有比例化及非比例化介面之變換設計
Bracamonte et al. A multiplierless implementation scheme for the JPEG image coding algorithm
Arunachalam et al. Performance improvement of vector-radix decimation-in-frequency 3D-DCT/IDCT using variable word length
JP6102707B2 (ja) デジタル符号化装置
JP5451171B2 (ja) データ変換処理装置およびデータ変換処理方法
Kim et al. FPGA implementation of unified kernel structure for MDCT/IMDCT in audio coding schemes
Gopinathan et al. An Error Compensated DCT Architecture with Booth Multiplier
CN117041586A (zh) 图片压缩方法、装置、电子设备及计算机可读存储介质
Chan et al. A new quantized DCT and its implementation on multimedia processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20090204