1% RES = upBlur(IM, LEVELS, FILT)
2%
3% Upsample and blur an image.  The blurring is done with filter
4% kernel specified by FILT (default = 'binom5'), which can be a string
5% (to be passed to namedFilter), a vector (applied separably as a 1D
6% convolution kernel in X and Y), or a matrix (applied as a 2D
7% convolution kernel).  The downsampling is always by 2 in each
8% direction.
9%
10% The procedure is applied recursively LEVELS times (default=1).
11
12% Eero Simoncelli, 4/97.
13
14function res = upBlur(im, nlevs, filt)
15
16%------------------------------------------------------------
17%% OPTIONAL ARGS:
18
19if (exist('nlevs') ~= 1)
20  nlevs = 1;
21end
22
23if (exist('filt') ~= 1)
24  filt = 'binom5';
25end
26
27%------------------------------------------------------------
28
29if isstr(filt)
30  filt = namedFilter(filt);
31end
32
33if nlevs > 1
34  im = upBlur(im,nlevs-1,filt);
35end
36
37if (nlevs >= 1)
38  if (any(size(im)==1))
39    if (size(im,1)==1)
40      filt = filt';
41    end
42    res = upConv(im,filt,'reflect1',(size(im)~=1)+1);
43  elseif (any(size(filt)==1))
44    filt = filt(:);
45    res = upConv(im,filt,'reflect1',[2 1]);
46    res = upConv(res,filt','reflect1',[1 2]);
47  else
48    res = upConv(im,filt,'reflect1',[2 2]);
49  end
50else
51  res = im;
52end
53