This is the changelog for the release of the 2.8.x version of the G’MIC software.
It lists all new features and changes done since the latest version 2.7.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.
- G’MIC main project page : https://gmic.eu
- G’MIC download : https://gmic.eu/download.shtml
- G’MIC web service : https://gmicol.greyc.fr/
- G’MIC language tutorial pages : https://gmic.eu/tutorial/basics.shtml
- Support G’MIC development : G'MIC — Association LILA
What’s new in version 2.8?
New features:
-
[gmic-qt-284] New filter Silhouettes / Others / Dragon Curve draws the Dragon Curve on the images. New command
shape_dragon
has been also added for this purpose.
-
[gmic-qt-282] New filter Colors / Transfer Colors [PCA] linearly transfers colors from one image to another, by transferring mean and covariance matrix (associated command
transfer_pca
). It can be also used in our image stylization filter Artistic / Stylize. Thanks to @luluxXX for the great idea!
- [gmic-qt-282] New filter Details / Sharpen [Multiscale] that uses a multiscale image decomposition approach to bring out the details in your image.
- [stdlib-282] New command
transfer_pca
that transfer covariance matrix and average vector from one vector-valued image to another one.
-
[stdlib-282] New command
palette
proposes 34 pre-defined color palettes, with 256 entries each, that can be used for visualization purposes (borrowed from Beautiful colormaps for oceanography: cmocean — cmocean 0.02 documentation and Palette List). -
[gmic-qt-282] New filter Rendering / Newton Fractal implements Newton Fractals, with a lot of different adjustable parameters.
-
[gmic-qt-282] New filter Repair / Unpurple removes purple fringing from photographs. This is a port of GitHub - mjambon/purple-fringe: Removal of purple fringing from digital photos by new G’MIC contributor, Stanislav Paskalev.
-
[core-281] Support for entry points in
.gmic
script files, to make them potentially executable (with Shebang). For instance, on Unix, you can make an executable.gmic
script file, like this :
#!/usr/bin/gmic
# File 'test.gmic'
echo[] "Hi my friends!"
-
[core-281] New command
network
allows to enable/disable ‘load-from-network’ mode. When disabled, G’MIC cannot access to any data on the network. -
[stdlib-280] We have started implementing a neural-network based machine-learning library directly into G’MIC. This is still in alpha-stage. Fully-connected networks have been already implemented and can learn, in a G’MIC pipeline. See dedicated section for more info. This will be hopefully a basis for more complex NN in the future.
-
[stdlib-280] New command
deltaE
computes the pointwise perceptual color difference between two images, using either the metricsCIE_deltaE76
orCIE_deltaE2000
. -
[stdlib-280] New command
extract
extracts coordinates or values from an image where user-specified condition holds. -
[stdlib-280] New command
is_variable_name
tells if specified argument can be used as a variable name. -
[math-core-280] it is now possible to transfer the content of a vector
A
to a G’MIC image variable$var
, with functionstore(A,'var')
. The vector data can be retrieved afterwards in a G’MIC pipeline, as a new image, withinput $var
. This uses the exact same mechanism as the recently introducedstore
command. It is possible to specify image dimensions when storing the vector values, withstore(A,'var',w,h,d,s)
. -
[math-core-280] Function
date()
is now able to return milliseconds for the current time. -
[math-core-280] New functions
begin_t()
,end_t()
andmerge()
have been added to add more flexibility to manage multi-threaded computations. -
[math-core-280] New functions
f2ui()
andui2f()
encode potentially large unsigned integers as float values (such numbers are used in G’MIC 3D objects storage for instance). -
[cli-280] CLI tool
gmic
is now able to return an error code different from0
or-1
, by using commanderror errcode
in the G’MIC pipeline.
Modifications / Improvements:
-
[core-284] Some input expressions have been extended to accept a multiplier argument, e.g expressions
(1,2,3)x4
,0x2
and10,10x3
are now valid, and insert the specified image multiple times on the image list. -
[core-284] New pre-defined variable
k
introduced in math expression evaluator.k
stands for the current index in the image list of the image being processed (k
is an integer defined in[0,l-1]
). -
[core-283] Improve management of non-ascii characters and escape sequences in G’MIC scripts.
-
[build-283] Add
-flto
flag when compiling G’MIC, to enable ‘Link Time Optimizations’. This leads to smaller compiled binaries. -
[core-283] Command
output
now allows to specify the pixel type as an option, when saving an ANALYZE7.5 file (extensions.hdr
or.nii
). -
[gmic-qt-282] New syntax allowed in a
.gmic
file, to allow a filter defining its default layer input mode. -
[core-282] Math evaluator gets new functions
ccos()
(complex cosine) ,csin()
(complex sine),ctan()
(complex tangent),ccosh()
(complex hyperbolic cosine),csinh()
(complex hyperbolic sine) andctanh()
(complex hyperbolic tangent). -
[core-282] Slightly optimized the script interpreter, removing extra string comparisons that were useless. This makes a noticeable difference on some filters (+10% gain).
-
[core-282] Commands
map
andindex
now have access to more pre-defined palettes (all those introduced in new commandpalette
). -
[core-282] Moved sources back from framagit to github. Framagit repository has been deleted (Framagit is going to shutdown sooner or later).
-
[core-281] Hide compilation warnings due to header files of OpenEXR.
-
[cli-281] Environment variable
$GMIC_VERBOSITY
can be set to the desired initial verbosity of the cli-tool (default value is1
). -
[stdlib-281] Command
transfer_histogram
is based on an improved histogram matching algorithm, and better match the histogram between specified images. -
[gmic-qt-280] Filter
Frames / Droste
now use interactive points that can be moved from the preview widget. -
[gmic-qt-280] Filter
Repair / Smooth [guided]
now accepts an additional layer as a guide image. -
[stdlib-280] CLUT compression algorithm is now able to work with different colorspaces and different color metrics. Default values make the compression algorithm try to reduce a perceptual color difference rather than the L2-sRGB metric used before.
-
[stdlib-280] Command
colormap
has a new option to sort colors according to their occurrences. -
[core-280] Verbosity management has been completely recoded, to make the writing of custom G’MIC commands more simple. See this post for more details about the new rules.
-
[core-280] Command
restore
is deprecated and has been removed. Use simpler expressioninput $varname
instead. -
[core-280] Command
pass
now returns the list of selected parent indices in status. A new mode has been added to only return the parent indices, without importing selected images in current environment. -
[math-core-280] In math parser, function
ext()
has been renamed ascall()
.
Bug fixes:
-
[gmic-qt-283] Fix size of spinboxes used for
float
parameters, that were too small for some filters. -
[stdlib-282] Fix command
input_cube
to be able to manage.cube
files with out-of-gammut values. -
[core-282] Fix undefined behavior of command
store
that was causing some filters not to work on the G’MIC-Qt plug-in for GIMP 2.8. -
[cli-281] Fix initial call to
cli_start
(regression in 2.8.0). -
[gmic-qt-280] Small images now displays upscaled in the preview widget before filter is applied.
-
[stdlib-280] Fix colorspace conversion
lab2xyz
andxyz2lab
. -
[stdlib-280] Fix autoset alpha mode for grayscale images in 2D image viewer.
-
[stdlib-280] Fix
texturize3d
with large 3D objects. -
[core-280] Fix
.bmp
loader for 16bits-encoded images (RGB565). -
[core-280] Fix scope name for commands used to load/save custom formats (e.g.
.flo
files). -
[math-core-280] Fix return values in function
critical()
.
Other informations:
- The INS2I institute of the CNRS made it possible for us to hire J-D Schröder, an engineer to work 1 year full-time on the G’MIC project, at our lab (GREYC). This is super great news.
The goal is twofold:
- Implement a clean Python binding for G’MIC (Work in Progress) : https://pypi.org/project/gmic/
- Propose G’MIC-based nodes for Blender
We’ll share more news when new progress are done.
Enjoy this release!