next up previous [pdf]

Next: Adjoints of products are Up: FAMILIAR OPERATORS Previous: Internal convolution

Zero padding is the transpose of truncation

Surrounding a dataset by zeros (zero padding) is adjoint to throwing away the extended data (truncation). Let us see why. Set a signal in a vector $\bold x$, and then to make a longer vector $\bold y$, append some zeros to $\bold x$. This zero padding can be regarded as the matrix multiplication
\begin{displaymath}
\bold y\eq
\left[
\begin{array}{c}
\bold I \\
\bold 0
\end{array} \right]
\
\bold x
\end{displaymath} (11)

The matrix is simply an identity matrix $\bold I$ above a zero matrix $\bold 0$. To find the transpose to zero-padding, we now transpose the matrix and do another matrix multiply:
\begin{displaymath}
\tilde {\bold x} \eq
\left[
\begin{array}{cc}
\bold I & \bold 0
\end{array} \right]
\
\bold y
\end{displaymath} (12)

So the transpose operation to zero padding data is simply truncating the data back to its original length. Module zpad1 pads zeros on both ends of its input. Modules for two- and three-dimensional padding are in the library named zpad2() and zpad3().
user/gee/zpad1.c
    for (d=0; d < nd; d++) { 
	p = d + (np-nd)/2;
	if (adj) data[d] += padd[p];
	else     padd[p] += data[d];
    }


next up previous [pdf]

Next: Adjoints of products are Up: FAMILIAR OPERATORS Previous: Internal convolution

2014-09-27