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);