`Orum
16th January 2016, 07:24
I've been down scaling some 8k RGB images to 2k, experimenting with different resize filters in the process, and noticed some strange behavior with SincResize and it's taps parameter. It appears that using an odd value (1, 3, 5...) for taps produces an overly blurred image, and an even number produces an overly sharpened image. Also, the luma of the clip appears to fluctuate a lot just going between these odd/even values.
Anyway, to demonstrate, load up a large image (e.g. 8000x3333, a few examples to use here (https://secure.flickr.com/photos/k_putt/sets/72157644191959442/)) and downscale it like so, then step through frame-by-frame:
ImageSource("8k.jpg", 0, 19, pixel_type="rgb24")
Animate(0, 19, "SincResize", \
1920, 800, 0, 0, 0, 0, 1, \
1920, 800, 0, 0, 0, 0, 20)
It's most apparent at small values, e.g. taps <= 6, but it's even noticeable up to the 17/18 tap range. The fluctuations definitely reduce as the taps increase, like a position graph of lightly damped oscillation, but this is completely different behavior compared to other resizers, such as Lanczos/Blackman (just replace "SincResize" with "BlackmanResize" in the script). Is this expected behavior, and if so, why is it like that? It seems to get a good result you really need to maximize the taps, which isn't as needed for the other resizers.
Edit: Finally stumbled across the resampling page (http://avisynth.nl/index.php/Resampling) on the wiki, which has a good explanation of the various algos.
Anyway, to demonstrate, load up a large image (e.g. 8000x3333, a few examples to use here (https://secure.flickr.com/photos/k_putt/sets/72157644191959442/)) and downscale it like so, then step through frame-by-frame:
ImageSource("8k.jpg", 0, 19, pixel_type="rgb24")
Animate(0, 19, "SincResize", \
1920, 800, 0, 0, 0, 0, 1, \
1920, 800, 0, 0, 0, 0, 20)
It's most apparent at small values, e.g. taps <= 6, but it's even noticeable up to the 17/18 tap range. The fluctuations definitely reduce as the taps increase, like a position graph of lightly damped oscillation, but this is completely different behavior compared to other resizers, such as Lanczos/Blackman (just replace "SincResize" with "BlackmanResize" in the script). Is this expected behavior, and if so, why is it like that? It seems to get a good result you really need to maximize the taps, which isn't as needed for the other resizers.
Edit: Finally stumbled across the resampling page (http://avisynth.nl/index.php/Resampling) on the wiki, which has a good explanation of the various algos.