pixel filtering back
(L) [2006/06/07] [lycium] [pixel filtering] Wayback![LINK http://mysticgd.com/thomas/wip/gic_box.png]
[LINK http://mysticgd.com/thomas/wip/gic_catmullrom.png]
[LINK http://mysticgd.com/thomas/wip/gic_lanczos7.png]
good pixel filtering is quite a subtle issue; more than one person i've shown these images to said they couldn't tell the difference. now, i'm not sure if that's because of their a) bad monitor b) bad browser resizing c) bad eyesight, but these images totally scream various quality characteristics to my, admittedly obsessive, eye.
i obviously have way too many opinions on these differences, but i don't want to (immediately) post them. rather, since everyone here's a lover of eyecandy (and in a very good position to do serious antialiasing), i'd like to hear some opinions on which filter is better, in which places (hint hint), and why; some basic quality metrics to have in mind are postaliasing vs blurring, ringing, moiré and noise suppression (the fractal is computed by a stochastic process- masking variance here is a desirable property). the best way to do this comparing is via some image manip program supporting layers, at various zoom levels- bearing in mind that the overall effect at 100% probably matters more than individual pixel inspection...
the catmull-rom filter is a special case of the mitchell-netravali filter (b=0, c=1), support is 4 pixels. the lanczos filter is... well, i went a bit overboard with that (not to mention using long doubles, a mclaurin expansion, etc etc) so its support is 14 pixels. the usual version has a support of 6 pixels, which i suspect might mitigate some of the negative features *ahem* found in the 14-pixel version. the box's support is, heh, a whole pixel.
thanks in advance for taking the time!
edit: i rendered a 6-pixel lanczos version to see the difference: [LINK http://mysticgd.com/thomas/wip/gic_lanczos3.png] (this is all done with the same sample data, and my hypothesis was correct ;).
(L) [2006/06/07] [greenhybrid] [pixel filtering] Wayback!Very cool shots lyc!
Looking at the fine details (where the "teeth" are) the lanczos3-filtered seems best to me (reducing that "fine cross-hatched shirt on tv"-effect)
How long did it take to render?
Pardon for my question, I did filtering just in some painting progs, yet: Did you supersample the images? Or just filtering without resizing?
_________________
[LINK http://greenhybrid.net/ greenhybrid.net]
Real Men code Software Graphics.
(L) [2006/06/07] [lycium] [pixel filtering] Wayback!the cross-hatching is the [LINK http://en.wikipedia.org/wiki/Moire_pattern moiré effect], and yes the lanczos filters do a very good job of suppressing that.
i certainly do employ (a lot of) supersampling, in those images 144x; 2.5ghz of athlon64 produces that data overnight (technically ~5 hours in the morning, eg starting an hour from now, but whatever ;), and i certainly don't skimp on the computation: almost everything happens in double precision- these fractals are delicate! 9x supersampling already looks pretty good and is ideal for previewing, 16x is quite nice and anything above, well, i'm just crazy when it comes to these things :P
every pixel is special...
(L) [2006/06/07] [Phantom] [pixel filtering] Wayback!Well the box filter obviously has a problem keeping gears distinguishable. The more expensive filters make it much easier to see individual teeth. So to me it's not too hard to see that these filters are not equal, I guess you don't have to be 'obsessive' to note that. Obviously one would like a balance between quality and rendering speed: Since I'm into RTRT I don't want to spend more than 20% on filtering, spending 50% might be acceptable for HQ images but anything more becomes, well, obsessive. [SMILEY Smile] imho of course.
_________________
--------------------------------------------------------------
Whatever
(L) [2006/06/07] [greenhybrid] [pixel filtering] Wayback!good morning Mr.Bikker,
good morning Mr.Ludwig!
So, lyc, you shoot a lot of rays per pixel or do you supersize the final image and then downsizing it (e.g. from 10000x10000 down to 1000x1000) using a filter?
_________________
[LINK http://greenhybrid.net/ greenhybrid.net]
Real Men code Software Graphics.
(L) [2006/06/07] [lycium] [pixel filtering] Wayback!jacco, you would explode if you knew how long the filtering takes ;) to give a clue, i'm not even caching the colour values atm- recomputing them from sample data everytime it's needed by the filter.
anyway it'll be a long, long time before anything approaching that kind of geometry vs quality vs resolution will be possible in realtime (nevermind the hdri illumination soon to come); it's not even ray tracing based- yes, i checked with tbp before posting this stuff :P the final filtering only happens once, besides previewing with box filter, and is parallelised via openmp so right now it's... well, it's still completely insanely mind bogglingly slow, but i can take time to make coffee and so on ;) the main limitation is memory usage at these resolutions, which is why i'm deliberately not caching those samples for now. i'll probably see a 1000x speed increase (not a thumbsuck, that's the order) once i do some very rudimentary caching.
[edit: to elaborate for gh, it's not ray tracing based and cannot be made so. i know it's a cardinal sin to post such things on ompf, but this is about pixel filtering using, among other things, a cardinal spline, so all that cancels out (sorry, coding all night means bad jokes all morning for me). the filtering is applicable to ray tracing also- there you would shoot a lot of rays and gather into filter-buckets, here i do a resize from a regular grid- hence the moiré.]
(L) [2006/06/07] [Phantom] [pixel filtering] Wayback!I don't mind topics on filtering, I believe tbp posted about image postprocessing and he didn't even use any rendering at all, just an image that was loaded from disk. Filtering is relevant to ray tracing, so it's fine if you post about it.
Speaking of which: I am having some fun with a natural language thingy I wrote a while ago. It's very slow and I'm trying to improve my parser. Now THAT'S off topic. [SMILEY Wink]
_________________
--------------------------------------------------------------
Whatever
(L) [2006/06/07] [lycium] [pixel filtering] Wayback!offtopic indeed, i'll have to assume you don't have any filter preference :/
(L) [2006/06/07] [Phantom] [pixel filtering] Wayback!I do, I do. The catmull-rom and lanczos7 look both fine; not equal, but both give good results in the test images you provided. I think catmull looks best on this scene. I like it when the gears stay distuingishable like I said.
_________________
--------------------------------------------------------------
Whatever
(L) [2006/06/07] [lycium] [pixel filtering] Wayback!i know i'm pushing/biasing a bit here (looking for confirmation mostly), but don't you think think the lanczos3 might have a considerable *ahem* edge over catmull-rom? the catmull-rom used to be my preferred filter... (i acknowledged your negative-points about the box, but i'm most interested to know which is best :)
(L) [2006/06/07] [toxie] [pixel filtering] Wayback!just to make sure: the number in the lanzcos-filter (lanzcosX) is the radius of the input?!
(L) [2006/06/07] [lycium] [pixel filtering] Wayback!yes, it follows 2pi*n cycles of the sinc (across both sides of 0).
(L) [2006/06/08] [Lynx] [pixel filtering] Wayback!Erm...so you used 144 samples per pixel, do i understand that correctly? So with a 14x14 pixel filter that's...OMG you can't be serious!?
Clearly the Lanczoz sinc filter does best here in most regions, but, i think on a test with *ehem* "sane" amounts of oversampling you're quickly experiencing ugly ringing due to the fact that you can't meet the sampling theorem, i.e. the highest image frequency is way above your sampling frequency, giving ugly aliasing (ringing mainly, even on a single hard edge as you get with excessive sharpen post-filters often used by crappy digital cameras and such)...at least that's what the Lanczoz does in pretty much any renderer i tried so far,
But yea, if you plan to use vast amounts of samples per pixel, you might well consider the sampling theorem as met and use the "ideal" reconstruction filter, which is sinc...
(L) [2006/06/08] [tbp] [pixel filtering] Wayback!Is the sampling also done on the webserver cuz all i got was a time out.
1) Pimp an uber screenshot.
2) Refer an arthritic web server.
3) ???
4) Profit.
(L) [2006/06/08] [lycium] [pixel filtering] Wayback!awww, looks like the slinkster keeled over and died :/ (turns out the whole university just died... nothing unusual...) seems i'm going to have to make this one public before it gets to deviantart...
[LINK http://mysticgd.com/thomas/wip/snapshot.png] (i wonder how much of that complexity will be covered up when it's done sampling)
(L) [2006/06/08] [Lynx] [pixel filtering] Wayback!Just...what the heck is is anyway [IMG #1 ]
Are you sure it doesn't cause brain damage when viewed for too long?
[IMG #1]:
(L) [2006/06/08] [lycium] [pixel filtering] Wayback!heh, not sure about that at all ;) certainly it causes some brain damage while coding them! (this isn't the final image either btw, i may tweak the lighting etc still)
those are high dimensional 3d ifs samplings, with lots of procedural this and that to give it the basic structure (if you think the pixel filtering is a bit extreme, consider the 50-1m dimensional procedure required to generate the source data!). i'm writing a paper about how i render these things efficiently (culminating in hdri illumination), so eventually all technical details will be revealed. i don't think it'll make it into siggraph though, novel application or not :/
(L) [2006/06/12] [toxie] [pixel filtering] Wayback!Just to bring up another thing:
Ever thought on submitting such a thingie [LINK http://buenz.li/compos.php#4kgfx here]?!
back