基于DCT的圖像編解碼設(shè)計(jì)_第1頁(yè)
基于DCT的圖像編解碼設(shè)計(jì)_第2頁(yè)
基于DCT的圖像編解碼設(shè)計(jì)_第3頁(yè)
基于DCT的圖像編解碼設(shè)計(jì)_第4頁(yè)
基于DCT的圖像編解碼設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. 緒論MATLAB 是由美國(guó)mathworks 公司發(fā)布的主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語(yǔ)言(如C 、Fortran ) 的編輯模式,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。隨著信息技術(shù)的發(fā)展,圖像信息被廣泛應(yīng)用于多媒體通信和計(jì)算機(jī)系統(tǒng)中,但是圖像數(shù)據(jù)的一個(gè)顯著特點(diǎn)就是信息量大。具有龐大的數(shù)據(jù)量,如果不經(jīng)過(guò)壓縮,不僅超出了計(jì)算機(jī)

2、的存儲(chǔ)和處理能力,而且在現(xiàn)有的通信信道的傳輸速率下,是無(wú)法完成大量多媒體信息實(shí)時(shí)傳輸?shù)?,因此,為了更有效的存?chǔ)、處理和傳輸這些圖像數(shù)據(jù),必須對(duì)其進(jìn)行壓縮,因此有必要對(duì)圖像壓縮編碼進(jìn)行研究。由于組成圖像的各像素之間,無(wú)論是在水平方向還是在垂直方向上都存在著一定的相關(guān)性,因此只要應(yīng)用某種圖像壓縮編碼方法提取或者減少這種相關(guān)性,就可以達(dá)到壓縮數(shù)據(jù)的目的。數(shù)字圖像包含的冗余信息一般有以下兒種: 空問(wèn)元余、時(shí)間冗余、信息;腦冗余、統(tǒng)計(jì)冗余、結(jié)構(gòu)冗余、視覺(jué)冗余以及知識(shí)冗余等。圖像壓縮算法就是要在保證圖像一定的熏建質(zhì)量的同時(shí),盡可能多的去除這些元余信息.以達(dá)到對(duì)圖像壓縮的目的。隨著科學(xué)技術(shù)的發(fā)展,圖像壓縮編

3、碼技術(shù)越來(lái)越引起人們的關(guān)注。所謂的圖像壓縮編碼技術(shù)就是對(duì)要處理的圖像數(shù)據(jù)按一定的規(guī)則進(jìn)行變換和組合,從而達(dá)到以盡可能少的數(shù)據(jù)流來(lái)表示盡可能多的數(shù)據(jù)信息。本設(shè)計(jì)基于DCT 的JPEG、PNG、BMP 等格式圖像編解碼設(shè)計(jì)算法進(jìn)行研究,介紹了編碼中DCT變換、量化、游程編碼等模塊的原理和數(shù)學(xué)推導(dǎo)以及各模塊的功能分析。最后應(yīng)用MATLAB 進(jìn)行了實(shí)驗(yàn)仿真并分析結(jié)果得出結(jié)論。DCT 變換后具有絕對(duì)的去相關(guān)性,并且變換后的矩陣從左上角到右下角頻率規(guī)律的漸高。有損壓縮方法利用了人類視覺(jué)對(duì)圖像中的某些頻率成分不敏感的特性,允許壓縮過(guò)程中損失一定的信息;雖然不能完全恢復(fù)原始數(shù)據(jù), 但是所損失的部分對(duì)理解原始圖

4、像的影響較小,卻換來(lái)了大得多的壓縮比。因此舍棄高頻分量保留低頻分量的做法,對(duì)于圖像壓縮具有絕對(duì)的優(yōu)勢(shì)。只要損失的數(shù)據(jù)不太影響人眼主觀接收的效果,就可采用。DCT 變換后的壓縮此本設(shè)計(jì)采用經(jīng)典的游程編碼實(shí)現(xiàn)。2. 設(shè)計(jì)任務(wù)2. 1 任務(wù)描述基于DCT 的圖像編解碼設(shè)計(jì)(1) 獲取圖像;( 2) 采用DCT 實(shí)現(xiàn)對(duì)圖像編解碼設(shè)計(jì);(3) 分析編解碼性能2.2 技術(shù)指標(biāo)(1)可對(duì)JPEG、PNG、BMP 等格式圖像進(jìn)行基于DCT 的圖像編解碼。(2) 為了便于分析比較,定義一個(gè)量化系數(shù)quotiety,越大壓縮率越高。(3) 壓縮編碼、量化系數(shù)統(tǒng)一寫入存儲(chǔ)文件compressed_data.mat,

5、實(shí)現(xiàn)可移植解壓。( 4 ) 觀察壓縮后圖片大小,簡(jiǎn)便起見(jiàn),分析只關(guān)心compressed_data.mat 文件的大小。( 5 ) 實(shí)現(xiàn)DCT 變換和反變換以及JPEG 標(biāo)準(zhǔn)量化矩陣的量化、反量化。( 6 ) 根據(jù)DCT 量化后矩陣特點(diǎn),本設(shè)計(jì)編碼采用Z 字型掃描游程編碼、解碼。(7) DCT 壓縮前后比較,以及不同量化系數(shù)比較。3. 設(shè)計(jì)原理3. 1 原理框圖基于DCT 的圖像編碼包括三個(gè)階段: DCT 變換、量化、編碼。根據(jù)DCT量化后矩陣特點(diǎn),本設(shè)計(jì)編碼采用Z 字型掃描游程編碼、解碼。首先將輸入圖像顏色空間轉(zhuǎn)換后分解為8 X 8 大小的數(shù)據(jù)塊, 然后用正向二維DCT 把每個(gè)塊轉(zhuǎn)變成64

6、個(gè)DCT 系數(shù)值,其中1 個(gè)數(shù)值是直流(DC)系數(shù),即8X8 空域圖像子塊的平均值,其余的63 個(gè)是交流(AC)系數(shù),接下來(lái)對(duì)DCT 系數(shù)進(jìn)行量化,最后將變換得到的量化的DCT 系數(shù)進(jìn)行編碼和傳送, 這樣就完成了圖像的壓縮過(guò)程。壓縮圖像數(shù)據(jù)游程編碼量化DCT變換原始圖像數(shù)據(jù)碼表量化表圖3- 1 編碼過(guò)程基于DCT 的圖像編碼包括三個(gè)階段: 譯碼、反量化、IDCT 變換。在解碼過(guò)程中,形成壓縮后的圖像格式, 先對(duì)己編碼的量子化的DCT 系數(shù)進(jìn)行解碼,然后求逆量化并把DCT 系數(shù)轉(zhuǎn)化為8 X 8 樣本像塊(使用二維DCT 反變換),最后將操作完成后的塊組合成一個(gè)單一的圖像。這樣,就完成了圖像的解壓

7、過(guò)程。反量化IDCT變換原始圖像數(shù)據(jù)游程譯碼壓縮圖像數(shù)據(jù)量化表碼表圖3-2 解碼過(guò)程3.2 程序流程圖基于DCT 的圖像編解碼設(shè)計(jì)的MATLAB 實(shí)現(xiàn)的流程圖如圖3-3 所示。開(kāi)始輸入圖片輸入量化系數(shù)分成8*8像素塊,DCT變換輸入量化表,對(duì)變換結(jié)果量化對(duì)量化結(jié)果進(jìn)行掃描編碼保存編碼結(jié)果顯示壓縮圖像打開(kāi)編碼文件反量化反DCT變換顯示恢復(fù)圖像結(jié)束圖3-3 程序流程圖3. 3 離散余弦變換DCT 變換利用傅立葉變換的性質(zhì)。采用圖像邊界裙翻將像變換為偶函數(shù)形式,然后對(duì)圖像進(jìn)行二維傅立葉變換,變換后僅包含余弦項(xiàng),所以稱之為離散余弦變換。DCT 編碼屬于正交變換編碼方式,用于去除圖像數(shù)據(jù)的空間冗余。變換

8、編碼就是將圖像光強(qiáng)矩陣(時(shí)域信號(hào))變換到系數(shù)空間(頻域信號(hào))上進(jìn)行處理的方法。在空間上具有強(qiáng)相關(guān)的信號(hào),反映在頻域上是在某些特定的區(qū)域內(nèi)能量常常被集中在一起,或者是系數(shù)矩陣的分布具有某些規(guī)律。我們可以利用這些規(guī)律在頻域上減少量化比特?cái)?shù),達(dá)到壓縮的目的。圖像經(jīng)DCT 變換以后,DCT 系數(shù)之間的相關(guān)性就會(huì)變小。而且大部分能量集中在少數(shù)的系數(shù)上,因此,DCT 變換在圖像壓縮中非常有用,是有損圖像壓縮國(guó)際標(biāo)準(zhǔn)JPEG 的核心。從原理上講可以對(duì)整l幅圖像進(jìn)行DCT 變換,但由于圖像各部位上細(xì)節(jié)的豐富程度不同,這種整體處理的方式效果不好。為此,發(fā)送者首先將輸入圖像分解為8*8 或16*16 塊,然后再對(duì)

9、每個(gè)圖像塊進(jìn)行二維DCT 變換,接著再對(duì)DCT 系數(shù)進(jìn)行量化、編碼和傳輸;接收者通過(guò)對(duì)量化的DCT系數(shù)進(jìn)行解碼,并對(duì)每個(gè)圖像塊進(jìn)行的二維DCT 反變換。最后將操作完成后所有的塊拼接起來(lái)構(gòu)成一幅單一的圖像。對(duì)于一般的圖像而言,大多數(shù)DCT系數(shù)值都接近于0,所以去掉這些系數(shù)不會(huì)對(duì)重建圖像的質(zhì)量產(chǎn)生較大影響。因此,利用DCT 進(jìn)行圖像壓縮確實(shí)可以節(jié)約大量的存儲(chǔ)空間。在實(shí)驗(yàn)中,先將輸入的原始圖像分為8*8 的小塊,然后再對(duì)每個(gè)塊進(jìn)行二維DCT變換。二維離散余弦變換可以寫成矩陣式(F(u,v)=(A)(f(x,y)(A)(f(x,y)=(A)(F(u,v)(A)式中, (f(x,y)是空間域數(shù)據(jù)陣列,

10、(F(u,v)是變換系數(shù)陣列, (A)是系數(shù)陣列,變換矩陣(A)'是(A) 的轉(zhuǎn)置。設(shè)計(jì)中2 維DCT 變換函數(shù)代碼如下:function Xpq=DCT2_function(xmn,M)T=dctmtx(M); %產(chǎn)生二維DCT 變換矩陣Xpq=T*xmn*T;設(shè)計(jì)中2 維IDCT 變換函數(shù)代碼如下:function xmn_resume=IDCL_function(Xpq_resume,M)T=dctmtx(M); %生成變換矩陣xmn_resume=T*Xpq_resume*T; %用變化矩陣的乘法代替效率極低的for求和循環(huán)3.4 量化在DCT 處理中得到的64 個(gè)數(shù)據(jù)中,低頻

11、分量包含了圖像亮度等主要信息。在從空間域到頻域的變換中,圖像中的緩慢變化比快速變化更易引起人眼的注意, 所以在重建圖像時(shí),低頻分量的重要性高于高頻分量。因而在編碼時(shí)可以忽略高頻分量,即減小非" 0"系數(shù)的l幅度以及增加" 0" 值系數(shù)的數(shù)目,從而達(dá)到壓縮的目的,這也是量化的根據(jù)和目的,也是圖像質(zhì)量下降的最主要原因。在JPEG 標(biāo)準(zhǔn)中,用具有64 個(gè)獨(dú)立元素的量化表來(lái)規(guī)定DCT 域中相應(yīng)的64個(gè)系數(shù)的量化精度,使得對(duì)某個(gè)系數(shù)的具體量化階取決于人眼對(duì)該頻率分量的視覺(jué)敏感程度。理論上, 對(duì)不同的空間分辨率、數(shù)據(jù)精度等情況,應(yīng)該有不同的量化衰。不過(guò), 一般采用下

12、圖所示的量化表,可取得較好的視覺(jué)效果。量化化就是用DCT 變換后的系數(shù)除以量化表中相對(duì)應(yīng)的量化階后四舍五入取整。由于量化表中左上角的值較小,而右下角的值較大, 因而起到了保持低頻分量、抑制高頻分量的作用。為了便于分析比較,定義一個(gè)量化系數(shù)quotiety,量化系數(shù)越大,壓縮率越高。量化系數(shù)quotiety在程序中是將JPEG標(biāo)準(zhǔn)量化矩陣*quotiety作為真正的量化矩陣。quotiety取值為大于1的任意實(shí)數(shù)。本設(shè)計(jì)中利用函數(shù)integral_function.m和deintegral_function實(shí)現(xiàn)量化和反量化。161110162440516112121419265860551413

13、1624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399圖3-4 灰皮值量化表量化會(huì)產(chǎn)生誤差,上表是綜合大量的圖像測(cè)試的實(shí)驗(yàn)結(jié)果,對(duì)于大部分圖像都有很好的結(jié)果勻。表中可以看出,高頻部分對(duì)應(yīng)的量化值大,目的就是將高頻部分編程接近于0,以便以后處理。JPEG 可以在壓縮比和圖像質(zhì)量問(wèn)作取舍。方法就是改變量化系數(shù)。如果量化值放大,則有更多的系數(shù)值為0,提高了壓縮比。3.5 Z形掃描游程編碼DCT 系數(shù)量化后,構(gòu)成一個(gè)稀疏矩陣,用Z CZigzag) 形

14、掃描將其變成一維數(shù)列,將有利于游程編碼。Z 形掃描的順序如圖3-4。圖3-5 Z 形掃描順序圖游程編碼是一種統(tǒng)計(jì)編碼,該編碼屬于無(wú)損壓縮編碼,是柵格數(shù)據(jù)壓縮的重要編碼方法。游程編碼的基本原理是: 用一個(gè)符號(hào)值或串長(zhǎng)代替具有相同值的連續(xù)符號(hào),使符號(hào)長(zhǎng)度少于原始數(shù)據(jù)的長(zhǎng)度。只在各行或者各列數(shù)據(jù)的代碼發(fā)生變化時(shí),一次記錄該代碼及相同代碼重復(fù)的個(gè)數(shù),從而實(shí)現(xiàn)數(shù)據(jù)的壓縮。游程編碼運(yùn)算簡(jiǎn)單,適用于機(jī)器存儲(chǔ)容量小,數(shù)據(jù)需大量壓縮,而又要避免復(fù)雜的編碼和解碼運(yùn)算,增加處理和操作時(shí)間的情況。本設(shè)計(jì)中利用兩個(gè)函數(shù)Run_length_coding_function.m 和Run_length_decoding_f

15、unction.m 分別實(shí)現(xiàn)Z 字形游程的編碼解碼。由于DCT 變換后右下角頻率高,左上角頻率分量低。而人眼對(duì)高頻成分識(shí)別小,對(duì)低頻成分識(shí)別大。量化后0主要集中在右下方,于是Z 字形掃描對(duì)于游程編碼才有利。主要思路是將原矩陣的每個(gè)元素變化為用兩個(gè)元素a,b表示, a 表示在這個(gè)元素之前0 的個(gè)數(shù), b 表示這個(gè)元素是什么。當(dāng)發(fā)現(xiàn)之后的多有元素都是0 的時(shí)候用0 , 0作為結(jié)束標(biāo)志。這樣, 只要矩陣中0 的個(gè)數(shù)超過(guò)一半,編碼后數(shù)據(jù)量就比原來(lái)小。由于在8*8 中連續(xù)出現(xiàn)不為0 的相同元素的兒率極小, 因此運(yùn)用游程編碼的思想時(shí)只考慮出現(xiàn)的0 的個(gè)數(shù)。4. 運(yùn)行結(jié)果及分析4. 1 不同量化系數(shù)圖像編解

16、碼效果比較量化系數(shù)quotiety: 程序中是將Jpeg 標(biāo)準(zhǔn)量化矩陣* quotiety 作為真正的量化矩陣。quotiety 取值為大于1 的任意實(shí)數(shù)。下面以jpg 格式圖像為標(biāo)準(zhǔn),取不同的量化系數(shù)quotiety 進(jìn)行比較, 原始圖像大小為84.8KB:圖4-1 原始圖像圖4-2 quotiety=1 時(shí)恢復(fù)圖像此時(shí)壓縮編碼文件為compressed_data 大小為21.5KB 。圖4-3 quotiety=2 時(shí)恢復(fù)圖像此時(shí)壓縮編碼文件為compressed_data 大小為14.6KB 。圖4-4 quotiety=5 時(shí)恢復(fù)圖像此時(shí)壓縮編碼文件為compressed_data 大

17、小為9.00KB 。圖4-5 quotiety=10 時(shí)恢復(fù)圖像此時(shí)壓縮編碼文件為compressed_data 大小為5.85KB 。結(jié)論: 量化系數(shù)quotiety 越大,壓縮率越高,圖像恢復(fù)的效果也越差。量化會(huì)產(chǎn)生誤差,如果量化值放大,則有更多的灰度值變?yōu)?, 能夠提高壓縮比。4.2 不同文件類型圖像編解碼比較量化系數(shù)quotiety 都取5 時(shí), 對(duì)不同文件類型的test圖進(jìn)行編解碼圖4-6 原始圖像下面為jpg的test圖編碼的解碼恢復(fù)圖像:圖4-7 jpg 格式的恢復(fù)圖像下面為BMP 的test 圖編碼的解碼恢復(fù)圖像:圖4-8 bmp 格式的恢復(fù)圖像下面為PNG 的test 圖編碼

18、的解碼恢復(fù)圖像:圖4-9PNG 格式的恢復(fù)圖像觀察三個(gè)恢復(fù)圖像,在原始圖像相同的情況下,三種文件格式下編解碼解碼效果無(wú)太大差異。當(dāng)量化系數(shù)quotiety 取其他值時(shí), 三種文件格式編碼解碼效果也相同。由此可知,該系統(tǒng)可以用于JPG、BMP. PNG 等文件的壓縮編碼和解碼,且編碼解碼效果相同。5. 總結(jié)本次信息處理系統(tǒng)綜合訓(xùn)練讓我更熟悉地掌握MATLAB 的功能,靈活運(yùn)用MATLAB,加強(qiáng)對(duì)MATLAB 軟件圖像處理的能力,掌握?qǐng)D像的離散余弦變換對(duì)圖像進(jìn)行壓縮,以及游程編碼等概念。在熟悉掌握MATLAB 程序和操作的同時(shí)培養(yǎng)了我的獨(dú)立思考能力,鉆研精神, 解決問(wèn)題能力和動(dòng)手能力。雖然在此之前

19、通過(guò)基礎(chǔ)強(qiáng)化訓(xùn)練、運(yùn)用國(guó)MATLAB 軟件并完成簡(jiǎn)單圖像操作,但知道的只是最基本的的應(yīng)用,對(duì)于MATLAB 在圖像處理上的應(yīng)用,我完全沒(méi)有理解。本次課程設(shè)計(jì)中通過(guò)查閱資料, 閱讀程序并讀寫程序?qū)ATLAB圖像應(yīng)用有了更深的了解。我同時(shí)也認(rèn)識(shí)到了MATLAB 功能并不只是圖形的繪制及波形的處理,有著很多方面的運(yùn)用,如繪制函數(shù),處理音頻、圖像數(shù)據(jù),創(chuàng)建用戶界面等功能,實(shí)為一個(gè)功能強(qiáng)大的軟件。在課設(shè)過(guò)程中每每編寫程序及操作時(shí)出現(xiàn)問(wèn)題,我都會(huì)通過(guò)查閱資料,仔細(xì)檢查解決問(wèn)題, 經(jīng)過(guò)一次次的修改完善,才出現(xiàn)最終的最優(yōu)結(jié)果。在這個(gè)過(guò)程中,面對(duì)問(wèn)題不放棄不急躁, 一次次改進(jìn), 靜下心來(lái)慢慢解決,并細(xì)致完善細(xì)

20、節(jié),從而能培養(yǎng)一種良好的學(xué)習(xí)心態(tài)和習(xí)慣。數(shù)據(jù)壓縮技術(shù)的優(yōu)劣主要是由壓縮所能達(dá)到的壓縮倍數(shù)、從壓縮后的數(shù)據(jù)所能恢復(fù)的圖像的質(zhì)量和算法的復(fù)雜度、解碼的速度等方面來(lái)衡量的?;贒CT 的混合編碼技術(shù)對(duì)于圖像的壓縮倍數(shù)可以達(dá)到幾十倍甚至上百倍, 而且重建的圖像又具有較高的質(zhì)量, 因此得到廣泛的應(yīng)用。用MATLAB 來(lái)實(shí)現(xiàn)離散余弦變換的圖像壓縮,具有方法簡(jiǎn)單、速度快、誤差小的優(yōu)點(diǎn),免去了大量的矩陣計(jì)算, 大大提高了圖像壓縮的效率和精度。6 . 參考文獻(xiàn) 1 張秋臣.淺談MATLAB 分析及UG 的運(yùn)動(dòng)仿真期刊論文-錦繡, 2013. 04.2 祝本明,劉桂華.一種改進(jìn)的游程編碼算法期刊論文-西南科技大學(xué)

21、學(xué)報(bào),2007. 03.3 http:/w啊. docin. com/p-39240958 1. html.4 http :/www. html.5 楊杰,黃朝兵.數(shù)字圖像處理及MATLAB 實(shí)現(xiàn). 北京: 電子工業(yè)出版社,201 1. 01;附錄:Main Menu.mk=menu('請(qǐng)選擇需要的功能',' 圖 像 壓 縮 , 圖 像 解 壓 );switch kcase 1DCT_compress;Main_Menu;case 2IDCT_decompress;Main_Menu;endDCT_compress.m%主要思想:%-à讀取圖像文件%-

22、4;分塊DCT 變換%-àJPEG錦標(biāo)準(zhǔn)量化表量化%-àZ字形游程編碼%-à存儲(chǔ)壓縮后的文件clear all; clc;global quotiety;FileName,PathName,FilterIndex=uigetfile('*.bmp;*.jpg;*.png','請(qǐng)選擇要壓縮的源圖像');string=sprintf('%s%s',PathName,FileName);quotiety=inputdlg('系數(shù)越大壓縮率越高','輸入您需要的壓縮系數(shù): ',1,'1

23、');h=waitbar(0,'正在壓縮, 請(qǐng)稍候');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 %對(duì)每一小塊游程編碼,結(jié)果存在cell數(shù)組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'); %存儲(chǔ)編碼后的信息、量化系數(shù)figure;imshow(Xpq_estimate);title('壓縮圖像');DCT2_function.m function Xpq=DCT2_function(xmn,M) T=dctmtx(M);    %產(chǎn)生二維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); %此處的量化系數(shù)表示除以的Jpeg 標(biāo)準(zhǔn)量化矩陣的倍數(shù)Run_length_coding_fuoctioo.m%由于DCT變換后右下角頻率高,左上角頻率分量低。而人眼對(duì)高頻成分識(shí)別小,對(duì)低頻成分識(shí)別大 %量化后0主要集中在右下方,于是Z字形掃描對(duì)于游程編碼才有利 %主要思想:原矩陣的每個(gè)元素變化為用兩個(gè)元素【a,b】表示,a表示在這個(gè)元素之前0的個(gè)數(shù),% b表示這個(gè)元素是什么。當(dāng)發(fā)現(xiàn)之后的多有元素都是0的時(shí)候用【0,0】作為結(jié)束標(biāo)志。 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=; %存儲(chǔ)編碼后的結(jié)果 count=0; compress_index=1; for index=1:1:64 %掃描 if Xpq_estimate(table(index,1),table(index,2)=0  %如果遇到了0,那么下一個(gè)數(shù)字到來(lái)之前的0的個(gè)數(shù)就加1 count=count+1; else  %如果遇到的不是0,那么Xpq_

30、coded=(,)的第一個(gè)元素存儲(chǔ)之前0的個(gè)數(shù),第二個(gè)元素存儲(chǔ)此時(shí)遇到的這個(gè)元素Xpq_coded(compress_index,1)=count; Xpq_coded(compress_index,2)=Xpq_estimate(table(index,1),table(index,2);         count=0;  %過(guò)去這個(gè)元素之后0的個(gè)數(shù)就要重新計(jì)         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%主要思想:%跟壓縮過(guò)稱恰好相反%一讀取壓縮文件%一Z字形游程解碼%一JPEG標(biāo)準(zhǔn)量化表反量化%一分

32、塊DCT 變換%一存儲(chǔ)解壓后的文件c1ear all;c1c;global quotiety;uiload;h=waitbar(O,'正在解壓, 請(qǐng)稍候');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('恢復(fù)的圖像'); IDCT2 function.mfunction xmn_resume=IDCT2_function(Xpq_resume,M)T=dctmtx(M); %生成變換矩陣xmn_resume=T'*Xpq_res

35、ume*T; % 用變化矩陣的乘法代替效率極低的for求和循環(huán)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; %反量化恢復(fù)的過(guò)程要考慮到量化系數(shù)quotiety的影響Run_length_decoding_function.m%與Run_length_coding如nction 完全相逆的過(guò)程解碼, 此處不再贅述function Xpq_deestimate=Run_length_d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論