For the construction of a laplacian pyramid, images are downscaled and then upscaled again. My question is what is a wise decision of the kernel mask for the upscaling task ?

In more detail, lets say we have an image $I_{l}$ and we want to construct the next level $l+1$ of the laplacian pyramid. What we do is to apply a low-pass filter $h$ on $I_{l}$, so that we obtain an image by applying $h$ via convolution $\star$ on $I_{l}$, that is: $I_{\mathrm{low}} = I_{l} \star h$. Next, we subsample $I_{\mathrm{low}}$, reducing the width and height by factor 2, resulting in an image $I_{l+1}$ of the next level of the gaussian pyramid.

Now in order to compute the laplacian pyramid, we need to upscale $I_{l+1}$. This is done by copying the values of $I_{l+1}$ at every second pixel position and applying a filter mask.

That is, $\hat{I_{l}}(x,y) := \begin{cases} I_{l+1}(x/2,y/2) &\text{if }x/2\in \mathbb{N} \land y/2 \in \mathbb{N}, \\ 0 & \text{otherwise}.\end{cases}$
and $\hat{I_{l}}$ has twice the number of rows and columns as $I_{l}$.

In order to fill the zero entries, a filter mask g is applied: $\underline{I_{l}} = \hat{I_{l}} \star g$

Now what I see from the literature is (for the 1D case) to use $h = \frac{1}{16}\begin{bmatrix} 1 & 4 & 6 & 4 & 1\end{bmatrix}$ and $g = 2h$. For 2D images, the kernel $h= h^{T}h$ is used, together with $g = 4h$.

Now my questions are:

(1) If h is used for downsampling, is g the optimal choice for the upsampling? If so, then why?

(2) Given an arbitrary filter kernel h used for downsampling, how to compute the optimal filter kernel g for the upsampling process?

If I write everything in matrix terms, then

$I_{l+1} = \mathrm{subsample}(I_{l} \star h) = A *(I_{l} \star h) * B$, where $A$ and $B$ are matrices that perform the subsampling.

On the other hand, $\underline{I_{l}} = \hat{I_{l}} \star g = (C * (I_{l+1})*D) \star g = (C*[A*(I_{l} \star h) * B] *D) \star g$, where the matrices $C,D$ are used to perform the upsampling step (copying the values).

Then, we have $\underline{I_{l}} = (C*[A*(I_{l} \star h) * B] *D) \star g$. What we want is the upsampeled image $\underline{I_{l}}$ to be equal or close to the input image $I_{l}$.

The matrices $A,B,C,D$ are not invertible since they contain zeros rows or columns (and are not quadratic). How can we find the best kernel in this case?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.