www.pudn.com > balloonSnake(matlab).rar > xconv2.m


function Y = xconv2(I,G) 
% function Y = xconv2(I,G) 
%   I: the original image 
%   G: the mask to be convoluted 
%   Y: the convoluted result (by taking fft2, multiply and ifft2) 
%  
%   a similar version of the MATLAB conv2(I,G,'same'),  7/10/95 
%   implemented by fft instead of doing direct convolution as in conv2 
%   the result is almost same , differences are under 1e-10. 
%   However, the speed of xconv2 is much faster than conv2 when 
%   gaussian kernel has large standard variation. 
 
%   Chenyang Xu and Jerry L. Prince, 7/10/95, 6/17/97 
%   Copyright (c) 1995-97 by Chenyang Xu and Jerry L. Prince 
%   Image Analysis and Communications Lab, Johns Hopkins University 
% 
 
[n,m] = size(I); 
[n1,m1] = size(G); 
FI = fft2(I,n+n1-1,m+m1-1);  % avoid aliasing 
FG = fft2(G,n+n1-1,m+m1-1); 
FY = FI.*FG; 
YT = real(ifft2(FY)); 
nl = floor(n1/2); 
ml = floor(m1/2); 
Y = YT(1+nl:n+nl,1+ml:m+ml);