


Fast routine for box filtering.
Same effect as calling 'C=convn( I, ones(dims), shape)', except more
efficient. Computes local sums by using running sums. To get sum in
non-overlapping windows, use shape='block'. Equivalent to doing localSum,
and then subsampling (except more efficient). If operation op is set to
'max' or 'min', computes local maxes or mins instead of sums. Note, that
when applicable convSum and convMax are significantly faster.
USAGE
I = localSum( I, dims, [shape], [op] )
INPUTS
I - matrix to compute sum over
dims - size of volume to compute sum over, can be scalar
shape - ['full'] 'valid', 'full', 'same', or 'block'
op - ['sum'] 'max', or 'min'
OUTPUTS
C - matrix of sums
EXAMPLE - 1
A=rand(500,500,1); dim=25; f=ones(dim,1); shape='same'; r=20;
tic, for i=1:r, B = localSum(A,dim,shape); end; toc
tic, for i=1:r, C = conv2(conv2(A,f,shape),f',shape); end; toc
diff=B-C; im(diff), sum(abs(diff(:)))
EXAMPLE - 2
load trees; I=ind2gray(X,map); figure(1); im(I);
I1=localSum(I,3,'block','sum'); figure(2); im(I1); title('sum')
I2=localSum(I,3,'block','max'); figure(3); im(I2); title('max')
I3=localSum(I,3,'block','min'); figure(4); im(I3); title('min')
See also convSum, convMax, imShrink
Piotr's Image&Video Toolbox Version 3.00
Copyright 2012 Piotr Dollar. [pdollar-at-caltech.edu]
Please email me if you find bugs, or have suggestions or questions!
Licensed under the Simplified BSD License [see external/bsd.txt]