Hello there,
I’m really happy to announce the release of a new major version (numbered 2.0.0) of the G’MIC image processing framework. As always, I encourage upgrading to this new version as soon as possible .
This version got major changes and improvements and is not backward-compatible with the previous branch (1.7.x). From now on, addition of new filters and bug fixes will be done only for this new branch 2.x.x.
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 2.0.0, as compared to the previous stable version 1.7.9.
Enjoy !
New features:
- [global] G’MIC has new Qt-based interface for the plug-in. This plug-in interface has now its own API, to ease its integration in other host software interested by the G’MIC capabilities. Already work as a GIMP plug-in, and as a stand-alone application, but more hosts should be considered in the future (with a priority for Krita).
This is a tremendous contribution from my colleague, researcher Sébastien Fourey working at the GREYC laboratory in Caen.
- [gimp] New filter Deformations / Conformal maps allows to deform images with conformal maps, i.e. warpings that preserve angles locally.
- [gimp] New filter Black & White / Colorize lineart [smart coloring] proposes a new algorithm to help colorizing lineart images. It uses smart techniques to analyze the geometry of the strokes to close holes in contours before the region filling process. David Revoy wrote an article about it : Tips for using Smart-Coloring GMIC filter - David Revoy
- [gimp] New filter Artistic / Illustration look, is a conversion of Sébastien Guyader’s .scm script into a G’MIC filter (as described in this thread: Highlight Bloom and Photoillustration Look - #65 by sguyader).
- [gimp] New filter Various / Sample image proposes several free-of-use reference images to play with.
- [gimp] New filter Colors / Color mask [interactive] that proposes a smart interactive tool to create color/luminosity masks from images, based on a simple machine learning algorithm.
- [gimp] New filter Light & Shadows / Pop shadows that implements the Easy Tone Mapping algoithm proposed by @Morgan_Hardwood.
- [core/gimp] New command
-blur_bloom
and associated GIMP filter Degradations / Blur [bloom] that creates a glow effect on your images, using the method of Masaki Kawase:2004 (same as the Bloom plug-in in Natron).
- [core] 3d renderer in G’MIC is now able to map bumped textures on 3d triangles/quadrangles, when illuminated wit Phong-shading.
-
[core] New native command
-for
allows to create loops as-for condition... -done
(with the condition being evaulated before the first iteration of the loop, contrary to a-do...-while condition
block). -
[core] Unary
operator%
added to math parser, to compute percentage of expressions (e.g.x=10;(100-10)%
). -
[core] Function
bool()
added to math parser, to cast a value into a boolean (0
or1
). -
[core] Function
resize(#ind,w,h,d,s,interp,boundaries)
in math parser allows a math expression to resize an image of the image list. This is a flexible way for a complex expression to manage variable length buffer/vectors (such as value stacks for instance). -
[core] Function
end(expr)
in math parser allows to insert termination code into a math expression, useful for instance when multi-threaded evaluation is performed on an image. -
[core] Function
_(args)
in math parser added. It does nothing else than ignoring its arguments. Useful for debugging expressions. -
[stdlib] Add new blending modes
shapemin
,shapemin0
,shapemax
andshapemax0
that computes the min and max values of the base layer over continuous regions in the top layer. -
[stdlib] Add new blending modes
shapeareamax
,shapeareamax0
,shapeareamin
andshapeareamin0
that keep the most frequent color of the base layer over continuous regions in the top layer. -
[stdlib] New commands
-rgb2hcy
andhcy2rgb
converts color from/to RGB to/from HCY color spaces. -
[stdlib] New command
-apply_matrix3d
applies a 3x3 matrix to a 3d vector object. -
[stdlib] New command
-extract_region
extracts all pixels from selected images according to the labels of another image. -
[stdlib] New commands
-display_parallel
and-display_parallel0
(eq. to-dp
and-dp0
) displays multiple images on different interactive windows (-dp0
does it without value normalization). -
[stdlib] New command
-x_connect4
implements the famous Connect-Four game. Available also in the plug-in, in filter Various / Games & Demos.
-
[community] G’MIC has now its Twitter feed, at https://twitter.com/gmic_ip.
Improvements / Changes:
- [other] Compilation of G’MIC on Windows 64bits now uses a recent version of g++ (6.2.0), which makes a huge difference in performance for some filters (e.g. x60 faster for image deformation with conformal maps).
- [core] Added OpenMP parallelization in function used to display list of images, and compute image statistics.
- [core] Added support for 64bits-valued .tiff files (including integer and float formats).
- [core] Native commands
-resize
,-crop
,-warp
,-shift
-rotate
and-map
now accept aboundary_condition
argument that can be=3
(for mirrored boundaries). This includes pixel accessors in the math parser and most custom commands using boundary condition arguments as well. - [core] Command
-shift
has a new parameterinterpolation = { 0 =nearest-neighbor | 1 = linear }
. - [core] Command
-boxfilter
now accepts an additionalnb_iter
argument which allows to run the filter multiple times without using an explicit loop (is really useful and runs significantly faster). - [core] Math parser now accepts multiple
init()
calls in a single expression. - [core] Math parser now accepts multiple consecutive separator
;
inside an expression body. - [core] Bitwise operators
and
,or
andxor
in math parser now use signed values for computation. - [core] Command
-flood
now supports high-connectivity when applied on 3d volumetric images, and requires less memory to run. - [core] Command shorcuts for matrix multiplication and divisions are now
-m*
and-m/
instead of-**
and-//
. - [core] Matrix multiplication in math parser cannot be done with operator
**
anymore (reserved for multiplying complex numbers). - [stdlib] Comment tags
#@gmic
,#@gimp
and#@gmicol
used in the .gmic command files have been replaced respectively by#@cli
,#@gui
and#@web
. - [stdlib] Command
-map_clut
now accepts the clut name directly as a parameter. - [stdlib] Command ‘-sample’ now accepts multiple image names as parameters.
- [gimp] Preview warning due to changed zoom factor now appear as a small icon under the preview window, rather than a note in the filter parameters.
- [gimp] The plug-in for GIMP
gmic_gimp
now registers itself in a way that several version numbers of the plug-in can coexist. - [gimp] New CLUTs to emulate Fuji films have been added, kindly provided by Stuart Sowerby.
- [gimp] Non-interactive call of the plug-in has now an additional ‘output-mode’ parameter.
- [web] Our online web service G’MIC Online has a new beta version, that should work better on mobile devices. G’MICol beta is developed by Christophe Couronne, a member of the GREYC laboratory in Caen.
Bug fixes:
-
[core] Fix argument parsing for command
-ellipse
, so that specifying ellipse radii with percentages do not disable outlined drawing. -
[core] Fix argument parsing for command
-window
, so that specifying-window
without window indice always displays the image in the window#0
(was in last window indice invoked before). -
[core] Fix 3d rendering bug that may happen with close 3d objects having quadrangles.
-
And as usual, a lot of small bug fixes !