Release of G'MIC 2.1.5

This is the changelog for the releases of the 2.1.x branch of the G’MIC software.
Latest new minor version is numbered 2.1.5.

What is G’MIC?

G’MIC (GREYC’s Magic for Image Computing) is a full-featured open-source framework for image processing. It provides several different user interfaces to convert/manipulate/filter/visualize generic image datasets, ranging from 1d scalar signals to 3d+t sequences of multi-spectral volumetric images, thus including 2d color images.

Enjoy !

What’s new in version 2.1.5?


  • [core] Another speed up for the lookup of native commands in the core G’MIC interpreter.
  • [core] New command shortcut fi stands for endif in G’MIC scripts.
  • [stdlib] All commands to convert between color representations have been rewritten as custom commands in the stdlib instead of native ones. This allows to deal with a user’s own color conversion formula if needed, just by overloading the corresponding color conversion command.
  • [gmic-qt] A filter in the tree can now be selected using right/down arrow + ENTER.
  • [packages] We now provide .deb packages for the Debian-9 “Stretch” and Ubuntu-17.10 “Artful” distros on the Download page.

Bug fixes:

  • [gmic-qt] Fix small bug with button() parameter for a filter. Button state was not released as expected.
  • and again, a few minor bug fixes !

What’s new in version 2.1.3?

New features:

  • New syntax $$name or $${name} allowed, substituted by the G’MIC script code of the custom command name. This allows to save and restore the definition of a command in/from a variable for instance.

  • Hanoi tower game has been added, with command x_hanoi. The game now appears in the main demos menu.


Changes / Improvements:

  • Syntax extension: Invoking a command with a double hyphen --command can be now equivalently written with a +, as in +command.

  • Math parser function date(attr,_filename) now accepts a vector-valued argument attr, to retrieve multiple date info at the same time (e.g. day/month/year).

What’s new in version 2.1.1?

Bug fixes:

  • Fix critical bug in old GTK-version of the plug-in for GIMP, that was preventing filters to be applied.

What’s new in version 2.1.0?

New features:

  • New command -spherize and its associated plug-in filter Deformations / Spherize.

  • Major change in G’MIC syntax : invoking commands without specifying the single hyphen is now possible when there is no ambiguity on the syntax. For instance, the following command definition is now accepted :
foo : 
  sp lena                        # Eq. to '-sp lena'
  if {im>64}                     # Eq. to '-if {im>64}'
    blur 10                      # Eq. to '-blur 10`
    mirror x                     # Eq. to '-mirror x`
  endif                          # Eq. to '-endif`

This should help making G’MIC scripts more readable, as it avoids a lot of hyphens to be written. Backward compatibility with previous G’MIC scripts is preserved.

  • New demo added in G’MIC demo menu (command x_starfield) :


Improvements / changes:

  • The G’MIC script parser has been partially recoded to manage the important changes in G’MIC syntax (single hyphens are now optional). Particularly, the command lookup procedure is really faster (performs in O(log2(N)) instead of O(N)), meaning G’MIC scripts now execute slightly faster, while memory footprint has been reduced.

  • And as usual, a lot of small bugfixes ! :wink:

After the other thread mentioning linear vs sRGB gamma it occurs that actually some possibilities are missing for channel selection (i.e. the -ac command).

We can already choose linear RGB, but what about linear YCbCr? I believe G’MIC -rgb2ycbcr is “Y’CbCr from R’G’B’”, in other words luma is still gamma compressed. It’s not commutative either (sRGB → RGB must be done after RGB → Y’CbCr). I haven’t considered other transforms, but for things such as HSV perhaps it’s less important because it’s commutative then.

@garagecoder See Luma (video) - Wikipedia. I realize that the primaries are different (due to illuminant choice?) but notice which formula has primes and which doesn’t.

Hmm I must be missing something, I don’t understand what you’re getting at. For reference here’s what seemed to be the conversion in G’MIC when I checked a long time ago:

I read that to mean Y’ is gamma compressed. I probably have this all wrong, but since I don’t wish to upset anyone I think I’ll steer clear of this subject from now on :slight_smile:
Considering the formula is intended for old phospor TVs perhaps it’s nonsense to worry about it anyway…

Don’t worry too much about those people. This forum should be for everyone! Sorry @garagecoder, what I meant was that the wiki entry states that Y = luminance and Y’ = luma. My assumption has always been that rgb2ycbcr meant RGB → Y’CbCr with Y’ as luma and that linear YCbCr would just be Y as luminance. But I might be wrong about that… :blush:

Ah! OK I think I know what you mean, I was a bit loose with the terms (naughty!). Anyway, what I really don’t want to do is waste people’s time with wrong suggestions… there’s enough good stuff to be done already :smile:

1 Like

I’ve just rewritten all native color conversion operators as custom commands, so now every color conversion command is a part of the G’MIC stdlib. This should allow a user to easily deal with its own color conversion command if needed (he’d just have to overload the command, e.g. srgb2rgb).
Not sure how useful is that but at least it seems to work.


Thanks for the support in the other thread! Would be great if rgb2lch had an illuminant parameter like for rgb2lab.

Done, committed in stdlib.

  • 2017/11/08: Final release!

Definitely like the new superpixel preset, David. Would like to add a feature to it for a transparent border though. I ran superpixel, just selected the border (removed everything else) then flatten to create a mask which I used to re-colorize the pixels (leaving a transparent border). I then used the Morphological preset to clean up the borders (shrink then expand). I then used Local Orientation for the relief effect. :slight_smile:

I’ve just pushed a new update of this filter that allows this.

1 Like

Exactly what I wanted, David; thanks a heap. This now allows me to do some additional cleaning and grout optional grout application. :slight_smile:

2D to 3D vectores/flat image
It is possible something like this?

You mean providing two layers flat + normals and get the bottom image ? If so, yes, this should be possible to do that.
If only the flat layer is expected (no normal maps), then probably no way :slight_smile:

If only the flat layer is expected (no normal maps), then probably no way :slight_smile:

normals layer is similar to “extruder”

I really doubt so. It gives the local 3d orientation of each pixel, this is really far from being similar to extruder, as it the latter would render only flat planes.