On the Road to 3.7

This thread enumerates the list of changes in the G’MIC project since the latest stable version (3.6), until it reaches the next major version 3.7.

New features

  • [stdlib-362] New command pca performs PCA (Principal Component Analysis) on a set of vector-valued samples and eventually projects it in a vector sub-space (with lower dimension). Can be used to determine the orientation of shapes in images, among other things!

  • [stdlib-362] New command depthmap3d renders a 3D image in an image, as a depth map.

anim_luigi-ezgif.com-optimize

  • [stdlib-362] New command normalmap3d renders a 3D image in an image, as a normal map.

anim_normals3d-ezgif.com-optimize

  • [stdlib-362] Command math_lib: New function epoch2date() convert an epoch to UTC time.

  • [math-core-363] New functions ‘fft()’ and ‘ifft()’ which computes the Fast Fourier Transform (and its inverse) on image-valued variables.

  • [math-core-362] Make loop variable $% available from the math expression evaluator.

  • [core-362] New builtin command createdir can be used to create directories on the filesystem.

Improvements / Modifications

  • [math-core-363] Function epoch() now computes epoch from UTC time.

  • [math-core-363] Optimized versions of multi-arguments functions min(), max(), argmin(), ... when invoked with only one or two arguments.

  • [math-core-363] Function lerp(a,b,t) now accepts a vector value for t (that has same size as arguments a and b).

  • [math-core-362] Function epoch() now computes epoch from UTC time.

  • [web-363] Added new code samples “Morph Shape”, in the Gallery section of the G’MIC website.

codesamples_thumb_5

anim_tunnel3d-ezgif.com-optimize(1)

  • [nn-lib-363] Command nn_nl : L2-normalization activation has been added a a possible nonlinear function.

  • [nn-lib-363] Gradient momentum and weight decay are now implemented for all optimizers (not only adam and adamax).

  • [nn-lib-363] Trainer module has been recoded and is now more flexible, easing the passing of parameters to chosen optimizer and scheduler.

  • [nn-lib-362] Adam optimizer now implements a decoupled weight_decay (AdamW variant).

Bugfixes

  • [core-362] Command object3d: Fix vertice brightness for z-clipped triangles, when Gouraud shading rendering mode is used.
4 Likes

I guess 3D things will be the focus of G’MIC 3.7?

No, not particularly. I’m only adding 3D-related commands when I feel there is a need.

Not sure if a new feature to Packed Ellipses can easily be added but I was wonder if an option for an avoidance mask could be implemented (i.e. have the dots contained in selective regions)? If so, great, if not, I understand, David. :slight_smile:

You could also use gimp to select regions.

Not easy, as the initial algorithm has not been designed for that.
I would rather suggest to use the Pack Sprites filter (that allows a mask), with a few ellipses of different ratios as allowed sprites.
Because when packes, the sprites can be rotated/scaled by the packing algorithm, so you’ll get something similar to what Pack Ellipses does.

That’s cool, David; it’s just Packed Ellipse is so much faster and aesthetically more cool for shaping but maybe I use some of the tricks I use with Packed Ellipse to get Packed Sprites to work like I want it to. :slight_smile:

2025/09/24: Release of version 3.6.2.