導航:首頁 > 文件處理 > jpeg壓縮編碼代碼

jpeg壓縮編碼代碼

發布時間:2024-05-21 12:24:50

1. 用java能實現JPEG壓縮演算法

BufferedImageimage=newBufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(img,0,0,w,h,null);//繪制縮小後的圖
FiledestFile=newFile("C:\tmp1.jpg");
FileOutputStreamout=newFileOutputStream("C:\tmp2.jpg");//輸出到文件流
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();

2. 有誰知道,JPEG壓縮編碼演算法的主要步驟

JPEG壓縮編碼演算法的主要計算步驟如下:

1.正向離散餘弦變換(FDCT)。

2.量化(quantization)。

3.Z字形編碼(zigzag scan)。

4.使用差分脈沖編碼調制(differential pulse code molation,DPCM)對直流系數(DC)進行編碼。

5.使用行程長度編碼(run-length encoding,RLE)對交流系數(AC)進行編碼。

6.熵編碼(entropy coding)。

2. 量化

量化是對經過FDCT變換後的頻率系數進行量化。量化的目的是減小非「0」系數的幅度以及增加「0」值系數的數目。量化是圖像質量下降的最主要原因。

對於有損壓縮演算法,JPEG演算法使用均勻量化器進行量化,量化步距是按照系數所在的位置和每種顏色分量的色調值來確定。因為人眼對亮度信號比對色差信號更敏感,因此使用了兩種量化表:亮度量化值和色差量化值。此外,由於人眼對低頻分量的圖像比對高頻分量的圖像更敏感,因此圖中的左上角的量化步距要比右下角的量化步距小。

3. Z字形編排

量化後的系數要重新編排,目的是為了增加連續的「0」系數的個數,就是「0」的遊程長度,方法是按照Z字形的式樣編排,如圖5-17所示。這樣就把一個8 ? 8的矩陣變成一個1 ? 64的矢量,頻率較低的系數放在矢量的頂部。

4. 直流系數的編碼

8 ? 8圖像塊經過DCT變換之後得到的DC直流系數有兩個特點,一是系數的數值比較大,二是相鄰8 ? 8圖像塊的DC系數值變化不大。根據這個特點,JPEG演算法使用了差分脈沖調制編碼(DPCM)技術,對相鄰圖像塊之間量化DC系數的差值(Delta)進行編碼,

Delta=DC(0, 0)k-DC(0, 0)k-1 ........ (5-5)

5. 交流系數的編碼

量化AC系數的特點是1 ? 64矢量中包含有許多「0」系數,並且許多「0」是連續的,因此使用非常簡單和直觀的遊程長度編碼(RLE)對它們進行編碼。

JPEG使用了1個位元組的高4位來表示連續「0」的個數,而使用它的低4位來表示編碼下一個非「0」系數所需要的位數,跟在它後面的是量化AC系數的數值。

6. 熵編碼

使用熵編碼還可以對DPCM編碼後的直流DC系數和RLE編碼後的交流AC系數作進一步的壓縮。

在JPEG有損壓縮演算法中,使用霍夫曼編碼器來減少熵。使用霍夫曼編碼器的理由是可以使用很簡單的查表(lookup table)方法進行編碼。壓縮數據符號時,霍夫曼編碼器對出現頻度比較高的符號分配比較短的代碼,而對出現頻度較低的符號分配比較長的代碼。這種可變長度的霍夫曼碼表可以事先進行定義。

閱讀全文

與jpeg壓縮編碼代碼相關的資料

熱點內容
bitlocker加密後讀取不了 瀏覽:176
演算法設計是指流程圖嗎 瀏覽:168
javaboot如何防止反編譯 瀏覽:118
python復合數據結構視頻 瀏覽:146
培訓學校需要用什麼雲伺服器 瀏覽:721
衛星鍋加密卡那裡收購 瀏覽:58
小米工具文件夾選項在哪裡 瀏覽:55
md5磁碟加密 瀏覽:642
單片機x地址 瀏覽:208
回車鍵失靈運行命令如何使用 瀏覽:984
電腦一鍵解壓縮的軟體 瀏覽:171
怎麼關閉手機通訊錄對外app 瀏覽:370
我的世界如何強行進入一個滿人的伺服器 瀏覽:653
什麼app可以查詢會考成績 瀏覽:389
程序員能創造的價值 瀏覽:259
伺服器上的redis是什麼意思 瀏覽:379
軟體產品經理與程序員 瀏覽:922
高中生程序員 瀏覽:892
ps處理pdf 瀏覽:723
伺服器c1什麼意思 瀏覽:222