Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
19th June 2006, 22:04 | #1 | Link |
Registered User
Join Date: Sep 2003
Location: Berlin, Germany
Posts: 3,079
|
LanczosResize vs. SplineResize
AviSynth 2.56 introduced two new resizers GaussResize and SplineResize. The AviSynth documentation is quite vague about them, and a forum search only came up with some posts saying that Spline36Resize delivers a better quality than LanczosResize, especially when you are upsizing by a high factor.
I would like to hear some opinions about the strengths and weaknesses of these two resizers. Normally I use Bilinear for downscaling and Lanczos or Lanczos4 for upscaling. Is it a good idea to replace Lanczos by Spline36 in all my scripts, or are there situations where Lanczos beats Spline36 in quality? Mostly I have to resize 480x576 TV captures to 720x576, and a quick comparison between Lanczos4 and Spline36 did not show any visible improvement for Spline36. But maybe this is due to the already limited source quality (analog cable), or to my standard CRT TV set. Cheers manolito |
19th June 2006, 22:21 | #2 | Link |
Registered User
Join Date: Feb 2004
Posts: 1,348
|
Spline36 is only very slightly better then lanczos, the difference is not usually vissible with small resizing factors. In your case there would be no real benefit to using Spline36 over lanczos, especially when you consider that you will be encoding to a lossy format that will in all likelyhood get rid of what little differences there would be.
|
20th June 2006, 05:41 | #3 | Link |
Angel of Night
Join Date: Nov 2004
Location: Tangled in the silks
Posts: 9,559
|
The spline kernels are so much more complex that they're quite a bit slower, so if you have fast scripts don't bother. If they're crazy Didée-ish manifestations, or inside something like LimitedSharpen, you might be able to pull a little more sharpness from a good source without ringing (haloing) and softening that way, but you'd only notice a difference on a sharp source going at least 1.5x-2x up or down.
|
20th June 2006, 08:13 | #4 | Link |
Registered User
Join Date: Apr 2005
Posts: 224
|
From my post in the MultiSWAR thread:
Original image (1920x816) MultiSWAR(2560,1088) - Lanczos MultiSWAR(2560,1088) - Spline36 Spline36 is a tiny bit more precise.
__________________
PAL FACTS * 20% more horizontal scan lines than NTSC * No telecine judder |
22nd June 2006, 00:40 | #8 | Link |
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
|
There is no difference in speed between equivalent order Lanczos and Spline resizers, the Gauss Resizer is currently the same speed as Lanczos4.
All resizers use the same lookup table based MMX/SSE code. Speed is directly proportional to the number of taps. |
22nd June 2006, 01:17 | #9 | Link |
Angel of Night
Join Date: Nov 2004
Location: Tangled in the silks
Posts: 9,559
|
Yes but lanczos uses 4 taps (unless resizing way down), spline16/36 16 & 36 respectively. So there's the speed difference. Unless I'm wrong and you mean spline16=lanczos4 and spline36=lanczos(taps=6) speedwise?
Oh, and out of curiosity, why is there a Mitchell-Netravali filter in the source but unexposed? Just for testing? In other image software it looks about halfway between lanczos and bicubic (presumably it's quite configurable though, being a family of filters). |
22nd June 2006, 08:28 | #10 | Link |
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
|
@foxyshadis, No! The overloadable function ResamplingFunction::support() determines the range for a given resizer. The code samples symetrically left and right upto the value returned.
Code:
Filter Support Taps Point 0.0001 1 Bilinear 1 2 Bicubic 2 4 Spline16 2 4 Lanczos 3 6 Spline36 3 6 Lanczos4 4 8 Gauss 4 8 |
22nd June 2006, 23:13 | #11 | Link |
Registered User
Join Date: Sep 2003
Location: Berlin, Germany
Posts: 3,079
|
Just did a few real world tests using Bicubic(b=0,c=0.6), Lanczos, Lanczos4 and Spline36. I used CCE 2.67 in OPV mode with the standard matrix and tested speed and Q factor. My source was a 115 min PAL TV capture from analog cable (progressive). Capture size was 464 x 576 using Picvideo MJPEG codec. My script was:
AviSource("MyCapture.avi") AddBorders(8,0,8,0) xxxResize(720,576) No filters, no color conversion. I used DVD2SVCD with the D2SRoBa plugin to determine the Q factor. I watched the resulting DVDs with my 28" standard 4:3 CRT TV set (100Hz flicker free). For quality I have to say that I was completely unable to tell any difference between the resizers. All resizers looked the same to me. Code:
Q factor Speed Spline36 39 0.54 Lanczos4 40 0.55 Lanczos 39 0.57 Bicubic(b=0,c=0.6) 38 0.58 There is a difference in speed, but it is not too significant. When more filters are present in the script, the speed difference will be even less. The Q factor can be used to determine how compressible a clip is. A sharper clip will result in a higher Q factor. It seems that Lanczos4 is sharper than Spline 36, Lanczos is about the same as Spline36, and Bicubic(b=0,c=0.6) is a little less sharp. Of course this does not say anything about the precison of the interpolation. Cheers manolito |
24th June 2006, 14:10 | #12 | Link |
Retired AviSynth Dev ;)
Join Date: Nov 2001
Location: Dark Side of the Moon
Posts: 3,480
|
As Ian pointed out, the speed difference is not in the resizer. You are most probably seeing small differences due to CCE having to choose different motion estimation.
Regarding "precision of interpolation". There is no such thing, there are "softer" and "sharper" interpolation methods.
__________________
Regards, sh0dan // VoxPod |
24th June 2006, 15:07 | #13 | Link | |
Registered User
Join Date: Sep 2003
Location: Berlin, Germany
Posts: 3,079
|
Quote:
Anyone about GaussResize? Analyzing resizer algorithms is way over my head, so I would like to hear some opinions from people who are actually using Gauss. How does it compare to Lanczos4 and Spline36? Cheers manolito |
|
24th June 2006, 15:51 | #14 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
I've compared GaussResize(H,V,p=100) to Lanczos4Resize on several projects and in my opinion p=100 looks sharper than Lanczos4 but artificially so. Bear in mind that my projects all included low detail, severely filtered video though, I have no idea how they compare on more usual scenarios.
__________________
Read Decomb's readmes and tutorials, the IVTC tutorial and the capture guide in order to learn about combing and how to deal with it. |
25th June 2006, 02:54 | #15 | Link |
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
|
Digital sampling theory is best left to the Mathemagicians of this world. The premise "I don't know art, but I know what I like" serves best here.
The rational for Spline is to be as sharp as possible without the ringing Lanczos implies. Lanczos wants to be as sharp as possible without being visually displeasing. Gauss? Hmm, is a strange beast, but it can look very nice sometimes. Code:
class GaussianFilter : public ResamplingFunction ... double support() { return 4.0; }; ... GaussianFilter::GaussianFilter(double p = 30.0) { param = min(100.0,max(0.1,p)); } double GaussianFilter::f(double value) { value = fabs(value); double p = param*0.1; return pow(2.0, - p*value*value); } As the lookup table for the resamler is being evaluated, the function f() will be sampled with -4 < value < 4. Here is a table of typical returned values Code:
value f(value) 0.0 1.0 0.25 0.648 0.5 0.177 0.95 0.002 = (1/521) 1.0 0.001 2.0 9.1e-13 3.0 8.1e-28 4.0 0 An obvious performance enhancment here could be to limit support() based on P and also possibly increase it for low values of P. |
9th July 2006, 03:38 | #16 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
That looks interesting, if you implement it I'll compare Lanczos4 to Gauss again.
__________________
Read Decomb's readmes and tutorials, the IVTC tutorial and the capture guide in order to learn about combing and how to deal with it. |
9th July 2006, 07:34 | #17 | Link |
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 3,167
|
@Chainmax,
Twidling the Support() value based on P won't change the look of the filter (well maybe for very small P, i.e. lots of blur, it might) it might however boost performance significantly. |
6th February 2007, 10:25 | #18 | Link |
Registered User
Join Date: Jan 2007
Posts: 26
|
Sorry to dig up old threads, but I do have a few questions. Hope you don't mind. Also I would like to say Hi since this is my first post on Doom9 and complain about waiting 5 days till I could post... I forgot most of my inquiries. Damn.
Recently, MeGUI added support for Gauss, Point, Spline16 and Spline36 even though these were added in AviSynth a long time ago. June according to the first post here . I know Spline36 is more advanced, so I was wondering what to use for downscaling anime content. Up untill now, I used "Lanczos (Sharp)" and not Lanczos4. Lanczos4 is a bit too sharp for my taste... Or was I wrong ? The other thing I was wondering about is why do I need to resize at all. My source is 704x396 and I was told you need to resize to a mod16 resolution for a better compression. At least that's what MeGUI (x264) said. So I was like Ok and choose "Clever anamorphic... blablabla" at a width of 640 so the height was instanlty choosen at 352. Did I do something wrong ? Is more bitrate allocated on a smaller resolution video stream ? Is there any 'visual' improvement achieved from downscaling animated video content, apart from the height being too small and getting blocky ? I would say 352 pixels are quite acceptable... Anything near 240 is plain horrible. Also, please note I'm using x264. I've got a perfect memory so any advice is thoroughly noted, and I will not ask these questions again. Sorry for being a n00b. We all gotta start somewhere. Last edited by Ð.Sp!dér; 6th February 2007 at 10:27. |
6th February 2007, 10:31 | #19 | Link |
Registered User
Join Date: Feb 2004
Posts: 1,348
|
Spline36 is very good for downsizing (imo the best downscalar) it has less artifacts than anything else, better aliasing avoidance then bilinear, sharper then bicubic, 99% as sharp as lanczos without the ringing.
reasons to downscale are -better sharpness/artifacts tradeoff at low bitrates (very low for avc) -more efficient storage of low spatial resolution content (ie better storage of blurry sources) -keeping mod 16 resolutions to aid compresion (you can also upscale, if you really don't want to lose pixels) -keeping a 1:1 pixel aspect ratio for better compatibility and compresion (you can also upscale, if you really don't want to lose pixels) Last edited by *.mp4 guy; 6th February 2007 at 10:36. |
Thread Tools | Search this Thread |
Display Modes | |
|
|