Discrete Cosine Transform

離散餘弦變換

因爲實信號傅立葉變換的共軛對稱性,致使DFT後在頻域中有一半的數據冗餘。離散餘弦變換(DCT)在處理實信號時比離散傅立葉(DFT)變換更具優點。在處理聲音信號這類實信號時,DFT獲得的結果是復功率譜,其結果中的一半數據是沒利用價值的。相比之下,DCT獲得的結果是實譜,從而節省了沒必要要的運算。html

一個序列的DFT就是將其週期拓展後取其DFS係數的一個週期。若是序列的開始及結尾處的幅值差別較大,那麼這個週期拓展的序列便會有較多的高頻份量。node

而序列的DCT(實序列)至關於一個長度是它兩倍的實偶序列的DFT(普通序列的DFT=實序列+虛序列),在儲存一樣個數的數據的狀況下,DCT的能量更集中在低頻。算法

DCT還有一個很重要的性質(能量集中特性):大多書天然信號(聲音、圖像)的能量都集中在離散餘弦變換後的低頻部分,於是DCT在(聲音、圖像)數據壓縮中獲得了普遍的使用。因爲DCT是從DFT推導出來的另外一種變換,所以許多DFT的屬性在DCT中仍然是保留下來的。(歸一化以後,會在高頻產生不少0係數,說明DCT比FFT變換具備更好的能量彙集度。)函數

DCT在圖像處理中優於DFT的性質是更高的能量彙集度,根本緣由是二維DCT和二維DFT變換空間的基底不一樣。二維DFT的變換空間基底(諧平面波份量)是由sin和cos平面波共同構成的。而二維DCT的變換空間基底(諧平面波份量)是由cos單獨構成的。性能

圖像通過二維DFT變換後,大部分能量集中在頻譜空間的四個角落(低頻份量);而圖像通過二維DCT變換後,大部分能量集中在頻譜空間的左上角(低頻份量)。此所謂DCT的能量集中度優於DFT者也。編碼

DCT的幾條特色,即:實數變換、肯定的變換矩陣、準最佳變換性能外,二維DCT仍是一種可分離的變換,能夠用兩次一維變換獲得二維變換結果。spa

推導

推導N點長實序列的DCT,首先來定義一個新的長度爲2N的序列: 3d

DCT可看做是將週期爲N的序列x[m]作一個週期延拓成一個週期爲2N的序列。以下圖orm

再來看第一張圖是關於 x = -1/2 對稱的,要讓其關於x = 0對稱須要將其向右平移1/2個單位,獲得  x’[m] = x’[m – 1/2] 就是關於 x = 0對稱的週期序列了(如第二張圖)。視頻

 上述 2N 點的偶對稱序列的 DFT計算過程爲:

 

其中是偶對稱的,分別是偶數和奇數。將替換爲,能夠獲得DCT爲:

 

係數定義爲c[n, m] ,則

有DCT係數矩陣C∈RN×N,上述爲C的第n行第m列的元素。又由於在n=2N的週期內,X[n]=X[-n]是偶對稱的。進一步有:

則n從N,...,2N-1的期間,X[n]是多餘的,can be dropped。則n的範圍變爲0,...,N-1。除了第一個n=0,C的全部行向量都是正交歸一化的:

爲了使得DCT是正交變換,定義係數:

其中c[n, m]被a[n]修正。餘弦變換矩陣爲:

      其中  是DCT變換矩陣C的第i行。

 

上述行向量都是正交的:,則變換矩陣C也是正交的:,且

 

則DCT變換能夠表示爲矩陣形式:,兩邊左乘C獲得:

逆DCT有:,也能夠表示爲:

參考:http://fourier.eng.hmc.edu/e161/lectures/dct/node1.html

去相關性

在圖像處理中,一般來講,正交變換具備去相關性。其中最理想的是KLT,DCT是KLT最大程度上的近似,在視頻圖像處理中被普遍應用。
從數學的角度上來看,去相關性就是把原取樣點的自相關矩陣經過DCT變換,變成一個對角矩陣,並且對角線上的值是取樣點自相關矩陣的特徵值。這樣一來,去相關後的矩陣保留了原矩陣的重要信息(特徵值),而過濾到了一些不相關的量。這對後續的處理(好比量化、編碼)都很是有意義,它使得矩陣變「瘦」,而關鍵信息不變,這樣一來算是對原關鍵信息的一種加強,提升了後續的圖像還原質量。

並且當信號具備接近馬爾科夫過程(Markov processes)的統計特性時,離散餘弦變換的去相關性接近於K-L變換(Karhunen-Loève 變換--它具備最優的去相關性)的性能。

經過研究發現,DCT除了具備通常的正交變換性質外,其變換陣的基向量很近似於Toeplitz矩陣的特徵向量,後者體現了人類的語言、圖像信號的相關特性。所以,在對語音、圖像信號變換的肯定的變換矩陣正交變換中,DCT變換被認爲是一種準最佳變換。在近年頒佈的一系列視頻壓縮編碼的國際標準建議中,都把 DCT 做爲其中的一個基本處理模塊。

計算複雜度

儘管直接使用公式進行變換須要進行O(n2)次操做,可是和快速傅里葉變換相似,有複雜度爲O(nlog(n))的快速算法,這就是經常被稱作蝶形變換的一種分解算法。另一種方法是經過快速傅里葉變換來計算DCT,這時候須要O(n)的預操做和後操做。

二維DCT

離散餘弦變換(DCT)公式:

離散餘弦變化(IDCT)公式:

總結

與 DFT 相比,DCT 有兩個主要優勢:

  • 它是一種比 DFT 具備更好的計算效率的實變換,DFT的定義是一個復變換。
  • 它不引入間斷,同時在時域信號中施加週期性。在 DFT 中,當時間信號被截斷並假定爲週期性時,在時域中引入了不連續性,並引入了相應的頻域操做。可是,當截斷時域信號時,即便假設對稱性,也不會在 DCT 中引入不連續性和相關操做。

 

擴展

 離散時間傅里葉變換(DTFT,Discrete Time Fourier Transform)使咱們可以在頻域(數字頻域)分析離散時間信號的頻譜和離散系統的頻響特性。但還存在兩個實際問題。
1.數字頻率是一個模擬量,爲了便於從此用數字的方法進行分析和處理,僅僅在時域將時間變量t離散化還不夠,還必須在頻域將數字頻率離散化。
2.實際的序列大多爲無限長的,爲了分析和處理的方便,必須把無限長序列截斷或分段,化做有限長序列來處理。

FT, LT, ZT

傅立葉變換的FT物理意義是將一個在時間域當中的信號所包含的全部頻率份量(主要指其各頻率份量的幅度和相位)用一個以角頻率爲自變量的函數表示出來,稱其頻譜。傅里葉分析包含傅里葉級數與傅里葉變換。傅里葉級數用於對週期信號轉換,傅里葉變換用於對非週期信號轉換。

                    

 

FT是傅立葉變換,它主要用於分析連續非週期信號,因爲信號是非週期的,它必包含了各類頻率的信號,因此具備時域連續非週期對應頻域連續非週期的特色。

可是對於不收斂信號,傅里葉變換無能爲力,只能藉助拉普拉斯變換。(主要用於計算微分方程)

而z變換則能夠算做離散的拉普拉斯變換。(主要用於計算差分方程)

從複平面來講,傅里葉分析直注意虛數部分,拉普拉斯變換則關注所有複平面,而z變換則是將拉普拉斯的複平面投影到z平面,將虛軸變爲一個圓環。

fourier變換是將連續的時間域信號轉變到頻率域;它能夠說是laplace變換的特例,laplace變換是fourier變換的推廣,存在條件比fourier變換要寬,是將連續的時間域信號變換到複頻率域(整個複平面,而fourier變換此時可當作僅在jΩ軸);z變換則是連續信號通過理想採樣以後的離散信號的laplace變換,再令z=e^sT時的變換結果(T爲採樣週期),所對應的域爲數字複頻率域,此時數字頻率ω=ΩT。 ——參考鄭君裏的《信號與系統》。

離散傅里葉變換

DFT公式:

                          

              

 

 

拉普拉斯變換

拉普拉斯變換是工程數學中經常使用的一種積分變換,又名拉氏變換。拉氏變換是一個線性變換,可將一個有參數實數t(t≥ 0)的函數轉換爲一個參數爲複數s的函數。

拉普拉斯變換解決了不知足絕對可積條件的連續信號,變換到頻率域的問題,同時也對「頻率」的定義進行了擴充。

                               

因此拉普拉斯變換與連續時間傅里葉變換的關係是:
拉普拉斯變換將頻率從實數推廣爲複數,於是傅里葉變換變成了拉普拉斯變換的一個特例。

當s爲純虛數時,x(t)的拉普拉斯變換,即爲x(t)的傅里葉變換(當s=jw時,拉普拉斯變換便等於傅立葉變換)。

你們都承認傅立葉變換的本質是一個信號能夠表示成正弦信號的疊加,即沒法進行傅立葉變換。在拉普拉斯變換的收斂域內有無數條縱軸,在每一條縱軸上均可以寫成一個不等幅正弦信號的疊加。

從這個角度來看,傅立葉變換只不過是s=0縱軸上,信號分解成等幅(特別強調這個等幅概念)正弦信號的疊加

拉普拉斯變換的本質就是矩陣對角化,由於復指數信號是線性系統的特徵向量。詳情可看《神奇的矩陣第二季》愛上積分變換部分。

z變換

Z變換解決了不知足絕對可和條件的離散信號,變換到頻率域的問題,同時也一樣對「頻率」的定義進行了擴充。

因此Z變換與離散時間傅里葉變換(DTFT)的關係是:

  • Z變換將頻率從實數推廣爲複數,於是DTFT變成了Z變換的一個特例。
  • 當z的模爲1時,x[n]的Z變換即爲x[n]的DTFT。

                      

                               

FFT

FFT是離散傅立葉變換的快速算法,能夠將一個信號變換到頻域。

假設採樣頻率爲Fs,信號頻率F,採樣點數爲N。那麼FFT以後結果就是一個爲N點的複數。每個點就對應着一個頻率點。這個點的模值,就是該頻率值下的幅度特性。具體跟原始信號的幅度有什麼關係呢?假設原始信號的峯值爲A,那麼FFT的結果的每一個點(除了第一個點直流份量以外)的模值就是A的N/2倍。 而第一個點就是直流份量,它的模值就是直流份量的N倍。而每一個點的相位呢,就是在該頻率下的信號的相位。第一個點表示直流份量(即0Hz),而最後一個點 N的再下一個點(實際上這個點是不存在的,這裏是假設的第N+1個點,能夠看作是將第一個點分作兩半分,另外一半移到最後)則表示採樣頻率Fs,這中間被 N-1個點平均分紅N等份,每一個點的頻率依次增長。

Fn所能分辨到頻率爲 Fs/N,若是採樣頻率Fs爲1024Hz,採樣點數爲1024點,則能夠分辨到1Hz。1024Hz的採樣率採樣1024點,恰好是1秒,也就是說,採樣1秒時間的信號並作FFT,則結果能夠分析到1Hz,若是採樣2秒時間的信號並作FFT,則結果能夠分析到0.5Hz。若是要提升頻率分辨力,則必須增長採樣點數,也即採樣時間。頻率分辨率和採樣時間是倒數關係。

假設採樣頻率爲Fs,採樣點數爲N,作FFT以後,某一點n(n從1開始)表示的頻率爲:Fn=(n-1)*Fs/N;該點的模值除以N/2就是對應該頻率下的信號的幅度(對於直流信號是除以N);該點的相位便是對應該頻率下的信號的相位。相位的計算可用函數atan2(b,a)計算。atan2(b,a)是求座標爲(a,b)點的角度值,範圍從-pi到pi。要精確到xHz,則須要採樣長度爲1/x秒的信號,並作FFT。要提升頻率分辨率,就須要增長採樣點數,這在一些實際的應用中是不現實的,須要在較短的時間內完成分析。解決這個問題的方法有頻率細分法,比較簡單的方法是採樣比較短期的信號,而後在後面補充必定數量的0,使其長度達到須要的點數,再作FFT,這在必定程度上可以提升頻率分辨力。

相關文章
相關標籤/搜索