當前位置:編程學習大全網 - 編程語言 - Jpeg編程

Jpeg編程

2 JPEG基本原理

灰度圖像的JPEG壓縮過程如圖1所示。JPEG對灰度圖像的壓縮過程主要包括:圖像分割、離散余弦變換(DcT)、量化、之字形掃描、對DC系數進行差分脈碼調制(DPCM)、對Ac系數進行遊程—長度編碼(RLE)。

圖像壓縮過程如圖1所示。

JPEG標準的特點是離散余弦變換,可以將8×8圖像的空間表達變換到頻域。二維DCT變換後,第0行和第0列為低頻分量,其余為高頻分量。

3.1 JPEG壓縮模塊的設計

根據壓縮過程,JPEG壓縮可以分為三個模塊:DCT變換模塊、主控模塊和編碼輸出模塊。壓縮模塊的組成如圖3所示:DCT變換模塊:對輸入的像素值進行DCT變換。主控模塊:控制數據的讀寫並發送給DCT變換模塊,對變換後的數據進行量化,量化後進行Z掃描。編碼輸出模塊:對掃描量化後的數據進行編碼輸出。

3壓縮系統的組成與實現

圖像壓縮的過程:首先將圖像分成8×8塊,然後進行二維DCT變換,分離變換後數據的高頻和低頻;然後啟動Z掃描,這是壹個排序過程,可以根據編碼的需要排列高頻和低頻分量;Z掃描後的數據需要量化後才能編碼。量化是減少數據量,達到壓縮目的的重要環節(量化表見表1)。最後,掃描的數據被編碼。低頻分量采用差分脈沖和低頻霍夫曼編碼,高頻分量采用遊程編碼。圖像壓縮系統的結構框圖如圖2所示,由數據流控制模塊、外部存儲器接口模塊、存儲待壓縮數據的ram、JPEG壓縮模塊、壓縮數據接收模塊和數據發送模塊組成。

1)數據流控制模塊:控制數據流的方向。

2)外部存儲器接口模塊:提供SRAM的讀寫控制時序。

3)接收壓縮數據模塊:通過讀寫SRAM控制模塊,接收壓縮模塊發送的數據並存儲在SRAM中。

4)數據發送模塊:生成符合數據傳輸的時序,發送壓縮後的數據。

3.1 JPEG壓縮模塊的設計

根據壓縮過程,JPEG壓縮可以分為三個模塊:DCT變換模塊、主控模塊和編碼輸出模塊。壓縮模塊的組成如圖3所示:DCT變換模塊:對輸入的像素值進行DCT變換。主控模塊:控制數據的讀寫並發送給DCT變換模塊,對變換後的數據進行量化,量化後進行Z掃描。編碼輸出模塊:對掃描量化後的數據進行編碼輸出。

3.2編碼模塊的實現細節

下面的例子分別介紹了DC分量和交流分量的不同編碼規則。

假設DC值為l5,其霍夫曼碼字由AB兩部分組成,其中A為其長度的霍夫曼編碼,B為其值的幅度。首先,通過查找表,其絕對值的範圍是4,即其值可以用壹個四位二進制數來表示;然後用找到的4在DC霍夫曼碼表中找到對應的霍夫曼編碼,其對應的霍夫曼編碼是壹個三位二進制數101,所以這個DC系統的編碼就是其值的長度加上其幅度對應的霍夫曼編碼。對於a 15,振幅為0000(最高位為符號位,0為負,1為正)。計算振幅的過程:長度為4的範圍內,即從l5到15,有16個值。表示為0001,0010,0011,0100,0101,0165438。1001、1010、1011、1100、1101、1110、1111。負數的幅度是其絕對值的4位二進制表示,等於補碼減1,0000,001,0010,0011,01065438。0111,1000,1001,1010,1011,1100,1101,1110,1111。所以DC值為15的代碼是1010000。與DC系數相比,AC系數具有零遊程編碼。零遊程編碼的步驟:按照掃描後的順序逐個檢測AC系數,用變量記錄零系數的個數。遇到非零系數時,先觀察它和前壹個非零系數之間有多少個零系數。如果超過16,將前16個零單獨編碼,在霍夫曼碼表中用單獨的ZRL碼編碼,然後觀察剩余零的個數是否超過16。如果大於16,則剩余的零和非零交流系統的個數作為參數,對對應的霍夫曼碼表進行編碼。

  • 上一篇:請大牛交遞歸
  • 下一篇:Java每個星期的課程是什麽?
  • copyright 2024編程學習大全網