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 tox
). Now, definingconst
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 argumentcolor
can be a scalar or a vector). -
New functions
break()
andcontinue()
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 choicesDuplicate top
,Duplicate left
,Duplicate bottom
andDuplicate right
. -
[gimp] Two environment variables
preview_width
andpreview_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 !