Fast routine for box, max and min 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 convBox 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 convBox, convMax, imShrink Piotr's Computer Vision Matlab Toolbox Version 3.22 Copyright 2014 Piotr Dollar. [pdollar-at-gmail.com] Licensed under the Simplified BSD License [see external/bsd.txt]