2.1.6. Float upsampling factor:ΒΆ

Omitting the potential artifacts discussed in previous chapters, the process of upsampling a signal by a factor z | z \in \mathbb N^* is rather simple. All it takes is adding the right number of zeros to the signal spectrum.

This being said, the right number of zeros might be hard to find (if at all) when z \in \mathbb R^{+*}. Assuming the input signal size is N, and the user zooming factor is z_r, z_r \in \mathbb R^{+*}, then the padding spectrum size must be N.z_r.

Chances are N.z_r \notin \mathbb N^{*} so the input signal has to be padded up to a size N' | N' > N, N'.z_r \in \mathbb N^{*} assuming such a N' exists.

If it does, then it is easy to figure out how this padding could imply overhead.

If it does not, and the spectrum is padded up to a size N_{up} such that N_{up} \in \mathbb N^* | N_{up} \approx N.z_r then the zooming factor actually applied is \overset{\sim}{z_r} = \frac{N_{up}}{N}.

To make sure Sirius always applies the user required zooming factor, and not an approximation of it, Sirius requires the user to set the input spacing, and the output one. Say the required zooming factor is z = 2.3333333333333335 then the user must set input spacing to 70 and output spacing to 30 (no matter the unit here).

Sirius will then understand the zooming factor is 7/3 and so will upsample the input data by a factor 7 before decimating the output to keep only 1 pixel out of 3.

This process ensures the zooming factor is exactly the one required by the user. It shall be noted the decimation is a safe process here and no aliasing will come from it. Indeed, the input spacing is 70 (again, no matter the unit), so decimating from 10 to 30 remains an aliasing free process since zooming from 70 to 10 dit not add higher frequencies than the ones already contained in the original spectrum.

Note

If one has given Sirius a low-pass filter to control the way high frequencies are cut-off, Sirius assumes this filter is sampled at the targeted resolution (7/3 here). Because the zooming factor will actually by 7, Sirius will firstly upsample the filter by a factor 3. This upsampling is obviously done using Fourier zero padding. This is equivalent to a sinc convolution which shall be the perfect way to upsample a continuous and rather smooth filter.