Release of G'MIC 1.7.8

Hello there,

I’m happy to announce the release of a new version (numbered 1.7.8) of the G’MIC image processing framework. As always, I encourage upgrading to this new version as soon as possible :innocent:.
In particular, note that this version is not backward-compatible with the previous one (1.7.7), meaning that all new filters added here and new future filter updates will be only available for versions >=1.7.8.

What is G’MIC?

G’MIC 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.

The following is the full Changelog of the version 1.7.8, as compared to the previous stable version 1.7.7.
Enjoy !

New features:

  • [core] A lot of new features and improvements in the embedded math evaluator of G’MIC:

    • Various optimizations and bug fixes, e.g to simplify compiled code when particular cases are detected (e.g. 1*x+0*y reduces to x). Now, defining const scalar variables is also possible for help the JIT optimizing some expressions.

    • New command -math_lib returns a string containing useful macros for the math parser (e.g. draw_line(), draw_circle(), draw_triangle(), hsv2rgb() …).

    • New function unref(variables_names) un-references already defined variables. It helps creating macro functions where arguments can be of any type (e.g. an argument color can be a scalar or a vector).

    • New functions break() and continue() can be used to break / continue the current code bloc (e.g. loops), just as in the C language.

    • Function print() can take multiple arguments now to print their values on the console.

    • Defining user macros becomes a lot more flexible. Macros with the same name but different number of parameters can be overloaded. Macro argument substitution has been improved. For instance, this kind of expressions is now possible in the math parser:

seq(size,x,fnx) = ( V = vector#size(); for (#x = 0, x<size, ++x, V[x] = fnx); V );
A = seq(10,k,(k+1)^2);  # will set A = [ 1,4,9,16,25,36,49,64,81,100 ];
  • [stdlib] New command -input_sample (eq. to -is) returns a sample image that can be used for quick tests with G’MIC operators and pipelines (e.g: $ gmic -is lena).

  • [stdlib] New command -display_quiver (eq. to -dq) renders a field of 2d arrows from an image of 2d vectors (similar to -display_tensors but for displaying 2d vectors).

  • [gimp] New filter Rendering / Barnsley fern is a GIMP plug-in interface to the command -shape_fern.

  • [gimp] New filter Patterns / Crystal background renders multiple colored polygons to create cool geometric patterns.

Improvements:

  • [core] Command -polygon has been recoded from scratch, and now uses multi-threading (through OpenMP) to rasterize a polygon on an image.

  • [core] Add optimizations for median computation from a set of 5,7,9 or 13 values.

  • [stdlib] Command -display_tensor has been recoded from scratch, using the new features of the math parser. The command is faster to render, allows tensors to have an outline and to overlap.

  • [stdlib] Add optional [guide] argument to command -nlmeans (similar to the guide argument of commands -bilateral and -guided).

  • [gimp] Improvement of filters Custom code, with optional debug information displayed on the preview window. It also supports multi-layers as input now.

  • [gimp] New “Duplicate” options for parameter Preview type. Now the user has additional choices Duplicate top, Duplicate left, Duplicate bottom and Duplicate right.

  • [gimp] Two environment variables preview_width and preview_height are now passed from G’MIC to the G’MIC interpreter. It should ease the rendering of good-sized preview by filters that change the image size or that work with several input layers.

Bug fixes:

  • [core] Commands -dilate and -erode return correct images when applied with an “empty” mask (where all mask values are set to zero).

  • …and many other small bug fixes !

3 Likes

Is there a plan to set up auto filter updates from git? Sometimes after adding a new filter I start to wonder if I made a mistake…

It’s really not a big problem of course, the updates have been fairly frequent anyway :slight_smile: and nothing is urgent.
(I have a new test filter waiting just now - another type of 2x/4x upscale)

Hi. Photoshop has this “plastic wrap” texture effect filter. Does G’mic have something similar?

Can you post s before/after screen capture of the filter?

Yes, clearly I have to find a way to trigger the update when the gmic-community repository has been updated. I’ll think about this :slight_smile:

Cool, I hope there’s a nice way but won’t shed any tears if it can’t be done :smiley:

Filter now in Testing > Garagecoder > Upscale [box]

Following on from Comparison gallery of image scaling algorithms - Wikipedia

Output is like a “soft” bicubic and with less “stair-step”, maybe useful for some. What’s nice is it’s a trivial calculation so reasonably fast.

1 Like

Plastic wrap filter.

Yes, filter Relief light gives something similar.

I’m no coder, but I’m like a spy hahaha wanna get all “KFC’s” secrets and share it with the Gimp and G’mic teams to make them better! Can only provide suggestions, ideas and concepts so far… but it’s the least I can do. You guys are awesome and inspiring!

“Upscale [box]” updated, I thought of a simple way to make the output crisper which isn’t much slower at all. The only real downside is a slight increase in edge oversharpening, if I hear any complaints I can make it optional…

Edit: probably be a while before it’s available - awaiting filter sync :slight_smile:

I’ll update it (manually) soon.
Tomorrow, I’ll try set up a way to automatize updates, every hour as it was the case before.

Cool, sorry for so many updates lately - been “dumping” stuff that’s been in stock for a while :smiley:

Don’t worry, I’m actually always happy when I see people help developing the project :slight_smile:

Two little news concerning the project:

  1. Filter updates will be pushed to the G’MIC server on every hour, meaning that if someone contributes to the gmic-community repository and add a new filter in it, it should be available at most one hour later.

  2. I’ve built new pre-release packages for upcoming version (1.7.8), which are downloaded by default from the G’MIC website. The current work on the pre-releases is mainly focused on optimizations and bug reports, so it’s good to get user feedbacks as soon as possible when something is wrong.

1 Like

:smiley:
Good stuff!

That’s awesome!

@David_Tschumperle

In G’MIC 1.7.8 pre, there is an error with the “Smooth [patch-pca]” filter:

In G’MIC 1.7.7 this filter works correct.

(windows 64)

Could you try with the version I’ve posted today ?
This filter works for me right now.
Thanks :slight_smile:

David,

That is correct, thank you. Next time I will first download the latest file. Excuse me for bothering you.