Home > Matching_SYM_LSM > src > Functions > LSM_Functions > getFilter.m

getFilter

PURPOSE ^

getFilter returns the filter used by gaussFFT.

SYNOPSIS ^

function filter = getFilter(sigma, kernel)

DESCRIPTION ^

  getFilter  returns the filter used by gaussFFT.

  Input:
     sigma     = kernel parameter 1x1
     kernel    = kernel identifier, possible names are:
                     'G',
                     'Gx', 'Gy',
                     'Gxx', 'Gyy', 'Gxy',
                     'xG', 'yG',
                     'x2G', 'y2G', 'xyG'

  Output:
     filter    = kernel in image space of size (2*3*sigma)^2

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function filter = getFilter(sigma, kernel)
0002 %  getFilter  returns the filter used by gaussFFT.
0003 %
0004 %  Input:
0005 %     sigma     = kernel parameter 1x1
0006 %     kernel    = kernel identifier, possible names are:
0007 %                     'G',
0008 %                     'Gx', 'Gy',
0009 %                     'Gxx', 'Gyy', 'Gxy',
0010 %                     'xG', 'yG',
0011 %                     'x2G', 'y2G', 'xyG'
0012 %
0013 %  Output:
0014 %     filter    = kernel in image space of size (2*3*sigma)^2
0015 
0016 % Example:
0017 %     surf(getFilter(3, 'Gx'));
0018 
0019 % See also fspecial, diff, gaussFFT
0020 % Copyright 2009-2011 Falko Schindler (mail@falkoschindler.de)
0021 
0022 %% construct kernels
0023 kSize = floor(4 * sigma);
0024 G = conv2(fspecial('gaussian', [2 * kSize + 1, 1], sigma), ...
0025           fspecial('gaussian', [1, 2 * kSize + 1], sigma));
0026 [y, x] = ndgrid(-kSize : kSize);
0027 dy = [-0.5, 0, 0.5]';
0028 dx = [-0.5, 0, 0.5];
0029 dyy = [0.25, -0.5, 0.25]';
0030 dxx = [0.25, -0.5, 0.25];
0031 dxy = conv2(dx, dy);
0032 switch kernel
0033     case 'G',   filter = G;
0034     case 'Gy',  filter = imfilter(G, dy, 'same', 'corr');
0035     case 'Gx',  filter = imfilter(G, dx, 'same', 'corr');
0036     case 'Gyy', filter = imfilter(G, dyy, 'same', 'corr');
0037     case 'Gxx', filter = imfilter(G, dxx, 'same', 'corr');
0038     case 'Gxy', filter = imfilter(G, dxy, 'same', 'corr');
0039     case 'yG',  filter = y .* G;
0040     case 'xG',  filter = x .* G;
0041     case 'y2G', filter = y.^2 .* G;
0042     case 'x2G', filter = x.^2 .* G;
0043     case 'xyG', filter = x .* y .* G;
0044     otherwise,  error 'gaussFFT: unknown kernel name';
0045 end

Generated on Sun 19-Jul-2020 23:00:25 by m2html © 2005