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 .

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.

G’MIC main project page : http://gmic.eu

G’MIC plug-in for GIMP : http://gmic.eu/gimp.shtml

G’MIC web service : https://gmicol.greyc.fr/

G’MIC language tutorial pages : http://gmic.eu/tutorial/basics.shtml

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).

[stdlib] New command -shape_fern renders the Barnsley fern fractal with an arbitrary angle.

[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: