版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗四JPEG壓縮實驗原理數(shù)據(jù)分塊對圖像進行編碼前,將每個分量圖像分割成不重疊的8×8像素塊,每一個8×8像素塊稱為一個數(shù)據(jù)單元(DU)。在彩色圖像中,JPEG分別壓縮圖像的每個彩色分量。雖然JPEG可以壓縮通常的紅綠藍分量,但在YCbCr空間的壓縮效果會更好。這是因為人眼對色彩的變化不如對亮度的變化敏感,因而對色彩的編碼可以比對亮度的編碼粗糙些,這主要體現(xiàn)在不同的采樣頻率和量化精度上。因此,編碼前一般先將圖像從RGB空間轉(zhuǎn)換到Y(jié)CbCr空間,再把各分量圖像分割成8×8數(shù)據(jù)塊。在對圖像采樣時,可以采用不同的采樣頻率,這種技術(shù)稱為二次采樣。由于亮度比色彩更重要,因而對Y分量的采樣頻率可高于對Cb、Cr的采樣頻率,這樣有利于節(jié)省存儲空間。常用的采樣方案有YUV422和YUV411。把采樣頻率最低的分量圖像中一個DU所對應(yīng)的像區(qū)上覆蓋的所有各分量上的DU按順序編組為一個最小編碼單元(MCU)。對灰度圖像而言,只有一個Y分量,MCU就是一個數(shù)據(jù)單元。而對彩色圖像而言,以4:1:1的采樣方案為例,則一個MCU由4個Y分量的DU、1個Cb分量的DU和1個Cr分量的DU組成。DCT處理圖像數(shù)據(jù)塊分割后,即以MCU為單位順序?qū)U進行二維離散余弦變換。對以無符號數(shù)表示的具有P位精度的輸入數(shù)據(jù),在DCT前要減去2P-1,轉(zhuǎn)換成有符號數(shù),而在IDCT后,應(yīng)加上2P-1,轉(zhuǎn)換成無符號數(shù)。對每個8×8的數(shù)據(jù)塊DU進行DCT后,得到的64個系數(shù)代表了該圖像塊的頻率成分,其中低頻分量集中在左上角,高頻分量分布在右下角。系數(shù)矩陣左上角的叫做直流(DC)系數(shù),它代表了該數(shù)據(jù)塊的平均值,其余63個叫交流(AC)系數(shù)。3、系數(shù)量化在DCT處理中得到的64個系數(shù)中,低頻分量包含了圖像亮度等主要信息。在從空間域到頻域的變換中,圖像中的緩慢變化比快速變化更易引起人眼的注意,所以在重建圖像時,低頻分量的重要性高于高頻分量。因而在編碼時可以忽略高頻分量,從而達到壓縮的目的,這也是量化的根據(jù)和目的。在JPEG標(biāo)準中,用具有64個獨立元素的量化表來規(guī)定DCT域中相應(yīng)的64個系數(shù)的量化精度,使得對某個系數(shù)的具體量化階取決于人眼對該頻率分量的視覺敏感程度。理論上,對不同的空間分辨率、數(shù)據(jù)精度等情況,應(yīng)該有不同的量化表。不過,一般采用下圖所示的量化表,可取得較好的視覺效果。之所以用兩張量化表,是因為Y分量比Cb和Cr更重要些,因而對Y采用細量化,而對Cb和Cr采用粗量化。量化就是用DCT變換后的系數(shù)除以量化表中相對應(yīng)的量化階后四舍五入取整。由于量化表中左上角的值較小,而右下角的值較大,因而起到了保持低頻分量、抑制高頻分量的作用。亮度量化表 色度量化表Z型掃描DCT系數(shù)量化后,構(gòu)成一個稀疏矩陣,用Z(Zigzag)形掃描將其變成一維數(shù)列,將有利于熵編碼。Z形掃描的順序如圖:DC系數(shù)編碼DC系數(shù)反映了一個8×8數(shù)據(jù)塊的平均亮度,一般與相鄰塊有較大的相關(guān)性。JPEG對DC系數(shù)作差分編碼,即用前一數(shù)據(jù)塊的同一分量的DC系數(shù)作為當(dāng)前塊的預(yù)測值,再對當(dāng)前塊的實際值與預(yù)測值的差值作哈夫曼編碼。若DC系數(shù)的動態(tài)范圍為-1024~+1024,則差值的動態(tài)范圍為-2047~+2047。如果為每個差值賦予一個碼字,則碼表過于龐大。因此,JPEG對碼表進行了簡化,采用“前綴碼(SSSS)+尾碼”來表示。前綴碼指明了尾碼的有效位數(shù)B,可以根據(jù)DIFF從表10-8中查出前綴碼對應(yīng)的哈夫曼編碼。尾碼的取值取決于DC系數(shù)的差值和前綴碼。如果DC系數(shù)的差值DIFF大于等于0,則尾碼的碼字為DIFF的B位原碼;否則,取DIFF的B位反碼。AC系數(shù)編碼經(jīng)Z形排列后的AC系數(shù),更有可能出現(xiàn)連續(xù)0組成的字符串,從而對其進行行程編碼將有利于壓縮數(shù)據(jù)。JPEG將一個非零DC系數(shù)及其前面的0行程長度(連續(xù)0的個數(shù))的組合稱為一個事件。將每個事件編碼表示為“NNNN/SSSS+尾碼”,其中,NNNN為0行程的長度,SSSS表示尾碼的有效位數(shù)B(即當(dāng)前非0系數(shù)所占的比特數(shù)),如果非零AC系數(shù)大于等于0,則尾碼的碼字為該系數(shù)的B位原碼,否則,取該系數(shù)的B位反碼。由于只用4位表示0行程的長度,故在JPEG編碼中,最大0行程只能等于15。當(dāng)0行程長度大于16時,需要將其分開多次編碼,即對前面的每16個0以“F/0”表示,對剩余的繼續(xù)編碼。實驗內(nèi)容實現(xiàn)基本JPEG的壓縮和編碼分三個步驟:(1)首先通過DCT變換去除數(shù)據(jù)冗余;(2)使用量化表對DCT系數(shù)進行量化;(3)對量化后的系數(shù)進行Huffman編碼。三、實驗結(jié)果實驗圖片:Lena.bmp LenaRGB.bmp都是512*512灰度圖像壓縮比:12.115彩色圖像壓縮比:28.171程序:%%AC_Huffman.mfunctionACH=AC_Huffman(AC,n);%亮度AC系數(shù)碼表T1={'1010''00''01''100''1011''11010''1111000''11111000'
'1111110110''1111111110000010''1111111110000011';'1100''11011''1111001''111110110''11111110110'
'1111111110000100''1111111110000101''1111111110000110'
'1111111110000111''1111111110001000''0';'11100''11111001''1111110111''111111110100'
'1111111110001001''1111111110001010''1111111110001011'
'1111111110001100''1111111110001101''1111111110001110''0';'111010''111110111''111111110101''1111111110001111'
'1111111110010000''1111111110010001''1111111110010010'
'1111111110010011''1111111110010100''1111111110010101''0';'111011''1111111000''1111111110010110''1111111110010111'
'1111111110011000''1111111110011001''1111111110011010'
'1111111110011011''1111111110011100''1111111110011101''0';'1111010''11111110111''1111111110011110'
'1111111110011111''1111111110100000''1111111110100001'
'1111111110100010''1111111110100011''1111111110100100'
'1111111110100001''0';'1111011''111111110110''1111111110100110'
'1111111110100111''1111111110101000''1111111110101001'
'1111111110101010''1111111110101011''1111111110101100'
'1111111110101101''0';'11111010''111111110111''1111111110101110'
'1111111110101111''1111111110110000''1111111110110001'
'1111111110110010''1111111110110011''1111111110110100'
'1111111110110101''0';'111111000''111111111000000''1111111110110110'
'1111111110110111''1111111110111000''1111111110111001'
'1111111110111010''1111111110111011''1111111110111100'
'1111111110111101''0';'111111001''1111111110111110''1111111110111111'
'1111111111000000''1111111111000001''1111111111000010'
'1111111111000011''1111111111000100''1111111111000101'
'1111111111000110''0';'111111010''1111111111000111''1111111111001000'
'1111111111001001''1111111111001010''1111111111001011'
'1111111111001100''1111111111001101''1111111111001110'
'1111111111001111''0';'1111111001''1111111111010000''1111111111010001'
'1111111111010010''1111111111010011''1111111111010100'
'1111111111010101''1111111111010110''1111111111010111'
'1111111111011000''0';'1111111010''1111111111011001''1111111111011010'
'1111111111011011''1111111111011100''1111111111011101'
'1111111111011110''1111111111011111''1111111111100000'
'1111111111100001''0';'11111111000''1111111111100010''1111111111100011'
'1111111111100100''1111111111100101''1111111111100110'
'1111111111100111''1111111111101000''1111111111101001'
'1111111111101010''0';'1111111111101011''1111111111101100''1111111111101101'
'1111111111101110''1111111111101111''1111111111110000'
'1111111111110001''1111111111110010''1111111111110011'
'1111111111110100''0';'11111111001''1111111111110101''1111111111110110'
'1111111111110111''1111111111111000''1111111111111001'
'1111111111111010''1111111111111011''1111111111111100'
'1111111111111101''1111111111111111'};%色度AC系數(shù)碼表T2={'00''01''100''1010''11000''11001''111000''1111000'
'111110100''1111110110''111111110100';'1011''111001''11110110''111110101''11111110110'
'111111110101''1111111110001000''1111111110001001'
'1111111110001010''1111111110001011''0';'11010''11110111''1111110111''111111110110'
'111111111000010''1111111110001100''1111111110001101'
'1111111110001110''1111111110001111''1111111110010000''0';'11010''111110111''1111110111''11111110110'
'1111111110010001''1111111110010010''1111111110010011'
'1111111110010100''1111111110010101''1111111110010110''0';'111010''111110110''1111111110010111''1111111110011000'
'1111111110011001''1111111110011010''1111111110011011'
'1111111110011100''1111111110011101''1111111110011110''0';'111011''1111111001''1111111110011111''1111111110100000'
'1111111110100001''1111111110100010''1111111110100011'
'1111111110100100''1111111110100101''1111111110100010''0';'1111001''11111110111''1111111110100111'
'1111111110101000''1111111110101001''1111111110101010'
'1111111110101011''1111111110101100''1111111110101101'
'1111111110101110''0';'1111010''11111111000''1111111110101111'
'1111111110110000''1111111110110001''1111111110110010'
'1111111110110011''1111111110110100''1111111110110101'
'1111111110110110''0';'11111001''1111111110110111''1111111110111000'
'1111111110111001''1111111110111010''1111111110111011'
'1111111110111100''1111111110111101''1111111110111110'
'1111111110111111''0';'111110111''1111111111000000''1111111111000001'
'1111111111000010''1111111111000011''1111111111000100'
'1111111111000101''1111111111000110''1111111111000111'
'1111111111001000''0';'111111000''1111111111001001''1111111111001010'
'1111111111001011''1111111111001100''1111111111001101'
'1111111111001110''1111111111001111''1111111111010000'
'1111111111010001''0';'111111001''1111111111010010''1111111111010011'
'1111111111010100''1111111111010101''1111111111010110'
'1111111111010111''1111111111011000''1111111111011001'
'1111111111011010''0';'111111010''1111111111011011''1111111111011100'
'1111111111011101''1111111111011110''1111111111011111'
'1111111111100000''1111111111100001''1111111111100010'
'1111111111100011''0';'11111111001''1111111111100100''1111111111100101'
'1111111111100110''1111111111100111''1111111111101000'
'1111111111101001''1111111111101010''1111111111101011'
'1111111111101100''0';'11111111100000''1111111111101101''1111111111101110'
'1111111111101111''1111111111110000''1111111111110001'
'1111111111110010''1111111111110011''1111111111110100'
'1111111111110101''0';'1111111010''111111111000011''1111111111110110'
'1111111111110111''1111111111111000''1111111111111001'
'1111111111111010''1111111111111011''1111111111111100'
'1111111111111101''1111111111111111'};%RLC行程編碼k=0;j=1;fori=1:63ifAC(i)==0&&k<15%非零系數(shù)前的零個數(shù)小于15k=k+1;elseifk==15%非零個數(shù)為15RLC(j)=15;RLC(j+1)=0;else%沒有零在前面RLC(j)=k;RLC(j+1)=AC(i);endk=0;j=j+2;endend%最后一個數(shù)是零ifAC(63)==0RLC(j)=0;RLC(j+1)=0;end%之前有若干組15個連零while(length(RLC)>2)if((RLC(length(RLC))==0)&&(RLC(length(RLC)-2)==0))RLC=RLC(1:length(RLC)-2);RLC(length(RLC)-1)=0;elsebreakendendACH='';fori=1:2:length(RLC)NNNN=RLC(i);ifRLC(i+1)==0SSSS=0;elseifabs(RLC(i+1))==1SSSS=1;elseif(abs(RLC(i+1))>=2&&abs(RLC(i+1))<=3)SSSS=2;elseif(abs(RLC(i+1))>=4&&abs(RLC(i+1))<=7)SSSS=3;elseif(abs(RLC(i+1))>=8&&abs(RLC(i+1))<=15)SSSS=4;elseif(abs(RLC(i+1))>=16&&abs(RLC(i+1))<=31)SSSS=5;elseif(abs(RLC(i+1))>=32&&abs(RLC(i+1))<=63)SSSS=6;elseif(abs(RLC(i+1))>=64&&abs(RLC(i+1))<=127)SSSS=7;elseif(abs(RLC(i+1))>=128&&abs(RLC(i+1))<=255)SSSS=8;elseif(abs(RLC(i+1))>=256&&abs(RLC(i+1))<=511)SSSS=9;elseif(abs(RLC(i+1))>=512&&abs(RLC(i+1))<=1023)SSSS=10;end%%求前綴碼S1ifn==1ifNNNN==0|NNNN==15S1=char(T1(NNNN+1,SSSS+1));elseS1=char(T1(NNNN+1,SSSS));endelseifNNNN==0|NNNN==15S1=char(T2(NNNN+1,SSSS+1));elseS1=char(T2(NNNN+1,SSSS));endend%%求尾碼S2ifRLC(i)==0&&RLC(i+1)==0S2='';elseifRLC(i+1)>=0S2=dec2bin(RLC(i+1));elseS2=dec2bin(abs(RLC(i+1)));fori=1:length(S2)ifS2(i)=='1'S2(i)='0';elseS2(i)='1';endendendendACH=[ACHS1S2];end%%DC_Huffman.mfunctionDCH=DC_Huffman(Z,last_Z,n);%亮度碼字T1={'00''010''011''100''101''110''1110''11110''111110''1111110''11111110''111111110'};%色度碼字T2={'00''01''10''110''1110''11110''111110''1111110''11111110''111111110''1111111110''11111111110'};DIFF=Z-last_Z;ifDIFF==0SSSS=0;elseif(abs(DIFF)==1)SSSS=1;elseif(abs(DIFF)>=2&&abs(DIFF)<=3)SSSS=2;elseif(abs(DIFF)>=4&&abs(DIFF)<=7)SSSS=3;elseif(abs(DIFF)>=8&&abs(DIFF)<=15)SSSS=4;elseif(abs(DIFF)>=16&&abs(DIFF)<=31)SSSS=5;elseif(abs(DIFF)>=32&&abs(DIFF)<=63)SSSS=6;elseif(abs(DIFF)>=64&&abs(DIFF)<=127)SSSS=7;elseif(abs(DIFF)>=128&&abs(DIFF)<=255)SSSS=8;elseif(abs(DIFF)>=256&&abs(DIFF)<=511)SSSS=9;elseif(abs(DIFF)>=512&&abs(DIFF)<=1023)SSSS=10;elseif(abs(DIFF)>=1024&&abs(DIFF)<=2047)SSSS=11;end%前綴碼ifn==1S1=char(T1(SSSS+1));elseS1=char(T2(SSSS+1));end%后綴碼ifDIFF>=0S2=dec2bin(DIFF);elseS2=dec2bin(DIFF);fori=1:length(S2)ifS2(i)=='0';S2(i)='1';elseS(2)='0';endendendDCH=[S1S2];%%exp4.mclearall;closeall;%亮度量化表LQT=[1611101624405161;1212141926586055;1413162440576956;1417222951878062;182237566810910377;243555648110411392;49647887103121120101;7292959811210010399];%色度量化表CQT=[1718244799999999;1821266699999999;2426569999999999;4766999999999999;9999999999999999;9999999999999999;9999999999999999;9999999999999999];%灰度圖象處理I1=double(imread('Lena.bmp'));[M,N]=size(I1);last_Z=0;jpeg1='';fori=0:M/8-1forj=0:N/8-1S=I1((1+8*i):(8*(i+1)),(1+8*j):(8*(j+1)));%分割成8*8處理S=dct2(S);%DCTS=round(S./LQT);%亮度量化Z=Zigzag(S);%Zigzag掃描DCH=DC_Huffman(Z(1),last_Z,1);%直流分量編碼ACH=AC_Huffman(Z(2:end),1);%交流分量編碼last_Z=Z(1);jpeg1=[jpeg1DCHACH];endendrate1=8*M*N/length(jpeg1);%壓縮比%彩色圖像處理I2=double(imread('LenaRGB.bmp'));%轉(zhuǎn)換成亮度I2=rgb2ycbcr(I2);Y=I2(:,:,1);Cr=I2(:,:,2);Cb=I2(:,:,3);[M,N]=size(Y);Y_last_Z=0;Cr_last_Z=0;Cb_last_Z=0;Y_jpeg2='';Cr_jpeg2='';Cb_jpeg2='';fori=0:M/8-1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機試劑工沖突管理強化考核試卷含答案
- 煉焦煤制備工崗前實操效果考核試卷含答案
- 陶瓷施釉工創(chuàng)新方法測試考核試卷含答案
- 生活垃圾收集工操作能力知識考核試卷含答案
- 絨線編織拼布工道德評優(yōu)考核試卷含答案
- 建筑工地安全員請假條
- 2025年硅粉系列合作協(xié)議書
- 2025年ITO靶材項目發(fā)展計劃
- 2025年懸掛式離子風(fēng)機項目合作計劃書
- 2026年智能美甲光療機項目可行性研究報告
- 危險品押運證考試題及答案
- 心血管藥物臨床應(yīng)用專家共識匯編
- 生產(chǎn)完成情況匯報
- 2025年初級(五級)健康照護師(五級)《理論知識》試卷真題(后附答案和解析)
- 杭州高一上期末數(shù)學(xué)試卷
- 2025年秋季學(xué)期國開電大本科《人文英語3》一平臺機考真題及答案(002套)
- 2025年黨建工作應(yīng)試題庫及答案
- 青年非遺傳承人對傳統(tǒng)技藝的創(chuàng)新與發(fā)展路徑
- 2025年陜西省中考英語試卷(含解析)
- 藥劑科進修工作匯報
- 2026屆新高考語文熱點復(fù)習(xí):思辨性作文審題立意和謀篇布局
評論
0/150
提交評論