Page 151 -
P. 151
130 3 Image processing
ity to precisely specify derivatives at control points and efficient incremental algorithms for
their evaluation (Bartels, Beatty, and Barsky 1987; Farin 1992, 1996). Splines are widely used
in geometric modeling and computer-aided design (CAD) applications, although they have
started being displaced by subdivision surfaces (Zorin, Schr¨ oder, and Sweldens 1996; Peters
and Reif 2008). In computer vision, splines are often used for elastic image deformations
(Section 3.6.2), motion estimation (Section 8.3), and surface interpolation (Section 12.3). In
fact, it is possible to carry out most image processing operations by representing images as
splines and manipulating them in a multi-resolution framework (Unser 1999).
The highest quality interpolator is generally believed to be the windowed sinc function
because it both preserves details in the lower resolution image and avoids aliasing. (It is also
1
possible to construct a C piecewise-cubic approximation to the windowed sinc by matching
its derivatives at zero crossing (Szeliski and Ito 1986).) However, some people object to the
excessive ringing that can be introduced by the windowed sinc and to the repetitive nature
of the ringing frequencies (see Figure 3.28d). For this reason, some photographers prefer
to repeatedly interpolate images by a small fractional amount (this tends to de-correlate the
original pixel grid with the final image). Additional possibilities include using the bilat-
eral filter as an interpolator (Kopf, Cohen, Lischinski et al. 2007), using global optimization
(Section 3.6) or hallucinating details (Section 10.3).
3.5.2 Decimation
While interpolation can be used to increase the resolution of an image, decimation (downsam-
pling) is required to reduce the resolution. 15 To perform decimation, we first (conceptually)
convolve the image with a low-pass filter (to avoid aliasing) and then keep every rth sample.
In practice, we usually only evaluate the convolution at every rth sample,
g(i, j)= f(k, l)h(ri − k, rj − l), (3.80)
k,l
as shown in Figure 3.30. Note that the smoothing kernel h(k, l), in this case, is often a
stretched and re-scaled version of an interpolation kernel. Alternatively, we can write
1
g(i, j)= f(k, l)h(i − k/r, j − l/r) (3.81)
r
k,l
and keep the same kernel h(k, l) for both interpolation and decimation.
One commonly used (r =2) decimation filter is the binomial filter introduced by Burt
and Adelson (1983a). As shown in Table 3.3, this kernel does a decent job of separating
the high and low frequencies, but still leaves a fair amount of high-frequency detail, which
can lead to aliasing after downsampling. However, for applications such as image blending
(discussed later in this section), this aliasing is of little concern.
If, however, the downsampled images will be displayed directly to the user or, perhaps,
blended with other resolutions (as in MIP-mapping, Section 3.5.3), a higher-quality filter is
15
The term “decimation” has a gruesome etymology relating to the practice of killing every tenth soldier in
a Roman unit guilty of cowardice. It is generally used in signal processing to mean any downsampling or rate
reduction operation.