This is the changelog for the release of the 3.2.0 version of the G’MIC software, released on 2023/01/16.
It lists all new features and changes done since the previous minor version 3.1.
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 : G'MIC - GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing - Download
 - G’MIC web service : https://gmicol.greyc.fr/
 - G’MIC language tutorial pages : Start Here
 - Support G’MIC development : G'MIC — Association LILA
 
What’s new in version 3.2?
New features:
- 
[gmic-qt-320] New filter Patterns / Pills renders a periodic pattern that looks like pills.
 - 
[gmic-qt-320] New filter Patterns / Halftone [Generic] implements a generic versatile algorithm for image halftoning, allowing various halftoning shapes.
 
- 
[gmic-qt-320] Stand-alone version of G’MIC-Qt gets new option
--layersto specify that multiple input images must be used as layers for the selected filters (rather than applying the filter image by image). - 
[gmic-qt-316] New filter Rendering / Algorithm A, is a G’MIC conversion of an interesting idea proposed by Memo Akten on Twitter. It creates abstract “Mondrian-like” illustrations.
 
- [gmic-qt-316] New filter Arrays & Tiles / Shuffle Patches, allow to reconstruct images from shuffling the initial image patches, with different reconstruction options.
 
- [gmic-qt-315] Filter Colors / Vibrance can be used to make your colors more saturated (filter done by @age).
 
- [gmic-qt-315] Filter Colors / YCH Vibrance can be used to make your colors more saturated (works in th YCH colorspace). Filter done by @Reptorian .
 
- [gmic-qt-313] New filter Rendering / 3D Mesh renders a 3D object on a new transparent layer, from a 
.obj(Wavefront) or.offfilename. 
- 
[gmic-qt-313] New system for storing persistent data between successive calls of a filter, through new reserved variable
$_persistent. Particularly useful for filter that input large external data files (e.g. that does not have to be reloaded each time the preview is updated). - 
[gmic-stdlib-320] Many improvements to the
nn_lib(G’MIC neural network library): new lossescross entropy,softmax+crossentropy,binary crossentropy(classification losses), new modulesconv3d(and variants),maxpool3d,patchdown2d/3dandpatchup2d/3d+ various improvements of existing modules, optimizations and bug fixes. As a test, thenn_libhas been able to train neural networks for classifying things (hand-written digits: MNIST dataset, clothes: MNIST Fashion dataset, faces, and others).
 - 
[gmic-qt-311] New filter Colors / Apply From CLUT Set allows to apply a CLUT on an image, from a compressed CLUT set stored as a custom
.gmzfile. 
- 
[stdlib-320] New command
nargreturns the number of passed arguments. - 
[stdlib-320] New command
filename_datedconverts specified filename to one stamped with the current date (such asfilename_YYYYMMDD_HHMMSS.ext). - 
[stdlib-320] New command
bettireturn the Betti numbers of selected 3D binary shapes. - 
[stdlib-320] New command
to_automodeconverts an input image as an image with the minimal number of channels, without losing information. Useful to discard alpha-channel, or convert RGB images to GRAY, when possible. - 
[stdlib-316] New macro
do_intersect(p0x,p0y,p1x,p1y,q0x,q0y,q1x,q1y)inmath_lib: returns0(false) or1(true) whether the 2D segments[p0,p1]and[q0,q1]intersect or not. - 
[stdlib-316] New command
ssim, computes the Structural Similarity Index Measure, as described in the paper: Wang, Zhou, et al., “Image quality assessment: from error visibility to structural similarity.”, in IEEE transactions on image processing 13.4 (2004): 600-612. - 
[stdlib-316] New commands
mse_matrix,psnr_matrixandssim_matrixreturn the matrix of resp. MSE, PSNR and SSIM values between images of the selection. - 
[stdlib-316] New command
keep_named(shortcutkn) keeps only images with specific name in the image list (opposite ofremove_named). - 
[stdlib-316] New command
img2patchesandpatches2img: Commandimg2patchesdecomposes an image into a set of (possibly overlapping) patches, stacked along the z-axis. Commandpatch2imgdoes the opposite. It reconstructs an image from its patch representation. - 
[stdlib-313] New command
eyeinserts an identity matrix of specified size at the end of the image list. - 
[stdlib-313] New command
identityinserts an identity map with specified dimensions at the end of the image list. - 
[stdlib-313] New command
surfels3dconverts an image containing a binary shape as a 3D object containing 3D surfels (works for 2D images too). 
- [stdlin-313] New command 
input_objimplements a 3D mesh loader, in the.objfile format (Wavefront) (beware: not all .obj features implemented!). 

- [core-320] Command 
textis now able to draw text using user-defined fonts. 
- 
[math-core-320] Functions
crop()anddraw()now have variants that respectively extract and draw images from/in a vector-valued variable. - 
[math-core-320] New functions
gamma()computes the Gamma function of its real-valued argument. - 
[math-core-320] New predefined variable
v, equivalent tou(-1,1). - 
[math-core-316] New function
cov(A,B,_avgA,_avgB)computes the covariance estimation from two input vectors. - 
[math-core-316] New function
mse(A,B)computes the mean-squared error between two input vectors. - 
[math-core-316] New function
da_freeze(_#ind)convert a dynamic array as a 1-column image of size1 x da_size(_#ind) x 1x100%. - 
[math-core-316] New predefined variable
idstands for the standard deviation of the current image (eq. tosqrt(iv)). 
Improvements / Changes:
- 
[gmic-qt-320] Allow
bool()parameters to have HTML codes in labels. Also swap widget ordering (label on the left, checkbox on the right). - 
[gmic-qt-320] Default interface layout is now set in “Dark Mode”, and “Preview on the Right”.
 - 
[gmic-qt-315] Make G’MIC-Qt compilation independent on G’MIC source code, when dynamic linking is set. This should ease the packaging of G’MIC into different components (requested by the Krita folks).
 - 
[gmic-qt-314] Filter 3D Mesh: Add rendering option Bounding Box.
 - 
[gmic_qt-313] Filter labels are now selectable and can be copy/pasted if necessary.
 - 
[stdlib-316] Commands
mseandpsnrhave been recoded and return resp. the MSE and PSNR values of selected images with a reference image, passed as an argument. - 
[stdlib-313] Improve command
output_obj: export face transparency; less memory used to export RGB materials. - 
[core-320] Improvement of the variable storage mechanism. Make things slightly faster, particularly for append/prepend assignments (
var.=strandvar..=str). - 
[core-320] Command
cameranow throws an exception if a camera frame could not be captured. - 
[core-320] Merge commands and math parser functions
invertandpseudoinvertfor matrix inversion. - 
[core-320]
libgmicAPI has been cleaned. Classesgmic_imageandgmic_listare now part of a newgmic_librarynamespace. - 
[core-316] Prevent warning on
stderrwhen no display available (e.g., remote execution). - 
[core-316] Put back shotcut
nmfor commandname. - 
[core-316] Improved how image copies are named in the image list.
 - 
[core-315] Improved the sharing of abort pointers between multiple parallel instances of G’MIC interpreters.
 - 
[core-313] Command
warp: Make default value =0for argument 'boundary_conditions`. - 
[core-313] Optimize syntax
+commandfor some arithmetic commands (e.g.sqr,sqrt,cos, …). - 
[core-313] Improve behavior of math function
get(). Do not throw exceptions anymore. - 
[math-core-320] Optimize evaluation of math functions when expressions are simple.
 - 
[math-core-320] Add new option
use_LUto commandsolveand math functionsolve(). - 
[math-core-320] Functions
stov()andvtos()renameds2v()andv2s()respectively. - 
[math-core-320] Function
u(min,max)has been extended tou(min,max,_include_min,_include_max)allowing to choose more finely if each range extrema must be included in the uniform distribution. - 
[web-316] Changes of URLs for the github repositories, now: GitHub - GreycLab/gmic: GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing and GitHub - GreycLab/gmic-community: Community contributions to the G'MIC software.
 - 
[package-313] Remove packages for versions of Debian and Ubuntu that are not supported anymore (Debian 9, Ubuntu 19.04, 19.10, 20.10, 21.04).
 
Bug fixes:
- 
[gmic-qt-320] Fix saving output file in .png format with stand-alone version.
 - 
[gmic-qt-314] Fix encoding issue for filters returning encoded text in status, to modify input parameters.
 - 
[gmic-qt-314] Disable entirely the log output when verbosity is set to none.
 - 
[stdlib-320] Fix command
texturize3d(a.k.a.t3d) when used on large 3D object (>2M primitives). - 
[stdlib-313] Fix command
parse_cliwhen run without input data. - 
[stdlib-313] Fix command
primitives3dfor large 3d objects. - 
[gmic-qt-311] Fix management of “Faves” file on Windows, when the account name contains accentuated characters.
 - 
[core-320] Saving animated
.gifnow better handles alpha-channels (still requires IMconvertto be installed on your system). - 
[core-320] Fix behavior of using
breakin aforeach...doneloop (was behaving likecontinue). - 
[core-315] Fix possible double memory free, when exiting a filter.
 - 
[core-314] Fix regression in 3.1.3 that causes certain
+commandto be much slower than in3.1.2. - 
[core-313] Fix macro value of
cimg_max_buf_sizethat causes crash on 32-bits arch. - 
[core-313] Command
rotate: fix argument parsing bug, happening with 3D rotations, when last argumentcenter_zhas a%suffix. - 
[core-313] Fix variable assignment operators
>>=and<<=. - 
[core-313] Fix arithmetic variable assignment with rounding (e.g.
x:=_pi). - 
[core-312] Fix bug in commands
breakandcontinuewhen executed in a loop that is the last code block of a command. - 
[core-311] Fix possible misinterpretation by the interpreter of arithmetic expression like ‘str1’==‘str2’, when used with the
:=assignment operator (commit #4200a80aae83b53d1a6d0e950f47e49601842d76) - 
[core-311] Fix blocking mutex when using nested
run()in mathematical expressions. - 
[core-311] Fix regression that happened in command
input_flobetween version 3.0.2 and 3.1.0 (wrong datatype name used). 















 (artwork by 藤ちょこ)
krita
gimp

 Will release fix 3.1.2 tomorrow!