gusucode.com > 压缩编码效率很高的静止图像压缩编码算法SPIHT,本程序使用matlab实现 > func_SPIHT_Main.m

    function func_SPIHT_Main
% Matlab implementation of SPIHT (without Arithmatic coding stage)
%
% Main function 
%
% input:    Orig_I : the original image.
%           rate : bits per pixel
% output:   img_spiht 
%
% Jing Tian
% Contact me : scuteejtian@hotmail.com
% This program is part of my undergraduate project in GuangZhou, P. R. China.
% April - July 1999

%-----------   Input   ----------------
Orig_I = func_ReadRaw('lena512.raw', 512*512, 512, 512);
rate = 0.1;

%-----------   Pre-processing   ----------------

OrigSize = size(Orig_I, 1);
max_bits = floor(rate * OrigSize^2);

OutSize = OrigSize;
image_spiht = zeros(size(Orig_I));
% "image " is the input of codec
[nRow, nColumn] = size(Orig_I);


%-----------   Wavelet Decomposition   ----------------
n = size(Orig_I,1);
n_log = log2(n); 
level = n_log;
% wavelet decomposition level can be defined by users manually.

type = 'bior4.4';
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(type);

[I_W, S] = func_DWT(Orig_I, level, Lo_D, Hi_D);

%-----------   Coding   ----------------
img_enc = func_SPIHT_Enc(I_W, max_bits, nRow*nColumn, level);   

%-----------   Decoding   ----------------
img_dec = func_SPIHT_Dec(img_enc);

%-----------   Wavelet Reconstruction   ----------------
img_spiht = func_InvDWT(img_dec, S, Lo_R, Hi_R, level);

%-----------   PSNR analysis   ----------------
Q = 255;
MSE = sum2((img_spiht - Orig_I) .^ 2) / nRow / nColumn;
psnr = 10*log10(Q*Q/MSE)