Tutorial

Introduction
images/gmic_front.jpg r2dx 300 On the piece of the planet that I inhabit, G'MIC, GREYC's Magic for Image Computing, falls deep within the shadow cast by ImageMagick. Google ImageMagick and you will garner hundreds of hits, all relevant, crowding your first dozen pages or so. In contrast Googling G'MIC turns up “GMIC - Silicon Valley's Largest Mobile Conference and Expo”, “Green Meeting Industry Council” and, lest we forget, the “Glass Manufacturing Industry Council.” To be sure, G'MIC's page is in the mix, one of many brand contenders.

David Tschumperlé and other moving spirits behind G'MIC seem little perturbed by this encroaching anonymity. They know what they have — a real good image processing pipeline — which they cheerfully maintain for their own purposes and those of a loyal band of cognoscenti. So the rest of the world, it seems, can go hang. David Tschumperlé and friends are too busy image processing to spoon-feed a marketing blitz to anyone.

In real life, Dr. Tschumperlé is a research scientist at GREYC Laboratory in Caen, France, and G'MIC is a part of that life. Every process which generates images also generates noise. A better separation of signal from noise is what motivates much of G'MIC and its underlying CImg library. The worry of confounding the reality of tumors with splotches of noise unsettles everyone, and such serious mindedness engenders an intensity of purpose. That notwithstanding, many image processing algorithms also serve artistic goals, a fact that has not been lost on Dr. Tschumperlé or his team, and they have fashioned a suite of access toolkits which let the rest of us in on the fun.

This toolkit consists of a gmic-qt QT-based plugin, which operates within a number of paint and image processing programs, a G'MIC interpreter, a tool for designing and executing image processing pipelines, a web service, which will filter images without requiring any locally installed software, ZArt, a GUI tool for real-time manipulations of video streams, and an application interface library so programmers can wrap their own applications around CImg and G'MIC.

The most well-known component is the plugin, a monster among its siblings and, for many years, found only in Gimp. Most plugins implement an effect or two. The gmic-qt plugin harbors some twenty groupings of effects, each containing from half a dozen to more than two dozen effects each – nearly six hundred in version 2.9.8 (August 2020). Many effects have multiple settings. One might spend weeks exploring the possibilities inherent in one effect, and years exploring the whole library. There are a number of active discussion groups ( GIMPChat/G'MIC, discuss.pixls.us ), supporting the gmic-qt plugin.

Alas, there is not as much information lying around for the standalone G'MIC interpreter, which is a shame, as the gmic-qt plugin is built on top of the interpreter and knowledge of the interpreter is essential in extending the plugin. Like the more well-known ImageMagick, the G'MIC interpreter embodies the notion of a pipeline — a sequence of commands — that operate on an image list. Particular operations begin life on (rather long) pipelines, but these are soon subsumed in script files and become G'MIC commands in their own right, for G'MIC is a self-extending interpreter. Possibly this mode of operation is a bit intimidating, so people naturally gravitate away from the interpreter to the friendly plugin. That is perfectly fine, however it has engendered a dearth of documentation on the interpreter itself. That is unfortunate, because when one encounters a need for a pipeline — a tool which can uniformly apply operations upon many images — the one-shot character of the GIMP plugin is not ideal. The underlying G'MIC interpreter is the better choice.

There are a few interpreter-specific gems lying around. Dr. Tschumperlé has written a a massive reference manual for the interpreter. While encyclopedic, it does not quite develop a sense of how the whole articulates together. He has also written a nice introduction to the G'MIC interpreter which does give a sense of how the whole articulates together. Other pages at the G'MIC wiki offer pearls of wisdom, situated at various levels of expertise. In the future, perhaps, there will be a G'MIC user manual and a nice cookbook. Until such niceties come along, builders of image processing pipelines will have to content themselves with ad-hoc recipes, such as the few assembled here.

For those new to the G'MIC interpreter, the first four topics in the following list constitutes a primer. The fifth topic, the Command Guide, embodies the meat of the interpreter. At this writing (August, 2020), it contains little more than the G'MIC Handbook, which is tersely sufficient for the experienced user but mysterious for beginners. One of the long term goals of this documentation project is to amplify on that terseness, but that will be a while. The Bouncing Balls Tutorial walks through the art of writing a custom command. For those attracted to immediacy, one may stand (virtually) behind David Tschumperlé while he develops an early version of the Bouncing Ball script. It illustrates wordlessly how many commands evolve through a kind of accretion from simple ideas to complex expressions, with side-jaunting command sketches to work out details. Cheatsheets aims to illustrate both shortcuts and gaffes that make working in G'MIC a pleasure and a pain, the latter flagging what may best be avoided in one's evolving G'MIC skill sets. Finally, it is now possible to Contribute to G'MIC documentation, as it is now entirely based on GitHub.

Basics
Images
Command Decorations
Beginner's Cookbook
Command Guide
Bouncing Balls Tutorial
Cheatsheet
Contribute

Updated: 06-September-2021 20:30 UTC Commit: 8150bfaea147