View Single Post
Old 19th March 2006, 03:56   #6  |  Link
Didée
Registered User
 
Join Date: Apr 2002
Location: Germany
Posts: 5,389
I knew I had once posted FastGaussBlur, but couldn't find it ATM

Quote:
With FastGaussBlur there is more of a Bloom effect of glowing edges and Blurx7 seems to hold more detail but not really shine much.
That's because 7*Blur does not as much blurring as it should do. Basically, a chain of 7*Blur(1.0) should result in a standard Gaussian-Blur with radius=7 (or variance=49, hopefully ... tsp? ) However, using chaines of Blur() will "run dead" at some point, where it should do more blurring work, mathematically - but practically can't, because of the small radius and digital rounding (average of 1-2-2 is just 2, etc.)

Quote:
I know I used FastGaussBlur, but I wasn't sure what parameters to use on FastGauss.
Results are rather similar - blurry, but not mathematically exact for big radii.
FastGauss uses radius as parameter, FastGaussBlur uses variance, as does tsp's VariableBlur. Variance = radius^2 resp. radius = sqrt(variance).
Personally, I like much more to think in "radius" than "variance", because radius is the usual way how Gaussian blurring is handled in image editors.

Last note for this long useless post:
There's something interesting about the "precision" of Avisynth's Blur() filter.
Compare an 8fold chain of "Blur(1.0)" with the same 8fold chain of "Blur(1.58)". The former, being a true radius=1 Gaussian Blur, will produce a very noticeable color shift. The latter, being a plain 3*3 average blur, treats chroma correctly.
Then compare both with FastGauss(8,8), FastGaussBlur(64,64), and GaussianBlur(64,64, Y=3,U=3,V=3,border=2), and see all the differences.
Aditionally, check the histograms of all the outputs, it's interesting:
Code:
o = last
blur8gss = o.blur(1.0).blur(1.0).blur(1.0).blur(1.0).blur(1.0).blur(1.0).blur(1.0).blur(1.0)
blur8avg = o.blur(1.58).blur(1.58).blur(1.58).blur(1.58).blur(1.58).blur(1.58).blur(1.58).blur(1.58)
fastg8   = o.FastGauss(8,8)
fastgb8  = o.FastGaussBlur(64,64)
gb8exct  = o.GaussianBlur(64,64,Y=3,U=3,V=3, border=3) # VariableBlur.dll

interleave(o,blur8gss,blur8avg,fastg8,fastgb8,gb8exct) .histogram(mode="levels")
__________________
- We´re at the beginning of the end of mankind´s childhood -

My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!)
Didée is offline   Reply With Quote