離散余弦變換(dct for discrete cosine transform)是與傅利葉變換相關的一種變換,它類似於
離散傅利葉變換
(dft for discrete fourier transform),但是只使用實數。離散余弦變換相當於乙個長度大概是它兩倍的離散傅利葉變換,這個離散傅利葉變換是對乙個實偶函式進行的(因為乙個實偶函式的傅利葉變換仍然是乙個實偶函式),在有些變形裡面需要將輸入或者輸出的位置移動半個單位(dct有8種標準型別,其中4種是常見的)。
dct除了上述介紹的幾條特點,即:實數變換、確定的變換矩陣、準最佳變換效能外,二維dct還是一種可分離的變換,可以用兩次一維變換得到二維變換結果。
最常用的一種離散余弦變換的型別是下面給出的第二種型別,通常我們所說的離散余弦變換指的就是這種。它的逆,也就是下面給出的第三種型別,通常相應的被稱為"
反離散余弦變換","
逆離散余弦變換"或者"
idct"。
有兩個相關的變換,乙個是離散
正弦變換(dst for discrete sine transform),它相當於乙個長度大概是它兩倍的實
奇函式的
離散傅利葉變換;另乙個是改進的離散余弦變換(mdct for modified discrete cosine transform),它相當於對交疊的資料進行離散余弦變換。
主要應用
離散余弦變換,尤其是它的第二種型別,經常被訊號處理和
影象處理使用,用於對訊號和影象(包括靜止影象和運**像)進行
有損資料壓縮。這是由於離散余弦變換具有很強的"能量集中"特性:大多數的自然訊號(包括聲音和影象)的能量都集中在離散余弦變換後的低頻部分,而且當訊號具有接近
馬爾科夫過程
(markov processes)的統計特性時,離散余弦變換的去相關性接近於k-l變換(karhunen-loève 變換--它具有最優的去相關性)的效能。
例如,在靜止
影象編碼標準jpeg中,在
運**像編碼標準mjpeg和mpeg的各個標準中都使用了離散余弦變換。在這些標準制中都使用了二維的第二種型別離散余弦變換,並將結果進行量化之後進行熵編碼。這時對應第二種型別離散余弦變換中的n通常是8,並用該
公式對每個8x8塊的每行進行變換,然後每列進行變換。得到的是乙個8x8的變換係數
矩陣。其中(0,0)位置的元素就是直流分量,矩陣中的其他元素根據其位置表示不同頻率的交流分量。
乙個類似的變換, 改進的離散余弦變換被用在高階音訊編碼(aac for advanced audio coding),vorbis 和 *** 音訊壓縮當中。
離散余弦變換也經常被用來使用譜方法來解偏微分
方程,這時候離散余弦變換的不同的變數對應著
陣列兩端不同的奇/偶邊界條件。
儘管直接使用公式進行變換需要進行o(n2)次操作,但是和
快速傅利葉變換類似,我們有複雜度為o(nlog(n))的快速演算法,這就是常常被稱做蝶形變換的一種
分解演算法。另外一種方法是通過快速傅利葉變換來計算dct,這時候需要o(n)的預操作和後操作。
離散余弦變換
首先膜拜下wikipedia 我們已經知道dft將訊號變換為復指數訊號的線性組合,並且如果時域訊號是偶對稱的,那麼頻域將只有實部 復指數的余弦部分 所以,如果將有限長訊號延拓為偶對稱的,就可以將其變換為余弦訊號的線性組合。以下面的原始訊號作為例子 這個訊號的長度為4。若原始訊號長度為n,那麼延拓後的...
離散余弦變換 DCT
由上面的引用可見,位元速率壓縮基於變換編碼和熵值編碼兩種演算法。前者用於降低熵值,後者將資料變為可降低位元數的有效編碼方式。在mpeg標準中,變換編碼採用的是dct,變換過程本身雖然並不產生位元速率壓縮作用,但是變換後的頻率係數卻非常有利於位元速率壓縮。jpeg影象壓縮演算法 輸入影象被分成8 8或...
離散余弦變換DCT
離散余弦變換的函式如下 void dct double data,int len,double dct,int dctnum dct i log data j cos i j 0.5 3.141592653589793 len double md dct i dct i k double temp2...