mask_gaussians

PURPOSE ^

Divides a volume into softly overlapping gaussian windows.

SYNOPSIS ^

function [masks,keeplocs] = mask_gaussians( siz, M, windowwidth, offset, show )

DESCRIPTION ^

 Divides a volume into softly overlapping gaussian windows.

 Return M^nd masks each of size siz.  Each mask represents a symmetric gaussian window
 centered at a different location.  The locations are evenly spaced throughout the array
 of size siz.  For example, if M=2, then along each dimension d the location of each mask
 is either 1/4 or 3/4 of siz(d) and likewise if M=3 that mask is at 1/6,3/6, or 5/6 of
 siz(d). For higher M the locations are: 1/2M,3/2M,...,M-1/2M. 

 See examples below to visualize the masks.

 The std of each gaussian is set to be equal to the spacing between two adjacent masks
 multiplied by windowwidth.  Reducing the widths of the gaussians causes there to be less
 overlap between masks, but if the width is reduced too far certain pixels in between
 masks receive very little weight.  A desired property of the masks is that their
 coverage (the total weight placed on the pixel by all the masks) is approximately
 constant.  Typically, we settle for having the coverage be monotonically decreasing as
 we move away from the center.  (In reality the coverage oscilates as we move past peaks,
 it's just that the oscillations tend to be tiny).  The default value of windowidth is
 .6, which minimizes overlap while still providing good overall coverage. Values lower
 tend to produce noticeable oscillations in coverage.

 offset (in [-1,1]) controls the spacing of the locations.  Essentially, a positive
 offset moves the locations away from the center of the array and a negative offset moves
 the windows away from the center.  Using a positive offset gives better coverage to
 areas near the borders.

 INPUTS
   siz         - dimensions of each mask
   M           - # of mask locations along each dimension [either scalar or vector]
   windowwidth - [optional] see above - default: .6
   offset      - [optional] see above - default: .1
   show        - [optional] figure to use for display (no display if == 0) (nd<=3)

 OUTPUTS
   masks       - [see above] array of size [siz x M^nd]
   keeplocs    - logical array of all location where masks is (almost) nonzero

 EXAMPLE
   masks = mask_gaussians( 100, 10, .6, -.1, 1 );  %1D
   masks = mask_gaussians( [35 35], 3, .6, .1, 1 );  %2D
   masks = mask_gaussians( [35 35 35], [2 2 4], .6, .1, 1 ); %3D

 DATESTAMP
   29-Sep-2005  2:00pm

 See also HISTC_SIFT

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Wed 03-May-2006 23:48:50 by m2html © 2003