xconv2.m
上传用户:zlding2008
上传日期:2013-05-13
资源大小:1914k
文件大小:1k
源码类别:

2D图形编程

开发平台:

Matlab

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