1. 程式人生 > >關於DCT與FFT區別(為什麼影象處理和音訊處理都使用DCT而不用FFT)

關於DCT與FFT區別(為什麼影象處理和音訊處理都使用DCT而不用FFT)

1、問題來源:

   這些天在設計一個實時影象採集,處理,壓縮,usb傳輸到上位機顯示,然後在其他電腦上可以通過網路 觀察實時影象的系統。目前已經實現的USB到上位機的傳輸功能,影象採集處理功能。但是在設計系時發現解析度雖然硬體條件可憐,具體引數的640x480,30fps,YCbCr4:2:2,那麼對傳輸速率的要求還是有點大的,粗略算了一下:640X480X30X(8+8/2+8/2)= 147.456Mbps的傳輸速度!但是我使用的CH376 USB晶片,其手冊上說明最大支援2MB的8位並行介面,通過幾天試驗,根本達不到這個速度,而且這個晶片有個特點,較長時間執行後傳輸速度會下降...也許是我時序設計的還不夠好吧,我會繼續用盡洪荒之力來完善它。但是如果能採用H.264來壓縮視訊訊號想必是極好的。說到視訊壓縮,語音壓縮不得不提DCT。那麼DCT和常用的FFT有啥區別呢?為什麼視訊壓縮多用DCT而不用FFT呢?

2、ANSWER:

FFT是DFT的快速演算法,而DFT有這麼一些特性:對於長度為N的實序列x[n],其DFT為復序列X[k],且滿足


當N為偶數時,只有X[0],X[N/2]是實數且不同,而其餘的N-2個DFT取樣值都為複數,這些複數中的一半還是另一半的共軛複數;

當N為奇數時,只有X[0]是實數,而其餘N-1個DFT取樣值都為複數,而這些複數的同樣存在上述關係。

所以說,存在DFT兩種冗餘:

(1)在有限長度實序列的DFT結果中有一半的資料是冗餘的;

(2)另外由於複數需要表示實部虛部,那麼一個複數需要佔用兩個資料空間。

如果採用正交變換的方法,那麼這些問題就迎刃而解了,DCT就是其中一種。