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