Owen wrote:One thing to note with regards to Lanczos filtering, is that performance is dependent upon the filtering used when producing the source image. In particular, it is dependent upon a band-limited source image (which the used source image does not appear to be).
Of course it isn't; bandlimited images are not commonplace. Most interpolations produce optimal results in very specific cases and for very specific benchmarks (be said performance measured in terms of RMSE, PSNR, lack of artifacts, or simply overall visual quality). If Lanczos produces lower RMSE than, say, bicubic filtering but still a greater degree of ringing, I cannot be happy with the results.
Owen wrote:It has the feature that, for this target domain, it never produces any artifacts; hence, video files are generally passed through a band limiting filter when produced/scaled in order to produce a Lanczos suitable image. On such an image, Lanczos re-sampling always produces a resized image with all the detail present in the original preserved.
Okay, but what you're really resampling is an image distorted by a bandlimiting function. Except for some rare cases, such as an image that has been previously downsampled in a crude manner, that's not really desired. Moreover, a better term for such a process may perhaps be image
editing. As for videos, there are alternatives, including Fast EDI (which requires half the computation power of NEDI and still yields better results---not as good as FEDI's, though).
Owen wrote:Other filters may better "extract" details from the source image, but sometimes those details will be unintended artifacts (e.g. look at the pigeon's eye for the NEDI/FEDI filters).
While I'm not sure that I see any artifacts in the pigeon's eyes for those two particular images, I obviously agree that artifacts are a reality of these algorithms. However, look at the ringing around the pigeon's beak when Lanczos interpolation is used; artifacts are a reality of the trade.
childOfTechno wrote:An edge preserving filter looks nicer, but do you want to do this in real time, in software? I suspect the way to go is a plain boring trilinear filter, especially for downsampling an image.
Perhaps one day. But Brendan made a good point: If you want perfect results and still good performance, you may want to look into vectorization. Alas, I'm not aware of any research on vectorizers that are as good as our best resamplers.