This is the changelog for the release of the 2.9.x versions of the G’MIC software.
It lists all new features and changes done since the latest version 2.8.4.
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.9.x?
New features:
- [gmic-qt_290] New filter Rendering / Tree renders a fractal tree, with various parameters that can be tuned to generate different kind of trees.
- [gmic-qt_290] New filter Sequences / Moiré Animation produces still images that can be animated with a transparent sheet, from several frames (layers), as shown in the video https://www.youtube.com/watch?v=f5plDb_JRq4.
-
[gmic-qt_290] Filter parameter
color()now accepts an argument that is a RGB or RGBA colors in HTML format (e.g.#aabbcdor#aabbccddee). -
[math_core_290] New functions
maxabs(), minabs(), argmaxabs()andargminabs()find the min/max (in absolute value) of a list of arguments. New commandsmaxabs, minabs, argmaxabsandargminabsalso added to operate on image pipelines. -
[math_core_290] New functions
name(_#ind,_siz)andsetname(_#ind,str)get/set the name of an image of the list (eq. to commandnamebut directly inside the math parser). -
[math_core_290] New function
ref(expr,varname)references the specified expressionexprby the variablevarname. Useful to declare large vector-valued variables while avoiding memory duplication in the math parser (e.g.ref(vector1024(),A)is better thanA = vector1024(), as the latter requires two allocations and a call to the vector copy constructor). -
[math_core_290] New function
lerp(a,b,t)computes the linear interpolation between argumentsaandb(i.e.a*(1-t) + b*t). -
[math_core_290] New function
inrange(val,a,b,include_boundaries)tests if a value lies in a given range. -
[core_290] Most substituting expressions between braces
{}can now specify a delimiter option, that delimits multiple values coming from a substitution (e.g.{[1,2,3]:;}is substituted as1;2;3and{'foo:^}by102^111^111). Accepted delimiters are,(default),;,/,^and ’ ’ (space). -
[core_290] New input expressions
('string')and('string':delimiter)now available, to create images containing the character codes composing the string (equivalent to({'string'})and({'string':delimiter})wheredelimitercan be,(default),;,/or^). For this special expression,delimitercan also be specified asx,y,zorvto set the main image orientation. -
[stdlib_290] New command
parse_guiparses all#@guifilters available (e.g. all filters defined for the G’MIC-Qt plug-in) and outputs filter information in a format following a given output mode (json | list | print | update | zart). -
[stdlib_290] New commands
input_text(shortcutit) andoutput_text(shortcutot) load/save text-data files as new images containing the ASCII characters asunsigned char-valued pixels (eq. to using expressionraw:filename.txt,uchar). -
[stdlib_290] New command
strcapitalizecapitalizes an input string.
Modifications / Improvements:
-
[gmic-qt_290] G’MIC now supports UTF-8 encoded command files. All existing command files have been converted to UTF-8. In scripts, strings can also specify UTF-8 characters with the
\uor\Uprefixes (as in"\uA0B3"(ꂳ)). Note that UTF-8 characters are still not rendered by commandtext. -
[gmic-qt_290] Enable link-time optimization (flag
-flto) when compiling the CLI tool on Linux. This produces a binary with an improvement of 14% in size. -
[cli_290] Command
helphas been redesigned, and always outputs help messages onstdout. -
[core_290] Command
discardhas been optimized when called with a single scalar argument. -
[core_290] Command
displaynow outputs info on console forverbosity>=0(was>=1before). -
[core_290] Loading animated
.gifnow always returns full frames (rather than difference frames). -
[core_290] Command
storeaccepts an optional argumentis_compressedthat tells if stored images must be stored in a compressed form. -
[math_core_290] Function
find()is now able to search inside a vector with a given step (positive or negative). -
[math_core_290] Function
store()can now store a sub-vector as an image-valued variable. -
[stdlib_290] Commands
versionnow always output messages onstdout. -
[stdlib_290] Command
compress_gmichas been recoded and is now faster to execute. -
[stdlib_290] Interactive viewer for 2D images now accepts shortcut
CTRL+Wto close the window. -
[stdlib_290] Command
echo(shorcute) can be invoked as+echo[](shortcut+e[]) to output onstdoutrather thanstderr(equivalent toecho_stdout). -
[stdlib_290] Command
colormaphas been optimized for extracting all existing colors from an input image (with argument0). -
[stdlib_290] Command
display2dis now able to perform multi-image display with synchronized views, when selected 2D input images are stacked along the z-axis. Commanddisplay_parallelenables this mode by default when compatible images are displayed.
Bug fixes:
-
[core_290] Value of milliseconds timer
$|was resetting itself each day, on Windows. This is now fixed. Precision of the timer has been also improved when running after several days. -
[core_290] Command
fft: Fix calculation of FFT along ‘y’-axis when used with volumetric images. -
[core_290] Fix substituting expression
{ind,b}when image name is empty. -
[core_290] Expressions s.a.
.,.,.,.xNare now recognized. -
[core_290] Fix bug in thread waiting functions (wait_threads() is now thread-safe).
-
[math_core_290] Check constant image index, when accessing vector-valued expressions
I/J[#ind,off]andI/J(#ind,x,y,z,c). -
[gmic-qt_290] Fix critical bug in filter
Montage(regression introduced in 2.8.4). -
And a lot of other small bugfixes!


