Image pyramid reduction and expansion

If `A`

is *m*-by-*n* and `direction`

is `'reduce'`

,
the size of `B`

is `ceil(M/2)`

-by-`ceil(N/2)`

.
If `direction`

is `'expand'`

, the
size of `B`

is `(2*M-1)`

-by-`(2*N-1)`

.

Reduction and expansion take place only in the first two dimensions.
For example, if `A`

is 100-by-100-by-3 and `direction`

is `'reduce'`

,
then `B`

is 50-by-50-by-3.

`impyramid`

uses the kernel specified on page
533 of the Burt and Adelson paper:

$$w=\left[\frac{1}{4}-\frac{a}{2},\frac{1}{4},a,\frac{1}{4},\frac{1}{4}-\frac{a}{2}\right]$$, where $$a\text{=0}\text{.375}$$. The parameter *a* is
set to `0.375`

so that the equivalent weighting function
is close to a Gaussian shape. In addition, the weights can be readily
applied using fixed-point arithmetic.

[1] Burt and Adelson, "The Laplacian Pyramid
as a Compact Image Code," *IEEE Transactions on Communications*,
Vol. COM-31, no. 4, April 1983, pp. 532-540.

[2] Burt, "Fast Filter Transforms for Image
Processing," *Computer Graphics and Image Processing*,
Vol. 16, 1981, pp. 20-51