离散傅立叶变换DFT和离散余弦变换DCT

离散傅立叶变换DFT

一维DFT

在文献1的第四章中,式(4.2.5)和式(4.2.6)分别给出了(单变量的)一维离散傅立叶变换和反变换:

F(u)=1Mx=0M1f(x)ej2πux/Mu=0,1,2,M1

f(x)=u=0M1F(u)ej2πux/Mx=0,1,2,M1

有时候,前边的系数 1M 会发生变化,但其乘积仍然为 1M ,常见的情况如下:

F(u)=1Mx=0M1f(x)ej2πux/Mu=0,1,2,M1

f(x)=u=0M11MF(u)ej2πux/Mx=0,1,2,M1

在此,我们可以以第一组变换对为主来记忆 DFT

二维DFT

同时,文献2中接着给出了式(4.2.16)和式(4.2.17)所示的二维离散傅立叶变换和反变换:

F(u,v)=1MNx=0M1y=0N1f(x,y)ej2π(ux/M+vy/N)

u=0,1,2,M1;v=0,1,2N1

f(x,y)=u=0M1v=0N1F(u,v)ej2π(ux/M+vy/N)

x=0,1,2,M1;y=0,1,2N1 。对应地,前边的系数 1MN 也可以发生变化,但其乘积要保持为 1MN

离散余弦变换DCT

根据Wiki百科3以及文献4可知,离散余弦变换有4~5种定义,我们仅给出最常用的DCT-II的定义。

一维DCT

在文献5的第九章中,式(9.2.1)和式(9.2.2)分别给出了一维离散余弦变换和反变换,具体如下所示:

C(u)=a(u)x=0N1f(x)cos(2x+1)uπ2Nu=0,1,2,N1

f(x)=u=0N1a(u)C(u)cos(2x+1)uπ2Nx=0,1,2,N1

其中,系数 a(u) 的表达式为:
a(u)=1N,2N,u=0u=1,2,…N-1

然而在 MATLAB等软件中矩阵下标是从1(而非0)开始,因此在 MATLAB中该公式又被表述为:
y(k)=w(k)n=0N1x(n)cosπ(2n1)(k1)2Nk=1,2,3,N

x(n)=k=0N1w(k)y(k)cosπ(2n1)(k1)2Nn=1,2,3,N

其中,系数 w(k) 的表达式为:
w(k)=1N,2N,k=1k=2,3,…N

二维DCT

在文献6的第九章中,式(9.2.4)和式(9.2.5)又分别给出了二维离散余弦变换和反变换,具体如下所示:

C(u,v)=a(u)a(v)x=0M1y=0N1f(x,y)cos(2x+1)uπ2Mcos(2y+1)uπ2N

u=0,1,2,M1;v=0,1,2,N1
f(x,y)=u=0M1v=0N1a(u)a(v)C(u,v)cos(2x+1)uπ2Mcos(2y+1)uπ2N

x=0,1,2,M1;y=0,1,2,N1
上式和原文相比存在略微的不同(我们把其中一个 N替换成了 M),在该文献中并未给出系数的表达式,不过我们可以通过下边的一组变换对得到其系数表达式。对应地,在 MATLAB中将二维 DCT表述为下式:

Bpq=αpαqm=0M1n=0N1Amncosπ(2m+1)p2Mcosπ(2n+1)p2N0pM1;0qN1

Amn=p=0M1q=0N1αpαqBpqosπ(2m+1)p2Mcosπ(2n+1)p2N0mM1;0nN1

其中,系数 αp αq 的表达式分别为:
αp=1M,2M,p=0p=1,2,…M-1


αq=1N,2N,k=0k=1,2,…N-1

参考文献


  1. Rafael C. Gonzalez and Richard E. Woods, 《数字图像处理》(第二版),阮秋琦,阮宇智等译。 ↩
  2. Rafael C. Gonzalez and Richard E. Woods, 《数字图像处理》(第二版),阮秋琦,阮宇智等译。 ↩
  3. 维基百科:discrete cosine transform ↩
  4. 章毓晋, 《图像处理》(图像工程·上册)(第三版) ↩
  5. 章毓晋, 《图像处理》(图像工程·上册)(第三版) ↩
  6. 章毓晋, 《图像处理》(图像工程·上册)(第三版) ↩

你可能感兴趣的:(信号处理)