从离散傅里叶变换到离散余弦变换 —— 公式证明

首先我们列出离散傅里叶变换与离散余弦变换的公式:

离散傅里叶变换

正变换:
F ( u ) = ∑ x = 0 N f ( x ) e − j 2 π u x N ,   u = 0 , 1 ,   …   , N − 1 F(u)=\sum^{N}_{x=0}f(x)e^{-j2\pi\frac{ux}{N}},\ u=0,1,\ \dots\ ,N-1 F(u)=x=0Nf(x)ej2πNux, u=0,1,  ,N1

反变换:
f ( x ) = 1 N ∑ x = 0 N F ( u ) e   j 2 π u x N ,   x = 0 , 1 ,   …   , N − 1 f(x)=\frac{1}{N}\sum^{N}_{x=0}F(u)e^{\ j2\pi\frac{ux}{N}},\ x=0,1,\ \dots\ ,N-1 f(x)=N1x=0NF(u)e j2πNux, x=0,1,  ,N1

离散余弦变换

正变换:
F ( u ) = α ( u ) ∑ x = 0 N − 1 f ( x ) c o s ( 2 x + 1 ) u π 2 N ,   u = 0 , 1 ,   …   , N − 1 F(u)=\alpha(u) \sum^{N-1}_{x=0}f(x)cos\frac{(2x+1)u\pi}{2N},\ u=0,1,\ \dots\ ,N-1 F(u)=α(u)x=0N1f(x)cos2N(2x+1)uπ, u=0,1,  ,N1

反变换:
f ( x ) = ∑ u = 0 N − 1 α ( u ) F ( u ) c o s ( 2 x + 1 ) u π 2 N ,   x = 0 , 1 ,   …   , N − 1 f(x)=\sum^{N-1}_{u=0}\alpha(u)F(u)cos\frac{(2x+1)u\pi}{2N},\ x=0,1,\ \dots\ ,N-1 f(x)=u=0N1α(u)F(u)cos2N(2x+1)uπ, x=0,1,  ,N1

其中
α ( u ) = { 1 N   , u = 0 2 N   , u ≠ 0 \alpha(u)= \begin{cases} \sqrt{\frac{1}{N}}\ , & u=0 \\ \sqrt{\frac{2}{N}}\ , & u \ne 0 \end{cases} α(u)=N1  ,N2  ,u=0u=0
离散余弦变换其实是对原信号经一定处理后产生新信号的离散傅里叶变换。从原始信号到新信号的变换过程如下图所示。

从离散傅里叶变换到离散余弦变换 —— 公式证明_第1张图片
原始信号(蓝)先做对称(红)再平移 1/2 个单位后得到新信号。如果把原信号作为 f ( x ) f(x) f(x),那么新信号为 g ( x ) = f ( x − 1 2 ) + f ( − x − 1 2 ) g(x)=f(x-\frac{1}{2})+f(-x-\frac{1}{2}) g(x)=f(x21)+f(x21)

在证明对新信号的离散傅里叶变换就是对原信号的离散余弦变换之前,我们先对傅里叶变换公式进行一些处理,我们把公式前面的系数重新分配一下。这样做会改变正变换的结果,但不会对反变换的结果造成影响,也就是说依然能够还原出正确的 f ( x ) f(x) f(x)。(其实怎么改都无所谓,只要系数乘积结果相同就行)

正变换:
F ( u ) = 1 N ∑ x = 0 N f ( x ) e − j 2 π u x N ,   u = 0 , 1 ,   …   , N − 1 F(u)=\frac{1}{\sqrt{N}}\sum^{N}_{x=0}f(x)e^{-j2\pi\frac{ux}{N}},\ u=0,1,\ \dots\ ,N-1 F(u)=N 1x=0Nf(x)ej2πNux, u=0,1,  ,N1

反变换:
f ( x ) = 1 N ∑ x = 0 N F ( u ) e   j 2 π u x N ,   x = 0 , 1 ,   …   , N − 1 f(x)=\frac{1}{\sqrt{N}}\sum^{N}_{x=0}F(u)e^{\ j2\pi\frac{ux}{N}},\ x=0,1,\ \dots\ ,N-1 f(x)=N 1x=0NF(u)e j2πNux, x=0,1,  ,N1

下面开始证明。

证明

原始信号范围为 0 , 1 ,   …   , N − 1 0, 1, \ \dots \ ,N-1 0,1,  ,N1,新信号的范围为 − N + 1 2 , − N + 3 2 ,   …   , N − 1 2 -N+\frac{1}{2}, -N+\frac{3}{2},\ \dots\ ,N-\frac{1}{2} N+21,N+23,  ,N21,故对信号的傅里叶变换为:
F ( u ) = 1 2 N ∑ x = − N + 1 2 N − 1 2 g ( x ) e − j 2 π u x 2 N = 1 2 N ∑ x = − N + 1 2 N − 1 2 g ( x ) [ c o s 2 π u x 2 N − j s i n 2 π u x 2 N ]   【 g ( x ) 偶 函 数 , s i n 奇 函 数 , 乘 积 后 求 和 为 0 】 = 1 2 N ∑ x = − N + 1 2 N − 1 2 g ( x ) c o s 2 π u x 2 N   【 g ( x ) 偶 函 数 , c o s 偶 函 数 , 乘 积 后 求 和 为 2 倍 正 半 轴 部 分 】 = 2 N ∑ x = 1 2 N − 1 2 f ( x − 1 2 ) c o s 2 π u x 2 N = 2 N ∑ x = 0 N − 1 f ( x ) c o s 2 π u ( x + 1 2 ) 2 N = 2 N ∑ x = 0 N − 1 f ( x ) c o s ( 2 x + 1 ) u π 2 N \begin{aligned} F(u) & = \frac{1}{\sqrt{2N}}\sum^{N-\frac{1}{2}}_{x=-N+\frac{1}{2}}g(x)e^{-j2\pi\frac{ux}{2N}} \\ & = \frac{1}{\sqrt{2N}}\sum^{N-\frac{1}{2}}_{x=-N+\frac{1}{2}}g(x)\bigg[cos\frac{2\pi ux}{2N}-jsin\frac{2\pi ux}{2N}\bigg]\ 【g(x) 偶函数,sin 奇函数,乘积后求和为 0】\\ & = \frac{1}{\sqrt{2N}}\sum^{N-\frac{1}{2}}_{x=-N+\frac{1}{2}}g(x)cos\frac{2\pi ux}{2N} \ 【g(x) 偶函数,cos 偶函数,乘积后求和为 2 倍正半轴部分】 \\ & = \sqrt\frac{2}{N}\sum^{N-\frac{1}{2}}_{x=\frac{1}{2}}f(x-\frac{1}{2})cos\frac{2\pi ux}{2N} \\ & = \sqrt\frac{2}{N}\sum^{N-1}_{x=0}f(x)cos\frac{2\pi u(x+\frac{1}{2})}{2N} \\ & = \sqrt\frac{2}{N}\sum^{N-1}_{x=0}f(x)cos\frac{(2x+1)u\pi}{2N} \end{aligned} F(u)=2N 1x=N+21N21g(x)ej2π2Nux=2N 1x=N+21N21g(x)[cos2N2πuxjsin2N2πux] g(x)sin0=2N 1x=N+21N21g(x)cos2N2πux g(x)cos2=N2 x=21N21f(x21)cos2N2πux=N2 x=0N1f(x)cos2N2πu(x+21)=N2 x=0N1f(x)cos2N(2x+1)uπ

这里结果已经非常接近了,但是原始离散余弦变换公式中有一个 α ( u ) \alpha(u) α(u),其在 u ≠ 0 u \ne 0 u=0 时与推导中的结果相同,但是在 u = 0 u=0 u=0 时不同,这是为了满足正交变换核也就是基函数在不同 u u u 下对 x x x 求和结果都为 1。如果有需要的同学,可以在评论区中告诉我,我再进行后续补充证明。

现在,我们知道离散余弦变换其实就是一种特殊的傅里叶变换,大部分傅里叶变换的性质在离散余弦变换中都是能够使用的,而离散余弦变换因为不涉及虚部计算,相比傅里叶变换计算量少了一倍,计算速度也更快,因此在大多数场景下,我们会优先考虑使用离散余弦变换。在上一篇文章中我提到了 利用傅里叶的时域(空域)卷积定理进行图像滤波,那么离散余弦变换是否也能使用时域卷积定理并应用在图像滤波中呢,请见我下一篇文章 利用离散余弦的时域(空域)卷积定理进行图像滤波。

你可能感兴趣的:(从离散傅里叶变换到离散余弦变换 —— 公式证明)