離散余弦變換
由於實信號傅立葉變換的共軛對稱性,導致DFT后在頻域中有一半的數據冗余。離散余弦變換(DCT)在處理實信號時比離散傅立葉(DFT)變換更具優勢。在處理聲音信號這類實信號時,DFT得到的結果是復功率譜,其結果中的一半數據是沒利用價值的。相比之下,DCT得到的結果是實譜,從而節省了不必要的運算。
一個序列的DFT就是將其周期拓展后取其DFS系數的一個周期。如果序列的開始及結尾處的幅值差異較大,那么這個周期拓展的序列便會有較多的高頻分量。
而序列的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還是一種可分離的變換,可以用兩次一維變換得到二維變換結果。
推導
推導N點長實序列的DCT,首先來定義一個新的長度為2N的序列:
DCT可看作是將周期為N的序列x[m]做一個周期延拓成一個周期為2N的序列。如下圖。
再來看第一張圖是關於 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,這在一定程度上能夠提高頻率分辨力。