【正文】
直接通過matlab平臺上的許多處理工具進行各種操作,帶來了很大的便利,但是程序?qū)Νh(huán)境的依賴也對系統(tǒng)的進一步應(yīng)用帶來了很大的不便。輸出參數(shù):height,width,原始圖像的高度和寬度;l_bits,cu_bits,cv_bits,編碼后的亮度和兩個色度的比特流。功能:對給定亮度進行idct變換和量化,得到的原始圖像的亮度數(shù)據(jù)存于表Y中,規(guī)定table_l表的格式為64行為一組。 圖5 解碼程序流程圖開 始 解 碼從壓縮文件中讀取頭文件查表解huffman碼反量化反余弦變換YUV-RGB得到解碼后的真彩色圖像數(shù)據(jù)根據(jù)頭文件內(nèi)容讀取YUV壓縮huffman編碼Huffman表量化表余弦變換矩陣(88)流程圖中的具體程序?qū)崿F(xiàn)見下一節(jié)。function [bins]=Lac_encode(sym,Ac0_cell)輸入?yún)?shù):sym,中間符號序列;Ac0_cell,亮度交流系數(shù)的huffman表。輸出參數(shù):dc,轉(zhuǎn)換后得到的亮度系數(shù)值。流程圖中的具體程序?qū)崿F(xiàn)見下一節(jié)。壓縮文件的頭部分的內(nèi)容是這樣的:源文件高度(兩個字節(jié),高位補0)+源文件寬度(兩個字節(jié),高位補0)+亮度碼長度(四個字節(jié))+亮度碼補位(一個字節(jié))+色度碼U長度(四個字節(jié))+色度碼U補位(一個字節(jié))+色度碼V長度(四個字節(jié))+色度碼V補位(一個字節(jié))+預(yù)留字節(jié)(13個字節(jié))+亮度壓縮碼+色度U壓縮碼+色度V壓縮碼。在用matlab實現(xiàn)JPEG的編解碼過程中,主要要考慮的內(nèi)容有以下兩點:1)如何盡量利用matlab自身強大的矩陣運算能力來方便地實現(xiàn)對圖像的壓縮編解碼;2)由于matlab是基于矩陣的計算軟件,所以在對圖像進行壓縮編解碼的應(yīng)用上,它既有易于實現(xiàn)編程的優(yōu)點,又有因為是解釋型的編程語言,執(zhí)行速度過于緩慢的缺點,如何處理好兩者的矛盾也是應(yīng)該著重考慮的。第一遍掃描要精確地統(tǒng)計出原始數(shù)據(jù)中,每個值出現(xiàn)的頻率,第二遍是建立Huffman樹并進行編碼。把從最上面的根節(jié)點到最下面的葉子節(jié)點途中遇到的0,1序列串起來,就得到了各個符號的編碼。編碼必須保證不能出現(xiàn)一個碼字和另一個的前幾位相同的情況,比如說,如果S0的碼字為01,S2的碼字為011,那么當(dāng)序列中出現(xiàn)011時,你不知道是S0的碼字后面跟了個1,還是完整的一個S2的碼字。它的基本原理是頻繁使用的數(shù)據(jù)用較短的代碼代替,較少使用的數(shù)據(jù)用較長的代碼代替,每個數(shù)據(jù)的代碼各不相同。 就是說, 它包含了原始 8x8 圖象塊里的很多能量。 (1,5), 00001。 (0,45) 。2048,2048。128,128。16,16。 (2,1) 。2.1.5 0 RLE 編碼 現(xiàn)在我們矢量中有許多連續(xù)的 0。 量化表是控制 JPEG 壓縮比的關(guān)鍵。2.1.4 量化對于前面得到的 64 個空間頻率振幅值, 我們將對它們作幅度分層量化,操作方法就是分別除以量化表里對應(yīng)值并四舍五入。JPEG里是對每8x8個點為一個單位處理的。0813*B + 128[Y,Cb,Cr] [R,G,B] 轉(zhuǎn)換R = Y + 1。299*R + 0。587 0。 我們完全可以每個點保存一個 8bit 的亮度值, 每 2x2 個點保存一個 Cr Cb 值, 而圖象在肉眼中的感覺不會起太大的變化。 JPEG編碼器流程解碼器基本上為上述過程的逆過程:圖2正是由于JPEG的高壓縮比,使得它廣泛地應(yīng)用于多媒體和網(wǎng)絡(luò)程序中,例如HTML語法中選用的圖象格式之一就是JPEG(另一種是GIF)。和相同圖象質(zhì)量的其它常用文件格式(如GIF,TIFF,PCX)相比,JPEG是目前靜態(tài)圖象中壓縮比最高的。 Although we refer to nonlossy pression, however, the pression ratio of lossy pression( the times that data bytes before pression to that after pression )is bigger than that of nonlossy pression。JPEG采取多種編碼方式,包含有行程編碼(Run Length Coding)和哈夫曼(Huffman)編碼,有很高的壓縮比。該程序的編碼部分能把一張TIF格式的24位真彩色圖象進行JEPG編碼,壓縮成以二進制形式保存的文件;通過相應(yīng)的解碼程序又可以把圖象解壓縮出來。關(guān)鍵字:JPEG 有損壓縮 行程編碼 哈夫曼編碼 Abstract: This paper introduces the encoding and decoding of JPEG and the specific realization of program on matlab platform。JPEG envolves some kinds of ways of encoding including Run Length Coding and Huffman Coding, so it has high pression ratio。bmp,原圖大小為640*480,256色。第二章 原 理 167。 平均每個點占 12bit。3313 0。1687*R 0。71414*(Cr128)B = Y + 1。按從左到右,從上到下的次序排列(和我們寫字的次序一樣)。 下面兩張 JPEG 標準量化表。所以處理后的視覺損失很小。 假設(shè)有一組矢量(64 個的后 63 個,已按z字形掃描得到) 是 57,45,0,0,0,0,23,0,30,16,0,0,1,0,0,0, 0 , 0 ,0 , 0,……,0經(jīng)過 RLC 壓縮后就是 (0,57) 。2.1.6 huffman 編碼 為了提高儲存效率, JPEG 里并不直接保存數(shù)值, 而是將數(shù)值按位數(shù)分成 16 組: 數(shù)值 組 實際保存值 0 0 1,1 1 0,1 3,2,2,3 2 00,01,10,117,6,5,4,4,5,6,7 3 000,001,010,011,100,101,110,111 15。1111163。511 9 ……1023。8191 13 ……16383。 (0,8) 。 (0,0)括