其中,f(i)為原始的訊號,f(u)是dct變換後的係數,n為原始訊號的點數,c(u)可以認為是乙個補償係數,可以使dct變換矩陣為正交矩陣。
看出來變換範圍都是到n-1,所以適用於方陣,如果不是的話,需要先補齊再做變換(看**也的確是這樣,這點比較重要),然後應該是逆變換後再去除重構部分得到原始(圖象等等)。
這個公式是說dct變換高度對成性(從變換結果無法觀察是對稱的,應該是變換過程有對稱)。(根據這個可以在matlab中自己程式設計,利用這個更簡單的表示式求dct係數)。
i = [12,23,53,16;42,16,68,45;34,62,73,26;72,15,34,28]; %資料塊
d1 = dct(i); %matlab dct函式進行dct變換
d2 = dct2(i);
a = zeros(4); %變換矩陣a,也可以通過函式dctmtx(n)求得
for i = 0:3
for j = 0:3
if i == 0
a = sqrt(1/4);
else
a = sqrt(2/4);
enda(i+1,j+1) = acos((j+0.5)pii/4);
endend
d = ai*a』; %dct變換
(以上是我跑出來的)
(下面是參考idct)
d1 = dct2(i); %matlab dct函式進行dct變換
d2 = a』da; %dct逆變換
經過理解得知,matlab中dct是一維dct,而dct2是二維dct,上面的for迴圈構建的變換矩陣a是用於dct2(二維dct變換)的,不要混淆了。
離散余弦變換 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...
離散余弦變換DCT
dft 離散傅利葉變換 實變換的dft有共軛對稱性,有一半的資料冗餘。因此,提出dct。dct 在頻域是實訊號,減少一半以上的計算,實數域變換,變換核為實數,余弦函式。用處 大多數自然訊號的能量集中在低頻部分 可用於資料壓縮 二維dct變換定義 因此我們獲得dct和tdct係數矩陣,就可以得到最終的...