Hi Rogelio,
With a small image scale the lack of sub pixel accuracy isn't much of a problem. ...
That seems quite reasonable after integrating a large number of images. But IMO this just justifies that NN
can be used in these particular cases without practical problems, not that it is the best option. It just says that (1) when the images are sufficiently oversampled subpixel registration is not really critical in terms of actual resolution, and (2) with a large number of images the artifacts generated by NN will tend to cancel out after averaging.
However, that doesn't prove, in my opinion, that NN is better in terms of detail preservation. Bicubic spline and bilinear interpolation, for example, do provide subpixel registration, and I really can't see why subpixel accuracy may not be desirable for image registration of
any kind of images.
It is true that NN is the only algorithm that preserves the original distribution of pixels, i.e. the existing noise distribution. This happens because NN actually does not interpolate; it just copies existing pixel values from one place to another. The rest of interpolation algorithms are true interpolations and as such, they involve some low-pass filtering of the data. Our implementation of bicubic spline, however, applies a special separable filter with negative lobes that compensate for the low-pass filtering effect efficiently. The original interpolation function has been described and analyzed by R. G. Keys in
Cubic Convolution Interpolation for Digital Image Processing, IEEE Transactions on Acoustics, Speech & Signal Proceedings Vol. 29, pp. 1153-1160 (1981):
f(x) = (a+2)*x^3 - (a+3)*x^2 + 1 for 0 <= x <= 1
f(x) = a*x^3 - 5*a*x^2 + 8*a*x - 4*a for 1 < x <= 2
f(x) = 0 otherwiseIf you plot this function, you'll see that it has a negative lobe or
valley below the X axis (two lobes, if you represent it symmetrically with respect to the origin), controlled by the constant
a above. These lobes provide a small amount of high-pass filtering as a function of
a (-1 <=
a < 0). In our implementation, I have set
a=-1/2, as recommended by the author.
The negative lobes and the fact that this is a cubic polynomial may lead to artifacts caused by oscillations at jump discontinuities, which happen frequently in linear images. That's why I modified the original algorithm to introduce a linear clamping device. Linear clamping prevents oscillations by switching to linear interpolation in presence of very high differences between neighbor pixels, and acts at the individual row or column level (the filter is separable) without degrading the overall filter performance.
Of course no interpolation algorithm is perfect. When we are interpolating observational data we are always cheating to some extent. It is true that an interpolation like the above one may sometimes introduce small
aliasing artifacts in the noise distribution over background areas after registration, especially in presence of rotation and high amounts of noise. But these artifacts cancel out without problems after integrating (averaging) some frames, and they are definitely much better than the seams generated by NN. Obviously, at least IMO, the excellent subpixel accuracy that these interpolations provide compensates for the small aliasing problems without doubt.