




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 成績評閱人中國礦業(yè)大學(xué)2015-2016學(xué)年第一學(xué)期數(shù)字視頻技術(shù)課程小設(shè)計考核設(shè)計題目:圖像的算術(shù)編碼研究專業(yè)班級: 學(xué)生姓名: 學(xué)生學(xué)號:指導(dǎo)教師: 成 績: 本人鄭重聲明:本人認真、獨立完成了查找資料、完成作業(yè)、編寫程序等考核任務(wù),無抄襲行為。簽字:日期:專心-專注-專業(yè)一、設(shè)計任務(wù)、目的和要求:1.1設(shè)計任務(wù):圖像的算術(shù)編碼1.2設(shè)計目的:1.了解圖像壓縮的意義方法,對比不同的壓縮方法;2.熟悉算術(shù)編碼的基本原理和特點;3.掌握改進的算術(shù)編碼的方法與具體實例應(yīng)用;4.掌握利用MATLAB編程實現(xiàn)數(shù)字圖像的算術(shù)編碼。1.3設(shè)計要求:要求實現(xiàn)灰度圖像的算術(shù)編碼和解
2、碼恢復(fù)圖像;處理結(jié)果要求最終圖像顯示,且計算圖像的信息熵,平均碼字長度,編碼效率,壓縮比。二、總體方案設(shè)計2.1 算術(shù)編碼簡介算術(shù)編碼,是圖像壓縮的主要算法之一。 是一種無損數(shù)據(jù)壓縮方法,也是一種熵編碼的方法。和其它熵編碼方法不同的地方在于,其他的熵編碼方法通常是把輸入的消息分割為符號,然后對每個符號進行編碼,而算術(shù)編碼是直接把整個輸入的消息編碼為一個數(shù),一個滿足(0.0 n < 1.0)的小數(shù)n。算術(shù)編碼是一種到目前為止編碼效率最高的統(tǒng)計熵編碼方法,它比著名的Huffman編碼效率提高10左右,但由于其編碼復(fù)雜性和實現(xiàn)技術(shù)的限 制以及一些專利權(quán)的限制,所以并不象Huffman編碼那樣應(yīng)
3、用廣泛。算術(shù)編碼有兩點優(yōu)于Huffman碼: 它的符號表示更緊湊; 它的編碼和符號的統(tǒng)計模型是分離的,可以和任何一種概率模型協(xié)同工作。后者非常重要, 因為只要提高模型的性能就可以提高編碼效率。2.2 軟件運行環(huán)境系統(tǒng)運行環(huán)境:windows 操作系統(tǒng)。軟件編程平臺:Matlab 2014a。2.3 編解碼算法原理2.3.1編碼算術(shù)編碼將整個要編碼的數(shù)據(jù)映射到一個位于0,1)的實數(shù)區(qū)間中。并且輸出一個小于1同時大于0的小數(shù)來表示全部數(shù)據(jù)。利用這種方法算術(shù)編碼可以讓壓縮率無限的接近數(shù)據(jù)的熵值,從而獲得理論上的最高壓縮率。 算術(shù)編碼進行編碼時,從實數(shù)區(qū)間0,1)開始。按照符號的頻度將當(dāng)前的區(qū)間分割成
4、多個子區(qū)間。根據(jù)當(dāng)前輸入的符號選擇對應(yīng)的子區(qū)間,然后從選擇的子區(qū)間中繼續(xù)進行下一輪的分割。不斷的進行這個過程,直到所有符號編碼完畢。對于最后選擇的一個子區(qū)間,輸出屬于該區(qū)間的一個小數(shù)。這個小數(shù)就是所有數(shù)據(jù)的編碼。子區(qū)間計算的迭代遞推公式:StartN=StartB+LeftC * LEndN=StartB+RightC * L其中StartN表示新子區(qū)間的起始位置,EndN表示新子區(qū)間的結(jié)束位置,StartB表示前子區(qū)間的起始位置,LeftC表示當(dāng)前符號的區(qū)間左端,RightC表示當(dāng)前符號的區(qū)間右端,L表示前子區(qū)間寬度。2.3.2 解碼算術(shù)編碼進行解碼時僅輸入一個小數(shù)。解碼前首先需要對區(qū)間0,
5、1)按照初始時的符號頻度進行分割。然后觀察輸入的小數(shù)位于那個子區(qū)間。輸出對應(yīng)的符號,選擇對應(yīng)的子區(qū)間,然后從選擇的子區(qū)間中繼續(xù)進行下一輪的分割。不斷的進行這個過程,直到所有的符號都解碼出來。整個過程相當(dāng)于編碼時的逆運算。 2.3.3 算術(shù)編碼的改進以上描述的算法,在當(dāng)前的計算機系統(tǒng)上是很難實現(xiàn)的。尤其是無限精度的實數(shù)運算。所以在實現(xiàn)的時候,需要對算法做一些改進。使得它可以在當(dāng)前的計算機系統(tǒng)上較快的運行。當(dāng)然,這種改進是以降低運算精度為代價的。也就是說,這種改進實際上會降低算法的壓縮率。但是,它會使算法的實現(xiàn)成為可能。 觀察前面描述的算法過程可以發(fā)現(xiàn),運算時區(qū)間的上下沿都是小于1的小數(shù)。那么我們
6、可以省略0和小數(shù)點,僅僅使用小數(shù)的尾數(shù)來表示小數(shù)。省略0和小數(shù)點后的尾數(shù),實際上就是一個無限大的整數(shù)。使用無限整數(shù)的部分高位來表示整數(shù),并在這些整數(shù)上進行整數(shù)運算就可以模擬出實數(shù)運算。 另外,分割區(qū)間、選擇子區(qū)間的過程,相當(dāng)于將一個區(qū)間映射到另一個更小的區(qū)間中(以下簡稱“映射區(qū)間”)。如果我們知道一個符號的頻度。以及符號值小于該符號的其它符號的頻度總計(以下簡稱“累積頻度(Cumulative Frequency)”)。還有到目前為止所有符號頻度的總計(以下簡稱“總計頻度(Total Frequency)”)。那么就可以根據(jù)這些頻度信息,從當(dāng)前區(qū)間中計算出映射區(qū)間。計算的公式如下: Range
7、 = High - Low + 1High = Low + Range * (CumFreq + Freq) /Total 1Low = Low + Range * CumFreq / Total其中Low表示區(qū)間的下沿;High表示區(qū)間的上沿;Range表示區(qū)間的范圍;Freq表示符號頻度;CumFreq表示累積頻度;Total表示總計頻度。這些變量中保存的都是整數(shù),并進行整數(shù)運算。其中”/”表示整除。另外需要注意一點,這里使用閉區(qū)間Low,High,而不是使用右開區(qū)間Low,High)。 在解碼的時候也可以進行整數(shù)運算。根據(jù)輸入的整數(shù)數(shù)值、當(dāng)前區(qū)間的下沿和總計頻度,可以計算出一個估算出來的
8、累積頻度(以下簡稱“估算頻度(Estimate Frequency)”)。其計算公式如下。 Range = High - Low + 1 EstFreq = (Value - Low + 1) * Total - 1) div Range 其中,Value表示輸入的整數(shù)數(shù)值;EstFreq表示估算頻度。利用估算頻度在當(dāng)前的累積頻度表中查找,當(dāng)滿足CumFreq EstFreq CumFreq + Freq的條件時,就可以解碼出一個符號。利用解碼出的符號可以得到對應(yīng)的累積頻度和頻度。根據(jù)這些頻度信息,可以從當(dāng)前區(qū)間中計算出映射區(qū)間。這一點同編碼時是一樣的。計算出映射區(qū)間后,更新對應(yīng)符號的頻度,又
9、可以進行新的一輪解碼。 2.3.4流程圖 (1) 主程序 (2)概率統(tǒng)計(3)編碼函數(shù)三、設(shè)計與實現(xiàn)Matlab所有程序如下:(1)Matlab主程序close all; clear all; clc;%關(guān)閉所有圖形窗口,清除工作空間所有變量,清空命令行image=imread('lena.bmp');%讀取圖像,得到圖像的數(shù)據(jù)矩陣X=imread('lena.bmp');subplot(1,3,1);imshow(X);title('原始圖像')%對圖像縮小N=16;seq=imresize(image,N,N);%B = imresize(A
10、, rows cols),rows cols為圖像調(diào)整后的尺寸%當(dāng)使用公式seq=imresize(image,M),M指縮小倍數(shù)時,利用代碼m,n=size(seq) r,c=size(A),當(dāng)有兩個輸出參數(shù)時,size函數(shù)將矩陣的行數(shù)返回到第一個輸出變量r,將矩陣的列數(shù)返回到第二個輸出變量c。%二維數(shù)據(jù)轉(zhuǎn)化成一維k=1;for j=1:N for i=1:N x(k)=seq(j,i); k=k+1; endend%計算信源每個灰度值的概率alpha cnt=probmodel(x); %cnt(i)為信源符號出現(xiàn)的次數(shù),alpha(i)信源符號%開始編碼btag=arithintcod(
11、alpha,cnt,x);%計算編碼長度b=length(btag);%開始解碼outseq=arithintdecod(btag,alpha,cnt,length(x);%對解碼出的一維數(shù)據(jù)轉(zhuǎn)換為二維圖像k=1;for j=1:N for i=1:N outimg(j,i)=outseq(k); k=k+1; endend%計算信息熵sum=N*N;H=0; %初始化信息熵for i=0:255; r,c=find(seq=i); %統(tǒng)計每個灰度值的像素點總數(shù) num(i+1)=length(r); p(i+1)=num(i+1)/sum; %統(tǒng)計每個灰度值的概率 if p(i+1)=0 H
12、=H-p(i+1)*log2(p(i+1); %計算信息熵 endend%計算平均碼字長度pjmc=b/sum;%計算編碼效率bmxl=H/pjmc;%計算壓縮比ysb=sum*8/b;%輸出最終結(jié)果%輸出編碼前圖像disp('原圖像');disp(x);%輸出編碼disp(strcat('編碼 =',btag);%輸出解碼disp('解碼圖像');disp(outseq);disp('信息熵');disp(H);disp('平均碼字長度');disp(pjmc);disp('編碼效率');disp
13、(bmxl);disp('壓縮比');disp(ysb);subplot(1,3,2),imshow(seq),title('壓縮圖像');subplot(1,3,3),imshow(outimg),title('解碼圖像');d=length(x);(2)概率統(tǒng)計probmodel函數(shù)%概率統(tǒng)計程序function alpha cnt=probmodel(seq) %輸入seq原始圖像 %cnt(i)信源符號出現(xiàn)的次數(shù) %alpha(i)信源符號 if isempty(seq) alpha(1)=seq(1); %初始化 cnt(1)=1; %
14、初始化 l=length(seq); %計算循環(huán)次數(shù) k=2; for i=2:l %遍歷數(shù)據(jù) idx=find(seq(i)=alpha); %尋找alpha中是否有該符號 if isempty(idx) %若沒有,則添加入alpha alpha(k)=seq(i); cnt(k)=1; k=k+1; else %若有,則該該符號出現(xiàn)次數(shù)加一 cnt(idx)=cnt(idx)+1; end end else alpha=0; cnt=0; end end(3)編碼函數(shù)%實現(xiàn)編碼的函數(shù)function tag=arithintcod(alpha,cnt,seq) %算術(shù)編碼%alpha表示信
15、源符號%cnt表示信源符號出現(xiàn)次數(shù),概率%seq表示輸入圖像數(shù)據(jù) ls=length(seq); %計算輸入數(shù)據(jù)的總個數(shù) CC(1)=0; %計算累計概率,便于計算上下限 for i=1:length(cnt) CC(i+1)=CC(i)+cnt(i); end totcount=CC(i+1); %總符號數(shù) m=ceil(log2(totcount*4); %需要編碼的長度 l=0; %下限 u=2m-1; %上限 tag='' %編碼標簽 scale=0; %開始迭代過程 for i=1:ls %開始迭代編碼 p=find(seq(i)=alpha); %該符號在信源符號的
16、位置 l1=l+floor(u-l+1)*CC(p)/totcount); %計算上下限 u=l+floor(u-l+1)*CC(p+1)/totcount)-1; l=l1; lb=dec2bin(l,m); %轉(zhuǎn)換為字符串二進制 ub=dec2bin(u,m); E2=1;E3=1; %區(qū)間擴展的兩個條件 while (E2 | E3) fbl=lb(1); %上下限第一位 fbu=ub(1); if fbl=fbu %若首位相等,則可移出,并擴展區(qū)間 E2=1; tag=strcat(tag,fbl); %移出 lb(1)='' %左移,擴展區(qū)間 lb(end+1)=
17、39;0' ub(1)='' ub(end+1)='1' if fbl='0' sc='1' else sc='0' end while scale>0 tag=strcat(tag,sc); scale=scale-1; end else E2=0; end sbl=lb(2); sbu=ub(2); fbl=lb(1); %上下限第一位 fbu=ub(1); if fbl=fbu if sbl='1' & sbu='0' %忽略次高位,并記錄忽略次數(shù) lb(
18、1)='' lb(end+1)='0' ub(1)='' ub(end+1)='1' lb(1)='0' ub(1)='1' scale=scale+1; E3=1; else E3=0; end end end l=bin2dec(lb); %轉(zhuǎn)換為10進制 u=bin2dec(ub); end f=lb(1); %對最終區(qū)間編碼 lb(1)='' if f='0' sc='1' else sc='0' end tag=strcat(
19、tag,f); while scale>0 tag=strcat(tag,sc); scale=scale-1; end tag=strcat(tag,lb);end(4)解碼函數(shù)%解碼程序function seq=arithintdecod(btag,alpha,cnt,lgt) CC(1)=0; %seq表示輸出的序列 for i=1:length(cnt)%cnt是概率 CC(i+1)=CC(i)+cnt(i); end totcount=CC(i+1); m=ceil(log2(totcount*4); %向上取整 l=0; u=2m-1; for i=1:lgt ts=btag
20、(1:m); t=bin2dec(ts); k=1; s=floor(t-l+1)*totcount-1)/(u-l+1); while(s>=CC(k) k=k+1; end seq(i)=alpha(k-1) ; l1=l+floor(u-l+1)*CC(k-1)/totcount); u=l+floor(u-l+1)*CC(k)/totcount)-1; l=l1; lb=dec2bin(l,m); ub=dec2bin(u,m); E2=1;E3=1; while (E2 | E3) fbl=lb(1); fbu=ub(1); if fbl=fbu E2=1; lb(1)=
21、9;' lb(end+1)='0' ub(1)='' ub(end+1)='1' btag(1)='' else E2=0; end sbl=lb(2); sbu=ub(2); if sbl='1' & sbu='0' lb(1)='' lb(end+1)='0' ub(1)='' ub(end+1)='1' lb(1)='0' ub(1)='1' btag(1)='' if (bta
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考數(shù)學(xué)題目分析與解題試題及答案
- 經(jīng)濟衰退后的政策選擇試題及答案
- 2025年軟件設(shè)計師考試的知識應(yīng)用能力提升試題及答案
- 跨文化交流與2024年高考作文試題及答案
- 網(wǎng)絡(luò)管理員考試重點內(nèi)容試題及答案2025
- 梳理知識點2025年中級會計實務(wù)考試試題及答案
- 法學(xué)概論理論問題及試題和答案詳解
- 行政法學(xué)發(fā)展歷程中的試題及答案
- 后端架構(gòu)設(shè)計試題及答案
- 高考作文訓(xùn)練的方法與建議試題及答案
- 施工員培訓(xùn)課件
- 2024年山東棗莊東林農(nóng)文化產(chǎn)業(yè)發(fā)展有限公司招聘筆試真題
- 新疆可克達拉職業(yè)技術(shù)學(xué)院招聘事業(yè)單位人員筆試真題2024
- 增材制造在虛擬現(xiàn)實輔助機械制造中的應(yīng)用-洞察闡釋
- 土石回填合同協(xié)議書
- 電信網(wǎng)上大學(xué)智能云服務(wù)交付工程師認證參考試題庫(附答案)
- 【蘇州】2025年江蘇省蘇州工業(yè)園區(qū)部分單位公開招聘工作人員51人筆試歷年典型考題及考點剖析附帶答案詳解
- 混凝土罐車運輸合同協(xié)議
- 西部計劃筆試試題及答案
- 重慶金太陽2025屆高三5月聯(lián)考英語及答案
- 護理事業(yè)編試題及答案
評論
0/150
提交評論