📄 tiqurgbs.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 + -