Upsampling signal using convolution-based interpolation filters I am currently reading this paper which discusses several image interpolation methods, such as nearest neighbor and linear interpolation, using convolution filters. I first want to do this in 1D with discrete-time signals (e.g. [0 0 1 0 0]), however, I have some trouble understanding on how to derive the convolution filters from the mathematical definitions:

$$h_{NN}(x)=\cases{
1, &amp;if$\quad-\frac{1}{2} \leqslant x &lt; \frac{1}{2},$\\
0, &amp;otherwise,
}$$
$$h_{Lin}(x)=\cases{
1-|x|, &amp;if$\quad 0 \leqslant |x| &lt; 1,$\\
0, &amp;if$\quad 1 \leqslant |x|.$
}$$

My main question is, how do I calculate the filter weights as well as the filter size? Furthermore, I am aware of the fact that I need to convolve the signal multiple times to upsample it, which the following equation in the paper also shows.

$$I(\mathbf{x}) = (\dots((I_s(\mathbf{p})*h(x_1))*h(x_2))*\dots)*h(x_N),$$

What are the several x in there? In case of images, they are the positions of the original image (before it is reconstructed from $I_s(p)$), but how do I apply this concept to one-dimensional discrete-time signals?

I would be thankful for any help!
Starting from the equation with the convolutions and assuming unit distance between sampling grid points, for a one-dimensional signal you'll have just:

$$I(\mathbf{x}) = I((x_1))= I_s((p_1))*h(x_1),$$

where $\mathbf{x}$ is the vector of continuous coordinates of which there is only one: $x_1 \in \mathbb{R}.$ Likewise there is just a single discrete coordinate $p_1 \in \mathbb{Z}.$ For simplicity, you could drop the vector notation and subscripts altogether and have just:

$$I(x) = I_s(p)*h(x).$$

Without having fully read the paper, I don't think the authors dare to venture into defining what is meant by convolution between discrete-time $I_s(p)$ and continuous-time $h(x)$ which results in continuous-time $I(x)$. Such a convolution can be defined as:

$$I(x) = \sum_{p=-\infty}^{\infty}I_s(p)h(x-p)$$

For example, if you want to obtain $I(x)$ within the inter-sample interval $0 \le x &lt; 1$ and you use the linear interpolation kernel, then the above simplifies as:

$$\begin{eqnarray}I(x) &amp;=&amp; \sum_{p=-\infty}^{\infty}I_s(p)h_{Lin}(x-p)\\
&amp;=&amp; \sum_{p=-\infty}^{\infty}I_s(p)\times\cases{
1-|x-p|, &amp;if$\quad 0 \leqslant |x-p| &lt; 1,$\\
0, &amp;if$\quad 1 \leqslant |x-p|$
}\\
&amp;=&amp; \sum_{p=0}^{1}I_s(p)(1-|x-p|)\\
&amp;=&amp; I_s(0)(1-x) + I_s(1)(1-(1-x))\\
&amp;=&amp; I_s(0)(1-x) + I_s(1)x.\end{eqnarray}$$

Or likewise for any inter-sample interval $x_0 \le x &lt; x_0 + 1:$

$$I(x) = I_s(x_0)(1-(x - x_0)) + I_s(x_0 + 1)(x - x_0).$$

Another way to understand such convolutions is that $I_s(p)$ is the product of the continuous-time signal multiplied by a Dirac comb, and to use a continuous-time convolution integral.

As you can see from the above, the interpolation filter is not a regular discrete-time filter, but one that converts a discrete-time signal into a continuous-time signal. The convolution filter definitions cited in the question are directly applicable, without further "sizing", when the sampling interval is 1.