JPEG解碼:反DCT變換(一)

來源:互聯網
上載者:User

DCT(Discrete Cosine Transform)離散餘弦變換是一種經典譜分析方法,屬於離散傅立葉變換的一種特殊情況,即在變換後的傅立葉級數中只包括餘弦項,變化後的資料比較集中。經過DCT變換可以將圖片從色彩域轉換到頻率域,將原始映像的資訊塊轉化為代表不同頻率分量的係數集。它是一種廣泛使用的壓縮方法,首先把每個單獨的彩色映像分量分成8×8映像塊,然後經過二維DCT變換,其低頻分量都集中在左上方,高頻分量分布在右下角。變換之後還是8×8的資料區塊,也就是說DCT變換本身並沒有起到壓縮資料的作用,但是它為以後的資料壓縮奠定了必不可少的基礎。

經過DCT變換的資料有2個優點:1,訊號常將其能量的大部分集中於頻率域的一個小範圍內,這樣一來,描述不重要的分量只需要很少的位元數;2,頻率域分解映射了人類視覺系統的處理過程,並允許後繼的量化過程滿足其靈敏度的要求。對於變換之後的8×8的資料矩陣塊,矩陣最左上方的直流 (DC)係數幅度最大,以DC 係數為出發點向下、向右的其它DCT 係數,離DC 分量越遠,頻率越高,幅度值越小,即映像資訊的大部分集中於直流係數及其附近的低頻頻譜上,離DC 係數越來越遠的高頻頻譜幾乎不含映像資訊,甚至於只含雜波。

 

壓縮映像是經過DCT變換之後的映像,我們要對壓縮映像進行解壓就要對壓縮資料進行“反DCT變換(DCT逆變換)”。DCT逆變換的方法有好幾種,我們這裡採用行列分解的方法。

DCT逆變換的公式為:

     

可改寫為:

f=AτFA                                                                                    

 

 其中A為矩陣:

 對上面的公式進行變形的

Y =FA

f  =AT Y

fT =(AT Y)T =YT A

其中F的資料區塊。

經分析可知,完成一次DCT逆變換需要4步:

1:壓縮資料區塊(8×8)矩陣與矩陣A(8×8)相乘,得到矩陣Y(8×8)。

2:對矩陣Y進行轉秩得到(8×8)。

3:Y的轉秩再與矩陣A相乘得到8×8的矩陣ft。

4:對ft  進行轉秩得到f。  

 

所以整個設計中需要兩個模組,一個用於矩陣的相乘,兩個用於矩陣的轉秩。

總體設計如下:

 

 

A矩陣乘法器的作用是實現輸入矩陣和A矩陣的相乘。注意A矩陣在乘法的右邊。

iDCT變換的對象是8 ×8的資料單元,既輸入資料共64個,按行輸入,每8個資料為一行。每輸入一行資料就分別和A矩陣的每一列進行乘加運算,每完成一次這樣的乘加運算就輸出一次結果。由於輸入在左邊,所以輸出的按矩陣的行的序列輸出的。比如,輸入第一行資料,分別和A矩陣的各列相乘,按順序輸出8個結果,這8個結果就是輸出矩陣的第一行;當輸入第二行資料時,同樣輸出8個結果,這8個結果是輸出矩陣的第二行。所以經過第一次矩陣乘法之後得到的是Y矩陣。

 

轉秩就是對64個資料進行重新排列的結果。

如:

左邊為未轉秩的資料順序,右邊為轉秩之後的資料順序。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.