Visual legerdemain abounds in G'MIC 1.6.0
A new stable release of the G'MIC image-processing framework was recently released. Version 1.6.0 adds a number of new commands and filters useful for manipulating image data, as well as changes to the codebase that will hopefully make G'MIC easier to integrate into other applications. Because most users will employ G'MIC scripts written by others—rather than directly altering image files—the integration features are arguably the most important aspect of the program. Recently, the project has been putting extra emphasis on documentation and on working with G'MIC power users to deliver the best possible presentation of G'MIC's capabilities.
David Tschumperlé announced the release of version 1.6.0 in the G'MIC discussion group on Flickr. To the average free-software fan, Flickr might sound like a peculiar venue on which to post a release announcement, but it is home to a large community of G'MIC's most active constituency: photographers. The new release is available through several means. There are source bundles and binaries of the command-line G'MIC tool provided for download through SourceForge.net, the GIMP plugin can be downloaded separately, and a personal package archive (PPA) for Ubuntu is available. The code is distributed under the CeCILL license, which is GPL-compatible.
Learning G'MIC
Most users will likely want to choose the GIMP plugin, since it is easier to get started with. The precompiled plugin itself needs to be installed, which is done by uncompressing the downloaded archive into ~/.gimp-2.x/plug-ins/. The next time GIMP is run, there will be a "G'MIC" menu item, which launches the G'MIC filter-selection window. This window resembles GIMP's other filter-preview windows in the most basic sense: there is a small-scale thumbnail showing a live preview image of what the chosen filter's current settings will do to the image file (or selection), plus a box of sliders, drop-down selectors, and other widgets with which one can fiddle with the settings.
But unlike standalone items in GIMP's "Filters" menu, the G'MIC selector is really a front end for G'MIC's own library of pre-built filters—so the window also includes a lengthy, scrollable list of all of the available choices. The 1.6.0 plugin advertises 395, although that number does not include a large set of effects marked "testing"—the G'MIC site says that there are currently 714 available in total. Plenty of them are variations on a similar theme, of course, but almost every effect one can think of is available: from image-enhancement tools (like local-contrast enhancement to bring out details) to artistic mutations akin to Instagram effects, plus a wide assortment of what one might call purely mathematical filters (Fourier transforms, discrete Laplacian operators, etc.).
The good news is that G'MIC's selector makes it simple to familiarize oneself with what could otherwise become a dizzying assortment of possibilities. The installed filters are grouped by category and the majority of them offer a near-instant preview of the final effect they will produce. Those that do not offer a preview tend to be the ones that require interactive editing, such as the famous "inpainting" filter used to remove objects from a scene—the user has to select the object to remove in the image, so no automatic preview is possible. Each filter also has its author and last update listed in the interface. Some have additional text metadata, such as instructions.
Under the hood, though, even the most complex G'MIC filter is nothing more than a series of commands passed to the G'MIC interpreter. All of the filters seen in the GIMP plugin can be duplicated by running G'MIC commands in the gmic command-line tool. It is quite similar to ImageMagick or GraphicsMagick in this respect; the GIMP plugin merely provides an easy-to-use interface for a suite of predefined "scripts." Although whether G'MIC commands are complex enough to qualify as true scripts is debatable; there are some control structures available, but a lot of limitations—including the fact that only image data can be operated upon.
The project has considerably detailed documentation about the available commands and how they are interpreted, for those interested in digging a bit further. In a nice touch, the documentation's command reference now links to tutorials from each command's definition, for those commands that have a tutorial available.
New tricks
Because the GIMP plugin is merely a front end for the command-line tool (which is the focus of development), G'MIC release notes tend to describe new features in their command-line terms. 1.6.0 is no exception. The release notes highlight a handful of new and changed commands, plus several new filters that have been added to the library. New image-operation commands include -oneminus, which computes (1 - pixelvalue) for each pixel in an image and -mul_channels, which can be used to multiply each channel of an image by a different value. Several existing commands have been improved: the -map command accepts a boundary parameter, the -median command accepts a threshold argument, and the -blend command now accepts an opacity argument between zero and one. Some non-functional cleanups include renaming some commands to better reflect their functionality and adding shortcuts for others.
Considerably more commands have been added to those used to manipulate files and interact with the system. G'MIC filters can now create their own custom error messages in GIMP, name output files according to more flexible rules (such as renaming multiple input files to multiple distinct output filenames), and use color terminal output in Bash. The command-line gmic tool now automatically looks for a custom command file at startup (at ~/.gmic on Linux systems).
Although the changes to the command language are of most interest to users who write their own effects, some new pre-built filters have also been added to the default set included in the GIMP plugin. One of these is "Film emulation / Various," which alters the colors of an image to simulate the effects of different real-world film stocks. The main set of film emulations was created with the help of photographer Pat David (who presented some of the work at Libre Graphics Meeting 2014 in Leipzig).
There are about 20 new emulation presets available in this release. These are mostly useful for artistic effect, of course, but as older film stocks like Kodachrome (and the associated developing chemicals) are discontinued, computer simulation becomes the only option to match the old look. Many of the "Various" presets, rather than targeting a specific film stock, implement more generic effects to simulate vintage and aged photographs.
Another new filter is "Mighty details," one of several options that can be used to heighten the clarity of details in an image. Detail enhancement is a convoluted process, the effectiveness of which varies considerably from image to image (and overdoing it can heighten the visibility of unpleasant artifacts). So the name "Mighty details" may not communicate much more than "Freaky details" (another filter), other than suggesting that one will see a less extreme outcome. This is understandable, but can be a source of frustration. Some of G'MIC's filters are better documented on the web than others; there does not seem to be a detailed look at "Mighty details" available so far, but the G'MIC GIMP plugin does include links to other filters' documentation (including "Freaky details").
On the other hand, David did thoroughly document the creation of another new filter, "Montage," in a blog post. This filter can be used to intelligently rescale a set of images to fill an arbitrary page size. Unlike manually arranging images, it is fast and easy to rearrange the component images in the preview window, so this filter may attract plenty of fans.
Last but not least, David also wrote a post exploring the new "patch-based inpainting" filter. Inpainting, as mentioned earlier, is an intelligent fill operation that removes an object from an image by blending in samples from the surrounding image. The patch-based technique is better for situations where larger or distinct objects are in the surrounding image. Blending with random shapes like clouds and grass is fairly simple; blending with samples taken from human faces or buildings tends not to produce natural-looking results.
From the perspective of a casual GIMP user, G'MIC's greatest
strength—the vast array of effects it can produce—is a
double-edged sword. Even the pre-built filters that ship with the
G'MIC GIMP plugin have the potential to be overwhelming to sort
through. But this is a problem that the project has put considerable
effort into fixing, with improved documentation accessible from
multiple sources and with well-organized tools and settings presented
in the user interface. Die-hard image manipulators will likely be
pleased with the new commands available for writing custom G'MIC
scripts and filters, but for everyone else, the 1.6.0 release provides
easy access to a wealth of effects that would otherwise demand
considerable time and experimentation with another image-editing tool.
