Sie sind auf Seite 1von 2

function im = DPLGrec(w,wtype,J)

[Nx,Ny] = size(w);
Jmax = scale([Nx,Ny]);
if(nargin<2)
wtype = 'sym8';
end
if(nargin<3)
J = Jmax;
end
J(1) = min(Jmax(1),J(1));
J(2) = min(Jmax(2),J(2));

if(J(1)>0)
[aux,FsX] = TTSPfilters(Nx,wtype);
else
FsX = ones(2,Nx);
end
if(J(2)>0)
[aux,FsY] =TTSPfilters(Ny,wtype);
else
FsY = ones(2,Ny);
end
Gx = FsX(1,:);
Hx = FsX(2,:);
Gy = FsY(1,:);
Hy = FsY(2,:);

Nx = Nx/2^J(1);
Ny = Ny/2^J(2);
L = sort(J);
for j=L(2):-1:(L(1)+1)
if(L(2)==J(1))
Hx1 = Hx(1:2^(j-1):end);
Gx1 = Gx(1:2^(j-1):end);
im = w(1:2*Nx,1:Ny);
for i=1:Ny
Y = fft(im(1:Nx,i)).';
Z = fft(im((Nx+1):2*Nx,i)).';
Y0 = Gx1(1:Nx).*Y+Hx1(1:Nx).*Z;
Y1 = Gx1(Nx+(1:Nx)).*Y+Hx1(Nx+(1:Nx)).*Z;
Y = [Y0 Y1];
im(:,i) = ifft(Y).';
end;
Nx = 2*Nx;
w(1:Nx,1:Ny) = im;
else
Hy1 = Hy(1:2^(j-1):end);
Gy1 = Gy(1:2^(j-1):end);
im = w(1:Nx,1:2*Ny);
for i=1:Nx
Y = fft(im(i,1:Ny));
Z = fft(im(i,(Ny+1):2*Ny));
Y0 = Gy1(1:Ny).*Y+Hy1(1:Ny).*Z;
Y1 = Gy1(Ny+(1:Ny)).*Y+Hy1(Ny+(1:Ny)).*Z;
Y = [Y0 Y1];
im(i,:) = ifft(Y);
end;
Ny = 2*Ny;
w(1:Nx,1:Ny) = im;
end
end

for j=L(1):-1:1
Hx1 = Hx(1:2^(j-1):end);
Gx1 = Gx(1:2^(j-1):end);
im = w(1:2*Nx,1:2*Ny);
for i=1:2*Ny
Y = fft(im(1:Nx,i)).';
Z = fft(im((Nx+1):2*Nx,i)).';
Y0 = Gx1(1:Nx).*Y+Hx1(1:Nx).*Z;
Y1 = Gx1(Nx+(1:Nx)).*Y+Hx1(Nx+(1:Nx)).*Z;
Y = [Y0 Y1];
im(:,i) = ifft(Y).';
end
Hy1 = Hy(1:2^(j-1):end);
Gy1 = Gy(1:2^(j-1):end);
for i=1:2*Nx
Y = fft(im(i,1:Ny));
Z = fft(im(i,Ny+(1:Ny)));
Y0 = Gy1(1:Ny).*Y+Hy1(1:Ny).*Z;
Y1 = Gy1(Ny+(1:Ny)).*Y+Hy1(Ny+(1:Ny)).*Z;
Y = [Y0 Y1];
im(i,:) = ifft(Y);
end
Nx = 2*Nx;
Ny = 2*Ny;
w(1:Nx,1:Ny) = im;
end
im = real(w);

Das könnte Ihnen auch gefallen