Log in

View Full Version : Spline144 is AMAZEBALLS


Katie Boundary
10th January 2018, 09:27
(trying to simulate the effects of upscaling 720x480 to 1280x720)

Script:

source blah blah deinterlace blah blah

converttorgb()

X=arearesize(640,360)
Y=bilinearresize(360,240).spline144resize(640,360)
Z=bilinearresize(360,240).lanczos4resize(640,360)

M=compare(Y,X)
N=compare(Z,X)

stackvertical(M,N)

Although Spline64 very very very slightly underperforms Lanczos on maybe 90% of frames, with the difference between Lanczos-3 and Lanzcos-4 being negligible, Spline144 absolutely blows Lanczos out of the water. I'm seeing PSNR improvements of up to 2 dB, and a ~0.2 reduction in mean absolute deviation.

Why is this not more commonly mentioned?

FranceBB
10th January 2018, 10:55
Probably because if you need a simple upscale, Spline36 is generally enough and Spline64 is already an overkill. When you need a very detailed upscale for specific materials, NNEDI is extremely helpful as well as high bit depth.
Plain Spline144Resize at 8bit for normal tasks, for me, is more than an overkill.
In NNEDI you can choose the number of taps and, therefore, go even beyond Spline144Resize.
I personally tried a very high number of taps and I found out that sometimes it helps, sometimes it doesn't and that, at some point, no matter how many taps you use, you are not gonna see any difference.

In other words: Spline144Resize *is* used, but together with NNEDI to handle particular materials and not for everyday tasks.

wonkey_monkey
10th January 2018, 15:18
Why is this not more commonly mentioned?

Probably because most people have a much lower amazement threshold (and don't obsessively pursue metrics down to tenths of a percent).

Spline144resize has other, far more interesting, properties.

https://www.youtube.com/watch?v=qYMqE2VNENo

Katie Boundary
10th January 2018, 22:17
In NNEDI you can choose the number of taps and, therefore, go even beyond Spline144Resize.
I personally tried a very high number of taps and I found out that sometimes it helps, sometimes it doesn't and that, at some point, no matter how many taps you use, you are not gonna see any difference.

I've already pointed out that with certain filters, increasing the number of taps won't just fail to yield noticeable improvements, but will make the image look worse.

Probably because most people have a much lower amazement threshold (and don't obsessively pursue metrics down to tenths of a percent).

The differences between Spline64 and Lanczos were "tenths of a percent" type stuff. The differences between Spline144 and Lanczos are much bigger.

Spline144resize has other, far more interesting, properties.

https://www.youtube.com/watch?v=qYMqE2VNENo

You mean rounding errors that only appear at certain scaling factors? Yes, the data will confess to anything if you torture them enough.

Mounir
11th January 2018, 11:57
Where can i get the .dll for spline144 for avisynth 2.6?

Sparktank
11th January 2018, 12:10
Where can i get the .dll for spline144 for avisynth 2.6?

http://www.wilbertdijkhof.com/SplineResize_v02.zip

Dither_tools also allows spline with custom number of taps.

burfadel
11th January 2018, 16:46
Supposedly Madshi is developing an avisynth version of the NGU upsets etc. That would blow spline144 ou of the water perceptively.

Sparktank
11th January 2018, 17:47
Supposedly Madshi is developing an avisynth version of the NGU upsets etc.

Now that would be fun.

Katie Boundary
13th January 2018, 07:11
NGU upsets

North Greenville University?

StainlessS
13th January 2018, 13:29
North Greenville University?

On a hunch, I googled
"NGU" Nvidia
which gets better hits than North Greenville University, I did not look any further.

EDIT: Seems to be this "Normalized Graphics Processor Unit", just from reading the first few links on google result page.

burfadel
13th January 2018, 13:38
I meant upsizers not upsets, phone auto correct! Information for NGU can be found in the madR thread, or madvr.com. It's improved since those demo pics.

Groucho2004
13th January 2018, 13:47
Seems to be this "Normalized Graphics Processor Unit"I think it stands for "Next Generation Upscaler" implemented in madvr.

StainlessS
13th January 2018, 13:55
I think it stands for "Next Generation Upscaler" implemented in madvr.

Arh but possibly using a Normalized Graphics Processor Unit. :)

thanx G.

wonkey_monkey
13th January 2018, 14:00
I've already pointed out that with certain filters, increasing the number of taps won't just fail to yield noticeable improvements, but will make the image look worse.


Not in this thread, you didn't. Do you really have such a high opinion of yourself that you believe everyone should have read and remembered everything you've ever said?

Groucho2004
13th January 2018, 14:16
I meant upsizers not upsets, phone auto correct!https://s9.postimg.org/4m5ih80gf/enhanced-buzz-12768-1364220503-0.jpg

feisty2
13th January 2018, 18:45
Do you really have such a high opinion of yourself that you believe everyone should have read and remembered everything you've ever said?

she does, which explains why she's always trolling, to draw attention from others this way

Katie Boundary
15th January 2018, 00:13
https://s9.postimg.org/4m5ih80gf/enhanced-buzz-12768-1364220503-0.jpg

http://xc2.xanga.com/55ee130564533280027069/z222582477.png

hello_hello
15th January 2018, 06:31
As an experiment, I tried upscaling to 1280x720.

Well..... I had a 1920x800 source handy so I used that after cropping it to 720p.

Comparing them that way, Spline144's balls didn't amaze me too much. One thing I don't understand, is why converting to RGB first has a negative impact on PSNR and why Spline144 seems to take a bigger hit.

C = last.Crop(0, 0, 1280, 720)
W = width(C)
H = height(C)
X = C.AreaResize(720, 480)
S144R = X.Spline144Resize(W, H)
S36R = X.Spline36Resize(W, H)
L4R = X.Lanczos4Resize(W, H)

S144 = Compare(S144R, C).crop(0, 0, -(W-500), -(H-180)).subtitle("Spline144", align=8, y=130)
S36 = Compare(S36R, C).crop(0, 0, -(W-500), -(H-180)).subtitle("Spline36", align=8, y=130)
L4 = Compare(L4R, C).crop(0, 0, -(W-500), -(H-180)).subtitle("Lanczos4", align=8, y=130)

StackVertical(StackVertical(S144, S36), L4)

Trim(95700,96199)

After playing through 500 frames.
Converting to RGB first.

https://image.ibb.co/b5BrsR/rgb720.jpg

No conversion to RGB.

https://image.ibb.co/kiwfmm/720.jpg