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. |
9th January 2014, 21:06 | #21 | Link |
Nicolas Robidoux
Join Date: Mar 2011
Location: Montreal Canada
Posts: 269
|
I don't know, specifically, how it performs with video content, but fully implemented (possibly slightly deblurred, as it is in madVR---where it only upsamples---and by the EWA LanczosSharp method of ImageMagick---where it can do everything) Jinc-windowed Jinc 3 lobe is an amazing downsampler with digital photographs, esp. if used through linear light.
Last edited by NicolasRobidoux; 9th January 2014 at 22:53. |
9th January 2014, 21:12 | #22 | Link |
Nicolas Robidoux
Join Date: Mar 2011
Location: Montreal Canada
Posts: 269
|
I know I am preaching for my own church of one, but a cheaper EWA filter that works fairly well, at least for downsampling, is the Robidoux filter, which is the EWA default (chosen by Anthony Thyssen, the dev. responsible for resampling, not by me) in ImageMagick. Given that it uses a disk of radius 2 (instead of a bit more than 3 like most EWA Lanczos variants) and that the coefficients are computed with a Keys spline, it should run quite a bit faster.
Don't get me wrong: With good quality input content (and output not overly compressed destructively), EWA Lanczos and close relatives gives better results with the types of images I work with (not video). But EWA Robidoux may give good bang for the buck. Last edited by NicolasRobidoux; 11th January 2014 at 15:52. |
9th January 2014, 21:21 | #25 | Link |
Nicolas Robidoux
Join Date: Mar 2011
Location: Montreal Canada
Posts: 269
|
It should be possible to base a pretty nice AR (applied to Jinc-windowed Jinc 3-lobe, deblurred or not) on the key components of the bicubic interpolator LBB (Locally Bounded Bicubic) built into the NoHalo method (found in the open source GEGL and VIPS libraries).
Last edited by NicolasRobidoux; 9th January 2014 at 22:42. |
11th January 2014, 05:28 | #26 | Link |
Registered User
Join Date: Dec 2011
Posts: 77
|
You should really consider editing your post instead of adding new reply.
Downscale isn't implement because it requires dynamic disk size. The more downscale ratio, the larger the disk need to be. Compared to upscale, where disk size is constant, this poses more problem for optimization. The performance, at least for this filter, runs directly proportional to disk size, because the coefficient is calculate with LUT. What I am currently working on: - Integrating the quantized-table-lookup approach from cretindesalpes, without using STL container like he is using. - Figuring out the the deringing algorithm. - Figuring out what cause non-deterministic behaviour (sometimes it produces wrong result) I will consider other EWA-based scaling too; the code is written in such way that it's easy to add other resizing kernel. The reason I have been so slow on this is because real-life, and I have been spending free time optimizing Avisynth+ internal resizer. |
11th January 2014, 15:48 | #27 | Link | |
Nicolas Robidoux
Join Date: Mar 2011
Location: Montreal Canada
Posts: 269
|
Quote:
Last edited by NicolasRobidoux; 11th January 2014 at 15:54. |
|
27th July 2014, 16:43 | #33 | Link |
Registered User
Join Date: Dec 2011
Posts: 77
|
Long time no update. I presented v0.2. Thanks to cretindesalpes idea, now it runs much faster.
I have rewritten the core to be only quantized, table-lookup coefficient only. Even though this is very slightly less accurate, it's not noticeable at all and it runs MUCH faster, on my Haswell laptop the 360p->720p upscale with Jinc36Resize runs at near 40fps. It now has acceleration for SSE2, SSE3, AVX2 and FMA3. While FMA3 offer very slight to unnoticeable advantage over AVX2, AVX2 is huge leap over SSE3, which is also huge leap over SSE2. Non-deterministic behaviour should have also disappeared. Sorry, anti-ringing filter is not yet implemented. I have also add Jinc144Resize which is 6-tap filter. You can control quantization option by quant_x and quant_y option. Default is 256 for both value.
__________________
AviSynth+ |
30th July 2014, 20:59 | #35 | Link |
Registered User
Join Date: Oct 2011
Posts: 204
|
I think the answer you're looking for is "Lanczos / Spline scale width and height separately, while Jinc uses some sort of elliptical weight averaging, which means it scales both width and height in one step" (it's also called EWA Lanczos with certain parameters).
|
31st July 2014, 02:34 | #38 | Link | |
Registered User
Join Date: Jul 2011
Posts: 1,121
|
Guess i am blind or assuming a different kind of answer, as i can't actually find anything.
I just see the differences in how it calculates, but not the actual difference in the results qualitywise. If perhaps, not this is the answer. Quote:
|
|
31st July 2014, 07:05 | #39 | Link |
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Jinc is a bit softer than Lanczos, has a bit less ringing than Lanczos (but still some), but has noticeably less aliasing. Jinc has a more "analog" look to it. Even the ringing looks more natural compared to Lanczos. But some people prefer Lanczos because it's a bit sharper. Also Jinc is much slower than Lanczos because Jinc can't separate X and Y scaling operations.
Here's a comparison image from madVR, upscaling Monsters AG to 4K: |
|
|