Author Topic: lazy brush - Bucket fill algorithm that is better than gimp's  (Read 4635 times)

Offline blurymind

  • Sr. Member
  • ****
  • Posts: 257
  • Karma: +2/-0
    • blog
look at the video here:
http://www.youtube.com/watch?feature=player_embedded&v=QEnvY_UQtoU#!
http://lazy-brush.com/

This  seems to the a great job at making fills. Filling up areas with colour seems to be the most time consuming thing for me with mypaint. I wish it had a straightforward way of doing it without the need of using selection tools (photoshop/gimp) or editing bucket fill shapes (inkscape, illustrator).
Something like the lazy brush- just do a few strokes and it fills it.

The research paper of it's implementation is public:
http://dcgi.felk.cvut.cz/home/sykorad/lazybrush.html

After sending an email to gmic dev, I have found out that he has implemented something similar as a new "comic fill" filther
« Last Edit: September 12, 2013, 09:09:40 pm by blurymind »
http://imovethings.blogspot.com
my website. I do 2d and 3d animation, concept art and storyboards

Offline sfepa

  • Jr. Member
  • **
  • Posts: 95
  • Karma: +0/-0
Re: lazy brush
« Reply #1 on: June 06, 2013, 04:51:08 pm »
TVPaint has very nice fill tool, but this tool making the process even faster, especially for animation.
Since MyPaint has no fill tool at all, maybe Krita developers will take note of it , hope so.

Offline blurymind

  • Sr. Member
  • ****
  • Posts: 257
  • Karma: +2/-0
    • blog
Re: lazy brush
« Reply #2 on: June 07, 2013, 03:11:33 am »
TVPaint has very nice fill tool, but this tool making the process even faster, especially for animation.
Since MyPaint has no fill tool at all, maybe Krita developers will take note of it , hope so.
krita has already addressed the issue the photoshop way- with a number of different selection tools and a bucket tool.

The point of the lazybrush tool is that it replaces all that stuff with one tool. I dont know how it does it, but it results in really really good fills with much less work, while being much simpler.
It's like the holy grail for illustrators :D as painting fills is such a TEDIOUS work
http://imovethings.blogspot.com
my website. I do 2d and 3d animation, concept art and storyboards

Offline Bollebib

  • Full Member
  • ***
  • Posts: 158
  • Karma: +4/-0
Re: lazy brush
« Reply #3 on: June 07, 2013, 10:51:53 am »
TVPaint has very nice fill tool, but this tool making the process even faster, especially for animation.
Since MyPaint has no fill tool at all, maybe Krita developers will take note of it , hope so.
krita has already addressed the issue the photoshop way- with a number of different selection tools and a bucket tool.

The point of the lazybrush tool is that it replaces all that stuff with one tool. I dont know how it does it, but it results in really really good fills with much less work, while being much simpler.
It's like the holy grail for illustrators :D as painting fills is such a TEDIOUS work
wouldn't it be like a magic wand kind of function combined with an insta-fill?

but it only fills when you activate it.
that's what it basicly could be.


imo


this implementation would make sense in the mypaint keep it simple mentality,and it makes selections without visually doing so (I think)
Could be a line mode like freehand or oval shapes= fill shapes


Offline blurymind

  • Sr. Member
  • ****
  • Posts: 257
  • Karma: +2/-0
    • blog
Re: lazy brush
« Reply #4 on: June 08, 2013, 05:36:50 pm »
it's all in the really really good fill algorithm. If only someone could figure out how it does it so well, or come up with an equally good implementation of the lazy brush.
This is quite a big selling point for artists. It's like a killer feature.  :D
It's also worth pointing out that it relies on brush strokes to figure out what to fill. Its interesting that even if the stroke goes out of the fill target slightly, lazy brush somehow knows what its supposed to fill- no need to resize the brush size!
Most impressive of all- when it fills- it doesnt leave ANY little pixel corner areas like most other software's bucket tool does.

http://www.youtube.com/watch?feature=player_embedded&v=XTUefe5HGKU#!

mypaint's biggest weakness right now is in the fills department. Its time consuming to do that work in mypaint, so what tends to happen is people jumping back and forth other software for a bucket tool, and the bucket tool in other software is not really that great- it leaves a lot of work and is still time consuming.
« Last Edit: June 08, 2013, 06:06:27 pm by blurymind »
http://imovethings.blogspot.com
my website. I do 2d and 3d animation, concept art and storyboards

Offline savageorange

  • Full Member
  • ***
  • Posts: 158
  • Karma: +9/-0
Re: lazy brush
« Reply #5 on: June 09, 2013, 02:04:03 pm »
My best guess is that it uses morphological operations (cf. GIMP filters Generic->Dilate, Erode) on the brushstrokes (and the existing lines) to figure out where a shape should be considered closed even if it's not. Getting this 'okay' is fairly easy. getting it really good is harder.
WRT the 'don't fall out' feature, that's probably a simple weighting based on what proportion of the brushstroke falls into what closed(/semi-closed) area. Just fill whichever area has more pixels of the brushstroke.

You can also use morphological operations to get Really Good Fills, too (assuming you are aiming for it to simply 'go under the lineart fully, don't leave any grey pixels or fall out the other side. Well, this also requires labelling (that's what it's called in graphics-processing lingo).. Basically we take the inner 'fill shape' we've determined and the 'lineart area' surrounding it(calculated by morphological ops, so only includes close neighbours). We 'skeletonize' the lineart (complicated morphological operation, try G'MIC if you want to see how it works -- basically reduces shapes to 1-pixel-wide skeletons) and compare with the inner fill shape to fix any small gaps (where the inner fill shape is solid within a few pixels and the skeleton is not, we should bridge the skeleton (local morphological op, probably on a 3x3 or 5x5 pixel area).
Finally, fill that skeleton. The result is a corrected fill shape.

Now we have that, we need to perform a windowed 'color to alpha' op in that area. Similar to normal 'color to alpha', but the color can vary spatially (it's considered as a weighted average of the immediate area, with colors that are too different excluded.). this is slow (approaching 'bilateral blur' levels of slow.). 'paste' the result over (the corrected fill shape filled with whatever the fill color you want is) in Normal mode. Done.

(Written 'blind', based on your description of its characteristics. Definitely could be optimized a good deal, lazybrush probably uses a lot of tricks to speed up processing.)

BTW, Rob Antoshinen did a script-fu for doing fill work automatically, on similar (less sophisticated) principles to this. It's respectable, give it a go if you haven't already.
You might also be interested in how the 'Recolorize' GMIC filter works, since it also implements a 'fill multiple colors simultaneously to contours intelligently' algorithym, with decent results.

Regarding fills in general, I think contour-fill (like 'freehand select' tool, but automatically fills the area as soon as you stop pressing(and uses nonzero fill rule rather than even/odd)) is definitely the lowest-hanging fruit WRT having *some* fill support in MyPaint. Practically the whole thing would just be telling Cairo what shape to draw. The only other thing would be to get the shape outline showing up nicely as the user continues to move.

Offline blurymind

  • Sr. Member
  • ****
  • Posts: 257
  • Karma: +2/-0
    • blog
Re: lazy brush
« Reply #6 on: June 09, 2013, 08:28:35 pm »
Hey thank you for the insightful information. :)

I forgot to mention that the developer released a research paper. I am not sure how much that helps (how in depth it goes), but am sharing it with the hope that someone comes up with a novel way to address/implement this in mypaint. Mypaint is very very good at inking at the moment. A tool like this would compliment it so well. It will also reduce the need of manual masking.
http://dcgi.felk.cvut.cz/home/sykorad/lazybrush.html

The author has a number of other really interesting research papers too, but this is the one that really got my attention.
He shared with me on youtube that they are going to also develop a standalone app for colouring, but i dont think it will be free/available for linux and it will still need to import/export from and to.

Making fills is a very time consuming and laborious task that puts off a lot of artists.It can take literally hours and hours. A tool like this would be a great silver bullet- literally replacing the need to do it in gimp/photoshop by using a combination of much more complex tools and keeping the artist inside mypaint.

Any fruit adressing this would be very much welcome at the moment. It's of course also important that it's implementation is following mypaint's design mantra- KISS (keep it simple silly )   :)

Btw can you link me to that gimp script? I can't seem to find it?

EDIT: I tried GMIC colors/recolorize on a b/w ink artwork (not a photo). I have to say that it sucks - terrible results whatever I try :D
Good for recoloring black and white photos. Terrible for filling simple lineart.
Even the bucket tool does a better job, but not great either. Not as smart as lazy brush  ::)

Speed is not a problem here. I dont mind waiting even half a minute if the results are as good as lazy brush. It's how good it is at guessing how to make a good fill. Read the research doc, it compares it to standard existing algorithms
« Last Edit: June 09, 2013, 09:57:54 pm by blurymind »
http://imovethings.blogspot.com
my website. I do 2d and 3d animation, concept art and storyboards

Offline savageorange

  • Full Member
  • ***
  • Posts: 158
  • Karma: +9/-0
Re: lazy brush
« Reply #7 on: June 10, 2013, 09:07:33 am »
Hey thank you for the insightful information. :)

I forgot to mention that the developer released a research paper. I am not sure how much that helps (how in depth it goes), but am sharing it with the hope that someone comes up with a novel way to address/implement this in mypaint. Mypaint is very very good at inking at the moment. A tool like this would compliment it so well. It will also reduce the need of manual masking.
http://dcgi.felk.cvut.cz/home/sykorad/lazybrush.html
That should be quite handy, I'll see what interpretation I can make of it.

Quote
The author has a number of other really interesting research papers too, but this is the one that really got my attention.
He shared with me on youtube that they are going to also develop a standalone app for colouring, but i dont think it will be free/available for linux and it will still need to import/export from and to.

Making fills is a very time consuming and laborious task that puts off a lot of artists.It can take literally hours and hours. A tool like this would be a great silver bullet- literally replacing the need to do it in gimp/photoshop by using a combination of much more complex tools and keeping the artist inside mypaint.

Though this sounds like a great tool, I still favor implementing 'contour fill' first, since it is both more simple and more generally applicable (for drawing, not only for "filling".)

Quote
Any fruit adressing this would be very much welcome at the moment. It's of course also important that it's implementation is following mypaint's design mantra- KISS (keep it simple silly )   :)
"Fruit"? Somehow I don't think groceries are up to the job of addressing this problem. ;)

Quote
Btw can you link me to that gimp script? I can't seem to find it?
Now that you ask, I remember it's called 'flatting tools':

http://registry.gimp.org/node/14051

Quote
EDIT: I tried GMIC colors/recolorize on a b/w ink artwork (not a photo). I have to say that it sucks - terrible results whatever I try :D
Good for recoloring black and white photos. Terrible for filling simple lineart.
Yeah, it's designed for recoloring photos, the internal parameters probably need some tweaking to work well for lineart. I'm confident you can get a result that beats the bucketfill tool by a large margin, with such tweaks. (except of course it doesn't actually 'color fill', it fills and then applies that fill as a color guide. That's also addressable by changing the code a bit.)

Overall I think that implementing whatever lazybrush-mimicing algorithm seems correct as a G'MIC filter is definitely the right way to develop this, since G'MIC is designed to support a huge range of filter-type work and will facilitate getting the filter working quickly.
After that was proven it could be worthwhile to implement in C.

Quote
Speed is not a problem here. I dont mind waiting even half a minute if the results are as good as lazy brush. It's how good it is at guessing how to make a good fill. Read the research doc, it compares it to standard existing algorithms[/color]
Half a minute seems quite fast for a high res image (12000px along one dimension is not unusual in digital art, I understood.). To be fair I haven't benchmarked though.

Offline savageorange

  • Full Member
  • ***
  • Posts: 158
  • Karma: +9/-0
Re: lazy brush
« Reply #8 on: June 10, 2013, 09:24:33 am »
Initial impressions:
* It is actually a similar procedure to the G'MIC Recolorize, using a different Energy-estimation function.
* The 'patch registration' seems useful for animating, but it's unclear what is going on there UI-wise. In each new frame, first the eyes/snout are discolored, and then they are not, but it's unclear what the user actually does to prompt this change.
* It just occurred to me to ask whether this is patented? Because it's a definite possibility.
* Reading further into the paper now; It's fascinating.

Edit:
* my theory about how they handle inaccurate strokes is correct ("it supports soft scribbles by preserving rule of majority so it is not necessary to paint precisely inside the region of interest")
* "it handles anti-aliasing by pushing color boundaries to pixels with minimal intensity not with maximal gradient (D)". Just by knowing this one thing, it's possible to significantly improve on bucketfill.
* The gap handling seems like the most challenging problem, I guess I'll find out how that's handled later.
* algorithm also seems to resemble the behaviour of GIMP's 'Foreground-select' tool in some ways (sensitivity to local features)
* They preprocess with Laplacian of Gaussian (and show the before/after)? That's neat, since it's easily testable in GMIC. But apparently they do not apply it to every image -- maybe they have a method to detect whether the image needs it.
* Minimization section -- Genius!
* Looks like the algorithm performs at its best when multiple colors are lazybrushed at once (allows the boundaries of colors to be nicest.)
* Overall the paper is marvelously clear. I expect their actual implementation improves on what is described there, but their description is definitely complete enough to implement in G'MIC.
« Last Edit: June 10, 2013, 10:13:43 am by savageorange »

Offline Bollebib

  • Full Member
  • ***
  • Posts: 158
  • Karma: +4/-0
Re: lazy brush
« Reply #9 on: June 10, 2013, 12:26:09 pm »
G'mic is used in gimp,and is currently being implemented in krita I believe.

I suppose it won't come to mypaint?



fascinating stuff anyways, would like to see how this develops

Offline blurymind

  • Sr. Member
  • ****
  • Posts: 257
  • Karma: +2/-0
    • blog
Re: lazy brush
« Reply #10 on: June 10, 2013, 01:08:21 pm »
Thank you for having interest in this. I am really happy that the research doc can aid developers in implementing it some day.
 It would be definitely awesome if we can get it in gimp, although I would have loved to have it in mypaint to eliminate the need to transfer layers between packages.
I thought that it's user simplicity (on the surface) fits mypaint perfectly.
Doing it with gmic still involves a number of steps requiring a tutorial (create new layer,paint strokes on it, filther>gmic, scroll through a giant list of filthers to find the blasted thing, set the layer/variables, apply operation). It kind of ruins the simplicity of it and hides it from the ordinary user- that is a shame.
Also lazy brush has a "background stroke" which creates empty fills that remove colour.

The workflow involves using colour brush strokes in combination with empty fill brush strokes.
 I am not sure how that fits in gmic's design.

On the graphics side, I can get you more information on this.

Here is what I know so far:
1.The author can be contacted- you can write him up an email. He responds fairly quickly. You are right it would be a good idea to check if there is a patent on this. I never liked software patents. It seems that if he released the paper and nothing in it is mentioned of a patent, it's likely not patented. Also he must be interested to see his work affect the graphics software world and see it evolve.
2. You can download the tvpaint plugin on windows and mac at the moment and try it out. Of course you will also need to download the demo (trial) version of tvpaint, which is an animation package:
http://lazy-brush.com/
TVpaint is available for linux as well, the trial version cannot export anything. The official version is too expensive for ordinary people.
He has mentioned on the tvp forum that he's porting the plugin to linux.
3. Somebody made an implementation as a plugin for photoshop, but never released it for download. I say somebody because I'm not sure if it's the original author.
http://www.youtube.com/watch?v=ZjKHHzoRYtU
4. His main interest seems to be in using it to colour animation sequences, where as ours is to use the algorithm in order to speed up colouring single images.
5. There is an official thread at tvpaint forum where the author answers questions and addresses requests:
http://www.tvpaint.com/forum/viewtopic.php?f=21&t=6901
6. Your bring out a good point that it performs best if all the colour fills are on the same layer, but it would be much better if it could generate a new layer for each colour. That way we can use each fill's alpha in mypaint to isolate it -paint inside it. If I can suggest an improvement over the original design to make it more suited for single image colouring, that would be it!  :D

In any case, I hope this gets more developers attention out there. I am not kidding when I say that it is really making a HUGE difference in workflow. If you get this in mypaint, you are going to see a huge wave of new users starting to use mypaint just to colour their art faster than what they've been using in the past.
If you hide it somewhere in a gmic list of filthers, it's less likely that many people will notice it's existence. The ones that do know about it will have a number of unnecessary steps added to their workflow every time they colour a layer.
In my opinion it should be right there on the tool's palete- next to or even replacing the blasted bucket fill tool.
« Last Edit: June 10, 2013, 01:38:54 pm by blurymind »
http://imovethings.blogspot.com
my website. I do 2d and 3d animation, concept art and storyboards

Offline savageorange

  • Full Member
  • ***
  • Posts: 158
  • Karma: +9/-0
Re: lazy brush
« Reply #11 on: June 11, 2013, 01:27:12 am »
Thank you for having interest in this. I am really happy that the research doc can aid developers in implementing it some day.
 It would be definitely awesome if we can get it in gimp, although I would have loved to have it in mypaint to eliminate the need to transfer layers between packages.
I thought that it's user simplicity (on the surface) fits mypaint perfectly.
Doing it with gmic still involves a number of steps requiring a tutorial (create new layer,paint strokes on it, filther>gmic, scroll through a giant list of filthers to find the blasted thing, set the layer/variables, apply operation). It kind of ruins the simplicity of it and hides it from the ordinary user- that is a shame.
Also lazy brush has a "background stroke" which creates empty fills that remove colour.
Well, you and I have different concerns here. I think it's good, but nontrivial, so the biggest danger comes from it not being implemented at all. Once you have an implementation, you can always convert it to another language, implement it in whatever app.. But before then it's essential to develop it in something that makes development easy. In the case of filters, that something is definitely G'MIC.
Whereas you 'want it in MyPaint', I think 'If it is not made efficiently, using G'MIC, it will not show up in *anything* else for the next 8 years, due to excessive dev difficulty. Having a implementation that works is the hard thing; after that it's just grunt work to port it to whatever language/application.'.

Also, don't forget that GMIC is a commandline utility (sure, the GIMP plugin is more famous, but the commandline interface is the real heart of things). It would be a little slower, but once the GMIC command is implemented, MyPaint would be able to get basic support by simply exporting appropriate images and then calling the GMIC command with the appropriate parameters. Only a little additional work would be required (separate the GIMP interface for the filter into a separate filter that just calls the main filter).

(of course, there is a lot of other very nice things in GMIC we could already access by this method. Anisotropic smoothing can help to make lineart neat and smooth looking, for example. Gaussian or Bilateral blurring is another wishlist item for me that could be managed with this method.)

Quote
The workflow involves using colour brush strokes in combination with empty fill brush strokes.
I did not see these 'empty fill' brush strokes mentioned in the video or paper. Do you mean the ones that specify that the fill should be left alone in that area?
They can be specified symbolically (by reserving a color to represent them). White seems an obvious choice, since colorizing with white has no effect, or if more visibility is needed we could go for magenta (#ff00ff)

Quote
Here is what I know so far:
1.The author can be contacted- you can write him up an email. He responds fairly quickly. You are right it would be a good idea to check if there is a patent on this. I never liked software patents. It seems that if he released the paper and nothing in it is mentioned of a patent, it's likely not patented. Also he must be interested to see his work affect the graphics software world and see it evolve.
Very true, of course it has also occurred that papers are released, and later, when the application gets big enough, patents are filed.
And of course software patents are exactly as nonsensical as patenting pieces of math, but unfortunately the legal system is largely unaware of this fact.
I agree he does seem like an openminded sort of guy, though. And an excellent technical writer (that paper is the most clear I've -ever- read)

Quote
2. You can download the tvpaint plugin on windows and mac at the moment and try it out. Of course you will also need to download the demo (trial) version of tvpaint, which is an animation package:
I'll have to see how well that will work on Wine.

Quote
3. Somebody made an implementation as a plugin for photoshop, but never released it for download. I say somebody because I'm not sure if it's the original author.
http://www.youtube.com/watch?v=ZjKHHzoRYtU
That is interesting if it can be used through the Photoshop plugin adaptor for GIMP. I know the adaptor is limited to certain kinds of filters but remember nothing specific.

Quote
4. His main interest seems to be in using it to colour animation sequences, where as ours is to use the algorithm in order to speed up colouring single images.

Personally I found the animation section to be very motivating, and since that kind of thing is doable in GMIC (as multiple input/output layers) I certainly hope to experiment with it.

Quote
5. There is an official thread at tvpaint forum where the author answers questions and addresses requests:
http://www.tvpaint.com/forum/viewtopic.php?f=21&t=6901
6. Your bring out a good point that it performs best if all the colour fills are on the same layer, but it would be much better if it could generate a new layer for each colour. That way we can use each fill's alpha in mypaint to isolate it -paint inside it. If I can suggest an improvement over the original design to make it more suited for single image colouring, that would be it!  :D
Well, that is about the input colors, not the output "colormap"; we can output however we want to (it's pretty basic stuff to separate a layer containing N hard-edged (no AA) color areas into N separate layers, and as far as I understand the output of the LazyBrush algo is hard-edged.). When implementing this in GMIC it would be easy to make this an option.




Quote
In any case, I hope this gets more developers attention out there. I am not kidding when I say that it is really making a HUGE difference in workflow. If you get this in mypaint, you are going to see a huge wave of new users starting to use mypaint just to colour their art faster than what they've been using in the past.
If you hide it somewhere in a gmic list of filthers, it's less likely that many people will notice it's existence. The ones that do know about it will have a number of unnecessary steps added to their workflow every time they colour a layer.
Like I said, let them suffer in the meantime. The important thing is first to have it working at all, *then* we can consider having it in the most convenient place.

Quote
In my opinion it should be right there on the tool's palete- next to or even replacing the blasted bucket fill tool.
Bucket fill tool is bad at quality, but it's good at getting results fast.Being able to quickly, approximately try out different fill colours is something I also appreciate. and it's acceptable for that if lines are not too complex or too broken.

Offline Bollebib

  • Full Member
  • ***
  • Posts: 158
  • Karma: +4/-0
Re: lazy brush
« Reply #12 on: June 11, 2013, 10:38:17 am »
bucket tools should imo be redesigned somehow


I'm thinking, fill but after the fact still be able to interactively change the "magic wand factor" via a slider so you can control the spread more effectively. Also an extra close gap slider might help. (but I'm just thinking about it ideally and as a noncoder)






@savageorange it's great that once Gmic is implemented mypaint could get it too,with less effort.

Looking forward to mypaint's and other programs' features ^^

And yes I'm excited that they want to make it good for animations,I need that XD

Offline blurymind

  • Sr. Member
  • ****
  • Posts: 257
  • Karma: +2/-0
    • blog
Re: lazy brush
« Reply #13 on: June 11, 2013, 01:52:49 pm »
savageorange> yeah, you're right. Sounds like a good strategy to get it implemented that way.

Now, do we need to get in touch with the gmic dev(s)? Whats the next step. Who do we need to pitch it to?  :P

You seem to know what to do with the code.

It would be great to get mypaint to talk to gmic. Sure, its not a strictly painterly approach to use filters, but that doesnt mean that they are not necessary in digital art.
« Last Edit: June 11, 2013, 01:54:32 pm by blurymind »
http://imovethings.blogspot.com
my website. I do 2d and 3d animation, concept art and storyboards

Offline savageorange

  • Full Member
  • ***
  • Posts: 158
  • Karma: +9/-0
Re: lazy brush
« Reply #14 on: June 11, 2013, 04:03:21 pm »
Quote from: Bollebib
fill but after the fact still be able to interactively change the "magic wand factor" via a slider so you can control the spread more effectively. Also an extra close gap slider might help.
The first option is possible -- since it's essentially a magic-wand tool anyway, it just has an extra step of actually filling.
However that step of filling is relatively slow -- you might not find the performance acceptable unless you have a beefy machine. Certainly on my machine, semi-realtime performance (eg 5 updates / second) would be quite difficult to achieve.

The second option is also possible (but currently too abstract). You have to think about WHY there is that gap -- it's because there is a ridge of pixels that are different enough from the seed color that the threshold disqualifies them from filling. Then, what would eliminate that ridge. If it's uniform in thickness, then dilation of the paint mask would work. (however, it usually ISN'T uniform in thickness, rather, it's thicker on angles and thinner on horizontals/verticals. So in this common case you would overrun the h/v lines). You could perform something like GMIC Anisotropic smoothing, which smooths things with proper respect to angling -- this is markedly slow and it often would get closer-but-not-close-enough to the line.

You could make the fill threshold dependent on local differences, rather than global differences, so that it has a local rather than global sense of 'what is an edge, what is fillable'. But at that point we have changed the algorithm entirely, towards something more like LazyBrush.

Well, I'm just rambling now, but the point is to illustrate that bucketfill is not bad because of laziness, it's bad because we haven't found anything reliably better at what it does do, yet.
On the flip side, it's good because it's stupid. Any algorithm that's stupid enough for the layperson to understand is more useful than a smarter algorithm that they don't understand. Otherwise you just end up stabbing buttons and twiddling knobs screaming 'work damn you!'

So there are two fronts of attack there: The algorithm should be simple (so the user understands how to make it work reliably). And the algorithm should perform it's job well. These are seriously hard to reconcile, and for that reason we need to avoid sliders labelled vague things like 'close gap'. Instead the user needs to understand what it means to close the gap, and if that is too hard we'd better not have the slider.

Ehm, tangent. I just find that stuff interesting.

savageorange> yeah, you're right. Sounds like a good strategy to get it implemented that way.

Now, do we need to get in touch with the gmic dev(s)? Whats the next step. Who do we need to pitch it to?  :P
I'm considering implementing this filter myself, but don't want to commit currently as I'm time-poor. As well as other kinds of poor.

FYI, implementing a filter in G'MIC doesn't involve changing G'MIC itself. Rather, G'MIC defines a language in which filters can be written (no recompilation or whatever, just edit a file -- you could think of it as a script file.). Most filters are written in this language, with only the core ones written in C++. So, the GMIC author doesn't have to be involved (although if he did decide it was worth his time to implement, he could probably get something decent going within a few days. He knows the language (and filter design) inside-out :)

Well, what I *am* willing to commit to is posting the filter info and my conclusions over on the GMIC flickr discussion area. A few smart guys including the author hang out there, they would be able to help me clarify my ideas about this filter, how hard it might be to code, etc.

Quote
You seem to know what to do with the code.

It would be great to get mypaint to talk to gmic. Sure, its not a strictly painterly approach to use filters, but that doesnt mean that they are not necessary in digital art.

As I was writing that I was thinking that it's a good fit for filters without parameters (so LazyBrush is ideal; blur with a preset radius, unsharp mask with fixed settings..Dilate/Erode to crudely thicken/thin lines..). To me that preserves MyPaint's sense of 'not trying to be a manipulation program' -- having access to basic filtering, but needing to go elsewhere for more controlled effects, since many factors that MyPaint doesn't want to deal with enter into it (all the variations of selection-masking, filter parameters, flexible selection of multiple input layers...)


 

Sponsor -> Günstige Soirée Robes de Cérémonie