⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tiqurgbs.m

📁 基于wavelet和bandelet的spiht图像压缩!
💻 M
字号:
clc
clear all
%-----------   Input   ----------------
[M,map]=imread('beauty.jpg');
M=M(1:256,1:256,:);
%把rgb数据三色分离 

r=double(M(:,:,1));%r是256x256的红色信息矩阵

g=double(M(:,:,2));%g是256x256的绿色信息矩阵

b=double(M(:,:,3));%b是256x256的兰色信息矩阵


rate = 0.1;type = 'bior4.4';
figure
subplot(121);
imshow(M);
%-----------   Pre-processing   ----------------
%---------------------------------------------R------------------------
OrigSize1 = size(r, 1);
max_bits1 = floor(rate * OrigSize1^2);
image_spiht1 = zeros(size(r));
[nRow1, nColumn1] = size(r);
%-----------   Wavelet Decomposition   ----------------

n_log1 = log2(OrigSize1); 
level1 = n_log1;
% wavelet decomposition level can be defined by users manually.

[Lo_D1,Hi_D1,Lo_R1,Hi_R1] = wfilters(type);

[I_W1, S1] = func_DWT(r, level1, Lo_D1, Hi_D1);
        

%-----------   Coding   ----------------
img_enc1 = func_SPIHT_Enc(I_W1, max_bits1, nRow1*nColumn1, level1);   

%-----------   Decoding   ----------------
img_dec1 = func_SPIHT_Dec(img_enc1);

%-----------   Wavelet Reconstruction   ----------------
img_spiht1 = func_InvDWT(img_dec1, S1, Lo_R1, Hi_R1, level1);
r1=img_spiht1;      
%----------------------------------------------G--------------------
OrigSize2 = size(g, 1);
max_bits2 = floor(rate * OrigSize2^2);
image_spiht2 = zeros(size(g));
[nRow2, nColumn2] = size(g);
%-----------   Wavelet Decomposition   ----------------

n_log2 = log2(OrigSize2); 
level2 = n_log2;
% wavelet decomposition level can be defined by users manually.
[Lo_D2,Hi_D2,Lo_R2,Hi_R2] = wfilters(type);

[I_W2, S2] = func_DWT(g, level2, Lo_D2, Hi_D2);
        
%-----------   Coding   ----------------
img_enc2 = func_SPIHT_Enc(I_W2, max_bits2, nRow2*nColumn2, level2);   

%-----------   Decoding   ----------------
img_dec2 = func_SPIHT_Dec(img_enc2);

%-----------   Wavelet Reconstruction   ----------------
img_spiht2 = func_InvDWT(img_dec2, S2, Lo_R2, Hi_R2, level2);
g1=img_spiht2;      

%-------------------------------------------------B------------------------
OrigSize3 = size(b, 1);
max_bits3 = floor(rate * OrigSize3^2);

image_spiht3 = zeros(size(b));
[nRow3, nColumn3] = size(b);
%-----------   Wavelet Decomposition   ----------------

n_log3 = log2(OrigSize3); 
level3 = n_log3;
% wavelet decomposition level can be defined by users manually.

[Lo_D3,Hi_D3,Lo_R3,Hi_R3] = wfilters(type);

[I_W3, S3] = func_DWT(b, level3, Lo_D3, Hi_D3);
        
%-----------   Coding   ----------------
img_enc3 = func_SPIHT_Enc(I_W3, max_bits3, nRow1*nColumn3, level3);   

%-----------   Decoding   ----------------
img_dec3 = func_SPIHT_Dec(img_enc3);

%-----------   Wavelet Reconstruction   ----------------
img_spiht3 = func_InvDWT(img_dec3, S3, Lo_R3, Hi_R3, level3);
b1=img_spiht3;      
%--------------------------------------------------------------------------
%--------------output image--------------
N(:,:,1)=uint8(round(r1));

N(:,:,2)=uint8(round(g1));

N(:,:,3)=uint8(round(b1));
subplot(122);
imshow(N);

%-----------   PSNR analysis   ----------------
% p1=psnr(r,r1);p2=psnr(g,g1);p3=psnr(b,b1);p=[p1 p2 p3];
% p=mean(p);
p = SNR(M,N);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -