www.gusucode.com > 自己编写的一个基于matlab的图像压缩程序,有GUI界面,不能程度的压缩效果以及信噪比 > 自己编写的一个基于matlab的图像压缩程序,有GUI界面,不能程度的压缩效果以及信噪比/BP神经网络的图像压缩/wavelets压缩/seqdual.m

    function [Seq,ScaleS,ScaleD] = seqdual(Seq,ScaleS,ScaleD)
% Dual of a lifting sequence

L = size(Seq,1);

for k = 1:L
   % f'(z) = -f(z^-1)
   Seq{k,2} = -(Seq{k,2} - length(Seq{k,1}) + 1);
   Seq{k,1} = -fliplr(Seq{k,1});
end

if all(Seq{1,1} == 0)
   Seq = reshape({Seq{2:end,:}},L-1,2);
else
   [Seq{1:L+1,:}] = deal(0,Seq{1:L,1},0,Seq{1:L,2});
end

ScaleS = 1/ScaleS;
ScaleD = 1/ScaleD;
return;


function [h,g] = seq2hg(Seq,ScaleS,ScaleD,Dual)
% Find wavelet filters from lifting sequence
if Dual, [Seq,ScaleS,ScaleD] = seqdual(Seq,ScaleS,ScaleD); end
if rem(size(Seq,1),2), [Seq{size(Seq,1)+1,:}] = deal(0,0); end

h = {1,0};
g = {1,1};

for k = 1:2:size(Seq,1)
   h = lp_lift(h,g,{Seq{k,:}});
   g = lp_lift(g,h,{Seq{k+1,:}});
end

h = {ScaleS*h{1},h{2}};
g = {ScaleD*g{1},g{2}};

if Dual
   h{2} = -(h{2} - length(h{1}) + 1);
   h{1} = fliplr(h{1});

   g{2} = -(g{2} - length(g{1}) + 1);
   g{1} = fliplr(g{1});
end

return;