wonkey_monkey
24th August 2018, 20:31
version
animate(0,100,"bicubicresize",\
16,16,1.0/3.0,1.0/3.0,32.0,32.0,16,16,\
16,16,1.0/3.0,1.0/3.0,30.0,30.0,16,16)
This script slowly shifts a static clip down and right by 2 pixels over 101 frames.
At frame 50 (and 0 and 100), there's a clear "jump" when the shift becomes an exact integer number of pixels. Is this a rouding error of some kind?
Here is a difference overlay of each frame and its immediate future neighbour:
https://i.imgur.com/JGJD61d.png
I submit that this is incorrect behaviour - according to the Wiki I've used the default values for b and c, and although the demonstration is an animation, I expect it would also cause artefacts in a static resize, but they'd be harder to see because it would just look like slightly greater sharpness on certain pixels. My understanding of bicubic is that it is everywhere continuous, so I don't think this should happen.
Bilinearresize and spline16resize do not exhibit this problem, and nor does my own pixel remapper which uses my own implementation of bicubic resampling.
Avisynth+ version is r2728.
Edit: New information: YV12 does not seem to be affected. YUY2 is affected to a lesser degree. RGB24/RGB32 are both affected as shown above, as are YV24 and Y8.
animate(0,100,"bicubicresize",\
16,16,1.0/3.0,1.0/3.0,32.0,32.0,16,16,\
16,16,1.0/3.0,1.0/3.0,30.0,30.0,16,16)
This script slowly shifts a static clip down and right by 2 pixels over 101 frames.
At frame 50 (and 0 and 100), there's a clear "jump" when the shift becomes an exact integer number of pixels. Is this a rouding error of some kind?
Here is a difference overlay of each frame and its immediate future neighbour:
https://i.imgur.com/JGJD61d.png
I submit that this is incorrect behaviour - according to the Wiki I've used the default values for b and c, and although the demonstration is an animation, I expect it would also cause artefacts in a static resize, but they'd be harder to see because it would just look like slightly greater sharpness on certain pixels. My understanding of bicubic is that it is everywhere continuous, so I don't think this should happen.
Bilinearresize and spline16resize do not exhibit this problem, and nor does my own pixel remapper which uses my own implementation of bicubic resampling.
Avisynth+ version is r2728.
Edit: New information: YV12 does not seem to be affected. YUY2 is affected to a lesser degree. RGB24/RGB32 are both affected as shown above, as are YV24 and Y8.