數(shù)字圖像處理實驗matlab4_第1頁
數(shù)字圖像處理實驗matlab4_第2頁
數(shù)字圖像處理實驗matlab4_第3頁
數(shù)字圖像處理實驗matlab4_第4頁
數(shù)字圖像處理實驗matlab4_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)字圖像處理實驗matlab4PAGEPAGE1————————————————————————————————作者:————————————————————————————————日期: 個人收集整理勿做商業(yè)用途個人收集整理勿做商業(yè)用途個人收集整理勿做商業(yè)用途9,對圖3實施正交變換編碼和解碼(采用離散傅立葉變換)。建議將圖3分成4*4的4個子圖象。思路:先將圖3數(shù)據(jù)讀入模塊,顯示圖像,將圖分塊進(jìn)行DFT變換,顯示圖像,,在進(jìn)行反變換恢復(fù)原數(shù)據(jù),在進(jìn)行哈夫曼編碼編碼,后解碼。原理:傅立葉變換傅立葉變換是數(shù)字圖像處理中應(yīng)用最廣的一種變換,其中圖像增強(qiáng)、圖像復(fù)原和圖像分析與描述等,每一類處理方法都要用到圖像變換,尤其是圖像的傅立葉變換.離散傅立葉(Fourier)變換的定義:二維離散傅立葉變換(DFT)為:逆變換為:式中,在DFT變換對中,稱為離散信號的頻譜,而稱為幅度譜,為相位角,功率譜為頻譜的平方,它們之間的關(guān)系為:圖像的傅立葉變換有快速算法.下面給出具體的Huffman編碼算法。(1)首先統(tǒng)計出每個符號出現(xiàn)的頻率,例如S0到S7的出現(xiàn)頻率分別為:0.25,0.19,0。08,0.06,0。21,0。02,0.03,0.16(2)從左到右把上述頻率按從大到小的順序排列。(3)將最小的兩個數(shù)相加的值表上*號,其余的數(shù)據(jù)不變,然后將得到的數(shù)據(jù)排序(4)重復(fù)(3),直到只有兩個數(shù)據(jù).(5)從最后一列概率編碼,從而得到最終編碼。具體過程如下圖所示:概率壓縮過程:初始信源信源的消減步驟符號概率123456S00。250.250。250.250。35*0。4*0。6*0。210。210.210.250.350。40.190。190.190.210。250.160.160。19*0。190.080。11*0。160。060.080.05*S40。21S10。19S70.16S20。08S30。06S60.03S50。02表3-1哈夫曼概率壓縮過程編碼過程:初始信源對消減信源的賦值符號概率編碼123456S00.25010.25010.25010。25010。35*000。4*10.6*00.21100。21100。21100。25010。35000。410.19110。19110.19110.21100。25010.160010.160010.19*0000.19110.0800010。11*00000.1600010。06000000.0800010。05*00001S40。2110S10.1911S70。16001S20。080001S30。0600000S60.03000010S50。02000011表3-2哈夫曼算法編碼過程讀入圖像算法流程讀入圖像初始化初始化統(tǒng)計每種灰度數(shù)統(tǒng)計每種灰度數(shù)灰度數(shù)排序此處并沒有采用概率排序,灰度數(shù)排序而是采用對灰度像素個數(shù)按哈夫曼算法編碼排序,這是因為計算概率無按哈夫曼算法編碼疑增大了計算量,因此用灰將灰度編碼表及原圖的編碼寫入txt將灰度編碼表及原圖的編碼寫入txt圖3—1哈夫曼算法程序流程圖程序:clc;clear;closeall;A=[3344445241122154434444524525031215033564231122120365572031221506];subplot(2,2,1),imshow(A);title(’原圖’);I=double(A);P=A(1:4,1:4);K=fft(P);P1=A(1:4,5:8);K1=fft(P1);P2=A(5:8,1:4);K2=fft(P2);P3=A(5:8,5:8);K3=fft(P3);fori=1:4forj=1:4H(i,j)=K(i,j);endendfori=1:4forj=5:8H(i,j)=K1(i,j-4);endendfori=5:8forj=1:4H(i,j)=K2(i—4,j);endendfori=5:8forj=5:8H(i,j)=K3(i-4,j-4);endendsubplot(2,2,2),imshow(H);title(’DFT變換后的頻域圖像’);I=H(1:4,1:4);M=ifft(I);I1=H(1:4,5:8);M1=ifft(I1);I2=H(5:8,1:4);M2=ifft(I2);I3=H(5:8,5:8);M3=ifft(I3);fori=1:4forj=1:4A1(i,j)=M(i,j);endendfori=1:4forj=5:8A1(i,j)=M1(i,j-4);endendfori=5:8forj=1:4A1(i,j)=M2(i-4,j);endendfori=5:8forj=5:8A1(i,j)=M3(i—4,j—4);endendsubplot(2,2,3),imshow(A1);title(’復(fù)原圖像');%編碼%讀入圖像,定義結(jié)構(gòu)體,便于存儲I=A;pix(8)=struct('huidu',0.0,.。.'number',0。0,..。'bianma',’’);[mnl]=size(I);fid=fopen('E:\學(xué)習(xí)\數(shù)字圖像處理\huffman。txt',’w');%huffman。txt是灰度級及相應(yīng)的編碼表fid1=fopen(’E:\學(xué)習(xí)\數(shù)字圖像處理\huff_compara.txt','w');%huff_compara.txt是編碼表huf_bac=cell(1,l);fort=1:l%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化結(jié)構(gòu)數(shù)組fori=1:8pix(i)。number=1;pix(i)。huidu=i-1;pix(i).bianma='’;end%統(tǒng)計每種灰度像素的個數(shù)記錄在pix數(shù)組中fori=1:mforj=1:nk=I(i,j,t)+1;pix(k).number=1+pix(k).number;endend%按灰度像素個數(shù)從大到小排序fori=1:7forj=i+1:8ifpix(i).number<pix(j).numbertemp=pix(j);pix(j)=pix(i);pix(i)=temp;endendendfori=8:-1:1ifpix(i)。number~=0break;endendnum=i;count(t)=i;%記錄每層灰度級%定義用于求解的矩陣clearhuffmanhuffman(num,num)=struct(’huidu’,0。0,.。.'number',0.0,。..’bianma’,’');huffman(num,:)=pix(1:num);%矩陣賦值fori=num-1:—1:1p=1;%算出隊列中數(shù)量最少的兩種灰度的像素個數(shù)的和sum=huffman(i+1,i+1).number+huffman(i+1,i)。number;forj=1:i%如果當(dāng)前要復(fù)制的結(jié)構(gòu)體的像素個數(shù)大于sum就直接復(fù)制ifhuffman(i+1,p).number>sumhuffman(i,j)=huffman(i+1,p);p=p+1;else%如果當(dāng)前要復(fù)制的結(jié)構(gòu)體的像素個數(shù)小于或等于sum就插入和的結(jié)構(gòu)體%灰度值為—1標(biāo)志這個結(jié)構(gòu)體的number是兩種灰度像素的和huffman(i,j).huidu=—1;huffman(i,j)。number=sum;sum=0;huffman(i,j+1:i)=huffman(i+1,j:i-1);break;endendend%開始給每個灰度值編碼fori=1:num—1obj=0;forj=1:iifhuffman(i,j)。huidu==-1obj=j;break;elsehuffman(i+1,j).bianma=huffman(i,j).bianma;endendifhuffman(i+1,i+1)。number〉huffman(i+1,i).number%說明:大概率的編0,小概率的編1,概率相等的,標(biāo)號大的為1,標(biāo)號小的為0huffman(i+1,i+1)。bianma=[huffman(i,obj).bianma'0’];huffman(i+1,i)。bianma=[huffman(i,obj)。bianma’1'];elsehuffman(i+1,i+1)。bianma=[huffman(i,obj)。bianma’1'];huffman(i+1,i)。bianma=[huffman(i,obj).bianma’0’];endforj=obj+1:ihuffman(i+1,j—1)。bianma=huffman(i,j).bianma;endendfork=1:count(t)huf_bac(t,k)={huffman(num,k)};%保存endend%寫出灰度編碼表fort=1:lforb=1:count(t)fprintf(fid,’%d’,huf_bac{t,b}。huidu);fwrite(fid,’’);fprintf(fid,'%s’,huf_bac{t,b}。bianma);fwrite(fid,’’);endfwrite(fid,’%');end%解碼%按原圖像數(shù)據(jù),寫出相應(yīng)的編碼,也就是將原數(shù)據(jù)用哈夫曼編碼替代fort=1:lfori=1:mforj=1:nforb=1:count(t)ifI(i,j,t)==huf_bac{t,b}.huiduM(i,j,t)=huf_bac{t,b}。huidu;%將灰度級存入解碼的矩陣fprintf(fid1,’%s’,huf_bac{t,b}.bianma);fwrite(fid1,’’);%用空格將每個灰度編碼隔開break;endendendfwrite(fid1,',’);%用空格將每行隔開endfwrite(fid1,'%’);%用%將每層灰度級代碼隔開endfclose(fid);fclose(fid1);M=uint8(M);sav

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論