Reference

## Release

     gmic : GREYC's Magic Image Converter (Feb  2 2011, 10:07:51).

            Version 1.4.8.0, Copyright (C) 2008-2011, David Tschumperle
            (http://gmic.sourceforge.net)

## Usage

     gmic [command1 [arg1_1,arg1_2,..]] .. [commandN [argN_1,argN_2,..]]

     'gmic' is an open-source interpreter of the G'MIC language, a script-based programming
      language dedicated to the design of image processing pipelines. It can be used to
      convert, manipulate, filter and visualize datasets constituted of one or several 1d/2d/3d
      multi-spectral images.

     The G'MIC language is entirely defined by the following rules :

### ** Overall context :

      - At any time, G'MIC manages one list of numbered (and optionally named) pixel-based
         images, entirely stored in computer memory. Each image can represent a 1d/2d/3d array
         of scalar or multi-spectral pixel values.
      - The first image of the list has indice '0' and is denoted by '[0]'.
      - Negative indices are treated in a cyclic way (i.e. '[-1]' stands for the last image of
         the list, '[-2]' the penultimate one, and so on..). Thus, in a list of 4 images,
         notations '[1]' and '[-3]' both refer to the second image.
      - A named image is referenced by '[name]'. Names can be specified when inserting new
         images on the list. Names use characters [a-zA-Z0-9_] and cannot start with a number.
      - G'MIC defines a set of commands and substitution mechanisms for creating pipelines to
         manage the image list in a very flexible way.
      - A user-defined pipeline can be written itself as a new custom G'MIC command, and thus can
         be re-used afterwards in any G'MIC call.

### ** Image definition and terminology :

      - In G'MIC, an image can represent up to a 4d array of scalar-valued pixels, whose
         dimensions are respectively denoted by :
        . 'width', the number of image columns (size along the 'x'-axis).
        . 'height', the number of image lines (size along the 'y'-axis).
        . 'depth', the number of image slices (size along the 'z'-axis).
            The depth is equal to 1 for usual 2d color or grayscale images.
        . 'spectrum', the number of image channels (size along the 'c'-axis).
            The spectrum is equal respectively to 3 and 4 for usual RGB and RGBA color images.
      - There are no limitations on image dimensions, particularly the number of image slices or
          channels G'MIC can handle, except the amount of available memory.
      - The width, height and depth of an image are considered as 'spatial' dimensions, while the
         spectrum has a 'multi-spectral' meaning. Thus, a 4d image in G'MIC should preferably be
         regarded as a 3d dataset of multi-spectral voxels.
      - All pixel values of all images of the list have the same datatype. It can be one of :
        . 'bool' : Stands for 'boolean'. Value range is { 0=false | 1=true }.
        . 'uchar' : Stands for 'unsigned char'. Value range is [0,255] (8bits).
            This type of pixel coding is commonly used to store 8bits/channels RGB[A] images.
        . 'char' : Value range is [-128,127] (8bits).
        . 'ushort' : Stands for 'unsigned short'. Value range is [0,65535] (16bits).
            This type of pixel coding is commonly used to store 16bits/channels RGB[A] images.
        . 'short' : Value range is [-32768,32767] (16bits).
        . 'uint' : Stands for 'unsigned int'. Value range is [0,2^32-1] (32bits).
        . 'int' : Value range is [-2^31,2^31-1] (32 bits).
        . 'float' : Value range is [-3.4E38,+3.4E38] (32bits).
            This type of coding is able to store pixels as 32 bits float-valued numbers. This is
            the datatype considered for all G'MIC image processing operations.
        . 'double' : Value range is [-1.7E308,-1.7E308] (64bits).
            This type of coding is able to store pixels as 64 bits float-valued numbers.
      - Considering pixel datatypes different than 'float' is generally useless, except to force
         the input/output of image data to a prescribed binary format. Hence, most G'MIC image
         image processing commands are available only for the default 'float' pixel datatype.

### ** Items and processing pipeline :

      - In G'MIC, an image processing pipeline is described as a sequence of items separated by
         spaces ' '. Such items are interpreted and executed from the left to the right. For
         instance, the expression 'input.jpg -blur 3,0 -sharpen 10 -r 200%,200% -o output.jpg'
         defines a valid pipeline composed of nine G'MIC items.
      - A G'MIC item is a string which represents either a command, command arguments,
         a filename, or a special input string.
      - When invoking G'MIC from the command-line, any word following the executable name 'gmic'
         is considered as one specified G'MIC item.
      - Escape characters '\' and double quotes '"' can be used (as usual) to define items
         containing spaces, or any other character sequences. For instance, the strings
         'single\ item' and '"single item"' define the same single item.

### ** Input data items :

      - If a specified G'MIC item appears to be an existing filename, the corresponding image
         data are loaded and inserted at the end of the image list.
      - Special filenames '-' and '-.ext' stand for the standard input/output streams, optionally
         forced to be in a specific 'ext' file format (e.g. '-.jpg' or '-.png').
      - The following special input strings are used as G'MIC items to create and insert new
         images with prescribed values, at the end of the image list :
        . '[image]' or '[image]xN' : Insert 1 or N copies of the existing image [image].
        . 'width[%],_height[%],_depth[%],_spectrum[%],_values' : Insert a new image with
           size and values (optionnally, adding '%' to a dimension means 'percentage of the size
           along the same axis, taken from the last available image'). Any specified dimension
           can be also written as '[image]', and is then set to the size (along the same axis)
           of the existing specified image [image]. 'values' can be either a sequence of numbers
           separated by commas ',', or a mathematical expression, as e.g. in input item
           '256,256,1,3,if(c==0,x,if(c==1,y,255))' which creates a 256x256 RGB color image with a
           spatial shading on the red and green channels.
        . '(v1,v2,..)' : Create a new image containing specified prescribed values
            Value separator inside parentheses can be ',' (column separator.), ';' (line sep.),
            '/' (slice sep.) or '^' (channel sep.). For instance, expression
            '(1,2,3;4,5,6;7,8,9)' creates a 3x3 matrix (scalar image), with values from 1 to 9.
      - The input string 'name=value' is used to declare a new local or global variable 'name',
        or to assign a new value to an existing variable. Variable names use characters
        [a-zA-Z0-9_] and cannot start with a number. A variable is local to the current command
        except when its name starts by the underscore character '_'. In that case, it becomes
        also accessible in any subcommand invoked from the current command scope.

### ** Command items and selections :

      - A G'MIC item starting by '-' designates a command, most of the time. Generally, commands
        perform image processing operations on one or several available image(s) of the list.
      - Usual commands may have two equivalent names (regular and short). For instance,
         command names '-resize' and '-r' refer to the same processing action (image resizing).
      - A G'MIC command may have mandatory or optional arguments. Command arguments must be
         specified in the item next to the command name. Commas ',' are used to separate multiple
         arguments, if any required.
      - The execution of a G'MIC command may be restricted only to a subset of the image list, by
         appending '[subset]' to the command name. Several combinations are possible, such as :
        . '-com[0,1,3]'        : Apply command only on images [0],[1] and [3].
        . '-com[3-5]'          : Apply command only on images [3] to [5] (i.e, [3],[4] and [5]).
        . '-com[50%-100%]'     : Apply command only on the second half of the image list.
        . '-com[0,-4--1]'      : Apply command only on the first image, and the four latest ones.
        . '-com[0-9:3]'        : Apply command only on images [0] to [9], with a step of 3
                                  (i.e. ion images [0], [3], [6] and [9]).
        . '-com[0--1:2]'       : Apply command only on images of the list with even indices.
        . '-com[0,2-4,50%--1]' : Apply command on images [0],[2],[3],[4] and on the second half
                                  of the image list.
        . '-com[^0,1]'         : Apply command on all images except the two first ones.
        . '-com[name1,name2]'  : Apply command on named images 'name1' and 'name2'.
      - Indices in selections are always sorted in increasing order, and duplicates are removed.
         For instance, selections '[3-1,1-3]' and '[1,1,1,3,3,2]' are equivalent to '[1-3]'.
         If you want to repeat a single command multiple times on an image, use a
         '-repeat..-done' loop. Inverting the order of a selection can be achieved by inverting
         the order of the images in the list instead, with command '-reverse[selection]'.
      - G'MIC commands invoked without '[subset]' are applied on all images of the list.
      - A G'MIC command starting with '--' instead of '-' does not act 'in-place' but inserts its
         result as one or several new images, at the end of the image list.

### ** Input/output properties :

      - G'MIC is able to read/write most of the classical image file formats, including :
        . 2d grayscale/color files : .png, .jpeg, .gif, .pnm, .tif, .bmp, ..
        . 3d volumetric files : .dcm, .hdr, .nii, .pan, .inr, ..
        . Image sequences : .mpeg, .avi, .mov, .ogg, .flv, ..
        . Generic ascii or binary data files : .cimg, .cimgz, .dlm, .asc, .pfm, .raw, .txt, .h.
        . 3d object files : .off.
      - When dealing with color images, G'MIC generally reads, writes and displays data using the
         usual RGB color space.
      - G'MIC is able to manage 3d objects that may be read or generated by G'MIC commands. These
         objects are stored as one-column scalar images containing the object data, in the
         following order : { header; sizes; vertices; primitives; colors; opacities }.
         These 3d representations can be processed as any other regular float-valued images.
      - Classical image file formats may be not always adapted to store all image data
        (e.g. using .jpeg for 16bits/channels images), resulting in possible loss of pixel
        informations. Use the .cimg file format (or .cimgz, its compressed version) to ensure
        that all data will be preserved when saving files.
      - File options can/must be set for specific file formats :
        . Video files : Only sub-frames of an image sequence may be loaded, using the input
           expression 'video.ext,[first_frame[%][,last_frame[%][,step]]]'.
           Output framerate and bitrate (in Kb/s) can be also set by using the output expression
           'file.mpg,fps,bitrate'.
        . .raw binary files : Image dimensions must be specified, using the input expression
           'file.raw,width[,height[,depth[,dim]]]]'.
        . .yuv files : Image dimensions must be specified, and only sub-frames of an image
           sequence may be loaded, using the input expression
          'file.yuv,width,height[,first_frame[,last_frame[,step]]]'.
        . .jpeg files : The output quality may be specified (in %), using the output expression
           'file.jpg,30' (here, to get a 30% quality output).
        . Filenames with extension '.gmic' are assumed to be G'MIC custom command files.
      - Note that some formats or options may be not supported by your current version of 'gmic',
         depending on how compilation flags have been set for the build of the G'MIC interpreter.

### ** Substitution rules :

      - G'MIC items containing '@', '$' or '{}' may be substituted before being interpreted. Use
         the expressions below to access the current state of the interpreter environment :
        . '@#' is substituted by the current number of images in the list.
        . '@%' is substituted by the pid of the current process.
        . '@|' is substituted by the current value of a millisecond-precision timer.
        . '@?' is substituted by the current type of image pixels.
        . '@^' is substituted by the current verbosity level.
        . '@*' is substituted by the current 3d rendering mode.
        . '@/' is substituted by the current command scope.
        . '@{/}' or '@{/,subset}' are substituted by the content of the global scope, or a
           subset of it. If specified subset refers to multiple scope items, they are separated
           by slashes '/'.
        . '@>' and '@<' are equivalent. They are both substituted by the number of nested
           'repeat-done' loops that are currently running.
        . '@{>}' or '@{>,subset}' are substituted by the indice values (or a subset of them) of
           the running 'repeat-done' loops, expressed in the ascending order, from 0 to N-1.
           If specified subset refers to multiple indices, they are separated by commas ','.
        . '@{<}' or '@{<,subset}' do the same but in descending order, from N-1 to 0.
        . '@indice' or '@{indice,feature}' are substituted by the list of pixel values of the
           image [indice], or by a specific feature (or subset) of it.
           Requested 'feature' can be one of the followings :
             . 'w' : image width (number of image columns).
             . 'h' : image height (number of image lines).
             . 'd' : image depth (number of image slices).
             . 's' : image spectrum (number of image channels).
             . 'wh' : image width x image height.
             . 'whd' : image width x image height x image depth.
             . 'whds' : image width x image height x image depth x image spectrum.
                        (i.e. number of values in the specified image).
             . 'r' : image shared state (1, if the pixel buffer is shared, 0 else).
             . 'n' : image name or filename (if the image has been read from a file).
             . 'b' : image basename (i.e. filename without the folder path nor extension).
             . 'x' : image extension (i.e last characters after the last '.' in the filename).
             . 'f' : image folder name.
             . '#' : number of image values (i.e. width x height x depth x spectrum).
             . '+' : sum of all pixel values.
             . '-' : difference of all pixel values.
             . '*' : product of all pixel values.
             . '/' : quotient of all pixel values.
             . 'm' : minimum pixel value.
             . 'M' : maximum pixel value.
             . 'a' : average pixel value.
             . 'v' : variance of pixel values.
             . 't' : text string built from the image values, regarded as ascii codes.
             . 'c' : (x,y,z,c) coordinates of the minimum value, separated by commas ','.
             . 'C' : (x,y,z,c) coordinates of the maximum value, separated by commas ','.
             . '(x,_y,_z,_c,_borders)' : pixel value at coordinates (x,y,z,c), with specified
                border conditions { 0=dirichlet | 1=neumann | 2=cyclic }.
             . Any other feature is considered as a specified subset of image values.
                For instance, '@{-1,0-50%}' is substituted by the sequence of numerical values
                coming from the first half data of the last image, separated by commas ','.
        . '@!' is substituted by the visibility state of the instant display window [0]
           (can be equal to { 0=closed | 1=visible }).
        . '@{!,feature}' or '@{!indice,feature}' is substituted by a specific feature of the
           instant display window [0] (or [indice], if specified). The requested feature can be
           one of the followings :
             . 'w' : display width (i.e. width of the display area managed by the window).
             . 'h' : display height (i.e. height of the display area managed by the window).
             . 'wh' : display width x display height.
             . 'd' : window width (i.e. width of the window widget).
             . 'e' : window height (i.e. height of the window widget).
             . 'de' : window width x window height.
             . 'u' : screen width (actually independent on the window size).
             .' v' : screen height (actually independent on the window size).
             . 'uv' : screen width x screen height.
             . 'x' : X-coordinate of the mouse position (or -1, if outside the display area).
             . 'y' : Y-coordinate of the mouse position (or -1, if outside the display area).
             . 'b' : state of the mouse buttons { 1=left-but. | 2=right-but. | 4=middle-but. }.
             . 'o' : state of the mouse wheel.
             . 'k' : decimal code of the pressed key if any, else 0.
             . 'n' : current normalization type of the instant display.
             . 'c' : boolean (0 or 1) telling if the instant display has been closed recently.
             . 'r' : boolean telling if the instant display has been resized recently.
             . 'm' : boolean telling if the instant display has been moved recently.
             . Any other feature stands for a keycode name in capital letters, and is substi-
                -tuted by a boolean describing the current key state { 0=pressed | 1=released }.
        . '@{"command line"}' is substituted by the status value after returned after the
           execution of the specified command line (see command '-status').
        . Expression '@{}' stands thus for the current status value.
      - $name and '${name}' are both substituted by the value of the specified named local
         variable (set previously by input item 'name=value'), or by the current indice of the
         named image '[name]', or by the value of the named OS environment variable.
      - '$>' and '$<' (resp. '${>}' and '${<}') are shortcuts respectively for '@{>,-1}' and
         '@{<,-1}'. They refer to the increasing/decreasing indice of the latest (currently)
         running 'repeat..done' loop.
      - Any other expression inside braces (as in '{expression}') is considered as a mathematical
         expression, and is evaluated, except when expression starts and ends by simple quotes,
         in which case, it is substituted by the sequence of ascii codes that composes the
         specified string, separated by commas ','. For instance item '{3+2}' is substituted by
         '5', and item '{'foo'}' by '102,111,111'.
      - Item substitution is never done in double-quoted items. One must break double quotes to
        enable substitution if needed, as in "3+8 kg = "{3+8}" kg". Use then double quotes
        to disable substitutions in items, when desired.
      - One can also disable the substitution mechanism outside double-quoted items, by escaping
          the '@','{','}' or '$' characters, as in '\{3+4\}\ doesn't\ evaluate'.

### ** Mathematical expressions :

      - G'MIC has an embedded mathematical parser. It is used to evaluate formulas inside
         braces '{}', or in commands that may take formulas as arguments (e.g. '-fill').
      - When used in commands, a formula is evaluated for each pixel of the selected images.
      - The parser understands the following set of functions, operators and variables :
        _ Usual operators : || (logical or), && (logical and), | (bitwise or), & (bitwise and),
           !=, ==, <=, >=, <, >, << (left bitwise shift), >> (right bitwise shift), -, +, *, /,
           % (modulo), ^ (power), ! (logical not), ~ (bitwise not).
        _ Usual functions : sin(), cos(), tan(), asin(), acos(), atan(), sinh(), cosh(), tanh(),
           log10(), log(), exp(), sign(), abs(), atan2(), round(), narg(), arg(), isval(),
           isnan(), isinf(), isint(), isbool(), rol() (left bit rotation),
           ror() (right bit rotation), min(), max(), sinc(), int().
           Function 'atan2()' is the version of atan() with two arguments 'y,x', as in C/C++.
           Function 'narg()' returns the number of specified arguments.
           Function 'arg(i,a_1,..,a_n)' returns the ith argument a_i.
           Functions 'min()' and 'max()' can be called with a variable number of arguments.
           Functions 'isval()', 'isnan()', 'isinf()', 'isbool()' can be used to test the type of
           a given number or expression.
        _ These special variable names are pre-defined. They cannot be overloaded :
             . 'w' : width of the associated image, if any (else 0).
             . 'h' : height of the associated image, if any (else 0).
             . 'd' : depth of the associated image, if any (else 0).
             . 's' : spectrum of the associated image, if any (else 0).
             . 'x' : current processed column of the associated image, if any (else 0).
             . 'y' : current processed line of the associated image, if any (else 0).
             . 'z' : current processed slice of the associated image, if any (else 0).
             . 'c' : current processed channel of the associated image, if any (else 0).
             . 'i' : current processed pixel value (i.e. value located at (x,y,z,c)) of the
                associated image, if any (else 0).
             . 'im','iM','ia','iv' : Respectively the minimum, maximum, average values and
                variance of the associated image, if any (else 0).
             . 'xm','ym','zm','cm' : The pixel coordinates of the minimum value in the associated
                image, if any (else 0).
             . 'xM','yM','zM','cM' : The pixel coordinates of the maximum value in the
                associated image, if any (else 0).
             . 'pi' : value of pi, i.e. 3.1415926..
             . 'e' : value of e, i.e. 2.71828..
             . '?' or 'u' : a random value between [0,1], following an uniform distribution.
             . 'g' : a random value, following a gaussian distribution of variance 1
                (roughly in [-5,5]).
        _ These special operators can be used :
             . ';' : expression separator. The returned value is always the last encountered
                expression. For instance expression '1;2;pi' is evaluated as '3.14159'.
             . '=' : variable assignment. Parser variables can only refer to numerical values.
                Variable names are case-sensitive. Use this operator in conjunction with ';' to
                define complex evaluable expressions, such as 't=cos(x);3*t^2+2*t+1'.
                These variables remain local to the mathematical parser and cannot be accessed
                outside the evaluated expression.
        _ The following specific functions are also defined :
             . 'if(expr_cond,expr_then,expr_else)' : return value of 'expr_then' or 'expr_else',
                depending on the value of 'expr_cond' (0=false, other=true). For instance,
                G'MIC command '-fill if(x%10==0,255,i)' will draw blank vertical lines on every
                10th column of an image.
             . '?(max)' or '?(min,max)' : return a random value between [0,max] or [min,max],
                following an uniform distribution. 'u(max)' and 'u(min,max)' mean the same.
             . 'i(a,_b,_c,_d,_borders)' : return the value of the pixel located at position
                (a,b,c,d) in the associated image, if any (else 0). Border conditions can be
                { 0=dirichlet | 1=neumann | 2=cyclic }. Omitted coordinates are replaced by their
                default values which are respectively equal to x, y, z, c and 0. For instance,
                command '-fill 0.5*(i(x+1)-i(x-1))' will estimate the X-derivative of an image.
      - The last image of the list is always associated to the evaluations of '{expressions}',
         e.g. G'MIC sequence '256,128 -f {w}' will create a 256x128 image filled with value 256.

### ** Custom commands :

      - Custom commands can be defined by the user, through the use of G'MIC command files.
      - A command file is a simple ascii text file, where each line starts either by
         'command_name : substitution' or 'substitution (continuation)' or '# comment'.
      - Custom command names use characters [a-zA-Z0-9_] and cannot start with a number.
      - Any ' # comment' expression found in a custom command file is discarded by the G'MIC
         interpreter, wherever it is located in a line.
      - A default command file is already provided within the G'MIC package. It is located
         at 'http://gmic.sourceforge.net/gmic_def.xxxx', where 'xxxx' has to be replaced by
         the 4 digits of the current G'MIC version number. Looking at it is a good place to start
         learning to create your own custom commands. All the commands from this default command
         file are already included by default in the current version of the G'MIC interpreter.
      - The default command file located at 'http://gmic.sourceforge.net/gmic_def.xxxx' may be
         updated/corrected by the G'MIC developers. You can thus download and include it with the
         '-command' (or -'m') directive to update your default command definitions as well.
      - In custom commands, the following $-expressions are substituted :
        . '$#' is substituted by the maximum indice of known arguments (either specified by the
           user or set to a default value in the custom command).
        . '$?' is substituted by a string telling about the command subset restriction (only
           useful when custom commands need to output descriptive messages).
        . '$i' and '${i}' are both substituted by the i-th specified argument. Negative indices
           such as '$[-j}' are allowed and refer to the j^th latest argument. '$0' is substituted
           by the custom command name.
        . '${i=default}' is substituted by the value of $i (if defined) or by its new
            value set to 'default' else ('default' may be a $-expression as well).
        . '${subset}' is substituted by the arguments values (separated by commas ',') of a
           specified argument subset. For instance expression '${2--2}' is substitued by all
           specified arguments except the first and the last ones. Useful expression '${^0}' is
           substituted by all specified arguments.
      - Specifying arguments may be skipped when invoking a custom command, by replacing them by
         commas ',' as in expression '-flower ,,3'. Omitted arguments are set to their default
         values, which must be thus explicitely defined in the code of the corresponding custom
         command (using default argument expressions as '${1=default}').

### ** Image and data viewers :

      - G'MIC has some very handy embedded visualization modules, for 1d signals
         (command '-plot'), 1d/2d/3d images (command '-display') and 3d objects
         (command '-display3d'). It enables an interactive view of the selected image data.
      - The following keyboard shortcuts are available in the interactive viewers :
        . CTRL+D : Increase window size.
        . CTRL+C : Decrease window size.
        . CTRL+R : Reset window size.
        . CTRL+F : Toggle fullscreen mode.
        . CTRL+S : Save current window snapshot as numbered file 'CImg_xxxx.bmp'.
        . CTRL+O : Save current instance of the viewed data, as numbered file 'CImg_xxxx.cimgz'.
      - Shortcuts specific to the 1d/2d/3d image viewer are :
        . CTRL+P             : Play z-stack of frames as a movie (for volumetric 3d images).
        . CTRL+V             : Enable/disable 3D view (for volumetric 3d images).
        . CTRL+(mousewheel)  : Zoom in/out.
        . SHIFT+(mousewheel) : Go left/right.
        . ALT+(mousewheel)   : Go up/down.
        . Numeric PAD        : Zoom in/out (+/-) and move through zoomed image (digits).
        . BACKSPACE          : Reset zoom scale.
      - Shortcuts specific to the 3d object viewer are :
        . (mouse)+(left mouse button)   : Rotate 3d object.
        . (mouse)+(right mouse button)  : Zoom 3d object.
        . (mouse)+(middle mouse button) : Shift 3d object.
        . (mousewheel)                  : Zoom in/out.
        . CTRL+F1 .. CTRL+F6            : Switch between different 3d rendering modes.
        . CTRL+Z                        : Enable/disable z-buffered rendering.
        . CTRL+A                        : Show/hide 3d axes.
        . CTRL+G                        : Save 3d object, as numbered file 'CImg_xxxx.off'.
        . CTRL+T                        : Switch between single/double-sided 3d modes.

### ** Command reference :

     All recognized G'MIC commands are listed below, classified by themes.
     When several choices of command arguments are possible, they appear separated by '|'.
     An argument specified inside '[]' or starting by '_' is optional except when standing for an
     existing image [image], where 'image' can be either an indice number or an image name.
     In this case, the '[]' characters are mandatory when writing the item. A command marked with
     (*) is available for all image types, else only for the default 'float' pixel datatype.

## Global options

-help (*)
_command

            Display help (optionally for specified command only) and quit.
            (eq. to '-h').

-debug (*)

            Activate debug mode.
            When activated, the G'MIC interpreter becomes very verbose and outputs additionnal log
            messages describing the internal state of the interpreter on the standard output.

## Mathematical operators and functions

-add
value[%] |
[image] |
filename |
'formula' |
(no args)

            Add specified value, image, file or mathematical expression to selected images,
            or compute the pointwise sum of selected images.
            (eq. to '-+').

-sub
value[%] |
[image] |
filename |
'formula' |
(no args)

            Subtract specified value, image, file or mathematical expression to selected images,
            or compute the pointwise difference of selected images.
            (eq. to '--').

-mul
value[%] |
[image] |
filename |
'formula' |
(no args)

            Multiply selected images by specified value, image, file or mathematical expression,
            or compute the pointwise product of selected images.
            (eq. to '-*').

-mmul
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the matrix product of selected matrices/vectors by specified value, image, file or
            mathematical expression, or compute the matrix products of selected images.
            (eq. to '-**').

-div
value[%] |
[image] |
filename |
'formula' |
(no args)

            Divide selected image by specified value, image, file or mathematical expression,
            or compute the pointwise quotient of selected images.
            (eq. to '-/').

-pow
value[%] |
[image] |
filename |
'formula' |
(no args)

            Raise selected image to the power of specified value, image, file or mathematical
            expression, or compute the pointwise sequential powers of selected images.
            (eq. to '-^').

-min
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the minimum between selected images and specified value, image, file or
            mathematical expression, or compute the pointwise minima between selected images.

-max
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the maximum between selected images and specified value, image, file or
            mathematical expression, or compute the pointwise maxima between selected images.

-mod
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the modulo of selected images with specified value, image, file or mathematical
            expression, or compute the pointwise sequential modulo of selected images.

-and
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise AND of selected images with specified value, image, file or mathematical
            expression, or compute the pointwise sequential bitwise AND of selected images.

-or
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise OR of selected images with specified value, image, file or mathematical
            expression, or compute the pointwise sequential bitwise OR of selected images.

-xor
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise XOR of selected images with specified value, image, file or mathematical
            expression, or compute the pointwise sequential bitwise XOR of selected images.

-bsl
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise left shift of selected images with specified value, image, file or
            mathematical expression, or compute the pointwise sequential bitwise left shift of
            selected images.
            (eq. to '-<<').

-bsr
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise right shift of selected images with specified value, image, file or
            mathematical expression, or compute the pointwise sequential bitwise right shift of
            selected images.
            (eq. to '->>').

-rol
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise left rotation of selected images with specified value, image, file or
            mathematical expression, or compute the pointwise sequential bitwise left rotation of
            selected images.

-ror
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the bitwise right rotation of selected images with specified value, image, file or
            mathematical expression, or compute the pointwise sequential bitwise right rotation of
            selected images.

-eq
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the boolean equality of selected images with specified value, image, file or
            mathematical expression, or compute the boolean equality of selected images.
            (eq. to '-==').

-neq
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the boolean inequality of selected images with specified value, image, file or
            mathematical expression, or compute the boolean inequality of selected images.
            (eq. to '-!=').

-gt
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the boolean 'greater than' of selected images with specified value, image, file or
            mathematical expression, or compute the boolean 'greater than' of selected images.
            (eq. to '->').

-ge
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the boolean 'greater or equal than' of selected images with specified value, image,
            file or mathematical expression, or compute the boolean 'greater or equal than' of selected
            images.
            (eq. to '->=').

-lt
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the boolean 'less than' of selected images with specified value, image, file or
            mathematical expression, or compute the boolean 'less than' of selected images.
            (eq. to '-<').

-le
value[%] |
[image] |
filename |
'formula' |
(no args)

            Compute the boolean 'less or equl than' of selected images with specified value, image,
            file or mathematical expression, or compute the boolean 'less or equal than' of selected
            images.
            (eq. to '-<=').

-cos

            Compute the pointwise cosine of selected images.

-sin

            Compute the pointwise sine of selected images.

-sinc

            Compute the pointwise sinc function of selected images.

-tan

            Compute the pointwise tangent of selected images.

-cosh

            Compute the pointwise hyperbolic cosine of selected images.

-sinh

            Compute the pointwise hyperbolic sine of selected images.

-tanh

            Compute the pointwise hyperbolic tangent of selected images.

-acos

            Compute the pointwise arc-cosine of selected images.

-asin

            Compute the pointwise arc-sine of selected images.

-atan

            Compute the pointwise arc-tangent of selected images.

-atan2
[x_argument]

            Compute the pointwise oriented arc-tangent of selected images.
            Each selected image is regarded as the y-argument of the arc-tangent function, while the
            specified image gives the corresponding x-argument.

-abs

            Compute the pointwise absolute values of selected images.

-sign

            Compute the pointwise sign of selected images.

-sqr

            Compute the pointwise square function of selected images.

-sqrt

            Compute the pointwise square root of selected images.

-exp

            Compute the pointwise exponential of selected images.

-log

            Compute the pointwise logarithm of selected images.

-log10

            Compute the pointwise logarithm_10 of selected images.

## Basic pixel manipulation

-endian (*)

            Reverse data endianness of selected images.

-set (*)
value,_x[%],_y[%],_z[%],_c[%]

            Set pixel value in selected images, at specified coordinates.
            (eq. to '-=').
            If specified coordinates are outside the image bounds, no action is performed.
            Default values for 'x','y','z','c' are '0'.

-fill
value1,_value2,.. |
[image] |
formula

            Fill selected images with values read from the specified value list, existing image
            or mathematical expression.
            (eq. to '-f').

-threshold
value[%],_soft |
(no args)

            Threshold values of selected images.
            (eq. to '-t').
            'soft' can be { 0=hard-thresholding | 1=soft-thresholding }.
            (noargs) runs interactive mode (uses the instant window [0] if opened).

-cut
{ value0[%] | [image0] },{ value1[%] | [image1] } |
[image] |
(no args)

            Cut values of selected images in specified range.
            (eq. to '-c').
            (noargs) runs interactive mode (uses the instant window [0] if opened).

-normalize
{ value0[%] | [image0] },{ value1[%] | [image1] } |
[image]

            Linearly normalize values of selected images in specified range.
            (eq. to '-n').

-round
rounding_value>=0,_rounding_type |
(no args)

            Round values of selected images.
            'rounding_type' can be { -1=backward | 0=nearest | 1=forward }.

-equalize
nb_levels>0[%],_value0[%],_value1[%]

            Equalize histograms of selected images.
            If value range is specified, the equalization is done only for pixels in the specified
            value range.

-quantize
nb_levels>0[%],_preserve_value_range={ 0 | 1 }

            Uniformly quantize selected images.

-noise
std_variation>=0[%],_noise_type

            Add random noise to selected images.
            'noise_type' can be { 0=gaussian | 1=uniform | 2=salt&pepper | 3=poisson | 4=rice }.

-rand
{ value0[%] | [image0] },{ value1[%] | [image1] } |
[image]

            Fill selected images with random values uniformly distributed in the specified range.

-norm

            Compute the pointwise euclidean norm of vector-valued pixels in selected images.

-orientation

            Compute the pointwise orientation of vector-valued pixels in selected images.

-map
[palette] |
predefined_palette

            Map specified vector-valued palette to selected indexed scalar images.
            'predefined_palette' can be { 0=default | 1=HSV | 2=lines | 3=hot |
                                          4=cool | 5=jet | 6=flag | 7=cube }.

-index
{ [palette] | predefined_palette },_is_dithered={ 0 | 1 },_map_palette={ 0 | 1 }

            Index selected vector-valued images by specified vector-valued palette.
            'predefined_palette' can be { 0=default | 1=HSV | 2=lines | 3=hot |
                                          4=cool | 5=jet | 6=flag | 7=cube }.

## Color base conversion

-rgb2hsv

            Convert selected images from RGB to HSV colorbases.

-rgb2hsl

            Convert selected images from RGB to HSL colorbases.

-rgb2hsi

            Convert selected images from RGB to HSI colorbases.

-rgb2yuv

            Convert selected images from RGB to YUV colorbases.

-rgb2ycbcr

            Convert selected images from RGB to YCbCr colorbases.

-rgb2xyz

            Convert selected images from RGB to XYZ colorbases.

-rgb2lab

            Convert selected images from RGB to Lab colorbases.

-rgb2cmy

            Convert selected images from RGB to CMY colorbases.

-rgb2cmyk

            Convert selected images from RGB to CMYK colorbases.

-hsv2rgb

            Convert selected images from HSV to RGB colorbases.

-hsl2rgb

            Convert selected images from HSL to RGB colorbases.

-hsi2rgb

            Convert selected images from HSI to RGB colorbases.

-yuv2rgb

            Convert selected images from YUV to RGB colorbases.

-ycbcr2rgb

            Convert selected images from YCbCr to RGB colorbases.

-xyz2rgb

            Convert selected images from XYZ to RGB colorbases.

-lab2rgb

            Convert selected images from Lab to RGB colorbases.

-cmy2rgb

            Convert selected images from CMY to RGB colorbases.

-cmyk2rgb

            Convert selected images from CMYK to RGB colorbases.

## Geometry manipulation

-resize (*)
[image],_interpolation,_borders,_cx,_cy,_cz,_cc |
{[image_w] | width>0[%]},_{[image_h] | height>0[%]},_{[image_d] | depth>0[%]},
_{[image_s] | spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc |
(noargs)

            Resize selected images with specified geometry.
            (eq. to '-r').
            'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average |
                                      3=linear | 4=grid | 5=bicubic | 6=lanczos }.
            'borders' can be { -1=none | 0=dirichlet | 1=neumann | 2=cyclic }.
            'cx,cy,cz,cc' set the centering mode when 'interpolation=0' (must be in [0,1]).
            Their default values are '0'.
            (noargs) runs interactive mode (uses the instant window [0] if opened).

-resize2x (*)

            Resize selected images using the Scale2x algorithm.

-resize3x (*)

            Resize selected images using the Scale3x algorithm.

-crop (*)
x0[%],x1[%],_borders |
x0[%],y0[%],x1[%],y1[%],_borders |
x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders |
x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders |
(noargs)

            Crop selected images with specified region coordinates.
            'borders' can be { 0=dirichlet | 1=neumann }.
            (noargs) runs interactive mode (uses the instant window [0] if opened).

-autocrop (*)
value1,value2,..

            Autocrop selected images by specified vector-valued intensity.

-channels (*)
{ [image0] | c0[%] },_{ [image1] | c1[%] }

            Select specified channels of selected images.

-slices (*)
{ [image0] | z0[%] },_{ [image1] | z1[%] }

            Select specified slices of selected images.

-lines (*)
{ [image0] | y0[%] },_{ [image1] | y1[%] }

            Select specified lines of selected images.

-columns (*)
{ [image0] | x0[%] },_{ [image1] | x1[%] }

            Select specified columns of selected images.

-rotate (*)
angle,_borders,_interpolation,_cx[%],_cy[%],_zoom

            Rotate selected images with specified angle (in deg.).
            'borders' can be { 0=dirichlet | 1=neumann | 2=cyclic }.
            'interpolation' can be { 0=none | 1=linear | 2=bicubic }.
            When rotation center ('cx','cy') is specified, the size of the image is preserved.

-mirror (*)
axis={ x | y | z | c }

            Mirror selected images along specified axis.

-shift (*)
vx[%],_vy[%],_vz[%],_vc[%],_borders

            Shift selected images by specified displacement vector.
            'borders' can be { 0=dirichlet | 1=neumann | 2=cyclic }.

-transpose (*)

            Transpose selected images.

-invert

            Compute the inverse of the selected matrices.

-solve
[image]

            Solve linear system AX = B for selected B-vectors and specified A-matrix.
            If the system is under- or over-determined, least square solution is returned.

-trisolve
[image]

            Solve tridiagonal system AX = B for selected B-vectors and specified tridiagonal A-matrix.
            Tridiagonal matrix must be stored as a 3 column vector, where 2nd column contains the
            diagonal coefficients, while 1st and 3rd columns contain the left and right coefficients.

-eigen

            Compute the eigenvalues and eigenvectors of specified symmetric matrices.

-dijkstra
starting_node>=0,ending_node>=0

            Compute minimal distances and pathes from specified adjacency matrices by the Dijkstra algorithm.

-permute (*)
permutation_string

            Permute selected image axes by specified permutation.
            'permutation' is a combination of the character set {x|y|z|c},
            e.g. 'xycz', 'cxyz', ..

-unroll (*)
axis={ x | y | z | c }

            Unroll selected images along specified axis.

-split (*)
axis={ x | y | z | c },_nb_parts |
keep_splitting_values={ + | - },value1,value2,...

            Split selected images along specified axis, or sequence of scalar values.
            (eq. to '-s').
            'nb_parts' can be { 0=maximum split | >0=split in N parts | <0=split in parts of size -N }.
            'borders' can be { 0=dirichlet | 1=neumann }.

-append (*)
axis={ x | y | z | c },_alignment

            Append selected images along specified axis.
            (eq. to '-a').
            Usual 'alignment' values are { 0=left-justified | 0.5=centered | 1=right-justified }.

-warp
[warping_field],_is_relative={ 0 | 1 },_interpolation={ 0 | 1 },_borders,_nb_frames>0

            Warp selected image with specified displacement field.
            'borders' can be { 0=dirichlet | 1=neumann | 2=cyclic }.

## Image filtering

-deriche
std_variation>=0[%],order={ 0 | 1 | 2 },axis={ x | y | z | c },_borders

            Apply Deriche recursive filter with specified standard deviation, order, axis and border
            conditions on selected images.
            'borders' can be { 0=dirichlet | 1=neumann }.

-blur
std_variation>=0[%],_borders

            Blur selected images by quasi-gaussian recursive filter.
            'borders' can be { 0=dirichlet | 1=neumann }.

-bilateral
std_variation_s>0[%],std_variation_r>0

            Blur selected images by anisotropic bilateral filtering.
            'borders' can be { 0=dirichlet | 1=neumann }.

-denoise
std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,
_fast_approx={ 0 | 1 }

            Denoise selected images by non-local patch averaging.

-smooth
amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,
interpolation,_fast_approx={ 0 | 1 } |
nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 |
[tensor_field],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={ 0 | 1 } |
[tensor_field],_nb_iters>=0,_dt>0,0

            Smooth selected images anisotropically using diffusion PDE's, with specified field of
            diffusion tensors.
            'anisotropy' must be in [0,1].
            'interpolation' can be { 0=nearest | 1=linear | 2=runge-kutta }.

-median
radius>=0

            Apply median filter of specified radius on selected images.

-sharpen
amplitude>=0 |
amplitude>=0,1,_edge>=0,_alpha,_sigma

            Sharpen selected images by inverse diffusion or shock filters methods.

-convolve
[mask],_borders,_is_normalized={ 0 | 1 }

            Convolve selected images by specified mask.
            'borders' can be { 0=dirichlet | 1=neumann }.

-correlate
[mask],_borders,_is_normalized={ 0 | 1 }

            Correlate selected images by specified mask.
            'borders' can be { 0=dirichlet | 1=neumann }.

-erode
size>=0 |
size_x>=0,size_y>=0,_size_z>=0 |
[mask],_borders,_is_normalized={ 0 | 1 }

            Erode selected images by a rectangular or the specified structuring element.
            'borders' can be { 0=dirichlet | 1=neumann }.

-dilate
size>=0 |
size_x>=0,size_y>=0,size_z>=0 |
[mask],_borders,_is_normalized={ 0 | 1 }

            Dilate selected images by a rectangular or the specified structuring element.
            'borders' can be { 0=dirichlet | 1=neumann }.

-inpaint
[mask]

            Inpaint selected images by specified mask.

-gradient
{ x | y | z }..{ x | y | z },_scheme |
(no args)

            Compute the gradient components (first derivatives) of selected images.
            'scheme' can be { -1=backward | 0=centered | 1=forward | 2=sobel |
                               3=rotation-invariant (default) | 4=recursive }.
            (no args) compute all significant 2d/3d components.

-structuretensors
_scheme

            Compute the structure tensor field of selected images.
            'scheme' can be { 0=centered | 1=forward-backward1 | 2=forward-backward2 }.

-edgetensors
sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={ 0 | 1 }

            Compute the diffusion tensors of selected images for edge-preserving smoothing algorithms.
            'anisotropy' must be in [0,1].

-hessian
{ xx | xy | xz | yy | yz | zz }..{ xx | xy | xz | yy | yz | zz } |
(no args)

            Compute the hessian components (second derivatives) of selected images.
            (no args) compute all significant components.

-haar
scale>0

            Compute the direct haar multiscale wavelet transform of selected images.

-ihaar
scale>0

            Compute the inverse haar multiscale wavelet transform of selected images.

-fft

            Compute the direct fourier transform of selected images.

-ifft

            Compute the inverse fourier transform of selected images.

## Image creation and drawing

-histogram
nb_levels>0[%],_val0[%],_val1[%]

            Compute the histogram of selected images.
            If value range is specified, the histogram is estimated only for pixels in the specified
            value range.

-distance
isovalue[%],_metric |
isovalue[%],[custom_metric]

            Compute the unsigned distance function to specified isovalue.
            'metric' can be { 0=chebyshev | 1=manhattan | 2=euclidean | 3=squared-euclidean }.
            A custom metric for chamfer distances can be specified as a 2d or 3d image.

-eikonal
nb_iterations>=0,_band_size>=0

            Compute iterations of the eikonal equation (signed distance function) on selected images.

-watershed
[priority_image],_fill_lines={ 0 | 1 }

            Compute the watershed transform of selected images.

-label
is_high_connectivity={ 0 | 1 },_tolerance>=0

            Label connected components in selected images.

-displacement
[source_image],_smoothness>=0,_precision>=0,_nb_scales>=0,iteration_max>=0,
is_backward={ 0 | 1 }

            Estimate displacement field between specified source and selected images.
            If 'nbscales'=0, the number of needed scales is estimated from the image size.

-sort
_ordering={ + | - },_axis={ x | y | z | c }

            Sort pixel values of selected images.

-mse

            Compute MSE (Mean-Squared Error) matrix between selected images.

-psnr
_max_value

            Compute PSNR (Peak Signal-to-Noise Ratio) matrix between selected images.

-point
x[%],y[%],_z[%],_opacity,_color1,..

            Set specified colored pixel on selected images.
            Default color value is '0'.

-line
x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,..'

            Draw specified colored line on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified.
            Default color value is '0'.

-polygon
N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_pattern,_color1,..

            Draw specified colored N-vertices polygon on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified. If a pattern is specified, the polygon is
             drawn outlined instead of filled.
            Default color value is '0'.

-spline
x0[%],y0[%],u0[%],v0[%],x1[%],y1[%],u1[%],v1[%],_opacity,_pattern,_color1,..

            Draw specified colored spline curve on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified.
            Default color value is '0'.

-ellipse
x[%],y[%],R[%],r[%],_angle,_opacity,_pattern,_color1,..

            Draw specified colored ellipse on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified. If a pattern is specified, the ellipse is
             drawn outlined instead of filled.
            Default color value is '0'.

-text
text,_x[%],_y[%],_font_height>=0,_opacity,_color1,..

            Draw specified colored text string on selected images.
            Exact pre-defined sizes are '13','24','32' and '57'.
            Default color value is '0'.
            Specifying a target image with a size of 1x1x1x1 resizes it to new
             dimensions such that the image contains the entire text string.

-graph
[function_image],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_pattern,_color1,.. |
'formula',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_pattern,_color1,..

            Draw specified function graph on selected images.
            'plot_type' can be { 0=none | 1=lines | 2=splines | 3=bar }.
            'vertex_type' can be { 0=none | 1=points | 2,3=crosses | 4,5=circles | 6,7=squares }.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified.
            Default color value is '0'.

-axes
x0,x1,y0,y1,_opacity,_pattern,_color1,..

            Draw xy-axes on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified.
            To draw only one X-axis at line Y, set both 'y0' and 'y1' to Y.
            To draw only one Y-axis at column X, set both 'x0' and 'x1' to X.
            Default color value is '0'.

-grid
sizex[%]>=0,sizey[%]>=0,_offsetx[%],_offsety[%],_opacity,_pattern,_color1,..

            Draw xy-grid on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified.
            Default color value is '0'.

-quiver
[function_image],_sampling>0,_factor,_is_arrow={ 0 | 1 },_opacity,_pattern,_color1,..

            Draw specified 2d vector/orientation field on selected images.
            'pattern' is an hexadecimal number starting with '0x' which can be omitted
             even if a color is specified.
            Default color value is '0'.

-flood
x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,..

            Flood-fill selected images using specified value and tolerance.
            Default color value is '0'.

-image
[sprite],_x[%],_y[%],_z[%],_c[%],_opacity,_[sprite_mask],_max_opacity_mask

            Draw specified sprite image on selected images.

-object3d
[object3d],_x[%],_y[%],_z,_opacity,_is_zbuffer={ 0 | 1 }

            Draw specified 3d object on selected images.

-plasma
alpha,_beta,_opacity

            Draw a random colored plasma on selected images.

-mandelbrot
z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={ 0 | 1 },_c0r,_c0i,_opacity

            Draw mandelbrot/julia fractal on selected images.

## List manipulation

-remove (*)

            Remove selected images.
            (eq. to '-rm').

-keep (*)

            Keep only selected images.
            (eq. to '-k').

-move (*)
position[%]

            Move selected images at specified position.
            (eq. to '-mv').

-reverse (*)

            Reverse positions of selected images.
            (eq. to '-rv').

-name (*)
name

            Set name of selected images.
            (eq. to '-nm').

## 3d rendering

-rotation3d
u,v,w,angle

            Create a new 3d rotation matrix with specified axis and angle (in deg).

-point3d
x0,y0,z0

            Create a new 3d point at specified coordinates.

-line3d
x0,y0,z0,x1,y1,z1

            Create a new 3d line at specified coordinates.

-triangle3d
x0,y0,z0,x1,y1,z1,x2,y2,z2

            Create a new 3d triangle at specified coordinates.

-quadrangle3d
x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3

            Create a new 3d quadrangle at specified coordinates.

-circle3d
x0,y0,z0,radius>=0

            Create a new 3d circle at specified coordinates.

-box3d
size |
size_x,size_y,size_z

            Create a new 3d box at (0,0,0), with specified geometry.

-cone3d
radius,_size_z,_nb_subdivisions>0

            Create a new 3d cone at (0,0,0), with specified geometry.

-cylinder3d
radius,_height,_nb_subdivisions>0

            Create a new 3d cylinder at (0,0,0), with specified geometry.

-torus3d
radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0

            Create a new 3d torus at (0,0,0), with specified geometry.

-plane3d
size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0

            Create a new 3d plane at (0,0,0), with specified geometry.

-sphere3d
radius,_nb_recursions>=0

            Create a new 3d sphere at (0,0,0), with specified geometry.

-elevation3d
z-factor |
[elevation] |
'formula',_x0,_y0,_x1,y1,_dx[%],_dy[%] |
(no args)

            Create 3d elevation of selected images or specified formula, with specified elevation map.
            If a z-factor is specified, each elevation map is computed as the pointwise L2 norm of the
            selected images. Else, elevation values are taken from the specified image or formula.

-isoline3d
isovalue[%] |
'formula',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]

            Extract 3d isolines with specified value from selected images or from specified formula.

-isosurface3d
isovalue[%] |
'formula',value,_x0,_y0,_z0,_x1,_y1,_z1,_size_x>0[%],_size_y>0[%],_size_z>0[%]

            Extract 3d isosurfaces with specified value from selected images or from specified formula.

-streamline3d
x,y,z,_L>=0,_dl>0,_interp,_is_backward={ 0 | 1 },_is_oriented={ 0 | 1 } |
'formula',x,y,z,_L>=0,_dl>0,_interp,_is_backward={ 0 | 1 },_is_oriented={ 0 | 1 }

            Extract 3d streamlines from selected vector fields or from specified formula.
            'interp' can be { 0=nearest integer | 1=1st-order | 2=2nd-order | 3=4th-order }.

-add3d
tx,_ty,_tz |
[object3d] |
(noargs)

            Shift selected 3d objects with specified displacement vector, or merge them with specified
            3d object, or merge all selected 3d objects together.
            (eq. to '-+3d').

-sub3d
tx,_ty,_tz

            Shift selected 3d objects with the opposite of specified displacement vector.
            (eq. to '--3d').

-mul3d
factor |
factor_x,factor_y,_factor_z

            Scale selected 3d objects isotropically or anisotropically, with specified factors.
            (eq. to '-*3d').

-div3d
factor |
factor_x,factor_y,_factor_z

            Scale selected 3d objects isotropically or anisotropically, with the inverse of specified
            factors.
            (eq. to '-/3d').

-center3d

            Center selected 3d objects at (0,0,0).
            (eq. to '-c3d').

-normalize3d

            Normalize selected 3d objects to unit size.
            (eq. to '-n3d').

-rotate3d
u,v,w,angle

            Rotate selected 3d objects around specified axis with specified angle (in deg.).
            (eq. to '-rot3d').

-color3d
R,G,B,_opacity

            Set color and opacity of selected 3d objects.
            (eq. to '-col3d').

-opacity3d
opacity

            Set opacity of selected 3d objects.
            (eq. to '-o3d').

-reverse3d

            Reverse orientation of selected 3d objects.
            (eq. to '-rv3d').

-primitives3d
mode

            Convert primitives of selected 3d objects.
            (eq. to '-p3d').
            'mode' can be { 0=points | 1=segments | 2=no-textures }.

-texturize3d
[ind_texture],_[ind_coords]

            Texturize selected 3d objects with specified texture and coordinates.
            (eq. to '-t3d').
            When '[ind_coords]' is omitted, default XY texture projection is performed.

-split3d

            Split selected 3d objects into 6 feature vectors :
            { header, sizes, vertices, primitives, colors, opacities }.
            (eq. to '-s3d').
            To recreate the 3d object, append these 6 images along the y-axis.

-light3d
position_x,position_y,position_z |
[texture] |
(no args)

            Set the light coordinates or the light texture for 3d rendering.
            (eq. to '-l3d').
            (noargs) resets the 3d light to default.

-focale3d
focale

            Set 3d focale.
            (eq. to '-f3d').
            Set 'focale' to 0 to enable parallel projection (instead of perspective).
            Set negative 'focale' will disable 3d sprite zooming.

-pose3d
value1,..,value16 |
(noargs)

            Set the coefficients of the 3d pose matrix.
            (noargs) resets the 3d pose matrix to default.

-specl3d
value>=0

            Set amount of 3d specular light.
            (eq. to '-sl3d').

-specs3d
value>=0

            Set shininess of 3d specular light.
            (eq. to '-ss3d').

-double3d
is_double={ 0 | 1 }

            Enable/disable double-sided mode for 3d rendering.
            (eq. to '-db3d').

-mode3d
mode

            Set static 3d rendering mode.
            (eq. to '-m3d').
            'mode' can be { -1=bounding-box | 0=pointwise | 1=linear | 2=flat | 3=flat-shaded |
                             4=gouraud-shaded | 5=phong-shaded }.

-moded3d
mode

            Set dynamic 3d rendering mode.
            (eq. to '-md3d').
            'mode' can be { -1=bounding-box | 0=pointwise | 1=linear | 2=flat | 3=flat-shaded |
                             4=gouraud-shaded | 5=phong-shaded }.

-background3d
R,_G,_B |
[image] |
(no args)

            Define background from specified color or existing image for 3d rendering.
            (eq. to '-b3d').
            (no args) resets the background to default.

## Program control and environment

-skip (*)
item

            Do nothing but skip specified item.

-return (*)

            Return from current custom command.

-status (*)
item |
$variable

            Set current status value to the specified item or from the value of the
             specified environment variable.
            (eq. to '-u').

-exec (*)
command

            Execute external command using a system call.
            The status value is then set to the error code returned by the system call.
            (eq. to '-x').

-do (*)

            Start a 'do..while' block.

-while (*)
boolean |
filename

            End a 'do..while' block and go back to associated '-do'
            if specified boolean is true or if specified filename exists.
            'boolean' can be a float number standing for { 0=false | other=true }.

-repeat (*)
nb_iterations

            Start iterations of a 'repeat..done' block.

-done (*)

            End a 'repeat..done' block, and go to associated '-repeat' position, if iterations remain.

-break (*)

            Break current 'repeat..done', 'do..while' or 'local..endlocal' block.
            (eq. to '-b').

-continue (*)

            Continue to next iteration of current 'repeat..done', 'do..while' or 'local..endlocal' block.

-if (*)
boolean |
filename

            Start a 'if..[elif]..[else]..endif' block and test if specified boolean is true,
            or if specified filename exists.
            'boolean' can be a float number standing for { 0=false | other=true }.

-elif (*)
boolean |
filename

            Start a 'elif..[else]..endif' block if previous '-if' was not verified
            and test if specified boolean is true, or if specified filename exists.
            'boolean' can be a float number standing for { 0=false | other=true }.

-else (*)

            Execute following commands if previous '-if' or '-elif' conditions failed.

-endif (*)

            End a 'if..[elif]..[else]..endif' block.

-local (*)

            Start a 'local..endlocal' block, with selected images.
            (eq. to '-l').

-endlocal (*)

            End a 'local..endlocal' block.
            (eq. to '-endl').

-check (*)
expression

            Evaluate specified expression and display an error message and quit, if it is evaluated.
            to false.
            If 'expression' is not evaluable, it is regarded as a filename and checked if it exists.

-quit (*)

            Quit interpreter.
            (eq. to '-q').

-error (*)
message

            Print specified error message, on the standard output, and quit interpreter.
            Command subset (if any) stands for displayed scope indices instead of image indices.

-progress (*)
0<=value<=100 |
-1

            Set the progress indice of the current processing pipeline.
            This command is useful only when G'MIC is used by an embedding application.

## Input/output

-input (*)
filename |
[image]x_nb_copies>0 |
{ width>0[%] | [image_w] },{ _height>0[%] | [image_h] },{ _depth>0[%] | [image_d] },
{ _spectrum>0[%] | [image_s] },_value1,_value2,.. |
(value1{,|;|/|^}value2{,|;|/|^}..)

            Insert a new image taken from a filename or from a copy of an existing image ['indice'],
            or insert new image with specified dimensions and values.
            (eq. to '-i' | (no args)).

-output (*)
filename,_format_options

            Output selected images as one or several numbered file(s).
            (eq. to '-o').

-verbose (*)
level |
{ + | - }

            Set or increment/decrement the verbosity level.
            (eq. to '-v').
            When 'level'>=0, G'MIC log messages are displayed on the standard output.
            Default value for the verbosity level is 0.

-print (*)

            (eq. to '-p').
            Output informations on selected images, on the standard output.

-echo (*)
message

            Output specified message, on the standard output.
            (eq. to '-e').
            Command subset (if any) stands for displayed scope indices instead of image indices.

-warning (*)
message

            Print specified warning message, on the standard output.
            Command subset (if any) stands for displayed scope indices instead of image indices.

-command (*)
filename |
"string"

            Import G'MIC custom command(s) from specified file or string.
            (eq. to '-m').
            Imported commands are available directly after the '-command' invokation.

-type (*)
datatype

            Set pixel datatype for all images of the list.
            'datatype' can be { bool | uchar | char | ushort | short | uint |
                                 int | float | double }.

-shell (*)

            Start shell environment, with selected images.

-shared (*)
x0[%],x1[%],y[%],z[%],v[%] |
y0[%],y1[%],z[%],v[%] |
z0[%],z1[%],v[%] |
v0[%],v1[%] |
(no args)

            Insert shared buffers from (opt. points/lines/planes/channels of) selected images.
            (eq. to '-sh').

-camera (*)
_camera_index>=-1,_nb_frames>0,_skip_frames>=0,release_camera={ 0 | 1 }

            Insert one or several frames from specified camera, with custom delay between frames (in ms).
            Set 'camera_index' to -1 to use the default camera device.
            When 'release_camera' is set to 1, the camera stream is released and no images are inserted.

-display

            Display selected images in an interactive viewer (use the instant window [0] if opened).
            (eq. to '-d').

-display3d

            Display selected 3d objects in an interactive viewer (use the instant window [0] if opened).
            (eq. to '-d3d').

-plot
_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax |
'formula',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax

            Display selected image or formula in an interactive viewer (use the instant window [0] if
            opened).
            'plot_type' can be { 0=none | 1=lines | 2=splines | 3=bar }.
            'vertex_type' can be { 0=none | 1=points | 2,3=crosses | 4,5=circles | 6,7=squares }.
            'xmin','xmax','ymin','ymax' set the coordinates of the displayed xy-axes.

-window
_width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_title

            Display selected images into an instant window with specified size, normalization type,
            fullscreen mode and title.
            (eq. to '-w').
            If 'width' or 'height' is set to -1, the corresponding dimension is adjusted to the window
            or image size.
            'width'=0 or 'height'=0 closes the instant window.
            'normalization' can be { -1=keep same | 0=none | 1=always | 2=1st-time | 3=auto }.
            'fullscreen' can be { -1=keep same | 0=no | 1=yes }.
            You can manage up to 10 different instant windows by using the numbered variants
            '-w0' (default, eq. to '-w'),'-w1',..,'-w9' of the command '-w'.

-wait
delay |
(no args)

            Wait for a given delay (in ms) or for an user event occuring on the selected instant window.
            'delay' can be { <0=delay+flush |  0=event | >0=delay }.
            Command subset (if any) stands for instant window indices instead of image indices.

-select
feature_type

            Interactively select a feature from selected images (use the instant window [0] if opened).
            'feature_type' can be { 0=point | 1=segment | 2=rectangle | 3=ellipse }.
            The retrieved feature is returned as a vector containing the feature coordinates.

## Shortcuts for native commands

-h (*)
eq. to '-help'.
-+
eq. to '-add'.
--
eq. to '-sub'.
-*
eq. to '-mul'.
-**
eq. to '-mmul'.
-/
eq. to '-div'.
-^
eq. to '-pow'.
-<<
eq. to '-bsl'.
->>
eq. to '-bsr'.
-==
eq. to '-eq'.
-!=
eq. to '-neq'.
->
eq. to '-gt'.
->=
eq. to '-ge'.
-<
eq. to '-lt'.
-<=
eq. to '-le'.
-=
eq. to '-set'.
-f
eq. to '-fill'.
-t
eq. to '-threshold'.
-c
eq. to '-cut'.
-n
eq. to '-normalize'.
-r (*)
eq. to '-resize'.
-s (*)
eq. to '-split'.
-a (*)
eq. to '-append'.
-rm (*)
eq. to '-remove'.
-k (*)
eq. to '-keep'.
-mv (*)
eq. to '-move'.
-rv (*)
eq. to '-reverse'.
-nm (*)
eq. to '-name'.
-+3d
eq. to '-add3d'.
--3d
eq. to '-sub3d'.
-*3d
eq. to '-mul3d'.
-/3d
eq. to '-div3d'.
-c3d
eq. to '-center3d'.
-n3d
eq. to '-normalize3d'.
-rot3d
eq. to '-rotate3d'.
-col3d
eq. to '-color3d'.
-o3d
eq. to '-opacity3d'.
-rv3d
eq. to '-reverse3d'.
-p3d
eq. to '-primitives3d'.
-t3d
eq. to '-texturize3d'.
-s3d
eq. to '-split3d'.
-l3d
eq. to '-light3d'.
-f3d
eq. to '-focale3d'.
-sl3d
eq. to '-specl3d'.
-ss3d
eq. to '-specs3d'.
-db3d
eq. to '-double3d'.
-m3d
eq. to '-mode3d'.
-md3d
eq. to '-moded3d'.
-b3d
eq. to '-background3d'.
-x (*)
eq. to '-exec'.
-u (*)
eq. to '-status'.
-b (*)
eq. to '-break'.
-l (*)
eq. to '-local'.
-endl (*)
eq. to '-endlocal'.
-q (*)
eq. to '-quit'.
-e (*)
eq. to '-echo'.
-i (*)
eq. to '-input'.
-p (*)
eq. to '-print'.
-o (*)
eq. to '-output'.
-sh (*)
eq. to '-shared'.
-v (*)
eq. to '-verbose'.
-m (*)
eq. to '-command'.
-d
eq. to '-display'.
-d3d
eq. to '-display3d'.
-w
eq. to '-window'.

## Default custom commands

### ** Basic pixel manipulation :

-replace_nan
_expression

            Replace all NaN values in selected images by specified expression.

-replace_inf
_expression

            Replace all infinite values in selected images by specified expression.

-roundify
_gamma>=0

            Apply roundify transformation on float-valued data, with specified gamma.

-complex2polar

            Compute complex to polar transforms of selected images.

-polar2complex

            Compute polar to complex transforms of selected images.

-plot2value

            Retrieve values from selected 2d graph plots.

-transfer_colors
_transfer_brightness={ 0 | 1 }

            Transfer colors of the first selected image to the other ones.

-normalize_sum

            Normalize selected images with a unitary sum.

-apply_gamma
gamma

            Apply gamma correction to selected images.

-apply_curve
0<=smoothness<=1,x0,y0,x1,y1,x2,y2,...,xN,yN

            Apply curve transformation to image values.

-negative

            Compute negative of selected images.

-tones
N>0

            Get N tones masks from selected images.

-t2
eq. to '-threshold2'.
-threshold2
_min[%],_max[%]

            Threshold selected images between the two given values.
            (eq. to '-t2').

-chessboard
size1>0,_size2>0,_offset1,_offset2,_angle,_opacity,_color1,..,_color2,..

            Draw chessboard on selected images.

-polka_dots
_diameter,_density,_offset1,_offset2,_angle,_aliasing,_shading,_opacity,_color,...

            Draw dots pattern on selected images.

### ** Geometric manipulation :

-split_tiles
M!=0,_N!=0,_is_homogeneous={ 0 | 1 }

            Split selected images as a MxN array of tiles.

-append_tiles
M>0,_N>0

            Append MxN selected tiles as a new image.

-rr2d
eq. to '-resize_ratio2d'.
-resize_ratio2d
width>0,height>0,_mode={ 0=inside | 1=outside | 2=padded },0=<_interpolation_type<=6

            Resize selected images while preserving their aspect ratio.

-r2dx
eq. to '-resize2dx'.
-resize2dx
width>0,_interpolation_type={0,1,2,3,4,5}

            Resize selected images along the X-axis, preserving 2d ratio.
            (eq. to '-r2dx').

-r3dx
eq. to '-resize3dx'.
-resize3dx
width>0,_interpolation_type={0,1,2,3,4,5}

            Resize selected images along the X-axis, preserving 3d ratio.
            (eq. to '-r3dx').

-r2dy
eq. to '-resize2dy'.
-resize2dy
height>0,_interpolation_type={0,1,2,3,4,5}

            Resize selected images along the Y-axis, preserving 2d ratio.
            (eq. to '-r2dy').

-r3dy
eq. to '-resize3dy'.
-resize3dy
height>0,_interpolation_type={0,1,2,3,4,5}

            Resize selected images along the Y-axis, preserving 3d ratio.
            (eq. to '-r3dy').

-r3dz
eq. to '-resize3dz'.
-resize3dz
depth>0,_interpolation_type={0,1,2,3,4,5}

            Resize selected images along the Z-axis, preserving 3d ratio.
            (eq. to '-r3dz').

-upscale_smart
width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0

            Upscale selected images with an edge-preserving algorithm.

-expand_x
size_x>=0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Expand selected images along the X-axis.

-expand_y
size_y>=0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Expand selected images along the Y-axis.

-expand_z
size_z>=0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Expand selected images along the Z-axis.

-expand_xy
size>=0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Expand selected images along the XY-axes.

-expand_xyz
size>=0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Expand selected images along the XYZ-axes.

-shrink_x
size_x>=0

            Shrink selected images along the X-axis.

-shrink_y
size_y>=0

            Shrink selected images along the Y-axis.

-shrink_z
size_z>=0

            Shrink selected images along the Z-axis.

-shrink_xy
size>=0

            Shrink selected images along the XY-axes.

-elevate
_depth,_is_plain,_is_colored

            Elevate selected 2d images into 3d volumes.

### ** Input-Output :

-ow
eq. to '-outputw'.
-outputw

            Output selected images by overwritting their original location.
            (eq. to '-ow').

-op
eq. to '-outputp'.
-outputp
prefix

            Output selected images as prefixed versions of their original filenames.
            (eq. to '-op').

-on
eq. to '-outputn'.
-outputn
filename

            Output selected images as automatically numbered filenames in repeat..done loops.
            (eq. to '-on').

-d0
eq. to '-display0'.
-display0

            Display selected images without value normalization.
            (eq. to '-d0').

-dfft
eq. to '-display_fft'.
-display_fft

            Display fourier transform of selected images, with centered log-module and argument.
            (eq. to '-dfft').

-drgba
eq. to '-display_rgba'.
-display_rgba

            Render selected RGBA images over a checkerboard background.
            (eq. to '-drgba').

-dh
eq. to '-display_histogram'.
-display_histogram
_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={ 0 | 1 }

            Render a channel-by-channel histogram.
            (eq. to '-dh').

-dt
eq. to '-display_tensors'.
-display_tensors
_size_factor>0,_ellipse_factor>=0,_opacity,_pattern,_color1,..

            Render field of 2x2 tensors with ellipses.
            (eq. to '-dt').

-dg
eq. to '-display_graph'.
-display_graph
_width>32,_height>32,_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax

            Render graph plot from specified image data.

-da
eq. to '-display_array'.
-display_array
_width>0,_height>0

            Display images in interactive windows where pixel neighborhoods can be explored.

-float2int8

            Convert selected float-valued images to 8bits integer representations.

-int82float

            Convert selected 8bits integer representations to float-valued images.

-float2fft8

            Convert selected float-valued images to 8bits fourier representations.

-fft82float

            Convert selected 8bits fourier representations to float-valued images.

-text2img
text,_line_separator

            Insert a new 2d image where values are ASCII characters of specified input text.

-img2text
_line_separator
-Return text contained in a multi-line image.
-apply_camera
_command,_camera_index>=-1,_skip_frames>=0

            Apply specified command on live camera stream, and display it on display window [0].

-rainbow_lut

            Generate a 256-entries RGB colormap of rainbow colors.

### ** Image creation and drawing :

-ball
_R,_G,_B

            Draw a colored RGBA ball sprite on selected images.

-sierpinski
recursion_level>=0

            Draw Sierpinski triangle on selected images.

-text_outline
text,_x[%],_y[%],_font_height>0,_outline>=0,_opacity,_color1,..

            Draw specified colored and outlined text string on selected images.

-histogram_cumul
_nb_levels>0,_is_normalized={ 0 | 1 },_val0[%],_val1[%]

            Compute cumulative histogram of selected images.

-direction2rgb

            Compute RGB representation of selected 2d direction fields.

-vector2tensor

            Convert selected vector fields to corresponding diffusion tensor fields.

-rgb2bayer
_start_pattern=0,_color=0

            Transform selected color images to RGB-Bayer sampled images.

-bayer2rgb
_GM_smoothness,_RB_smoothness1,_RB_smoothness2

            Transform selected RGB-Bayer sampled images to color images.

-lic
_amplitude>0,_channels>0

            Generate LIC representation of vector field.

-gaussian
_sigma1[%],_sigma2[%],_angle

            Draw a centered gaussian on selected images, with specified standard deviations and orientation.

-function1d
0<=smoothness<=1,x0,y0,x1,y1,...,xn,yn

            Generate continuous 1d function from specified list of keypoints (xk,yk)
            in range [0,max(xk)] (xk are integers).

-pointcloud
_type = { -X=-X-opacity | 0=binary | 1=cumulative | 2=label }

            Convert a Nx1, Nx2 or Nx3 image as a point cloud in a 1d/2d or 3d binary image.

-snowflake
_recursion>=0,_x0,_y0,_x1,_y1,_x2,_y2,_opacity,_col1,..._colN

            Draw a Koch snowflake on selected images.

-turbulence
_radius>0,_octaves={1,2,3...,12},_alpha>0,_difference={-10,10},_mode={0,1,2,3}

            Generate fractal noise or turbulence.

-marble
_image_weight,_pattern_weight,_angle,_amplitude,_sharpness>=0,_anisotropy>=0,_alpha=.6,_sigma=1.1,_cut_low>=0,_cut_high>=0

            Generate a marble like pattern.

### ** Image filtering :

-blur_x
amplitude[%]>=0,_borders={ 0 | 1 }

            Blur selected images along the X-axis.

-blur_y
amplitude[%]>=0,_borders={ 0 | 1 }

            Blur selected images along the Y-axis.

-blur_z
amplitude[%]>=0,_borders={ 0 | 1 }

            Blur selected images along the Z-axis.

-blur_xy
amplitude_x[%],amplitude_y[%],_borders={ 0 | 1 }

            Blur selected images along the X and Y axes.

-blur_xyz
amplitude_x[%],amplitude_y[%],amplitude_z,_borders={ 0 | 1 }

            Blur selected images along the X, Y and Z axes.

-blur_angular
_amplitude[%],_cx,_cy

            Apply angular blur on selected images.

-blur_radial
_amplitude[%],_cx,_cy

            Apply radial blur on selected images.

-blur_linear
_amplitude1[%],_amplitude2[%],_angle=0,_borders={ 0=dirichlet | 1=neumann }

            Apply linear blur on selected images, with specified angle and amplitudes.

-dog
_sigma1>=0[%],_sigma2>=0[%]

            Compute difference of gaussian on selected images.

-pde_flow
_nb_iter>=0,_dt,_velocity_command,_sequence_flag={ 0 | 1 }

            Apply iterations of a generic PDE flow on selected images.

-heat_flow
_nb_iter>=0,_dt,_sequence_flag={ 0 | 1 }

            Apply iterations of the heat flow on selected images.

-meancurvature_flow
_nb_iter>=0,_dt,_sequence_flag={ 0 | 1 }

            Apply iterations of the mean curvature flow on selected images.

-tv_flow
_nb_iter>=0,_dt,_sequence_flag={ 0 | 1 }

            Apply iterations of the total variation flow on selected images.

-inpaint_flow
_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma

            Apply iteration of the inpainting flow on selected images.

-remove_hotpixels
_mask_size>0, _threshold[%]>0

            Remove hot pixels in selected images.

-richardson_lucy
amplitude[%]>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={ 0=Tikhonov | 1=meancurv. | 2=TV }

            Deconvolve image with the iterative Richardson-Lucy algorithm.

-oriented_richardson_lucy
amplitude1[%]>=0,_amplitude2[%]>=0,_angle,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={ 0=Tikhonov | 1=meancurv. | 2=TV }

            Deconvolve image with the iterative Richardson-Lucy algorithm for oriented kernels.

-unsharp
_radius[%]>=0,_amount>=0,_threshold[%]>=0

            Apply unsharp mask on selected images.

-unsharp_octave
_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0

            Apply octave sharpening on selected images.

-normalize_local
_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_is_cut={ 0 | 1 },_min=0,_max=255

            Normalize selected images locally.

-map_tones
_threshold>=0,_gamma>=0,_smoothness>=0,iter>=0

            Apply tone mapping operator based on Poisson equation.

-fftpolar

            Compute fourier transform of selected images, as centered magnitude/phase images.

-ifftpolar

            Compute inverse fourier transform of selected images, from centered magnitude/phase images.

-convolve_fft

            Convolve selected images two-by-two through fourier transforms.

-deconvolve_fft

            Deconvolve selected images two-by-two through fourier transforms.

-bandpass
_min_freq[%],_max_freq[%]

            Apply bandpass filter to selected images.

-watermark_fourier
_text,_size>0

            Add an textual watermark in the frequency domain of selected images.

-split_freq
smoothness>0[%]

            Split selected images into low and high frequency parts.

-compose_freq

            Compose selected low and high frequency parts into new images.

-erode_oct
_size>=0

            Apply octagonal erosion of selected images by specified size.

-dilate_oct
_size>=0

            Apply octagonal dilation of selected image by specified size.

-erode_circ
_size>=0

            Apply circular erosion of selected images by specified size.

-dilate_circ
_size>=0

            Apply circular dilation of selected image by specified size.

-skeleton

            Compute skeleton of binary shapes using morphological thinning.

### ** Contours and variations :

-gradient_norm

            Compute gradient norm of selected images.

-gradient_orientation
_dimension={1,2,3}

            Compute N-D gradient orientation of selected images.

-gradient2rgb
_orientation={ 0 | 1 }

            Compute RGB representation of 2d gradient of selected images.

-laplacian

            Compute Laplacian of selected images.

-divergence

            Compute divergence of selected vector fields.

-inn

            Compute gradient-directed 2nd derivative of image(s).

-iee

            Compute gradient-orthogonal-directed 2nd derivative of image(s).

-curvature

            Compute isophote curvatures on selected images.

-edges
_threshold[%]>=0

            Estimate contours of selected images.

-isophotes
_nb_levels>0

            Render isophotes of selected images on a transparent background.

-topographic_map
_nb_levels>0,_smoothness

            Render selected images as topographic maps.

-segment_watershed
_threshold>=0,_edge_threshold>0,_keep_watershed={ 0 | 1 }

            Apply watershed segmentation on selected images.

### ** Arrays and frames :

-array
_M>0,_N>0,_expand_type={0,1,2}

            Create MxN array from selected images.

-array_fade
_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2}

            Create MxN array from selected images.

-array_mirror
_N>=0,_dir={0,1,2},_expand_type={ 0 | 1 }

            Create 2^Nx2^N array from selected images.

-array_random
_Ms>0,_Ns>0,_Md>0,_Nd>0

            Create MdxNd array of tiles from selected MsxNs source arrays.

-array_pattern
_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2}

            Create random MxN array from selected images.

-taquin
_M>0,_N>0

            Create MxN taquin puzzle from selected images.

-imagegrid
_M>0,_N>0

            Create MxN image grid from selected images.

-frame
_size_x[%]>=0,_size_y[%]>=0,_col1,...,_colN

            Insert RGBA-colored frame in selected images.

-frame_fuzzy
_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A

            Draw RGBA-colored fuzzy frame in selected images.

-frame_round
_sharpness>0,_size>=0,_smoothness,_shade,_R,_G,_B,_A

            Draw RGBA-colored round frame in selected images.

-frame_blur
_sharpness>0,_size>=0,_smoothness,_shade,_blur

            Draw RGBA-colored round frame in selected images.

-frame_pattern
_M>=3,_pattern = { 0=first image | 1=self },_constrain_size = { 0 | 1 }

            Insert selected pattern frame in selected images.

-rotate_tiles
_angle,_M>0,N>0

            Apply MxN tiled-rotation effect on selected images.

-shift_tiles
_M>0,_N>0,_amplitude

            Apply MxN tiled-shift effect on selected images.

-linearize_tiles
_M>0,_N>0

            Linearize MxN tiles on selected images.

-quadratize_tiles
_M>0,_N>0

            Quadratize MxN tiles on selected images.

-tunnel
_level>=0,_factor>0,_cx,_cy,_opacity.

            Apply tunnel effect on selected images.

### ** Artistic effects :

-polaroid
_size1>=0,_size2>=0

            Create polaroid effect in selected images.

-drop_shadow
_offset_x[%],_offset_y[%],_smoothness[%]

            Drop shadow behind selected images.

-tetris
_scale>0

            Apply tetris effect on selected images.

-mosaic
_density>=0,_edges={ 0 | 1 }

            Create random mosaic from selected images.

-puzzle
_scale>=0

            Apply puzzle effect on selected images.

-sponge
_size>0

            Apply sponge effect on selected images.

-hearts
_density>=0

            Apply heart effect on selected images.

-color_ellipses
_count>0,_radius>=0,_opacity>=0

            Add random color ellipses to selected images.

-ellipsionism
_R>0[%],_r>0[%],_smoothness>=0[%],_opacity,_outline>0,_density>0

            Apply ellipsionism filter to selected images.

-whirls
_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0

            Add random whirl texture to selected images.

-cartoon
_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0

            Apply cartoon effect on selected images.

-drawing
_amplitude>=0

            Apply drawing effect on selected images.

-draw_whirl
_amplitude>=0

            Apply whirl drawing effect on selected images.

-stencil
_radius[%]>=0,_smoothness>=0,_iterations>=0

            Apply stencil filter on selected images.

-stencilbw
_edges>=0,_smoothness>=0

            Apply B&W stencil effect on selected images.

-pencilbw
_size>=0,_amplitude>=0

            Apply B&W pencil effect on selected images.

-hardsketchbw
_amplitude>=0,_sampling>=0,_opacity,0<=_edge_threshold<=100

            Apply hard B&W sketch effect on selected images.

-sketchbw

            _nb_orients>0,_start_angle,_angle_range>=0,_length>=0,_threshold>=0,
            _opacity,_bgfactor>=0,_density>0,_sharpness>=0,
            _anisotropy>=0,_smoothness>=0,_coherence>=0,_is_boost={ 0 | 1 },_is_curved={ 0 | 1 }

            Apply sketch effect to selected images.

-ditheredbw

            Create dithered B&W version of selected images.

-dotsbw
_nb_scales>=0,_resolution>0,_radius>=0

            Apply B&W dots effect on selected images.

-warhol
_M>0,_N>0,_smoothness>=0,_color>=0

            Create MxN Andy Warhol-like artwork from selected images.

-cubism
_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0

            Apply cubism effect on selected images.

-glow
_amplitude>=0

            Add soft glow on selected images.

-old_photo

            Apply old photo effect on selected images.

### ** Spatial warping :

-euclidean2polar
_cx,_cy,_n>0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Apply euclidean to polar transform on selected images.

-polar2euclidean
_cx,_cy,_n>0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Apply polar to euclidean transform on selected images.

-warp_perspective
_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Warp selected images with perspective deformation.

-water
_amplitude>=0,_smoothness>=0

            Apply water deformation on selected images.

-wave
_amplitude>=0,_frequency>=0,_center_x,_center_y

            Apply wave deformation on selected images.

-twirl
_amplitude,_cx,_cy,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Apply twirl deformation on selected images.

-map_sphere
_width>0,_height>0,_radius,_dilation>0

            Map selected images on a sphere.

-flower
_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Apply flower deformation on selected images.

-zoom
_factor,_cx,_cy,_cz,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Apply zoom factor to selected images.

-deform
_amplitude>=0

            Apply random smooth deformation on selected images.

-fisheye
_x,_y,0<=_radius<=100,_amplitude>=0

            Apply fish-eye deformation on selected images.

-transform_polar
"expr_radius",_"expr_angle",_x_center,_y_center,_borders={ 0 | 1 }

            Apply user-defined transform on polar representation of selected images.

-kaleidoscope
_cx,_cy,_radius,_angle,_borders={ 0=dirichlet | 1=neumann | 2=cyclic }

            Create kaleidoscope effect from selected images.

-rotoidoscope
_cx,_cy,_tiles>0,_smoothness[%]>=0,_borders={ 0=dirichlet | 1=neumann | 2=cyclic}

            Create rotational kaleidoscope effect from selected images.

### ** Image degradation :

-spread
_dx>=0,_dy>=0,_dz>=0

            Spread pixel values of selected images randomly along x,y and z.

-shade_stripes
_frequency>=0,_direction={ 0 | 1 },_darkness>=0,_lightness>=0

            Add shade stripes to selected images.

-stripes_y
_frequency>=0

            Add vertical stripes to selected images.

-shadow_patch
_opacity>=0

            Add shadow patches to selected images.

-light_patch
_density>0,_darkness>=0,_lightness>=0

            Add light patches to selected images.

-light_relief
_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={ 0 | 1 }

            Apply relief light to selected images.

-noise_hurl
_amplitude>=0

            Add hurl noise to selected images.

-pixelize
_scale_x>0,_scale_y>0,_scale_z>0

            Pixelize selected images with specified scales.

-paper

            Add paper texture to selected images.

-cracks
_density>=0,_amplitude,_relief={ 0 | 1 }

            Add random cracks to selected images.

-watermark_visible
_text,0<_opacity<1,_size>0,_angle,_mode={ 0=remove | 1=add }

            Add or remove a visible watermark on selected images (value range must be [0,255]).

### ** Color-related filters :

-apply_channels
"command",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A,ch,c,h},_normalize={ 0=cut | 1=normalize }

            Apply specified command on chosen normalized channels of each selected images.

-to_gray

            Force selected images to be in GRAY mode.

-to_graya

            Force selected images to be in GRAYA mode.

-to_rgb

            Force selected images to be in RGB mode.

-to_rgba

            Force selected images to be in RGBA mode.

-to_colormode
mode={ 0=adaptive | 1=G | 2=GA | 3=RGB | 4=RGBA }

            Force selected images to be in a given color mode.

-remove_opacity

            Remove opacity channel of selected images.

-select_color
_tolerance[%]>=0,col1,..,colN

            Select pixels with specified color in selected images.

-replace_color
_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN

            Replace pixels from/to specified colors in selected images.

-fc
eq. to '-fill_color'.
-fill_color
col1,...,colN

            Fill selected images with specified color.
            (eq. to '-fc').

-luminance

            Compute luminance of selected images.

-mix_rgb
a11,a12,a13,a21,a22,a23,a31,a32,a33

            Apply 3x3 specified matrix to RGB colors of selected images.

-mix_channels
(a00,...,aMN)

            Apply specified matrix to channels of selected images.

-solarize

            Solarize selected images.

-sepia

            Apply sepia tones effect on selected images.

-split_opacity

            Split color and opacity parts of selected images.

-red_eye
0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1

            Attenuate red-eye effect in selected images.

-rgb2lch

            Convert selected images from RGB to Lch color bases.

-lch2rgb

            Convert selected images from Lch to RGB color bases.

-lab2lch

            Convert selected images from Lab to Lch color bases.

-lch2lab

            Convert selected images from Lch to Lab color bases.

-rgb2hsv8

            Convert selected images from RGB to HSV8 color bases.

-hsv82rgb

            Convert selected images from HSV8 to RGB color bases.

-rgb2hsl8

            Convert selected images from RGB to HSL8 color bases.

-hsl82rgb

            Convert selected images from HSL8 to RGB color bases.

-rgb2hsi8

            Convert selected images from RGB to HSI8 color bases.

-hsi82rgb

            Convert selected images from HSI8 to RGB color bases.

-rgb2yuv8

            Convert selected images from RGB to YUV8 color bases.

-yuv82rgb

            Convert selected images from YUV8 to RGB color bases.

-rgb2xyz8

            Convert selected images from RGB to XYZ8 color bases.

-xyz82rgb

            Convert selected images from XYZ8 to RGB color bases.

-rgb2lab8

            Convert selected images from RGB to Lab8 color bases.

-lab82rgb

            Convert selected images from Lab8 to RGB color bases.

-rgb2lch8

            Convert selected images from RGB to Lch8 color bases.

-lch82rgb

            Convert selected images from Lch8 to RGB color bases.

### ** Image fading and composition :

-fade_x
0<=_start<=100,0<=_end<=100

            Create horizontal fading from selected images.

-fade_y
0<=_start<=100,0<=_end<=100

            Create vertical fading from selected images.

-fade_z
0<=_start<=100,0<=_end<=100

            Create transversal fading from selected images.

-fade_radial
0<=_start<=100,0<=_end<=100

            Create radial fading from selected images.

-fade_diamond
0<=_start<=100,0<=_end<=100

            Create diamond fading from selected images.

-fade_linear
_angle,0<=_start<=100,0<=_end<=100

            Create linear fading from selected images.

-compose_channels

            Compose all channels of each selected image, using specified arithmetic operator (+,-,or,min,...).

-compose_rgba

            Compose selected RGBA images two-by-two, over RGB background.

-compose_average

            Compose selected images two-by-two, using average mode.

-compose_multiply

            Compose selected images two-by-two, using multiply mode.

-compose_screen

            Compose selected images two-by-two, using screen mode.

-compose_darken

            Compose selected images two-by-two, using darken mode.

-compose_lighten

            Compose selected images two-by-two, using lighten mode.

-compose_difference

            Compose selected images two-by-two, using difference mode.

-compose_negation

            Compose selected images two-by-two, using negation mode.

-compose_exclusion

            Compose selected images two-by-two, using exclusion mode.

-compose_overlay

            Compose selected images two-by-two, using overlay mode.

-compose_hardlight

            Compose selected images two-by-two, using hard light mode.

-compose_softlight

            Compose selected images two-by-two, using soft light mode.

-compose_dodge

            Compose selected images two-by-two, using dodge mode.

-compose_colorburn

            Compose selected images two-by-two, using color burn mode.

-compose_reflect

            Compose selected images two-by-two, using reflect mode.

-compose_freeze

            Compose selected images two-by-two, using freeze mode.

-compose_stamp

            Compose selected images two-by-two, using stamp mode.

-compose_interpolation

            Compose selected images two-by-two, using interpolation mode.

-compose_grainextract

            Compose selected images two-by-two, using grain extract mode.

-compose_grainmerge

            Compose selected images two-by-two, using grain merge mode.

-compose_xor

            Compose selected images two-by-two, using xor mode.

-compose_hue

            Compose selected images two-by-two, using hue mode.

-compose_saturation

            Compose selected images two-by-two, using saturation mode.

-compose_value

            Compose selected images two-by-two, using value mode.

-compose_edges
_smoothness[%]>=0

            Compose selected images togethers using edge composition.

-compose_fade

            Compose selected images togethers using a given fading (defined as the latest image).

-compose_shapeaverage

            Compose selected images two-by-two, using shape average mode.

### ** Motion-related and video processing :

-cross_correlation

            Compute cross-correlation using two-by-two selected images.

-normalized_cross_correlation

            Compute normalized cross-correlation using two-by-two selected images.

-phase_correlation

            Estimate translation vector using two-by-two selected images.

-morph
nb_frames>0,_smoothness>=0,_precision>0

            Create morphing sequence between selected images.

-register_nonrigid
_smoothness>=0,_precision>0,_nb_scale>=0

            Register selected images with non-rigid warp.

-register_rigid
_smoothness>=0

            Register selected images with rigid warp.

-deinterlace
_method={ 0 | 1 }

            Deinterlace selected images ('method' can be { 0=standard or 1=motion-compensated }).

-animate

            filter_name,"param1_start,..,paramN_start","param1_end,..,paramN_end",nb_frames>=0,_output_frames={ 0 | 1 },_filename |
            delay>0

            Animate filter from starting parameters to ending parameters.

### ** 3d-related filters :

-empty3d

            Create new empty 3d object.

-apply_pose3d
p1,..,p12

            Apply 3d pose matrix to selected 3d objects.

-animate3d
_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename

            Animate selected 3d objects in a window.

-colorcube3d

            Generate 3d color wireframe cube.

-distribution3d

            Generate 3d color distribution of selected image$?.

-histogram3d

            Generate 3d color histogram of selected image$?.

-pointcloud3d

            Generate 3d point cloud from selected volumetric images.

-balls3d
_size>0,_R,_G,_B,_opacity

            Convert selected 3d objects into 3d ball sets.

-circles3d
_radius>=0

            Convert specified 3d objects to sets of 3d circles with specified radius.

-imageplane3d

            Generate 3d mapped planes from selected images.

-imagesphere3d
_resolution1>=3,_resolution2>=3

            Generate 3d mapped sphere from selected images.

-imagecube3d

            Generate 3d mapped cubes from selected images.

-image6cube3d

            Generate 3d mapped cubes from selected sets of 6 selected images.

-imagepyramid3d

            Generate 3d mapped pyramides from selected images.

-projections3d
_x[%],_y[%],_z[%],_is_bounding_box={ 0 | 1 }

            Generate 3d xy,xz,yz projection planes from specified volumetric images.

-pyramid3d
_width,_height

            Generate 3d pyramid at (0,0,0), with specified geometry.

-gyroid3d
_resolution>0,_zoom

            Generate 3d gyroid at (0,0,0), with specified resolution.

-weird3d
_resolution>0

            Generate 3d weird object at (0,0,0), with specified resolution.

-text3d
text,_font_height>0,_depth>0,_smoothness

            Generate a 3d text object from specified text.

-gmic3d

            Generate a 3d G'MIC logo.

-extrude3d
_depth>0,_resolution>0,_smoothness[%]>=0

            Generated extruded 3d object from selected binary profiles.

-lathe3d
_resolution>0,_smoothness[%]>=0,_max_angle>=0

            Generate 3d object from selected binary XY-profiles.

-cup3d
_resolution>0

            Generate a new 3d cup object.

-sierpinski3d
_recursion_level>=0,_width,_height

            Generate new 3d Sierpinski pyramid.

-parametric3d
_x(a,b),_y(a,b),_z(a,b),_amin,_amax,_bmin,_bmax,_res_a>0,_res_b>0,_res_x>0,_res_y>0,_res_z>0,_smoothness>=0,_isovalue>=0

            Generate new 3d object from specified parametric surface (x(a,b),y(a,b),z(a,b)).

-snapshot3d
_size>0,_zoom>=0,_backgroundR,_backgroundG,_backgroundB

            Create 2d snapshots of selected 3d objects.
            Set 'zoom' to 0 to disable object auto-scaling.

-label_points3d
_label_size>0,_opacity

            Add a numbered label to all vertices of selected 3d objects.

### ** Interactive demos :

-x_mandelbrot
_julia={ 0 | 1 },_c0r,_c0i

            Launch Mandelbrot/Julia explorer.

-x_fisheye

            Launch fish-eye demo.

-x_spline

            Launch spline curve editor.

-x_tictactoe

            Launch tic-tac-toe game.

-x_fourier

            Launch fourier filtering demo.

-x_life

            Launch the game of life.

-x_fire

            Launch the fire demo.

-x_light

            Launch the light demo.

-x_jawbreaker
0<_width<20,0<_height<20,0<_balls<=8

            Launch the Jawbreaker game.

-x_paint

            Launch the interactive painter.

### ** Others :

-gpt
_scorefile,_title,_photo_width>0

            Generate score board for the GPT championship (GREYC Poker Tour).
            (works probably only on Unix-based machines, need 'wget','rm','gunzip','cp' and 'mv').

## Examples of use

     'gmic' is a generic image processing tool which can be used in a wide variety of situations.
     The few examples below illustrate possible uses :

      - View a list of images :
         gmic file1.bmp file2.jpeg

      - Convert an image file :
         gmic input.bmp -o output.jpg

      - Create a volumetric image from a movie sequence :
         gmic input.mpg -a z -o output.hdr

      - Compute image gradient norm :
         gmic input.bmp -gradient_norm

      - Denoise a color image :
         gmic image.jpg -denoise 30,10 -o denoised.jpg

      - Compose two images using overlay fading :
         gmic image1.jpg image2.jpg -compose_overlay -o composed.jpg

      - Evaluate a mathematical expression :
         gmic -e "cos(pi/4)^2+sin(pi/4)^2={cos(pi/4)^2+sin(pi/4)^2}"

      - Plot a 2d function :
         gmic 1000,1,1,2 -f "X=3*(x-500)/500;X^2*sin(3*X^2)+if(c==0,u(0,-1),cos(X*10))" -plot

      - Plot a 3d elevated function in random colors:
         gmic 128,128,1,3,"?(0,255)" -plasma 10,3 -blur 4 -sharpen 10000 \
          128,128,1,1,"X=(x-64)/6;Y=(y-64)/6;100*exp(-(X^2+Y^2)/30)*abs(cos(X)*sin(Y))"\
          -elevation3d[-2] [-1] -rm[-1]

      - Plot the isosurface of a 3d volume :
         gmic -m3d 5 -md3d 5 -db3d 0 -isosurface3d "'x^2+y^2+abs(z)^abs(4*cos(x*y*z*3))'",3

      - Create a G'MIC 3d logo :
         gmic 1 -text G\'MIC,0,0,57,1,1,1,1 -expand_xy 10,0 -blur 2 -n 0,100 --plasma 0.4 -+ \
          -blur 1 -elevation3d -0.1 -md3d 4

      - Create a 3d ring of torii :
         gmic -repeat 20 -torus3d 15,2 -col3d[-1] "{?(60,255)},{?(60,255)},{?(60,255)}" \
          -*3d[-1] 0.5,1 -if "{@{>,-1}%2}" -rot3d[-1] 0,1,0,90 -endif -+3d[-1] 70 -+3d \
          -rot3d 0,0,1,18 -done -md3d 3 -m3d 5 -db3d 0

      - Create a vase from a 3d isosurface :
         gmic -md3d 4 -isosurface3d "'x^2+2*abs(y/2)*sin(2*y)^2+z^2-3',0" -sphere3d 1.5 \
          --3d[-1] 0,5 -plane3d 15,15 -rot3d[-1] 1,0,0,90 -c3d[-1] -+3d[-1] 0,3.2 \
          -col3d[-1] 180,150,255 -col3d[-2] 128,255,0 -col3d[-3] 255,128,0 -+3d

      - Display filtered webcam stream :
         gmic -apply_camera \"--mirror x --mirror y -+ -/ 4\"

      - Launch a set of G'MIC interactive demos :
         gmic -x_fisheye -x_fire G\'MIC -x_tictactoe -rm -x_spline -x_mandelbrot 0 -x_light \
              -x_life -x_jawbreaker