




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1. 緒論MATLAB 是由美國mathworks 公司發布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易于使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統非交互式程序設計語言(如C 、Fortran ) 的編輯模式,代表了當今國際科學計算軟件的先進水平。隨著信息技術的發展,圖像信息被廣泛應用于多媒體通信和計算機系統中,但是圖像數據的一個顯著特點就是信息量大。具有龐大的數據量,如果不經過壓縮,不僅超出了計算機
2、的存儲和處理能力,而且在現有的通信信道的傳輸速率下,是無法完成大量多媒體信息實時傳輸的,因此,為了更有效的存儲、處理和傳輸這些圖像數據,必須對其進行壓縮,因此有必要對圖像壓縮編碼進行研究。由于組成圖像的各像素之間,無論是在水平方向還是在垂直方向上都存在著一定的相關性,因此只要應用某種圖像壓縮編碼方法提取或者減少這種相關性,就可以達到壓縮數據的目的。數字圖像包含的冗余信息一般有以下兒種: 空問元余、時間冗余、信息;腦冗余、統計冗余、結構冗余、視覺冗余以及知識冗余等。圖像壓縮算法就是要在保證圖像一定的熏建質量的同時,盡可能多的去除這些元余信息.以達到對圖像壓縮的目的。隨著科學技術的發展,圖像壓縮編
3、碼技術越來越引起人們的關注。所謂的圖像壓縮編碼技術就是對要處理的圖像數據按一定的規則進行變換和組合,從而達到以盡可能少的數據流來表示盡可能多的數據信息。本設計基于DCT 的JPEG、PNG、BMP 等格式圖像編解碼設計算法進行研究,介紹了編碼中DCT變換、量化、游程編碼等模塊的原理和數學推導以及各模塊的功能分析。最后應用MATLAB 進行了實驗仿真并分析結果得出結論。DCT 變換后具有絕對的去相關性,并且變換后的矩陣從左上角到右下角頻率規律的漸高。有損壓縮方法利用了人類視覺對圖像中的某些頻率成分不敏感的特性,允許壓縮過程中損失一定的信息;雖然不能完全恢復原始數據, 但是所損失的部分對理解原始圖
4、像的影響較小,卻換來了大得多的壓縮比。因此舍棄高頻分量保留低頻分量的做法,對于圖像壓縮具有絕對的優勢。只要損失的數據不太影響人眼主觀接收的效果,就可采用。DCT 變換后的壓縮此本設計采用經典的游程編碼實現。2. 設計任務2. 1 任務描述基于DCT 的圖像編解碼設計(1) 獲取圖像;( 2) 采用DCT 實現對圖像編解碼設計;(3) 分析編解碼性能2.2 技術指標(1)可對JPEG、PNG、BMP 等格式圖像進行基于DCT 的圖像編解碼。(2) 為了便于分析比較,定義一個量化系數quotiety,越大壓縮率越高。(3) 壓縮編碼、量化系數統一寫入存儲文件compressed_data.mat,
5、實現可移植解壓。( 4 ) 觀察壓縮后圖片大小,簡便起見,分析只關心compressed_data.mat 文件的大小。( 5 ) 實現DCT 變換和反變換以及JPEG 標準量化矩陣的量化、反量化。( 6 ) 根據DCT 量化后矩陣特點,本設計編碼采用Z 字型掃描游程編碼、解碼。(7) DCT 壓縮前后比較,以及不同量化系數比較。3. 設計原理3. 1 原理框圖基于DCT 的圖像編碼包括三個階段: DCT 變換、量化、編碼。根據DCT量化后矩陣特點,本設計編碼采用Z 字型掃描游程編碼、解碼。首先將輸入圖像顏色空間轉換后分解為8 X 8 大小的數據塊, 然后用正向二維DCT 把每個塊轉變成64
6、個DCT 系數值,其中1 個數值是直流(DC)系數,即8X8 空域圖像子塊的平均值,其余的63 個是交流(AC)系數,接下來對DCT 系數進行量化,最后將變換得到的量化的DCT 系數進行編碼和傳送, 這樣就完成了圖像的壓縮過程。壓縮圖像數據游程編碼量化DCT變換原始圖像數據碼表量化表圖3- 1 編碼過程基于DCT 的圖像編碼包括三個階段: 譯碼、反量化、IDCT 變換。在解碼過程中,形成壓縮后的圖像格式, 先對己編碼的量子化的DCT 系數進行解碼,然后求逆量化并把DCT 系數轉化為8 X 8 樣本像塊(使用二維DCT 反變換),最后將操作完成后的塊組合成一個單一的圖像。這樣,就完成了圖像的解壓
7、過程。反量化IDCT變換原始圖像數據游程譯碼壓縮圖像數據量化表碼表圖3-2 解碼過程3.2 程序流程圖基于DCT 的圖像編解碼設計的MATLAB 實現的流程圖如圖3-3 所示。開始輸入圖片輸入量化系數分成8*8像素塊,DCT變換輸入量化表,對變換結果量化對量化結果進行掃描編碼保存編碼結果顯示壓縮圖像打開編碼文件反量化反DCT變換顯示恢復圖像結束圖3-3 程序流程圖3. 3 離散余弦變換DCT 變換利用傅立葉變換的性質。采用圖像邊界裙翻將像變換為偶函數形式,然后對圖像進行二維傅立葉變換,變換后僅包含余弦項,所以稱之為離散余弦變換。DCT 編碼屬于正交變換編碼方式,用于去除圖像數據的空間冗余。變換
8、編碼就是將圖像光強矩陣(時域信號)變換到系數空間(頻域信號)上進行處理的方法。在空間上具有強相關的信號,反映在頻域上是在某些特定的區域內能量常常被集中在一起,或者是系數矩陣的分布具有某些規律。我們可以利用這些規律在頻域上減少量化比特數,達到壓縮的目的。圖像經DCT 變換以后,DCT 系數之間的相關性就會變小。而且大部分能量集中在少數的系數上,因此,DCT 變換在圖像壓縮中非常有用,是有損圖像壓縮國際標準JPEG 的核心。從原理上講可以對整l幅圖像進行DCT 變換,但由于圖像各部位上細節的豐富程度不同,這種整體處理的方式效果不好。為此,發送者首先將輸入圖像分解為8*8 或16*16 塊,然后再對
9、每個圖像塊進行二維DCT 變換,接著再對DCT 系數進行量化、編碼和傳輸;接收者通過對量化的DCT系數進行解碼,并對每個圖像塊進行的二維DCT 反變換。最后將操作完成后所有的塊拼接起來構成一幅單一的圖像。對于一般的圖像而言,大多數DCT系數值都接近于0,所以去掉這些系數不會對重建圖像的質量產生較大影響。因此,利用DCT 進行圖像壓縮確實可以節約大量的存儲空間。在實驗中,先將輸入的原始圖像分為8*8 的小塊,然后再對每個塊進行二維DCT變換。二維離散余弦變換可以寫成矩陣式(F(u,v)=(A)(f(x,y)(A)(f(x,y)=(A)(F(u,v)(A)式中, (f(x,y)是空間域數據陣列,
10、(F(u,v)是變換系數陣列, (A)是系數陣列,變換矩陣(A)'是(A) 的轉置。設計中2 維DCT 變換函數代碼如下:function Xpq=DCT2_function(xmn,M)T=dctmtx(M); %產生二維DCT 變換矩陣Xpq=T*xmn*T;設計中2 維IDCT 變換函數代碼如下:function xmn_resume=IDCL_function(Xpq_resume,M)T=dctmtx(M); %生成變換矩陣xmn_resume=T*Xpq_resume*T; %用變化矩陣的乘法代替效率極低的for求和循環3.4 量化在DCT 處理中得到的64 個數據中,低頻
11、分量包含了圖像亮度等主要信息。在從空間域到頻域的變換中,圖像中的緩慢變化比快速變化更易引起人眼的注意, 所以在重建圖像時,低頻分量的重要性高于高頻分量。因而在編碼時可以忽略高頻分量,即減小非" 0"系數的l幅度以及增加" 0" 值系數的數目,從而達到壓縮的目的,這也是量化的根據和目的,也是圖像質量下降的最主要原因。在JPEG 標準中,用具有64 個獨立元素的量化表來規定DCT 域中相應的64個系數的量化精度,使得對某個系數的具體量化階取決于人眼對該頻率分量的視覺敏感程度。理論上, 對不同的空間分辨率、數據精度等情況,應該有不同的量化衰。不過, 一般采用下
12、圖所示的量化表,可取得較好的視覺效果。量化化就是用DCT 變換后的系數除以量化表中相對應的量化階后四舍五入取整。由于量化表中左上角的值較小,而右下角的值較大, 因而起到了保持低頻分量、抑制高頻分量的作用。為了便于分析比較,定義一個量化系數quotiety,量化系數越大,壓縮率越高。量化系數quotiety在程序中是將JPEG標準量化矩陣*quotiety作為真正的量化矩陣。quotiety取值為大于1的任意實數。本設計中利用函數integral_function.m和deintegral_function實現量化和反量化。161110162440516112121419265860551413
13、1624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399圖3-4 灰皮值量化表量化會產生誤差,上表是綜合大量的圖像測試的實驗結果,對于大部分圖像都有很好的結果勻。表中可以看出,高頻部分對應的量化值大,目的就是將高頻部分編程接近于0,以便以后處理。JPEG 可以在壓縮比和圖像質量問作取舍。方法就是改變量化系數。如果量化值放大,則有更多的系數值為0,提高了壓縮比。3.5 Z形掃描游程編碼DCT 系數量化后,構成一個稀疏矩陣,用Z CZigzag) 形
14、掃描將其變成一維數列,將有利于游程編碼。Z 形掃描的順序如圖3-4。圖3-5 Z 形掃描順序圖游程編碼是一種統計編碼,該編碼屬于無損壓縮編碼,是柵格數據壓縮的重要編碼方法。游程編碼的基本原理是: 用一個符號值或串長代替具有相同值的連續符號,使符號長度少于原始數據的長度。只在各行或者各列數據的代碼發生變化時,一次記錄該代碼及相同代碼重復的個數,從而實現數據的壓縮。游程編碼運算簡單,適用于機器存儲容量小,數據需大量壓縮,而又要避免復雜的編碼和解碼運算,增加處理和操作時間的情況。本設計中利用兩個函數Run_length_coding_function.m 和Run_length_decoding_f
15、unction.m 分別實現Z 字形游程的編碼解碼。由于DCT 變換后右下角頻率高,左上角頻率分量低。而人眼對高頻成分識別小,對低頻成分識別大。量化后0主要集中在右下方,于是Z 字形掃描對于游程編碼才有利。主要思路是將原矩陣的每個元素變化為用兩個元素a,b表示, a 表示在這個元素之前0 的個數, b 表示這個元素是什么。當發現之后的多有元素都是0 的時候用0 , 0作為結束標志。這樣, 只要矩陣中0 的個數超過一半,編碼后數據量就比原來小。由于在8*8 中連續出現不為0 的相同元素的兒率極小, 因此運用游程編碼的思想時只考慮出現的0 的個數。4. 運行結果及分析4. 1 不同量化系數圖像編解
16、碼效果比較量化系數quotiety: 程序中是將Jpeg 標準量化矩陣* quotiety 作為真正的量化矩陣。quotiety 取值為大于1 的任意實數。下面以jpg 格式圖像為標準,取不同的量化系數quotiety 進行比較, 原始圖像大小為84.8KB:圖4-1 原始圖像圖4-2 quotiety=1 時恢復圖像此時壓縮編碼文件為compressed_data 大小為21.5KB 。圖4-3 quotiety=2 時恢復圖像此時壓縮編碼文件為compressed_data 大小為14.6KB 。圖4-4 quotiety=5 時恢復圖像此時壓縮編碼文件為compressed_data 大
17、小為9.00KB 。圖4-5 quotiety=10 時恢復圖像此時壓縮編碼文件為compressed_data 大小為5.85KB 。結論: 量化系數quotiety 越大,壓縮率越高,圖像恢復的效果也越差。量化會產生誤差,如果量化值放大,則有更多的灰度值變為0, 能夠提高壓縮比。4.2 不同文件類型圖像編解碼比較量化系數quotiety 都取5 時, 對不同文件類型的test圖進行編解碼圖4-6 原始圖像下面為jpg的test圖編碼的解碼恢復圖像:圖4-7 jpg 格式的恢復圖像下面為BMP 的test 圖編碼的解碼恢復圖像:圖4-8 bmp 格式的恢復圖像下面為PNG 的test 圖編碼
18、的解碼恢復圖像:圖4-9PNG 格式的恢復圖像觀察三個恢復圖像,在原始圖像相同的情況下,三種文件格式下編解碼解碼效果無太大差異。當量化系數quotiety 取其他值時, 三種文件格式編碼解碼效果也相同。由此可知,該系統可以用于JPG、BMP. PNG 等文件的壓縮編碼和解碼,且編碼解碼效果相同。5. 總結本次信息處理系統綜合訓練讓我更熟悉地掌握MATLAB 的功能,靈活運用MATLAB,加強對MATLAB 軟件圖像處理的能力,掌握圖像的離散余弦變換對圖像進行壓縮,以及游程編碼等概念。在熟悉掌握MATLAB 程序和操作的同時培養了我的獨立思考能力,鉆研精神, 解決問題能力和動手能力。雖然在此之前
19、通過基礎強化訓練、運用國MATLAB 軟件并完成簡單圖像操作,但知道的只是最基本的的應用,對于MATLAB 在圖像處理上的應用,我完全沒有理解。本次課程設計中通過查閱資料, 閱讀程序并讀寫程序對MATLAB圖像應用有了更深的了解。我同時也認識到了MATLAB 功能并不只是圖形的繪制及波形的處理,有著很多方面的運用,如繪制函數,處理音頻、圖像數據,創建用戶界面等功能,實為一個功能強大的軟件。在課設過程中每每編寫程序及操作時出現問題,我都會通過查閱資料,仔細檢查解決問題, 經過一次次的修改完善,才出現最終的最優結果。在這個過程中,面對問題不放棄不急躁, 一次次改進, 靜下心來慢慢解決,并細致完善細
20、節,從而能培養一種良好的學習心態和習慣。數據壓縮技術的優劣主要是由壓縮所能達到的壓縮倍數、從壓縮后的數據所能恢復的圖像的質量和算法的復雜度、解碼的速度等方面來衡量的。基于DCT 的混合編碼技術對于圖像的壓縮倍數可以達到幾十倍甚至上百倍, 而且重建的圖像又具有較高的質量, 因此得到廣泛的應用。用MATLAB 來實現離散余弦變換的圖像壓縮,具有方法簡單、速度快、誤差小的優點,免去了大量的矩陣計算, 大大提高了圖像壓縮的效率和精度。6 . 參考文獻 1 張秋臣.淺談MATLAB 分析及UG 的運動仿真期刊論文-錦繡, 2013. 04.2 祝本明,劉桂華.一種改進的游程編碼算法期刊論文-西南科技大學
21、學報,2007. 03.3 http:/w啊. docin. com/p-39240958 1. html.4 http :/www. html.5 楊杰,黃朝兵.數字圖像處理及MATLAB 實現. 北京: 電子工業出版社,201 1. 01;附錄:Main Menu.mk=menu('請選擇需要的功能',' 圖 像 壓 縮 , 圖 像 解 壓 );switch kcase 1DCT_compress;Main_Menu;case 2IDCT_decompress;Main_Menu;endDCT_compress.m%主要思想:%-à讀取圖像文件%-
22、4;分塊DCT 變換%-àJPEG錦標準量化表量化%-àZ字形游程編碼%-à存儲壓縮后的文件clear all; clc;global quotiety;FileName,PathName,FilterIndex=uigetfile('*.bmp;*.jpg;*.png','請選擇要壓縮的源圖像');string=sprintf('%s%s',PathName,FileName);quotiety=inputdlg('系數越大壓縮率越高','輸入您需要的壓縮系數: ',1,'1
23、');h=waitbar(0,'正在壓縮, 請稍候');quotiety=str2num(cell2mat(quotiety);I=imread(string);I=rgb2gray(I);xmn=double(I);figure;imshow(I);title('原始圖像');M,N=size(xmn);waitbar(1/4,h);Xpq=blkproc(xmn,8 8,'DCT2_function',8); %每一小塊DCT 變換waitbar(2/4,h);Xpq_estimate=blkproc(Xpq,8 8,'int
24、egral_function'); %量化表量化waitbar(3/4,h);waitbar(3/4,h);for index1=1:1:M/8 forindex2=1:1:N/8 %對每一小塊游程編碼,結果存在cell數組Xpq_coded里 Xpq_codedindex1,index2=int8(Run_length_coding_function(Xpq_estimate(8*(index1-1)+1:8*index1,8*(index2-1)+1:8*index2); endendwaitbar(4/4,h);close(h);uisave('Xpq_coded'
25、;, 'quotiety','compressed_data'); %存儲編碼后的信息、量化系數figure;imshow(Xpq_estimate);title('壓縮圖像');DCT2_function.m function Xpq=DCT2_function(xmn,M) T=dctmtx(M); %產生二維DCT變換矩陣 Xpq=T*xmn*T'integral_function.m function Xpq_estimate
26、=integral_function(Xpq) integral_table=16,11,10,16,24,40,51,61;12,12,14,19,26,58,60,55;14,13,16,24,40,57,69,56;14,17,22,29,51,87,80,62; 18,22,37,56,68,109,103,77;24,35,55,64,81,104,113,92;49,64,78,87,103,121,120,101;72,92,95,98,112,100,103,99; %量化矩陣global quotiety;Xpq_estimate=int8(Xp
27、q ./(integral_table*quotiety); %此處的量化系數表示除以的Jpeg 標準量化矩陣的倍數Run_length_coding_fuoctioo.m%由于DCT變換后右下角頻率高,左上角頻率分量低。而人眼對高頻成分識別小,對低頻成分識別大 %量化后0主要集中在右下方,于是Z字形掃描對于游程編碼才有利 %主要思想:原矩陣的每個元素變化為用兩個元素【a,b】表示,a表示在這個元素之前0的個數,% b表示這個元素是什么。當發現之后的多有元素都是0的時候用【0,0】作為結束標志。 function Xpq_coded=Run_l
28、ength_coding_function(Xpq_estimate) table=1,1;1,2;2,1;3,1;2,2;1,3;1,4;2,3;3,2;4,1;5,1;4,2;3,3;2,4;1,5;1,6;2,5;3,4;4,3;5,2;6,1;7,1;6,2;5,3;4,4;3,5;2,6;1,7;1,8;2,7;3,6;4,5;5,4;6,3;7,2;8,1;8,2;7,3;6,4;5,5;4,6;3,7;2,8;3,8;4,7;5,6;6,5;7,4;8,3;8,4;7,5;6,6;5,7;4,8;5,8;6,7;
29、; 7,6;8,5;8,6;7,7;6,8;7,8;8,7;8,8; %64*2的矩陣,表明Z字形壓縮的行走路徑Xpq_coded=; %存儲編碼后的結果 count=0; compress_index=1; for index=1:1:64 %掃描 if Xpq_estimate(table(index,1),table(index,2)=0 %如果遇到了0,那么下一個數字到來之前的0的個數就加1 count=count+1; else %如果遇到的不是0,那么Xpq_
30、coded=(,)的第一個元素存儲之前0的個數,第二個元素存儲此時遇到的這個元素Xpq_coded(compress_index,1)=count; Xpq_coded(compress_index,2)=Xpq_estimate(table(index,1),table(index,2); count=0; %過去這個元素之后0的個數就要重新計 com
31、press_index=compress_index+1; end if count=0 Xpq_coded(compress_index,1)=0; Xpq_coded(compress_index,2)=0; end endIDCT decompress.m%主要思想:%跟壓縮過稱恰好相反%一讀取壓縮文件%一Z字形游程解碼%一JPEG標準量化表反量化%一分
32、塊DCT 變換%一存儲解壓后的文件c1ear all;c1c;global quotiety;uiload;h=waitbar(O,'正在解壓, 請稍候');Xpq_decoded=Xpq_coded;c1ear Xpq_coded;M,N=size(Xpq_decoded); waitbar(1/4,h); %游程解碼得到Xpq_deestimatefor index1=1:1:M for index2=1:1:N
33、60; Xpq_deestimate(8*(index1-1)+1:8*index1,8*(index2-1)+1:8*index2)=Run_length_decoding_function(Xpq_decoded index 1 ,index2 );endendwaitbar(2/4,h);%反量化得到幅頻值Xpq_resume=blkproc(Xpq_deestimate,8 8,'deintegral_function'); waitbar(3/4,h); %DCT逆變換得到xmn xmn_resume=bl
34、kproc(Xpq_resume,8 8,'IDCT2_function',8);xmn_resume=uint8(xmn_resume); waitbar(4/4,h); close(h); figure;imshow(xmn_resume); title('恢復的圖像'); IDCT2 function.mfunction xmn_resume=IDCT2_function(Xpq_resume,M)T=dctmtx(M); %生成變換矩陣xmn_resume=T'*Xpq_res
35、ume*T; % 用變化矩陣的乘法代替效率極低的for求和循環deintegral_function.mfunction Xpq_resume=deintegral_function(Xpq_deestimate)integral_table=16, 11,10,16,24,40,51,61;12,12,14,19,26,58,60,55;14,13,16,24,40,57,69,56;14,17,22,29,51,87,80,62;18,22,37,56,68,109,103,77;24,35,55,64,81,104,113,92;49,64,78,87,103,121,120,101 ;72,92,95,98,112,100,103,99;global quotiety;Xpq_resume=Xpq_deestimate.*integral_table*quotiety; %反量化恢復的過程要考慮到量化系數quotiety的影響Run_length_decoding_function.m%與Run_length_coding如nction 完全相逆的過程解碼, 此處不再贅述function Xpq_deestimate=Run_length_d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融機構風險管理數字化轉型的法律法規與政策解讀報告
- 2025年精準醫療在乳腺癌免疫檢查點抑制劑治療中的臨床實踐與療效分析報告
- 2025年四川省眉山市中考語文真題 (解析版)
- 江蘇員工產假管理制度
- ktv基層員工管理制度
- 員工滿意度調查管理制度
- 核電設備采購管理制度
- 公司技術部獎罰管理制度
- 不要迷信大企業管理制度
- 公司土石方車隊管理制度
- 物業小飯桌管理制度
- 2025年湖南省普通高中學業水平考試合格性考試模擬試題(長郡版高一生物)(原卷版)
- 2025春國家開放大學《思想道德與法治》終考大作業答案
- 2025年廣東省廣州市白云區中考語文二模試卷
- 【英語(新高考Ⅰ卷)】2025年普通高等學校招生全國統一考試
- 2025年天津市河西區中考二模數學試題(含部分答案)
- 醫院培訓課件:《藥品不良反應報告和監測工作簡介》
- 2025 屆九年級初三畢業典禮校長講話:星河長明共赴新程
- 2025年伽師縣(中小學、幼兒園)教師招聘考試模擬試題及答案
- 醫院培訓中心管理制度
- GM/T 0009-2023SM2密碼算法使用規范
評論
0/150
提交評論