Diffusion Curves: A Vector Representation for Smooth-Shaded Images
maverick.inria.fr
maverick.inria.fr
The significance of this is that it introduces a new algorithm for doing it. The core of the algorithm is diffusion filters.
What would be VERY interesting is to see the vector size difference for photorealistic pictures using Diffusion curves vs a typical linear or gradient picture.
But ... Is it just me or is it just really inappropriate for a video demonstration accompanying an academic paper like this to begin with an unrelated 20-second commercial advertisement? Can INRIA really not host the demonstration somewhere that doesn't attach advertisements to their videos?
Edit: Nevermind, I found it out myself: http://www.henrykorol.net/DiffusionCurves.rar
Because gradient meshes seem far more "intuitive" and exact, exactly matching the artist's "intentions".
Whereas diffusion curves look very cool, but produce great complexity of gradients based on very simple curves -- almost too complex/unpredictable, I'd be worried, if I were an artist.
Of course, this seems easier to deal with than gradient meshes, at least how they exist today. I'd love to hear from artists who have tried both. I also wonder what other languages/concepts might be developed in the future towards this same end!
Gradient meshes are a royal pain in the ass. I never use them; if I want complex, smooth transitions, I currently do it by drawing overlapping blurred shapes. Meshes are overcomplicated IMHO.
I don't see how they would match the artist's intention any less, quite the opposite. You can alter any small part of the image without compromising the overall structure, and you can control spline tension through the blur radius. The only thing I would say is missing is the ability to skew the blur to be more intense on one side of the diffusion curve, thus creating asymmetrical gradients.
In tools like Illustrator gradient meshes are flattened to images anyway when exported to PDF. So if a technique like this was implemented, it wouldn't change the workflow at all. In fact, I expect to see this in Illustrator in the next two versions.
Designers would LOVE to have this functionality built into applications like Inkscape and Adobe Illustrator.
--
Edit: changed "SVGs" to "SVG-like files" per vlasta2's comment (thanks vlasta2!). Also changed "equal-looking" to "similar-looking," because the automatically-generated color gradients may not precisely match the original.
A while back I did some experimenting with compressing line graphics (handwritten music notation specifically) as both CCITTv4 (a bi-level raster compression algorithm) and SVG/PS via potrace (a tracer program), and the file sizes were similar (if anything favoring CCITTv4).
PS. Note that the resulting vector files are not just smaller, but the drawing elements contained in them are by definition resolution-independent, so all curves, diagonal lines, and gradients will render beautifully and without artifacts at all image sizes.
PPS. Also, note that music notation has no color gradients.
Now it may be the case that "compressing" an image with this vector transformation results in less noticeable quality loss than a similar quality reduction with JPEG; but then I'd ask to see a comparison to more advanced image compression methods such as APT: http://intuac.com/userport/john/apt/
And you will get artifacts going from raster->vector->zoom, because the raster->vector algorithm necessarily infers information that is simply not present (i.e. beyond the Nyquist boundary). While typically not apparent at 100% zoom, inaccuracies in this inference will become apparent once you zoom in (e.g. "that pixel was meant to represent a perfect square, not a circle!").
Re: PPS: I never claimed it did? Music notation is bi-level and smooth edges that makes it well-suited for vector tracing with a bi-level tracer e.g. potrace (and therefore -- again -- aiding your argument). Comparing a CCITTv4 bitmap -- a bi-level format -- to vector output from potrace -- a bi-level tracer -- would make no sense with color gradients.
In case it's not clear, I'm making the analogy CCITTv4 : potrace :: JPEG : the diffusion curve algorithm.
Your example of a pixel "meant to represent a perfect square, not a circle" is accurate: that is one type of information that gets discarded with this approach. Another type of information that gets discarded is complex/subtle color gradients/variations.
Taken to the extreme, yes, this approach can make photos look like stylized comic-book drawings; but with sensible defaults, it produces resolution-independent images that look great (such as the example with the dolphin) even if those images actually contain LESS information than a JPEG at the same file size.
We'll have to wait and see...
Apparently people have been discussing how to implement it in Inkscape for some time. The fact that there's no way to actually implement them with SVG seems to be a hurdle.
BTW: Vector videos have been used to squeeze full-screen cinematics into a Super Nintendo: http://fabiensanglard.net/anotherWorld_code_review/index.php