function imr=invgab(l,lpr,border,hpr) % INVGAB Inverse Gabor transform (image reconstruction) % % imr=invgab(l,lpr,border,<hpr>) % % ONG - 11/96 % lpf=[1 4 6 4 1]/16; % gains if exist('hpr') gains=[ 1.52 1.27 1.52 1.27; 1.77 1.48 1.77 1.48; 1.56 1.45 1.56 1.45; 1.06 1.10 1.06 1.10]; else gains=[ 1.53 1.24 1.53 1.24; 1.88 1.64 1.88 1.64; 1.68 1.43 1.68 1.43; 1.30 1.25 1.30 1.25]; end % initial value for the reconstructed image imr=lpr; L=size(l,2); % loop for all levels for lev=1:L [Ny, Nx]=size(imr); % sum all orientations for or=1:4 imr=imr+l{lev}(:,:,or)*gains(lev,or); end % interpolate if not in level L if lev ~= L imi=zeros(2*Ny,2*Nx); imi(1:2:2*Ny,1:2:2*Nx)=imr; imr=4*conv2b(conv2b(imi,lpf,border),lpf',border); sizenextlev=size(l{lev+1}); imr=imr(1:sizenextlev(1),1:sizenextlev(2)); end end if exist('hpr') imr=imr+hpr; end