Diffusion Curves in Inkscape vector drawings
Formal Metadata
Title 
Diffusion Curves in Inkscape vector drawings

Title of Series  
Part Number 
17

Number of Parts 
46

Author 

License 
CC Attribution  ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and noncommercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license. 
Identifiers 

Publisher 

Release Date 
2012

Language 
English

Content Metadata
Subject Area  
Abstract 
Diffusion Curves are an exciting and flexible new primitive for creating images with smooth color transitions. However, the best method to display diffusion curves so far is to rasterize them, which is unsuitable for use with SVG for example. I will present the basic idea behind Diffusion Curves, an alternative interpretation and an approach to creating a purely vector based representation (discussion welcome).

Keywords  Libre Graphics Meeting (LGM) 
00:00
Filter <Stochastik>
Curvature
Computer animation
Bit
Computer programming
00:47
Point (geometry)
Medical imaging
Word
Computer animation
Gradient
Bit
Graph coloring
01:50
Complex (psychology)
Matching (graph theory)
Polygon mesh
Image resolution
Gradient
Combinational logic
Bit
Measurement
Medical imaging
Curvature
Computer animation
Software
Graph coloring
03:16
Point (geometry)
Group action
Link (knot theory)
Multiplication sign
Decision theory
Function (mathematics)
Mereology
Graph coloring
Computer programming
Order of magnitude
Twitter
Wiki
Medical imaging
Goodness of fit
Mathematics
Causality
Natural number
Wellformed formula
Core dump
Boundary value problem
Endliche Modelltheorie
Nichtlineares Gleichungssystem
Physical system
Exception handling
God
Multiplication
Dependent and independent variables
Algorithm
Gradient
Bit
Cartesian coordinate system
Equivalence relation
Category of being
Curvature
Kernel (computing)
Computer animation
Graph coloring
Website
Resultant
Diskrete Mathematik
07:17
Area
Point (geometry)
Algorithm
Group action
Scaling (geometry)
Euclidean vector
40 (number)
Gradient
Convolution
Computer programming
Medical imaging
Kernel (computing)
Befehlsprozessor
Computer animation
Konturfindung
Formal grammar
Boundary value problem
Iteration
Circle
Nichtlineares Gleichungssystem
10:31
Point (geometry)
Pixel
Group action
Implementation
Touchscreen
Polygon mesh
Image resolution
Software developer
Decision theory
Letterpress printing
Function (mathematics)
Cartesian coordinate system
Revision control
Medical imaging
Curvature
Numeral (linguistics)
Computer animation
Personal digital assistant
Volumenvisualisierung
Right angle
Resultant
12:50
Discrete group
Implementation
Functional (mathematics)
Polygon mesh
Gradient
Bit
Graph coloring
Triangulation (psychology)
Curvature
Computer animation
Triangle
Linearization
Boundary value problem
Resultant
14:50
Algorithm
Touchscreen
Euclidean vector
Image resolution
Interactive television
Bit
Line (geometry)
Coma Berenices
Mereology
Medical imaging
Computer animation
Triangle
Resultant
16:41
Filter <Stochastik>
Discrete group
Interpolation
Group action
Beta function
INTEGRAL
Set (mathematics)
Graph coloring
Bit rate
Wellformed formula
Average
Boundary value problem
Dependent and independent variables
Algorithm
Polygon mesh
Gamma function
Stress (mechanics)
Planning
Sound effect
Bit
Measurement
Step response
Radius
Computer animation
Triangle
Right angle
Arithmetic progression
Resultant
20:48
Curvature
Email
Electronic mailing list
Pattern language
Right angle
Schweizerische Physikalische Gesellschaft
Cartesian coordinate system
Frame problem
Number
Physical system
00:00
well in the house I was telling you a little bit about myself and
00:05
I'm just from home and I realized that it was most lights uh what you will probably be able to find my name on the program then generally I worked only Inkscape coupling scapegoat mostly things related to rendering so composting filters at a bit of offer related stuff and today I want to talk to you you about diffusion curves and I'm not entirely sure how many people know what to do what they are so I'll try to if a gentle introduction to the idea the the search for durable and well of course in the olden days they wouldn't have
00:52
color at all so we have to stick to grayscale or even in white or gray and black or whatever and as you can see color is a big improvement can really add something to your work and S. displaced local but also gradients were introduced and became very popular I think but it probably 100 % of people here has use gradients at 1 point or another well but of course dealt with in
01:25
the normal linear or radial gradients can get a bit of a limited so at some point you may want to do some more fancy stuff for example if you want to have a gradient an image like this where you want both sides to have a constant core and that the integrated in between it can apply some traits and well kind words but to is more serious work and well
01:54
basically you have a problem you can do this manually them parties I think there might be some people that are able to do this manually at end it's more credit and then into the software so what I want I want to talk to you about the technology that makes creating this kind of shading complex shading and little bit more will be easier
02:23
this is full that these these are all across if you need to draw the previous image and the only thing need to shape if the colors on these curves in combination with and kind of blur failure also a longer determined very along the curve so there are no measures you don't need to decide to decide on resolution for the gradient match you don't do any complicated uh editing all large amounts of mesh notes or anything and you can just draw the curves apply cost to them and then nicely shaded image but this this was thus we could be clear this
03:18
was my idea and if you want to see the origin of paper is by or some and some others written in 2008 and if you go to the this site it's links in program for example and also on wiki edits and decide on their own Inkscape wiki . links to more related papers for those interested well how does diffusion curves were more or less here we have the 2 basic properties of the of curves the curve have great cost defined on both its sites so you can have a gradient of some course on 1 side of the groove and a minor gradient on the other side those causality fused all the image I'll get back to how that's done in an and you also have a blurred defined along the curve which defines how old a shop the trends is called transition is at that point of the curve so instead of just having an always having a sharp transition between 1 color and the other you can actually have a spatially varying blurred of the colors a lot along the edge and as you look at in and once these 2 things are diffuse the core image is reversed to get something like this and if you look closely you'll notice that in the the middle part of the curve the goal transition is much sharper than it the outer points and they actually could education justice system the value well is higher at the other points and lower in the middle of and they're 16 application that allows you to draw these things unfortunately it doesn't work my noble because nature did you have but it's nice to play with that if you if you have time again in run run and so how do you do this
05:37
diffusion In practice well basically is defined implicitly so if you take the diffused image and you control it with this kernel which some might know as of a plus kernel or whatever S. rep with with which would be the method discrete mathematical equivalent all the formula for those now that we noticed that kind of mathematics what if you would call that then you would get but also 0 response except for or the boundary conditions well this is a slight oversimplification because the boundary conditions well it's always tricky to take them into account properly but the basic idea is just if you call for the output image diffused image With this kernel we should get an ulcer response and you have to take care of for boundaries in a good way models of ways to solve this kind of problem and most the met more methods would be able to solve a very easy because it's well it's not a very difficult equation it's the result of a very smooth so you can use multi Multiscale algorithms or whatever however God it is in different ways To this end it's can be important to realize that in practice this is equivalent to minimizing the gradient magnitude in so this looks a bit more complicated and this
07:26
was but in practice it can be easier to handle so it's due and now again it's it's more or less in the defined implicitly and which do is you define a gradient as the image convolved with this kernel that well and you this for 1 component and the other component is the image convolve with another girl well I think edge detection and and then you will use could just square both components and add them to get some positive value and it turns out that if you work this out mathematically is minimizing this is exactly equivalent to saying that the the previous formalize there should be 0 and later on I'll show you why this is In can be important to realize how even if 1 them is that and so now
08:28
1 of the ways I think is actually 1 of the 1 of the easiest ways and also the 1 of of the best ways to solve the original equation was followed by well actually some people I know but the thymidine note that were working on this f from Austria and and the very idea is well a good smooth image so for some areas it shouldn't matter that much how large my uh kernel actually is goes well is very smooth anyway and you can make this mathematically precise to show that the that this intuition is indeed correct and so the idea was well if i have a point represented by the well but adults in this then I take here and I take the area around it I I draw the largest circle around it that doesn't include any boundaries well that should be able to just scale of my and kernel locally to that size so for example forties middle at that point I should be able to use a pretty large kernel and for the other points qualities I should be able to use them perhaps a larger and would otherwise use and it turns out then doing it this way essentially give to a very very vastly converging algorithm they I think they need something like 80 iterations or something it's incredibly fast and there is also quite easy to implement and again they implemented on GPU so I haven't been into tested myself on discovering no group but it would be relatively straightforward to uh program this on well just 4 CPU as well so if you do
10:33
all this new vitamin that all of the numerics the and then this is the output Of course this is a skill bounded to fit actually fit on the screen it said so the images about such a thousand by thousand pixels and solve megabytes so about well what what what y mean to even interested in this because while I'm mean Inkscape developers so why would I care about a decisive roster image well at point if we want to implement this Inkscape and possibly the same would be true for some other applications they you may want to have a fallback because you can't expect any renderer for example Firefox to just implement diffusion curves when you feel like it and well 1 of obvious way to if fullback would be to simply at rest right the diffusion curves to some suitable resolution of course then the problem becomes what resolution should I choose I'm this is a problem for printing for example may I need to lodge an image well 1 of the positive things I've found about work roster restaurants version is that for some and really really likes diffusion curves here because they're very very smooth an effective so small I half suspect that he could prove that it's that it that EEG dust compressed very efficiently as and in practice i've I have seen that it does compress them quite efficiently and there are some cases where you have just of trying trying or something that it is significantly larger than uh and then a mesh based solutions what about the other than that it's not that bad action so of course you
12:32
have a these results I'm hoping that you can see what I mean possibly and so if you assuming enough then of course at some point you will still get well these are the Yankees or whatever you would like to call well all because of what I mentioned these jetties
12:58
and other aliasing problems um and also because I feared to dance uh arrests arised implementation might well the 2 large from simple drawing drawings which I now think might not be too I had a look at based uh discretization of diffusion curves uh and specifically I looked as creating a triangle mesh to approximate the solution and what you can see that and subdivided triangle mesh with a very simple boundary so only 1 color and not to coarse snide aside just 1 was that was easier and I knew that I used to constrain the lonely triangulation to uh produced is result is that picture is quite a few notes and not that many triangles so it's kind of OK but that's the way course you need to certified it's been what a bit more as we get to delivered with more triangles it within things while lasting about fragment is that it gets
14:19
you that is quite easy to interpolate on the final you get a lot of linear functions which in place nearly on all sides but also inside trying we can describe it by a linear function however this means that they're secondderivative isn't as well so it is a very useful is just 0 and with could use the gradient based definition I described earlier and actually this leads to a very small over them which if you result like this I
14:54
now not again I'm hoping you can see it could actually looks nice screen look at this is in fact a then by biotic and what you may see is that it has a lot of ICT while I am not entirely sure that and diabetics export but cities partially about about actual so for example if you randomly it's a this planet at a relatively high resolution to decrease the results if you're in this as well low resolution then you get to see a lot of lines so apparently rendering 2 adjacent triangles so that's there well . com . complements of each of the the decisive complement their complementary it is quite hard to and that is a problem if you want to make a high quality have a high quality result now for the
15:53
fun part of precision like to also going a bit to go on and encoded into the the rear side of things that I've talked about mostly about diffusion and you also got this prior component of the of of the what did this method and interactional methods the yes said well you can you forgive used blur values then we blurry image you using some spatially varying the algorithm well to me this seems like a bit of a waste I mean basically you're doing more or less something like blurring so you because you're diffusing the image and then diffusing another image and using these 2 images you create blurred image so you may want to do something about it but 1st I thought
16:45
well let's stick to the original plan this but let's try to emulate for example a spatially varying blur so for example if I use effective based the discretization so trying measure I could imagine diffuse getting a triangle mesh for the cost trying measure forward their values and then try to simulated spatially varying blurred and using SET filters for example while this is an example of how you might be it might do that and it is fact optimized bits to well give this response possible using to Gaussian blurs on trying to create a holiday your interpolation between my thing 1 with radius 1 and 1 with radius of there with great rate is 1 and the radius 5 and I'm not sure he can see but with you effect you get is that you were get really pronounced boundary effects so it's it's all very nice now more radical way to change
17:51
and to handle burden would also change the original method in is to use the integration of search for a formula and it turns out that the mathematically if you in the right values for beta and gamma This is exactly equivalent to just the diffusion algorithm but it's also well known fact that you can use this to implement a spatially varying blur some idea would be to well tweak their values in such a way that essentially you get in the diffusion away from the boundary and you get spatially varying blur on the boundary or a few gotchas so I have no idea and that's basically very simple if you don't have any blur across the boundary at all they just at this step response if you have a blurred boundary you get is more gradual transition now what if I just say well at at the color boundary want to fix the court to the average of the 2 courses and I also want to fix the derivative across the boundary this actually not that hard to do in practice n it might actually it might be enough to and he's gifted same kind of quality of results so this leads me to my not the last slide and while this is a work in progress has anyone interested in this invited to contact me and as you may have seen rendering triangle mesh is problematic so each I am now now which is leaning toward stress for based Vollebæk made more what is someone they can convince me otherwise I'd be glad to and of course you integration doesn't has to be worked out but also and how to represent informal I have a few ideas on that and they are on the wiki and there very early stage and would welcome any discussion on that idea during LGM were later and of course you can 1 the while of feel shit gotta do something interesting with that and transparency while it would be nice to have also to incorporate transparency and introduce methods vary in a nice way thank you for your attention FIL mn so we take again we thank you very much for logistics and think you Davita's they did did a fantastic save and we take 1 question before we move on to the next talk if people
20:52
want to be in the meantime come into there's yeah in system for a a so as I think you go to the SCG mailing list recently about this is the right of some some originally wrote to the SPG mailing list about diffusion curves in Fiji but I don't think I will I will I did until recently spoke cryptic humans but there is little could there was a host of Italy about so so this is something we're interested bring Fiji of what I hate weird questions about syntax we questions about from and how how how well is animated no so questions about is is known to have patents on things like the AAM so basically your you're asking about the syntax animation and patterns the 1 yeah but it's syntax has some ideas and that and I think it might be best to discuss that in a number medium but yeah I I think should be possible to uh to define something for that um as to animation I know that during the people would is originally had have considered a I think also the application and supports the key framing but I never played with that so I don't know how well it works but yet there is some idea of the answer may be useful a and I guess it would be a matter of implementing it and seeing how it plays out as for patterns I wouldn't know I haven't come across any I I I I don't know if there are any other people here that might be able to tell you something about that book I would like to thank you very much