This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Interactions between Krita and G'MIC (filter collection) ?

Tags: None
(comma "," separated)
dtschump
Registered Member
Posts
2
Karma
0
OS
Hi all,

I'm the developer of G'MIC (http://gmic.sourceforge.net), an image processing framework (done in C++), which basically defines a set of various image processing filters/effects/functions usable out-of-the-box for third-parties applications. This is a quite recent project (2 years).
G'MIC can be easily embedded in any free software application since it is distributed as an external library (GPL-licensed).

I was wondering if one would be interested to see some interactions between Krita and G'MIC. For informations, I've already coded a G'MIC plug-in for GIMP that provides some "interesting" (IMHO) features to GIMP, for image denoising (using my former GREYCstoration algorithm, which was already included in Krita once a time by Boudewijn), 3d rendering, color management, and so on... (there are about 180 filters available in the plug-in).
Below is a screenshot of the plug-in in action :
Image

I was wondering how difficult it would be to allow interactions between Krita and G'MIC. G'MIC is already able to manage 8/16/32 bits/channel images, can deal with multiple inputs and outputs (as layers for instance). It is a quite complete image processing framework (more than 500 commands already defined), has its own scripting language interpreter, but still is relatively lightweight (the .so library file is about 3Mb).
The G'MIC API is very easy to use, so the library should be quite easy to integrate or to use as a Krita extension if possible (here is an example of library use : http://gmic.cvs.sourceforge.net/viewvc/gmic/gmic/src/gmic_use_lib.cpp?view=markup). All is done in C++, so it seems to fit well with the Krita architecture.

I personally see some interesting uses of G'MIC in Krita. First, contrary to GIMP, Krita allows the management of 16 bits/image easily, so any G'MIC filter could be run with this color precision (including denoising). I know that Krita is turning more and more to Artistic purposes (painting and sketching), and there could be some interesting filters in G'MIC for Krita users (I think more precisely about G'MIC filters like "B&W Sketch" http://www.flickr.com/groups/gmic/discuss/72157624425214456/, "Painting" http://www.flickr.com/groups/gmic/discuss/72157624397897094/, ..)
There are filters to do frequency manipulations (FFT), automatic image alignment and morphing (by estimating displacement fields), deconvolution, tone mapping, etc..

So, my question is : is it a framework you could be interested in ?

Regards,

David.
User avatar
halla
KDE Developer
Posts
5092
Karma
20
OS
Hi David,

Cool stuff! You're right that it would be interesting to have a plugin in Krita that exposes the functionality of g'mic, making it possible for the users to take advantage of all these cool tools. I do think that it would have to be an extension, hosted on extensions.krita.org, just like the original cimg filter is because we already package with Krita a technology that makes it easy to add lots of different filters, namely OpenShiva.
User avatar
cyrille
Moderator
Posts
110
Karma
1
I think it would be a really nice idea.

Compared to the gimp plugin, ideally, instead of using a list view inside the filter configuration, I would go to create a krita filter for each g'mic filter (like it is already done for shiva filter, and use to be done for the script filter).


Cyrille Berger
Krita developer and Calligra release coordinator
blog
dtschump
Registered Member
Posts
2
Karma
0
OS
Thanks Boudewijn and Cyrille,
that sounds really interesting.

For me the difficulty is to design a 'template'Krita extension, where the only things done are : First, getting the image data from Krita, second, calling the G'MIC interpreter, and finally putting the image data back to Krita. Anyway, this shouldn't be so hard to do, since you already did the image conversion job in your former CImg extension (the image data are aligned the same way in G'MIC).

Having this template, we would just have to modify the string parameter when calling the G'MIC interpreter to get the desired effect, like, in C++ :

gmic("-smooth 20,0.7,0.7"); // to call the GREYCstoration algorithm.

or

gmic("-sketchbw 2,0,90,100"); // to call the B&W sketch algorithm.

or

gmic("-repeat 3 --r[-1] 80%,80%,1,3,2 -done -r [0],[0],1,3,0,0,0.5,0.5 -compose_edges 3"); // to get any custom G'MIC effect we want :)

It would be very flexible. For instance the last call will generate this kind of image :
Image
[/img]

Would you be OK to guide me through the design of such an 'atomic' extension ?

Regards,

David.
User avatar
halla
KDE Developer
Posts
5092
Karma
20
OS
Aw, I completely forgot this forum discussion... The problem with forums is that posts don't show up in my mail client :-). Am I correct in thinking that g'mic only supports 8 bit RGBA data? I'll create a template plugin and post a link later today.
User avatar
Deevad
Registered Member
Posts
451
Karma
1
OS
I use very often Gmic in Gimp. The number of features are just amazing, and keep discover settings with cool effect. Good job. For sure Gmic have the best filters I've ever tested, and so it would be a major improvement for Krita to got access to it.


User avatar
halla
KDE Developer
Posts
5092
Karma
20
OS
At http://www.valdyas.org/~boud/gmic.tgz has a (compiling) bare-bones plugin. It has a dialog where a string can be entered and a bit of code that shows how to access the layer data. It doesn't do anything The rest is up to someone else :-).

Unpack the plugin in krita/plugins/extensions and apply this patch to enable compilation:
Code: Select all
diff --git a/krita/plugins/extensions/CMakeLists.txt b/krita/plugins/extensions/CMakeLists.txt
index 8d00486..6743fae 100644
--- a/krita/plugins/extensions/CMakeLists.txt
+++ b/krita/plugins/extensions/CMakeLists.txt
@@ -1,3 +1,4 @@
+add_subdirectory( gmic )
 add_subdirectory( bigbrother )
 add_subdirectory( backgrounds )
 add_subdirectory( imagesplit )
lines 1-9/9 (END)
User avatar
LukasT.dev
KDE Developer
Posts
209
Karma
1
OS
Hi,

I started to work on this and first basic thing is working: I can filter Krita layer, check
https://mail.kde.org/pipermail/kimagesh ... 11787.html


Daylight is coming...
Krita developer | http://lukast.mediablog.sk/log
BaRe
Registered Member
Posts
9
Karma
0
hi first thank you for this awesome job to put G'MIC filters into krita! :-D

i don't know if its the right section but i tried the latest windows build 2.7.8.27 and when i try to use a gmic filter, it krashes

i pur a video screen: https://drive.google.com/file/d/0B8zoN2 ... sp=sharing


i assume it's because windows release are not so stable, any idea?

sorry for my not so good english.


slangkamp
KDE Developer
Posts
607
Karma
4
It was disabled on Windows recently. The compiler appears to have a problem with gmic on Windows.
BaRe
Registered Member
Posts
9
Karma
0
ok thank you for this reply.


User avatar
LukasT.dev
KDE Developer
Posts
209
Karma
1
OS
We have G'mic plug-in in Krita in quite a good state these days. I plan to spend 5 days working on G'mic to improve it further.
But I need some feedback from artists, what is the most important for you right now?

How to test G'mic in Krita:
You need Krita 2.8. or better Krita 2.9 beta, go to Layer -> Apply G'Mic action

Here is my TODO list, list of broken things:
http://quickgit.kde.org/?p=calligra.git ... mic%2FTODO

Please pick something from it or feel free to request something that I forgot to include:
e.g. interactive colorize is something that was added recently to G'Mic and it is not integrated in Krita's version

Please speak up now!


Daylight is coming...
Krita developer | http://lukast.mediablog.sk/log
User avatar
Deevad
Registered Member
Posts
451
Karma
1
OS
If I can't pick Colorize[interactive] I would be interrested in :
* sometimes preview blocks the UI because it takes too long => progress bar
* gmic is located under Layer -> Apply Gmic action, it supposed to be in Filters


User avatar
Artmessiah
Registered Member
Posts
143
Karma
0
OS
- separate included gmic code to stand-alone library and link dynamically

- support for zooming/panning preview

- gmic is located under Layer -> Apply Gmic action, it supposed to be in Filters

Patiently waiting for interactive color to be added soon :)


User avatar
scottpetrovic
Registered Member
Posts
520
Karma
4
OS
in no particular order. Not sure how much work each ticket item is

* gmic is located under Layer -> Apply Gmic action, it supposed to be in Filters
* support for zooming/panning preview
* implement progress bar for filters and preview
* preview area needs border and scrollbars
* sometimes preview blocks the UI because it takes too long => progress bar
* resizing the preview has to work (Small, Tiny, Large, ...)

Good luck Lukas!


Bookmarks



Who is online

Registered users: abc72656, Bing [Bot], Google [Bot], lockheed, Sogou [Bot], Yahoo [Bot]