97小波提升程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

97小波提升程序

function output_signal = bldwt9_7(app_sig,det_sig)

%

% output_signal= bldwt9_7(app_sig,det_sig)

%

% The back lifting discrete wavelet transform (BLDWT) using the 9-7 Antonini filters

% Contact me : swf000117@,,QQ:461414909

[x,y] = size(app_sig);

if x~=1

app_sig = app_sig';

det_sig = det_sig';

end

tt=length(app_sig);

alp = -1.586134342;

bet = -0.05298011854;

gam = 0.8829110762;

delt = 0.4435068522;

psi = 1.149604398;

%d0=det_sig.*psi;

%s0=app_sig./psi;

d0=det_sig;

s0=app_sig;

d0 = [d0(1) d0];

s0 = s0(1:tt);

s0 = s0 - floor(delt*(d0(2:length(d0)) + d0(1:length(d0)-1))+0.5);

d0 = d0(2:tt+1);

s0 = [s0 s0(tt-1)];

d0 = d0 - floor(gam*(s0(1:length(s0)-1) + s0(2:length(s0)))+0.5);

s0 = s0(1:tt);

d0 = [d0(1) d0];

s0 = s0 - floor(bet*(d0(2:length(d0)) + d0(1:length(d0)-1))+0.5);

s0 = [s0 s0(tt-1)];

d0 = d0(2:tt+1);

d0 = d0 -floor( alp*(s0(1:length(s0)-1) + s0(2:length(s0)))+0.5);

s0=s0(1:tt);

output_signal(1:2:2*tt)=s0;

output_signal(2:2:2*tt)=d0;

if x~=1

output_signal=output_signal';

end

function img=d2bldwt9_7(dwt_img,level)

%

% img=d2bldwt9_7(dwt_img,level)

%

% The forward lifting discrete 2-D wavelet transform (D2BLDWT) using the 9-7 Antonini filters

% Contact me : swf000117@,,QQ:461414909

[x,y]=size(dwt_img);

xx=x/(2^level);

yy=y/(2^level);

img=dwt_img;

for i=1:level

for k=1:2*yy

app_sig=img(1:xx,k);

det_sig=img(xx+1:2*xx,k);

img(1:2*xx,k)= bldwt9_7(app_sig,det_sig);

end

for l=1:2*xx

app_sig=img(l,1:xx);

det_sig=img(l,xx+1:2*xx);

img(l,1:2*xx)= bldwt9_7(app_sig,det_sig);

end

xx=2*xx;

yy=2*yy;

end

function [cn,dn]=lifting_db97(x)

%=====该程序对向量进行小波变换,所用的小波为利用提升方案实现的Daubechies 9/7小波=====

% 这是一维小波分解

% cn和dn分别是分解得到的低频向量(概貌系数)和高频向量(细节系数)

% x为待分解的向量

L=floor(length(x)/2);

s0=zeros(1,L); d0=zeros(1,L);

alpha = -1.586134342; beta = -0.05298011854; gamma = 0.8829110762; delta = 0.4435068522;

K = 1.149604398; %设定参数值

for i=1:L %进行奇偶二抽取

s0(i)=x(2*i-1);

d0(i)=x(2*i);

end

s1=s0(2:L);

s1=[s1,s0(L)];

d0=d0+alpha*(s0+s1);

d1=d0(1:L-1);

d1=[d0(1),d1];

s0=s0+beta*(d0+d1);

s1=s0(2:L);

s1=[s1,s0(L)];

d0=d0+gamma*(s0+s1);

d1=d0(1:L-1);

d1=[d0(1),d1];

s0=s0+delta*(d0+d1);

cn=K*s0; dn=d0/K; %求出 cn 和 dn

if L length(x)/2 %保持原向量的长度不变

dn = [dn,dn(L)];

end

相关文档
最新文档