function out = reduce(inp, magr, magc)
%  REDUCE
%
%    out = reduce(inp, magr, magc);
%      generates a smaller version of the input image by averaging.
%  The output is the average of magr rows and magc columns.
%

% Author: John S. Loomis (8 March 2000)

if (nargin<2)
   magr = 2;
end
if
(nargin<3)
   magc = magr;
end

si = size(inp);
inp = im2double(inp);
outi = zeros(floor(si(1)/magr),si(2));
so = size(outi);

% loop over rows
for (k=1:magr)
  outi = outi + inp(k:magr:so(1)*magr,:);
end

out = zeros(so(1),floor(si(2)/magc));
so = size(out);

% loop over columns
for (k=1:magc)
   out = out + outi(:,k:magc:so(2)*magc);
end

out = out/(magr*magc);


Maintained by John Loomis, last updated 8 March 2000