灰度圖像的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分量和AC分量的不同編碼規則。
假設DC值為l5,其霍夫曼碼字由兩部分AB組成,其中A是其長度的霍夫曼編碼,B是其值的幅度。首先,通過查找表,其絕對值的範圍為4,即其值可以用四位二進制數表示;然後用找到的4在DC霍夫曼碼表中找到對應的霍夫曼編碼,其對應的霍夫曼編碼是壹個三位二進制數101,所以這個DC系統的編碼是其值的長度加上其幅度所對應的霍夫曼編碼。對於15,振幅為0000(最高位為符號位,0為負,1為正)。計算振幅的過程:長度為4的範圍內有16個值,即從l5到15。它表示為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,則剩余的零和非零AC系統的數量被用作參數來編碼相應的霍夫曼碼表。