?? l7_2.m
字號:
%程序L7_2.m: 應(yīng)用小波變換與向量量化做圖像壓縮%
%利用LGB訓(xùn)練一層小波變換后四個頻帶的碼本%
load lena
[LL1,LH1,HL1,HH1]=dwtper2(X,'bior3.3');
%訓(xùn)練LL1頻帶碼本,將碼本大小設(shè)為128,維度為4 %
th=0.05;
nc=128;nd=4;
[cbLL1]=LBG(LL1,nc,nd,th); %LBG.m在L3.3節(jié)中
%訓(xùn)練LH1頻帶碼本,將碼本大小設(shè)為64,維度為4 %
nc=64;nd=4;
[cbLH1]=LBG(LH1,nc,nd,th);
%訓(xùn)練HL1頻帶碼本,將碼本大小設(shè)為64,維度為4 %
nc=64;nd=4;
[cbHL1]=LBG(HL1,nc,nd,th);
%訓(xùn)練HH1頻帶碼本,將碼本大小設(shè)為64,維度為16 %
nc=64;nd=16;
[cbHH1]=LBG(HH1,nc,nd,th);
%利用一層小波變換加上向量量化進(jìn)行Lena圖像壓縮%
%輸入一幅Lena圖像%
load lena
[M,N]=size(X);
%使用Matlab中Wavelet工具箱的周期性小波變換函數(shù)dwtper2.m%
%并使用雙正交小波bior3.3進(jìn)行一層小波變換%
[LL1,LH1,HL1,HH1]=dwtper2(X,'bior3.3');
wt_X(1:M/2,1:N/2)=LL1;
wt_X(1:M/2,N/2+1:N)=LH1;
wt_X(M/2+1:M,1:N/2)=HL1;
wt_X(M/2+1:M,N/2+1:N)=HH1;
%分別針對不同的頻帶進(jìn)行向量量化,其中VQ.m置于L3.4節(jié)中%
[R_LL1,bitLL1]=VQ(LL1,cbLL1);
[R_LH1,bitLH1]=VQ(LH1,cbLH1);
[R_HL1,bitHL1]=VQ(HL1,cbHL1);
[R_HH1,bitHH1]=VQ(HH1,cbHH1);
wt_Y(1:M/2,1:N/2)=R_LL1;
wt_Y(1:M/2,N/2+1:N)=R_LH1;
wt_Y(M/2+1:M,1:N/2)=R_HL1;
wt_Y(M/2+1:M,N/2+1:N)=R_HH1;
%計算圖像經(jīng)過向量量化后的壓縮率CR及失真PSNR%
totalbit=bitLL1+bitLH1+bitHL1+bitHH1; %花費(fèi)的總位數(shù)
Y=idwtper2(R_LL1,R_LH1,R_HL1,R_HH1,'bior3.3'); %反小波變換
MSE=(sum(sum((X-Y).^2)))/(M*N);
PSNR=20*log10(255/sqrt(MSE))
CR=M*N*8/totalbit
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -