gusucode.com > 压缩编码效率很高的静止图像压缩编码算法SPIHT,本程序使用matlab实现 > func_DWT.m
function [I_W , S] = func_DWT(I, level, Lo_D, Hi_D); % Matlab implementation of SPIHT (without Arithmatic coding stage) % % Wavelet decomposition % % input: I : input image % level : wavelet decomposition level % Lo_D : low-pass decomposition filter % Hi_D : high-pass decomposition filter % % output: I_W : decomposed image vector % S : corresponding bookkeeping matrix % % please refer wavedec2 function to see more % % Jing Tian % Contact me : scuteejtian@hotmail.com % This program is part of my undergraduate project in GuangZhou, P. R. China. % April - July 1999 [C,S] = func_Mywavedec2(I,level,Lo_D,Hi_D); S(:,3) = S(:,1).*S(:,2); % dim of detail coef nmatrices L = length(S); I_W = zeros(S(L,1),S(L,2)); % approx part I_W( 1:S(1,1) , 1:S(1,2) ) = reshape(C(1:S(1,3)),S(1,1:2)); for k = 2 : L-1 rows = [sum(S(1:k-1,1))+1:sum(S(1:k,1))]; columns = [sum(S(1:k-1,2))+1:sum(S(1:k,2))]; % horizontal part c_start = S(1,3) + 3*sum(S(2:k-1,3)) + 1; c_stop = S(1,3) + 3*sum(S(2:k-1,3)) + S(k,3); I_W( 1:S(k,1) , columns ) = reshape( C(c_start:c_stop) , S(k,1:2) ); % vertical part c_start = S(1,3) + 3*sum(S(2:k-1,3)) + S(k,3) + 1; c_stop = S(1,3) + 3*sum(S(2:k-1,3)) + 2*S(k,3); I_W( rows , 1:S(k,2) ) = reshape( C(c_start:c_stop) , S(k,1:2) ); % diagonal part c_start = S(1,3) + 3*sum(S(2:k-1,3)) + 2*S(k,3) + 1; c_stop = S(1,3) + 3*sum(S(2:k,3)); I_W( rows , columns ) = reshape( C(c_start:c_stop) , S(k,1:2) ); end