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

📄 new.m

📁 EZW加入简单的熵编码
💻 M
字号:
%load woman;
%X=imread('lena.png');
%X=[63 -34 49 10 7 13 -12 7; -31 23 14 -13 3 4 6 -1; 15 14 3 -12 5 -7 3 9;  -9 -7 -14 8 4 -2 3 2;
%   -5 9 -1 47 4 6 -2 2; 3 0 -3 2 3 -2 0 4;  2 -3 6 -4 3 6 3 6;   5 11 5 6 0 3 -4 4];
%En_Level=4;
%[m,n]=size(X);
%Save_Dotnum=m/(2.^En_Level);%决定保存的系数的值LL的大小


%infilename = 'lena256.bmp';
%outfilename = 'lena256_reconstruct.bmp';
load woman
%img_orig = double(imread(infilename));
img_orig=double(X);
[m,n]=size(img_orig);
En_Level=4;
level=4;
n_log = log2(m); 
level = n_log;  % wavelet decomposition level can be defined by users.
img_wavedata = wavelet('2D CDF9/7',level,img_orig,'sym');
X1=img_wavedata;
X1(1:m/2.^En_Level,(m/2.^En_Level+1):m/2.^(En_Level-1))=0.738*X1(1:m/2.^En_Level,(m/2.^En_Level+1):m/2.^(En_Level-1));
X1((m/2.^En_Level+1):m/2.^(En_Level-1),1:m/2.^En_Level)=0.738*X1((m/2.^En_Level+1):m/2.^(En_Level-1),1:m/2.^En_Level);
X1((m/2.^En_Level+1):m/2.^(En_Level-1),(m/2.^En_Level+1):m/2.^(En_Level-1))=0.596*X1((m/2.^En_Level+1):m/2.^(En_Level-1),(m/2.^En_Level+1):m/2.^(En_Level-1));

X1(1:m/2.^(En_Level-1),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2))=0.548*X1(1:m/2.^(En_Level-1),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2));
X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),1:m/2.^(En_Level-1))=0.548*X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),1:m/2.^(En_Level-1));
X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2))=0.411*X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2));

X1(1:m/2.^(En_Level-2),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3))=0.355*X1(1:m/2.^(En_Level-2),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3));
X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),1:m/2.^(En_Level-2))=0.355*X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),1:m/2.^(En_Level-2));
X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3))=0.230*X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3));

X1(1:m/2.^(En_Level-3),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4))=0.189*X1(1:m/2.^(En_Level-3),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4));
X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),1:m/2.^(En_Level-3))=0.189*X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),1:m/2.^(En_Level-3));
X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4))=0.119*X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4));


ezw_encoding_threshold = 512;
[img_enc_significance_map, img_enc_refinement] = func_ezw_enc(X1, ezw_encoding_threshold);
img_ezw_stream_bit = func_huffman_encode(img_enc_significance_map, img_enc_refinement);

treshold = pow2(floor(log2(max(max(abs(img_wavedata))))));
[img_dec_significance_map, img_dec_refinement] = func_huffman_decode(img_ezw_stream_bit);
img_wavedata_dec = func_ezw_dec(n, treshold, img_dec_significance_map, img_dec_refinement);
%img_wavedata_dec = func_ezw_dec(n, treshold, img_enc_significance_map, img_enc_refinement);

X1=img_wavedata_dec;
X1(1:m/2.^En_Level,(m/2.^En_Level+1):m/2.^(En_Level-1))=X1(1:m/2.^En_Level,(m/2.^En_Level+1):m/2.^(En_Level-1))/0.738;
X1((m/2.^En_Level+1):m/2.^(En_Level-1),1:m/2.^En_Level)=X1((m/2.^En_Level+1):m/2.^(En_Level-1),1:m/2.^En_Level)/0.738;
X1((m/2.^En_Level+1):m/2.^(En_Level-1),(m/2.^En_Level+1):m/2.^(En_Level-1))=X1((m/2.^En_Level+1):m/2.^(En_Level-1),(m/2.^En_Level+1):m/2.^(En_Level-1))/0.596;

X1(1:m/2.^(En_Level-1),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2))=X1(1:m/2.^(En_Level-1),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2))/0.548;
X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),1:m/2.^(En_Level-1))=X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),1:m/2.^(En_Level-1))/0.548;
X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2))=X1((m/2.^(En_Level-1)+1):m/2.^(En_Level-2),(m/2.^(En_Level-1)+1):m/2.^(En_Level-2))/0.411;

X1(1:m/2.^(En_Level-2),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3))=X1(1:m/2.^(En_Level-2),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3))/0.355;
X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),1:m/2.^(En_Level-2))=X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),1:m/2.^(En_Level-2))/0.355;
X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3))=X1((m/2.^(En_Level-2)+1):m/2.^(En_Level-3),(m/2.^(En_Level-2)+1):m/2.^(En_Level-3))/0.230;

X1(1:m/2.^(En_Level-3),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4))=X1(1:m/2.^(En_Level-3),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4))/0.189;
X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),1:m/2.^(En_Level-3))=X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),1:m/2.^(En_Level-3))/0.189;
X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4))=X1((m/2.^(En_Level-3)+1):m/2.^(En_Level-4),(m/2.^(En_Level-3)+1):m/2.^(En_Level-4))/0.119;

img_reconstruct = wavelet('2D CDF9/7',-level,X1,'sym');

fprintf('The bitrate is %.2f bpp (with threshold %d in the encoding)\n', length(img_ezw_stream_bit)/size(img_orig,1)/size(img_orig,2), ezw_encoding_threshold);

Q = 255;
img_reconstruct;
MSE = sum(sum((img_reconstruct-img_orig).^2))/size(img_orig,1)/size(img_orig,2);
MSE;
fprintf('The psnr performance is %.2f dB\n', 10*log10(Q*Q/MSE));

⌨️ 快捷键说明

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