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

getFilters

PURPOSE ^

getFilters returns the filters used by gaussFFT.

SYNOPSIS ^

function [filter_x, filter_y] = getFilters(sigma, kernel)

DESCRIPTION ^

  getFilters  returns the filters 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_x  = kernel in image space of size (2*4*sigma)
     filter_y  = kernel in image space of size (2*4*sigma)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [filter_x, filter_y] = getFilters(sigma, kernel)
0002 %  getFilters  returns the filters 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_x  = kernel in image space of size (2*4*sigma)
0015 %     filter_y  = kernel in image space of size (2*4*sigma)
0016 
0017 % Example:
0018 %     bar(getFilters(3, 'Gx'));
0019 
0020 % See also fspecial, diff, gaussFFT
0021 % Copyright 2009-2011 Falko Schindler (mail@falkoschindler.de)
0022 
0023 %% construct kernels
0024 kSize = floor(4 * sigma);
0025 G_y = fspecial('gaussian', [2 * kSize + 1, 1], sigma);
0026 G_x = fspecial('gaussian', [1, 2 * kSize + 1], sigma);
0027 y = (-kSize : kSize)';
0028 x =  -kSize : kSize;
0029 dy = [-0.5, 0, 0.5]';
0030 dx = [-0.5, 0, 0.5];
0031 dyy = [0.25, -0.5, 0.25]';
0032 dxx = [0.25, -0.5, 0.25];
0033 switch kernel
0034     case 'G',   filter_x = G_x;
0035                 filter_y = G_y;
0036     case 'Gy',  filter_x = G_x;
0037                 filter_y = imfilter(G_y, dy, 'same', 'corr');
0038     case 'Gx',  filter_x = imfilter(G_x, dx, 'same', 'corr');
0039                 filter_y = G_y;
0040     case 'Gyy', filter_x = G_x;
0041                 filter_y = imfilter(G_y, dyy, 'same', 'corr');
0042     case 'Gxx', filter_x = imfilter(G_x, dxx, 'same', 'corr');
0043                 filter_y = G_y;
0044     case 'Gxy', filter_x = imfilter(G_x, dx, 'same', 'corr');
0045                 filter_y = imfilter(G_y, dy, 'same', 'corr');
0046     case 'yG',  filter_x = G_x;
0047                 filter_y = y .* G_y;
0048     case 'xG',  filter_x = x .* G_x;
0049                 filter_y = G_y;
0050     case 'y2G', filter_x = G_x;
0051                 filter_y = y.^2 .* G_y;
0052     case 'x2G', filter_x = x.^2 .* G_x;
0053                 filter_y = G_y;
0054     case 'xyG', filter_x = x .* G_x;
0055                 filter_y = y .* G_y;
0056     otherwise,  error 'gaussFFT: unknown kernel name';
0057 end

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