www.pudn.com > inverseFilter.rar > inverseFilter.m


function p = inverseFilter(s,r,gamma,d); 
% 
% p = inverseFilter(y,h,gamma,d); 
% 
% Generalized inverse filtering using threshold gamma: 
% 
%  inv_g(R) = gamma*abs(fft(r))/fft(r), if abs(fft(r)) <= 1/gamma 
%  inv_g(R) = inv(R),			otherwise 
% 
% Reference: J.S.Lim,"Two dimensional signal and image processing",  
%            Prentice Hall, 1990- pg.552 Eq.(9.50) 
% 
%d is a vector of the form d(m)= exp(-i*w*m) that takes care of the delay 
%that the linear phase inverse filter causes in th etime domain 
 
N= length(s); 
S = fft(s); 
R = fft(r); 
 
% handle singular case (zero case) 
R1 = R.*(abs(R)>0)+1/gamma.*(abs(R)==0); 
iR = 1./R1; 
%   
% invert Hf using threshold gamma 
G = iR.*(abs(R)*gamma>1)+gamma*abs(R1).*iR.*(abs(R1)*gamma<=1); 
 
p = real(ifft(S.*G.*d));