首页 > 生活

详解离散余弦变换(DCT)

更新时间:2025-05-16 02:33:16 阅读: 评论:0

在聊聊离散余弦cma是什么证书变换(DCT)之前,不得不聊到离散傅立叶变换(DFT)

离散傅立叶变换在数字信号处理中几乎可以说是一个的必学的钦定函数,多年来在图像,音频,噪声处理,信号调制解调中发挥着巨大的作用。

关于离散傅立叶变换从何而来,其“推倒”过程又是怎么样的?

如果你对傅立叶变换一无所知,你可以参考这篇文章

如果你想知道傅立叶变换怎么来的,你可以参考这篇文章

最后,连续时域傅立叶变换如何处理离散信号呢,这就到了这篇文章了

是的,傅立叶变换如此之重要,以至于作为一只信号狗不能不对其尽可能的知晓过程和细节,经过傅立叶变换作为时频变换工具,有如此之多的优点,但并非所有的情况都以傅立叶变换为最优解,在选择数学工具之前,我们应该面对问题知其然,更应知其所以然,遗憾的是,太多的教材与文章,往往就是甩出一堆公式出来然后告诉你就这样跟着我做就行了,具体为什么,为什么要这么做,就不往下说了,这往往造成读者一头雾水,结果通篇文章看下来,除了知道作者这方面好像挺牛逼的,却并没有任何收获。

因此,我仍然贴出了关于DFT是怎么来的,为什么要这样做相关的几篇文章,在开始之前,我假设读者已经看完上面的几篇文章了,并对DFT有所了解。

在开始讲DCT变换之前,我们来看看DFT的变换公式

X\left\lbrack k \right\rbrack = \sum_{n = 0}^{N - 1}{x\left\lbrack n \right\rbrack}\left( \cos\left( \frac{2\text{πkn}}{N} \right) - \text{jsin}\left( \frac{2\text{πkn}}{N} \right) \right)\

当然,我们可以将上式子拆开来

X[k] = \sum_{n = 0}^{N - 1}{x[n]}(\cos \f阿比特rac{2\text{πkn}}{N} ) -j \sum_{n = 0}^{N - 1}{x[n]}{sin}( \frac{2{πkn}}{N})

显而易见的DFT变换的结果,实数部分由 \sum_{n = 0}^{N - 1}{x[n]}(\cos \frac{2\text{πkn}}{N} ) 承包了,而虚数部分则由 j \sum_{n = 0}琵琶价格^{N - 1}{x[n]}{sin}( \frac{2{πkn}}{N}) 负责,设 cos (\frac{2\text{πkn}}{N})=cos(kt) ,那么,上式我们可以这样总结

实数部分:

Re[k]=\sum_{n = 0}^{N - 1}{x[n]}cos(kt)(式1.0)

虚数系数部分

Im[k]=\sum_{n = 0}^{N - 1}{x[n]}sin(kt)(式1.1)

显然的,cos是一个偶函数,sin是一个奇函数,因此有

Re[k]=Re[-k],Im[k]=-Im[-k]

因此,当 x[n] 是一个实数函数时,其频域的实部是偶函数,虚部是一个奇函数。

那么,假如原信号 x[n] 是一个全是实数的偶函数信号会怎么样

那么显然的,因为偶函脸部过敏数乘以偶函数还是偶函数,奇函数乘以偶函数还是奇函数,因此

x[n]sin(信息化方案kt) 就变成一个奇函数了,既然是奇函数那么自然

Im[k]=\sum_{n = 0}^{N - 果纳芬1}{x[n]}sin(金钱帮kt)=0

你看,一变换后虚部不见了,因此,当原时域信号是一个实偶信号时,我们就可以把DFT写成

X[k] = \sum_{n = 0}^{N - 1}{x[n]}(\cos \frac{2\text{πkn}}{N} )

其实上式就是DCT变换的核心思想了,怎么样是不是超简单,DCT变换实际上就是限定了输入信号的DFT变换,并不是因为在变换的方式上有什么不同。

但光到这里还不够,你发现这和书本上写的DCT变换公式怎么还有点不同呢,我们先看看最常用的DCT变换公式

F(u)=c(u)\sum_{x=0}^{N-1}{f(x)cos[\frac{(x+0.5)\pi}{N}u]}

其中当u=0时

我们到底知道多少

c(0)=\sqrt{\frac{1}{N}}

否则

c(u)=\sqrt{\frac{2}{N}}

如果你是第一次看到DCT变换,或者你只知道DCT变换就是这个样子而不知道为什么,估计你就开始一脸懵了,这是闹哪样,说好的DCT变换就是输入信号为实偶函数的DFT变换呢,别急,既然到这了,且听我细细道来

首先我们仍然明确一点,DCT变换就是DFT变换的一种特殊形式,这点没错,而其特殊点就在于其原始变换信号是一个实偶函数,但是实际应用中哪有那么多刚刚好的实偶函数信号给我们,因此为了适用面更广,既然自然界没有那么多实偶信号,我们就用实信号造一个不就得了。

设一长度为N的实数离散信号 \{x[0],x[1].....x[N-1]\} ,首先,我们先将这个信号长度扩大成原来的两倍,并变成2N,定义新信号 x^{'}[m] 为

x^{'}[m]=x[m] (0\leq m \leq N-1)

x^{'}[m]=x[-m-1] (-N\leq m \leq -1)

简单来说,这个信号变成了如图(1.0)所示的样子

图像来自fourier.eng.hmc.edu

其中,蓝色为原始信号,红色为延拓后的信号这样,我们就将一个实信号变成了一个实邪乳杀人魔偶信号,那么,对这个延拓的信号古琴知识的DFT变换怎么写呢,显然,信号的区间已经从之前的 [0,N-1] 变成了小学英语词组 [-N,N-1] ,因此,DFT变换公式也变成了

X[k]=\sum_{m=-N}^{N-1}{x^{'}[m]e^{\frac{-j2\pi mk}{2N}}}(式1.3)

但是,这样的插值之后也随之带来了一个问题,这个信号并不关于m=0偶对称,它关于 m=-\frac{1}{2} 对称,因此,为了让信号仍然关于原点对称,把整个延拓的信号向右平移 \frac{1}{2} 个单位是个不错的主意

图像来自fourier.eng.hmc.edu

为此,式1.3也得做出对应的改变

X[k]=\sum_{m=-N+杭州太子湾公园\frac{恐怖电影1}{2}}^{N-\frac{1}{2}}{x^{'}[m-\frac{1}{2}]e^{\frac{-j2\pi mk}{2N}}}(式1.4)

依据欧拉公式对式1.4进行展开,展开时我们只要实数部分就行了,因为之前讨论过了,虚数部分已经是0了

X[k]=\sum_{m=-N+\frac{1}{2}}^{N-\frac{1}{2}}{x^{'}[m-\frac{1}{2}]e^{\frac{-j2\pi mk}{2N}}}=\sum_{m=-N+\frac{1}{2}}^{N-\frac{1}{2}}{x^{'}[m-\frac{1}{2}]cos({\frac{2\pi mk}{2N}})}(式1.5)

到这一步显然还不够科学,毕竟m算出来居然是一个小数还带负数,作为一个离散序列我去哪找这个值,因此,式1.5我们还需要进一步变形,首先我们知道,这个序列是一个偶对称序列,因此根据式1.5

广州成人教育\sum_{m=-N+\frac{1}{2}}^{N-\frac{1}{2}}{x^{'}[m-\frac{1}{2}]cos({\frac{2\pi mk}{2N}})}=2*\sum_{m=\frac{1}{2}}^{N-\frac{1}{2}}{x^{'}[m-\frac{1}{2}]cos({\frac{2\pi mk}{2N}})}(式1.6)

然后,设 n=m-\frac{1}{2} ,并将n代入到式1.6中

2*\sum_{n=0}^{N-1}{x^{'}[n]cos({\frac{2\pi (n+\frac{1}{2})k}{2N}})}=2*\sum_{n=0}^{N-1}{x^{'}[n]cos({\frac{(n+\frac{1}{2}) \pi k}{N}})}(式1.7)

好了,我们距离常用DCT的标准式已经非常的接近了,现在问题就是那个标准式里的那个 c(u) 是个啥玩意。

实际上这个 c(u) 如果在函数计算中,加不加都无所谓,实际上在DFT变换中,这个值也是存在的因为常常取1,因此没有再进一步写出来,实际上,这个值因为一vogue杂志些工程学上的意义,DFT中也常常会取 \frac{1}{N} 或 \sqrt{\frac{1}{N}}

那么,DCT中它的出现,主要是为了在DCT变换变成矩阵运算的形式时,将该矩阵正交化以便于进一步的计算,那么,这个系数就应该取 \sqrt{\frac{1}{2N}} (当k=0时除外,需另外讨论,详细推导可参见reference)

将这个系数乘到式1.7中

\sqrt{\frac{1}{2N}}*2*\sum_{n=0}^{N-1}{x^{'}[n]cos({\frac{(n+\frac{1}{2}) \pi k}{N}})}=\sqrt{\frac{2}{N}}*\sum_{n=0}^{N-1}{x^{'}[n]cos({\frac{(n+\frac{1}{2}) \pi k}{N}})}(式1.8)

你看,最终你熟悉的DCT变换公式,就在你眼前!

结语:

读者可能疑惑,推导了那么多,那么DCT变换到底哪好用了呢,首先,DCT变换较DFT变换苹果以旧换新怎么换具有更范围管理好的频域能量聚集度(说人话就是能够把图像更重要的信息聚集在一块),那么对于那些不重要的频域区域和系国际运输数就能够直接裁剪掉(有点像淘金,你把石头里重要的金子都弄到一块,剩下没啥用的石子不就可以扔了么),因此,DCT变换非常适合于图像一步之遥探戈压缩算法的处理,例如现在大名鼎鼎的jpeg就是使用了DCT作为图像压缩算法

当然,DCT同时也在音频信号处理,数字水印方面也发经天纬地之才挥着各种作用,至于二维DCT变换和DCT矩阵的编码方式在了解DCT的原理后应该要做出来也就只是一些拓展问题了,在这就不再继续讨论了。

最后作为一只信号狗,也希望广大的科研同行也能够将自己的专长知识写成通俗易懂不装逼不忽悠的文章分享给广大生活在水深火热之中的其他同行中。

毕竟作为信号处理最底层的一群狗,整天看着一堆不知所云的资料真是本是同根生相煎何太急你说是不?

reference:

后记,很多评论问到,为什么dct变换比dft有更好的能量聚集度,这里贴张图,应该就能说明为什么了

本文发布于:2023-06-07 01:12:59,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/85/242615.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:余弦   详解   DCT
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道