------------------------------------------------------------------------------- -- Phase: setup ------------------------------------------------------------------------------- Installing /packages/All/libnghttp2-1.40.0.txz Installing /packages/All/ca_root_nss-3.52.txz ===== Message from ca_root_nss-3.52: -- FreeBSD does not, and can not warrant that the certification authorities whose certificates are included in this package have in any way been audited for trustworthiness or RFC 3647 compliance. Assessment and verification of trust is the complete responsibility of the system administrator. This package installs symlinks to support root certificates discovery by default for software that uses OpenSSL. This enables SSL Certificate Verification by client software without manual intervention. If you prefer to do this manually, replace the following symlinks with either an empty file or your site-local certificate bundle. * /etc/ssl/cert.pem * /usr/local/etc/ssl/cert.pem * /usr/local/openssl/cert.pem Installing /packages/All/openssl-1.1.1g,1.txz Installing /packages/All/curl-7.70.0.txz Installing /packages/All/expat-2.2.8.txz Installing /packages/All/jsoncpp-1.9.2.txz Installing /packages/All/libuv-1.37.0.txz Installing /packages/All/indexinfo-0.3.1.txz Installing /packages/All/gettext-runtime-0.20.2.txz Installing /packages/All/rhash-1.3.9.txz Installing /packages/All/liblz4-1.9.2_1,1.txz Installing /packages/All/lzo2-2.10_1.txz Installing /packages/All/libarchive-3.4.2,1.txz Installing /packages/All/ncurses-6.1.20190525.txz Installing /packages/All/cmake-3.17.2.txz Installing /packages/All/pkgconf-1.6.3,1.txz Installing /packages/All/libICE-1.0.10,1.txz Installing /packages/All/libSM-1.2.3,1.txz Installing /packages/All/libXau-1.0.9.txz Installing /packages/All/libxml2-2.9.10.txz Installing /packages/All/libpthread-stubs-0.4.txz Installing /packages/All/xorgproto-2020.1.txz Installing /packages/All/libXdmcp-1.1.3.txz Installing /packages/All/libxcb-1.13.1.txz Installing /packages/All/libX11-1.6.9_1,1.txz Installing /packages/All/libXext-1.3.4,1.txz Installing /packages/All/fftw3-3.3.8_6.txz Installing /packages/All/freetype2-2.10.1.txz ===== Message from freetype2-2.10.1: -- The 2.7.x series now uses the new subpixel hinting mode (V40 port's option) as the default, emulating a modern version of ClearType. This change inevitably leads to different rendering results, and you might change port's options to adapt it to your taste (or use the new "FREETYPE_PROPERTIES" environment variable). The environment variable "FREETYPE_PROPERTIES" can be used to control the driver properties. Example: FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ cff:no-stem-darkening=1 \ autofitter:warping=1 This allows to select, say, the subpixel hinting mode at runtime for a given application. If LONG_PCF_NAMES port's option was enabled, the PCF family names may include the foundry and information whether they contain wide characters. For example, "Sony Fixed" or "Misc Fixed Wide", instead of "Fixed". This can be disabled at run time with using pcf:no-long-family-names property, if needed. Example: FREETYPE_PROPERTIES=pcf:no-long-family-names=1 How to recreate fontconfig cache with using such environment variable, if needed: # env FREETYPE_PROPERTIES=pcf:no-long-family-names=1 fc-cache -fsv The controllable properties are listed in the section "Controlling FreeType Modules" in the reference's table of contents (/usr/local/share/doc/freetype2/reference/site/index.html, if documentation was installed). Installing /packages/All/jpeg-turbo-2.0.4.txz Installing /packages/All/libffi-3.2.1_3.txz Installing /packages/All/wayland-1.16.0.txz Installing /packages/All/pciids-20200421.txz Installing /packages/All/libpciaccess-0.16.txz Installing /packages/All/libdrm-2.4.101.txz Installing /packages/All/libelf-0.8.13_3.txz Installing /packages/All/libXfixes-5.0.3_2.txz Installing /packages/All/libXdamage-1.1.5.txz Installing /packages/All/libXrender-0.9.10_2.txz Installing /packages/All/libXrandr-1.5.2.txz Installing /packages/All/libxshmfence-1.3.txz Installing /packages/All/libXxf86vm-1.1.4_3.txz Installing /packages/All/mesa-libs-19.0.8.txz ===== Message from mesa-libs-19.0.8: -- ===> NOTICE: This port is deprecated; you may wish to reconsider installing it: Uses Python 2.7 which is EOLed upstream. It is scheduled to be removed on or after 2020-12-31. Installing /packages/All/libGLU-9.0.1.txz Installing /packages/All/libXi-1.7.10,1.txz Installing /packages/All/freeglut-3.0.0_2.txz ===== Message from freeglut-3.0.0_2: -- Joystick support is untested and it is unknown if it works. Do not hesitate to contact x11@FreeBSD.org if this causes issues. Installing /packages/All/libXt-1.2.0,1.txz Installing /packages/All/libXmu-1.1.3,1.txz Installing /packages/All/jasper-2.0.16_1.txz Installing /packages/All/jbigkit-2.1_1.txz Installing /packages/All/tiff-4.1.0.txz Installing /packages/All/lcms2-2.9.txz Installing /packages/All/png-1.6.37.txz Installing /packages/All/giflib-5.2.1.txz Installing /packages/All/webp-1.1.0.txz Installing /packages/All/libwmf-0.2.8.4_15.txz Installing /packages/All/GraphicsMagick-1.3.35,1.txz Installing /packages/All/ilmbase-2.5.1.txz Installing /packages/All/openexr-2.5.1.txz Installing /packages/All/opencv-core-3.4.1_31.txz ===== Message from opencv-core-3.4.1_31: -- ===> NOTICE: The opencv-core port currently does not have a maintainer. As a result, it is more likely to have unresolved issues, not be up-to-date, or even be removed in the future. To volunteer to maintain this port, please create an issue at: https://bugs.freebsd.org/bugzilla More information about port maintainership is available at: https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port Installing /packages/All/protobuf-3.11.4,1.txz Installing /packages/All/leptonica-1.76.0_1.txz ===== Message from leptonica-1.76.0_1: -- To use gplot (the optional programmatic interface to gnuplot), the math/gnuplot port must be installed. Installing /packages/All/icu-67.1,1.txz Installing /packages/All/fontconfig-2.13.92_2,1.txz Running fc-cache to build fontconfig cache... Font directories: /usr/local/share/fonts /usr/local/lib/X11/fonts /usr/local/share/fonts: skipping, no such directory /usr/local/lib/X11/fonts: skipping, no such directory /var/db/fontconfig: cleaning cache directory fc-cache: succeeded Installing /packages/All/pcre-8.43_2.txz Installing /packages/All/libiconv-1.14_11.txz Installing /packages/All/readline-8.0.4.txz Installing /packages/All/python37-3.7.7.txz ===== Message from python37-3.7.7: -- Note that some standard Python modules are provided as separate ports as they require additional dependencies. They are available as: py37-gdbm databases/py-gdbm@py37 py37-sqlite3 databases/py-sqlite3@py37 py37-tkinter x11-toolkits/py-tkinter@py37 Installing /packages/All/glib-2.56.3_7,1.txz No schema files found: doing nothing. Installing /packages/All/pixman-0.40.0.txz Installing /packages/All/cairo-1.16.0,2.txz Installing /packages/All/graphite2-1.3.14.txz Installing /packages/All/harfbuzz-2.6.5.txz Installing /packages/All/fribidi-0.19.7.txz Installing /packages/All/libfontenc-1.1.4.txz Installing /packages/All/mkfontscale-1.2.1.txz Installing /packages/All/font-bh-ttf-1.0.3_4.txz Installing /packages/All/font-misc-meltho-1.0.3_4.txz Installing /packages/All/font-misc-ethiopic-1.0.3_4.txz Installing /packages/All/encodings-1.0.5,1.txz Installing /packages/All/dejavu-2.37_1.txz ===== Message from dejavu-2.37_1: -- Make sure that the freetype module is loaded. If it is not, add the following line to the "Modules" section of your X Windows configuration file: Load "freetype" Add the following line to the "Files" section of X Windows configuration file: FontPath "/usr/local/share/fonts/dejavu/" Note: your X Windows configuration file is typically /etc/X11/XF86Config if you are using XFree86, and /etc/X11/xorg.conf if you are using X.Org. Installing /packages/All/xorg-fonts-truetype-7.7_1.txz Installing /packages/All/libXft-2.3.3.txz Installing /packages/All/pango-1.42.4_3.txz Installing /packages/All/tesseract-data-4.0.0.txz Installing /packages/All/tesseract-4.1.1_2.txz Installing /packages/All/gflags-2.2.2_2.txz Installing /packages/All/glog-0.4.0_1.txz Installing /packages/All/hdf-szip-2.1.1.txz Installing /packages/All/hdf5-1.10.6,1.txz Installing /packages/All/aom-2.0.0.r1.txz Installing /packages/All/libass-0.14.0.txz Installing /packages/All/dav1d-0.6.0_1.txz Installing /packages/All/gmp-6.2.0.txz Installing /packages/All/nettle-3.5.1_1.txz Installing /packages/All/libtasn1-4.16.0.txz Installing /packages/All/libunistring-0.9.10_1.txz Installing /packages/All/libidn2-2.3.0_1.txz Installing /packages/All/p11-kit-0.23.20.txz Installing /packages/All/tpm-emulator-0.7.4_2.txz ===> Creating groups. Creating group '_tss' with gid '601'. ===> Creating users Creating user '_tss' with uid '601'. Installing /packages/All/trousers-0.3.14_2.txz ===> Creating groups. Using existing group '_tss'. ===> Creating users Using existing user '_tss'. ===== Message from trousers-0.3.14_2: -- To run tcsd automatically, add the following line to /etc/rc.conf: tcsd_enable="YES" You might want to edit /usr/local/etc/tcsd.conf to reflect your setup. If you want to use tcsd with software TPM emulator, use the following configuration in /etc/rc.conf: tcsd_enable="YES" tcsd_mode="emulator" tpmd_enable="YES" To use TPM, add your_account to '_tss' group like following: # pw groupmod _tss -m your_account Installing /packages/All/gnutls-3.6.13.txz Installing /packages/All/opus-1.3.1.txz Installing /packages/All/libogg-1.3.4,4.txz Installing /packages/All/libvorbis-1.3.6,3.txz Installing /packages/All/libtheora-1.1.1_7.txz Installing /packages/All/argp-standalone-1.3_4.txz ===== Message from argp-standalone-1.3_4: -- ===> NOTICE: The argp-standalone port currently does not have a maintainer. As a result, it is more likely to have unresolved issues, not be up-to-date, or even be removed in the future. To volunteer to maintain this port, please create an issue at: https://bugs.freebsd.org/bugzilla More information about port maintainership is available at: https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port Installing /packages/All/libudev-devd-0.4.2.txz Installing /packages/All/libv4l-1.18.0.txz Installing /packages/All/libva-2.7.1.txz Installing /packages/All/libvdpau-1.3_1.txz Installing /packages/All/libvpx-1.8.2_1.txz Installing /packages/All/libx264-0.159.2999.txz Installing /packages/All/x265-3.2.1_2.txz Installing /packages/All/xvid-1.3.7,1.txz Installing /packages/All/ffmpeg-4.2.2_17,1.txz Installing /packages/All/opencv-3.4.1_31.txz ===== Message from opencv-3.4.1_31: -- ===> NOTICE: The opencv port currently does not have a maintainer. As a result, it is more likely to have unresolved issues, not be up-to-date, or even be removed in the future. To volunteer to maintain this port, please create an issue at: https://bugs.freebsd.org/bugzilla More information about port maintainership is available at: https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port SUCCEEDED 00:02:01 ------------------------------------------------------------------------------- -- Phase: check-sanity ------------------------------------------------------------------------------- SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: pkg-depends ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/sbin/pkg - found SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: fetch-depends ------------------------------------------------------------------------------- SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: fetch ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/sbin/pkg - found ===> Fetching all distfiles required by gmic-2.9.0_2 for building SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: checksum ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/sbin/pkg - found ===> Fetching all distfiles required by gmic-2.9.0_2 for building => SHA256 Checksum OK for gmic_2.9.0.tar.gz. SUCCEEDED 00:00:01 ------------------------------------------------------------------------------- -- Phase: extract-depends ------------------------------------------------------------------------------- SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: extract ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/sbin/pkg - found ===> Fetching all distfiles required by gmic-2.9.0_2 for building ===> Extracting for gmic-2.9.0_2 => SHA256 Checksum OK for gmic_2.9.0.tar.gz. Extracted Memory Use: 14.88M SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: patch-depends ------------------------------------------------------------------------------- SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: patch ------------------------------------------------------------------------------- ===> Patching for gmic-2.9.0_2 ===> Applying ports patches for gmic-2.9.0_2 ===> Cleanly applied ports patch(es) patch-CMakeLists.txt patch-src_gmic.cpp ===> Applying dragonfly patches for gmic-2.9.0_2 ===> Cleanly applied dragonfly patch(es) patch-src_CImg.h patch-src_gmic.cpp SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: build-depends ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/bin/cmake - found ===> gmic-2.9.0_2 depends on package: pkgconf>=1.3.0_1 - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/ice.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/sm.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/xext.pc - found SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: lib-depends ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on shared library: libfftw3.so - found (/usr/local/lib/libfftw3.so) ===> gmic-2.9.0_2 depends on shared library: libGraphicsMagick++.so - found (/usr/local/lib/libGraphicsMagick++.so) ===> gmic-2.9.0_2 depends on shared library: libIlmImf.so - found (/usr/local/lib/libIlmImf.so) ===> gmic-2.9.0_2 depends on shared library: libImath.so - found (/usr/local/lib/libImath.so) ===> gmic-2.9.0_2 depends on shared library: libopencv_core.so - found (/usr/local/lib/libopencv_core.so) ===> gmic-2.9.0_2 depends on shared library: libopencv_video.so - found (/usr/local/lib/libopencv_video.so) ===> gmic-2.9.0_2 depends on shared library: libpng.so - found (/usr/local/lib/libpng.so) ===> gmic-2.9.0_2 depends on shared library: libtiff.so - found (/usr/local/lib/libtiff.so) ===> gmic-2.9.0_2 depends on shared library: libjpeg.so - found (/usr/local/lib/libjpeg.so) SUCCEEDED 00:00:01 ------------------------------------------------------------------------------- -- Phase: configure ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/bin/cmake - found ===> gmic-2.9.0_2 depends on package: pkgconf>=1.3.0_1 - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/ice.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/sm.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/xext.pc - found ===> gmic-2.9.0_2 depends on shared library: libfftw3.so - found (/usr/local/lib/libfftw3.so) ===> gmic-2.9.0_2 depends on shared library: libGraphicsMagick++.so - found (/usr/local/lib/libGraphicsMagick++.so) ===> gmic-2.9.0_2 depends on shared library: libIlmImf.so - found (/usr/local/lib/libIlmImf.so) ===> gmic-2.9.0_2 depends on shared library: libImath.so - found (/usr/local/lib/libImath.so) ===> gmic-2.9.0_2 depends on shared library: libopencv_core.so - found (/usr/local/lib/libopencv_core.so) ===> gmic-2.9.0_2 depends on shared library: libopencv_video.so - found (/usr/local/lib/libopencv_video.so) ===> gmic-2.9.0_2 depends on shared library: libpng.so - found (/usr/local/lib/libpng.so) ===> gmic-2.9.0_2 depends on shared library: libtiff.so - found (/usr/local/lib/libtiff.so) ===> gmic-2.9.0_2 depends on shared library: libjpeg.so - found (/usr/local/lib/libjpeg.so) ===> Configuring for gmic-2.9.0_2 ===> Performing out-of-source build /bin/mkdir -p /construction/graphics/gmic/.build CMake Deprecation Warning at CMakeLists.txt:57 (cmake_policy): The OLD behavior for policy CMP0046 will be removed from a future version of CMake. The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that a policy should be set to OLD only under specific short-term circumstances. Projects should be ported to the NEW behavior and not rely on setting a policy to OLD. -- The CXX compiler identification is GNU 8.3.0 -- The C compiler identification is GNU 8.3.0 -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ - works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc - works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Found PkgConfig: pkgconf (found version "1.6.3") -- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") -- Found CURL: /usr/local/lib/libcurl.so (found version "7.70.0") -- Found X11: /usr/local/include -- Looking for XOpenDisplay in /usr/local/lib/libX11.so;/usr/local/lib/libXext.so -- Looking for XOpenDisplay in /usr/local/lib/libX11.so;/usr/local/lib/libXext.so - found -- Looking for gethostbyname -- Looking for gethostbyname - found -- Looking for connect -- Looking for connect - found -- Looking for remove -- Looking for remove - found -- Looking for shmat -- Looking for shmat - found -- Looking for IceConnectionNumber in ICE -- Looking for IceConnectionNumber in ICE - found X11_INCLUDE_DIR: /usr/local/include X11_INCLUDE_DIRs: X11_LIBRARY_DIR: /usr/local/lib X11_LIBRARY_DIRS: -- Checking for module 'fftw3>=3.0' -- Found fftw3, version 3.3.8 -- Checking for module 'opencv' -- Found opencv, version 3.4.1 -- Checking for module 'GraphicsMagick++' -- Found GraphicsMagick++, version 1.3.35 -- Found TIFF: /usr/local/lib/libtiff.so (found version "4.1.0") -- Found PNG: /usr/local/lib/libpng.so (found version "1.6.37+apng") -- Found JPEG: /usr/local/lib/libjpeg.so (found version "80") -- Checking for module 'OpenEXR' -- Found OpenEXR, version 2.5.1 -- The following OPTIONAL packages have been found: * CURL * X11 * TIFF * ZLIB * PNG * JPEG -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project: CMAKE_C_FLAGS_RELEASE CMAKE_MODULE_LINKER_FLAGS CMAKE_NO_BUILTIN_CHRPATH THREADS_HAVE_PTHREAD_ARG -- Build files have been written to: /construction/graphics/gmic/.build SUCCEEDED 00:00:04 ------------------------------------------------------------------------------- -- Phase: build ------------------------------------------------------------------------------- ===> Building for gmic-2.9.0_2 /usr/local/bin/cmake -S/construction/graphics/gmic/gmic-2.9.0 -B/construction/graphics/gmic/.build --check-build-system CMakeFiles/Makefile.cmake 0 /usr/local/bin/cmake -E cmake_progress_start /construction/graphics/gmic/.build/CMakeFiles /construction/graphics/gmic/.build/CMakeFiles/progress.marks /usr/bin/make -f CMakeFiles/Makefile2 all --- CMakeFiles/gmic_extra_headers.dir/all --- /usr/bin/make -f CMakeFiles/gmic_extra_headers.dir/build.make CMakeFiles/gmic_extra_headers.dir/depend --- CMakeFiles/gmic_extra_headers.dir/depend --- cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/gmic_extra_headers.dir/DependInfo.cmake Scanning dependencies of target gmic_extra_headers /usr/bin/make -f CMakeFiles/gmic_extra_headers.dir/build.make CMakeFiles/gmic_extra_headers.dir/build [ 0%] Built target gmic_extra_headers --- CMakeFiles/libgmic.dir/all --- /usr/bin/make -f CMakeFiles/libgmic.dir/build.make CMakeFiles/libgmic.dir/depend --- CMakeFiles/libgmic.dir/depend --- cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/libgmic.dir/DependInfo.cmake Scanning dependencies of target libgmic /usr/bin/make -f CMakeFiles/libgmic.dir/build.make CMakeFiles/libgmic.dir/build --- CMakeFiles/libgmic.dir/src/gmic.cpp.o --- [ 16%] Building CXX object CMakeFiles/libgmic.dir/src/gmic.cpp.o /usr/bin/c++ -Dlibgmic_EXPORTS -I/usr/local/include -I/usr/local/include/opencv -I/usr/local/include/GraphicsMagick -I/usr/local/include/OpenEXR -pipe -O2 -fno-strict-aliasing -Ofast -Dgmic_build -Dcimg_use_vt100 -Dgmic_is_parallel -Dcimg_use_abort -Wno-error=narrowing -fpermissive -fopenmp -Dcimg_use_openmp -Dcimg_use_zlib -Dcimg_use_curl -Dcimg_display=1 -Dcimg_appname=\"gmic\" -Dcimg_use_xshm -Dcimg_use_fftw3 -fPIC -Dcimg_use_opencv -Dcimg_use_magick -Dcimg_use_tiff -Dcimg_use_png -Dcimg_use_jpeg -Dcimg_use_openexr -std=gnu++11 -o CMakeFiles/libgmic.dir/src/gmic.cpp.o -c /construction/graphics/gmic/gmic-2.9.0/src/gmic.cpp In file included from /construction/graphics/gmic/gmic-2.9.0/src/gmic.h:222, from /construction/graphics/gmic/gmic-2.9.0/src/gmic.cpp:1994: /construction/graphics/gmic/gmic-2.9.0/src/./CImg.h:568:32: warning: unknown option after '#pragma GCC diagnostic' kind [-Wpragmas] #pragma GCC diagnostic ignored "-Wdeprecated-copy" ^~~~~~~~~~~~~~~~~~~ --- libgmic.so.1 --- [ 33%] Linking CXX shared library libgmic.so /usr/local/bin/cmake -E cmake_link_script CMakeFiles/libgmic.dir/link.txt --verbose=1 /usr/bin/c++ -fPIC -pipe -O2 -fno-strict-aliasing -Ofast -Dgmic_build -Dcimg_use_vt100 -Dgmic_is_parallel -Dcimg_use_abort -Wno-error=narrowing -fpermissive -fopenmp -Dcimg_use_openmp -Dcimg_use_zlib -Dcimg_use_curl -Dcimg_display=1 -Dcimg_appname=\"gmic\" -Dcimg_use_xshm -Dcimg_use_fftw3 -shared -Wl,-soname,libgmic.so.1 -o libgmic.so.1 CMakeFiles/libgmic.dir/src/gmic.cpp.o -L/usr/local/lib /usr/local/lib/libSM.so /usr/local/lib/libICE.so /usr/local/lib/libX11.so /usr/local/lib/libXext.so /usr/local/lib/libtiff.so /usr/local/lib/libpng.so /usr/lib/libz.so /usr/local/lib/libjpeg.so -lGraphicsMagick++ -lGraphicsMagick -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 -lIexMath-2_5 -lIlmThread-2_5 -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_modern -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_photo -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core /usr/lib/libz.so /usr/local/lib/libcurl.so -lfftw3 -lgomp -lfftw3_threads -lpthread /usr/local/lib/libjpeg.so -lGraphicsMagick++ -lGraphicsMagick -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 -lIexMath-2_5 -lIlmThread-2_5 -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_modern -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_photo -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core /usr/local/lib/libcurl.so -lfftw3 -lgomp -lfftw3_threads -lpthread /usr/local/bin/cmake -E cmake_symlink_library libgmic.so.1 libgmic.so.1 libgmic.so [ 33%] Built target libgmic --- CMakeFiles/gmic.dir/all --- /usr/bin/make -f CMakeFiles/gmic.dir/build.make CMakeFiles/gmic.dir/depend --- CMakeFiles/gmic.dir/depend --- cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/gmic.dir/DependInfo.cmake Scanning dependencies of target gmic /usr/bin/make -f CMakeFiles/gmic.dir/build.make CMakeFiles/gmic.dir/build --- CMakeFiles/gmic.dir/src/gmic_cli.cpp.o --- [ 50%] Building CXX object CMakeFiles/gmic.dir/src/gmic_cli.cpp.o /usr/bin/c++ -I/usr/local/include -I/usr/local/include/opencv -I/usr/local/include/GraphicsMagick -I/usr/local/include/OpenEXR -pipe -O2 -fno-strict-aliasing -Ofast -Dgmic_build -Dcimg_use_vt100 -Dgmic_is_parallel -Dcimg_use_abort -Wno-error=narrowing -fpermissive -fopenmp -Dcimg_use_openmp -Dcimg_use_zlib -Dcimg_use_curl -Dcimg_display=1 -Dcimg_appname=\"gmic\" -Dcimg_use_xshm -Dcimg_use_fftw3 -fPIE -Dcimg_use_opencv -Dcimg_use_magick -Dcimg_use_tiff -Dcimg_use_png -Dcimg_use_jpeg -Dcimg_use_openexr -std=gnu++11 -o CMakeFiles/gmic.dir/src/gmic_cli.cpp.o -c /construction/graphics/gmic/gmic-2.9.0/src/gmic_cli.cpp In file included from /construction/graphics/gmic/gmic-2.9.0/src/gmic.h:222, from /construction/graphics/gmic/gmic-2.9.0/src/gmic_cli.cpp:51: /construction/graphics/gmic/gmic-2.9.0/src/./CImg.h:568:32: warning: unknown option after '#pragma GCC diagnostic' kind [-Wpragmas] #pragma GCC diagnostic ignored "-Wdeprecated-copy" ^~~~~~~~~~~~~~~~~~~ --- gmic --- [ 66%] Linking CXX executable gmic /usr/local/bin/cmake -E cmake_link_script CMakeFiles/gmic.dir/link.txt --verbose=1 /usr/bin/c++ -pipe -O2 -fno-strict-aliasing -Ofast -Dgmic_build -Dcimg_use_vt100 -Dgmic_is_parallel -Dcimg_use_abort -Wno-error=narrowing -fpermissive -fopenmp -Dcimg_use_openmp -Dcimg_use_zlib -Dcimg_use_curl -Dcimg_display=1 -Dcimg_appname=\"gmic\" -Dcimg_use_xshm -Dcimg_use_fftw3 CMakeFiles/gmic.dir/src/gmic_cli.cpp.o -o gmic -L/usr/local/lib libgmic.so.1 /usr/local/lib/libSM.so /usr/local/lib/libICE.so /usr/local/lib/libX11.so /usr/local/lib/libXext.so /usr/local/lib/libtiff.so /usr/local/lib/libpng.so /usr/lib/libz.so /usr/local/lib/libjpeg.so -lGraphicsMagick++ -lGraphicsMagick -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 -lIexMath-2_5 -lIlmThread-2_5 -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_modern -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_photo -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core /usr/lib/libz.so /usr/local/lib/libjpeg.so -lGraphicsMagick++ -lGraphicsMagick -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 -lIexMath-2_5 -lIlmThread-2_5 -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_modern -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_photo -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core /usr/local/lib/libcurl.so -lfftw3 -lgomp -lfftw3_threads -lpthread [ 66%] Built target gmic --- CMakeFiles/bashcompletion.dir/all --- --- CMakeFiles/man.dir/all --- --- CMakeFiles/bashcompletion.dir/all --- /usr/bin/make -f CMakeFiles/bashcompletion.dir/build.make CMakeFiles/bashcompletion.dir/depend --- CMakeFiles/man.dir/all --- /usr/bin/make -f CMakeFiles/man.dir/build.make CMakeFiles/man.dir/depend --- CMakeFiles/bashcompletion.dir/all --- --- CMakeFiles/bashcompletion.dir/depend --- cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/bashcompletion.dir/DependInfo.cmake --- CMakeFiles/man.dir/all --- --- CMakeFiles/man.dir/depend --- cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/man.dir/DependInfo.cmake --- CMakeFiles/bashcompletion.dir/all --- Scanning dependencies of target bashcompletion --- CMakeFiles/man.dir/all --- Scanning dependencies of target man --- CMakeFiles/bashcompletion.dir/all --- /usr/bin/make -f CMakeFiles/bashcompletion.dir/build.make CMakeFiles/bashcompletion.dir/build --- CMakeFiles/man.dir/all --- /usr/bin/make -f CMakeFiles/man.dir/build.make CMakeFiles/man.dir/build --- CMakeFiles/bashcompletion.dir/all --- --- resources/gmic_bashcompletion.sh --- --- CMakeFiles/man.dir/all --- --- man/gmic.1 --- --- CMakeFiles/bashcompletion.dir/all --- [ 83%] Generating resources/gmic_bashcompletion.sh --- CMakeFiles/man.dir/all --- [100%] Generating man/gmic.1 --- CMakeFiles/bashcompletion.dir/all --- LD_LIBRARY_PATH=/construction/graphics/gmic/.build /construction/graphics/gmic/.build/gmic -v - /construction/graphics/gmic/gmic-2.9.0/src/gmic_stdlib.gmic raw:/construction/graphics/gmic/gmic-2.9.0/src/gmic_stdlib.gmic,uchar -document_gmic bash 2> /construction/graphics/gmic/.build/resources/gmic_bashcompletion.sh --- CMakeFiles/man.dir/all --- LD_LIBRARY_PATH=/construction/graphics/gmic/.build /construction/graphics/gmic/.build/gmic -v - /construction/graphics/gmic/gmic-2.9.0/src/gmic_stdlib.gmic raw:/construction/graphics/gmic/gmic-2.9.0/src/gmic_stdlib.gmic,uchar -__help man 2> /construction/graphics/gmic/.build/man/gmic.1 .TH G'MIC 1 .SH NAME gmic \- Perform image processing operations using the G'MIC framework. .SH HELP \fBgmic: GREYC's Magic for Image Computing:\fR command-line interface (https://gmic.eu)\fR \fBVersion 2.9.0\fR Copyright (c) 2008-2020, David Tschumperle / GREYC / CNRS. \fI(https://www.greyc.fr)\fR \fI1. Usage\fR \fBgmic [command1 [arg1_1,arg1_2,..]] .. [commandN [argN_1,argN_2,..]]\fR 'gmic\fR' is the open-source interpreter of the G'MIC\fR language, a script-based programming language dedicated to the design of possibly complex image processing pipelines and operators. It can be used to convert, manipulate, filter and visualize image datasets made of one or several 1D/2D or 3D multi-spectral images. This reference documentation describes all the technical rules governing the G'MIC\fR language. As a starting point, you may want to visit our detailed tutorial pages, at: \fBhttps://gmic.eu/tutorial/\fR \fI2. Overall Context\fR - At any time, G'MIC\fR manages one list of numbered (and optionally named) pixel-based images, entirely stored in computer memory (uncompressed). - The first image of the list has index '0\fR' and is denoted by '\fB[0]\fR'. The second image of the list is denoted by '\fB[1]\fR', the third by '\fB[2]\fR' and so on. - Negative indices are treated in a periodic way: '\fB[-1]\fR' refers to the last image of the list, '\fB[-2]\fR' to the penultimate one, etc. Thus, if the list has 4 images, '\fB[1]\fR' and '\fB[-3]\fR' both designate the second image of the list. - A named image may be also indicated by '\fB[name]\fR', if 'name\fR' uses the character set [a-zA-Z0-9_]\fR and does not start with a number. Image names can be set or reassigned at any moment during the processing pipeline (see command '\fBname\fR' for this purpose). - G'MIC\fR defines a set of various commands and substitution mechanisms to allow the design of complex pipelines and operators managing this list of images, in a very flexible way: You can insert or remove images in the list, rearrange image order, process images (individually or grouped), merge image data together, display and output image files, etc. - Such a pipeline can define a new custom G'MIC\fR command (stored in a user command file), and re-used afterwards as a regular command, in a larger pipeline if necessary. \fI3. Image Definition and Terminology\fR - In G'MIC\fR, each image is modeled as a 1D, 2D, 3D or 4D array of scalar values, uniformly discretized on a rectangular/parallelepipedic domain. - The four dimensions of this array are respectively denoted by: . 'width\fR', the number of image columns (size along the 'x'-axis\fR). . 'height\fR', the number of image rows (size along the 'y'-axis\fR). . 'depth\fR', the number of image slices (size along the 'z'-axis\fR). (the depth is equal to 1\fR for usual color or grayscale 2D images). . 'spectrum\fR', the number of image channels (size along the 'c'-axis\fR). (the spectrum is respectively equal to 3\fR and 4\fR for usual RGB\fR and RGBA\fR color images). - There are no hard limitations on the size of the image along each dimension. For instance, the number of image slices or channels can be of arbitrary size within the limits of the available memory. - The width, height\fR and depth\fR of an image are considered as spatial dimensions, while the spectrum\fR has a multi-spectral meaning. Thus, a 4D image in G'MIC\fR should be most often regarded as a 3D dataset of multi-spectral voxels. Most of the G'MIC\fR commands will stick with this idea (e.g. command '\fBblur\fR' blurs images only along the spatial 'xyz\fR'-axes). - G'MIC\fR stores all the image data as buffers of 'float\fR' values (32 bits, value range [-3.4E38,+3.4E38]\fR). It performs all its image processing operations with floating point numbers. Each image pixel takes then 32bits/channel (except if double-precision buffers have been enabled during the compilation of the software, in which case 64bits/channel can be the default). - Considering 'float\fR'-valued pixels ensure to keep the numerical precision when executing image processing pipelines. For image input/output operations, you may want to prescribe the image datatype to be different than 'float\fR' (like 'bool\fR', 'char\fR', 'int\fR', etc...). This is possible by specifying it as a file option when using I/O commands. (see section 'Input/Output Properties\fR' to learn more about file options). \fI4. Items of a Processing Pipeline\fR - In G'MIC\fR, an image processing pipeline is described as a sequence of items separated by the space character ' '. Such items are interpreted and executed from the left to the right. For instance, the expression: \fBfilename.jpg blur 3,0 sharpen 10 resize 200%,200% output file_out.jpg\fR defines a valid pipeline composed of nine G'MIC\fR items. - Each G'MIC\fR item is a string that is either a command\fR, a list of command arguments\fR, a filename\fR, or a special input string\fR. - Escape characters '\\\fR' and double quotes '"\fR' can be used to define items containing spaces or other special characters. For instance, the two strings '\fBsingle\\ item\fR' and '\fB"single item"\fR' both define the same single item, with a space in it. \fI5. Input Data Items\fR - If a specified G'MIC\fR item appears to be an existing filename, the corresponding image data are loaded and inserted at the end of the image list (which is equivalent to the use of '\fBinput filename\fR'). - Special filenames '\fB-\fR' and '\fB-.ext\fR' stand for the standard input/output streams, optionally forced to be in a specific 'ext\fR' file format (e.g. '\fB-.jpg\fR' or '\fB-.png\fR'). - The following special input strings may be used as G'MIC\fR items to create and insert new images with prescribed values, at the end of the image list: . '\fB[selection]\fR' or '\fB[selection]xN\fR': Insert 1 or N copies of already existing images. 'selection\fR' may represent one or several images (see section 'Command Items and Selections\fR' to learn more about selections). . '\fBwidth[%],_height[%],_depth[%],_spectrum[%],_values[xN]\fR': Insert one or N images with specified size and values (adding '%\fR' to a dimension means 'percentage of the size along the same axis, taken from the last image '[-1]\fR''). Any specified dimension can be also written as '\fB[image]\fR', and is then set to the size (along the same axis) of the existing specified image [image]\fR. 'values\fR' can be either a sequence of numbers separated by commas ',\fR', or a mathematical expression, as e.g. in input item '\fB256,256,1,3,[x,y,128]\fR' which creates a 256x256 RGB color image with a spatial shading on the red and green channels. (see section 'Mathematical Expressions\fR' to learn more about mathematical expressions). . '\fB(v1,v2,..)[xN]\fR': Insert one or N new images from specified prescribed values. Value separator inside parentheses can be ',\fR' (column separator), ';\fR' (row separator), '/\fR' (slice separator) or '^\fR' (channel separator). For instance, expression '\fB(1,2,3;4,5,6;7,8,9)\fR' creates a 3x3 matrix (scalar image), with values running from 1 to 9. . '\fB('string'[:delimiter])[xN]\fR': Insert one or N new images from specified string, by filling the images with the character codes composing the string. When specified, 'delimiter\fR' tells about the main orientation of the image. Delimiter can be 'x\fR' (eq. to ',\fR' which is the default), 'y\fR' (eq. to ';\fR'), 'z\fR' (eq. to '/\fR') or 'c\fR' (eq. to '^\fR'). When specified delimiter is ',\fR', ';\fR', '/\fR' or '^\fR', the expression is actually equivalent to '\fB({'string'[:delimiter]})[xN]\fR' (see section 'Substitution Rules\fR' for more information on the syntax). . '\fB0[xN]\fR': Insert one or N new 'empty\fR' images, containing no pixel data. Empty images are used only in rare occasions. - Input item '\fBname=value\fR' declares a new variable 'name\fR', or assign a new string value to an existing variable. Variable names must use the character set [a-zA-Z0-9_]\fR and cannot start with a number. - A variable definition is always local to the current command except when it starts by the underscore character '_\fR'. In that case, it becomes also accessible by any command invoked outside the current command scope (global variable). - If a variable name starts with two underscores '__\fR', the global variable is also shared among different threads and can be read/set by commands running in parallel (see command '\fBparallel\fR' for this purpose). Otherwise, it remains local to the thread that defined it. - Numerical variables can be updated with the use of these special operators: '+=\fR' (addition), '-=\fR' (subtraction), '*=\fR' (multiplication), '/=\fR' (division), '%=\fR' (modulo), '&=\fR' (bitwise and), '|=\fR' (bitwise or), '^=\fR' (power), '<<=\fR' and '>>=\fR' (bitwise left and right shifts). For instance, '\fBfoo=1 foo+=3\fR'. - Input item '\fBname.=string\fR' concatenates specified 'string\fR' to the end of variable 'name\fR'. - Multiple variable assignments and updates are allowed, with expressions: '\fBname1,name2,...,nameN=value\fR' or '\fBname1,name2,...,nameN=value1,value2,...,valueN\fR' where assignment operator '=\fR' can be replaced by one of the allowed operators (e.g. '+=\fR'). - Variables usually store numbers or strings. Use command 'store' to assign variables from image data (and command 'input $variable' to bring them back on the image list afterwards). \fI6. Command Items and Selections\fR - A G'MIC\fR item that is not a filename nor a special input string designates a command\fR, most of the time. Generally, commands perform image processing operations on one or several available images of the list. - Reccurent commands have two equivalent names (regular\fR and short\fR). For instance, command names '\fBresize\fR' and '\fBr\fR' refer to the same image resizing action. - A G'MIC\fR command may have mandatory or optional arguments\fR. Command arguments must be specified in the next item on the command line. Commas ',\fR' are used to separate multiple arguments of a single command, when required. - The execution of a G'MIC\fR command may be restricted only to a subset\fR of the image list, by appending '\fB[selection]\fR' to the command name. Examples of valid syntaxes for 'selection\fR' are: . '\fBcommand[-2]\fR': Apply command only on the penultimate image [-2]\fR of the list. . '\fBcommand[0,1,3]\fR': Apply command only on images [0],[1]\fR and [3]\fR. . '\fBcommand[3-6]\fR': Apply command only on images [3]\fR to [6]\fR (i.e, [3],[4],[5]\fR and [6]\fR). . '\fBcommand[50%-100%]\fR': Apply command only on the second half of the image list. . '\fBcommand[0,-4--1]\fR': Apply command only on the first image and the last four images. . '\fBcommand[0-9:3]\fR': Apply command only on images [0]\fR to [9]\fR, with a step of 3 (i.e. on images [0], [3], [6]\fR and [9]\fR). . '\fBcommand[0-9:25%]\fR': Apply command only on images [0]\fR to [9]\fR, with a step of 25% (i.e. on images [0], [3], [6]\fR and [9]\fR). . '\fBcommand[0--1:2]\fR': Apply command only on images of the list with even indices. . '\fBcommand[0,2-4,50%--1]\fR': Apply command on images [0],[2],[3],[4]\fR and on the second half of the image list. . '\fBcommand[^0,1]\fR': Apply command on all images except the first two. . '\fBcommand[name1,name2]\fR': Apply command on named images 'name1\fR' and 'name2\fR'. - indices in selections are always sorted in increasing order, and duplicate indices are discarded. For instance, selections '\fB[3-1,1-3]\fR' and '\fB[1,1,1,3,2]\fR' are both equivalent to '\fB[1-3]\fR'. If you want to repeat a single command multiple times on an image, use a '\fBrepeat..done\fR' loop instead. Inverting the order of images for a command is achieved by explicitly inverting the order of the images in the list, with command '\fBreverse[selection]\fR'. - Command selections '\fB[-1]\fR','\fB[-2]\fR' and '\fB[-3]\fR' are so often used they have their own shortcuts, respectively '\fB.\fR', '\fB..\fR' and '\fB...\fR'. For instance, command '\fBblur..\fR' (or '\fBblur[..]\fR') is equivalent to '\fBblur[-2]\fR'. These shortcuts work also when specifying command arguments. - G'MIC\fR commands invoked without '\fB[selection]\fR' are applied on all images of the list, i.e. the default selection is '\fB[0--1]\fR' (except for command '\fBinput\fR' whose default selection is '\fB[-1]\fR'). - Prepending a single hyphen '-\fR' to a G'MIC\fR command is allowed. This may be useful to recognize command items more easily in a one-liner pipeline (typically invoked from a shell). - A G'MIC\fR command prepended with a plus sign '+\fR' or a double hyphen '--\fR' does not act 'in-place' but inserts its result as one or several new images at the end of the image list. - There are two different types of commands that can be run by the G'MIC\fR interpreter: . Built-in commands\fR, are the hard-coded functionalities in the interpreter core. They are thus compiled as binary code and run fast, most of the time. Omitting an argument when invoking a built-in command is not permitted, except if all following arguments are also omitted. For instance, invoking '\fBplasma 10,,5\fR' is invalid but '\fBplasma 10\fR' is correct. . Custom commands\fR, are defined as G'MIC\fR pipelines of built-in or other custom commands. They are parsed by the G'MIC\fR interpreter, and thus run a bit slower than built-in commands. Omitting arguments when invoking a custom command is permitted. For instance, expressions '\fBflower ,,,100,,2\fR' or '\fBflower ,\fR' are correct. - Most of the existing commands in G'MIC\fR are actually defined as custom commands\fR. - A user can easily add its own custom commands to the G'MIC\fR interpreter (see section 'Adding Custom Commands\fR' for more details). New built-in commands cannot be added (unless you modify the G'MIC\fR interpreter source code and recompile it). \fI7. Input/Output Properties\fR - G'MIC\fR is able to read/write most of the classical image file formats, including: . 2D grayscale/color files: \fB.png, .jpeg, .gif, .pnm, .tif, .bmp, ...\fR . 3D volumetric files: \fB.dcm, .hdr, .nii, .pan, .inr, .pnk, ...\fR . video files: \fB.mpeg, .avi, .mov, .ogg, .flv, ...\fR . Generic text or binary data files: \fB.gmz, .cimg, .cimgz, .dlm, .asc, .pfm, .raw, .txt, .h.\fR . 3D object files: \fB.off.\fR - When dealing with color images, G'MIC\fR generally reads, writes and displays data using the usual sRGB color space. - G'MIC\fR is able to manage 3D objects\fR that may be read from files or generated by G'MIC\fR commands. A 3D object is stored as a one-column scalar image containing the object data, in the following order: { magic_number; sizes; vertices; primitives; colors; opacities }\fR. These 3D representations can be then processed as regular images. (see command '\fBsplit3d\fR' for accessing each of these 3D object data separately). - Be aware that usual file formats may be sometimes not adapted to store all the available image data, since G'MIC\fR uses float-valued image buffers. For instance, saving an image that was initially loaded as a 16bits/channel image, as a \fB.jpg\fR file will result in a loss of information. Use the G'MIC\fR-specific file extension \fB.gmz\fR to ensure that all data precision is preserved when saving images. - Sometimes, file options may/must be set for file formats: . Video files:\fR Only sub-frames of an image sequence may be loaded, using the input expression '\fBfilename.ext,[first_frame[,last_frame[,step]]]\fR'. Set 'last_frame==-1\fR' to tell it must be the last frame of the video. Set 'step\fR' to 0 to force an opened video file to be opened/closed. Output framerate and codec can be also set by using the output expression '\fBfilename.avi,_fps,_codec,_keep_open={ 0 | 1 }\fR'. 'codec\fR' is a 4-char string (see \fBhttp://www.fourcc.org/codecs.php\fR) or '0\fR' for the default codec. 'keep_open\fR' tells if the output video file must be kept open for appending new frames afterwards. . .cimg[z] files:\fR Only crops and sub-images of .cimg files can be loaded, using the input expressions '\fBfilename.cimg,N0,N1\fR', '\fBfilename.cimg,N0,N1,x0,x1\fR', '\fBfilename.cimg,N0,N1,x0,y0,x1,y1\fR', '\fBfilename.cimg,N0,N1,x0,y0,z0,x1,y1,z1\fR' or '\fBfilename.cimg,N0,N1,x0,y0,z0,c0,x1,y1,z1,c1\fR'. Specifying '-1\fR' for one coordinates stands for the maximum possible value. Output expression '\fBfilename.cimg[z][,datatype]\fR' can be used to force the output pixel type. 'datatype\fR' can be { auto | uchar | char | ushort | short | uint | int | uint64 | int64 | float | double }\fR. . .raw binary files:\fR Image dimensions and input pixel type may be specified when loading .raw\fR files with input expression '\fBfilename.raw[,datatype][,width][,height[,depth[,dim[,offset]]]]]\fR'. If no dimensions are specified, the resulting image is a one-column vector with maximum possible height. Pixel type can also be specified with the output expression '\fBfilename.raw[,datatype]\fR'. 'datatype\fR' can be the same as for .cimg[z]\fR files. . .yuv files:\fR Image dimensions must be specified when loading, and only sub-frames of an image sequence may be loaded, using the input expression '\fBfilename.yuv,width,height[,chroma_subsampling[,first_frame[,last_frame[,step]]]\fR'. 'chroma_subsampling\fR' can be { 420 | 422 | 444 }\fR. When saving, chroma subsampling mode can be specified with output expression '\fBfilename.yuv[,chroma_subsampling]\fR'. . .tiff files:\fR Only sub-images of multi-pages tiff files can be loaded, using the input expression '\fBfilename.tif,_first_frame,_last_frame,_step\fR'. Output expression '\fBfilename.tiff,_datatype,_compression,_force_multipage,_use_bigtiff\fR' can be used to specify the output pixel type, as well as the compression method. 'datatype\fR' can be the same as for .cimg[z]\fR files. 'compression\fR' can be { none (default) | lzw | jpeg }\fR. 'force_multipage\fR can be { 0=no (default) | 1=yes }\fR. 'use_bigtiff\fR can be { 0=no | 1=yes (default) }\fR. . .gif files:\fR Animated gif files can be saved, using the input expression '\fBfilename.gif,fps>0,nb_loops\fR'. Specify 'nb_loops=0\fR' to get an infinite number of animation loops (this is the default behavior). . .jpeg files:\fR The output quality may be specified (in %), using the output expression '\fBfilename.jpg,30\fR' (here, to get a 30% quality output). '100\fR' is the default. . .mnc files:\fR The output header can set from another file, using the output expression '\fBfilename.mnc,header_template.mnc\fR'. . .pan, .cpp, .hpp, .c and .h files:\fR The output datatype can be selected with output expression '\fBfilename[,datatype]\fR'. 'datatype\fR' can be the same as for .cimg[z]\fR files. . .gmic files:\fR These filenames are assumed to be G'MIC\fR custom commands files. Loading such a file will add the commands it defines to the interpreter. Debug information can be enabled/disabled by the input expression '\fBfilename.gmic[,add_debug_info={ 0 | 1 }]\fR'. . Inserting '\fBext:\fR' on the beginning of a filename (e.g. '\fBjpg:filename\fR') forces G'MIC\fR to read/write the file as it would have been done if it had the specified extension '.ext\fR'. - Some input/output formats and options may not be supported, depending on the configuration flags that have been set during the build of the G'MIC\fR software. \fI8. Substitution Rules\fR - G'MIC\fR items containing '$\fR' or '{}\fR' are substituted before being interpreted. Use these substituting expressions to access various data from the interpreter environment. - '\fB$name\fR' and '\fB${name}\fR' are both substituted by the value of the specified named variable\fR (set previously by the item '\fBname=value\fR'). If this variable has not been already set, the expression is substituted by the highest positive index\fR of the named image '[name]\fR'. If no image has this name, the expression is substituted by the value of the OS environment variable\fR with same name (it may be thus an empty string). The following reserved variables are predefined by the G'MIC\fR interpreter: . '\fB$!\fR': The current number of images in the list. . '\fB$>\fR' and '\fB$<\fR': The increasing/decreasing index of the latest (currently running) '\fBrepeat...done\fR' loop. '\fB$>\fR' goes from '0\fR' (first loop iteration) to 'nb_iterations - 1\fR' (last iteration). '\fB$<\fR' does the opposite. . '\fB$/\fR': The current call stack. Stack items are separated by slashes '/\fR'. . '\fB$|\fR': The current value (expressed in seconds) of a millisecond precision timer. . '\fB$^\fR': The current verbosity level. . '\fB$_cpus\fR': The number of computation cores available on your machine. . '\fB$_pid\fR': The current process identifier, as an integer. . '\fB$_prerelease\fR': For pre-releases, the date of the pre-release as 'yymmdd\fR'. For stable releases, this variable is set to 0. . '\fB$_version\fR': A 3-digits number telling about the current version of the G'MIC\fR interpreter (e.g. '290\fR'). . '\fB$_host\fR': A string telling about the host running the G'MIC\fR interpreter (e.g. 'cli\fR' or 'gimp\fR'). . '\fB$_vt100\fR': Set to 1\fR if colored text output is allowed on the console. Otherwise, set to 0\fR . '\fB$_path_rc\fR': The path to the G'MIC\fR folder used to store resources and configuration files (its value is OS-dependent). . '\fB$_path_user\fR': The path to the G'MIC\fR user file .gmic\fR or user.gmic\fR (its value is OS-dependent). . '\fB$_path_commands\fR': A list of all imported command files (stored as a list-valued variable). - '\fB$$name\fR' and '\fB$${name}\fR' are both substituted by the G'MIC script code of the specified named custom command\fR, or by an empty string if no custom command with specified name exists. - '\fB${"-pipeline"}\fR' is substituted by the status value\fR after the execution of the specified G'MIC\fR pipeline (see command '\fBstatus\fR'). Expression '\fB${}\fR' thus stands for the current status value\fR. - '\fB{``string}\fR' (starting with two backquotes) is substituted by a double-quoted version\fR of the specified string. - '\fB{/string}\fR' is substituted by the escaped version\fR of the specified string. - '\fB{'string'[:delimiter]}\fR' (between single quotes) is substituted by the sequence of character codes\fR that composes the specified string, separated by specified delimiter. Possible delimiters are ',\fR' (default), ';\fR', '/\fR', '^\fR' or ' '. For instance, item '\fB{'foo'}\fR' is substituted by '\fB102,111,111\fR' and '\fB{'foo':;}\fR' by '\fB102;111;111\fR'. - '\fB{image,feature[:delimiter]}\fR' is substituted by a specific feature of the image \fB[image]\fR. 'image\fR' can be either an image number or an image name. It can be also eluded, in which case, the last image '\fB[-1]\fR' of the list is considered for the requested feature. Specified 'feature\fR' can be one of: . '\fBb\fR': The image basename (i.e. filename without the folder path nor extension). . '\fBf\fR': The image folder name. . '\fBn\fR': The image name or filename (if the image has been read from a file). . '\fBt\fR': The text string from the image values regarded as character codes. . '\fBx\fR': The image extension (i.e the characters after the last '.' in the image name). . '\fB^\fR : The sequence of all image values, separated by commas ','. . '\fB@subset\fR': The sequence of image values corresponding to the specified subset, and separated by commas ','. . Any other '\fBfeature\fR' is considered as a mathematical expression\fR associated to the image \fB[image]\fR and is substituted by the result of its evaluation (float value). For instance, expression '\fB{0,w+h}\fR' is substituted by the sum of the width and height of the first image (see section 'Mathematical Expressions\fR' for more details). If a mathematical expression starts with an underscore '_\fR', the resulting value is truncated to a readable format. For instance, item '\fB{_pi}\fR' is substituted by '3.14159\fR' (while '\fB{pi}\fR' is substituted by '3.141592653589793\fR'). . A '\fBfeature\fR' delimited by backquotes is replaced by a string whose character codes correspond to the list of values resulting from the evaluation of the specified mathematical expression. For instance, item '\fB{`[102,111,111]`}\fR' is substituted by '\fBfoo\fR' and item '\fB{`vector8(65)`}\fR' by '\fBAAAAAAAA\fR'. - '\fB{*}\fR' is substituted by the visibility state\fR of the instant display window \fB[0]\fR (can be { 0=closed | 1=visible }\fR). - '\fB{*[index],feature1,...,featureN[:delimiter]}\fR' is substituted by a specific set of features of the instant display window \fB#0\fR (or \fB#index\fR, if specified). Requested 'features\fR' can be: . '\fBw\fR': display width (i.e. width of the display area managed by the window). . '\fBh\fR': display height (i.e. height of the display area managed by the window). . '\fBwh\fR': display width x display height. . '\fBd\fR': window width (i.e. width of the window widget). . '\fBe\fR': window height (i.e. height of the window widget). . '\fBde\fR': window width x window height. . '\fBu\fR': screen width (actually independent on the window size). . '\fBv\fR': screen height (actually independent on the window size). . '\fBuv\fR': screen width x screen height. . '\fBn\fR': current normalization type of the instant display. . '\fBt\fR': window title of the instant display. . '\fBx\fR': X-coordinate of the mouse position (or -1, if outside the display area). . '\fBy\fR': Y-coordinate of the mouse position (or -1, if outside the display area). . '\fBb\fR': state of the mouse buttons { 1=left-but. | 2=right-but. | 4=middle-but. }. . '\fBo\fR': state of the mouse wheel. . '\fBk\fR': decimal code of the pressed key if any, 0 otherwise. . '\fBc\fR': boolean (0 or 1) telling if the instant display has been closed recently. . '\fBr\fR': boolean telling if the instant display has been resized recently. . '\fBm\fR': boolean telling if the instant display has been moved recently. . Any other '\fBfeature\fR' stands for a keycode name\fR (in capital letters), and is substituted by a boolean describing the current key state { 0=pressed | 1=released }\fR. . You can also prepend a hyphen '\fB-\fR' to a 'feature\fR' (that supports it) to flush the corresponding event immediately after reading its state (works for keys, mouse and window events). - Item substitution is never performed in items between double quotes\fR. One must break the quotes to enable substitution if needed, as in '\fB"3+8 kg = "{3+8}" kg"\fR'. Using double quotes is then a convenient way to disable the substitutions mechanism in items, when necessary. - One can also disable the substitution mechanism on items outside double quotes, by escaping the '{\fR','}\fR' or '$\fR' characters, as in '\fB\\{3+4\\}\\ doesn't\\ evaluate\fR'. \fI9. Mathematical Expressions\fR - G'MIC\fR has an embedded mathematical parser\fR, used to evaluate (possibly complex) expressions inside braces '{}\fR', or formulas in commands that may take one as an argument (e.g. '\fBfill\fR'). - When the context allows it, a formula is evaluated for each pixel\fR of the selected images (e.g. '\fBfill\fR'). - A math expression may return a scalar\fR or vector\fR-valued result (with a fixed number of components). - The mathematical parser understands the following set of functions, operators and variables: _ Usual operators:\fR \fB||\fR (logical or), \fB&&\fR (logical and), \fB|\fR (bitwise or), \fB&\fR (bitwise and), \fB!=, ==, <=, >=, <, >, <<\fR (left bitwise shift), \fB>>\fR (right bitwise shift), \fB-, +, *, /, %\fR (modulo), \fB^\fR (power), \fB!\fR (logical not), \fB~\fR (bitwise not), \fB++\fR, \fB--\fR, \fB+=\fR, \fB-=\fR, \fB*=\fR, \fB/=\fR, \fB%=\fR, \fB&=\fR, \fB|=\fR, \fB^=\fR, \fB>>=\fR, \fB<<=\fR (in-place operators). _ Usual math functions:\fR \fBabs(), acos(), acosh(), arg(), argkth(), argmax(), argmaxabs(), argmin(), argminabs(), asin(), asinh(), atan(), atan2(), atanh(), avg(), bool(), cbrt(), ceil(), cos(), cosh(), cut(), exp(), fact(), fibo(), floor(), gauss(), int(), isnan(), isnum(), isinf(), isint(), isbool(), isexpr(), isfile(), isdir(), isin(), kth(), log(), log2(), log10(), max(), maxabs(), med(), min(), minabs(), narg(), prod(), rol()\fR (left bit rotation), \fBror()\fR (right bit rotation)\fB, round(), sign(), sin(), sinc(), sinh(), sqrt(), std(), srand(_seed), sum(), tan(), tanh(), var(), xor()\fR. . '\fBatan2(y,x)\fR' is the version of '\fBatan()\fR' with two arguments 'y\fR' and 'x\fR' (as in C/C++). . '\fBpermut(k,n,with_order)\fR' computes the number of permutations of k\fR objects from a set of n\fR objects. . '\fBgauss(x,_sigma,_is_normalized)\fR' returns 'exp(-x^2/(2*s^2))/(is_normalized?sqrt(2*pi*sigma^2):1)\fR'. . '\fBcut(value,min,max)\fR' returns value if it is in range [min,max]\fR, or min\fR or max\fR otherwise. . '\fBnarg(a_1,...,a_N)\fR' returns the number of specified arguments (here, N\fR). . '\fBarg(i,a_1,..,a_N)\fR' returns the ith\fR argument a_i\fR. . '\fBisnum()\fR', '\fBisnan()\fR', '\fBisinf()\fR', '\fBisint()\fR', '\fBisbool()\fR' test the type of the given number or expression, and return 0 (false)\fR or 1 (true)\fR. . '\fBisfile('path')\fR' (resp. '\fBisdir('path')\fR') returns 0 (false)\fR or 1 (true)\fR whether its string argument is a path to an existing file (resp. to a directory) or not. . '\fBisin(v,a_1,...,a_n)\fR' returns 0 (false)\fR or 1 (true)\fR whether the first value 'v\fR' appears in the set of other values 'a_i'. . '\fBinrange(value,m,M,include_boundaries)\fR' returns 0 (false)\fR or 1 (true)\fR whether the specified value lies in range [m,M]\fR or not (checked range is ]m,M[\fR if 'include_boundaries=0\fR'). . '\fBargmin()\fR', '\fBargmax()\fR', '\fBavg()\fR', '\fBkth()\fR', '\fBmax()\fR', '\fBmed()\fR', '\fBmin()\fR', '\fBstd()\fR', '\fBsum()\fR' and '\fBvar()\fR' can be called with an arbitrary number of scalar/vector arguments. . '\fBround(value,rounding_value,direction)\fR' returns a rounded value. 'direction\fR' can be { -1=to-lowest | 0=to-nearest | 1=to-highest }\fR. . '\fBlerp(a,b,t)\fR' returns 'a*(1-t) + b*t\fR'. _ Variable names\fR below are pre-defined. They can be overridden. . '\fBl\fR': length of the associated list of images. . '\fBk\fR': index of the associated image, in [0,l-1]\fR. . '\fBw\fR': width of the associated image, if any (0\fR otherwise). . '\fBh\fR': height of the associated image, if any (0\fR otherwise). . '\fBd\fR': depth of the associated image, if any (0\fR otherwise). . '\fBs\fR': spectrum of the associated image, if any (0\fR otherwise). . '\fBr\fR': shared state of the associated image, if any (0\fR otherwise). . '\fBwh\fR': shortcut for width x height. . '\fBwhd\fR': shortcut for width x height x depth. . '\fBwhds\fR': shortcut for width x height x depth x spectrum (i.e. number of image values). . '\fBim\fR','\fBiM\fR','\fBia\fR','\fBiv\fR','\fBis\fR','\fBip\fR','\fBic\fR': Respectively the minimum, maximum, average, variance, sum, product and median value of the associated image, if any (0\fR otherwise). . '\fBxm\fR','\fBym\fR','\fBzm\fR','\fBcm\fR': The pixel coordinates of the minimum value in the associated image, if any (0\fR otherwise). . '\fBxM\fR','\fByM\fR','\fBzM\fR','\fBcM\fR': The pixel coordinates of the maximum value in the associated image, if any (0\fR otherwise). . All these variables are considered as constant values\fR by the math parser (for optimization purposes) which is indeed the case most of the time. Anyway, this might not be the case, if function '\fBresize(#ind,..)\fR' is used in the math expression. If so, it is safer to invoke functions '\fBl()\fR', '\fBw(_#ind)\fR', '\fBh(_#ind)\fR', ... '\fBs(_#ind)\fR' and '\fBic(_#ind)\fR' instead of the corresponding named variables. . '\fBi\fR': current processed pixel value (i.e. value located at (x,y,z,c)\fR) in the associated image, if any (0\fR otherwise). . '\fBiN\fR': Nth channel value of current processed pixel (i.e. value located at (x,y,z,N)\fR) in the associated image, if any (0\fR otherwise). 'N\fR' must be an integer in range [0,9]\fR. . '\fBR\fR','\fBG\fR','\fBB\fR' and '\fBA\fR' are equivalent to '\fBi0\fR', '\fBi1\fR', '\fBi2\fR' and '\fBi3\fR' respectively. . '\fBI\fR': current vector-valued processed pixel in the associated image, if any (0\fR otherwise). The number of vector components is equal to the number of image channels (e.g. I = [ R,G,B ]\fR for a RGB\fR image). . You may add '\fB#ind\fR' to any of the variable name above to retrieve the information for any numbered image [ind]\fR of the list (when this makes sense). For instance '\fBia#0\fR' denotes the average value of the first image of the list). . '\fBx\fR': current processed column of the associated image, if any (0\fR otherwise). . '\fBy\fR': current processed row of the associated image, if any (0\fR otherwise). . '\fBz\fR': current processed slice of the associated image, if any (0\fR otherwise). . '\fBc\fR': current processed channel of the associated image, if any (0\fR otherwise). . '\fBt\fR': thread id when an expression is evaluated with multiple threads (0\fR means 'master thread'). . '\fBe\fR': value of e, i.e. 2.71828...\fR . '\fBpi\fR': value of pi, i.e. 3.1415926...\fR . '\fBu\fR': a random value between [0,1]\fR, following a uniform distribution. . '\fBg\fR': a random value, following a gaussian distribution of variance 1 (roughly in [-6,6]\fR). . '\fBinterpolation\fR': value of the default interpolation mode used when reading pixel values with the pixel access operators (i.e. when the interpolation argument is not explicitly specified, see below for more details on pixel access operators). Its initial default value is 0\fR. . '\fBboundary\fR': value of the default boundary conditions used when reading pixel values with the pixel access operators (i.e. when the boundary condition argument is not explicitly specified, see below for more details on pixel access operators). Its initial default value is 0\fR. _ Vector calculus:\fR Most operators are also able to work with vector-valued elements. . '\fB[ a0,a1,...,aN-1 ]\fR' defines a N\fR-dimensional vector with scalar coefficients ak\fR. . '\fBvectorN(a0,a1,,...,aN-1)\fR' does the same, with the ak\fR being repeated periodically if only a few are specified. . '\fBvector(#N,a0,a1,,...,aN-1)\fR' does the same, and can be used for any constant expression N\fR. . In previous expressions, the ak\fR can be vectors themselves, to be concatenated into a single vector. . The scalar element ak\fR of a vector X\fR is retrieved by '\fBX[k]\fR'. . The sub-vector [ X[p],X[p+s]...X[p+s*(q-1)] ]\fR (of size q\fR) of a vector X\fR is retrieved by '\fBX[p,q,s]\fR'. . Equality/inequality comparisons between two vectors is done with operators '\fB==\fR' and '\fB!=\fR'. . Some vector-specific functions can be used on vector values: '\fBcross(X,Y)\fR' (cross product), '\fBdot(X,Y)\fR' (dot product), '\fBsize(X)\fR' (vector dimension), '\fBsort(X,_is_increasing,_chunk_size)\fR' (sorting values), '\fBreverse(A)\fR' (reverse order of components), '\fBshift(A,_length,_boundary_conditions)\fR' and '\fBsame(A,B,_nb_vals,_is_case_sensitive)\fR' (vector equality test). . Function '\fBnormP(u1,...,un)\fR' computes the LP-norm of the specified vector (\fBP\fR being an unsigned integer\fR constant or 'inf\fR'). If \fBP\fR is omitted, the L2 norm is used. . Function '\fBresize(A,size,_interpolation,_boundary_conditions)\fR' returns a resized version of a vector 'A\fR' with specified interpolation mode. 'interpolation'\fR can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }\fR, and 'boundary_conditions'\fR can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }\fR. . Function '\fBfind(A,B,_starting_index,_search_step)\fR' returns the index where sub-vector B\fR appears in vector A\fR, (or -1\fR if B\fR is not found in A\fR). Argument A\fR can be also replaced by an image index #ind\fR. . A 2\fR-dimensional vector may be seen as a complex number and used in those particular functions/operators: '\fB**\fR' (complex multiplication), '\fB//\fR' (complex division), '\fB^^\fR' (complex exponentiation), '\fB**=\fR' (complex self-multiplication), '\fB//=\fR' (complex self-division), '\fB^^=\fR' (complex self-exponentiation), '\fBcabs()\fR' (complex modulus), '\fBcarg()\fR' (complex argument), '\fBcconj()\fR' (complex conjugate), '\fBcexp()\fR' (complex exponential), '\fBclog()\fR' (complex logarithm) '\fBccos()\fR' (complex cosine), '\fBcsin()\fR' (complex sine), '\fBctan()\fR' (complex tangent), '\fBccosh()\fR' (complex hyperpolic cosine), '\fBcsinh()\fR' (complex hyperbolic sine) and '\fBctanh()\fR' (complex hyperbolic tangent). . A MN\fR-dimensional vector may be seen as a M\fR x N\fR matrix and used in those particular functions/operators: '\fB*\fR' (matrix-vector multiplication), '\fBdet(A)\fR' (determinant), '\fBdiag(V)\fR' (diagonal matrix from a vector), '\fBeig(A)\fR' (eigenvalues/eigenvectors), '\fBeye(n)\fR' (n x n identity matrix), '\fBinv(A)\fR' (matrix inverse), '\fBmul(A,B,_nb_colsB)\fR' (matrix-matrix multiplication), '\fBpseudoinv(A,_nb_colsA)\fR', '\fBrot(u,v,w,angle)\fR' (3D rotation matrix), '\fBrot(angle)\fR' (2D rotation matrix), '\fBsolve(A,B,_nb_colsB)\fR' (least-square solver of linear system A.X = B), '\fBsvd(A,_nb_colsA)\fR' (singular value decomposition), '\fBtrace(A)\fR' (matrix trace) and '\fBtransp(A,nb_colsA)\fR' (matrix transpose). Argument '\fBnb_colsB\fR' may be omitted if it is equal to 1\fR. . Specifying a vector-valued math expression as an argument of a command that operates on image values (e.g. '\fBfill\fR') modifies the whole spectrum range of the processed image(s), for each spatial coordinates (x,y,z)\fR. The command does not loop over the C\fR-axis in this case. _ String manipulation:\fR Character strings are defined and managed as vectors objects. Dedicated functions and initializers to manage strings are . \fB[ 'string' ]\fR and \fB'string'\fR define a vector whose values are the character codes of the specified character string\fR (e.g. \fB'foo'\fR is equal to [ 102,111,111 ]\fR). . \fB_'character'\fR returns the (scalar) byte code of the specified character (e.g. \fB_'A'\fR is equal to 65\fR). . A special case happens for empty\fR strings: Values of both expressions \fB[ '' ]\fR and \fB''\fR are 0\fR. . Functions '\fBlowercase()\fR' and '\fBuppercase()\fR' return string with all string characters lowercased or uppercased. . Function '\fBstov(str,_starting_index,_is_strict)\fR' parses specified string '\fBstr\fR' and returns the value contained in it. . Function '\fBvtos(expr,_nb_digits,_siz)\fR' returns a vector of size '\fBsiz\fR' which contains the character representation of values described by expression '\fBexpr\fR'. '\fBnb_digits\fR' can be { -1=auto-reduced | 0=all | >0=max number of digits }\fR. . Function '\fBecho(str1,str2,...,strN)\fR' prints the concatenation of given string arguments on the console. . Function '\fBcats(str1,str2,...,strN,siz)\fR' returns the concatenation of given string arguments as a new vector of size '\fBsiz\fR'. _ Special operators\fR can be used: . '\fB;\fR': expression separator. The returned value is always the last encountered expression. For instance expression '\fB1;2;pi\fR' is evaluated as '\fBpi\fR'. . '\fB=\fR': variable assignment. Variables in mathematical parser can only refer to numerical values (vectors or scalars). Variable names are case-sensitive. Use this operator in conjunction with '\fB;\fR' to define more complex evaluable expressions, such as '\fBt=cos(x);3*t^2+2*t+1\fR'. These variables remain local\fR to the mathematical parser and cannot be accessed outside the evaluated expression. . Variables defined in math parser may have a constant\fR property, by specifying keyword '\fBconst\fR' before the variable name (e.g. '\fBconst foo = pi/4;\fR'). The value set to such a variable must be indeed a \fBconstant scalar\fR. Constant variables allows certain types of optimizations in the math JIT compiler. _ The following specific functions\fR are also defined: . '\fBu(max)\fR' or '\fBu(min,max)\fR': return a random value between [0,max]\fR or [min,max]\fR, following a uniform distribution. . '\fBf2ui(value)\fR' and '\fBui2f(value)\fR': Convert a large unsigned integer as a negative floating point value (and vice-versa), so that 32bits floats can be used to store large integers while keeping a unitary precision. . '\fBi(_a,_b,_c,_d,_interpolation_type,_boundary_conditions)\fR': return the value of the pixel located at position (a,b,c,d)\fR in the associated image, if any (0\fR otherwise). 'interpolation_type\fR' can be { 0=nearest neighbor | 1=linear | 2=cubic }\fR. 'boundary_conditions\fR' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }\fR. Omitted coordinates are replaced by their default values which are respectively \fBx, y, z, c, interpolation\fR and \fBboundary\fR. For instance command '\fBfill 0.5*(i(x+1)-i(x-1))\fR' will estimate the X-derivative of an image with a classical finite difference scheme. . '\fBj(_dx,_dy,_dz,_dc,_interpolation_type,_boundary_conditions)\fR' does the same for the pixel located at position (x+dx,y+dy,z+dz,c+dc)\fR (pixel access relative to the current coordinates). . '\fBi[offset,_boundary_conditions]\fR' returns the value of the pixel located at specified 'offset\fR' in the associated image buffer (or 0\fR if offset is out-of-bounds). . '\fBj[offset,_boundary_conditions]\fR' does the same for an offset relative to the current pixel coordinates (x,y,z,c)\fR. . '\fBi(#ind,_x,_y,_z,_c,_interpolation,_boundary_conditions)\fR', '\fBj(#ind,_dx,_dy,_dz,_dc,_interpolation,_boundary_conditions)\fR', '\fBi[#ind,offset,_boundary_conditions]\fR' and '\fBi[offset,_boundary_conditions]\fR' are similar expressions used to access pixel values for any numbered image [ind]\fR of the list. . '\fBI/J[offset,_boundary_conditions]\fR' and '\fBI/J(#ind,_x,_y,_z,_interpolation,_boundary_conditions)\fR' do the same as '\fBi/j[offset,_boundary_conditions]\fR' and '\fBi/j(#ind,_x,_y,_z,_c,_interpolation,_boundary_conditions)\fR' but return a vector instead of a scalar (e.g. a vector [ R,G,B ]\fR for a pixel at (a,b,c)\fR in a color image). . '\fBsort(#ind,_is_increasing,_axis)\fR' sorts the values in the specified image [ind]\fR. . '\fBcrop(_#ind,_x,_y,_z,_c,_dx,_dy,_dz,_dc,_boundary_conditions)\fR' returns a vector whose values come from the cropped region of image [ind]\fR (or from default image selected if '\fBind\fR' is not specified). Cropped region starts from point (x,y,z,c)\fR and has a size of dx x dy x dz x dc\fR. Arguments for coordinates and sizes can be omitted if they are not ambiguous (e.g. '\fBcrop(#ind,x,y,dx,dy)\fR' is a valid invocation of this function). . '\fBdraw(_#ind,S,x,y,z,c,dx,_dy,_dz,_dc,_opacity,_M,_max_M)\fR' draws a sprite S\fR in image [ind]\fR (or in default image selected if '\fBind\fR' is not specified) at coordinates (x,y,z,c)\fR. The size of the sprite dx x dy x dz x dc\fR must be specified. You can also specify a corresponding opacity mask M\fR if its size matches S\fR. . '\fBpolygon(_#ind,nb_vertices,coords,_opacity,_color)\fR' draws a filled polygon in image [ind]\fR (or in default image selected if '\fBind\fR' is not specified) at specified coordinates. It draws a single line if '\fBnb_vertices\fR' is set to 2. . '\fBpolygon(_#ind,-nb_vertices,coords,_opacity,_pattern,_color)\fR' draws a outlined polygon in image [ind]\fR (or in default image selected if '\fBind\fR' is not specified) at specified coordinates and with specified line pattern. It draws a single line if '\fBnb_vertices\fR' is set to 2. . '\fBellipse(_#ind,xc,yc,radius1,_radius2,_angle,_opacity,_color)\fR' draws a filled ellipse in image [ind]\fR (or in default image selected if '\fBind\fR' is not specified) with specified coordinates. . '\fBellipse(_#ind,xc,yc,-radius1,-_radius2,_angle,_opacity,_pattern,_color)\fR' draws an outlined ellipse in image [ind]\fR (or in default image selected if '\fBind\fR' is not specified). . '\fBresize(#ind,w,_h,_d,_s,_interp,_boundary_conditions,_cx,_cy,_cz,_cc)\fR' resizes an image of the associated list with specified dimension and interpolation method. When using this function, you should consider retrieving the (non-constant) image dimensions using the dynamic functions '\fBw(_#ind)\fR', '\fBh(_#ind)\fR', '\fBd(_#ind)\fR', '\fBs(_#ind)\fR', '\fBwh(_#ind)\fR', '\fBwhd(_#ind)\fR' and '\fBwhds(_#ind)\fR' instead of the corresponding constant variables. . '\fBif(condition,expr_then,_expr_else)\fR': return value of '\fBexpr_then\fR' or '\fBexpr_else\fR', depending on the value of '\fBcondition\fR' (0=false, other=true)\fR. '\fBexpr_else\fR' can be omitted in which case 0\fR is returned if the condition does not hold. Using the ternary operator '\fBcondition?expr_then[:expr_else]\fR' gives an equivalent expression. For instance, G'MIC\fR commands '\fBfill if(x%10==0,255,i)\fR' and '\fBfill x%10?i:255\fR' both draw blank vertical lines on every 10th column of an image. . '\fBdo(expression,_condition)\fR' repeats the evaluation of '\fBexpression\fR' until '\fBcondition\fR' vanishes (or until '\fBexpression\fR' vanishes if no '\fBcondition\fR' is specified). For instance, the expression: '\fBif(N<2,N,n=N-1;F0=0;F1=1;do(F2=F0+F1;F0=F1;F1=F2,n=n-1))\fR' returns the Nth value of the Fibonacci sequence, for N>=0\fR (e.g., 46368\fR for N=24\fR). '\fBdo(expression,condition)\fR' always evaluates the specified expression at least once, then check for the loop condition. When done, it returns the last value of '\fBexpression\fR'. . '\fBfor(init,condition,_procedure,body)\fR' first evaluates the expression '\fBinit\fR', then iteratively evaluates '\fBbody\fR' (followed by '\fBprocedure\fR' if specified) while '\fBcondition\fR' is verified (i.e. not zero). It may happen that no iteration is done, in which case the function returns nan\fR. Otherwise, it returns the last value of '\fBbody\fR'. For instance, the expression: '\fBif(N<2,N,for(n=N;F0=0;F1=1,n=n-1,F2=F0+F1;F0=F1;F1=F2))\fR' returns the Nth\fR value of the Fibonacci sequence, for N>=0\fR (e.g., 46368\fR for N=24\fR). . '\fBwhile(condition,expression)\fR' is exactly the same as '\fBfor(init,condition,expression)\fR' without the specification of an initializing expression. . '\fBbreak()\fR' and '\fBcontinue()\fR' respectively breaks and continues the current running bloc (loop, init or main environment). . '\fBfsize('filename')\fR' returns the size of the specified 'filename' (or '-1' if file does not exist). . '\fBdate(attr,'path')\fR' returns the date attribute for the given 'path' (file or directory), with 'attr\fR' being { 0=year | 1=month | 2=day | 3=day of week | 4=hour | 5=minute | 6=second }\fR, or a vector of those values. . '\fBdate(_attr)\fR' returns the specified attribute for the current (locale) date (attributes being { 0...6=same meaning as above | 7=milliseconds }\fR). . '\fBprint(expr1,expr2,...)\fR' or '\fBprint(#ind)\fR' prints the value of the specified expressions (or image information) on the console, and returns the value of the last expression (or nan\fR in case of an image). Function '\fBprints(expr)\fR' also prints the string composed of the character codes defined by the vector-valued expression (e.g. '\fBprints('Hello')\fR'). . '\fBdebug(expression)\fR' prints detailed debug info about the sequence of operations done by the math parser to evaluate the expression (and returns its value). . '\fBdisplay(_X,_w,_h,_d,_s)\fR' or '\fBdisplay(#ind)\fR' display the contents of the vector '\fBX\fR' (or specified image) and wait for user events. if no arguments are provided, a memory snapshot of the math parser environment is displayed instead. . '\fBbegin(expression)\fR' and '\fBend(expression)\fR' evaluates the specified expressions only once, respectively at the beginning and end of the evaluation procedure, and this, even when multiple evaluations are required (e.g. in '\fBfill ">begin(foo = 0); ++foo"\fR'). . '\fBcopy(dest,src,_nb_elts,_inc_d,_inc_s,_opacity)\fR' copies an entire memory block of '\fBnb_elts\fR' elements starting from a source value '\fBsrc\fR' to a specified destination '\fBdest\fR', with increments defined by '\fBinc_d\fR' and '\fBinc_s\fR' respectively for the destination and source pointers. . '\fBstats(_#ind)\fR' returns the statistics vector of the running image '\fB[ind]\fR', i.e the vector [ im,iM,ia,iv,xm,ym,zm,cm,xM,yM,zM,cM,is,ip ]\fR (14 values). . '\fBref(expr,a)\fR' references specified expression 'expr\fR' as variable name 'a\fR'. . '\fBunref(a,b,...)\fR' destroys references to the named variable given as arguments. . '\fBbreakpoint()\fR' inserts a possible computation breakpoint (useless with the cli interface). . '\fB_(expr)\fR' just ignores its arguments (mainly useful for debugging). . '\fBrun('pipeline')\fR' executes the specified G'MIC\fR pipeline as if it was called outside the currently evaluated expression. . '\fBstore(A,'varname',_w,_h,_d,_s,_is_compressed)\fR' transfers the data of vector 'A\fR' as a 'w x h x d x s\fR' image to the G'MIC\fR variable '$varname\fR'. Thus, the data becomes available outside the math expression (that is equivalent to using the regular command '\fBstore\fR', but directly in the math expression). . '\fBname(_#ind,size)\fR' returns a vector of size size\fR, whose values are the characters codes of the name of image \fB[ind]\fR (or default image selected if '\fBind\fR' is not specified). . '\fBsetname(_#ind,string)\fR' sets the name of image \fB[ind]\fR (or default image selected if '\fBind\fR' is not specified). . '\fBcorrelate(I,wI,hI,dI,sI,K,wK,hK,dK,sK,_boundary_conditions,_is_normalized,_channel_mode, _xcenter,_ycenter,_zcenter,_xstart,_ystart,_zstart,_xend,_yend,_zend, _xstride,_ystride,_zstride,_xdilation,_ydilation,_zdilation)\fR' returns the correlation, unrolled as a vector, of the wI\fR x hI\fR x dI\fR x sI\fR-sized image I\fR with the wK\fR x hK\fR x dK\fR x sK\fR-sized kernel K\fR (the meaning of the other arguments are the same as in command '\fBcorrelate\fR'). Similar function '\fBconvolve(...)\fR' is also defined for computing the convolution between I\fR and K\fR. - User-defined macros:\fR . Custom macro functions can be defined in a math expression, using the assignment operator '\fB=\fR', e.g. '\fBfoo(x,y) = cos(x + y); result = foo(1,2) + foo(2,3)\fR'. . Trying to override a built-in function (e.g. '\fBabs()\fR') has no effect. . Overloading macros with different number of arguments is possible. Re-defining a previously defined macro with the same number of arguments discards its previous definition. . Macro functions are indeed processed as macros\fR by the mathematical evaluator. You should avoid invoking them with arguments that are themselves results of assignments or self-operations. For instance, '\fBfoo(x) = x + x; z = 0; foo(++z)\fR' returns '4\fR' rather than expected value '2\fR'. . When substituted, macro arguments are placed inside parentheses, except if a number sign '\fB#\fR' is located just before or after the argument name. For instance, expression '\fBfoo(x,y) = x*y; foo(1+2,3)\fR' returns '9\fR' (being substituted as '\fB(1+2)*(3)\fR'), while expression '\fBfoo(x,y) = x#*y#; foo(1+2,3)\fR' returns '7\fR' (being substituted as '\fB1+2*3\fR'). . Number signs appearing between macro arguments function actually count for '\fBempty\fR' separators. They may be used to force the substitution of macro arguments in unusual places, e.g. as in '\fBstr(N) = ['I like N#'];\fR'. - Multi-threaded\fR and in-place\fR evaluation: . If your image data are large enough and you have several CPUs available, it is likely that the math expression passed to a '\fBfill\fR' or '\fBinput\fR' command is evaluated in parallel, using multiple computation threads. . Starting an expression with '\fB:\fR' or '\fB*\fR' forces the evaluations required for an image to be run in parallel, even if the amount of data to process is small (beware, it may be slower to evaluate in this case!). Specify '\fB:\fR' (instead of '\fB*\fR') to avoid possible image copy done before evaluating the expression (this saves memory, but do this only if you are sure this step is not required!) . If the specified expression starts with '\fB>\fR' or '\fB<\fR', the pixel access operators '\fBi(), i[], j()\fR' and '\fBj[]\fR' return values of the image being currently modified, in forward ('\fB>\fR') or backward ('\fB<\fR') order. The multi-threading evaluation of the expression is also disabled in this case. . Function '\fBcritical(operands)\fR' forces the execution of the given operands in a single thread at a time. . '\fBbegin_t(expression)\fR' and '\fBend_t(expression)\fR' evaluates the specified expressions once for each running thread (so possibly several times) at the beginning and the end of the evaluation procedure. . '\fBmerge(variable,operator)\fR' tells to merge the local variable value computed by threads, with the specified operator, when all threads have finished computing. _ Expressions '\fBi(_#ind,x,_y,_z,_c)=value\fR', '\fBj(_#ind,x,_y,_z,_c)=value\fR', '\fBi[_#ind,offset]=value\fR' and '\fBj[_#ind,offset]=value\fR' set a pixel value at a different location than the running one in the image [ind]\fR (or in the associated image if argument '\fB#ind\fR' is omitted), either with global coordinates/offsets (with '\fBi(...)\fR' and '\fBi[...]\fR'), or relatively to the current position (x,y,z,c)\fR (with '\fBj(...)\fR' and '\fBj[...]\fR'). These expressions always return '\fBvalue\fR'. - The last image of the list is always associated to the evaluations of '\fB{expressions}\fR', e.g. G'MIC\fR sequence '\fB256,128 fill {w}\fR' will create a 256x128 image filled with value 256. \fI10. Image and Data Viewers\fR - G'MIC\fR has some very handy embedded visualization modules\fR, for 1D signals (command '\fBplot\fR'), 1D/2D/3D images (command '\fBdisplay\fR') and 3D objects (command '\fBdisplay3d\fR'). It manages interactive views of the selected image data. - The following actions are available in the interactive viewers: . (mousewheel)\fR: Zoom in/out. . ESC\fR: Close window. . CTRL+D\fR: Increase window size. . CTRL+C\fR: Decrease window size. . CTRL+R\fR: Reset window size. . CTRL+F\fR: Toggle fullscreen mode. . CTRL+S\fR: Save current view as a numbered file 'gmic_xxxx.ext'. . CTRL+O\fR: Save copy of the viewed data, as a numbered file 'gmic_xxxx.ext'. - Actions specific to the 1D/2D image viewer (command '\fBdisplay\fR') are: . Left mouse button\fR: Create an image selection and zoom into it. . Middle mouse button\fR, or CTRL+left mouse button\fR: Move image. . Mouse wheel\fR or PADD+/-\fR: Zoom in/out. . Arrow keys:\fR Move image left/right/up/down. . CTRL+A\fR: Enable/disable transparency (show alpha channel). . CTRL+N\fR: Change normalization mode (can be 'none', 'normal' or 'channel-by-channel'). . CTRL+SPACE\fR: Reset view. . CTRL+X\fR: Show/hide axes. . CTRL+Z\fR: Hold/release aspect ratio. - Actions specific to the 3D volumetric image viewer (command '\fBdisplay\fR') are: . CTRL+P\fR: Play z-stack of frames as a movie. . CTRL+V\fR: Show/hide 3D view on bottom right zone. . CTRL+X\fR: Show/hide axes. . CTRL+(mousewheel)\fR: Go up/down. . SHIFT+(mousewheel)\fR: Go left/right. . Numeric PAD\fR: Zoom in/out (+/-) and move through zoomed image (digits). . BACKSPACE\fR: Reset zoom scale. - Actions specific to the 3D object viewer (command '\fBdisplay3d\fR') are: . (mouse)+(left mouse button)\fR: Rotate 3D object. . (mouse)+(right mouse button)\fR: Zoom 3D object. . (mouse)+(middle mouse button)\fR: Shift 3D object. . CTRL+F1 ... CTRL+F6\fR: Toggle between different 3D rendering modes. . CTRL+G\fR: Save 3D object, as numbered file 'gmic_xxxx.off'. . CTRL+T\fR: Switch between single/double-sided 3D modes. . CTRL+X\fR: Show/hide 3D axes. . CTRL+Z\fR: Enable/disable z-buffered rendering. \fI11. Adding Custom Commands\fR - New custom commands can be added by the user, through the use of G'MIC\fR custom commands files\fR. - A command file is a simple text file, where each line starts either by '\fBcommand_name: command_definition\fR' or '\fBcommand_definition (continuation)\fR'. - At startup, G'MIC\fR automatically includes user's command file $HOME/.gmic\fR (on Unix) or %APPDATA%/user.gmic\fR (on Windows). The CLI tool 'gmic\fR' automatically runs the command '\fBcli_start\fR' if defined. - Custom command names must use character set [a-zA-Z0-9_]\fR and cannot start with a number. - Any '\fB # comment\fR' expression found in a custom commands file is discarded by the G'MIC\fR parser, wherever it is located in a line. - In a custom command, the following $-expressions\fR are recognized and substituted: . '\fB$*\fR' is substituted by a copy of the specified string of arguments. . '\fB$"*"\fR' is substituted by a copy of the specified string of arguments, each being double-quoted. . '\fB$#\fR' is substituted by the maximum index of known arguments (either specified by the user or set to a default value in the custom command). . '\fB$[]\fR' is substituted by the list of selected image indices that have been specified in the command invocation. . '\fB$?\fR' is substituted by a printable version of '\fB$[]\fR' to be used in command descriptions. . '\fB$i\fR' and '\fB${i}\fR' are both substituted by the i^th\fR specified argument. Negative indices such as '\fB${-j}\fR' are allowed and refer to the j^th\fR latest argument. '\fB$0\fR' is substituted by the custom command name. . '\fB${i=default}\fR' is substituted by the value of \fB$i\fR (if defined) or by its new value set to 'default\fR' otherwise ('default\fR' may be a $-expression as well). . '\fB${subset}\fR' is substituted by the argument values (separated by commas ',\fR') of a specified argument subset. For instance expression '\fB${2--2}\fR' is substitued by all specified command arguments except the first and the last one. Expression '\fB${^0}\fR' is then substituted by all arguments of the invoked command (eq. to '\fB$*\fR' if all specified arguments have indeed a value). . '\fB$=var\fR' is substituted by the set of instructions that will assign each argument \fB$i\fR to the named variable '\fBvar$i\fR' (for i in [0...$#]\fR). This is particularly useful when a custom command want to manage variable numbers of arguments. Variables names must use character set [a-zA-Z0-9_]\fR and cannot start with a number. - These particular $-expressions\fR for custom commands are always substituted\fR, even in double-quoted items or when the dollar sign '$\fR' is escaped with a backslash '\\\fR'. To avoid substitution, place an empty double quoted string just after the '$\fR' (as in '\fB$""1\fR'). - Specifying arguments may be skipped when invoking a custom command, by replacing them by commas ',\fR' as in expression '\fBflower ,,3\fR'. Omitted arguments are set to their default values, which must be thus explicitly defined in the code of the corresponding custom command (using default argument expressions as '\fB${1=default}\fR'). - If one numbered argument required by a custom command misses a value, an error is thrown by the G'MIC\fR interpreter. \fI12. List of Commands\fR All available G'MIC\fR commands are listed below, classified by themes. When several choices of command arguments are possible, they appear separated by '|\fR'. An argument specified inside '[]\fR' or starting by '_\fR' is optional except when standing for an existing image \fB[image]\fR, where 'image\fR' can be either an index number or an image name. In this case, the '[]\fR' characters are mandatory when writing the item. A command marked with '(+)\fR' is one of the built-in\fR commands. Note also that all images that serve as illustrations in this reference documentation are normalized in range [0,255]\fR before being displayed. You may need to do this explicitly (command '\fBnormalize 0,255\fR') if you want to save and view images with the same aspect than those illustrated in the example codes. --- CMakeFiles/bashcompletion.dir/all --- # # Bash completion rules for 'gmic'. # # This file has been generated automatically. # Do not edit! # # This file should be copied/renamed in '/usr/share/bash-completion/completions/gmic'. # _gmic_stdlib() { local cur prev opts coms if type -t _init_completion >/dev/null; then _init_completion -n = || return else COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" fi --- CMakeFiles/man.dir/all --- ** \fIGlobal Options:\fR \fBdebug (+):\fR Activate debug mode. When activated, the G'MIC interpreter becomes very verbose and outputs additional log messages about its internal state on the standard output (stdout). This option is useful for developers or to report possible bugs of the interpreter. \fBhelp:\fR command | (no arg) Display help (optionally for specified command only) and exit. (eq. to 'h'). \fBversion:\fR Display current version number on stdout. ** \fIInput / Output:\fR \fBcamera (+):\fR _camera_index>=0,_nb_frames>0,_skip_frames>=0,_capture_width>=0, _capture_height>=0 Insert one or several frames from specified camera. When 'nb_frames==0', the camera stream is released instead of capturing new images. \fIDefault values:\fR 'camera_index=0' (default camera), 'nb_frames=1', 'skip_frames=0' and 'capture_width=capture_height=0' (default size). \fBclut:\fR "clut_name",_resolution>0,_cut_and_round={ 0=no | 1=yes } Insert one of the 856 pre-defined CLUTs at the end of the image list.\n 'clut_name' can be { 2-strip-process | 60s | 60s_faded | 60s_faded_alt | action_magenta_01 | action_red_01 | adventure_1453 | agfa_apx_100 | agfa_apx_25 | agfa_precisa_100 | agfa_ultra_color_100 | agfa_vista_200 | agressive_highligjtes_recovery_5 | alberto_street | alien_green | amstragram | amstragram+ | analogfx_anno_1870_color | analogfx_old_style_i | analogfx_old_style_ii | analogfx_old_style_iii | analogfx_sepia_color | analogfx_soft_sepia_i | analogfx_soft_sepia_ii | anime | apocalypse_this_very_moment | aqua | aqua_and_orange_dark | arabica_12 | autumn | ava_614 | avalanche | azrael_93 | bboyz_2 | berlin_sky | black_and_white | black_star | blade_runner | bleach_bypass | bleachbypass_1 | bleachbypass_2 | bleachbypass_3 | bleachbypass_4 | bleech_bypass_green | bleech_bypass_yellow_01 | blue_cold_fade | blue_dark | blue_house | blue_ice | blue_mono | blue_shadows_01 | blues | bob_ford | bourbon_64 | bright_green_01 | bright_teal_orange | bright_warm | brightgreen | brownish | bw_1 | bw_10 | bw_2 | bw_3 | bw_4 | bw_5 | bw_6 | bw_7 | bw_8 | bw_9 | byers_11 | candlelight | caribe | chemical_168 | chrome_01 | cinema | cinema_2 | cinema_3 | cinema_4 | cinema_5 | cinema_noir | cinematic-1 | cinematic-10 | cinematic-2 | cinematic-3 | cinematic-4 | cinematic-5 | cinematic-6 | cinematic-7 | cinematic-8 | cinematic-9 | cinematic_01 | cinematic_02 | cinematic_03 | cinematic_for_flog | cinematic_lady_bird | cinematic_mexico | city_7 | classic_teal_and_orange | clayton_33 | clear_teal_fade | clouseau_54 | cobi_3 | coffee_44 | cold_clear_blue | cold_clear_blue_1 | cold_simplicity_2 | color_rich | colorful_0209 | colornegative | conflict_01 | contrail_35 | contrast_with_highlights_protection | contrasty_afternoon | contrasty_green | crispromance | crispwarm | crispwinter | cross_process_cp_130 | cross_process_cp_14 | cross_process_cp_15 | cross_process_cp_16 | cross_process_cp_18 | cross_process_cp_3 | cross_process_cp_4 | cross_process_cp_6 | crushin | cubicle_99 | d_o_1 | dark_blues_in_sunlight | dark_green_02 | dark_green_1 | dark_place_01 | date_39 | day_4nite | day_for_night | deep | deep_blue | deep_dark_warm | deep_high_contrast | deep_teal_fade | deep_warm_fade | delicatessen | denoiser_simple_40 | desert_gold_37 | dimension | directions_23 | django_25 | domingo_145 | dream_1 | dream_85 | drop_green_tint_14 | dropblues | earth_tone_boost | edgyember | elegance_38 | enchanted | eterna_for_flog | expired_69 | expired_fade | expired_polaroid | extreme | fade | fade_to_green | faded | faded_47 | faded_alt | faded_analog | faded_extreme | faded_green | faded_print | faded_retro_01 | faded_retro_02 | faded_vivid | fadedlook | fallcolors | faux_infrared | fgcinebasic | fgcinebright | fgcinecold | fgcinedrama | fgcinetealorange_1 | fgcinetealorange_2 | fgcinevibrant | fgcinewarm | film_0987 | film_9879 | film_high_contrast | film_print_01 | film_print_02 | filmic | flat_30 | flavin | foggynight | folger_50 | french_comedy | frosted | frostedbeachpicnic | fuji_160c | fuji_160c_+ | fuji_160c_++ | fuji_160c_- | fuji_3510_constlclip | fuji_3510_constlmap | fuji_3510_cuspclip | fuji_3513_constlclip | fuji_3513_constlmap | fuji_3513_cuspclip | fuji_400h | fuji_400h_+ | fuji_400h_++ | fuji_400h_- | fuji_800z | fuji_800z_+ | fuji_800z_++ | fuji_800z_- | fuji_astia_100_generic | fuji_astia_100f | fuji_fp-100c | fuji_fp-100c_+ | fuji_fp-100c_++ | fuji_fp-100c_+++ | fuji_fp-100c_++_alt | fuji_fp-100c_- | fuji_fp-100c_-- | fuji_fp-100c_alt | fuji_fp-100c_cool | fuji_fp-100c_cool_+ | fuji_fp-100c_cool_++ | fuji_fp-100c_cool_- | fuji_fp-100c_cool_-- | fuji_fp-100c_negative | fuji_fp-100c_negative_+ | fuji_fp-100c_negative_++ | fuji_fp-100c_negative_+++ | fuji_fp-100c_negative_++_alt | fuji_fp-100c_negative_- | fuji_fp-100c_negative_-- | fuji_fp-3000b | fuji_fp-3000b_+ | fuji_fp-3000b_++ | fuji_fp-3000b_++ + | fuji_fp-3000b_- | fuji_fp-3000b_-- | fuji_fp-3000b_hc | fuji_fp-3000b_negative | fuji_fp-3000b_negative_+ | fuji_fp-3000b_negative_++ | fuji_fp-3000b_negative_+++ | fuji_fp-3000b_negative_- | fuji_fp-3000b_negative_-- | fuji_fp-3000b_negative_early | fuji_fp_100c | fuji_hdr | fuji_neopan_1600 | fuji_neopan_1600_+ | fuji_neopan_1600_++ | fuji_neopan_1600_- | fuji_neopan_acros_100 | fuji_provia_100_generic | fuji_provia_100f | fuji_provia_400f | fuji_provia_400x | fuji_sensia_100 | fuji_superia_100 | fuji_superia_100_+ | fuji_superia_100_++ | fuji_superia_100_- | fuji_superia_1600 | fuji_superia_1600_+ | fuji_superia_1600_++ | fuji_superia_1600_- | fuji_superia_200 | fuji_superia_200_xpro | fuji_superia_400 | fuji_superia_400_+ | fuji_superia_400_++ | fuji_superia_400_- | fuji_superia_800 | fuji_superia_800_+ | fuji_superia_800_++ | fuji_superia_800_- | fuji_superia_hg_1600 | fuji_superia_reala_100 | fuji_superia_x-tra_800 | fuji_velvia_100_generic | fuji_velvia_50 | fuji_xtrans_iii_acros | fuji_xtrans_iii_acros+g | fuji_xtrans_iii_acros+r | fuji_xtrans_iii_acros+ye | fuji_xtrans_iii_astia | fuji_xtrans_iii_classic_chrome | fuji_xtrans_iii_mono | fuji_xtrans_iii_mono+g | fuji_xtrans_iii_mono+r | fuji_xtrans_iii_mono+ye | fuji_xtrans_iii_pro_neg_hi | fuji_xtrans_iii_pro_neg_std | fuji_xtrans_iii_provia | fuji_xtrans_iii_sepia | fuji_xtrans_iii_velvia | fusion_88 | futuristicbleak_1 | futuristicbleak_2 | futuristicbleak_3 | futuristicbleak_4 | going_for_a_walk | golden | golden_bright | golden_fade | golden_mono | golden_night_softner_43 | golden_sony_37 | golden_vibrant | goldengate | goldfx_bright_spring_breeze | goldfx_bright_summer_heat | goldfx_hot_summer_heat | goldfx_perfect_sunset_01min | goldfx_perfect_sunset_05min | goldfx_perfect_sunset_10min | goldfx_spring_breeze | goldfx_summer_heat | good_morning | green_15 | green_2025 | green_action | green_afternoon | green_blues | green_conflict | green_day_01 | green_day_02 | green_g_09 | green_indoor | green_light | green_mono | green_yellow | greenish_contrasty | greenish_fade | greenish_fade_1 | hackmanite | happyness_133 | hard_teal_orange | harsh_day | harsh_sunset | helios | herderite | heulandite | hiddenite | highlights_protection | hilutite | hlg_1_1 | hong_kong | horrorblue | howlite | hydracore | hyla_68 | hypersthene | hypnosis | hypressen | ilford_delta_100 | ilford_delta_3200 | ilford_delta_3200_+ | ilford_delta_3200_++ | ilford_delta_3200_- | ilford_delta_400 | ilford_fp_4_plus_125 | ilford_hp_5 | ilford_hp_5_+ | ilford_hp_5_++ | ilford_hp_5_- | ilford_hp_5_plus_400 | ilford_hps_800 | ilford_pan_f_plus_50 | ilford_xp_2 | indoor_blue | industrial_33 | instantc | justpeachy | k_tone_vintage_kodachrome | kh_1 | kh_10 | kh_2 | kh_3 | kh_4 | kh_5 | kh_6 | kh_7 | kh_8 | kh_9 | killstreak | kodak_2383_constlclip | kodak_2383_constlmap | kodak_2383_cuspclip | kodak_2393_constlclip | kodak_2393_constlmap | kodak_2393_cuspclip | kodak_bw_400_cn | kodak_e-100_gx_ektachrome_100 | kodak_ektachrome_100_vs | kodak_ektachrome_100_vs_generic | kodak_ektar_100 | kodak_elite_100_xpro | kodak_elite_chrome_200 | kodak_elite_chrome_400 | kodak_elite_color_200 | kodak_elite_color_400 | kodak_elite_extracolor_100 | kodak_hie_hs_infra | kodak_kodachrome_200 | kodak_kodachrome_25 | kodak_kodachrome_64 | kodak_kodachrome_64_generic | kodak_portra_160 | kodak_portra_160_+ | kodak_portra_160_++ | kodak_portra_160_- | kodak_portra_160_nc | kodak_portra_160_nc_+ | kodak_portra_160_nc_++ | kodak_portra_160_nc_- | kodak_portra_160_vc | kodak_portra_160_vc_+ | kodak_portra_160_vc_++ | kodak_portra_160_vc_- | kodak_portra_400 | kodak_portra_400_+ | kodak_portra_400_++ | kodak_portra_400_- | kodak_portra_400_nc | kodak_portra_400_nc_+ | kodak_portra_400_nc_++ | kodak_portra_400_nc_- | kodak_portra_400_uc | kodak_portra_400_uc_+ | kodak_portra_400_uc_++ | kodak_portra_400_uc_- | kodak_portra_400_vc | kodak_portra_400_vc_+ | kodak_portra_400_vc_++ | kodak_portra_400_vc_- | kodak_portra_800 | kodak_portra_800_+ | kodak_portra_800_++ | kodak_portra_800_- | kodak_portra_800_hc | kodak_t-max_100 | kodak_t-max_3200 | kodak_t-max_400 | kodak_tmax_3200 | kodak_tmax_3200_+ | kodak_tmax_3200_++ | kodak_tmax_3200_- | kodak_tmax_3200_alt | kodak_tri-x_400 | kodak_tri-x_400_+ | kodak_tri-x_400_++ | kodak_tri-x_400_- | kodak_tri-x_400_alt | korben_214 | landscape_1 | landscape_10 | landscape_2 | landscape_3 | landscape_4 | landscape_5 | landscape_6 | landscape_7 | landscape_8 | landscape_9 | lateafternoonwanderlust | latesunset | lc_1 | lc_10 | lc_2 | lc_3 | lc_4 | lc_5 | lc_6 | lc_7 | lc_8 | lc_9 | lenox_340 | life_giving_tree | light_blown | lomo | lomography_redscale_100 | lomography_x-pro_slide_200 | low_contrast_blue | low_key_01 | lucky_64 | lushgreensummer | magenta_day | magenta_day_01 | magenta_dream | magenta_yellow | magentacoffee | matrix | mckinnon_75 | memories | metropolis | milo_5 | minimalistcaffeination | modern_film | mono_tinted | monochrome_1 | monochrome_2 | moody_1 | moody_10 | moody_2 | moody_3 | moody_4 | moody_5 | moody_6 | moody_7 | moody_8 | moody_9 | moonlight | moonlight_01 | moonrise | morning_6 | morroco_16 | mostly_blue | moviz_1 | moviz_10 | moviz_11 | moviz_12 | moviz_13 | moviz_14 | moviz_15 | moviz_16 | moviz_17 | moviz_18 | moviz_19 | moviz_2 | moviz_20 | moviz_21 | moviz_22 | moviz_23 | moviz_24 | moviz_25 | moviz_26 | moviz_27 | moviz_28 | moviz_29 | moviz_3 | moviz_30 | moviz_31 | moviz_32 | moviz_33 | moviz_34 | moviz_35 | moviz_36 | moviz_37 | moviz_38 | moviz_39 | moviz_4 | moviz_40 | moviz_41 | moviz_42 | moviz_43 | moviz_44 | moviz_45 | moviz_46 | moviz_47 | moviz_48 | moviz_5 | moviz_6 | moviz_7 | moviz_8 | moviz_9 | mute_shift | muted_01 | muted_fade | mysticpurplesunset | nah | natural_vivid | nemesis | neon_770 | neutral_teal_orange | neutral_warm_fade | newspaper | night_01 | night_blade_4 | night_king_141 | night_spy | nightfromday | nostalgiahoney | nostalgic | nw-1 | nw-10 | nw-2 | nw-3 | nw-4 | nw-5 | nw-6 | nw-7 | nw-8 | nw-9 | old_west | once_upon_a_time | only_red | only_red_and_blue | operation_yellow | orange_dark_4 | orange_dark_7 | orange_dark_look | orange_tone | orange_underexposed | oranges | paladin | paladin_1875 | pasadena_21 | passing_by | pink_fade | pitaya_15 | polaroid_664 | polaroid_665 | polaroid_665_+ | polaroid_665_++ | polaroid_665_- | polaroid_665_-- | polaroid_665_negative | polaroid_665_negative_+ | polaroid_665_negative_- | polaroid_665_negative_hc | polaroid_667 | polaroid_669 | polaroid_669_+ | polaroid_669_++ | polaroid_669_+++ | polaroid_669_- | polaroid_669_-- | polaroid_669_cold | polaroid_669_cold_+ | polaroid_669_cold_- | polaroid_669_cold_-- | polaroid_672 | polaroid_690 | polaroid_690_+ | polaroid_690_++ | polaroid_690_- | polaroid_690_-- | polaroid_690_cold | polaroid_690_cold_+ | polaroid_690_cold_++ | polaroid_690_cold_- | polaroid_690_cold_-- | polaroid_690_warm | polaroid_690_warm_+ | polaroid_690_warm_++ | polaroid_690_warm_- | polaroid_690_warm_-- | polaroid_polachrome | polaroid_px-100uv+_cold | polaroid_px-100uv+_cold_+ | polaroid_px-100uv+ _cold_++ | polaroid_px-100uv+_cold_+++ | polaroid_px-100uv+_cold_- | polaroid_px-100uv+_cold_-- | polaroid_px-100uv+_warm | polaroid_px-100uv+_warm_+ | polaroid_px-100uv+_warm_++ | polaroid_px-100uv+_warm_+++ | polaroid_px-100uv+_warm_- | polaroid_px-100uv+_warm_-- | polaroid_px-680 | polaroid_px-680_+ | polaroid_px-680_++ | polaroid_px-680_- | polaroid_px-680_-- | polaroid_px-680_cold | polaroid_px-680_cold_+ | polaroid_px-680_cold_++ | polaroid_px-680_cold_++_alt | polaroid_px-680_cold_- | polaroid_px-680_cold_-- | polaroid_px-680_warm | polaroid_px-680_warm_+ | polaroid_px-680_warm_++ | polaroid_px-680_warm_- | polaroid_px-680_warm_-- | polaroid_px-70 | polaroid_px-70_+ | polaroid_px-70_++ | polaroid_px-70_+++ | polaroid_px-70_- | polaroid_px-70_-- | polaroid_px-70_cold | polaroid_px-70_cold_+ | polaroid_px-70_cold_++ | polaroid_px-70_cold_- | polaroid_px-70_cold_-- | polaroid_px-70_warm | polaroid_px-70_warm_+ | polaroid_px-70_warm_++ | polaroid_px-70_warm_- | polaroid_px-70_warm_-- | polaroid_time_zero_expired | polaroid_time_zero_expired_+ | polaroid_time_zero_expired_++ | polaroid_time_zero_expired_- | polaroid_time_zero_expired_-- | polaroid_time_zero_expired_--- | polaroid_time_zero_expired_cold | polaroid_time_zero_expired_cold_- | polaroid_time_zero_expired_cold_-- | polaroid_time_zero_expired_cold_--- | portrait_1 | portrait_10 | portrait_2 | portrait_3 | portrait_4 | portrait_5 | portrait_6 | portrait_7 | portrait_8 | portrait_9 | progressen | protect_highlights_01 | prussian_blue | pseudogrey | purple | purple_2 | red_afternoon_01 | red_day_01 | red_dream_01 | redblueyellow | reds | reds_oranges_yellows | reeve_38 | remy_24 | rest_33 | retro | retro_brown_01 | retro_magenta_01 | retro_summer_3 | retro_yellow_01 | rollei_ir_400 | rollei_ortho_25 | rollei_retro_100_tonal | rollei_retro_80s | rotate_muted | rotate_vibrant | rotated | rotated_crush | saturated_blue | saving_private_damon | science_fiction | serenity | seringe_4 | serpent | seventies_magazine | shadow_king_39 | shine | skin_tones | smart_contrast | smokey | smooth_clear | smooth_cromeish | smooth_fade | smooth_green_orange | smooth_sailing | smooth_teal_orange | soft_fade | softwarming | solarized_color | solarized_color_2 | springmorning | sprocket_231 | spy_29 | street | studio_skin_tone_shaper | subtle_blue | subtle_green | subtle_yellow | summer | summer_alt | sunny | sunny_alt | sunny_rich | sunny_warm | super_warm | super_warm_rich | sutro_fx | sweet_bubblegum | sweet_gelatto | taiga | tarraco | teal_fade | teal_moonlight | tealmagentagold | tealorange | tealorange_1 | tealorange_2 | tealorange_3 | technicalfx_backlight_filter | teigen_28 | tensiongreen_1 | tensiongreen_2 | tensiongreen_3 | tensiongreen_4 | terra_4 | the_matrices | thriller_2 | toastedgarden | trent_18 | true_colors_8 | turkiest_42 | tweed_71 | ultra_water | undeniable | undeniable_2 | unknown | urban_cowboy | uzbek_bukhara | uzbek_marriage | uzbek_samarcande | velvetia | very_warm_greenish | vibrant | vibrant_alien | vibrant_contrast | vibrant_cromeish | victory | vintage | vintage_163 | vintage_alt | vintage_brighter | vintage_chrome | vintage_warmth_1 | vireo_37 | warm | warm_dark_contrasty | warm_fade | warm_fade_1 | warm_highlight | warm_neutral | warm_sunset_red | warm_teal | warm_vintage | warm_yellow | well_see | whiter_whites | winterlighthouse | wipe | wooden_gold_20 | yellow_55b | yellow_film_01 | yellowstone | you_can_do_it | zed_32 | zeke_39 | zilverfx_bw_solarization | zilverfx_infrared | zilverfx_vintage_bw } \fIDefault values:\fR 'resolution=48' and 'cut_and_round=1'. \fBcommand (+):\fR _add_debug_info={ 0 | 1 },{ filename | http[s]://URL | "string" } Import G'MIC custom commands from specified file, URL or string. (eq. to 'm').\n Imported commands are available directly after the 'command' invocation. \fIDefault value:\fR 'add_debug_info=1'. \fBcursor (+):\fR _mode = { 0=hide | 1=show } Show or hide mouse cursor for selected instant display windows. Command selection (if any) stands for instant display window indices instead of image indices. \fIDefault value:\fR 'mode=1'. \fBdisplay (+):\fR _X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={ 0 | 1 } Display selected images in an interactive viewer (use the instant display window [0] if opened). (eq. to 'd').\n Arguments 'X','Y','Z' determine the initial selection view, for 3D volumetric images. \fIDefault value:\fR 'X=Y=Z=0' and 'exit_on_anykey=0'. \fBdisplay0:\fR Display selected images without value normalization. (eq. to 'd0'). \fBdisplay2d:\fR Display selected 2d images in an interactive window. (eq. to 'd2d'). This command is used by default by command 'display' when displaying 2d images. If selected image is a volumetric image, each slice is displayed on a separate display window (up to 10 images can be displayed simultaneously this way), with synchronized moves. When interactive window is opened, the following actions are possible:\n - Left mouse button: Create an image selection and zoom into it. - Middle mouse button, or CTRL+left mouse button: Move image. - Mouse wheel or PADD+/-: Zoom in/out. - Arrow keys: Move image left/right/up/down. - CTRL + A: Enable/disable transparency (show/hide alpha channel). - CTRL + C: Decrease window size. - CTRL + D: Increase window size. - CTRL + F: Toggle fullscreen mode. - CTRL + N: Change normalization mode (can be 'none' | 'normal' | 'channel-by-channel'). - CTRL + O: Save a copy of the input image, as a numbered file 'gmic_xxxxxx.gmz'. - CTRL + R: Reset both window size and view. - CTRL + S: Save a screenshot of the current view, as a numbered file 'gmic_xxxxxx.png'. - CTRL + SPACE: Reset view. - CTRL + X: Show/hide axes. - CTRL + Z: Hold/release aspect ratio. \fBdisplay3d (+):\fR _[background_image],_exit_on_anykey={ 0 | 1 } | _exit_on_anykey={ 0 | 1 } Display selected 3D objects in an interactive viewer (use the instant display window [0] if opened). (eq. to 'd3d'). \fIDefault values:\fR '[background_image]=(default)' and 'exit_on_anykey=0'. \fBdisplay_array:\fR _width>0,_height>0 Display images in interactive windows where pixel neighborhoods can be explored. \fIDefault values:\fR 'width=13' and 'height=width'. \fBdisplay_fft:\fR Display fourier transform of selected images, with centered log-module and argument. (eq. to 'dfft'). \fBdisplay_graph:\fR _width>=0,_height>=0,_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_xlabel,_ylabel Render graph plot from selected image data. '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. if specified 'width' or 'height' is '0', then image size is set to half the screen size. \fIDefault values:\fR 'width=0', 'height=0', 'plot_type=1', 'vertex_type=1', 'xmin=xmax=ymin=ymax=0 (auto)', 'xlabel="x-axis"' and 'ylabel="y-axis"'. \fBdisplay_histogram:\fR _width>=0,_height>=0,_clusters>0,_min_value[%],_max_value[%],_show_axes={ 0 | 1 },_expression. Render a channel-by-channel histogram. If selected images have several slices, the rendering is performed for all input slices. 'expression' is a mathematical expression used to transform the histogram data for visualization purpose. (eq. to 'dh'). if specified 'width' or 'height' is '0', then image size is set to half the screen size. \fIDefault values:\fR 'width=0', 'height=0', 'clusters=256', 'min_value=0%', 'max_value=100%', 'show_axes=1' and 'expression=i'. \fBdisplay_parametric:\fR _width>0,_height>0,_outline_opacity,_vertex_radius>=0,_is_antialiased={ 0 | 1 }, _is_decorated={ 0 | 1 },_xlabel,_ylabel Render 2D or 3D parametric curve or point clouds from selected image data. Curve points are defined as pixels of a 2 or 3-channel image. If the point image contains more than 3 channels, additional channels define the (R,G,B) color for each vertex. If 'outline_opacity>1', the outline is colored according to the specified vertex colors and 'outline_opacity-1' is used as the actual drawing opacity. \fIDefault values:\fR 'width=512', 'height=width', 'outline_opacity=3', 'vertex_radius=0', 'is_antialiased=1','is_decorated=1', 'xlabel="x-axis"' and 'ylabel="y-axis"'. \fBdisplay_parallel:\fR Display each selected image in a separate interactive display window. (eq. to 'dp'). \fBdisplay_parallel0:\fR Display each selected image in a separate interactive display window, without value normalization. (eq. to 'dp0'). \fBdisplay_polar:\fR _width>32,_height>32,_outline_type,_fill_R,_fill_G,_fill_B,_theta_start, _theta_end,_xlabel,_ylabel Render polar curve from selected image data. 'outline_type' can be { r<0=dots with radius -r | 0=no outline | r>0=lines+dots with radius r }. 'fill_color' can be { -1=no fill | R,G,B=fill with specified color }. \fIDefault values:\fR 'width=500', 'height=width', 'outline_type=1', 'fill_R=fill_G=fill_B=200', 'theta_start=0', 'theta_end=360', 'xlabel="x-axis"' and 'ylabel="y-axis"'. \fBdisplay_quiver:\fR _size_factor>0,_arrow_size>=0,_color_mode={ 0=monochrome | 1=grayscale | 2=color } Render selected images of 2D vectors as a field of 2D arrows. (eq. to 'dq'). \fIDefault values:\fR 'size_factor=16', 'arrow_size=1.5' and 'color_mode=1'. \fBdisplay_rgba:\fR _background_RGB_color Render selected RGBA images over a checkerboard or colored background. (eq. to 'drgba'). \fIDefault values:\fR 'background_RGB_color=undefined' (checkerboard). \fBdisplay_tensors:\fR _size_factor>0,_ellipse_size>=0,_color_mode={ 0=monochrome | 1=grayscale | 2=color },_outline>=0 Render selected images of tensors as a field of 2D ellipses. (eq. to 'dt'). \fIDefault values:\fR 'size_factor=16', 'ellipse_size=1.5', 'color_mode=2' and 'outline=2'. \fBdisplay_warp:\fR _cell_size>0 Render selected 2D warping fields. (eq. to 'dw'). \fIDefault value:\fR 'cell_size=15'. \fBdocument_gmic:\fR _format={ ascii | bash | html | images | latex },_image_path,_write_wrapper={ 0 | 1 } Create documentation of .gmic command files (loaded as raw 'uchar' images), in specified format. \fIDefault values:\fR 'format=ascii', 'image_path=""' and 'write_wrapper=1'.\n Example(s) : input_text filename.gmic document_gmic html,img \fBecho (+):\fR message Output specified message on the error output. (eq. to 'e').\n Command selection (if any) stands for displayed call stack subset instead of image indices. \fBecho_file:\fR filename,message Output specified message, appending it to specified output file. (similar to 'echo' for specified output file stream). \fBecho_stdout:\fR message Output specified message, on the standard output (stdout). (similar to 'echo' for output on standard output instead of standard error). \fBfunction1d:\fR 0<=smoothness<=1,x0>=0,y0,x1>=0,y1,...,xn>=0,yn Insert continuous 1D function from specified list of keypoints (xk,yk) in range [0,max(xk)] (xk are positive integers). \fIDefault values:\fR 'smoothness=1' and 'x0=y0=0'. \fBinput (+):\fR [type:]filename | [type:]http://URL | [selection]x_nb_copies>0 | { width>0[%] | [image_w] },{ _height>0[%] | [image_h] },{ _depth>0[%] | [image_d] },{ _spectrum>0[%] | [image_s] },_{ value1,_value2,... | 'formula' } | (value1{,|;|/|^}value2{,|;|/|^}...) | 0 Insert a new image taken from a filename or from a copy of an existing image [index], or insert new image with specified dimensions and values. Single quotes may be omitted in 'formula'. Specifying argument '0' inserts an 'empty' image. (eq. to 'i' | (no arg)). \fIDefault values:\fR 'nb_copies=1', 'height=depth=spectrum=1' and 'value1=0'. \fBinput_cube:\fR "filename",_convert_1d_cluts_to_3d={ 0 | 1 }. Insert CLUT data from a .cube filename (Adobe CLUT file format). \fIDefault value:\fR 'convert_1d_cluts_to_3d=1'. \fBinput_flo:\fR "filename" Insert optical flow data from a .flo filename (vision.middlebury.edu file format). \fBinput_glob:\fR pattern Insert new images from several filenames that match the specified glob pattern. (eq. to 'ig'). \fBinput_gpl:\fR filename Input specified filename as a .gpl palette data file. \fBinput_text:\fR filename Input specified text-data filename as a new image. (eq. to 'it'). \fBnetwork (+):\fR mode={ 0=disabled | 1=enabled } Enable or disable load-from-network mode. (Default mode is 'enabled'). \fBoutput (+):\fR [type:]filename,_format_options Output selected images as one or several numbered file(s). (eq. to 'o'). \fIDefault value:\fR 'format_options'=(undefined). \fBoutput_cube:\fR "filename" Output selected CLUTs as a .cube file (Adobe CLUT format). \fBoutput_flo:\fR "filename" Output selected optical flow as a .flo file (vision.middlebury.edu file format). \fBoutput_ggr:\fR filename,_gradient_name Output selected images as .ggr gradient files (GIMP). If no gradient name is specified, it is deduced from the filename. \fBoutput_text:\fR filename Output selected images as text-data filenames. (eq. to 'ot'). \fBoutputn:\fR filename,_index Output selected images as automatically numbered filenames in repeat...done loops. (eq. to 'on'). \fBoutputp:\fR prefix Output selected images as prefixed versions of their original filenames. (eq. to 'op'). \fIDefault value:\fR 'prefix=_'. \fBoutputw:\fR Output selected images by overwriting their original location. (eq. to 'ow'). \fBoutputx:\fR extension1,_extension2,_...,_extensionN,_output_at_same_location={ 0 | 1 } Output selected images with same base filenames but for N different extensions. (eq. to 'ox'). \fIDefault value:\fR 'output_at_same_location=0'. \fBpass (+):\fR _shared_state={ -1=status only | 0=non-shared (copy) | 1=shared | 2=adaptive } Insert images from parent context of a custom command or a local environment. Command selection (if any) stands for a selection of images in the parent context. By default (adaptive shared state), selected images are inserted in a shared state if they do not belong to the context (selection) of the current custom command or local environment as well. Typical use of command 'pass' concerns the design of custom commands that take images as arguments. This commands return the list of corresponding indices in the status. \fIDefault value:\fR 'shared_state=2'. \fBplot (+):\fR _plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_exit_on_anykey={ 0 | 1 } | 'formula',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax, _exit_on_anykey={ 0 | 1 } Display selected images or formula in an interactive viewer (use the instant display 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. \fIDefault values:\fR 'plot_type=1', 'vertex_type=1', 'xmin=xmax=ymin=ymax=0 (auto)' and 'exit_on_anykey=0'. \fBprint (+):\fR Output information on selected images, on the standard error (stderr). (eq. to 'p'). \fBscreen (+):\fR _x0[%],_y0[%],_x1[%],_y1[%] Take screenshot, optionally grabbed with specified coordinates, and insert it at the end of the image list. \fBselect (+):\fR feature_type,_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={ 0 | 1 }, _is_deep_selection={ 0 | 1 } Interactively select a feature from selected images (use the instant display window [0] if opened). 'feature_type' can be { 0=point | 1=segment | 2=rectangle | 3=ellipse }. Arguments 'X','Y','Z' determine the initial selection view, for 3D volumetric images. The retrieved feature is returned as a 3D vector (if 'feature_type==0') or as a 6d vector (if 'feature_type!=0') containing the feature coordinates. \fIDefault values:\fR 'X=Y=Z=(undefined)', 'exit_on_anykey=0' and 'is_deep_selection=0'. \fBserialize (+):\fR _datatype,_is_compressed={ 0 | 1 },_store_names={ 0 | 1 } Serialize selected list of images into a single image, optionnally in a compressed form. 'datatype' can be { auto | uchar | char | ushort | short | uint | int | uint64 | int64 | float | double }. Specify 'datatype' if all selected images have a range of values constrained to a particular datatype, in order to minimize the memory footprint. The resulting image has only integers values in [0,255] and can then be saved as a raw image of unsigned chars (doing so will output a valid .cimg[z] or .gmz file). If 'store_names' is set to '1', serialization uses the .gmz format to store data in memory (otherwise the .cimg[z] format). \fIDefault values:\fR 'datatype=auto', 'is_compressed=1' and 'store_names=1'. \fBshape_circle:\fR _size>=0 Input a 2D circle binary shape with specified size. \fIDefault value:\fR 'size=512'. \fBshape_cupid:\fR _size>=0 Input a 2D cupid binary shape with specified size. \fIDefault value:\fR 'size=512'. \fBshape_diamond:\fR _size>=0 Input a 2D diamond binary shape with specified size. \fIDefault value:\fR 'size=512'. \fBshape_dragon:\fR _size>=0,_recursion_level>=0,_angle Input a 2D Dragon curve with specified size. \fIDefault value:\fR 'size=512', 'recursion_level=18' and 'angle=0'. \fBshape_fern:\fR _size>=0,_density[%]>=0,_angle,0<=_opacity<=1,_type={ 0=Asplenium adiantum-nigrum | 1=Thelypteridaceae } Input a 2D Barnsley fern with specified size. \fIDefault value:\fR 'size=512', 'density=50%', 'angle=30', 'opacity=0.3' and 'type=0'. \fBshape_gear:\fR _size>=0,_nb_teeth>0,0<=_height_teeth<=100,0<=_offset_teeth<=100, 0<=_inner_radius<=100 Input a 2D gear binary shape with specified size. \fIDefault value:\fR 'size=512', 'nb_teeth=12', 'height_teeth=20', 'offset_teeth=0' and 'inner_radius=40'. \fBshape_heart:\fR _size>=0 Input a 2D heart binary shape with specified size. \fIDefault value:\fR 'size=512'. \fBshape_polygon:\fR _size>=0,_nb_vertices>=3,_angle Input a 2D polygonal binary shape with specified geometry. \fIDefault value:\fR 'size=512', 'nb_vertices=5' and 'angle=0'. \fBshape_snowflake:\fR size>=0,0<=_nb_recursions<=6 Input a 2D snowflake binary shape with specified size. \fIDefault values:\fR 'size=512' and 'nb_recursions=5'. \fBshape_star:\fR _size>=0,_nb_branches>0,0<=_thickness<=1 Input a 2D star binary shape with specified size. \fIDefault values:\fR 'size=512', 'nb_branches=5' and 'thickness=0.38'. \fBshared (+):\fR x0[%],x1[%],y[%],z[%],c[%] | y0[%],y1[%],z[%],c[%] | z0[%],z1[%],c[%] | c0[%],c1[%] | c0[%] | (no arg) Insert shared buffers from (opt. points/rows/planes/channels of) selected images. Shared buffers cannot be returned by a command, nor a local environment. (eq. to 'sh'). \fBsample:\fR _name1={ ? | apples | balloons | barbara | boats | bottles | butterfly | cameraman | car | cat | cliff | chick | colorful | david | dog | duck | eagle | elephant | earth | flower | fruits | gmicky | gmicky_mahvin | gmicky_wilber | greece | gummy | house | inside | landscape | leaf | lena | leno | lion | mandrill | monalisa | monkey | parrots | pencils | peppers | portrait0 | portrait1 | portrait2 | portrait3 | portrait4 | portrait5 | portrait6 | portrait7 | portrait8 | portrait9 | roddy | rooster | rose | square | swan | teddy | tiger | tulips | wall | waterfall | zelda },_name2,...,_nameN,_width={ >=0 | 0 (auto) },_height = { >=0 | 0 (auto) } | (no arg) Input a new sample RGB image (opt. with specified size). (eq. to 'sp').\n Argument 'name' can be replaced by an integer which serves as a sample index. \fBsrand (+):\fR value | (no arg) Set random generator seed. If no argument is specified, a random value is used as the random generator seed. \fBstore (+):\fR _is_compressed={ 0 | 1 },variable_name1,_variable_name2,... Store selected images into one or several named variables. Selected images are transferred to the variables, and are so removed from the image list. (except if the prepended variant of the command '+store[selection]' is used). If a single variable name is specified, all images of the selection are assigned to the named variable. Otherwise, there must be as many variable names as images in the selection, and each selected image is assigned to each specified named variable. Use command 'input $variable' to bring the stored images back in the list. \fBtestimage2d:\fR _width>0,_height>0,_spectrum>0 Input a 2D synthetic image. \fIDefault values:\fR 'width=512', 'height=width' and 'spectrum=3'. \fBuncommand (+):\fR command_name[,_command_name2,...] | * Discard definition of specified custom commands. Set argument to '*' for discarding all existing custom commands. \fBuniform_distribution:\fR nb_levels>=1,spectrum>=1 Input set of uniformly distributed spectrum-d points in [0,1]^spectrum. \fBunserialize (+):\fR Recreate lists of images from serialized image buffers, obtained with command 'serialize'. \fBupdate:\fR Update commands from the latest definition file on the G'MIC server. (eq. to 'up'). \fBparse_gui:\fR _filter_name,_outputmode Parse selected filter definitions and generate info about filters in selected output mode. 'outputmode' can be { json | list | print | update | zart }.\n It is possible to define a custom output mode, by implementing the following commands ('outputmode' must be replaced by the name of the custom user output mode): . 'parse_gui_outputmode' : A command that outputs the parsing information with a custom format. . 'parse_gui_parseparams_outputmode' (optional): A simple command that returns 0 or 1. It tells the parser whether parameters of matching filter must be analyzed (slower) or not. . 'parse_gui_trigger_outputmode' (optional): A command that is called by the parser just before parsing the set of each matching filters.\n Here is the list of variables set by the parser, accessible in command 'parse_gui_outputmode':\n '$_nbfilters': Number of matching filters. '$_nongui' (stored as an image): All merged lines in the file that do not correspond to '#@gui' lines.\n For each filter \#F ('F' in range [0,$_nbfilters-1]): . '$_fF_name': Filter name. . '$_fF_path': Full path. . '$_fF_locale': Filter locale (empty, if not specified). . '$_fF_command': Filter command. . '$_fF_commandpreview': Filter preview command (empty, if not specified). . '$_fF_zoomfactor': Default zoom factor (empty, if not specified). . '$_fF_zoomaccurate': Is preview accurate when zoom changes ? (can be { 0=false | 1=true }). . '$_fF_inputmode': Default preferred input mode (empty, if not specified). . '$_fF_hide': Path of filter hided by current filter (for localized filters, empty if not specified). . '$_fF_nbparams': Number of parameters.\n For each parameter \#P of the filter \#F ('P' in range [0,$_fF_nbparams-1]): . '$_fF_pP_name': Parameter name. . '$_fF_pP_type': Parameter type. . '$_fF_pP_responsivity': Parameter responsivity (can be { 0 | 1 }). . '$_fF_pP_visibility': Parameter visibility. . '$_fF_pP_propagation': Propagation of the parameter visibility. . '$_fF_pP_nbargs': Number of parameter arguments.\n For each argument \#A of the parameter \#P ('A' in range [0,$_fF_pP_nbargs-1]): . '$_fF_pP_aA': Argument value\n Default parameters: 'filter_name=*' and 'output_format=print'. \fBverbose (+):\fR level | { + | - } Set or increment/decrement the verbosity level. Default level is 0. (eq. to 'v').\n When 'level'>0, G'MIC log messages are displayed on the standard error (stderr). \fIDefault value:\fR 'level=1'. \fBwait (+):\fR delay | (no arg) Wait for a given delay (in ms), optionally since the last call to 'wait'. or wait for a user event occurring on the selected instant display windows. 'delay' can be { <0=delay+flush events | 0=event | >0=delay }. Command selection (if any) stands for instant display window indices instead of image indices. If no window indices are specified and if 'delay' is positive, the command results in a 'hard' sleep during specified delay. \fIDefault value:\fR 'delay=0'. \fBwarn (+):\fR _force_visible={ 0 | 1 },_message Print specified warning message, on the standard error (stderr). Command selection (if any) stands for displayed call stack subset instead of image indices. \fBwindow (+):\fR _width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_pos_x[%],_pos_y[%],_title Display selected images into an instant display window with specified size, normalization type, fullscreen mode and title. (eq. to 'w').\n If 'width' or 'height' is set to -1, the corresponding dimension is adjusted to the window or image size. Specify 'pos_x' and 'pos_y' arguments only if the window has to be moved to the specified coordinates. Otherwise, they can be avoided. 'width'=0 or 'height'=0 closes the instant display 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 display windows by using the numbered variants 'w0' (default, eq. to 'w'),'w1',...,'w9' of the command 'w'. Invoke 'window' with no selection to make the window visible, if is has been closed by the user. \fIDefault values:\fR 'width=height=normalization=fullscreen=-1' and 'title=(undefined)'. ** \fIList Manipulation:\fR \fBkeep (+):\fR Keep only selected images. (eq. to 'k'). \fBmove (+):\fR position[%] Move selected images at specified position. (eq. to 'mv'). \fBname (+):\fR "name1","name2",... Set names of selected images. - If the selection contains a single image, then it is assumed the command has a single name argument (possibly containing multiple comas). - If the selection contains more than one image, each command argument defines a single image name for each image of the selection. (eq. to 'nm'). \fBremove (+):\fR Remove selected images. (eq. to 'rm'). \fBremove_duplicates:\fR Remove duplicates images in the selected images list. \fBremove_empty:\fR Remove empty images in the selected image list. \fBreverse (+):\fR Reverse positions of selected images. (eq. to 'rv'). \fBsort_list:\fR _ordering={ + | - },_criterion Sort list of selected images according to the specified image criterion. \fIDefault values:\fR 'ordering=+', 'criterion=i'. \fBsort_str:\fR Sort selected images (viewed as a list of strings) in lexicographic order. ** \fIMathematical Operators:\fR \fBabs (+):\fR Compute the pointwise absolute values of selected images. \fBacos (+):\fR Compute the pointwise arccosine of selected images. \fBacosh (+):\fR Compute the pointwise hyperbolic arccosine of selected images. \fBadd (+):\fR value[%] | [image] | 'formula' | (no arg) Add specified value, image or mathematical expression to selected images, or compute the pointwise sum of selected images. (eq. to '+'). \fBand (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise AND of selected images with specified value, image or mathematical expression, or compute the pointwise sequential bitwise AND of selected images. (eq. to '&'). \fBargmax:\fR Compute the argmax of selected images. Returns a single image with each pixel value being the index of the input image with maximal value. \fBargmaxabs:\fR Compute the argmaxabs of selected images. Returns a single image with each pixel value being the index of the input image with maxabs value. \fBargmin:\fR Compute the argmin of selected images. Returns a single image with each pixel value being the index of the input image with minimal value. \fBargminabs:\fR Compute the argminabs of selected images. Returns a single image with each pixel value being the index of the input image with minabs value. \fBasin (+):\fR Compute the pointwise arcsine of selected images. \fBasinh (+):\fR Compute the pointwise hyperbolic arcsine of selected images. \fBatan (+):\fR Compute the pointwise arctangent of selected images. \fBatan2 (+):\fR [x_argument] Compute the pointwise oriented arctangent of selected images. Each selected image is regarded as the y-argument of the arctangent function, while the specified image gives the corresponding x-argument. \fBatanh (+):\fR Compute the pointwise hyperbolic arctangent of selected images. \fBbsl (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise left shift of selected images with specified value, image or mathematical expression, or compute the pointwise sequential bitwise left shift of selected images. (eq. to '<<'). \fBbsr (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise right shift of selected images with specified value, image or" mathematical expression, or compute the pointwise sequential bitwise right shift of selected images. (eq. to '>>'). \fBcos (+):\fR Compute the pointwise cosine of selected images. \fBcosh (+):\fR Compute the pointwise hyperbolic cosine of selected images. \fBdiv (+):\fR value[%] | [image] | 'formula' | (no arg) Divide selected images by specified value, image or mathematical expression, or compute the pointwise quotient of selected images. (eq. to '/'). \fBdiv_complex:\fR [divider_real,divider_imag],_epsilon>=0 Perform division of the selected complex pairs (real1,imag1,...,realN,imagN) of images by specified complex pair of images (divider_real,divider_imag). In complex pairs, the real image must be always located before the imaginary image in the image list. \fIDefault value:\fR 'epsilon=1e-8'. \fBeq (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the boolean equality of selected images with specified value, image or mathematical expression, or compute the boolean equality of selected images. (eq. to '=='). \fBexp (+):\fR Compute the pointwise exponential of selected images. \fBge (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the boolean 'greater or equal than' of selected images with specified value, image or mathematical expression, or compute the boolean 'greater or equal than' of selected images. (eq. to '>='). \fBgt (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the boolean 'greater than' of selected images with specified value, image or mathematical expression, or compute the boolean 'greater than' of selected images. (eq. to '>'). \fBle (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the boolean 'less or equal than' of selected images with specified value, image or mathematical expression, or compute the boolean 'less or equal than' of selected images. (eq. to '<='). \fBlt (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the boolean 'less than' of selected images with specified value, image or mathematical expression, or compute the boolean 'less than' of selected images. (eq. to '<'). \fBlog (+):\fR Compute the pointwise base-e logarithm of selected images. \fBlog10 (+):\fR Compute the pointwise base-10 logarithm of selected images. \fBlog2 (+):\fR Compute the pointwise base-2 logarithm of selected images \fBmax (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the maximum between selected images and specified value, image or mathematical expression, or compute the pointwise maxima between selected images. \fBmaxabs (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the maxabs between selected images and specified value, image or mathematical expression, or compute the pointwise maxabs between selected images. \fBmdiv (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the matrix division of selected matrices/vectors by specified value, image or mathematical expression, or compute the matrix division of selected images. (eq. to 'm/'). \fBmed:\fR Compute the median of selected images. \fBmin (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the minimum between selected images and specified value, image or mathematical expression, or compute the pointwise minima between selected images. \fBminabs (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the minabs between selected images and specified value, image or mathematical expression, or compute the pointwise minabs between selected images. \fBmod (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the modulo of selected images with specified value, image or mathematical expression, or compute the pointwise sequential modulo of selected images. (eq. to '%'). \fBmmul (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the matrix right multiplication of selected matrices/vectors by specified value, image or mathematical expression, or compute the matrix right multiplication of selected images. (eq. to 'm*'). \fBmul (+):\fR value[%] | [image] | 'formula' | (no arg) Multiply selected images by specified value, image or mathematical expression, or compute the pointwise product of selected images. (eq. to '*'). \fBmul_channels:\fR value1,_value2,...,_valueN Multiply channels of selected images by specified sequence of values. \fBmul_complex:\fR [multiplier_real,multiplier_imag] Perform multiplication of the selected complex pairs (real1,imag1,...,realN,imagN) of images by specified complex pair of images (multiplier_real,multiplier_imag). In complex pairs, the real image must be always located before the imaginary image in the image list. \fBneq (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the boolean inequality of selected images with specified value, image or mathematical expression, or compute the boolean inequality of selected images. (eq. to '!='). \fBor (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise OR of selected images with specified value, image or mathematical expression, or compute the pointwise sequential bitwise OR of selected images. (eq. to '|'). \fBpow (+):\fR value[%] | [image] | 'formula' | (no arg) Raise selected images to the power of specified value, image or mathematical expression, or compute the pointwise sequential powers of selected images. (eq. to '^'). \fBrol (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise left rotation of selected images with specified value, image or mathematical expression, or compute the pointwise sequential bitwise left rotation of selected images. \fBror (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise right rotation of selected images with specified value, image or mathematical expression, or compute the pointwise sequential bitwise right rotation of selected images. \fBsign (+):\fR Compute the pointwise sign of selected images. \fBsin (+):\fR Compute the pointwise sine of selected images. \fBsinc (+):\fR Compute the pointwise sinc function of selected images. \fBsinh (+):\fR Compute the pointwise hyperbolic sine of selected images. \fBsqr (+):\fR Compute the pointwise square function of selected images. \fBsqrt (+):\fR Compute the pointwise square root of selected images. \fBsub (+):\fR value[%] | [image] | 'formula' | (no arg) Subtract specified value, image or mathematical expression to selected images, or compute the pointwise difference of selected images. (eq. to '-'). \fBtan (+):\fR Compute the pointwise tangent of selected images. \fBtanh (+):\fR Compute the pointwise hyperbolic tangent of selected images. \fBxor (+):\fR value[%] | [image] | 'formula' | (no arg) Compute the bitwise XOR of selected images with specified value, image or mathematical expression, or compute the pointwise sequential bitwise XOR of selected images. ** \fIValues Manipulation:\fR \fBapply_curve:\fR 0<=smoothness<=1,x0,y0,x1,y1,x2,y2,...,xN,yN Apply curve transformation to image values. \fIDefault values:\fR 'smoothness=1', 'x0=0', 'y0=100'. \fBapply_gamma:\fR gamma>=0 Apply gamma correction to selected images. \fBbalance_gamma:\fR _ref_color1,... Compute gamma-corrected color balance of selected image, with respect to specified reference color. \fIDefault value:\fR 'ref_color1=128'. \fBcast:\fR datatype_source,datatype_target Cast datatype of image buffer from specified source type to specified target type. 'datatype_source' and 'datatype_target' can be { uchar | char | ushort | short | uint | int | uint64 | int64 | float | double }. \fBcomplex2polar:\fR Compute complex to polar transforms of selected images. \fBcompress_clut:\fR _max_error>0,_avg_error>0,_max_nbpoints>=8,_error_metric={ 0=L2-norm | 1=deltaE_1976 | 2=deltaE_2000 },_reconstruction_colorspace={ 0=srgb | 1=rgb | 2=lab },_try_rbf_first={ 0 | 1 } Compress selected color LUTs as sequences of colored keypoints. \fIDefault values:\fR 'max_error=1.25', 'avg_error=0.75', 'max_nb_points=2048', 'error_metric=2', 'reconstruction_colorspace=0' and 'try_rbf_first=1'. \fBcompress_rle:\fR _is_binary_data={ 0 | 1 },_maximum_sequence_length>=0 Compress selected images as 2xN data matrices, using RLE algorithm. Set 'maximum_sequence_length=0' to disable maximum length constraint. \fIDefault values:\fR 'is_binary_data=0' and 'maximum_sequence_length=0'. \fBcumulate (+):\fR { x | y | z | c }...{ x | y | z | c } | (no arg) Compute the cumulative function of specified image data, optionally along the specified axes. \fBcut (+):\fR { value0[%] | [image0] },{ value1[%] | [image1] } | [image] Cut values of selected images in specified range. (eq. to 'c').\n \fBdecompress_clut:\fR _width>0,_height>0,_depth>0,_reconstruction_colorspace={ 0=srgb | 1=rgb | 2=lab } Decompress selected colored keypoints into 3D CLUTs, using a mixed RBF/PDE approach. \fIDefault values:\fR 'width=height=depth=48' and 'reconstruction_colorspace=0'. \fBdecompress_clut_rbf:\fR _width>0,_height>0,_depth>0,_reconstruction_colorspace={ 0=srgb | 1=rgb | 2=lab } Decompress selected colored keypoints into 3D CLUTs, using RBF thin plate spline interpolation. \fIDefault value:\fR 'width=height=depth=48' and 'reconstruction_colorspace=0'. \fBdecompress_clut_pde:\fR _width>0,_height>0,_depth>0,_reconstruction_colorspace={ 0=srgb | 1=rgb | 2=lab } Decompress selected colored keypoints into 3D CLUTs, using multiscale diffusion PDE's. \fIDefault values:\fR 'width=height=depth=48' and 'reconstruction_colorspace=0'. \fBdecompress_rle:\fR Decompress selected data vectors, using RLE algorithm. \fBdiscard (+):\fR _value1,_value2,... | { x | y | z | c}...{ x | y | z | c},_value1,_value2,... | (no arg) Discard specified values in selected images or discard neighboring duplicate values, optionally only for the values along the first of a specified axis. If no values are specified, neighboring duplicate values are discarded. If all pixels of a selected image are discarded, an empty image is returned. \fBeigen2tensor:\fR Recompose selected pairs of eigenvalues/eigenvectors as 2x2 or 3x3 tensor fields. \fBendian (+):\fR _datatype Reverse data endianness of selected images, eventually considering the pixel being of the specified datatype. 'datatype' can be { uchar | char | ushort | short | uint | int | uint64 | int64 | float | double }. \fBequalize (+):\fR _nb_levels>0[%],_value_min[%],_value_max[%] Equalize histograms of selected images. If value range is specified, the equalization is done only for pixels in the specified value range. \fIDefault values:\fR 'nb_levels=256', 'value_min=0%' and 'value_max=100%'. \fBfill (+):\fR value1,_value2,... | [image] | 'formula' Fill selected images with values read from the specified value list, existing image or mathematical expression. Single quotes may be omitted in 'formula'. (eq. to 'f'). \fBindex (+):\fR { [palette] | palette_name },0<=_dithering<=1,_map_palette={ 0 | 1 } Index selected vector-valued images by specified vector-valued palette. 'palette_name' can be { default | hsv | lines | hot | cool | jet | flag | cube | rainbow | algae | amp |balance | curl | deep | delta | dense | diff | haline | ice | matter | oxy | phase | rain | solar | speed | tarn |tempo | thermal | topo | turbid | aurora | hocuspocus | srb2 | uzebox } \fIDefault values:\fR 'dithering=0' and 'map_palette=0'. \fBinrange:\fR min[%],max[%],_include_boundaries={ 0=no | 1=yes } Detect pixels whose values are in specified range [min,max], in selected images. (eq. to 'ir'). \fIDefault value:\fR 'include_boundaries=1'. \fBmap (+):\fR [palette],_boundary_conditions | palette_name,_boundary_conditions Map specified vector-valued palette to selected indexed scalar images. 'palette_name' can be { default | hsv | lines | hot | cool | jet | flag | cube | rainbow | algae | amp | balance | curl | deep | delta | dense | diff | gray | haline | ice | matter | oxy | phase | rain | solar | speed | tarn | tempo | thermal | topo | turbid | aurora | hocuspocus | srb2 | uzebox } 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fIDefault value:\fR 'boundary_conditions=0'. \fBmix_channels:\fR (a00,...,aMN) | [matrix] Apply specified matrix to channels of selected images. \fBnegate:\fR base_value | (no arg) Negate image values. \fIDefault value:\fR 'base_value=(undefined)'. \fBnoise (+):\fR std_deviation>=0[%],_noise_type Add random noise to selected images. 'noise_type' can be { 0=gaussian | 1=uniform | 2=salt&pepper | 3=poisson | 4=rice }. \fIDefault value:\fR 'noise_type=0'. \fBnoise_perlin:\fR _scale_x[%]>0,_scale_y[%]>0,_scale_z[%]>0,_seed_x,_seed_y,_seed_z Render 2D or 3D Perlin noise on selected images, from specified coordinates. The Perlin noise is a specific type of smooth noise, described here : 'https://en.wikipedia.org/wiki/Perlin_noise'. \fIDefault values:\fR 'scale_x=scale_y=scale_z=16' and 'seed_x=seed_y=seed_z=0'. \fBnoise_poissondisk:\fR _radius[%]>0,_max_sample_attempts>0 Add poisson disk sampling noise to selected images. Implements the algorithm from the article "Fast Poisson Disk Sampling in Arbitrary Dimensions", by Robert Bridson (SIGGRAPH'2007). \fIDefault values:\fR 'radius=8' and 'max_sample_attempts=30'. \fBnormp:\fR p>=0 Compute the pointwise Lp-norm norm of vector-valued pixels in selected images. \fIDefault value:\fR 'p=2'. \fBnorm:\fR Compute the pointwise euclidean norm of vector-valued pixels in selected images. \fBnormalize (+):\fR { value0[%] | [image0] },{ value1[%] | [image1] },_constant_case_ratio | [image] Linearly normalize values of selected images in specified range. (eq. to 'n'). \fBnormalize_sum:\fR Normalize selected images with a unitary sum. \fBnot:\fR Apply boolean not operation on selected images. \fBorientation:\fR Compute the pointwise orientation of vector-valued pixels in selected images. \fBoneminus:\fR For each selected image, compute one minus image. \fBotsu:\fR _nb_levels>0 Hard-threshold selected images using Otsu's method. The computed thresholds are returned as a list of values in the status. \fIDefault value:\fR 'nb_levels=256'. \fBpolar2complex:\fR Compute polar to complex transforms of selected images. \fBquantize:\fR nb_levels>=1,_keep_values={ 0 | 1 },_quantization_type={ -1=median-cut | 0=k-means | 1=uniform } Quantize selected images. \fIDefault value:\fR 'keep_values=1' and 'quantization_type=0'. \fBquantize_area:\fR _min_area>0 Quantize selected images such that each flat region has an area greater or equal to 'min_area'. \fIDefault value:\fR 'min_area=10'. \fBrand (+):\fR { value0[%] | [image0] },_{ value1[%] | [image1] } | [image] Fill selected images with random values uniformly distributed in the specified range. \fBreplace:\fR source,target Replace pixel values in selected images. \fBreplace_inf:\fR _expression Replace all infinite values in selected images by specified expression. \fBreplace_nan:\fR _expression Replace all NaN values in selected images by specified expression. \fBreplace_seq:\fR "search_seq","replace_seq" Search and replace a sequence of values in selected images. \fBreplace_str:\fR "search_str","replace_str" Search and replace a string in selected images (viewed as strings, i.e. sequences of character codes). \fBround (+):\fR rounding_value>=0,_rounding_type | (no arg) Round values of selected images. 'rounding_type' can be { -1=backward | 0=nearest | 1=forward }. \fIDefault value:\fR 'rounding_type=0'. \fBroundify:\fR gamma>=0 Apply roundify transformation on float-valued data, with specified gamma. \fIDefault value:\fR 'gamma=0'. \fBset (+):\fR value,_x[%],_y[%],_z[%],_c[%] Set pixel value in selected images, at specified coordinates. (eq. to '=').\n If specified coordinates are outside the image bounds, no action is performed. \fIDefault values:\fR 'x=y=z=c=0'. \fBthreshold:\fR value[%],_is_soft={ 0 | 1 } : Threshold values of selected images. 'soft' can be { 0=hard-thresholding | 1=soft-thresholding }. \fIDefault value:\fR 'is_soft=0'. \fBunrepeat:\fR Remove repetition of adjacent values in selected images. \fBvector2tensor:\fR Convert selected vector fields to corresponding tensor fields. ** \fIColors Manipulation:\fR \fBadjust_colors:\fR -100<=_brightness<=100,-100<=_contrast<=100,-100<=_gamma<=100, -100<=_hue_shift<=100,-100<=_saturation<=100,_value_min,_value_max Perform a global adjustment of colors on selected images. Range of correct image values are considered to be in [value_min,value_max] (e.g. [0,255]). If 'value_min==value_max==0', value range is estimated from min/max values of selected images. Processed images have pixel values constrained in [value_min,value_max]. \fIDefault values:\fR 'brightness=0', 'contrast=0', 'gamma=0', 'hue_shift=0', 'saturation=0', 'value_min=value_max=0'. \fBapply_channels:\fR "command",color_channels,_value_action={ 0=none | 1=cut | 2=normalize } Apply specified command on the chosen color channel(s) of each selected images. (eq. to 'ac').\n Argument 'color_channels' refers to a colorspace, and can be basically one of { all | rgba | [s]rgb | ryb | lrgb | ycbcr | lab | lch | hsv | hsi | hsl | cmy | cmyk | yiq }. You can also make the processing focus on a few particular channels of this colorspace, by setting 'color_channels' as 'colorspace_channel' (e.g. 'hsv_h' for the hue). All channel values are considered to be provided in the [0,255] range. \fIDefault value:\fR 'value_action=0'. \fBautoindex:\fR nb_colors>0,0<=_dithering<=1,_method={ 0=median-cut | 1=k-means } Index selected vector-valued images by adapted colormaps. \fIDefault values:\fR 'dithering=0' and 'method=1'. \fBbayer2rgb:\fR _GM_smoothness,_RB_smoothness1,_RB_smoothness2 Transform selected RGB-Bayer sampled images to color images. \fIDefault values:\fR 'GM_smoothness=RB_smoothness=1' and 'RB_smoothness2=0.5'. \fBdeltaE:\fR [image],_metric={ 0=deltaE_1976 | 1=deltaE_2000 },"_to_Lab_command" Compute the CIE DeltaE color difference between selected images and specified [image]. Argument 'to_Lab_command' is a command able to convert colors of [image] into a Lab representation. \fIDefault values:\fR 'metric=1' and 'to_Lab_command="srgb2lab"'. \fBcmy2rgb:\fR Convert color representation of selected images from CMY to RGB. \fBcmyk2rgb:\fR Convert color representation of selected images from CMYK to RGB. \fBcolorblind:\fR type={ 0=protanopia | 1=protanomaly | 2=deuteranopia | 3=deuteranomaly | 4=tritanopia | 5=tritanomaly | 6=achromatopsia | 7=achromatomaly } Simulate color blindness vision. \fBcolormap:\fR nb_levels>=0,_method={ 0=median-cut | 1=k-means },_sort_vectors Estimate best-fitting colormap with 'nb_colors' entries, to index selected images. Set 'nb_levels==0' to extract all existing colors of an image. 'sort_vectors' can be '{ 0=unsorted | 1=by increasing norm | 2=by decreasing occurrence }' \fIDefault value:\fR 'method=1' and 'sort_vectors=1'. \fBcompose_channels:\fR Compose all channels of each selected image, using specified arithmetic operator (+,-,or,min,...). \fIDefault value:\fR '1=+'. \fBdirection2rgb:\fR Compute RGB representation of selected 2D direction fields. \fBditheredbw:\fR Create dithered B&W version of selected images. \fBfill_color:\fR col1,...,colN Fill selected images with specified color. (eq. to 'fc'). \fBgradient2rgb:\fR _is_orientation={ 0 | 1 } Compute RGB representation of 2D gradient of selected images. \fIDefault value:\fR 'is_orientation=0'. \fBhcy2rgb:\fR Convert color representation of selected images from HCY to RGB. \fBhsi2rgb:\fR Convert color representation of selected images from HSI to RGB. \fBhsi82rgb:\fR Convert color representation of selected images from HSI8 to RGB. \fBhsl2rgb:\fR Convert color representation of selected images from HSL to RGB. \fBhsl82rgb:\fR Convert color representation of selected images from HSL8 to RGB. \fBhsv2rgb:\fR Convert color representation of selected images from HSV to RGB. \fBhsv82rgb:\fR Convert color representation of selected images from HSV8 to RGB. \fBint2rgb:\fR Convert color representation of selected images from INT24 to RGB. \fBlab2lch:\fR Convert color representation of selected images from Lab to Lch. \fBlab2rgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lab to RGB. \fIDefault value:\fR 'illuminant=1'. \fBlab2srgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lab to sRGB. \fIDefault value:\fR 'illuminant=1'. \fBlab82srgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lab8 to sRGB. \fIDefault value:\fR 'illuminant=1'. \fBlab2xyz:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lab to XYZ. \fIDefault value:\fR 'illuminant=1'. \fBlab82rgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lab8 to RGB. \fIDefault value:\fR 'illuminant=1'. \fBlch2lab:\fR Convert color representation of selected images from Lch to Lab. \fBlch2rgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lch to RGB. \fIDefault value:\fR 'illuminant=1'. \fBlch82rgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from Lch8 to RGB. \fIDefault value:\fR 'illuminant=1'. \fBluminance:\fR Compute luminance of selected sRGB images. \fBlightness:\fR Compute lightness of selected sRGB images. \fBlut_contrast:\fR _nb_colors>1,_min_rgb_value Generate a RGB colormap where consecutive colors have high contrast. This function performs a specific score maximization to generate the result, so it may take some time when 'nb_colors' is high. \fIDefault values:\fR 'nb_colors=256' and 'min_rgb_value=64'. \fBmap_clut:\fR [clut] | "clut_name" Map specified RGB color LUT to selected images. \fBmix_rgb:\fR a11,a12,a13,a21,a22,a23,a31,a32,a33 Apply 3x3 specified matrix to RGB colors of selected images. \fIDefault values:\fR 'a11=1', 'a12=a13=a21=0', 'a22=1', 'a23=a31=a32=0' and 'a33=1'. \fBpalette:\fR palette_name | palette_number Input specified color palette at the end of the image list. 'palette_name' can be { default | hsv | lines | hot | cool | jet | flag | cube | rainbow | algae | amp | balance | curl | deep | delta | dense | diff | gray | haline | ice | matter | oxy | phase | rain | solar | speed | tarn | tempo | thermal | topo | turbid | aurora | hocuspocus | srb2 | uzebox } \fBpseudogray:\fR _max_increment>=0,_JND_threshold>=0,_bits_depth>0 Generate pseudogray colormap with specified increment and perceptual threshold. If 'JND_threshold' is 0, no perceptual constraints are applied. \fIDefault values:\fR 'max_increment=5', 'JND_threshold=2.3' and 'bits_depth=8'. \fBreplace_color:\fR tolerance[%]>=0,smoothness[%]>=0,src1,src2,...,dest1,dest2,... Replace pixels from/to specified colors in selected images. \fBretinex:\fR _value_offset>0,_colorspace={ hsi | hsv | lab | lrgb | rgb | ycbcr }, 0<=_min_cut<=100,0<=_max_cut<=100,_sigma_low>0,_sigma_mid>0,_sigma_high>0 Apply multi-scale retinex algorithm on selected images to improve color consistency. (as described in the page http://www.ipol.im/pub/art/2014/107/). \fIDefault values:\fR 'offset=1', 'colorspace=hsv', 'min_cut=1', 'max_cut=1', 'sigma_low=15', 'sigma_mid=80' and 'sigma_high=250'. \fBrgb2bayer:\fR _start_pattern=0,_color_grid=0 Transform selected color images to RGB-Bayer sampled images. \fIDefault values:\fR 'start_pattern=0' and 'color_grid=0'. \fBrgb2cmy:\fR Convert color representation of selected images from RGB to CMY. \fBrgb2cmyk:\fR Convert color representation of selected images from RGB to CMYK. \fBrgb2hcy:\fR Convert color representation of selected images from RGB to HCY. \fBrgb2hsi:\fR Convert color representation of selected images from RGB to HSI. \fBrgb2hsi8:\fR Convert color representation of selected images from RGB to HSI8. \fBrgb2hsl:\fR Convert color representation of selected images from RGB to HSL. \fBrgb2hsl8:\fR Convert color representation of selected images from RGB to HSL8. \fBrgb2hsv:\fR Convert color representation of selected images from RGB to HSV. \fBrgb2hsv8:\fR Convert color representation of selected images from RGB to HSV8. \fBrgb2int:\fR Convert color representation of selected images from RGB to INT24 scalars. \fBrgb2lab:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from RGB to Lab. \fIDefault value:\fR 'illuminant=1'. \fBrgb2lab8:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from RGB to Lab8. \fIDefault value:\fR 'illuminant=1'. \fBrgb2lch:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from RGB to Lch. \fIDefault value:\fR 'illuminant=1'. \fBrgb2lch8:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from RGB to Lch8. \fIDefault value:\fR 'illuminant=1'. \fBrgb2luv:\fR Convert color representation of selected images from RGB to LUV. \fBrgb2ryb:\fR Convert color representation of selected images from RGB to RYB. \fBrgb2srgb:\fR Convert color representation of selected images from linear RGB to sRGB. \fBrgb2xyz:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from RGB to XYZ. \fIDefault value:\fR 'illuminant=1'. \fBrgb2xyz8:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from RGB to XYZ8. \fIDefault value:\fR 'illuminant=1'. \fBrgb2yiq:\fR Convert color representation of selected images from RGB to YIQ. \fBrgb2yiq8:\fR Convert color representation of selected images from RGB to YIQ8. \fBrgb2ycbcr:\fR Convert color representation of selected images from RGB to YCbCr. \fBrgb2yuv:\fR Convert color representation of selected images from RGB to YUV. \fBrgb2yuv8:\fR Convert color representation of selected images from RGB to YUV8. \fBremove_opacity:\fR Remove opacity channel of selected images. \fBryb2rgb:\fR Convert color representation of selected images from RYB to RGB. \fBselect_color:\fR tolerance[%]>=0,col1,...,colN Select pixels with specified color in selected images. \fBsepia:\fR Apply sepia tones effect on selected images. \fBsolarize:\fR Solarize selected images. \fBsplit_colors:\fR _tolerance>=0,_max_nb_outputs>0,_min_area>0 Split selected images as several image containing a single color. One selected image can be split as at most 'max_nb_outputs' images. Output images are sorted by decreasing area of extracted color regions and have an additional alpha-channel. \fIDefault values:\fR 'tolerance=0', 'max_nb_outputs=256' and 'min_area=8'. \fBsplit_opacity:\fR Split color and opacity parts of selected images. \fBsrgb2lab:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from sRGB to Lab. \fIDefault value:\fR 'illuminant=1'. \fBsrgb2lab8:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from sRGB to Lab8. \fIDefault value:\fR 'illuminant=1'. \fBsrgb2rgb:\fR Convert color representation of selected images from sRGB to linear RGB. \fBto_a:\fR Force selected images to have an alpha channel. \fBto_color:\fR Force selected images to be in color mode (RGB or RGBA). \fBto_colormode:\fR mode={ 0=adaptive | 1=G | 2=GA | 3=RGB | 4=RGBA } Force selected images to be in a given color mode. \fIDefault value:\fR 'mode=0'. \fBto_gray:\fR Force selected images to be in GRAY mode. \fBto_graya:\fR Force selected images to be in GRAYA mode. \fBto_pseudogray:\fR _max_step>=0,_is_perceptual_constraint={ 0 | 1 },_bits_depth>0 Convert selected scalar images ([0-255]-valued) to pseudo-gray color images. \fIDefault values:\fR 'max_step=5', 'is_perceptual_constraint=1' and 'bits_depth=8'. The original pseudo-gray technique has been introduced by Rich Franzen [http://r0k.us/graphics/ pseudoGrey.html]. Extension of this technique to arbitrary increments for more tones, has been done by David Tschumperle. \fBto_rgb:\fR Force selected images to be in RGB mode. \fBto_rgba:\fR Force selected images to be in RGBA mode. \fBtransfer_histogram:\fR [reference_image],_nb_levels>0,_color_channels Transfer histogram of the specified reference image to selected images. Argument 'color channels' is the same as with command 'apply_channels'. \fIDefault value:\fR 'nb_levels=256' and 'color_channels=all'. \fBtransfer_pca:\fR [reference_image],_color_channels Transfer mean and covariance matrix of specified vector-valued reference image to selected images. Argument 'color channels' is the same as with command 'apply_channels'. \fIDefault value:\fR 'color_channels=all'. \fBtransfer_rgb:\fR [target],_gamma>=0,_regularization>=0,_luminosity_constraints>=0, _rgb_resolution>=0,_is_constraints={ 0 | 1 } Transfer colors from selected source images to selected reference image (given as argument). 'gamma' determines the importance of color occurrences in the matching process (0=none to 1=huge). 'regularization' determines the number of guided filter iterations to remove quantization effects. 'luminosity_constraints' tells if luminosity constraints must be applied on non-confident matched colors. 'is_constraints' tells if additional hard color constraints must be set (opens an interactive window). \fIDefault values:\fR 'gamma=0.3','regularization=8', 'luminosity_constraints=0.1', 'rgb_resolution=64' and 'is_constraints=0'. \fBxyz2lab:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from XYZ to Lab. \fIDefault value:\fR 'illuminant=1'. \fBxyz2rgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from XYZ to RGB. \fIDefault value:\fR 'illuminant=1'. \fBxyz82rgb:\fR illuminant={ 0=D50 | 1=D65 } | (no arg) Convert color representation of selected images from XYZ8 to RGB. \fIDefault value:\fR 'illuminant=1'. \fBycbcr2rgb:\fR Convert color representation of selected images from YCbCr to RGB. \fByiq2rgb:\fR Convert color representation of selected images from YIQ to RGB. \fByiq82rgb:\fR Convert color representation of selected images from YIQ8 to RGB. \fByuv2rgb:\fR Convert color representation of selected images from YUV to RGB. \fByuv82rgb:\fR Convert selected images from YUV8 to RGB color bases. ** \fIGeometry Manipulation:\fR \fBappend (+):\fR [image],axis,_centering | axis,_centering Append specified image to selected images, or all selected images together, along specified axis. (eq. to 'a').\n 'axis' can be { x | y | z | c }. Usual 'centering' values are { 0=left-justified | 0.5=centered | 1=right-justified }. \fIDefault value:\fR 'centering=0'. \fBappend_tiles:\fR _M>=0,_N>=0,0<=_centering_x<=1,0<=_centering_y<=1 Append MxN selected tiles as new images. If 'N' is set to 0, number of rows is estimated automatically. If 'M' is set to 0, number of columns is estimated automatically. If 'M' and 'N' are both set to '0', auto-mode is used. If 'M' or 'N' is set to 0, only a single image is produced. 'centering_x' and 'centering_y' tells about the centering of tiles when they have different sizes. \fIDefault values:\fR 'M=0', 'N=0', 'centering_x=centering_y=0.5'. \fBapply_scales:\fR "command",number_of_scales>0,_min_scale[%]>=0,_max_scale[%]>=0,_scale_gamma>0, _interpolation Apply specified command on different scales of selected images. 'interpolation' can be { 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. \fIDefault value:\fR 'min_scale=25%', 'max_scale=100%' and 'interpolation=3'. \fBautocrop (+):\fR value1,value2,... | (no arg) Autocrop selected images by specified vector-valued intensity. If no arguments are provided, cropping value is guessed. \fBautocrop_components:\fR _threshold[%],_min_area[%]>=0,_is_high_connectivity={ 0 | 1 },_output_type={ 0=crop | 1=segmentation | 2=coordinates } Autocrop and extract connected components in selected images, according to a mask given as the last channel of each of the selected image (e.g. alpha-channel). \fIDefault values:\fR 'threshold=0%', 'min_area=0.1%', 'is_high_connectivity=0' and 'output_type=1'. \fBautocrop_seq:\fR value1,value2,... | auto Autocrop selected images using the crop geometry of the last one by specified vector-valued intensity, or by automatic guessing the cropping value. \fIDefault value:\fR auto mode. \fBchannels (+):\fR { [image0] | c0[%] },_{ [image1] | c1[%] } Keep only specified channels of selected images. Dirichlet boundary is used when specified channels are out of range. \fBcolumns (+):\fR { [image0] | x0[%] },_{ [image1] | x1[%] } Keep only specified columns of selected images. Dirichlet boundary is used when specified columns are out of range. \fBcrop (+):\fR x0[%],x1[%],_boundary_conditions | x0[%],y0[%],x1[%],y1[%],_boundary_conditions | x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_boundary_conditions | x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_boundary_conditions Crop selected images with specified region coordinates. (eq. to 'z').\n 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fIDefault value:\fR 'boundary_conditions=0'. \fBdiagonal:\fR Transform selected vectors as diagonal matrices. \fBelevate:\fR _depth,_is_plain={ 0 | 1 },_is_colored={ 0 | 1 } Elevate selected 2D images into 3D volumes. \fIDefault values:\fR 'depth=64', 'is_plain=1' and 'is_colored=1'. \fBexpand_x:\fR size_x>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Expand selected images along the x-axis. \fIDefault value:\fR 'boundary_conditions=1'. \fBexpand_xy:\fR size>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Expand selected images along the xy-axes. \fIDefault value:\fR 'boundary_conditions=1'. \fBexpand_xyz:\fR size>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Expand selected images along the xyz-axes. \fIDefault value:\fR 'boundary_conditions=1'. \fBexpand_y:\fR size_y>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Expand selected images along the y-axis. \fIDefault value:\fR 'boundary_conditions=1'. \fBexpand_z:\fR size_z>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Expand selected images along the z-axis. \fIDefault value:\fR 'boundary_conditions=1'. \fBextract:\fR "condition",_output_type={ 0=xyzc-coordinates | 1=xyz-coordinates | 2=scalar-values | 3=vector-values } Extract a list of coordinates or values from selected image, where specified mathematical condition holds. For N coordinates matching, result is a 1xNx1x4 image. \fIDefault values:\fR 'output_type=0'. sp lena +extract_coords "norm(I)>128",3 \fBextract_region:\fR [label_image],_extract_xyz_coordinates={ 0 | 1 },_label_1,...,_label_M Extract all pixels of selected images whose corresponding label in '[label_image]' is equal to 'label_m', and output them as M column images. \fIDefault value:\fR 'extract_xyz_coordinates=0'. \fBmontage:\fR "_layout_code",_montage_mode={ 0<=centering<=1 | 2<=scale+2<=3 },_output_mode={ 0=single layer | 1=multiple layers },"_processing_command" Create a single image montage from selected images, according to specified layout code : - 'X' to assemble all images using an automatically estimated layout. - 'H' to assemble all images horizontally. - 'V' to assemble all images vertically. - 'A' to assemble all images as an horizontal array. - 'B' to assemble all images as a vertical array. - 'Ha:b' to assemble two blocks 'a' and 'b' horizontally. - 'Va:b' to assemble two blocks 'a' and 'b' vertically. - 'Ra' to rotate a block 'a' by 90 deg. ('RRa' for 180 deg. and 'RRRa' for 270 deg.). - 'Ma' to mirror a block 'a' along the X-axis ('MRRa' for the Y-axis). A block 'a' can be an image index (treated periodically) or a nested layout expression 'Hb:c', 'Vb:c','Rb' or 'Mb' itself. For example, layout code 'H0:V1:2' creates an image where image [0] is on the left, and images [1] and [2] vertically packed on the right. \fIDefault values:\fR 'layout_code=X', 'montage_mode=2', output_mode='0' and 'processing_command=""'. \fBmirror (+):\fR { x | y | z }...{ x | y | z } Mirror selected images along specified axes. \fBpermute (+):\fR 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', ... \fBresize (+):\fR [image],_interpolation,_boundary_conditions,_ax,_ay,_az,_ac | {[image_w] | width>0[%]},_{[image_h] | height>0[%]},_{[image_d] | depth>0[%]}, _{[image_s] | spectrum>0[%]},_interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images with specified geometry. (eq. to 'r').\n 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0 or 4' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=1', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBresize_mn:\fR width[%]>=0,_height[%]>=0,_depth[%]>=0,_B_value,_C_value Resize selected images with Mitchell-Netravali filter (cubic). For details about the method, see: https://de.wikipedia.org/wiki/Mitchell-Netravali-Filter \fIDefault values:\fR 'height=100%', 'depth=100%', 'B=0.3333' and 'C=0.3333'. \fBresize_pow2:\fR _interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images so that each dimension is a power of 2. 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=0', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBresize_ratio2d:\fR width>0,height>0,_mode={ 0=inside | 1=outside | 2=padded },0=<_interpolation<=6 Resize selected images while preserving their aspect ratio. (eq. to 'rr2d'). \fIDefault values:\fR 'mode=0' and 'interpolation=6'. \fBresize2dx:\fR width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images along the x-axis, preserving 2D ratio. (eq. to 'r2dx').\n 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=3', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBresize2dy:\fR height[%]>=0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images along the y-axis, preserving 2D ratio. (eq. to 'r2dy').\n 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=3', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBresize3dx:\fR width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images along the x-axis, preserving 3D ratio. (eq. to 'r3dx').\n 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=3', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBresize3dy:\fR height[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images along the y-axis, preserving 3D ratio. (eq. to 'r3dy').\n 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=3', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBresize3dz:\fR depth[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac Resize selected images along the z-axis, preserving 3D ratio. (eq. to 'r3dz').\n 'interpolation' can be { -1=none (memory content) | 0=none | 1=nearest | 2=average | 3=linear | 4=grid | 5=bicubic | 6=lanczos }. 'boundary_conditions' has different meanings, according to the chosen 'interpolation' mode : . When 'interpolation=={ -1 | 1 | 2 | 4 }', 'boundary_conditions' is meaningless. . When 'interpolation==0', 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. . When 'interpolation=={ 3 | 5 | 6 }', 'boundary_conditions' can be { 0=none | 1=neumann }. 'ax,ay,az,ac' set the centering along each axis when 'interpolation=0' (set to '0' by default, must be defined in range [0,1]). \fIDefault values:\fR 'interpolation=3', 'boundary_conditions=0' and 'ax=ay=az=ac=0'. \fBrotate (+):\fR angle,_interpolation,_boundary_conditions,_center_x[%],_center_y[%] | u,v,w,angle,interpolation,boundary_conditions,_center_x[%],_center_y[%], _center_z[%] Rotate selected images with specified angle (in deg.), and optionally 3D axis (u,v,w). 'interpolation' can be { 0=none | 1=linear | 2=bicubic }. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. When a rotation center (cx,cy,_cz) is specified, the size of the image is preserved. \fIDefault values:\fR 'interpolation=1', 'boundary_conditions=0' and 'center_x=center_y=(undefined)'. \fBrotate_tileable:\fR angle,_max_size_factor>=0 Rotate selected images by specified angle and make them tileable. If resulting size of an image is too big, the image is replaced by a 1x1 image. \fIDefault values:\fR 'max_size_factor=8'. \fBrows (+):\fR { [image0] | y0[%] },_{ [image1] | y1[%] } Keep only specified rows of selected images. Dirichlet boundary conditions are used when specified rows are out of range. \fBscale2x:\fR Resize selected images using the Scale2x algorithm. \fBscale3x:\fR Resize selected images using the Scale3x algorithm. \fBscale_dcci2x:\fR _edge_threshold>=0,_exponent>0,_extend_1px={ 0=false | 1=true } Double image size using directional cubic convolution interpolation, as described in https://en.wikipedia.org/wiki/Directional_Cubic_Convolution_Interpolation. \fIDefault values:\fR 'edge_threshold=1.15', 'exponent=5' and 'extend_1px=0'. \fBseamcarve:\fR _width[%]>=0,_height[%]>=0,_is_priority_channel={ 0 | 1 },_is_antialiasing={ 0 | 1 },_maximum_seams[%]>=0 Resize selected images with specified 2D geometry, using the seam-carving algorithm. \fIDefault values:\fR 'height=100%', 'is_priority_channel=0', 'is_antialiasing=1' and 'maximum_seams=25%'. \fBshift (+):\fR vx[%],_vy[%],_vz[%],_vc[%],_boundary_conditions,_interpolation={ 0=nearest_neighbor | 1=linear } Shift selected images by specified displacement vector. Displacement vector can be non-integer in which case linear interpolation should be chosen. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fIDefault value:\fR 'boundary_conditions=0' and 'interpolation=0'. \fBshrink_x:\fR size_x>=0 Shrink selected images along the x-axis. \fBshrink_xy:\fR size>=0 Shrink selected images along the xy-axes. \fBshrink_xyz:\fR size>=0 Shrink selected images along the xyz-axes. \fBshrink_y:\fR size_y>=0 Shrink selected images along the y-axis. \fBshrink_z:\fR size_z>=0 Shrink selected images along the z-axis. \fBslices (+):\fR { [image0] | z0[%] },_{ [image1] | z1[%] } Keep only specified slices of selected images. Dirichlet boundary conditions are used when specified slices are out of range. \fBsort (+):\fR _ordering={ + | - },_axis={ x | y | z | c } Sort pixel values of selected images. If 'axis' is specified, the sorting is done according to the data of the first column/row/slice/channel of selected images. \fIDefault values:\fR 'ordering=+' and 'axis=(undefined)'. \fBsplit (+):\fR { x | y | z | c }...{ x | y | z | c },_split_mode | keep_splitting_values={ + | - },_{ x | y | z | c }...{ x | y | z | c },value1, _value2,... | (no arg) Split selected images along specified axes, or regarding to a sequence of scalar values (optionally along specified axes too). (eq. to 's').\n 'split_mode' can be { 0=split according to constant values | >0=split in N parts | <0=split in parts of size -N }. \fIDefault value:\fR 'split_mode=-1'. \fBsplit_tiles:\fR M!=0,_N!=0,_is_homogeneous={ 0 | 1 } Split selected images as a MxN array of tiles. If M or N is negative, it stands for the tile size instead. \fIDefault values:\fR 'N=M' and 'is_homogeneous=0'. \fBundistort:\fR -1<=_amplitude<=1,_aspect_ratio,_zoom,_center_x[%],_center_y[%], _boundary_conditions Correct barrel/pincushion distortions occurring with wide-angle lens. References: [1] Zhang Z. (1999). Flexible camera calibration by viewing a plane from unknown orientation. [2] Andrew W. Fitzgibbon (2001). Simultaneous linear estimation of multiple view geometry and lens distortion. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fIDefault values:\fR 'amplitude=0.25', 'aspect_ratio=0', 'zoom=0', 'center_x=center_y=50%' and 'boundary_conditions=0'. \fBunroll (+):\fR _axis={ x | y | z | c } Unroll selected images along specified axis. (eq. to 'y'). \fIDefault value:\fR 'axis=y'. \fBupscale_smart:\fR width[%],_height[%],_depth,_smoothness>=0,_anisotropy=[0,1],sharpening>=0 Upscale selected images with an edge-preserving algorithm. \fIDefault values:\fR 'height=100%', 'depth=100%', 'smoothness=2', 'anisotropy=0.4' and 'sharpening=10'. \fBwarp (+):\fR [warping_field],_mode,_interpolation,_boundary_conditions,_nb_frames>0 Warp selected images with specified displacement field. 'mode' can be { 0=backward-absolute | 1=backward-relative | 2=forward-absolute | 3=forward-relative }. 'interpolation' can be { 0=nearest-neighbor | 1=linear | 2=cubic }. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fIDefault values:\fR 'mode=0', 'interpolation=1', 'boundary_conditions=1' and 'nb_frames=1'. \fBwarp_patch:\fR [warping_field],patch_width>=1,_patch_height>=1,_patch_depth>=1,_std_factor>0, _boundary_conditions. Patch-warp selected images, with specified 2D or 3D displacement field (in backward-absolute mode). Argument 'std_factor' sets the std of the gaussian weights for the patch overlap, equal to 'std = std_factor*patch_size'. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fIDefault values:\fR 'std_factor=0.3' and 'boundary_conditions=3'. ** \fIFiltering:\fR \fBbandpass:\fR _min_freq[%],_max_freq[%] Apply bandpass filter to selected images. \fIDefault values:\fR 'min_freq=0' and 'max_freq=20%'. \fBbilateral (+):\fR [guide],std_deviation_s[%]>=0,std_deviation_r[%]>=0,_sampling_s>=0, _sampling_r>=0 | std_deviation_s[%]>=0,std_deviation_r[%]>=0,_sampling_s>=0,_sampling_r>=0 Blur selected images by anisotropic (eventually joint/cross) bilateral filtering. If a guide image is provided, it is used for drive the smoothing filter. A guide image must be of the same xyz-size as the selected images. Set 'sampling' arguments to '0' for automatic adjustment. \fBblur (+):\fR std_deviation>=0[%],_boundary_conditions,_kernel | axes,std_deviation>=0[%],_boundary_conditions,_kernel Blur selected images by a quasi-gaussian or gaussian filter (recursive implementation). (eq. to 'b').\n 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. 'kernel' can be { 0=quasi-gaussian (faster) | 1=gaussian }. When specified, argument 'axes' is a sequence of { x | y | z | c }. Specifying one axis multiple times apply also the blur multiple times. \fIDefault values:\fR 'boundary_conditions=1' and 'kernel=0'. \fBblur_angular:\fR amplitude[%],_center_x[%],_center_y[%] Apply angular blur on selected images. \fIDefault values:\fR 'center_x=center_y=50%'. \fBblur_bloom:\fR _amplitude>=0,_ratio>=0,_nb_iter>=0,_blend_operator={ + | max | min },_kernel={ 0=quasi-gaussian (faster) | 1=gaussian | 2=box | 3=triangle | 4=quadratic }, _normalize_scales={ 0 | 1 },_axes Apply a bloom filter that blend multiple blur filters of different radii, resulting in a larger but sharper glare than a simple blur. When specified, argument 'axes' is a sequence of { x | y | z | c }. Specifying one axis multiple times apply also the blur multiple times. Reference: Masaki Kawase, "Practical Implementation of High Dynamic Range Rendering", GDC 2004. \fIDefault values:\fR 'amplitude=1', 'ratio=2', 'nb_iter=5', 'blend_operator=+', 'kernel=0', 'normalize_scales=0' and 'axes=(all)' \fBblur_linear:\fR amplitude1[%],_amplitude2[%],_angle,_boundary_conditions={ 0=dirichlet | 1=neumann } Apply linear blur on selected images, with specified angle and amplitudes. \fIDefault values:\fR 'amplitude2=0', 'angle=0' and 'boundary_conditions=1'. \fBblur_radial:\fR amplitude[%],_center_x[%],_center_y[%] Apply radial blur on selected images. \fIDefault values:\fR 'center_x=center_y=50%'. \fBblur_selective:\fR sigma>=0,_edges>0,_nb_scales>0 Blur selected images using selective gaussian scales. \fIDefault values:\fR 'sigma=5', 'edges=0.5' and 'nb_scales=5'. \fBblur_x:\fR amplitude[%]>=0,_boundary_conditions={ 0=dirichlet | 1=neumann } Blur selected images along the x-axis. \fIDefault value:\fR 'boundary_conditions=1'. \fBblur_xy:\fR amplitude_x[%],amplitude_y[%],_boundary_conditions={ 0=dirichlet | 1=neumann } Blur selected images along the X and Y axes. \fIDefault value:\fR 'boundary_conditions=1'. \fBblur_xyz:\fR amplitude_x[%],amplitude_y[%],amplitude_z,_boundary_conditions={ 0=dirichlet | 1=neumann } Blur selected images along the X, Y and Z axes. \fIDefault value:\fR 'boundary_conditions=1'. \fBblur_y:\fR amplitude[%]>=0,_boundary_conditions={ 0=dirichlet | 1=neumann } Blur selected images along the y-axis. \fIDefault value:\fR 'boundary_conditions=1'. \fBblur_z:\fR amplitude[%]>=0,_boundary_conditions={ 0=dirichlet | 1=neumann } Blur selected images along the z-axis. \fIDefault value:\fR 'boundary_conditions=1'. \fBboxfilter (+):\fR size>=0[%],_order,_boundary_conditions,_nb_iter>=0 | axes,size>=0[%],_order,_boundary_conditions,_nb_iter>=0 Blur selected images by a box filter of specified size (fast recursive implementation). 'order' can be { 0=smooth | 1=1st-derivative | 2=2nd-derivative }. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. When specified, argument 'axes' is a sequence of { x | y | z | c }. Specifying one axis multiple times apply also the blur multiple times. \fIDefault values:\fR 'order=0', 'boundary_conditions=1' and 'nb_iter=1'. \fBbump2normal:\fR Convert selected bumpmaps to normalmaps. \fBcompose_freq:\fR Compose selected low and high frequency parts into new images. \fBconvolve (+):\fR [mask],_boundary_conditions,_is_normalized={ 0 | 1 },_channel_mode,_xcenter, _ycenter,_zcenter,_xstart,_ystart,_zstart,_xend,_yend,_zend,_xstride,_ystride, _zstride,_xdilation,_ydilation,_zdilation Convolve selected images by specified mask. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. 'channel_mode' can be { 0=sum input channels | 1=one-for-one | 2=expand }. \fIDefault values:\fR 'boundary_conditions=1', 'is_normalized=0', 'channel_mode=1', 'xcenter=ycenter=zcenter=-1' (-1=centered), 'xstart=ystart=zstart=0', 'xend=yend=zend=-1' (-1=max coordinates), 'xstride=ystride=zstride=1' and 'xdilation=ydilation=zdilation=1'. \fBconvolve_fft:\fR [mask] Convolve selected images with specified mask, in the fourier domain. \fBcorrelate (+):\fR [mask],_boundary_conditions,_is_normalized={ 0 | 1 },_channel_mode,_xcenter, _ycenter,_zcenter,_xstart,_ystart,_zstart,_xend,_yend,_zend,_xstride,_ystride, _zstride,_xdilation,_ydilation,_zdilation Correlate selected images by specified mask. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. 'channel_mode' can be { 0=sum input channels | 1=one-for-one | 2=expand }. \fIDefault values:\fR 'boundary_conditions=1', 'is_normalized=0', 'channel_mode=1', 'xcenter=ycenter=zcenter=-1' (-1=centered), 'xstart=ystart=zstart=0', 'xend=yend=zend=-1' (-1=max coordinates), 'xstride=ystride=zstride=1' and 'xdilation=ydilation=zdilation=1'. \fBcross_correlation:\fR [mask] Compute cross-correlation of selected images with specified mask. \fBcurvature:\fR Compute isophote curvatures on selected images. \fBdct:\fR _{ x | y | z }...{ x | y | z } | (no arg) Compute the discrete cosine transform of selected images, optionally along the specified axes only. \fIDefault values:\fR (no arg) \fBdeblur:\fR amplitude[%]>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={ 0=Tikhonov | 1=meancurv. | 2=TV } Deblur image using a regularized Jansson-Van Cittert algorithm. \fIDefault values:\fR 'nb_iter=10', 'dt=20', 'regul=0.7' and 'regul_type=1'. \fBdeblur_goldmeinel:\fR sigma>=0,_nb_iter>=0,_acceleration>=0,_kernel_type={ 0=quasi-gaussian (faster) | 1=gaussian }. Deblur selected images using Gold-Meinel algorithm \fIDefault values:\fR 'nb_iter=8', 'acceleration=1' and 'kernel_type=1'. \fBdeblur_richardsonlucy:\fR sigma>=0, nb_iter>=0, _kernel_type={ 0=quasi-gaussian (faster) | 1=gaussian }. Deblur selected images using Richardson-Lucy algorithm. \fIDefault values:\fR 'nb_iter=50' and 'kernel_type=1'. \fBdeconvolve_fft:\fR [kernel],_regularization>=0 Deconvolve selected images by specified mask in the fourier space. \fIDefault value:\fR 'regularization>=0'. \fBdeinterlace:\fR _method={ 0 | 1 } Deinterlace selected images ('method' can be { 0=standard or 1=motion-compensated }). \fIDefault value:\fR 'method=0'. \fBdenoise (+):\fR [guide],std_deviation_s[%]>=0,_std_deviation_r[%]>=0,_patch_size>0, _lookup_size>0,_smoothness,_fast_approx={ 0 | 1 } | std_deviation_s[%]>=0,_std_deviation_r[%]>=0,_patch_size>0,_lookup_size>0, _smoothness,_fast_approx={ 0 | 1 } Denoise selected images by non-local patch averaging. \fIDefault values:\fR 'std_deviation_p=10', 'patch_size=5', 'lookup_size=6' and 'smoothness=1'. \fBdenoise_haar:\fR _threshold>=0,_nb_scales>=0,_cycle_spinning>0 Denoise selected images using haar-wavelet thresholding with cycle spinning. Set 'nb_scales==0' to automatically determine the optimal number of scales. \fIDefault values:\fR 'threshold=1.4', 'nb_scale=0' and 'cycle_spinning=10'. \fBdenoise_patchpca:\fR _strength>=0,_patch_size>0,_lookup_size>0,_spatial_sampling>0 Denoise selected images using the patch-pca algorithm. \fIDefault values:\fR 'patch_size=7', 'lookup_size=11', 'details=1.8' and 'spatial_sampling=5'. \fBderiche (+):\fR std_deviation>=0[%],order={ 0 | 1 | 2 },axis={ x | y | z | c }, _boundary_conditions Apply Deriche recursive filter on selected images, along specified axis and with specified standard deviation, order and boundary conditions. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. \fIDefault value:\fR 'boundary_conditions=1'. \fBdilate (+):\fR size>=0 | size_x>=0,size_y>=0,size_z>=0 | [kernel],_boundary_conditions,_is_real={ 0=binary-mode | 1=real-mode } Dilate selected images by a rectangular or the specified structuring element. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. \fIDefault values:\fR 'size_z=1', 'boundary_conditions=1' and 'is_real=0'. \fBdilate_circ:\fR _size>=0,_boundary_conditions,_is_normalized={ 0 | 1 } Apply circular dilation of selected images by specified size. \fIDefault values:\fR 'boundary_conditions=1' and 'is_normalized=0'. \fBdilate_oct:\fR _size>=0,_boundary_conditions,_is_normalized={ 0 | 1 } Apply octagonal dilation of selected images by specified size. \fIDefault values:\fR 'boundary_conditions=1' and 'is_normalized=0'. \fBdilate_threshold:\fR size_x>=1,size_y>=1,size_z>=1,_threshold>=0,_boundary_conditions Dilate selected images in the (X,Y,Z,I) space. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. \fIDefault values:\fR 'size_y=size_x', 'size_z=1', 'threshold=255' and 'boundary_conditions=1'. \fBdivergence:\fR Compute divergence of selected vector fields. \fBdog:\fR _sigma1>=0[%],_sigma2>=0[%] Compute difference of gaussian on selected images. \fIDefault values:\fR 'sigma1=2%' and 'sigma2=3%'. \fBdiffusiontensors:\fR _sharpness>=0,0<=_anisotropy<=1,_alpha[%],_sigma[%],is_sqrt={ 0 | 1 } Compute the diffusion tensors of selected images for edge-preserving smoothing algorithms. \fIDefault values:\fR 'sharpness=0.7', 'anisotropy=0.3', 'alpha=0.6', 'sigma=1.1' and 'is_sqrt=0'. \fBedges:\fR _threshold[%]>=0 Estimate contours of selected images. \fIDefault value:\fR 'edges=15%' \fBerode (+):\fR size>=0 | size_x>=0,size_y>=0,_size_z>=0 | [kernel],_boundary_conditions,_is_real={ 0=binary-mode | 1=real-mode } Erode selected images by a rectangular or the specified structuring element. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. \fIDefault values:\fR 'size_z=1', 'boundary_conditions=1' and 'is_real=0'. \fBerode_circ:\fR _size>=0,_boundary_conditions,_is_normalized={ 0 | 1 } Apply circular erosion of selected images by specified size. \fIDefault values:\fR 'boundary_conditions=1' and 'is_normalized=0'. \fBerode_oct:\fR _size>=0,_boundary_conditions,_is_normalized={ 0 | 1 } Apply octagonal erosion of selected images by specified size. \fIDefault values:\fR 'boundary_conditions=1' and 'is_normalized=0'. \fBerode_threshold:\fR size_x>=1,size_y>=1,size_z>=1,_threshold>=0,_boundary_conditions Erode selected images in the (X,Y,Z,I) space. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. \fIDefault values:\fR 'size_y=size_x', 'size_z=1', 'threshold=255' and 'boundary_conditions=1'. \fBfft (+):\fR _{ x | y | z }...{ x | y | z } Compute the direct fourier transform (real and imaginary parts) of selected images, optionally along the specified axes only. \fBgradient (+):\fR { x | y | z }...{ x | y | z },_scheme | (no arg) Compute the gradient components (first derivatives) of selected images. (eq. to 'g').\n 'scheme' can be { -1=backward | 0=centered | 1=forward | 2=sobel | 3=rotation-invariant (default) | 4=deriche | 5=vanvliet }. (no arg) compute all significant components. \fIDefault value:\fR 'scheme=0'. \fBgradient_norm:\fR Compute gradient norm of selected images. \fBgradient_orientation:\fR _dimension={1,2,3} Compute N-d gradient orientation of selected images. \fIDefault value:\fR 'dimension=3'. \fBguided (+):\fR [guide],radius[%]>=0,regularization[%]>=0 | radius[%]>=0,regularization[%]>=0 Blur selected images by guided image filtering. If a guide image is provided, it is used to drive the smoothing process. A guide image must be of the same xyz-size as the selected images. This command implements the filtering algorithm described in: He, Kaiming; Sun, Jian; Tang, Xiaoou, "Guided Image Filtering", IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.35, no.6, pp.1397,1409, June 2013 \fBhaar:\fR scale>0 Compute the direct haar multiscale wavelet transform of selected images. \fBheat_flow:\fR _nb_iter>=0,_dt,_keep_sequence={ 0 | 1 } Apply iterations of the heat flow on selected images. \fIDefault values:\fR 'nb_iter=10', 'dt=30' and 'keep_sequence=0'. \fBhessian (+):\fR { xx | xy | xz | yy | yz | zz }...{ xx | xy | xz | yy | yz | zz } | (no arg) Compute the hessian components (second derivatives) of selected images. (no arg) compute all significant components. \fBidct:\fR _{ x | y | z }...{ x | y | z } | (no arg) Compute the inverse discrete cosine transform of selected images, optionally along the specified axes only. \fIDefault values:\fR (no arg) \fBiee:\fR Compute gradient-orthogonal-directed 2nd derivative of image(s). \fBifft (+):\fR _{ x | y | z }...{ x | y | z } Compute the inverse fourier transform (real and imaginary parts) of selected images. optionally along the specified axes only. \fBihaar:\fR scale>0 Compute the inverse haar multiscale wavelet transform of selected images. \fBilaplacian:\fR { nb_iterations>0 | 0 },_time_step>0,_[initial_estimate] Invert selected Laplacian images. If given 'nb_iterations' is '0', inversion is done in Fourier space (single iteration), otherwise, by applying 'nb_iterations' of a Laplacian-inversion PDE flow (with specified 'time_step'). Note that the resulting inversions are just estimation of possible/approximated solutions. \fIDefault values:\fR 'nb_iterations=0','time_step=10' and '[initial_estimated]=(undefined)'. \fBinn:\fR Compute gradient-directed 2nd derivative of image(s). \fBinpaint (+):\fR [mask] | [mask],0,_fast_method | [mask],_patch_size>=1,_lookup_size>=1,_lookup_factor>=0,_lookup_increment!=0, _blend_size>=0,0<=_blend_threshold<=1,_blend_decay>=0,_blend_scales>=1, _is_blend_outer={ 0 | 1 } Inpaint selected images by specified mask. If no patch size (or 0) is specified, inpainting is done using a fast average or median algorithm. Otherwise, it used a patch-based reconstruction method, that can be very time consuming. 'fast_method' can be { 0=low-connectivity average | 1=high-connectivity average | 2=low-connectivity median | 3=high-connectivity median }. \fIDefault values:\fR 'patch_size=0', 'fast_method=1', 'lookup_size=22', 'lookup_factor=0.5', 'lookup_increment=1', 'blend_size=0', 'blend_threshold=0', 'blend_decay=0.05', 'blend_scales=10' and 'is_blend_outer=1'. \fBinpaint_pde:\fR [mask],_nb_scales[%]>=0,_diffusion_type={ 0=isotropic | 1=delaunay-guided | 2=edge-guided | 3=mask-guided },_diffusion_iter>=0 Inpaint selected images by specified mask using a multiscale transport-diffusion algorithm. If 'diffusion type==3', non-zero values of the mask (e.g. a distance function) are used to guide the diffusion process. \fIDefault values:\fR 'nb_scales=75%', 'diffusion_type=1' and 'diffusion_iter=20'. \fBinpaint_flow:\fR [mask],_nb_global_iter>=0,_nb_local_iter>=0,_dt>0,_alpha>=0,_sigma>=0 Apply iteration of the inpainting flow on selected images. \fIDefault values:\fR 'nb_global_iter=10', 'nb_local_iter=100', 'dt=5', 'alpha=1' and 'sigma=3'. \fBinpaint_holes:\fR maximal_area[%]>=0,_tolerance>=0,_is_high_connectivity={ 0 | 1 } Inpaint all connected regions having an area less than specified value. \fIDefault values:\fR 'maximal_area=4', 'tolerance=0' and 'is_high_connectivity=0'. \fBinpaint_morpho:\fR [mask] Inpaint selected images by specified mask using morphological operators. \fBinpaint_matchpatch:\fR [mask],_nb_scales={ 0=auto | >0 },_patch_size>0,_nb_iterations_per_scale>0, _blend_size>=0,_allow_outer_blending={ 0 | 1 },_is_already_initialized={ 0 | 1 } Inpaint selected images by specified binary mask, using a multi-scale matchpatch algorithm. \fIDefault values:\fR 'nb_scales=0', 'patch_size=9', 'nb_iterations_per_scale=10', 'blend_size=5', 'allow_outer_blending=1' and 'is_already_initialized=0'. \fBkuwahara:\fR size>0 Apply Kuwahara filter of specified size on selected images. \fBlaplacian:\fR Compute Laplacian of selected images. \fBlic:\fR _amplitude>0,_channels>0 Render LIC representation of selected vector fields. \fIDefault values:\fR 'amplitude=30' and 'channels=1'. \fBmap_tones:\fR _threshold>=0,_gamma>=0,_smoothness>=0,nb_iter>=0 Apply tone mapping operator on selected images, based on Poisson equation. \fIDefault values:\fR 'threshold=0.1', 'gamma=0.8', 'smoothness=0.5' and 'nb_iter=30'. \fBmap_tones_fast:\fR _radius[%]>=0,_power>=0 Apply fast tone mapping operator on selected images. \fIDefault values:\fR 'radius=3%' and 'power=0.3'. \fBmeancurvature_flow:\fR _nb_iter>=0,_dt,_keep_sequence={ 0 | 1 } Apply iterations of the mean curvature flow on selected images. \fIDefault values:\fR 'nb_iter=10', 'dt=30' and 'keep_sequence=0'. \fBmedian (+):\fR size>=0,_threshold>0 Apply (opt. thresholded) median filter on selected images with structuring element size x size. \fBnlmeans:\fR [guide],_patch_radius>0,_spatial_bandwidth>0,_tonal_bandwidth>0, _patch_measure_command | _patch_radius>0,_spatial_bandwidth>0,_tonal_bandwidth>0,_patch_measure_command Apply non local means denoising of Buades et al, 2005. on selected images. The patch is a gaussian function of 'std _patch_radius'. The spatial kernel is a rectangle of radius 'spatial_bandwidth'. The tonal kernel is exponential (exp(-d^2/_tonal_bandwidth^2)) with d the euclidiean distance between image patches. \fIDefault values:\fR 'patch_radius=4', 'spatial_bandwidth=4', 'tonal_bandwidth=10' and 'patch_measure_command=-norm'. \fBnlmeans_core:\fR _reference_image,_scaling_map,_patch_radius>0,_spatial_bandwidth>0 Apply non local means denoising using a image for weight and a map for scaling \fBnormalize_local:\fR _amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_is_cut={ 0 | 1 }, _min=0,_max=255 Normalize selected images locally. \fIDefault values:\fR 'amplitude=3', 'radius=16', 'n_smooth=4%', 'a_smooth=2%', 'is_cut=1', 'min=0' and 'max=255'. \fBnormalized_cross_correlation:\fR [mask] Compute normalized cross-correlation of selected images with specified mask. \fBperonamalik_flow:\fR K_factor>0,_nb_iter>=0,_dt,_keep_sequence={ 0 | 1 } Apply iterations of the Perona-Malik flow on selected images. \fIDefault values:\fR 'K_factor=20', 'nb_iter=5', 'dt=5' and 'keep_sequence=0'. \fBphase_correlation:\fR [destination] Estimate translation vector between selected source images and specified destination. \fBpde_flow:\fR _nb_iter>=0,_dt,_velocity_command,_keep_sequence={ 0 | 1 } Apply iterations of a generic PDE flow on selected images. \fIDefault values:\fR 'nb_iter=10', 'dt=30', 'velocity_command=laplacian' and 'keep_sequence=0'. \fBperiodize_poisson:\fR Periodize selected images using a Poisson solver in Fourier space. \fBred_eye:\fR 0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 Attenuate red-eye effect in selected images. \fIDefault values:\fR 'threshold=75', 'smoothness=3.5' and 'attenuation=0.1'. \fBremove_hotpixels:\fR _mask_size>0, _threshold[%]>0 Remove hot pixels in selected images. \fIDefault values:\fR 'mask_size=3' and 'threshold=10%'. \fBremove_pixels:\fR number_of_pixels[%]>=0 Remove specified number of pixels (i.e. set them to 0) from the set of non-zero pixels in selected images. \fBrolling_guidance:\fR std_deviation_s[%]>=0,std_deviation_r[%]>=0,_precision>=0 Apply the rolling guidance filter on selected image. Rolling guidance filter is a fast image abstraction filter, described in: "Rolling Guidance Filter", Qi Zhang Xiaoyong, Shen Li, Xu Jiaya Jia, ECCV'2014. \fIDefault values:\fR 'std_deviation_s=4', 'std_deviation_r=10' and 'precision=0.5'. \fBsharpen (+):\fR amplitude>=0 | amplitude>=0,edge>=0,_alpha,_sigma Sharpen selected images by inverse diffusion or shock filters methods. 'edge' must be specified to enable shock-filter method. \fIDefault values:\fR 'alpha=0' and 'sigma=0'. \fBsmooth (+):\fR amplitude[%]>=0,_sharpness>=0,0<=_anisotropy<=1,_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. 'interpolation' can be { 0=nearest | 1=linear | 2=runge-kutta }. \fIDefault values:\fR 'sharpness=0.7', 'anisotropy=0.3', 'alpha=0.6', 'sigma=1.1', 'dl=0.8', 'da=30', 'precision=2', 'interpolation=0' and 'fast_approx=1'. \fBsplit_freq:\fR smoothness>0[%] Split selected images into low and high frequency parts. \fBsolve_poisson:\fR "laplacian_command",_nb_iterations>=0,_time_step>0,_nb_scales>=0 Solve Poisson equation so that applying 'laplacian[n]' is close to the result of 'laplacian_command[n]'. Solving is performed using a multi-scale gradient descent algorithm. If 'nb_scales=0', the number of scales is automatically determined. \fIDefault values:\fR 'nb_iterations=60', 'dt=5' and 'nb_scales=0'. \fBsplit_details:\fR _nb_scales>0,_base_scale[%]>=0,_detail_scale[%]>=0 Split selected images into 'nb_scales' detail scales. If 'base_scale'=='detail_scale'==0, the image decomposition is done with 'a trous' wavelets. Otherwise, it uses laplacian pyramids with linear standard deviations. \fIDefault values:\fR 'nb_scales=4', 'base_scale=0' and 'detail_scale=0'. \fBstructuretensors (+):\fR _scheme={ 0=centered | 1=forward/backward } Compute the structure tensor field of selected images. \fIDefault value:\fR 'scheme=1'. \fBsolidify:\fR _smoothness[%]>=0,_diffusion_type={ 0=isotropic | 1=delaunay-oriented | 2=edge-oriented },_diffusion_iter>=0 Solidify selected transparent images. \fIDefault values:\fR 'smoothness=75%', 'diffusion_type=1' and 'diffusion_iter=20'. \fBsyntexturize:\fR _width[%]>0,_height[%]>0 Resynthetize 'width'x'height' versions of selected micro-textures by phase randomization. The texture synthesis algorithm is a straightforward implementation of the method described in : http://www.ipol.im/pub/art/2011/ggm_rpn/ \fIDefault values:\fR 'width=height=100%'. \fBsyntexturize_matchpatch:\fR _width[%]>0,_height[%]>0,_nb_scales>=0,_patch_size>0,_blending_size>=0, _precision>=0 Resynthetize 'width'x'height' versions of selected micro-textures using a patch-matching algorithm. If 'nbscales==0', the number of scales used is estimated from the image size. \fIDefault values:\fR 'width=height=100%', 'nb_scales=0', 'patch_size=7', 'blending_size=5' and 'precision=1'. \fBtv_flow:\fR _nb_iter>=0,_dt,_keep_sequence={ 0 | 1 } Apply iterations of the total variation flow on selected images. \fIDefault values:\fR 'nb_iter=10', 'dt=30' and 'keep_sequence=0'. \fBunsharp:\fR radius[%]>=0,_amount>=0,_threshold[%]>=0 Apply unsharp mask on selected images. \fIDefault values:\fR 'amount=2' and 'threshold=0'. \fBunsharp_octave:\fR _nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 Apply octave sharpening on selected images. \fIDefault values:\fR 'nb_scales=4', 'radius=1', 'amount=2' and 'threshold=0'. \fBvanvliet (+):\fR std_deviation>=0[%],order={ 0 | 1 | 2 | 3 },axis={ x | y | z | c }, _boundary_conditions Apply Vanvliet recursive filter on selected images, along specified axis and with specified standard deviation, order and boundary conditions. 'boundary_conditions' can be { 0=dirichlet | 1=neumann }. \fIDefault value:\fR 'boundary_conditions=1'. \fBvoronoi:\fR Compute the discrete Voronoi diagram of non-zero pixels in selected images. \fBwatermark_fourier:\fR text,_size>0 Add a textual watermark in the frequency domain of selected images. \fIDefault value:\fR 'size=33'. \fBwatershed (+):\fR [priority_image],_is_high_connectivity={ 0 | 1 } Compute the watershed transform of selected images. \fIDefault value:\fR 'is_high_connectivity=1'. ** \fIFeatures Extraction:\fR \fBarea:\fR tolerance>=0,is_high_connectivity={ 0 | 1 } Compute area of connected components in selected images. \fIDefault values:\fR 'is_high_connectivity=0'. \fBarea_fg:\fR tolerance>=0,is_high_connectivity={ 0 | 1 } Compute area of connected components for non-zero values in selected images. Similar to 'area' except that 0-valued pixels are not considered. \fIDefault values:\fR 'is_high_connectivity=0'. \fBat_line:\fR x0[%],y0[%],z0[%],x1[%],y1[%],z1[%] Retrieve pixels of the selected images belonging to the specified line (x0,y0,z0)-(x1,y1,z1). \fBat_quadrangle:\fR x0[%],y0[%],x1[%],y1[%],x2[%],y2[%],x3[%],y3[%],_interpolation, _boundary_conditions | x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],x2[%],y2[%],z2[%],x3[%],y3[%],z3[%], _interpolation,_boundary_conditions Retrieve pixels of the selected images belonging to the specified 2D or 3D quadrangle. 'interpolation' can be { 0=nearest-neighbor | 1=linear | 2=cubic }. 'boundary_conditions' can be { 0=dirichlet | 1=neumann | 2=periodic | 3=mirror }. \fBbarycenter:\fR Compute the barycenter vector of pixel values. \fBdelaunay:\fR Generate discrete 2D Delaunay triangulation of non-zero pixels in selected images. Input images must be scalar. Each pixel of the output image is a triplet (a,b,c) meaning the pixel belongs to the Delaunay triangle 'ABC' where 'a','b','c' are the labels of the pixels 'A','B','C'. \fBdetect_skin:\fR 0<=tolerance<=1,_skin_x,_skin_y,_skin_radius>=0 Detect skin in selected color images and output an appartenance probability map. Detection is performed using CbCr chromaticity data of skin pixels. If arguments 'skin_x', 'skin_y' and 'skin_radius' are provided, skin pixels are learnt from the sample pixels inside the circle located at ('skin_x','skin_y') with radius 'skin_radius'. \fIDefault value:\fR 'tolerance=0.5' and 'skin_x=skiny=radius=-1'. \fBdisplacement (+):\fR [source_image],_smoothness,_precision>=0,_nb_scales>=0,_iteration_max>=0, is_backward={ 0 | 1 },_[guide] Estimate displacement field between specified source and selected target images. If 'smoothness>=0', regularization type is set to isotropic, else to anisotropic. If 'nbscales==0', the number of scales used is estimated from the image size. \fIDefault values:\fR 'smoothness=0.1', 'precision=5', 'nb_scales=0', 'iteration_max=10000', 'is_backward=1' and '[guide]=(unused)'. \fBdistance (+):\fR isovalue[%],_metric | isovalue[%],[metric],_method Compute the unsigned distance function to specified isovalue, opt. according to a custom metric. 'metric' can be { 0=chebyshev | 1=manhattan | 2=euclidean | 3=squared-euclidean }. 'method' can be { 0=fast-marching | 1=low-connectivity dijkstra | 2=high-connectivity dijkstra | 3=1+return path | 4=2+return path }. \fIDefault value:\fR 'metric=2' and 'method=0'. \fBfftpolar:\fR Compute fourier transform of selected images, as centered magnitude/phase images. \fBhistogram (+):\fR _nb_levels>0[%],_value0[%],_value1[%] Compute the histogram of selected images. If value range is set, the histogram is estimated only for pixels in the specified value range. Argument 'value1' must be specified if 'value0' is set. \fIDefault values:\fR 'nb_levels=256', 'value0=0%' and 'value1=100%'. \fBhistogram_nd:\fR nb_levels>0[%],_value0[%],_value1[%] Compute the 1D,2D or 3D histogram of selected multi-channels images (having 1,2 or 3 channels). If value range is set, the histogram is estimated only for pixels in the specified value range. \fIDefault values:\fR 'value0=0%' and 'value1=100%'. \fBhistogram_cumul:\fR _nb_levels>0,_is_normalized={ 0 | 1 },_val0[%],_val1[%] Compute cumulative histogram of selected images. \fIDefault values:\fR 'nb_levels=256', 'is_normalized=0', 'val0=0%' and 'val1=100%'. \fBhistogram_pointwise:\fR nb_levels>0[%],_value0[%],_value1[%] Compute the histogram of each vector-valued point of selected images. If value range is set, the histogram is estimated only for values in the specified value range. \fIDefault values:\fR 'value0=0%' and 'value1=100%'. \fBhough:\fR _width>0,_height>0,gradient_norm_voting={ 0 | 1 } Compute hough transform (theta,rho) of selected images. \fIDefault values:\fR 'width=512', 'height=width' and 'gradient_norm_voting=1'. \fBifftpolar:\fR Compute inverse fourier transform of selected images, from centered magnitude/phase images. \fBisophotes:\fR _nb_levels>0 Render isophotes of selected images on a transparent background. \fIDefault value:\fR 'nb_levels=64' \fBlabel (+):\fR _tolerance>=0,is_high_connectivity={ 0 | 1 } Label connected components in selected images. \fIDefault values:\fR 'tolerance=0' and 'is_high_connectivity=0'. \fBlabel_fg:\fR tolerance>=0,is_high_connectivity={ 0 | 1 } Label connected components for non-zero values (foreground) in selected images. Similar to 'label' except that 0-valued pixels are not labeled. \fIDefault value:\fR 'is_high_connectivity=0'. \fBmax_patch:\fR _patch_size>=1 Return locations of maximal values in local patch-based neighborhood of given size for selected images. \fIDefault value:\fR 'patch_size=16'. \fBmin_patch:\fR _patch_size>=1 Return locations of minimal values in local patch-based neighborhood of given size for selected images. \fIDefault value:\fR 'patch_size=16'. \fBminimal_path:\fR x0[%]>=0,y0[%]>=0,z0[%]>=0,x1[%]>=0,y1[%]>=0,z1[%]>=0,_is_high_connectivity={ 0 | 1 } Compute minimal path between two points on selected potential maps. \fIDefault value:\fR 'is_high_connectivity=0'. \fBmse (+):\fR Compute MSE (Mean-Squared Error) matrix between selected images. \fBpatches:\fR patch_width>0,patch_height>0,patch_depth>0,x0,y0,z0,_x1,_y1,_z1,...,_xN,_yN,_zN Extract N+1 patches from selected images, centered at specified locations. \fBmatchpatch (+):\fR [patch_image],patch_width>=1,_patch_height>=1,_patch_depth>=1,_nb_iterations>=0, _nb_randoms>=0,_patch_penalization,_output_score={ 0 | 1 },_[guide] Estimate correspondence map between selected images and specified patch image, using a patch-matching algorithm. Each pixel of the returned correspondence map gives the location (p,q) of the closest patch in the specified patch image. If 'output_score=1', the third channel also gives the corresponding matching score for each patch as well. If 'patch_penalization' is >=0, SSD is penalized with patch occurences. If 'patch_penalization' is <0, SSD is inf-penalized when distance between patches are less than '-patch_penalization'. \fIDefault values:\fR 'patch_height=patch_width', 'patch_depth=1', 'nb_iterations=5', 'nb_randoms=5', 'patch_penalization=0', 'output_score=0' and 'guide=(undefined)'. \fBplot2value:\fR Retrieve values from selected 2D graph plots. \fBpointcloud:\fR _type = { -X=-X-opacity | 0=binary | 1=cumulative | 2=label | 3=retrieve coordinates },_width,_height>0,_depth>0 Render a set of point coordinates, as a point cloud in a 1D/2D or 3D binary image (or do the reverse, i.e. retrieve coordinates of non-zero points from a rendered point cloud). Input point coordinates can be a NxMx1x1, Nx1x1xM or 1xNx1xM image, where 'N' is the number of points, and M the point coordinates. If 'M'>3, the 3-to-M components sets the (M-3)-dimensional color at each point. Parameters 'width','height' and 'depth' are related to the size of the final image : - If set to 0, the size is automatically set along the specified axis. - If set to N>0, the size along the specified axis is N. - If set to N<0, the size along the specified axis is at most N. Points with coordinates that are negative or higher than specified ('width','height','depth') are not plotted. \fIDefault values:\fR 'type=0' and 'max_width=max_height=max_depth=0'. \fBpsnr:\fR _max_value Compute PSNR (Peak Signal-to-Noise Ratio) matrix between selected images. \fIDefault value:\fR 'max_value=255'. \fBsegment_watershed:\fR _threshold>=0 Apply watershed segmentation on selected images. \fIDefault values:\fR 'threshold=2'. \fBshape2bump:\fR _resolution>=0,0<=_weight_avg_max_avg<=1,_dilation,_smoothness>=0 Estimate bumpmap from binary shape in selected images. \fIDefault value:\fR 'resolution=256', 'weight_avg_max=0.75', 'dilation=0' and 'smoothness=100'. \fBskeleton:\fR _boundary_conditions={ 0=dirichlet | 1=neumann } Compute skeleton of binary shapes using distance transform and constrained thinning. \fIDefault value:\fR 'boundary_conditions=1'. \fBslic:\fR size>0,_regularity>=0,_nb_iterations>0 Segment selected 2D images with superpixels, using the SLIC algorithm (Simple Linear Iterative Clustering). Scalar images of increasingly labeled pixels are returned. Reference paper: Achanta, R., Shaji, A., Smith, K., Lucchi, A., Fua, P., & Susstrunk, S. (2010). SLIC Superpixels (No. EPFL-REPORT-149300). \fIDefault values:\fR 'size=16', 'regularity=10' and 'nb_iterations=10'. \fBssd_patch:\fR [patch],_use_fourier={ 0 | 1 },_boundary_conditions={ 0=dirichlet | 1=neumann } Compute fields of SSD between selected images and specified patch. Argument 'boundary_conditions' is valid only when 'use_fourier=0'. \fIDefault value:\fR 'use_fourier=0' and 'boundary_conditions=0'. \fBthinning:\fR _boundary_conditions={ 0=dirichlet | 1=neumann } Compute skeleton of binary shapes using morphological thinning (beware, this is a quite slow iterative process) \fIDefault value:\fR 'boundary_conditions=1'. \fBtones:\fR N>0 Get N tones masks from selected images. \fBtopographic_map:\fR _nb_levels>0,_smoothness Render selected images as topographic maps. \fIDefault values:\fR 'nb_levels=16' and 'smoothness=2'. \fBtsp:\fR _precision>=0 Try to solve the 'travelling salesman' problem, using a combination of greedy search and 2-opt algorithms. Selected images must have dimensions Nx1x1xC to represent N cities each with C-dimensional coordinates. This command re-order the selected data along the x-axis so that the point sequence becomes a shortest path. \fIDefault values:\fR 'precision=256'. \fBvariance_patch:\fR _patch_size>=1 Compute variance of each images patch centered at (x,y), in selected images. \fIDefault value:\fR 'patch_size=16' ** \fIImage Drawing:\fR \fBarrow:\fR x0[%],y0[%],x1[%],y1[%],_thickness[%]>=0,_head_length[%]>=0, _head_thickness[%]>=0,_opacity,_pattern,_color1,... Draw specified arrow 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 arrow is drawn outlined instead of filled. \fIDefault values:\fR 'thickness=1%', 'head_length=10%', 'head_thickness=3%', 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBaxes:\fR x0,x1,y0,y1,_font_height>=0,_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 row Y, set both 'y0' and 'y1' to Y. To draw only one y-axis at column X, set both 'x0' and 'x1' to X. \fIDefault values:\fR 'font_height=14', 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBball:\fR _size>0, _R,_G,_B,0<=_specular_light<=8,0<=_specular_size<=8,_shadow>=0 Input a 2D RGBA colored ball sprite. \fIDefault values:\fR 'size=64', 'R=255', 'G=R', 'B=R', 'specular_light=0.8', 'specular_size=1' and 'shading=1.5'. \fBchessboard:\fR size1>0,_size2>0,_offset1,_offset2,_angle,_opacity,_color1,...,_color2,... Draw chessboard on selected images. \fIDefault values:\fR 'size2=size1', 'offset1=offset2=0', 'angle=0', 'opacity=1', 'color1=0' and 'color2=255'. \fBcie1931:\fR Draw CIE-1931 chromaticity diagram on selected images. \fBcircle:\fR x[%],y[%],R[%],_opacity,_pattern,_color1,... Draw specified colored circle on selected images. A radius of '100%' stands for 'sqrt(width^2+height^2)'. 'pattern' is an hexadecimal number starting with '0x' which can be omitted even if a color is specified. If a pattern is specified, the circle is drawn outlined instead of filled. \fIDefault values:\fR 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBclose_binary:\fR 0<=_endpoint_rate<=100,_endpoint_connectivity>=0,_spline_distmax>=0, _segment_distmax>=0,0<=_spline_anglemax<=180,_spline_roundness>=0,_area_min>=0, _allow_self_intersection={ 0 | 1 } Automatically close open shapes in binary images (defining white strokes on black background). \fIDefault values:\fR 'endpoint_rate=75', 'endpoint_connectivity=2', 'spline_distmax=80', 'segment_distmax=20', 'spline_anglemax=90', 'spline_roundness=1','area_min=100', 'allow_self_intersection=1'. \fBellipse (+):\fR x[%],y[%],R[%],r[%],_angle,_opacity,_pattern,_color1,... Draw specified colored ellipse on selected images. A radius of '100%' stands for 'sqrt(width^2+height^2)'. '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. \fIDefault values:\fR 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBflood (+):\fR x[%],_y[%],_z[%],_tolerance>=0,_is_high_connectivity={ 0 | 1 },_opacity,_color1,... Flood-fill selected images using specified value and tolerance. \fIDefault values:\fR 'y=z=0', 'tolerance=0', 'is_high_connectivity=0', 'opacity=1' and 'color1=0'. \fBgaussian:\fR _sigma1[%],_sigma2[%],_angle Draw a centered gaussian on selected images, with specified standard deviations and orientation. \fIDefault values:\fR 'sigma1=3', 'sigma2=sigma1' and 'angle=0'. \fBgraph (+):\fR [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. \fIDefault values:\fR 'plot_type=1', 'vertex_type=1', 'ymin=ymax=0 (auto)', 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBgrid:\fR size_x[%]>=0,size_y[%]>=0,_offset_x[%],_offset_y[%],_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. \fIDefault values:\fR 'offset_x=offset_y=0', 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBimage (+):\fR [sprite],_x[%|~],_y[%|~],_z[%|~],_c[%|~],_opacity,_[opacity_mask], _max_opacity_mask Draw specified sprite image on selected images. (eq. to 'j').\n If one of the x,y,z or c argument ends with a '~', its value is expected to be a centering ratio (in [0,1]) rather than a position. Usual centering ratio are { 0=left-justified | 0.5=centered | 1=right-justified }. \fIDefault values:\fR 'x=y=z=c=0', 'opacity=1', 'opacity_mask=(undefined)' and 'max_opacity_mask=1'. \fBline (+):\fR 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. \fIDefault values:\fR 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBlinethick:\fR x0[%],y0[%],x1[%],y1[%],_thickness,_opacity,_color1 Draw specified colored thick line on selected images. \fIDefault values:\fR 'thickness=2', 'opacity=1' and 'color1=0'. \fBmandelbrot (+):\fR z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={ 0 | 1 },_c0r,_c0i,_opacity Draw mandelbrot/julia fractal on selected images. \fIDefault values:\fR 'iteration_max=100', 'is_julia=0', 'c0r=c0i=0' and 'opacity=1'. \fBmarble:\fR _image_weight,_pattern_weight,_angle,_amplitude,_sharpness>=0,_anisotropy>=0, _alpha,_sigma,_cut_low>=0,_cut_high>=0 Render marble like pattern on selected images. \fIDefault values:\fR 'image_weight=0.2', 'pattern_weight=0.1', 'angle=45', 'amplitude=0', 'sharpness=0.4' and 'anisotropy=0.8', 'alpha=0.6', 'sigma=1.1' and 'cut_low=cut_high=0'. \fBmaze:\fR _width>0,_height>0,_cell_size>0 Input maze with specified size. \fBmaze_mask:\fR _cellsize>0 Input maze according to size and shape of selected mask images. Mask may contain disconnected shapes. \fBnewton_fractal:\fR z0r,z0i,z1r,z1i,_angle,0<=_descent_method<=2,_iteration_max>=0, _convergence_precision>0,_expr_p(z),_expr_dp(z),_expr_d2p(z) Draw newton fractal on selected images, for complex numbers in range (z0r,z0i) - (z1r,z1i). Resulting images have 3 channels whose meaning is [ last_zr, last_zi, nb_iter_used_for_convergence ]. 'descent_method' can be { 0=secant | 1=newton | 2=householder }. \fIDefault values:\fR 'angle=0', 'descent_method=1', 'iteration_max=200', 'convergence_precision=0. 01', 'expr_p(z)=z^^3-1', 'expr_dp(z)=3*z^^2' and 'expr_d2z(z)=6*z'. \fBobject3d (+):\fR [object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_sided={ 0 | 1 }, _is_zbuffer={ 0 | 1 },_focale,_light_x,_light_y,_light_z,_specular_lightness, _specular_shininess Draw specified 3D object on selected images. (eq. to 'j3d').\n 'rendering_mode' can be { 0=dots | 1=wireframe | 2=flat | 3=flat-shaded | 4=gouraud-shaded | 5=phong-shaded }. \fIDefault values:\fR 'x=y=z=0', 'opacity=1' and 'is_zbuffer=1'. All other arguments take their default values from the 3D environment variables. \fBpack_sprites:\fR _nb_scales>=0,0<=_min_scale<=100,_allow_rotation={ 0=0 deg. | 1=180 deg. | 2=90 deg. | 3=any },_spacing,_precision>=0,max_iterations>=0 Try to randomly pack as many sprites as possible onto the 'empty' areas of an image. Sprites can be eventually rotated and scaled during the packing process. First selected image is the canvas that will be filled with the sprites. Its last channel must be a binary mask whose zero values represent potential locations for drawing the sprites. All other selected images represent the sprites considered for packing. Their last channel must be a binary mask that represents the sprite shape (i.e. a 8-connected component). The order of sprite packing follows the order of specified sprites in the image list. Sprite packing is done on random locations and iteratively with decreasing scales. 'nb_scales' sets the number of decreasing scales considered for all specified sprites to be packed. 'min_scale' (in %) sets the minimal size considered for packing (specified as a percentage of the original sprite size). 'spacing' can be positive or negative. 'precision' tells about the desired number of failed trials before ending the filling process. \fIDefault values:\fR 'nb_scales=5', 'min_scale=25', 'allow_rotation=3', 'spacing=1', 'precision=7' and 'max_iterations=256'. \fBpiechart:\fR label_height>=0,label_R,label_G,label_B,"label1",value1,R1,G1,B1,...,"labelN", valueN,RN,GN,BN Draw pie chart on selected (RGB) images. \fBplasma (+):\fR _alpha,_beta,_scale>=0 Draw a random colored plasma fractal on selected images. This command implements the so-called 'Diamond-Square' algorithm. \fIDefault values:\fR 'alpha=1', 'beta=1' and 'scale=8'. \fBpoint (+):\fR x[%],y[%],_z[%],_opacity,_color1,... Set specified colored pixel on selected images. \fIDefault values:\fR 'z=0', 'opacity=1' and 'color1=0'. \fBpolka_dots:\fR diameter>=0,_density,_offset1,_offset2,_angle,_aliasing,_shading,_opacity, _color,... Draw dots pattern on selected images. \fIDefault values:\fR 'density=20', 'offset1=offset2=50', 'angle=0', 'aliasing=10', 'shading=1', 'opacity=1' and 'color=255'. \fBpolygon (+):\fR N>=1,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. \fIDefault values:\fR 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBquiver:\fR [function_image],_sampling[%]>0,_factor>=0,_is_arrow={ 0 | 1 },_opacity,_color1,... Draw specified 2D vector/orientation field on selected images. \fIDefault values:\fR 'sampling=5%', 'factor=1', 'is_arrow=1', 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBrectangle:\fR x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,... Draw specified colored rectangle 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 rectangle is drawn outlined instead of filled. \fIDefault values:\fR 'opacity=1', 'pattern=(undefined)' and 'color1=0'. \fBrorschach:\fR 'smoothness[%]>=0','mirroring={ 0=none | 1=x | 2=y | 3=xy } Render rorschach-like inkblots on selected images. \fIDefault values:\fR 'smoothness=5%' and 'mirroring=1'. \fBsierpinski:\fR recursion_level>=0 Draw Sierpinski triangle on selected images. \fIDefault value:\fR 'recursion_level=7'. \fBspiralbw:\fR width>0,_height>0,_is_2dcoords={ 0 | 1 } Input a 2D rectangular spiral image with specified size. \fIDefault values:\fR 'height=width' and 'is_2dcoords=0'. \fBspline:\fR x0[%],y0[%],u0[%],v0[%],x1[%],y1[%],u1[%],v1[%],_opacity,_color1,... Draw specified colored spline curve on selected images (cubic hermite spline). \fIDefault values:\fR 'opacity=1' and 'color1=0'. \fBtetraedron_shade:\fR x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,R0,G0,B0,...,R1,G1,B1,...,R2,G2,B2,...,R3,G3,B3,... Draw tetraedron with interpolated colors on selected (volumetric) images. \fBtext (+):\fR text,_x[%|~],_y[%|~],_font_height[%]>=0,_opacity,_color1,... Draw specified colored text string on selected images. (eq. to 't').\n If one of the x or y argument ends with a '~', its value is expected to be a centering ratio (in [0,1]) rather than a position. Usual centering ratio are { 0=left-justified | 0.5=centered | 1=right-justified }. Sizes '13' and '128' are special and correspond to binary fonts (no-antialiasing). Any other font size is rendered with anti-aliasing. Specifying an empty target image resizes it to new dimensions such that the image contains the entire text string. \fIDefault values:\fR 'x=y=0.01~', 'font_height=16', 'opacity=1' and 'color1=0'. \fBtext_outline:\fR text,_x[%|~],_y[%|~],_font_height[%]>0,_outline>=0,_opacity,_color1,... Draw specified colored and outlined text string on selected images. If one of the x or y argument ends with a '~', its value is expected to be a centering ratio (in [0,1]) rather than a position. Usual centering ratio are { 0=left-justified | 0.5=centered | 1=right-justified }. \fIDefault values:\fR 'x=y=0.01~', 'font_height=7.5%', 'outline=2', 'opacity=1', 'color1=color2=color3=255' and 'color4=255'. \fBtriangle_shade:\fR x0,y0,x1,y1,x2,y2,R0,G0,B0,...,R1,G1,B1,...,R2,G2,B2,... Draw triangle with interpolated colors on selected images. \fBtruchet:\fR _scale>0,_radius>=0,_pattern_type={ 0=straight | 1=curved } Fill selected images with random truchet patterns. \fIDefault values:\fR 'scale=32', 'radius=5' and 'pattern_type=1'. \fBturbulence:\fR _radius>0,_octaves={1,2,3...,12},_alpha>0,_difference={-10,10},_mode={0,1,2,3} Render fractal noise or turbulence on selected images. \fIDefault values:\fR 'radius=32', 'octaves=6', 'alpha=3', 'difference=0' and 'mode=0'. \fByinyang:\fR Draw a yin-yang symbol on selected images. ** \fIMatrix Computation:\fR \fBdijkstra (+):\fR starting_node>=0,ending_node>=0 Compute minimal distances and paths from specified adjacency matrices by the Dijkstra algorithm. \fBeigen (+):\fR Compute the eigenvalues and eigenvectors of selected symmetric matrices or matrix fields. If one selected image has 3 or 6 channels, it is regarded as a field of 2x2 or 3x3 symmetric matrices, whose eigen elements are computed at each point of the field. \fBinvert (+):\fR Compute the inverse of the selected matrices. \fBsolve (+):\fR [image] Solve linear system AX = B for selected B-matrices and specified A-matrix. If the system is under- or over-determined, the least square solution is returned. \fBsvd (+):\fR Compute SVD decomposition of selected matrices. \fBtranspose:\fR Transpose selected matrices. \fBtrisolve (+):\fR [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. ** \fI3D Rendering:\fR \fBadd3d (+):\fR tx,_ty,_tz | [object3d] | (no arg) 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'). \fIDefault values:\fR 'ty=tz=0'. \fBanimate3d:\fR _width>0,_height>0,_angle_dx,_angle_dy,_angle_dz,_zoom_factor>=0,_filename Animate selected 3D objects in a window. If argument 'filename' is provided, each frame of the animation is saved as a numbered filename. \fIDefault values:\fR 'width=640', 'height=480', 'angle_dx=0', 'angle_dy=1', 'angle_dz=0', 'zoom_factor=1' and 'filename=(undefined)'. \fBapply_camera3d:\fR pos_x,pos_y,pos_z,target_x,target_y,target_z,up_x,up_y,up_z Apply 3D camera matrix to selected 3D objects. \fIDefault values:\fR 'target_x=0', 'target_y=0', 'target_z=0', 'up_x=0', 'up_y=-1' and 'up_z=0'. \fBapply_matrix3d:\fR a11,a12,a13,...,a31,a32,a33 Apply specified 3D rotation matrix to selected 3D objects. \fBarray3d:\fR size_x>=1,_size_y>=1,_size_z>=1,_offset_x[%],_offset_y[%],_offset_y[%] Duplicate a 3D object along the X,Y and Z axes. \fIDefault values:\fR 'size_y=1', 'size_z=1' and 'offset_x=offset_y=offset_z=100%'. \fBarrow3d:\fR x0,y0,z0,x1,y1,z1,_radius[%]>=0,_head_length[%]>=0,_head_radius[%]>=0 Input 3D arrow with specified starting and ending 3D points. \fIDefault values:\fR 'radius=5%', 'head_length=25%' and 'head_radius=15%'. \fBaxes3d:\fR _size_x,_size_y,_size_z,_font_size>0,_label_x,_label_y,_label_z,_is_origin={ 0=no | 1=yes } Input 3D axes with specified sizes along the x,y and z orientations. \fIDefault values:\fR 'size_x=size_y=size_z=1', 'font_size=23', 'label_x=X', 'label_y=Y', 'label_z=Z' and 'is_origin=1' \fBbox3d:\fR _size_x,_size_y,_size_z Input 3D box at (0,0,0), with specified geometry. \fIDefault values:\fR 'size_x=1' and 'size_z=size_y=size_x'. \fBcenter3d:\fR Center selected 3D objects at (0,0,0). (eq. to 'c3d'). \fBcircle3d:\fR _x0,_y0,_z0,_radius>=0 Input 3D circle at specified coordinates. \fIDefault values:\fR 'x0=y0=z0=0' and 'radius=1'. \fBcircles3d:\fR _radius>=0,_is_wireframe={ 0 | 1 } Convert specified 3D objects to sets of 3D circles with specified radius. \fIDefault values:\fR 'radius=1' and 'is_wireframe=1'. \fBcolor3d (+):\fR R,_G,_B,_opacity Set color and opacity of selected 3D objects. (eq. to 'col3d'). \fIDefault value:\fR 'B=G=R' and 'opacity=(undefined)'. \fBcolorcube3d:\fR Input 3D color cube. \fBcone3d:\fR _radius,_height,_nb_subdivisions>0 Input 3D cone at (0,0,0), with specified geometry. \fIDefault value:\fR 'radius=1','height=1' and 'nb_subdivisions=24'. \fBcubes3d:\fR _size>=0 Convert specified 3D objects to sets of 3D cubes with specified size. \fIDefault value:\fR 'size=1'. \fBcup3d:\fR _resolution>0 Input 3D cup object. \fBcylinder3d:\fR _radius,_height,_nb_subdivisions>0 Input 3D cylinder at (0,0,0), with specified geometry. \fIDefault value:\fR 'radius=1','height=1' and 'nb_subdivisions=24'. \fBdelaunay3d:\fR Generate 3D delaunay triangulations from selected images. One assumes that the selected input images are binary images containing the set of points to mesh. The output 3D object is a mesh composed of non-oriented triangles. \fBdistribution3d:\fR Get 3D color distribution of selected images. \fBdiv3d (+):\fR factor | factor_x,factor_y,_factor_z Scale selected 3D objects isotropically or anisotropically, with the inverse of specified factors. (eq. to '/3d'). \fIDefault value:\fR 'factor_z=0'. \fBdouble3d (+):\fR _is_double_sided={ 0 | 1 } Enable/disable double-sided mode for 3D rendering. (eq. to 'db3d'). \fIDefault value:\fR 'is_double_sided=1'. \fBelevation3d (+):\fR z-factor | [elevation_map] | 'formula' | (no arg) Build 3D elevation of selected images, with a specified elevation map. When invoked with (no arg) or 'z-factor', the elevation map is computed as the pointwise L2 norm of the pixel values. Otherwise, the elevation map is taken from the specified image or formula. \fBempty3d:\fR Input empty 3D object. \fBextrude3d:\fR _depth>0,_resolution>0,_smoothness[%]>=0 Generate extruded 3D object from selected binary XY-profiles. \fIDefault values:\fR 'depth=16', 'resolution=1024' and 'smoothness=0.5%'. \fBfocale3d (+):\fR focale Set 3D focale. (eq. to 'f3d').\n Set 'focale' to 0 to enable parallel projection (instead of perspective). Set negative 'focale' will disable 3D sprite zooming. \fIDefault value:\fR 'focale=700'. \fBgaussians3d:\fR _size>0,_opacity Convert selected 3D objects into set of 3D gaussian-shaped sprites. \fBgmic3d:\fR Input a 3D G'MIC logo. \fBgyroid3d:\fR _resolution>0,_zoom Input 3D gyroid at (0,0,0), with specified resolution. \fIDefault values:\fR 'resolution=32' and 'zoom=5'. \fBhistogram3d:\fR Get 3D color histogram of selected images. \fBimage6cube3d:\fR Generate 3D mapped cubes from 6-sets of selected images. \fBimageblocks3d:\fR _maximum_elevation,_smoothness[%]>=0 Generate 3D blocks from selected images. Transparency of selected images is taken into account. \fIDefault values:\fR 'maximum_elevation=10' and 'smoothness=0'. \fBimagecube3d:\fR Generate 3D mapped cubes from selected images. \fBimageplane3d:\fR Generate 3D mapped planes from selected images. \fBimagepyramid3d:\fR Generate 3D mapped pyramids from selected images. \fBimagerubik3d:\fR _xy_tiles>=1,0<=xy_shift<=100,0<=z_shift<=100 Generate 3D mapped rubik's cubes from selected images. \fIDefault values:\fR 'xy_tiles=3', 'xy_shift=5' and 'z_shift=5'. \fBimagesphere3d:\fR _resolution1>=3,_resolution2>=3 Generate 3D mapped sphere from selected images. \fIDefault values:\fR 'resolution1=32' and 'resolutions2=16'. \fBisoline3d (+):\fR isovalue[%] | 'formula',value,_x0,_y0,_x1,_y1,_size_x>0[%],_size_y>0[%] Extract 3D isolines with specified value from selected images or from specified formula. \fIDefault values:\fR 'x0=y0=-3', 'x1=y1=3' and 'size_x=size_y=256'. \fBisosurface3d (+):\fR 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. \fIDefault values:\fR 'x0=y0=z0=-3', 'x1=y1=z1=3' and 'size_x=size_y=size_z=32'. \fBlabel3d:\fR "text",font_height>=0,_opacity,_color1,... Generate 3D text label. \fIDefault values:\fR 'font_height=13', 'opacity=1' and 'color=255,255,255'. \fBlabel_points3d:\fR _label_size>0,_opacity Add a numbered label to all vertices of selected 3D objects. \fIDefault values:\fR 'label_size=13' and 'opacity=0.8'. \fBlathe3d:\fR _resolution>0,_smoothness[%]>=0,_max_angle>=0 Generate 3D object from selected binary XY-profiles. \fIDefault values:\fR 'resolution=128', 'smoothness=0.5%' and 'max_angle=361'. \fBlight3d (+):\fR position_x,position_y,position_z | [texture] | (no arg) Set the light coordinates or the light texture for 3D rendering. (eq. to 'l3d').\n (no arg) resets the 3D light to default. \fBline3d:\fR x0,y0,z0,x1,y1,z1 Input 3D line at specified coordinates. \fBlissajous3d:\fR resolution>1,a,A,b,B,c,C Input 3D lissajous curves (x(t)=sin(a*t+A*2*pi),y(t)=sin(b*t+B*2*pi),z(t)=sin(c*t+C*2*pi)). \fIDefault values:\fR 'resolution=1024', 'a=2', 'A=0', 'b=1', 'B=0', 'c=0' and 'C=0'. \fBmode3d (+):\fR _mode Set static 3D rendering mode. (eq. to 'm3d').\n 'mode' can be { -1=bounding-box | 0=dots | 1=wireframe | 2=flat | 3=flat-shaded | 4=gouraud-shaded | 5=phong-shaded }."); Bounding-box mode ('mode==-1') is active only for the interactive 3D viewer. \fIDefault value:\fR 'mode=4'. \fBmoded3d (+):\fR _mode Set dynamic 3D rendering mode for interactive 3D viewer. (eq. to 'md3d').\n 'mode' can be { -1=bounding-box | 0=dots | 1=wireframe | 2=flat | 3=flat-shaded | 4=gouraud-shaded | 5=phong-shaded }. \fIDefault value:\fR 'mode=-1'. \fBmul3d (+):\fR factor | factor_x,factor_y,_factor_z Scale selected 3D objects isotropically or anisotropically, with specified factors. (eq. to '*3d'). \fIDefault value:\fR 'factor_z=0'. \fBnormalize3d:\fR Normalize selected 3D objects to unit size. (eq. to 'n3d'). \fBopacity3d (+):\fR _opacity Set opacity of selected 3D objects. (eq. to 'o3d'). \fIDefault value:\fR 'opacity=1'. \fBparametric3d:\fR _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 Input 3D object from specified parametric surface (x(a,b),y(a,b),z(a,b)). \fIDefault values:\fR 'x=(2+cos(b))*sin(a)', 'y=(2+cos(b))*cos(a)', 'c=sin(b)', 'amin=-pi', 'amax='pi', 'bmin=-pi' and 'bmax='pi', 'res_a=512', 'res_b=res_a', 'res_x=64', 'res_y=res_x', 'res_z=res_y', 'smoothness=2%' and 'isovalue=10%'. \fBpca_patch3d:\fR _patch_size>0,_M>0,_N>0,_normalize_input={ 0 | 1 },_normalize_output={ 0 | 1 }, _lambda_xy Get 3D patch-pca representation of selected images. The 3D patch-pca is estimated from M patches on the input image, and displayed as a cloud of N 3D points. \fIDefault values:\fR 'patch_size=7', 'M=1000', 'N=3000', 'normalize_input=1', 'normalize_output=0', and 'lambda_xy=0'. \fBplane3d:\fR _size_x,_size_y,_nb_subdivisions_x>0,_nb_subdisivions_y>0 Input 3D plane at (0,0,0), with specified geometry. \fIDefault values:\fR 'size_x=1', 'size_y=size_x' and 'nb_subdivisions_x=nb_subdivisions_y=24'. \fBpoint3d:\fR x0,y0,z0 Input 3D point at specified coordinates. \fBpointcloud3d:\fR Convert selected planar or volumetric images to 3D point clouds. \fBpose3d:\fR p1,...,p12 Apply 3D pose matrix to selected 3D objects. \fBprimitives3d:\fR mode Convert primitives of selected 3D objects. (eq. to 'p3d').\n 'mode' can be { 0=points | 1=outlines | 2=non-textured }. \fBprojections3d:\fR _x[%],_y[%],_z[%],_is_bounding_box={ 0 | 1 } Generate 3D xy,xz,yz projection planes from specified volumetric images. \fBpyramid3d:\fR width,height Input 3D pyramid at (0,0,0), with specified geometry. \fBquadrangle3d:\fR x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 Input 3D quadrangle at specified coordinates. \fBrandom3d:\fR nb_points>=0 Input random 3D point cloud in [0,1]^3. \fBreverse3d (+):\fR Reverse primitive orientations of selected 3D objects. (eq. to 'rv3d'). \fBrotate3d (+):\fR u,v,w,angle Rotate selected 3D objects around specified axis with specified angle (in deg.). (eq. to 'r3d'). \fBrotation3d:\fR u,v,w,angle Input 3x3 rotation matrix with specified axis and angle (in deg). \fBsierpinski3d:\fR _recursion_level>=0,_width,_height Input 3d Sierpinski pyramid. \fBsize3d:\fR Return bounding box size of the last selected 3D object. \fBskeleton3d:\fR _metric,_frame_type={ 0=squares | 1=diamonds | 2=circles | 3=auto }, _skeleton_opacity,_frame_opacity,_is_frame_wireframe={ 0 | 1 } Build 3D skeletal structure object from 2d binary shapes located in selected images. 'metric' can be { 0=chebyshev | 1=manhattan | 2=euclidean }. \fIDefault values:\fR 'metric=2', 'bones_type=3', 'skeleton_opacity=1' and 'frame_opacity=0.1'. \fBsnapshot3d:\fR _size>0,_zoom>=0,_backgroundR,_backgroundG,_backgroundB,_backgroundA | [background_image],zoom>=0 Take 2d snapshots of selected 3D objects. Set 'zoom' to 0 to disable object auto-scaling. \fIDefault values:\fR 'size=512', 'zoom=1' and '[background_image]=(default)'. \fBspecl3d (+):\fR value>=0 Set lightness of 3D specular light. (eq. to 'sl3d'). \fIDefault value:\fR 'value=0.15'. \fBspecs3d (+):\fR value>=0 Set shininess of 3D specular light. (eq. to 'ss3d'). \fIDefault value:\fR 'value=0.8'. \fBsphere3d (+):\fR radius,_nb_recursions>=0 Input 3D sphere at (0,0,0), with specified geometry. \fIDefault value:\fR 'nb_recursions=3'. \fBspherical3d:\fR _nb_azimuth>=3,_nb_zenith>=3,_radius_function(phi,theta) Input 3D spherical object at (0,0,0), with specified geometry. \fIDefault values:\fR 'nb_zenith=nb_azimut=64' and 'radius_function="abs(1+0.5*cos(3*phi)*sin(4* theta))"'. \fBspline3d:\fR x0[%],y0[%],z0[%],u0[%],v0[%],w0[%],x1[%],y1[%],z1[%],u1[%],v1[%],w1[%], _nb_vertices>=2 Input 3D spline with specified geometry. \fIDefault values:\fR 'nb_vertices=128'. \fBsplit3d (+):\fR _keep_shared_data={ 0 | 1 } Split selected 3D objects into 6 feature vectors : { header, sizes, vertices, primitives, colors, opacities }. (eq. to 's3d').\n To recreate the 3D object, append these 6 images along the y-axis. \fIDefault value:\fR 'keep_shared_data=1'. \fBsprite3d:\fR Convert selected images as 3D sprites. Selected images with alpha channels are managed. \fBsprites3d:\fR [sprite],_sprite_has_alpha_channel={ 0 | 1 } Convert selected 3D objects as a sprite cloud. Set 'sprite_has_alpha_channel' to 1 to make the last channel of the selected sprite be a transparency mask. \fIDefault value:\fR 'mask_has_alpha_channel=0'. \fBstar3d:\fR _nb_branches>0,0<=_thickness<=1 Input 3D star at (0,0,0), with specified geometry. \fIDefault values:\fR 'nb_branches=5' and 'thickness=0.38'. \fBstreamline3d (+):\fR x[%],y[%],z[%],_L>=0,_dl>0,_interpolation,_is_backward={ 0 | 1 },_is_oriented={ 0 | 1 } | 'formula',x,y,z,_L>=0,_dl>0,_interpolation,_is_backward={ 0 | 1 }, _is_oriented={ 0 | 1 } Extract 3D streamlines from selected vector fields or from specified formula. 'interpolation' can be { 0=nearest integer | 1=1st-order | 2=2nd-order | 3=4th-order }. \fIDefault values:\fR 'dl=0.1', 'interpolation=2', 'is_backward=0' and 'is_oriented=0'. \fBsub3d (+):\fR tx,_ty,_tz Shift selected 3D objects with the opposite of specified displacement vector. (eq. to '3d'). \fIDefault values:\fR 'ty=tz=0'. \fBsuperformula3d:\fR resolution>1,m>=1,n1,n2,n3 Input 2D superformula curve as a 3D object. \fIDefault values:\fR 'resolution=1024', 'm=8', 'n1=1', 'n2=5' and 'n3=8'. \fBtensors3d:\fR _radius_factor>=0,_shape={ 0=box | >=N=ellipsoid },_radius_min>=0 Generate 3D tensor fields from selected images. when 'shape'>0, it gives the ellipsoid shape precision. \fIDefault values:\fR 'radius_factor=1', 'shape=2' and 'radius_min=0.05'. \fBtext_pointcloud3d:\fR _"text1",_"text2",_smoothness Input 3D text pointcloud from the two specified strings. \fIDefault values:\fR 'text1="text1"', 'text2="text2"' and 'smoothness=1'. \fBtext3d:\fR text,_font_height>0,_depth>0,_smoothness Input a 3D text object from specified text. \fIDefault values:\fR 'font_height=53', 'depth=10' and 'smoothness=1.5'. \fBtexturize3d:\fR [ind_texture],_[ind_coords] Texturize selected 3D objects with specified texture and coordinates. (eq. to 't3d').\n When '[ind_coords]' is omitted, default XY texture projection is performed. \fIDefault value:\fR 'ind_coords=(undefined)'. \fBtorus3d:\fR _radius1,_radius2,_nb_subdivisions1>2,_nb_subdivisions2>2 Input 3D torus at (0,0,0), with specified geometry. \fIDefault values:\fR 'radius1=1', 'radius2=0.3', 'nb_subdivisions1=24' and 'nb_subdivisions2=12'. \fBtriangle3d:\fR x0,y0,z0,x1,y1,z1,x2,y2,z2 Input 3D triangle at specified coordinates. \fBvolume3d:\fR Transform selected 3D volumetric images as 3D parallelepipedic objects. \fBweird3d:\fR _resolution>0 Input 3D weird object at (0,0,0), with specified resolution. \fIDefault value:\fR 'resolution=32'. ** \fIControl Flow:\fR \fBapply_parallel:\fR "command" Apply specified command on each of the selected images, by parallelizing it for all image of the list. (eq. to 'ap'). \fBapply_parallel_channels:\fR "command" Apply specified command on each of the selected images, by parallelizing it for all channel of the images independently. (eq. to 'apc'). \fBapply_parallel_overlap:\fR "command",overlap[%],nb_threads={ 0=auto | 1 | 2 | 4 | 8 | 16 } Apply specified command on each of the selected images, by parallelizing it on 'nb_threads' overlapped sub-images. (eq. to 'apo').\n 'nb_threads' must be a power of 2. \fIDefault values:\fR 'overlap=0','nb_threads=0'. \fBapply_tiles:\fR "command",_tile_width[%]>0,_tile_height[%]>0,_tile_depth[%]>0, _overlap_width[%]>=0,_overlap_height[%]>=0,_overlap_depth[%]>=0, _boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Apply specified command on each tile (neighborhood) of the selected images, eventually with overlapping tiles. (eq. to 'at'). \fIDefault values:\fR 'tile_width=tile_height=tile_depth=10%', 'overlap_width=overlap_height=overlap_depth=0' and 'boundary_conditions=1'. \fBapply_timeout:\fR "command",_timeout={ 0=no timeout | >0=with specified timeout (in seconds) } Apply a command with a timeout. Set variable '$_is_timeout' to '1' if timeout occured, '0' otherwise. \fBcheck (+):\fR condition Evaluate specified condition and display an error message if evaluated to false. If 'expression' is not a math expression, it is regarded as a filename and checked if it exists. \fBcheck3d (+):\fR _is_full_check={ 0 | 1 } Check validity of selected 3D vector objects, and display an error message if one of the selected images is not a valid 3D vector object. Full 3D object check is slower but more precise. \fIDefault value:\fR 'is_full_check=1'. \fBcheck_display:\fR Check if a display is available, and throw an error otherwise. \fBcontinue (+):\fR Go to end of current 'repeat...done', 'do...while' or 'local...endlocal' block. \fBbreak (+):\fR Break current 'repeat...done', 'do...while' or 'local...endlocal' block. \fBdo (+):\fR Start a 'do...while' block. \fBdone (+):\fR End a 'repeat/for...done' block, and go to associated 'repeat/for' position, if iterations remain. \fBelif (+):\fR condition Start a 'elif...[else]...fi' block if previous 'if' was not verified and test if specified condition is true, or if specified filename exists. 'boolean' can be a float number standing for { 0=false | other=true }. \fBelse (+):\fR Execute following commands if previous 'if' or 'elif' conditions failed. \fBendif (+):\fR End a 'if...[elif]...[else]...endif' block. (eq. to 'fi').\n \fBendlocal (+):\fR End a 'local...endlocal' block. (eq. to 'endl'). \fBerror (+):\fR message Print specified error message on the standard error (stderr) and exit interpreter, except if error is caught by a 'onfail' command. Command selection (if any) stands for displayed call stack subset instead of image indices. \fBeval (+):\fR expression Evaluate specified math expression. - If no command selection is specified, the expression is evaluated once and its result is set to status. - If command selection is specified, the evaluation is looped over selected images. Status is not modified. (in this latter case, 'eval' is similar to 'fill' without assigning the image values). \fBexec (+):\fR _is_verbose={ 0 | 1 },"command" Execute external command using a system call. The status value is then set to the error code returned by the system call. If 'is_verbose=1', the executed command is allowed to output on stdout/stderr. (eq. to 'x'). \fIDefault value:\fR 'is_verbose=1'. \fBfor (+):\fR condition Start a 'for...done' block. \fBif (+):\fR condition Start a 'if...[elif]...[else]...fi' block and test if specified condition is true, or if specified filename exists. 'boolean' can be a float number standing for { 0=false | other=true }. \fBlocal (+):\fR Start a 'local...[onfail]...endlocal' block, with selected images. (eq. to 'l'). \fBmutex (+):\fR index,_action={ 0=unlock | 1=lock } Lock or unlock specified mutex for multi-threaded programming. A locked mutex can be unlocked only by the same thread. All mutexes are unlocked by default. 'index' designates the mutex index, in [0,255]. \fIDefault value:\fR 'action=1'. \fBnoarg (+):\fR Used in a custom command, 'noarg' tells the command that its argument list have not been used finally, and so they must be evaluated next in the G'MIC pipeline, just as if the custom command takes no arguments at all. Use this command to write a custom command which can decide if it takes arguments or not. \fBonfail (+):\fR Execute following commands when an error is encountered in the body of the 'local...endlocal' block. The status value is set with the corresponding error message. \fBparallel (+):\fR _wait_threads,"command1","command2",... Execute specified commands in parallel, each in a different thread. Parallel threads share the list of images. 'wait_threads' can be { 0=when current environment ends | 1=immediately }. \fIDefault value:\fR 'wait_threads=1'. \fBprogress (+):\fR 0<=value<=100 | -1 Set the progress index of the current processing pipeline. This command is useful only when G'MIC is used by an embedding application. \fBquit (+):\fR Quit G'MIC interpreter. (eq. to 'q'). \fBrepeat (+):\fR nb_iterations,_variable_name Start iterations of a 'repeat...done' block. \fBreturn (+):\fR Return from current custom command. \fBrprogress:\fR 0<=value<=100 | -1 | "command",0<=value_min<=100,0<=value_max<=100 Set the progress index of the current processing pipeline (relatively to previously defined progress bounds), or call the specified command with specified progress bounds. \fBrun:\fR "G'MIC pipeline" Run specified G'MIC pipeline. This is only useful when used from a shell, e.g. to avoid shell substitutions to happen in argument. \fBskip (+):\fR item Do nothing but skip specified item. \fBstatus (+):\fR status_string Set the current status. Used to define a returning value from a function. (eq. to 'u'). \fBwhile (+):\fR condition End a 'do...while' block and go back to associated 'do' if specified condition is true or if specified filename exists. 'boolean' can be a float number standing for { 0=false | other=true }. ** \fIArrays, Tiles and Frames:\fR \fBarray:\fR M>0,_N>0,_expand_type={ 0=min | 1=max | 2=all } Create MxN array from selected images. \fIDefault values:\fR 'N=M' and 'expand_type=0'. \fBarray_fade:\fR M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0=min | 1=max | 2=all} Create MxN array from selected images. \fIDefault values:\fR 'N=M', 'fade_start=60', 'fade_end=90' and 'expand_type=1'. \fBarray_mirror:\fR N>=0,_dir={ 0=x | 1=y | 2=xy | 3=tri-xy },_expand_type={ 0 | 1 } Create 2^Nx2^N array from selected images. \fIDefault values:\fR 'dir=2' and 'expand_type=0'. \fBarray_random:\fR Ms>0,_Ns>0,_Md>0,_Nd>0 Create MdxNd array of tiles from selected MsxNs source arrays. \fIDefault values:\fR 'Ns=Ms', 'Md=Ms' and 'Nd=Ns'. \fBframe_blur:\fR _sharpness>0,_size>=0,_smoothness,_shading,_blur Draw RGBA-colored round frame in selected images. \fIDefault values:\fR 'sharpness=10', 'size=30', 'smoothness=0', 'shading=1' and 'blur=3%'. \fBframe_cube:\fR _depth>=0,_centering_x,_centering_y,_left_side={0=normal | 1=mirror-x | 2=mirror-y | 3=mirror-xy},_right_side,_lower_side,_upper_side Insert 3D frames in selected images. \fIDefault values:\fR 'depth=1', 'centering_x=centering_y=0' and 'left_side=right_side, lower_side=upper_side=0'. \fBframe_fuzzy:\fR size_x[%]>=0,_size_y[%]>=0,_fuzzyness>=0,_smoothness[%]>=0,_R,_G,_B,_A Draw RGBA-colored fuzzy frame in selected images. \fIDefault values:\fR 'size_y=size_x', 'fuzzyness=5', 'smoothness=1' and 'R=G=B=A=255'. \fBframe_painting:\fR _size[%]>=0,0<=_contrast<=1,_profile_smoothness[%]>=0,_R,_G,_B, _vignette_size[%]>=0,_vignette_contrast>=0,_defects_contrast>=0, 0<=_defects_density<=100,_defects_size>=0,_defects_smoothness[%]>=0, _serial_number Add a painting frame to selected images. \fIDefault values:\fR 'size=10%', 'contrast=0.4', 'profile_smoothness=6%', 'R=225', 'G=200', 'B=120', 'vignette_size=2%', 'vignette_contrast=400', 'defects_contrast=50', 'defects_density=10', 'defects_size=1', 'defects_smoothness=0.5%' and 'serial_number=123456789'. \fBframe_pattern:\fR M>=3,_constrain_size={ 0 | 1 } | M>=3,_[frame_image],_constrain_size={ 0 | 1 } Insert selected pattern frame in selected images. \fIDefault values:\fR 'pattern=0' and 'constrain_size=0'. \fBframe_round:\fR _sharpness>0,_size>=0,_smoothness,_shading,_R,_G,_B,_A Draw RGBA-colored round frame in selected images. \fIDefault values:\fR 'sharpness=10', 'size=10', 'smoothness=0', 'shading=0' and 'R=G=B=A=255'. \fBframe_seamless:\fR frame_size>=0,_patch_size>0,_blend_size>=0,_frame_direction={ 0=inner (preserve image size) | 1=outer } Insert frame in selected images, so that tiling the resulting image makes less visible seams. \fIDefault values:\fR 'patch_size=7', 'blend_size=5' and 'frame_direction=1'. \fBframe_x:\fR size_x[%],_col1,...,_colN Insert colored frame along the x-axis in selected images. \fIDefault values:\fR 'col1=col2=col3=255' and 'col4=255'. \fBframe_xy:\fR size_x[%],_size_y[%],_col1,...,_colN Insert colored frame along the x-axis in selected images. \fIDefault values:\fR 'size_y=size_x', 'col1=col2=col3=255' and 'col4=255'. (eq. to 'frame'). \fBframe_xyz:\fR size_x[%],_size_y[%],_size_z[%]_col1,...,_colN Insert colored frame along the x-axis in selected images. \fIDefault values:\fR 'size_y=size_x=size_z', 'col1=col2=col3=255' and 'col4=255'. \fBframe_y:\fR size_y[%],_col1,...,_colN Insert colored frame along the y-axis in selected images. \fIDefault values:\fR 'col1=col2=col3=255' and 'col4=255'. \fBimg2ascii:\fR _charset,_analysis_scale>0,_analysis_smoothness[%]>=0,_synthesis_scale>0, _output_ascii_filename Render selected images as binary ascii art. This command returns the corresponding the list of widths and heights (expressed as a number of characters) for each selected image. \fIDefault values:\fR 'charset=[ascii charset]', 'analysis_scale=16', 'analysis_smoothness=20%', 'synthesis_scale=16' and '_output_ascii_filename=[undefined]'. \fBimagegrid:\fR M>0,_N>0 Create MxN image grid from selected images. \fIDefault value:\fR 'N=M'. \fBimagegrid_hexagonal:\fR _resolution>0,0<=_outline<=1 Create hexagonal grids from selected images. \fIDefault values:\fR 'resolution=32', 'outline=0.1' and 'is_antialiased=1'. \fBimagegrid_triangular:\fR pattern_width>=1,_pattern_height>=1,_pattern_type,0<=_outline_opacity<=1, _outline_color1,... Create triangular grids from selected images. 'pattern type' can be { 0=horizontal | 1=vertical | 2=crossed | 3=cube | 4=decreasing | 5=increasing }. \fIDefault values:\fR 'pattern_width=24', 'pattern_height=pattern_width', 'pattern_type=0', 'outline_opacity=0.1' and 'outline_color1=0'. \fBlinearize_tiles:\fR M>0,_N>0 Linearize MxN tiles on selected images. \fIDefault value:\fR 'N=M'. \fBmap_sprites:\fR _nb_sprites>=1,_allow_rotation={ 0=none | 1=90 deg. | 2=180 deg. } Map set of sprites (defined as the 'nb_sprites' latest images of the selection) to other selected images, according to the luminosity of their pixel values. \fBpack:\fR is_ratio_constraint={ 0 | 1 },_sort_criterion Pack selected images into a single image. The returned status contains the list of new (x,y) offsets for each input image. Parameter 'is_ratio_constraint' tells if the resulting image must tend to a square image. \fIDefault values:\fR 'is_ratio_constraint=0' and 'sort_criterion=max(w,h)'. \fBpuzzle:\fR _width>0,_height>0,_M>=1,_N>=1,_curvature,_centering,_connectors_variability, _resolution>=1 Input puzzle binary mask with specified size and geometry. \fIDefault values:\fR 'width=height=512', 'M=N=5', 'curvature=0.5', 'centering=0.5', 'connectors_variability=0.5' and 'resolution=64'. \fBquadratize_tiles:\fR M>0,_N>0 Quadratize MxN tiles on selected images. \fIDefault value:\fR 'N=M'. \fBrotate_tiles:\fR angle,_M>0,N>0 Apply MxN tiled-rotation effect on selected images. \fIDefault values:\fR 'M=8' and 'N=M'. \fBshift_tiles:\fR M>0,_N>0,_amplitude Apply MxN tiled-shift effect on selected images. \fIDefault values:\fR 'N=M' and 'amplitude=20'. \fBtaquin:\fR M>0,_N>0,_remove_tile={ 0=none | 1=first | 2=last | 3=random },_relief, _border_thickness[%],_border_outline[%],_outline_color Create MxN taquin puzzle from selected images. \fIDefault value:\fR 'N=M', 'relief=50', 'border_thickness=5', 'border_outline=0' and 'remove_tile=0'. \fBtunnel:\fR _level>=0,_factor>0,_centering_x,_centering_y,_opacity,_angle Apply tunnel effect on selected images. \fIDefault values:\fR 'level=9', 'factor=80%', 'centering_x=centering_y=0.5', 'opacity=1' and 'angle=0' ** \fIArtistic:\fR \fBboxfitting:\fR _min_box_size>=1,_max_box_size>=0,_initial_density>=0,_nb_attempts>=1 Apply box fitting effect on selected images, as displayed the web page: [http://www.complexification.net/gallery/machines/boxFittingImg/] \fIDefault values:\fR 'min_box_size=1', 'max_box_size=0', 'initial_density=0.1' and 'nb_attempts=3'. \fBbrushify:\fR [brush],_brush_nb_sizes>=1,0<=_brush_min_size_factor<=1, _brush_nb_orientations>=1,_brush_light_type,0<=_brush_light_strength<=1, _brush_opacity,_painting_density[%]>=0,0<=_painting_contours_coherence<=1, 0<=_painting_orientation_coherence<=1,_painting_coherence_alpha[%]>=0, _painting_coherence_sigma[%]>=0,_painting_primary_angle, 0<=_painting_angle_dispersion<=1 Apply specified brush to create painterly versions of specified images. 'brush_light_type' can be { 0=none | 1=flat | 2=darken | 3=lighten | 4=full }. \fIDefault values:\fR 'brush_nb_sizes=3', 'brush_min_size_factor=0.66', 'brush_nb_orientations=12', 'brush_light_type=0', 'brush_light_strength=0.25', 'brush_opacity=0.8', 'painting_density=20%', 'painting_contours_coherence=0.9', 'painting_orientation_coherence=0.9', 'painting_coherence_alpha=1', 'painting_coherence_sigma=1', 'painting_primary_angle=0', 'painting_angle_dispersion=0.2' \fBcartoon:\fR _smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 Apply cartoon effect on selected images. \fIDefault values:\fR 'smoothness=3', 'sharpening=150', 'threshold=20', 'thickness=0.25', 'color=1.5' and 'quantization=8'. \fBcolor_ellipses:\fR _count>0,_radius>=0,_opacity>=0 Add random color ellipses to selected images. \fIDefault values:\fR 'count=400', 'radius=5' and 'opacity=0.1'. \fBcubism:\fR _density>=0,0<=_thickness<=50,_max_angle,_opacity,_smoothness>=0 Apply cubism effect on selected images. \fIDefault values:\fR 'density=50', 'thickness=10', 'max_angle=75', 'opacity=0.7' and 'smoothness=0'. \fBdraw_whirl:\fR _amplitude>=0 Apply whirl drawing effect on selected images. \fIDefault value:\fR 'amplitude=100'. \fBdrawing:\fR _amplitude>=0 Apply drawing effect on selected images. \fIDefault value:\fR 'amplitude=200'. \fBdrop_shadow:\fR _offset_x[%],_offset_y[%],_smoothness[%]>=0,0<=_curvature<=1,_expand_size={ 0 | 1 } Drop shadow behind selected images. \fIDefault values:\fR 'offset_x=20', 'offset_y=offset_x', 'smoothness=5', 'curvature=0' and 'expand_size=1'. \fBellipsionism:\fR _R>0[%],_r>0[%],_smoothness>=0[%],_opacity,_outline>0,_density>0 Apply ellipsionism filter to selected images. \fIDefault values:\fR 'R=10', 'r=3', 'smoothness=1%', 'opacity=0.7', 'outline=8' and 'density=0.6'. \fBfire_edges:\fR _edges>=0,0<=_attenuation<=1,_smoothness>=0,_threshold>=0,_nb_frames>0, _starting_frame>=0,frame_skip>=0 Generate fire effect from edges of selected images. \fIDefault values:\fR 'edges=0.7', 'attenuation=0.25', 'smoothness=0.5', 'threshold=25', 'nb_frames=1', 'starting_frame=20' and 'frame_skip=0'. \fBfractalize:\fR 0<=detail_level<=1 Randomly fractalize selected images. \fIDefault value:\fR 'detail_level=0.8' \fBglow:\fR _amplitude>=0 Add soft glow on selected images. \fIDefault value:\fR 'amplitude=1%'. \fBhalftone:\fR nb_levels>=2,_size_dark>=2,_size_bright>=2,_shape={ 0=square | 1=diamond | 2=circle | 3=inv-square | 4=inv-diamond | 5=inv-circle },_smoothness[%]>=0 Apply halftone dithering to selected images. \fIDefault values:\fR 'nb_levels=5', 'size_dark=8', 'size_bright=8', 'shape=5' and 'smoothnesss=0'. \fBhardsketchbw:\fR _amplitude>=0,_density>=0,_opacity,0<=_edge_threshold<=100,_is_fast={ 0 | 1 } Apply hard B&W sketch effect on selected images. \fIDefault values:\fR 'amplitude=1000', 'sampling=3', 'opacity=0.1', 'edge_threshold=20' and 'is_fast=0'. \fBhearts:\fR _density>=0 Apply heart effect on selected images. \fIDefault value:\fR 'density=10'. \fBhoughsketchbw:\fR _density>=0,_radius>0,0<=_threshold<=100,0<=_opacity<=1,_votesize[%]>0 Apply hough B&W sketch effect on selected images. \fIDefault values:\fR 'density=8', 'radius=5', 'threshold=80', 'opacity=0.1' and 'votesize=100%'. \fBlightrays:\fR 100<=_density<=0,_center_x[%],_center_y[%],_ray_length>=0,_ray_attenuation>=0 Generate ray lights from the edges of selected images. Defaults values : 'density=50%', 'center_x=50%', 'center_y=50%', 'ray_length=0.9' and 'ray_attenuation=0.5'. \fBlight_relief:\fR _ambient_light,_specular_lightness,_specular_size,_darkness,_light_smoothness, _xl,_yl,_zl,_zscale,_opacity_is_heightmap={ 0 | 1 } Apply relief light to selected images. Default values(s) : 'ambient_light=0.3', 'specular_lightness=0.5', 'specular_size=0.2', 'darkness=0', 'xl=0.2', 'yl=zl=0.5', 'zscale=1', 'opacity=1' and 'opacity_is_heightmap=0'. \fBlinify:\fR 0<=_density<=100,_spreading>=0,_resolution[%]>0,_line_opacity>=0, _line_precision>0,_mode={ 0=subtractive | 1=additive } Apply linify effect on selected images. The algorithm is inspired from the one described on the webpage 'http://linify.me/about'. \fIDefault values:\fR 'density=50', 'spreading=2', 'resolution=40%', 'line_opacity=10', 'line_precision=24' and 'mode=0'. \fBmosaic:\fR 0<=_density<=100 Create random mosaic from selected images. \fIDefault values:\fR 'density=30'. \fBold_photo:\fR Apply old photo effect on selected images. \fBpencilbw:\fR _size>=0,_amplitude>=0 Apply B&W pencil effect on selected images. \fIDefault values:\fR 'size=0.3' and 'amplitude=60'. \fBpixelsort:\fR _ordering={ + | - },_axis={ x | y | z | xy | yx },_[sorting_criterion],_[mask] Apply a 'pixel sorting' algorithm on selected images, as described in the page : http://satyarth.me/articles/pixel-sorting/ \fIDefault values:\fR 'ordering=+', 'axis=x' and 'sorting_criterion=mask=(undefined)'. \fBpolaroid:\fR _size1>=0,_size2>=0 Create polaroid effect in selected images. \fIDefault values:\fR 'size1=10' and 'size2=20'. \fBpolygonize:\fR _warp_amplitude>=0,_smoothness[%]>=0,_min_area[%]>=0,_resolution_x[%]>0, _resolution_y[%]>0 Apply polygon effect on selected images. \fIDefault values:\fR 'warp_amplitude=300', 'smoothness=2%', 'min_area=0.1%', 'resolution_x=resolution_y=10%'. \fBposter_edges:\fR 0<=_edge_threshold<=100,0<=_edge_shade<=100,_edge_thickness>=0, _edge_antialiasing>=0,0<=_posterization_level<=15,_posterization_antialiasing>=0 Apply poster edges effect on selected images. \fIDefault values:\fR 'edge_threshold=40', 'edge_shade=5', 'edge_thickness=0.5', 'edge_antialiasing=10', 'posterization_level=12' and 'posterization_antialiasing=0'. \fBposter_hope:\fR _smoothness>=0 Apply Hope stencil poster effect on selected images. \fIDefault value:\fR 'smoothness=3'. \fBrodilius:\fR 0<=_amplitude<=100,_0<=thickness<=100,_sharpness>=0,_nb_orientations>0,_offset, _color_mode={ 0=darker | 1=brighter } Apply rodilius (fractalius-like) filter on selected images. \fIDefault values:\fR 'amplitude=10', 'thickness=10', 'sharpness=400', 'nb_orientations=7', 'offset=0' and 'color_mode=1'. \fBsketchbw:\fR _nb_angles>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. \fIDefault values:\fR 'nb_angles=2', 'start_angle=45', 'angle_range=180', 'length=30', 'threshold=3', 'opacity=0.03', 'bgfactor=0', 'density=0.6', 'sharpness=0.1', 'anisotropy=0.6', 'smoothness=0. 25', 'coherence=1', 'is_boost=0' and 'is_curved=1'. \fBsponge:\fR _size>0 Apply sponge effect on selected images. \fIDefault value:\fR 'size=13'. \fBstained_glass:\fR _edges[%]>=0, shading>=0, is_thin_separators={ 0 | 1 } Generate stained glass from selected images. \fIDefault values:\fR 'edges=40%', 'shading=0.2' and 'is_precise=0'. \fBstars:\fR _density[%]>=0,_depth>=0,_size>0,_nb_branches>=1,0<=_thickness<=1, _smoothness[%]>=0,_R,_G,_B,_opacity Add random stars to selected images. \fIDefault values:\fR 'density=10%', 'depth=1', 'size=32', 'nb_branches=5', 'thickness=0.38', 'smoothness=0.5', 'R=G=B=200' and 'opacity=1'. \fBstencil:\fR _radius[%]>=0,_smoothness>=0,_iterations>=0 Apply stencil filter on selected images. \fIDefault values:\fR 'radius=3', 'smoothness=1' and 'iterations=8'. \fBstencilbw:\fR _edges>=0,_smoothness>=0 Apply B&W stencil effect on selected images. \fIDefault values:\fR 'edges=15' and 'smoothness=10'. \fBstylize:\fR [style_image],_fidelity_finest,_fidelity_coarsest, _fidelity_smoothness_finest>=0,_fidelity_smoothnes_coarsest>=0, 0<=_fidelity_chroma<=1,_init_type,_init_resolution>=0,init_max_gradient>=0, _patchsize_analysis>0,_patchsize_synthesis>0,_patchsize_synthesis_final>0, _nb_matches_finest>=0,_nb_matches_coarsest>=0,_penalize_repetitions>=0, _matching_precision>=0,_scale_factor>1,_skip_finest_scales>=0, "image_matching_command" Transfer colors and textures from specified style image to selected images, using a multi-scale patch-mathing algorithm. If instant display window[0] is opened, the steps of the image synthesis are displayed on it. 'init_type' can be { 0=best-match | 1=identity | 2=randomized }. \fBtetris:\fR _scale>0 Apply tetris effect on selected images. \fIDefault value:\fR 'scale=10'. \fBwarhol:\fR _M>0,_N>0,_smoothness>=0,_color>=0 Create MxN Andy Warhol-like artwork from selected images. \fIDefault values:\fR 'M=3', 'N=M', 'smoothness=2' and 'color=20'. \fBweave:\fR _density>=0,0<=_thickness<=100,0<=_shadow<=100,_shading>=0,_fibers_amplitude>=0, _fibers_smoothness>=0,_angle,-1<=_x_curvature<=1,-1<=_y_curvature<=1 Apply weave effect to the selected images. 'angle' can be { 0=0 deg. | 1=22.5 deg. | 2=45 deg. | 3=67.5 deg. }. \fIDefault values:\fR 'density=6', 'thickness=65', 'shadow=40', 'shading=0.5', 'fibers_amplitude=0', _ \fBwhirls:\fR _texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 Add random whirl texture to selected images. \fIDefault values:\fR 'texture=3', 'smoothness=6', 'darkness=0.5' and 'lightness=1.8'. ** \fIWarpings:\fR \fBdeform:\fR _amplitude>=0,_interpolation Apply random smooth deformation on selected images. 'interpolation' can be { 0=none | 1=linear | 2=bicubic }. \fIDefault value:\fR 'amplitude=10'. \fBeuclidean2polar:\fR _center_x[%],_center_y[%],_stretch_factor>0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Apply euclidean to polar transform on selected images. \fIDefault values:\fR 'center_x=center_y=50%', 'stretch_factor=1' and 'boundary_conditions=1'. \fBequirectangular2nadirzenith:\fR Transform selected equirectangular images to nadir/zenith rectilinear projections. \fBfisheye:\fR _center_x,_center_y,0<=_radius<=100,_amplitude>=0 Apply fish-eye deformation on selected images. \fIDefault values:\fR 'x=y=50', 'radius=50' and 'amplitude=1.2'. \fBflower:\fR _amplitude,_frequency,_offset_r[%],_angle,_center_x[%],_center_y[%], _boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror} Apply flower deformation on selected images. \fIDefault values:\fR 'amplitude=30', 'frequency=6', 'offset_r=0', 'angle=0', 'center_x=center_y=50%' and 'boundary_conditions=3'. \fBkaleidoscope:\fR _center_x[%],_center_y[%],_radius,_angle,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Create kaleidoscope effect from selected images. \fIDefault values:\fR 'center_x=center_y=50%', 'radius=100', 'angle=30' and 'boundary_conditions=3'. \fBmap_sphere:\fR _width>0,_height>0,_radius,_dilation>0,_fading>=0,_fading_power>=0 Map selected images on a sphere. \fIDefault values:\fR 'width=height=512', 'radius=100', 'dilation=0.5', 'fading=0' and 'fading_power=0.5'. \fBnadirzenith2equirectangular:\fR Transform selected nadir/zenith rectilinear projections to equirectangular images. \fBpolar2euclidean:\fR _center_x[%],_center_y[%],_stretch_factor>0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Apply euclidean to polar transform on selected images. \fIDefault values:\fR 'center_x=center_y=50%', 'stretch_factor=1' and 'boundary_conditions=1'. \fBraindrops:\fR _amplitude,_density>=0,_wavelength>=0,_merging_steps>=0 Apply raindrops deformation on selected images. \fIDefault values:\fR 'amplitude=80','density=0.1', 'wavelength=1' and 'merging_steps=0'. \fBripple:\fR _amplitude,_bandwidth,_shape={ 0=bloc | 1=triangle | 2=sine | 3=sine+ | 4=random },_angle,_offset Apply ripple deformation on selected images. \fIDefault values:\fR 'amplitude=10', 'bandwidth=10', 'shape=2', 'angle=0' and 'offset=0'. \fBrotoidoscope:\fR _center_x[%],_center_y[%],_tiles>0,_smoothness[%]>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Create rotational kaleidoscope effect from selected images. \fIDefault values:\fR 'center_x=center_y=50%', 'tiles=10', 'smoothness=1' and 'boundary_conditions=3'. \fBspherize:\fR _radius[%]>=0,_strength,_smoothness[%]>=0,_center_x[%],_center_y[%],_ratio_x/ y>0,_angle,_interpolation Apply spherize effect on selected images. \fIDefault values:\fR 'radius=50%', 'strength=1', 'smoothness=0', 'center_x=center_y=50%', 'ratio_x/ y=1', 'angle=0' and 'interpolation=1'. \fBsymmetrize:\fR _x[%],_y[%],_angle,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror },_is_antisymmetry={ 0 | 1 },_swap_sides={ 0 | 1 } Symmetrize selected images regarding specified axis. \fIDefault values:\fR 'x=y=50%', 'angle=90', 'boundary_conditions=3', 'is_antisymmetry=0' and 'swap_sides=0'. \fBtransform_polar:\fR "expr_radius",_"expr_angle",_center_x[%],_center_y[%],_boundary_conditions={ 0=dirichlet | 1=neumann } Apply user-defined transform on polar representation of selected images. \fIDefault values:\fR 'expr_radius=R-r', 'expr_rangle=a', 'center_x=center_y=50%' and 'boundary_conditions=1'. \fBtwirl:\fR _amplitude,_center_x[%],_center_y[%],_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Apply twirl deformation on selected images. \fIDefault values:\fR 'amplitude=1', 'center_x=center_y=50%' and 'boundary_conditions=3'. \fBwarp_perspective:\fR _x-angle,_y-angle,_zoom>0,_x-center,_y-center,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Warp selected images with perspective deformation. \fIDefault values:\fR 'x-angle=1.5', 'y-angle=0', 'zoom=1', 'x-center=y-center=50' and 'boundary_conditions=2'. \fBwater:\fR _amplitude,_smoothness>=0,_angle Apply water deformation on selected images. \fIDefault values:\fR 'amplitude=30', 'smoothness=1.5' and 'angle=45'. \fBwave:\fR _amplitude>=0,_frequency>=0,_center_x,_center_y Apply wave deformation on selected images. \fIDefault values:\fR 'amplitude=4', 'frequency=0.4' and 'center_x=center_y=50'. \fBwind:\fR _amplitude>=0,_angle,0<=_attenuation<=1,_threshold Apply wind effect on selected images. \fIDefault values:\fR 'amplitude=20', 'angle=0', 'attenuation=0.7' and 'threshold=20'. \fBzoom:\fR _factor,_cx,_cy,_cz,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Apply zoom factor to selected images. \fIDefault values:\fR 'factor=1', 'cx=cy=cz=0.5' and 'boundary_conditions=0'. ** \fIDegradations:\fR \fBcracks:\fR 0<=_density<=100,_is_relief={ 0 | 1 },_opacity,_color1,... Draw random cracks on selected images with specified color. \fIDefault values:\fR 'density=25', 'is_relief=0', 'opacity=1' and 'color1=0'. \fBlight_patch:\fR _density>0,_darkness>=0,_lightness>=0 Add light patches to selected images. \fIDefault values:\fR 'density=10', 'darkness=0.9' and 'lightness=1.7'. \fBnoise_hurl:\fR _amplitude>=0 Add hurl noise to selected images. \fIDefault value:\fR 'amplitude=10'. \fBpixelize:\fR _scale_x>0,_scale_y>0,_scale_z>0 Pixelize selected images with specified scales. \fIDefault values:\fR 'scale_x=20' and 'scale_y=scale_z=scale_x'. \fBscanlines:\fR _amplitude,_bandwidth,_shape={ 0=bloc | 1=triangle | 2=sine | 3=sine+ | 4=random },_angle,_offset Apply ripple deformation on selected images. \fIDefault values:\fR 'amplitude=60', 'bandwidth=2', 'shape=0', 'angle=0' and 'offset=0'. \fBshade_stripes:\fR _frequency>=0,_direction={ 0=horizontal | 1=vertical },_darkness>=0, _lightness>=0 Add shade stripes to selected images. \fIDefault values:\fR 'frequency=5', 'direction=1', 'darkness=0.8' and 'lightness=2'. \fBshadow_patch:\fR _opacity>=0 Add shadow patches to selected images. \fIDefault value:\fR 'opacity=0.7'. \fBspread:\fR _dx>=0,_dy>=0,_dz>=0 Spread pixel values of selected images randomly along x,y and z. \fIDefault values:\fR 'dx=3', 'dy=dx' and 'dz=0'. \fBstripes_y:\fR _frequency>=0 Add vertical stripes to selected images. \fIDefault value:\fR 'frequency=10'. \fBtexturize_canvas:\fR _amplitude>=0,_fibrousness>=0,_emboss_level>=0 Add paint canvas texture to selected images. \fIDefault values:\fR 'amplitude=20', 'fibrousness=3' and 'emboss_level=0.6'. \fBtexturize_paper:\fR Add paper texture to selected images. \fBvignette:\fR _strength>=0,0<=_radius_min<=100,0<=_radius_max<=100 Add vignette effect to selected images. \fIDefault values:\fR 'strength=100', 'radius_min=70' and 'radius_max=90'. \fBwatermark_visible:\fR _text,0<_opacity<1,_size>0,_angle,_mode={ 0=remove | 1=add },_smoothness>=0 Add or remove a visible watermark on selected images (value range must be [0,255]). \fIDefault values:\fR 'text=(c) G'MIC', 'opacity=0.3', 'size=53', 'angle=25', 'mode=1' and 'smoothness=0'. ** \fIBlending and Fading:\fR \fBblend:\fR [layer],blending_mode,_opacity[%],_selection_is={ 0=base-layers | 1=top-layers } | blending_mode,_opacity[%] Blend selected G,GA,RGB or RGBA images by specified layer or blend all selected images together, using specified blending mode. 'blending_mode' can be { add | alpha | and | average | blue | burn | darken | difference | divide | dodge | edges | exclusion | freeze | grainextract | grainmerge | green | hardlight | hardmix | hue | interpolation | lighten | lightness | linearburn | linearlight | luminance | multiply | negation | or | overlay | pinlight | red | reflect | saturation | seamless | seamless_mixed | screen | shapeareamax | shapeareamax0 | shapeareamin | shapeareamin0 | shapeaverage | shapeaverage0 | shapemedian | shapemedian0 | shapemin | shapemin0 | shapemax | shapemax0 | softburn | softdodge | softlight | stamp | subtract | value | vividlight | xor }. 'opacity' should be in '[0,1]', or '[0,100]' if expressed with a '%'. \fIDefault values:\fR 'blending_mode=alpha', 'opacity=1' and 'selection_is=0'. \fBblend_edges:\fR smoothness[%]>=0 Blend selected images togethers using 'edges' mode. \fBblend_fade:\fR [fading_shape] Blend selected images together using specified fading shape. \fBblend_median:\fR Blend selected images together using 'median' mode. \fBblend_seamless:\fR _is_mixed_mode={ 0 | 1 },_inner_fading[%]>=0,_outer_fading[%]>=0 Blend selected images using a seamless blending mode (Poisson-based). \fIDefault values:\fR 'is_mixed=0', 'inner_fading=0' and 'outer_fading=100%'. \fBfade_diamond:\fR 0<=_start<=100,0<=_end<=100 Create diamond fading from selected images. \fIDefault values:\fR 'start=80' and 'end=90'. \fBfade_linear:\fR _angle,0<=_start<=100,0<=_end<=100 Create linear fading from selected images. \fIDefault values:\fR 'angle=45', 'start=30' and 'end=70'. \fBfade_radial:\fR 0<=_start<=100,0<=_end<=100 Create radial fading from selected images. \fIDefault values:\fR 'start=30' and 'end=70'. \fBfade_x:\fR 0<=_start<=100,0<=_end<=100 Create horizontal fading from selected images. \fIDefault values:\fR 'start=30' and 'end=70'. \fBfade_y:\fR 0<=_start<=100,0<=_end<=100 Create vertical fading from selected images. \fIDefault values:\fR 'start=30' and 'end=70'. \fBfade_z:\fR 0<=_start<=100,0<=_end<=100 Create transversal fading from selected images. \fIDefault values:\fR 'start=30' and 'end=70'. \fBsub_alpha:\fR [base_image],_opacity_gain>=1 Compute the minimal alpha-channel difference (opposite of alpha blending) between the selected images and the specified base image. The alpha difference A-B is defined as the image having minimal opacity, such that alpha_blend(B,A-B) = A. \fIDefault value:\fR 'opacity_gain=1'. ** \fIImage Sequences and Videos:\fR \fBanimate:\fR filter_name,"param1_start,...,paramN_start","param1_end,...,paramN_end", nb_frames>=0,_output_frames={ 0 | 1 },_output_filename | delay>0,_back and forth={ 0 | 1 } Animate filter from starting parameters to ending parameters or animate selected images in a display window. \fIDefault value:\fR 'delay=30'. \fBapply_camera:\fR _"command",_camera_index>=0,_skip_frames>=0,_output_filename Apply specified command on live camera stream, and display it on display window [0]. \fIDefault values:\fR 'command=""', 'camera_index=0' (default camera), 'skip_frames=0' and 'output_filename=""'. \fBapply_files:\fR "filename_pattern",_"command",_first_frame>=0,_last_frame={ >=0 | -1=last }, _frame_step>=1,_output_filename Apply a G'MIC command on specified input image files, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension '.avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'command=(undefined)', 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBapply_video:\fR video_filename,_"command",_first_frame>=0,_last_frame={ >=0 | -1=last }, _frame_step>=1,_output_filename Apply a G'MIC command on all frames of the specified input video file, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension '.avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBaverage_files:\fR "filename_pattern",_first_frame>=0,_last_frame={ >=0 | -1=last },_frame_step>=1, _output_filename Average specified input image files, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension '.avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBaverage_video:\fR video_filename,_first_frame>=0,_last_frame={ >=0 | -1=last },_frame_step>=1, _output_filename Average frames of specified input video file, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension '.avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBfade_files:\fR "filename_pattern",_nb_inner_frames>0,_first_frame>=0,_last_frame={ >=0 | -1=last },_frame_step>=1,_output_filename Generate a temporal fading from specified input image files, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension 'avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'nb_inner_frames=10', 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBfade_video:\fR video_filename,_nb_inner_frames>0,_first_frame>=0,_last_frame={ >=0 | -1=last }, _frame_step>=1,_output_filename Create a temporal fading sequence from specified input video file, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. \fIDefault values:\fR 'nb_inner_frames=10', 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBfiles2video:\fR "filename_pattern",_output_filename,_fps>0,_codec Convert several files into a single video file. \fIDefault values:\fR 'output_filename=output.avi', 'fps=25' and 'codec=mp4v'. \fBmedian_files:\fR "filename_pattern",_first_frame>=0,_last_frame={ >=0 | -1=last },_frame_step>=1, _frame_rows[%]>=1,_is_fast_approximation={ 0 | 1 } Compute the median frame of specified input image files, in a streamed way. If a display window is opened, rendered frame is displayed in it during processing. \fIDefault values:\fR 'first_frame=0', 'last_frame=-1', 'frame_step=1', 'frame_rows=20%' and 'is_fast_approximation=0'. \fBmedian_video:\fR video_filename,_first_frame>=0,_last_frame={ >=0 | -1=last },_frame_step>=1, _frame_rows[%]>=1,_is_fast_approximation={ 0 | 1 } Compute the median of all frames of an input video file, in a streamed way. If a display window is opened, rendered frame is displayed in it during processing. \fIDefault values:\fR 'first_frame=0', 'last_frame=-1', 'frame_step=1', 'frame_rows=100%' and 'is_fast_approximation=1'. \fBmorph:\fR nb_inner_frames>=1,_smoothness>=0,_precision>=0 Create morphing sequence between selected images. \fIDefault values:\fR 'smoothness=0.1' and 'precision=4'. \fBmorph_files:\fR "filename_pattern",_nb_inner_frames>0,_smoothness>=0,_precision>=0, _first_frame>=0,_last_frame={ >=0 | -1=last },_frame_step>=1,_output_filename Generate a temporal morphing from specified input image files, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension '.avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'nb_inner_frames=10', 'smoothness=0.1', 'precision=4', 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBmorph_video:\fR video_filename,_nb_inner_frames>0,_smoothness>=0,_precision>=0,_first_frame>=0, _last_frame={ >=0 | -1=last },_frame_step>=1,_output_filename Generate a temporal morphing from specified input video file, in a streamed way. If a display window is opened, rendered frames are displayed in it during processing. The output filename may have extension '.avi' (saved as a video), or any other usual image file extension (saved as a sequence of images). \fIDefault values:\fR 'nb_inner_frames=10', 'smoothness=0.1', 'precision=4', 'first_frame=0', 'last_frame=-1', 'frame_step=1' and 'output_filename=(undefined)'. \fBregister_nonrigid:\fR [destination],_smoothness>=0,_precision>0,_nb_scale>=0 Register selected source images with specified destination image, using non-rigid warp. \fIDefault values:\fR 'smoothness=0.2', 'precision=6' and 'nb_scale=0(auto)'. \fBregister_rigid:\fR [destination],_smoothness>=0,_boundary_conditions={ 0=dirichlet | 1=neumann | 2=periodic | 3=mirror } Register selected source images with specified destination image, using rigid warp (shift). \fIDefault values:\fR 'smoothness=0.1%' and 'boundary_conditions=0'. \fBtransition:\fR [transition_shape],nb_added_frames>=0,100>=shading>=0,_single_frame_only={ -1=disabled | >=0 } Generate a transition sequence between selected images. \fIDefault values:\fR 'shading=0' and 'single_frame_only=-1'. \fBtransition3d:\fR _nb_frames>=2,_nb_xtiles>0,_nb_ytiles>0,_axis_x,_axis_y,_axis_z,_is_antialias={ 0 | 1 } Create 3D transition sequence between selected consecutive images. 'axis_x', 'axis_y' and 'axis_z' can be set as mathematical expressions, depending on 'x' and 'y'. \fIDefault values:\fR 'nb_frames=10', 'nb_xtiles=nb_ytiles=3', 'axis_x=1', 'axis_y=1', 'axis_z=0' and 'is_antialias=1'. \fBvideo2files:\fR input_filename,_output_filename,_first_frame>=0,_last_frame={ >=0 | -1=last }, _frame_step>=1 Split specified input video file into image files, one for each frame. First and last frames as well as step between frames can be specified. \fIDefault values:\fR 'output_filename=frame.png', 'first_frame=0', 'last_frame=-1' and 'frame_step=1'. ** \fINeural Networks:\fR \fBnn_new_input:\fR module_name,width,_height,_spectrum Add an input module with specified size to the neural network. nn_new_output : module_name,previous_module_name Add an output module to the neural network. \fBnn_new_fullyconnected:\fR module_name,previous_module_name,nb_neurons,activation_function Add a fully-connected module to the neural network. \fBnn_propagate_batch:\fR module_name,[inputs_zstacked] Batch propagate specified inputs through the neural network. Insert image of corresponding network outputs at the end of the list. \fBnn_propagate:\fR module_name Propagate input through the neural network. \fBnn_backpropagate_batch:\fR module_name,[inputs_zstacked],[expected_outputs_zstacked], _insert_network_outputs={ 0 | 1 },_loss_function Batch propagate and backpropagate inputs and errors in neural network. Optionnally insert image of corresponding network outputs at the end of the list. Return averaged loss. \fBnn_backpropagate:\fR module_name,[expected_output],_loss_function Propagate input, then back-propagate output error, through the neural network. This command set the network output. Return average loss. \fBnn_update:\fR module_name,epsilon Update neural network weights, after back-propagation of the error. \fBnn_output:\fR module_name,filename Output specified network as a file. \fBnn_serialize:\fR module_name,_is_compressed={ 0 | 1 } Serialize network into a single image, optionnally in a compressed form. \fBnn_unserialize:\fR Unserialize specified selection to retrieve a neural network. \fBnn_input:\fR "filename" Input neural network from file. ** \fIConvenience Functions:\fR \fBalert:\fR _title,_message,_label_button1,_label_button2,... Display an alert box and wait for user's choice. If a single image is in the selection, it is used as an icon for the alert box. \fIDefault values:\fR 'title=[G'MIC Alert]' and 'message=This is an alert box.'. \fBarg:\fR n>=1,_arg1,...,_argN Return the n-th argument of the specified argument list. \fBarg2var:\fR variable_name,argument_1,...,argument_N For each i in [1...N], set 'variable_name$i=argument_i'. The variable name should be global to make this command useful (i.e. starts by an underscore). \fBautocrop_coords:\fR value1,value2,... | auto Return coordinates (x0,y0,z0,x1,y1,z1) of the autocrop that could be performed on the latest of the selected images. \fIDefault value:\fR 'auto' \fBaverage_colors:\fR Return the average vector-value of the latest of the selected images. \fBbase642img:\fR "base64_string" Decode given base64-encoded string as a newly inserted image at the end of the list. The argument string must have been generated using command 'img2base64'. \fBbase642uchar:\fR "base64_string" Decode given base64-encoded string as a newly inserted 1-column image at the end of the list. The argument string must have been generated using command 'uchar2base64'. \fBbasename:\fR file_path,_variable_name_for_folder Return the basename of a file path, and opt. its folder location. When specified 'variable_name_for_folder' must starts by an underscore (global variable accessible from calling function). \fBbin:\fR binary_int1,... Print specified binary integers into their octal, decimal, hexadecimal and string representations. \fBbin2dec:\fR binary_int1,... Convert specified binary integers into their decimal representations. \fBcovariance_colors:\fR _avg_outvarname Return the covariance matrix of the vector-valued colors in the latest of the selected images (for arbitrary number of channels). Parameter 'avg_outvarname' is used as a variable name that takes the value of the average vector-value. \fBdec:\fR decimal_int1,... Print specified decimal integers into their binary, octal, hexadecimal and string representations. \fBdec2str:\fR decimal_int1,... Convert specifial decimal integers into its string representation. \fBdec2bin:\fR decimal_int1,... Convert specified decimal integers into their binary representations. \fBdec2hex:\fR decimal_int1,... Convert specified decimal integers into their hexadecimal representations. \fBdec2oct:\fR decimal_int1,... Convert specified decimal integers into their octal representations. \fBfact:\fR value Return the factorial of the specified value. \fBfibonacci:\fR N>=0 Return the Nth number of the Fibonacci sequence. \fBfile_mv:\fR filename_src,filename_dest Rename or move a file from a location $1 to another location $2. \fBfile_rand:\fR Return a random filename for storing temporary data. \fBfile_rm:\fR filename Delete a file. \fBfilename:\fR filename,_number1,_number2,...,_numberN Return a filename numbered with specified indices. \fBfiles (+):\fR _mode,path Return the list of files and/or subfolders from specified path. 'path' can be eventually a matching pattern. 'mode' can be { 0=files only | 1=folders only | 2=files + folders }. Add '3' to 'mode' to return full paths instead of filenames only. \fIDefault value:\fR 'mode=5'. \fBfitratio_wh:\fR min_width,min_height,ratio_wh Return a 2D size 'width,height' which is bigger than 'min_width,min_height' and has the specified w/h ratio. \fBfitscreen:\fR width,height,_depth,_minimal_size[%],_maximal_size[%] | [image],_minimal_size[%],_maximal_size[%] Return the 'ideal' size WxH for a window intended to display an image of specified size on screen. \fIDefault values:\fR 'depth=1', 'minimal_size=128' and 'maximal_size=85%'. \fBfontchart:\fR Insert G'MIC font chart at the end of the image list. \fBfps:\fR Return the number of time this function is called per second, or -1 if this info is not yet available. Useful to display the framerate when displaying animations. \fBgcd:\fR a,b Return the GCD (greatest common divisor) between a and b. \fBhex:\fR hexadecimal_int1,... Print specified hexadecimal integers into their binary, octal, decimal and string representations. \fBhex2dec:\fR hexadecimal_int1,... Convert specified hexadecimal integers into their decimal representations. \fBhex2img:\fR "hexadecimal_string" Insert new image 1xN at the end of the list with values specified by the given hexadecimal-encoded string. \fBhex2str:\fR hexadecimal_string Convert specified hexadecimal string into a string. \fBimg2base64:\fR _encoding={ 0=base64 | 1=base64url },_store_names={ 0 | 1 } Encode selected images as a base64-encoded string. The images can be then decoded using command 'base642img'. \fIDefault values:\fR 'encoding=0'. \fBimg2hex:\fR Return representation of last image as an hexadecimal-encoded string. Input image must have values that are integers in [0,255]. \fBimg2str:\fR Return the content of the latest of the selected images as a special G'MIC input string. \fBimg2text:\fR _line_separator Return text contained in a multi-line image. \fIDefault value:\fR 'line_separator= '. \fBimg82hex:\fR Convert selected 8bits-valued vectors into their hexadecimal representations (ascii-encoded). \fBhex2img8:\fR Convert selected hexadecimal representations (ascii-encoded) into 8bits-valued vectors. \fBis_3d:\fR Return 1 if all of the selected images are 3D objects, 0 otherwise. \fBis_change:\fR _value={ 0=false | 1=true } Set or unset the 'is_change' flag associated to the image list. This flag tells the interpreter whether or not the image list should be displayed when the pipeline ends. \fIDefault value:\fR 'value=1'. \fBis_half:\fR Return 1 if the type of image pixels is limited to half-float. \fBis_ext:\fR filename,_extension Return 1 if specified filename has a given extensioin. \fBis_image_arg:\fR string Return 1 if specified string looks like '[ind]'. \fBis_pattern:\fR string Return 1 if specified string looks like a drawing pattern '0x......'. \fBis_percent:\fR string Return 1 if specified string ends with a '%', 0 otherwise. \fBis_variable_name:\fR "str" \fBReturns 1 if specified argument can be considered as a variable name, 0 otherwise.:\fR \fBis_videofilename:\fR Return 1 if extension of specified filename is typical from video files. \fBis_windows:\fR Return 1 if current computer OS is Windows, 0 otherwise. \fBmath_lib:\fR Return string that defines a set of several useful macros for the embedded math evaluator. \fBmad:\fR Return the MAD (Maximum Absolute Deviation) of the last selected image. The MAD is defined as MAD = med_i|x_i-med_j(x_j)| \fBmax_w:\fR Return the maximal width between selected images. \fBmax_h:\fR Return the maximal height between selected images. \fBmax_d:\fR Return the maximal depth between selected images. \fBmax_s:\fR Return the maximal spectrum between selected images. \fBmax_wh:\fR Return the maximal wxh size of selected images. \fBmax_whd:\fR Return the maximal wxhxd size of selected images. \fBmax_whds:\fR Return the maximal wxhxdxs size of selected images. \fBmedian_color:\fR Return the median color value of the last selected image. \fBmin_w:\fR Return the minimal width between selected images. \fBmin_h:\fR Return the minimal height between selected images. \fBmin_d:\fR Return the minimal depth between selected images. \fBmin_s:\fR Return the minimal s size of selected images. \fBmin_wh:\fR Return the minimal wxh size of selected images. \fBmin_whd:\fR Return the minimal wxhxd size of selected images. \fBmin_whds:\fR Return the minimal wxhxdxs size of selected images. \fBnamed (+):\fR _mode,"name1","name2",... Return the set of indices corresponding to images of the selection with specified names. After this command returns, the status contains a list of indices (unsigned integers), separated by commas (or an empty string if no images with those names have been found). (eq. to 'nmd'). 'mode' can be { 0=all indices (default) | 1=lowest index | 2=highest index | 3 = all indices (case insensitive) | 4 = lowest index (case insensitive) | 5 = highest index (case insensitive)} \fBnormalize_filename:\fR filename Return a "normalized" version of the specified filename, without spaces and capital letters. \fBoct:\fR octal_int1,... Print specified octal integers into their binary, decimal, hexadecimal and string representations. \fBoct2dec:\fR octal_int1,... Convert specified octal integers into their decimal representations. \fBpadint:\fR number,_size>0 Return a integer with 'size' digits (eventually left-padded with '0'). \fBpath_cache:\fR Return a path to store G'MIC data files for one user (whose value is OS-dependent). \fBpath_gimp:\fR Return a path to store GIMP configuration files for one user (whose value is OS-dependent). \fBpath_tmp:\fR Return a path to store temporary files (whose value is OS-dependent). \fBremove_copymark:\fR "image_name" Remove copy mark from names of selected images. \fBreset:\fR Reset global parameters of the interpreter environment. \fBRGB:\fR Return a random int-valued RGB color. \fBRGBA:\fR Return a random int-valued RGBA color. \fBstd_noise:\fR Return the estimated noise standard deviation of the last selected image. \fBstr:\fR string Print specified string into its binary, octal, decimal and hexadecimal representations. \fBstr2hex:\fR string Convert specified string into a sequence of hexadecimal values. \fBstrcapitalize:\fR string Capitalize specified string. \fBstrcontains:\fR string1,string2 Return 1 if the first string contains the second one. \fBstrlen:\fR string1 Return the length of specified string argument. \fBstrreplace:\fR string,search,replace Search and replace substrings in an input string. \fBstrlowercase:\fR string Return a lower-case version of the specified string. \fBstruppercase:\fR string Return an upper-case version of the specified string. \fBstrvar:\fR string Return a simplified version of the specified string, that can be used as a variable name. \fBstrver:\fR _version Return the specified version number of the G'MIC interpreter, as a string. \fIDefault value:\fR 'version=$_version'. \fBtic:\fR Initialize tic-toc timer. Use it in conjunction with 'toc'. \fBtoc:\fR Display elapsed time of the tic-toc timer since the last call to 'tic'. This command returns the elapsed time in the status value. Use it in conjunction with 'tic'. \fBto_clutname:\fR "string" Return simplified name that can be used as a CLUT name, from specified input string. \fBuchar2base64:\fR _encoding={ 0=base64 | 1=base64url } Encode the values of the latest of the selected images as a base64-encoded string. The string can be decoded using command 'base642uchar'. Selected images must have values that are integers in [0,255]. \fIDefault values:\fR 'encoding=0'. ** \fIOther Interactive Commands:\fR \fBdemo:\fR _run_in_parallel={ 0=no | 1=yes | 2=auto } Show a menu to select and view all G'MIC interactive demos. \fBx_2048:\fR Launch the 2048 game. \fBx_blobs:\fR Launch the blobs editor. \fBx_bouncing:\fR Launch the bouncing balls demo. \fBx_color_curves:\fR _colorspace={ rgb | cmy | cmyk | hsi | hsl | hsv | lab | lch | ycbcr | last } Apply color curves on selected RGB[A] images, using an interactive window. Set 'colorspace' to 'last' to apply last defined color curves without opening interactive windows. \fIDefault value:\fR 'colorspace=rgb'. \fBx_colorize:\fR _is_lineart={ 0 | 1 },_max_resolution={ 0 | >=128 },_multichannels_output={ 0 | 1 },_[palette1],_[palette2],_[grabber1] Colorized selected B&W images, using an interactive window. When >0, argument 'max_resolution' defines the maximal image resolution used in the interactive window. \fIDefault values:\fR 'is_lineart=1', 'max_resolution=1024' and 'multichannels_output=0'. \fBx_connect4:\fR Launch the Connect Four game. \fBx_crop:\fR Crop selected images interactively. (eq. to 'xz'). \fBx_cut:\fR Cut selected images interactively. \fBx_fire:\fR Launch the fire effect demo. \fBx_fireworks:\fR Launch the fireworks demo. \fBx_fisheye:\fR Launch the fish-eye effect demo. \fBx_fourier:\fR Launch the fourier filtering demo. \fBx_grab_color:\fR _variable_name Open a color grabber widget from the first selected image. Argument 'variable_name' specifies the variable that contains the selected color values at any time. Assigning '-1' to it forces the interactive window to close. \fIDefault values:\fR 'variable_name=xgc_variable'. \fBx_hanoi:\fR Launch the Tower of Hanoi game. \fBx_histogram:\fR Launch the histogram demo. \fBx_hough:\fR Launch the hough transform demo. \fBx_jawbreaker:\fR 0<_width<20,0<_height<20,0<_balls<=8 Launch the Jawbreaker game. \fBx_landscape:\fR Launch the virtual landscape demo. \fBx_life:\fR Launch the game of life. \fBx_light:\fR Launch the light effect demo. \fBx_mandelbrot:\fR _julia={ 0 | 1 },_c0r,_c0i Launch Mandelbrot/Julia explorer. \fBx_mask_color:\fR _colorspace={ all | rgb | lrgb | ycbcr | lab | lch | hsv | hsi | hsl | cmy | cmyk | yiq },_spatial_tolerance>=0,_color_tolerance>=0 Interactively select a color, and add an alpha channel containing the corresponding color mask. Argument 'colorspace' refers to the color metric used to compute color similarities, and can be basically one of { rgb | lrgb | ycbcr | lab | lch | hsv | hsi | hsl | cmy | cmyk | yiq }. You can also select one one particular channel of this colorspace, by setting 'colorspace' as 'colorspace_channel' (e.g. 'hsv_h' for the hue). \fIDefault values:\fR 'colorspace=all', 'spatial_tolerance=5' and 'color_tolerance=5'. \fBx_metaballs3d:\fR Launch the 3D metaballs demo. \fBx_minesweeper:\fR 8<=_width=<20,8<=_height<=20 Launch the Minesweeper game. \fBx_minimal_path:\fR Launch the minimal path demo. \fBx_morph:\fR _nb_frames>=2,_preview_fidelity={ 0=coarsest | 1=coarse | 2=normal | 3=fine | 4=finest } Launch the interactive image morpher. \fIDefault values:\fR 'nb_frames=16' and 'preview_fidelity=3'. \fBx_pacman:\fR Launch pacman game. \fBx_paint:\fR Launch the interactive painter. \fBx_plasma:\fR Launch the plasma effect demo. \fBx_quantize_rgb:\fR _nbcolors>=2 Launch the RGB color quantization demo. \fBx_reflection3d:\fR Launch the 3D reflection demo. \fBx_rubber3d:\fR Launch the 3D rubber object demo. \fBx_segment:\fR _max_resolution={ 0 | >=128 } Segment foreground from background in selected opaque RGB images, interactively. Return RGBA images with binary alpha-channels. \fIDefault value:\fR 'max_resolution=1024'. \fBx_select_color:\fR _variable_name Display a RGB or RGBA color selector. Argument 'variable_name' specifies the variable that contains the selected color values (as R,G,B,[A]) at any time. Its value specifies the initial selected color. Assigning '-1' to it forces the interactive window to close. \fIDefault value:\fR 'variable_name=xsc_variable'. \fBx_select_function1d:\fR _variable_name,_background_curve_R,_background_curve_G,_background_curve_B Open an interactive window, where the user can defined its own 1D function. If an image is selected, it is used to display additional information : - The first row defines the values of a background curve displayed on the window (e.g. an histogram). - The 2nd, 3rd and 4th rows define the R,G,B color components displayed beside the X and Y axes. Argument 'variable_name' specifies the variable that contains the selected function keypoints at any time. Assigning '-1' to it forces the interactive window to close. \fIDefault values:\fR 'variable_name=xsf_variable', 'background_curve_R=220', 'background_curve_G=background_curve_B=background_curve_T'. \fBx_select_palette:\fR _variable_name,_number_of_columns={ 0=auto | >0 } Open a RGB or RGBA color selector widget from a palette. The palette is given as a selected image. Argument 'variable_name' specifies the variable that contains the selected color values (as R,G,B,[A]) at any time. Assigning '-1' to it forces the interactive window to close. \fIDefault values:\fR 'variable_name=xsp_variable' and 'number_of_columns=2'. \fBx_shadebobs:\fR Launch the shade bobs demo. \fBx_spline:\fR Launch spline curve editor. \fBx_starfield3d:\fR Launch the 3D starfield demo. \fBx_tetris:\fR Launch tetris game. \fBx_threshold:\fR Threshold selected images interactively. \fBx_tictactoe:\fR Launch tic-tac-toe game. \fBx_warp:\fR _nb_keypoints_xgrid>=2,_nb_keypoints_ygrid>=2,_nb_keypoints_contours>=0, _preview_fidelity={ 0=coarsest | 1=coarse | 2=normal | 3=fine | 4=finest }, _[background_image],0<=_background_opacity<=1 Launch the interactive image warper. \fIDefault values:\fR 'nb_keypoints_xgrid=nb_keypoints_ygrid=2', 'nb_keypoints_contours=0' and 'preview_fidelity=1'. \fBx_waves:\fR Launch the image waves demo. \fBx_whirl:\fR _opacity>=0 Launch the fractal whirls demo. \fIDefault values:\fR 'opacity=0.2'. ** \fIFunny One-Liners:\fR \fBoneliner_sierpinski_carpet:\fR Draw a sierpinski carpet. \fBoneliner_sierpinski_triangle:\fR Draw a sierpinski triangle. \fBoneliner_lightspeed:\fR A colorful lightspeed travel effect. \fB**** Command shortcuts:\fR \fB!= (+):\fR eq. to 'neq\fR'. \fB% (+):\fR eq. to 'mod\fR'. \fB& (+):\fR eq. to 'and\fR'. \fB* (+):\fR eq. to 'mul\fR'. \fB*3d (+):\fR eq. to 'mul3d\fR'. \fB+ (+):\fR eq. to 'add\fR'. \fB+3d (+):\fR eq. to 'add3d\fR'. \fB- (+):\fR eq. to 'sub\fR'. \fB-3d (+):\fR eq. to 'sub3d\fR'. \fB/ (+):\fR eq. to 'div\fR'. \fB/3d (+):\fR eq. to 'div3d\fR'. \fB< (+):\fR eq. to 'lt\fR'. \fB<< (+):\fR eq. to 'bsl\fR'. \fB<= (+):\fR eq. to 'le\fR'. \fB= (+):\fR eq. to 'set\fR'. \fB== (+):\fR eq. to 'eq\fR'. \fB> (+):\fR eq. to 'gt\fR'. \fB>= (+):\fR eq. to 'ge\fR'. \fB>> (+):\fR eq. to 'bsr\fR'. \fB^ (+):\fR eq. to 'pow\fR'. \fBa (+):\fR eq. to 'append\fR'. \fBac :\fR eq. to 'apply_channels\fR'. \fBap :\fR eq. to 'apply_parallel\fR'. \fBapc :\fR eq. to 'apply_parallel_channels\fR'. \fBapo :\fR eq. to 'apply_parallel_overlap\fR'. \fBat :\fR eq. to 'apply_tiles\fR'. \fBb (+):\fR eq. to 'blur\fR'. \fBc (+):\fR eq. to 'cut\fR'. \fBc3d :\fR eq. to 'center3d\fR'. \fBcol3d (+):\fR eq. to 'color3d\fR'. \fBd (+):\fR eq. to 'display\fR'. \fBd0 :\fR eq. to 'display0\fR'. \fBd2d :\fR eq. to 'display2d\fR'. \fBd3d (+):\fR eq. to 'display3d\fR'. \fBda :\fR eq. to 'display_array\fR'. \fBdb3d (+):\fR eq. to 'double3d\fR'. \fBdfft :\fR eq. to 'display_fft\fR'. \fBdg :\fR eq. to 'display_graph\fR'. \fBdh :\fR eq. to 'display_histogram\fR'. \fBdp :\fR eq. to 'display_parallel\fR'. \fBdp0 :\fR eq. to 'display_parallel0\fR'. \fBdq :\fR eq. to 'display_quiver\fR'. \fBdrgba :\fR eq. to 'display_rgba\fR'. \fBdt :\fR eq. to 'display_tensors\fR'. \fBdw :\fR eq. to 'display_warp\fR'. \fBe (+):\fR eq. to 'echo\fR'. \fBendl (+):\fR eq. to 'endlocal\fR'. \fBf (+):\fR eq. to 'fill\fR'. \fBf3d (+):\fR eq. to 'focale3d\fR'. \fBfc :\fR eq. to 'fill_color\fR'. \fBfi (+):\fR eq. to 'endif\fR'. \fBframe :\fR eq. to 'frame_xy\fR'. \fBg (+):\fR eq. to 'gradient\fR'. \fBh :\fR eq. to 'help\fR'. \fBi (+):\fR eq. to 'input\fR'. \fBig :\fR eq. to 'input_glob\fR'. \fBir :\fR eq. to 'inrange\fR'. \fBit :\fR eq. to 'input_text\fR'. \fBj (+):\fR eq. to 'image\fR'. \fBj3d (+):\fR eq. to 'object3d\fR'. \fBk (+):\fR eq. to 'keep\fR'. \fBl (+):\fR eq. to 'local\fR'. \fBl3d (+):\fR eq. to 'light3d\fR'. \fBm (+):\fR eq. to 'command\fR'. \fBm* (+):\fR eq. to 'mmul\fR'. \fBm/ (+):\fR eq. to 'mdiv\fR'. \fBm3d (+):\fR eq. to 'mode3d\fR'. \fBmd3d (+):\fR eq. to 'moded3d\fR'. \fBmv (+):\fR eq. to 'move\fR'. \fBn (+):\fR eq. to 'normalize\fR'. \fBn3d :\fR eq. to 'normalize3d\fR'. \fBnm (+):\fR eq. to 'name\fR'. \fBnmd (+):\fR eq. to 'named\fR'. \fBo (+):\fR eq. to 'output\fR'. \fBo3d (+):\fR eq. to 'opacity3d\fR'. \fBon :\fR eq. to 'outputn\fR'. \fBop :\fR eq. to 'outputp\fR'. \fBot :\fR eq. to 'output_text\fR'. \fBow :\fR eq. to 'outputw\fR'. \fBox :\fR eq. to 'outputx\fR'. \fBp (+):\fR eq. to 'print\fR'. \fBp3d :\fR eq. to 'primitives3d\fR'. \fBq (+):\fR eq. to 'quit\fR'. \fBr (+):\fR eq. to 'resize\fR'. \fBr2dx :\fR eq. to 'resize2dx\fR'. \fBr2dy :\fR eq. to 'resize2dy\fR'. \fBr3d (+):\fR eq. to 'rotate3d\fR'. \fBr3dx :\fR eq. to 'resize3dx\fR'. \fBr3dy :\fR eq. to 'resize3dy\fR'. \fBr3dz :\fR eq. to 'resize3dz\fR'. \fBrm (+):\fR eq. to 'remove\fR'. \fBrr2d :\fR eq. to 'resize_ratio2d\fR'. \fBrv (+):\fR eq. to 'reverse\fR'. \fBrv3d (+):\fR eq. to 'reverse3d\fR'. \fBs (+):\fR eq. to 'split\fR'. \fBs3d (+):\fR eq. to 'split3d\fR'. \fBsh (+):\fR eq. to 'shared\fR'. \fBsl3d (+):\fR eq. to 'specl3d\fR'. \fBsp :\fR eq. to 'sample\fR'. \fBss3d (+):\fR eq. to 'specs3d\fR'. \fBt (+):\fR eq. to 'text\fR'. \fBt3d :\fR eq. to 'texturize3d\fR'. \fBto :\fR eq. to 'text_outline\fR'. \fBu (+):\fR eq. to 'status\fR'. \fBup :\fR eq. to 'update\fR'. \fBv (+):\fR eq. to 'verbose\fR'. \fBw (+):\fR eq. to 'window\fR'. \fBx (+):\fR eq. to 'exec\fR'. \fBxz :\fR eq. to 'x_crop\fR'. \fBy (+):\fR eq. to 'unroll\fR'. \fBz (+):\fR eq. to 'crop\fR'. \fB| (+):\fR eq. to 'or\fR'. \fB[ Total number of commands: 1035 ]\fR \fI13. Examples of Use\fR 'gmic\fR' is a generic image processing tool which can be used in a wide variety of situations. The few examples below illustrate possible uses of this tool: - View a list of images: \fBgmic file1.bmp file2.jpeg\fR - Convert an image file: \fBgmic input.bmp output output.jpg\fR - Create a volumetric image from a movie sequence: \fBgmic input.mpg append z output output.hdr\fR - Compute image gradient norm: \fBgmic input.bmp gradient_norm\fR - Denoise a color image: \fBgmic image.jpg denoise 30,10 output denoised.jpg\fR - Compose two images using overlay layer blending: \fBgmic image1.jpg image2.jpg blend overlay output blended.jpg\fR - Evaluate a mathematical expression: \fBgmic echo "cos(pi/4)^2+sin(pi/4)^2={cos(pi/4)^2+sin(pi/4)^2}"\fR - Plot a 2D function: \fBgmic 1000,1,1,2 fill "X=3*(x-500)/500;X^2*sin(3*X^2)+if(c==0,u(0,-1),cos(X*10))" plot\fR - Plot a 3D elevated function in random colors: \fBgmic 128,128,1,3,"u(0,255)" plasma 10,3 blur 4 sharpen 10000 \\ elevation3d[-1] "'X=(x-64)/6;Y=(y-64)/6;100*exp(-(X^2+Y^2)/30)*abs(cos(X)*sin(Y))'"\fR - Plot the isosurface of a 3D volume: \fBgmic mode3d 5 moded3d 5 double3d 0 isosurface3d "'x^2+y^2+abs(z)^abs(4*cos(x*y*z*3))'",3\fR - Render a G'MIC\fR 3D logo: \fBgmic 0 text G\\'MIC,0,0,53,1,1,1,1 expand_xy 10,0 blur 1 normalize 0,100 +plasma 0.4 add \\ blur 1 elevation3d -0.1 moded3d 4\fR - Generate a 3D ring of torii: \fBgmic repeat 20 torus3d 15,2 color3d[-1] "{u(60,255)},{u(60,255)},{u(60,255)}" \\ *3d[-1] 0.5,1 if "{$>%2}" rotate3d[-1] 0,1,0,90 fi add3d[-1] 70 add3d \\ rotate3d 0,0,1,18 done moded3d 3 mode3d 5 double3d 0\fR - Create a vase from a 3D isosurface: \fBgmic moded3d 4 isosurface3d "'x^2+2*abs(y/2)*sin(2*y)^2+z^2-3',0" sphere3d 1.5 \\ sub3d[-1] 0,5 plane3d 15,15 rotate3d[-1] 1,0,0,90 center3d[-1] add3d[-1] 0,3.2 \\ color3d[-1] 180,150,255 color3d[-2] 128,255,0 color3d[-3] 255,128,0 add3d\fR - Display filtered webcam stream: \fBgmic apply_camera \\"+mirror x +mirror y add div 4\\"\fR - Launch a set of G'MIC\fR interactive demos: \fBgmic demo\fR \fB** G'MIC comes with ABSOLUTELY NO WARRANTY; for details visit: https://gmic.eu **\fR [100%] Built target man --- CMakeFiles/bashcompletion.dir/all --- coms=" debug h help version camera clut m command cursor d display d0 display0 d2d display2d d3d display3d da display_array dfft display_fft dg display_graph dh display_histogram display_parametric dp display_parallel dp0 display_parallel0 display_polar dq display_quiver drgba display_rgba dt display_tensors dw display_warp document_gmic e echo echo_file echo_stdout function1d i input input_cube input_flo ig input_glob input_gpl it input_text network o output output_cube output_flo output_ggr ot output_text on outputn op outputp ow outputw ox outputx pass plot p print screen select serialize shape_circle shape_cupid shape_diamond shape_dragon shape_fern shape_gear shape_heart shape_polygon shape_snowflake shape_star sh shared sp sample srand store testimage2d uncommand uniform_distribution unserialize up update parse_gui v verbose wait warn w window k keep mv move nm name rm remove remove_duplicates remove_empty rv reverse sort_list sort_str abs acos acosh + add & and argmax argmaxabs argmin argminabs asin asinh atan atan2 atanh << bsl >> bsr cos cosh / div div_complex == eq exp >= ge > gt <= le < lt log log10 log2 max maxabs m/ mdiv med min minabs % mod m* mmul * mul mul_channels mul_complex != neq | or ^ pow rol ror sign sin sinc sinh sqr sqrt - sub tan tanh xor apply_curve apply_gamma balance_gamma cast complex2polar compress_clut compress_rle cumulate c cut decompress_clut decompress_clut_rbf decompress_clut_pde decompress_rle discard eigen2tensor endian equalize f fill index ir inrange map mix_channels negate noise noise_perlin noise_poissondisk normp norm n normalize normalize_sum not orientation oneminus otsu polar2complex quantize quantize_area rand replace replace_inf replace_nan replace_seq replace_str round roundify = set threshold unrepeat vector2tensor adjust_colors ac apply_channels autoindex bayer2rgb deltaE cmy2rgb cmyk2rgb colorblind colormap compose_channels direction2rgb ditheredbw fc fill_color gradient2rgb hcy2rgb hsi2rgb hsi82rgb hsl2rgb hsl82rgb hsv2rgb hsv82rgb int2rgb lab2lch lab2rgb lab2srgb lab82srgb lab2xyz lab82rgb lch2lab lch2rgb lch82rgb luminance lightness lut_contrast map_clut mix_rgb palette pseudogray replace_color retinex rgb2bayer rgb2cmy rgb2cmyk rgb2hcy rgb2hsi rgb2hsi8 rgb2hsl rgb2hsl8 rgb2hsv rgb2hsv8 rgb2int rgb2lab rgb2lab8 rgb2lch rgb2lch8 rgb2luv rgb2ryb rgb2srgb rgb2xyz rgb2xyz8 rgb2yiq rgb2yiq8 rgb2ycbcr rgb2yuv rgb2yuv8 remove_opacity ryb2rgb select_color sepia solarize split_colors split_opacity srgb2lab srgb2lab8 srgb2rgb to_a to_color to_colormode to_gray to_graya to_pseudogray to_rgb to_rgba transfer_histogram transfer_pca transfer_rgb xyz2lab xyz2rgb xyz82rgb ycbcr2rgb yiq2rgb yiq82rgb yuv2rgb yuv82rgb a append append_tiles apply_scales autocrop autocrop_components autocrop_seq channels columns z crop diagonal elevate expand_x expand_xy expand_xyz expand_y expand_z extract extract_region montage mirror permute r resize resize_mn resize_pow2 rr2d resize_ratio2d r2dx resize2dx r2dy resize2dy r3dx resize3dx r3dy resize3dy r3dz resize3dz rotate rotate_tileable rows scale2x scale3x scale_dcci2x seamcarve shift shrink_x shrink_xy shrink_xyz shrink_y shrink_z slices sort s split split_tiles undistort y unroll upscale_smart warp warp_patch bandpass bilateral b blur blur_angular blur_bloom blur_linear blur_radial blur_selective blur_x blur_xy blur_xyz blur_y blur_z boxfilter bump2normal compose_freq convolve convolve_fft correlate cross_correlation curvature dct deblur deblur_goldmeinel deblur_richardsonlucy deconvolve_fft deinterlace denoise denoise_haar denoise_patchpca deriche dilate dilate_circ dilate_oct dilate_threshold divergence dog diffusiontensors edges erode erode_circ erode_oct erode_threshold fft g gradient gradient_norm gradient_orientation guided haar heat_flow hessian idct iee ifft ihaar ilaplacian inn inpaint inpaint_pde inpaint_flow inpaint_holes inpaint_morpho inpaint_matchpatch kuwahara laplacian lic map_tones map_tones_fast meancurvature_flow median nlmeans nlmeans_core normalize_local normalized_cross_correlation peronamalik_flow phase_correlation pde_flow periodize_poisson red_eye remove_hotpixels remove_pixels rolling_guidance sharpen smooth split_freq solve_poisson split_details structuretensors solidify syntexturize syntexturize_matchpatch tv_flow unsharp unsharp_octave vanvliet voronoi watermark_fourier watershed area area_fg at_line at_quadrangle barycenter delaunay detect_skin displacement distance fftpolar histogram histogram_nd histogram_cumul histogram_pointwise hough ifftpolar isophotes label label_fg max_patch min_patch minimal_path mse patches matchpatch plot2value pointcloud psnr segment_watershed shape2bump skeleton slic ssd_patch thinning tones topographic_map tsp variance_patch arrow axes ball chessboard cie1931 circle close_binary ellipse flood gaussian graph grid j image line linethick mandelbrot marble maze maze_mask newton_fractal j3d object3d pack_sprites piechart plasma point polka_dots polygon quiver rectangle rorschach sierpinski spiralbw spline tetraedron_shade t text to text_outline triangle_shade truchet turbulence yinyang dijkstra eigen invert solve svd transpose trisolve +3d add3d animate3d apply_camera3d apply_matrix3d array3d arrow3d axes3d box3d c3d center3d circle3d circles3d col3d color3d colorcube3d cone3d cubes3d cup3d cylinder3d delaunay3d distribution3d /3d div3d db3d double3d elevation3d empty3d extrude3d f3d focale3d gaussians3d gmic3d gyroid3d histogram3d image6cube3d imageblocks3d imagecube3d imageplane3d imagepyramid3d imagerubik3d imagesphere3d isoline3d isosurface3d label3d label_points3d lathe3d l3d light3d line3d lissajous3d m3d mode3d md3d moded3d *3d mul3d n3d normalize3d o3d opacity3d parametric3d pca_patch3d plane3d point3d pointcloud3d pose3d p3d primitives3d projections3d pyramid3d quadrangle3d random3d rv3d reverse3d r3d rotate3d rotation3d sierpinski3d size3d skeleton3d snapshot3d sl3d specl3d ss3d specs3d sphere3d spherical3d spline3d s3d split3d sprite3d sprites3d star3d streamline3d -3d sub3d superformula3d tensors3d text_pointcloud3d text3d t3d texturize3d torus3d triangle3d volume3d weird3d ap apply_parallel apc apply_parallel_channels apo apply_parallel_overlap at apply_tiles apply_timeout check check3d check_display continue break do done elif else fi endif endl endlocal error eval x exec for if l local mutex noarg onfail parallel progress q quit repeat return rprogress run skip u status while array array_fade array_mirror array_random frame frame_blur frame_cube frame_fuzzy frame_painting frame_pattern frame_round frame_seamless frame_x frame_xy frame_xyz frame_y img2ascii imagegrid imagegrid_hexagonal imagegrid_triangular linearize_tiles map_sprites pack puzzle quadratize_tiles rotate_tiles shift_tiles taquin tunnel boxfitting brushify cartoon color_ellipses cubism draw_whirl drawing drop_shadow ellipsionism fire_edges fractalize glow halftone hardsketchbw hearts houghsketchbw lightrays light_relief linify mosaic old_photo pencilbw pixelsort polaroid polygonize poster_edges poster_hope rodilius sketchbw sponge stained_glass stars stencil stencilbw stylize tetris warhol weave whirls deform euclidean2polar equirectangular2nadirzenith fisheye flower kaleidoscope map_sphere nadirzenith2equirectangular polar2euclidean raindrops ripple rotoidoscope spherize symmetrize transform_polar twirl warp_perspective water wave wind zoom cracks light_patch noise_hurl pixelize scanlines shade_stripes shadow_patch spread stripes_y texturize_canvas texturize_paper vignette watermark_visible blend blend_edges blend_fade blend_median blend_seamless fade_diamond fade_linear fade_radial fade_x fade_y fade_z sub_alpha animate apply_camera apply_files apply_video average_files average_video fade_files fade_video files2video median_files median_video morph morph_files morph_video register_nonrigid register_rigid transition transition3d video2files nn_new_input nn_new_fullyconnected nn_propagate_batch nn_propagate nn_backpropagate_batch nn_backpropagate nn_update nn_output nn_serialize nn_unserialize nn_input alert arg arg2var autocrop_coords average_colors base642img base642uchar basename bin bin2dec covariance_colors dec dec2str dec2bin dec2hex dec2oct fact fibonacci file_mv file_rand file_rm filename files fitratio_wh fitscreen fontchart fps gcd hex hex2dec hex2img hex2str img2base64 img2hex img2str img2text img82hex hex2img8 is_3d is_change is_half is_ext is_image_arg is_pattern is_percent is_variable_name Returns 1 if specified argument can be considered as a variable name, 0 otherwise. is_videofilename is_windows math_lib mad max_w max_h max_d max_s max_wh max_whd max_whds median_color min_w min_h min_d min_s min_wh min_whd min_whds nmd named normalize_filename oct oct2dec padint path_cache path_gimp path_tmp remove_copymark reset RGB RGBA std_noise str str2hex strcapitalize strcontains strlen strreplace strlowercase struppercase strvar strver tic toc to_clutname uchar2base64 demo x_2048 x_blobs x_bouncing x_color_curves x_colorize x_connect4 xz x_crop x_cut x_fire x_fireworks x_fisheye x_fourier x_grab_color x_hanoi x_histogram x_hough x_jawbreaker x_landscape x_life x_light x_mandelbrot x_mask_color x_metaballs3d x_minesweeper x_minimal_path x_morph x_pacman x_paint x_plasma x_quantize_rgb x_reflection3d x_rubber3d x_segment x_select_color x_select_function1d x_select_palette x_shadebobs x_spline x_starfield3d x_tetris x_threshold x_tictactoe x_warp x_waves x_whirl oneliner_sierpinski_carpet oneliner_sierpinski_triangle oneliner_lightspeed " opts=$(echo "$coms" | sed "s: \([^ ]\+\): \1 -\1 \+\1 --\1:g") case "${prev}" in "help" | "-help" | "--help" | "+help") COMPREPLY=( $(compgen -W "$coms" -- "$cur") ); return 0;; "camera" | "-camera" | "--camera" | "+camera") COMPREPLY=( $(compgen -W "_camera_index>=0,_nb_frames>0,_skip_frames>=0,_capture_width>=0,_capture_height>=0 >") ); return 0;; "clut" | "-clut" | "--clut" | "+clut") COMPREPLY=( $(compgen -W "\"clut_name\",_resolution>0,_cut_and_round={_0=no_|_1=yes_} >") ); return 0;; "command" | "-command" | "--command" | "+command") COMPREPLY=( $(compgen -W "_add_debug_info={_0_|_1_},{_filename_|_http[s]://URL_|_\"string\"_} >") ); return 0;; "cursor" | "-cursor" | "--cursor" | "+cursor") COMPREPLY=( $(compgen -W "_mode_=_{_0=hide_|_1=show_} >") ); return 0;; "display" | "-display" | "--display" | "+display") COMPREPLY=( $(compgen -W "_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={_0_|_1_} >") ); return 0;; "display3d" | "-display3d" | "--display3d" | "+display3d") COMPREPLY=( $(compgen -W "_[background_image],_exit_on_anykey={_0_|_1_} _exit_on_anykey={_0_|_1_}") ); return 0;; "display_array" | "-display_array" | "--display_array" | "+display_array") COMPREPLY=( $(compgen -W "_width>0,_height>0 >") ); return 0;; "display_graph" | "-display_graph" | "--display_graph" | "+display_graph") COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_xlabel,_ylabel >") ); return 0;; "display_histogram" | "-display_histogram" | "--display_histogram" | "+display_histogram") COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_clusters>0,_min_value[%],_max_value[%],_show_axes={_0_|_1_},_expression. >") ); return 0;; "display_parametric" | "-display_parametric" | "--display_parametric" | "+display_parametric") COMPREPLY=( $(compgen -W "_width>0,_height>0,_outline_opacity,_vertex_radius>=0,_is_antialiased={_0_|_1_},_is_decorated={_0_|_1_},_xlabel,_ylabel >") ); return 0;; "display_polar" | "-display_polar" | "--display_polar" | "+display_polar") COMPREPLY=( $(compgen -W "_width>32,_height>32,_outline_type,_fill_R,_fill_G,_fill_B,_theta_start,_theta_end,_xlabel,_ylabel >") ); return 0;; "display_quiver" | "-display_quiver" | "--display_quiver" | "+display_quiver") COMPREPLY=( $(compgen -W "_size_factor>0,_arrow_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_} >") ); return 0;; "display_rgba" | "-display_rgba" | "--display_rgba" | "+display_rgba") COMPREPLY=( $(compgen -W "_background_RGB_color >") ); return 0;; "display_tensors" | "-display_tensors" | "--display_tensors" | "+display_tensors") COMPREPLY=( $(compgen -W "_size_factor>0,_ellipse_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_},_outline>=0 >") ); return 0;; "display_warp" | "-display_warp" | "--display_warp" | "+display_warp") COMPREPLY=( $(compgen -W "_cell_size>0 >") ); return 0;; "document_gmic" | "-document_gmic" | "--document_gmic" | "+document_gmic") COMPREPLY=( $(compgen -W "_format={_ascii_|_bash_|_html_|_images_|_latex_},_image_path,_write_wrapper={_0_|_1_} >") ); return 0;; "echo" | "-echo" | "--echo" | "+echo") COMPREPLY=( $(compgen -W "message >") ); return 0;; "echo_file" | "-echo_file" | "--echo_file" | "+echo_file") COMPREPLY=( $(compgen -W "filename,message >") ); return 0;; "echo_stdout" | "-echo_stdout" | "--echo_stdout" | "+echo_stdout") COMPREPLY=( $(compgen -W "message >") ); return 0;; "function1d" | "-function1d" | "--function1d" | "+function1d") COMPREPLY=( $(compgen -W "0<=smoothness<=1,x0>=0,y0,x1>=0,y1,...,xn>=0,yn >") ); return 0;; "network" | "-network" | "--network" | "+network") COMPREPLY=( $(compgen -W "mode={_0=disabled_|_1=enabled_} >") ); return 0;; "pass" | "-pass" | "--pass" | "+pass") COMPREPLY=( $(compgen -W "_shared_state={_-1=status_only_|_0=non-shared_(copy)_|_1=shared_|_2=adaptive_} >") ); return 0;; "plot" | "-plot" | "--plot" | "+plot") COMPREPLY=( $(compgen -W "_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_exit_on_anykey={_0_|_1_} \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_exit_on_anykey={_0_|_1_}") ); return 0;; "screen" | "-screen" | "--screen" | "+screen") COMPREPLY=( $(compgen -W "_x0[%],_y0[%],_x1[%],_y1[%] >") ); return 0;; "select" | "-select" | "--select" | "+select") COMPREPLY=( $(compgen -W "feature_type,_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={_0_|_1_},_is_deep_selection={_0_|_1_} >") ); return 0;; "serialize" | "-serialize" | "--serialize" | "+serialize") COMPREPLY=( $(compgen -W "_datatype,_is_compressed={_0_|_1_},_store_names={_0_|_1_} >") ); return 0;; "shape_circle" | "-shape_circle" | "--shape_circle" | "+shape_circle") COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;; "shape_cupid" | "-shape_cupid" | "--shape_cupid" | "+shape_cupid") COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;; "shape_diamond" | "-shape_diamond" | "--shape_diamond" | "+shape_diamond") COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;; "shape_dragon" | "-shape_dragon" | "--shape_dragon" | "+shape_dragon") COMPREPLY=( $(compgen -W "_size>=0,_recursion_level>=0,_angle >") ); return 0;; "shape_fern" | "-shape_fern" | "--shape_fern" | "+shape_fern") COMPREPLY=( $(compgen -W "_size>=0,_density[%]>=0,_angle,0<=_opacity<=1,_type={_0=Asplenium_adiantum-nigrum_|_1=Thelypteridaceae_} >") ); return 0;; "shape_gear" | "-shape_gear" | "--shape_gear" | "+shape_gear") COMPREPLY=( $(compgen -W "_size>=0,_nb_teeth>0,0<=_height_teeth<=100,0<=_offset_teeth<=100,0<=_inner_radius<=100 >") ); return 0;; "shape_heart" | "-shape_heart" | "--shape_heart" | "+shape_heart") COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;; "shape_polygon" | "-shape_polygon" | "--shape_polygon" | "+shape_polygon") COMPREPLY=( $(compgen -W "_size>=0,_nb_vertices>=3,_angle >") ); return 0;; "shape_snowflake" | "-shape_snowflake" | "--shape_snowflake" | "+shape_snowflake") COMPREPLY=( $(compgen -W "size>=0,0<=_nb_recursions<=6 >") ); return 0;; "shape_star" | "-shape_star" | "--shape_star" | "+shape_star") COMPREPLY=( $(compgen -W "_size>=0,_nb_branches>0,0<=_thickness<=1 >") ); return 0;; "shared" | "-shared" | "--shared" | "+shared") COMPREPLY=( $(compgen -W "x0[%],x1[%],y[%],z[%],c[%] y0[%],y1[%],z[%],c[%] z0[%],z1[%],c[%] c0[%],c1[%] c0[%] (no_arg)") ); return 0;; "sample" | "-sample" | "--sample" | "+sample") COMPREPLY=( $(compgen -W "_name1={_?_|_apples_|_balloons_|_barbara_|_boats_|_bottles_|_butterfly_|_cameraman_|_car_|_cat_|_cliff_|_chick_|_colorful_|_david_|_dog_|_duck_|_eagle_|_elephant_|_earth_|_flower_|_fruits_|_gmicky_|_gmicky_mahvin_|_gmicky_wilber_|_greece_|_gummy_|_house_|_inside_|_landscape_|_leaf_|_lena_|_leno_|_lion_|_mandrill_|_monalisa_|_monkey_|_parrots_|_pencils_|_peppers_|_portrait0_|_portrait1_|_portrait2_|_portrait3_|_portrait4_|_portrait5_|_portrait6_|_portrait7_|_portrait8_|_portrait9_|_roddy_|_rooster_|_rose_|_square_|_swan_|_teddy_|_tiger_|_tulips_|_wall_|_waterfall_|_zelda_},_name2,...,_nameN,_width={_>=0_|_0_(auto)_},_height_=_{_>=0_|_0_(auto)_} (no_arg)") ); return 0;; "srand" | "-srand" | "--srand" | "+srand") COMPREPLY=( $(compgen -W "value (no_arg)") ); return 0;; "store" | "-store" | "--store" | "+store") COMPREPLY=( $(compgen -W "_is_compressed={_0_|_1_},variable_name1,_variable_name2,... >") ); return 0;; "testimage2d" | "-testimage2d" | "--testimage2d" | "+testimage2d") COMPREPLY=( $(compgen -W "_width>0,_height>0,_spectrum>0 >") ); return 0;; "uncommand" | "-uncommand" | "--uncommand" | "+uncommand") COMPREPLY=( $(compgen -W "command_name[,_command_name2,...] *") ); return 0;; "uniform_distribution" | "-uniform_distribution" | "--uniform_distribution" | "+uniform_distribution") COMPREPLY=( $(compgen -W "nb_levels>=1,spectrum>=1 >") ); return 0;; "parse_gui" | "-parse_gui" | "--parse_gui" | "+parse_gui") COMPREPLY=( $(compgen -W "_filter_name,_outputmode >") ); return 0;; "verbose" | "-verbose" | "--verbose" | "+verbose") COMPREPLY=( $(compgen -W "level {_+_|_-_}") ); return 0;; "wait" | "-wait" | "--wait" | "+wait") COMPREPLY=( $(compgen -W "delay (no_arg)") ); return 0;; "warn" | "-warn" | "--warn" | "+warn") COMPREPLY=( $(compgen -W "_force_visible={_0_|_1_},_message >") ); return 0;; "window" | "-window" | "--window" | "+window") COMPREPLY=( $(compgen -W "_width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_pos_x[%],_pos_y[%],_title >") ); return 0;; "move" | "-move" | "--move" | "+move") COMPREPLY=( $(compgen -W "position[%] >") ); return 0;; "name" | "-name" | "--name" | "+name") COMPREPLY=( $(compgen -W "\"name1\",\"name2\",... >") ); return 0;; "sort_list" | "-sort_list" | "--sort_list" | "+sort_list") COMPREPLY=( $(compgen -W "_ordering={_+_|_-_},_criterion >") ); return 0;; "add" | "-add" | "--add" | "+add") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "and" | "-and" | "--and" | "+and") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "atan2" | "-atan2" | "--atan2" | "+atan2") COMPREPLY=( $(compgen -W "[x_argument] >") ); return 0;; "bsl" | "-bsl" | "--bsl" | "+bsl") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "bsr" | "-bsr" | "--bsr" | "+bsr") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "div" | "-div" | "--div" | "+div") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "div_complex" | "-div_complex" | "--div_complex" | "+div_complex") COMPREPLY=( $(compgen -W "[divider_real,divider_imag],_epsilon>=0 >") ); return 0;; "eq" | "-eq" | "--eq" | "+eq") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "ge" | "-ge" | "--ge" | "+ge") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "gt" | "-gt" | "--gt" | "+gt") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "le" | "-le" | "--le" | "+le") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "lt" | "-lt" | "--lt" | "+lt") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "max" | "-max" | "--max" | "+max") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "maxabs" | "-maxabs" | "--maxabs" | "+maxabs") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "mdiv" | "-mdiv" | "--mdiv" | "+mdiv") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "min" | "-min" | "--min" | "+min") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "minabs" | "-minabs" | "--minabs" | "+minabs") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "mod" | "-mod" | "--mod" | "+mod") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "mmul" | "-mmul" | "--mmul" | "+mmul") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "mul" | "-mul" | "--mul" | "+mul") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "mul_channels" | "-mul_channels" | "--mul_channels" | "+mul_channels") COMPREPLY=( $(compgen -W "value1,_value2,...,_valueN >") ); return 0;; "mul_complex" | "-mul_complex" | "--mul_complex" | "+mul_complex") COMPREPLY=( $(compgen -W "[multiplier_real,multiplier_imag] >") ); return 0;; "neq" | "-neq" | "--neq" | "+neq") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "or" | "-or" | "--or" | "+or") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "pow" | "-pow" | "--pow" | "+pow") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "rol" | "-rol" | "--rol" | "+rol") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "ror" | "-ror" | "--ror" | "+ror") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "sub" | "-sub" | "--sub" | "+sub") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "xor" | "-xor" | "--xor" | "+xor") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "apply_curve" | "-apply_curve" | "--apply_curve" | "+apply_curve") COMPREPLY=( $(compgen -W "0<=smoothness<=1,x0,y0,x1,y1,x2,y2,...,xN,yN >") ); return 0;; "apply_gamma" | "-apply_gamma" | "--apply_gamma" | "+apply_gamma") COMPREPLY=( $(compgen -W "gamma>=0 >") ); return 0;; "balance_gamma" | "-balance_gamma" | "--balance_gamma" | "+balance_gamma") COMPREPLY=( $(compgen -W "_ref_color1,... >") ); return 0;; "cast" | "-cast" | "--cast" | "+cast") COMPREPLY=( $(compgen -W "datatype_source,datatype_target >") ); return 0;; "compress_clut" | "-compress_clut" | "--compress_clut" | "+compress_clut") COMPREPLY=( $(compgen -W "_max_error>0,_avg_error>0,_max_nbpoints>=8,_error_metric={_0=L2-norm_|_1=deltaE_1976_|_2=deltaE_2000_},_reconstruction_colorspace={_0=srgb_|_1=rgb_|_2=lab_},_try_rbf_first={_0_|_1_} >") ); return 0;; "compress_rle" | "-compress_rle" | "--compress_rle" | "+compress_rle") COMPREPLY=( $(compgen -W "_is_binary_data={_0_|_1_},_maximum_sequence_length>=0 >") ); return 0;; "cumulate" | "-cumulate" | "--cumulate" | "+cumulate") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_} (no_arg)") ); return 0;; "cut" | "-cut" | "--cut" | "+cut") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_} [image]") ); return 0;; "decompress_clut" | "-decompress_clut" | "--decompress_clut" | "+decompress_clut") COMPREPLY=( $(compgen -W "_width>0,_height>0,_depth>0,_reconstruction_colorspace={_0=srgb_|_1=rgb_|_2=lab_} >") ); return 0;; "decompress_clut_rbf" | "-decompress_clut_rbf" | "--decompress_clut_rbf" | "+decompress_clut_rbf") COMPREPLY=( $(compgen -W "_width>0,_height>0,_depth>0,_reconstruction_colorspace={_0=srgb_|_1=rgb_|_2=lab_} >") ); return 0;; "decompress_clut_pde" | "-decompress_clut_pde" | "--decompress_clut_pde" | "+decompress_clut_pde") COMPREPLY=( $(compgen -W "_width>0,_height>0,_depth>0,_reconstruction_colorspace={_0=srgb_|_1=rgb_|_2=lab_} >") ); return 0;; "discard" | "-discard" | "--discard" | "+discard") COMPREPLY=( $(compgen -W "_value1,_value2,... {_x_|_y_|_z_|_c}...{_x_|_y_|_z_|_c},_value1,_value2,... (no_arg)") ); return 0;; "endian" | "-endian" | "--endian" | "+endian") COMPREPLY=( $(compgen -W "_datatype >") ); return 0;; "equalize" | "-equalize" | "--equalize" | "+equalize") COMPREPLY=( $(compgen -W "_nb_levels>0[%],_value_min[%],_value_max[%] >") ); return 0;; "fill" | "-fill" | "--fill" | "+fill") COMPREPLY=( $(compgen -W "value1,_value2,... [image] \'formula\'") ); return 0;; "index" | "-index" | "--index" | "+index") COMPREPLY=( $(compgen -W "{_[palette]_|_palette_name_},0<=_dithering<=1,_map_palette={_0_|_1_} >") ); return 0;; "inrange" | "-inrange" | "--inrange" | "+inrange") COMPREPLY=( $(compgen -W "min[%],max[%],_include_boundaries={_0=no_|_1=yes_} >") ); return 0;; "map" | "-map" | "--map" | "+map") COMPREPLY=( $(compgen -W "[palette],_boundary_conditions palette_name,_boundary_conditions") ); return 0;; "mix_channels" | "-mix_channels" | "--mix_channels" | "+mix_channels") COMPREPLY=( $(compgen -W "(a00,...,aMN) [matrix]") ); return 0;; "negate" | "-negate" | "--negate" | "+negate") COMPREPLY=( $(compgen -W "base_value (no_arg)") ); return 0;; "noise" | "-noise" | "--noise" | "+noise") COMPREPLY=( $(compgen -W "std_deviation>=0[%],_noise_type >") ); return 0;; "noise_perlin" | "-noise_perlin" | "--noise_perlin" | "+noise_perlin") COMPREPLY=( $(compgen -W "_scale_x[%]>0,_scale_y[%]>0,_scale_z[%]>0,_seed_x,_seed_y,_seed_z >") ); return 0;; "noise_poissondisk" | "-noise_poissondisk" | "--noise_poissondisk" | "+noise_poissondisk") COMPREPLY=( $(compgen -W "_radius[%]>0,_max_sample_attempts>0 >") ); return 0;; "normp" | "-normp" | "--normp" | "+normp") COMPREPLY=( $(compgen -W "p>=0 >") ); return 0;; "normalize" | "-normalize" | "--normalize" | "+normalize") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_},_constant_case_ratio [image]") ); return 0;; "otsu" | "-otsu" | "--otsu" | "+otsu") COMPREPLY=( $(compgen -W "_nb_levels>0 >") ); return 0;; "quantize" | "-quantize" | "--quantize" | "+quantize") COMPREPLY=( $(compgen -W "nb_levels>=1,_keep_values={_0_|_1_},_quantization_type={_-1=median-cut_|_0=k-means_|_1=uniform_} >") ); return 0;; "quantize_area" | "-quantize_area" | "--quantize_area" | "+quantize_area") COMPREPLY=( $(compgen -W "_min_area>0 >") ); return 0;; "rand" | "-rand" | "--rand" | "+rand") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},_{_value1[%]_|_[image1]_} [image]") ); return 0;; "replace" | "-replace" | "--replace" | "+replace") COMPREPLY=( $(compgen -W "source,target >") ); return 0;; "replace_inf" | "-replace_inf" | "--replace_inf" | "+replace_inf") COMPREPLY=( $(compgen -W "_expression >") ); return 0;; "replace_nan" | "-replace_nan" | "--replace_nan" | "+replace_nan") COMPREPLY=( $(compgen -W "_expression >") ); return 0;; "replace_seq" | "-replace_seq" | "--replace_seq" | "+replace_seq") COMPREPLY=( $(compgen -W "\"search_seq\",\"replace_seq\" >") ); return 0;; "replace_str" | "-replace_str" | "--replace_str" | "+replace_str") COMPREPLY=( $(compgen -W "\"search_str\",\"replace_str\" >") ); return 0;; "round" | "-round" | "--round" | "+round") COMPREPLY=( $(compgen -W "rounding_value>=0,_rounding_type (no_arg)") ); return 0;; "roundify" | "-roundify" | "--roundify" | "+roundify") COMPREPLY=( $(compgen -W "gamma>=0 >") ); return 0;; "set" | "-set" | "--set" | "+set") COMPREPLY=( $(compgen -W "value,_x[%],_y[%],_z[%],_c[%] >") ); return 0;; "threshold" | "-threshold" | "--threshold" | "+threshold") COMPREPLY=( $(compgen -W "value[%],_is_soft={_0_|_1_}_: >") ); return 0;; "adjust_colors" | "-adjust_colors" | "--adjust_colors" | "+adjust_colors") COMPREPLY=( $(compgen -W "-100<=_brightness<=100,-100<=_contrast<=100,-100<=_gamma<=100,-100<=_hue_shift<=100,-100<=_saturation<=100,_value_min,_value_max >") ); return 0;; "apply_channels" | "-apply_channels" | "--apply_channels" | "+apply_channels") COMPREPLY=( $(compgen -W "\"command\",color_channels,_value_action={_0=none_|_1=cut_|_2=normalize_} >") ); return 0;; "autoindex" | "-autoindex" | "--autoindex" | "+autoindex") COMPREPLY=( $(compgen -W "nb_colors>0,0<=_dithering<=1,_method={_0=median-cut_|_1=k-means_} >") ); return 0;; "bayer2rgb" | "-bayer2rgb" | "--bayer2rgb" | "+bayer2rgb") COMPREPLY=( $(compgen -W "_GM_smoothness,_RB_smoothness1,_RB_smoothness2 >") ); return 0;; "deltaE" | "-deltaE" | "--deltaE" | "+deltaE") COMPREPLY=( $(compgen -W "[image],_metric={_0=deltaE_1976_|_1=deltaE_2000_},\"_to_Lab_command\" >") ); return 0;; "colorblind" | "-colorblind" | "--colorblind" | "+colorblind") COMPREPLY=( $(compgen -W "type={_0=protanopia_|_1=protanomaly_|_2=deuteranopia_|_3=deuteranomaly_|_4=tritanopia_|_5=tritanomaly_|_6=achromatopsia_|_7=achromatomaly_} >") ); return 0;; "colormap" | "-colormap" | "--colormap" | "+colormap") COMPREPLY=( $(compgen -W "nb_levels>=0,_method={_0=median-cut_|_1=k-means_},_sort_vectors >") ); return 0;; "fill_color" | "-fill_color" | "--fill_color" | "+fill_color") COMPREPLY=( $(compgen -W "col1,...,colN >") ); return 0;; "gradient2rgb" | "-gradient2rgb" | "--gradient2rgb" | "+gradient2rgb") COMPREPLY=( $(compgen -W "_is_orientation={_0_|_1_} >") ); return 0;; "lab2rgb" | "-lab2rgb" | "--lab2rgb" | "+lab2rgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lab2srgb" | "-lab2srgb" | "--lab2srgb" | "+lab2srgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lab82srgb" | "-lab82srgb" | "--lab82srgb" | "+lab82srgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lab2xyz" | "-lab2xyz" | "--lab2xyz" | "+lab2xyz") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lab82rgb" | "-lab82rgb" | "--lab82rgb" | "+lab82rgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lch2rgb" | "-lch2rgb" | "--lch2rgb" | "+lch2rgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lch82rgb" | "-lch82rgb" | "--lch82rgb" | "+lch82rgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "lut_contrast" | "-lut_contrast" | "--lut_contrast" | "+lut_contrast") COMPREPLY=( $(compgen -W "_nb_colors>1,_min_rgb_value >") ); return 0;; "map_clut" | "-map_clut" | "--map_clut" | "+map_clut") COMPREPLY=( $(compgen -W "[clut]_|_\"clut_name\" >") ); return 0;; "mix_rgb" | "-mix_rgb" | "--mix_rgb" | "+mix_rgb") COMPREPLY=( $(compgen -W "a11,a12,a13,a21,a22,a23,a31,a32,a33 >") ); return 0;; "palette" | "-palette" | "--palette" | "+palette") COMPREPLY=( $(compgen -W "palette_name_|_palette_number >") ); return 0;; "pseudogray" | "-pseudogray" | "--pseudogray" | "+pseudogray") COMPREPLY=( $(compgen -W "_max_increment>=0,_JND_threshold>=0,_bits_depth>0 >") ); return 0;; "replace_color" | "-replace_color" | "--replace_color" | "+replace_color") COMPREPLY=( $(compgen -W "tolerance[%]>=0,smoothness[%]>=0,src1,src2,...,dest1,dest2,... >") ); return 0;; "retinex" | "-retinex" | "--retinex" | "+retinex") COMPREPLY=( $(compgen -W "_value_offset>0,_colorspace={_hsi_|_hsv_|_lab_|_lrgb_|_rgb_|_ycbcr_},0<=_min_cut<=100,0<=_max_cut<=100,_sigma_low>0,_sigma_mid>0,_sigma_high>0 >") ); return 0;; "rgb2bayer" | "-rgb2bayer" | "--rgb2bayer" | "+rgb2bayer") COMPREPLY=( $(compgen -W "_start_pattern=0,_color_grid=0 >") ); return 0;; "rgb2lab" | "-rgb2lab" | "--rgb2lab" | "+rgb2lab") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "rgb2lab8" | "-rgb2lab8" | "--rgb2lab8" | "+rgb2lab8") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "rgb2lch" | "-rgb2lch" | "--rgb2lch" | "+rgb2lch") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "rgb2lch8" | "-rgb2lch8" | "--rgb2lch8" | "+rgb2lch8") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "rgb2xyz" | "-rgb2xyz" | "--rgb2xyz" | "+rgb2xyz") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "rgb2xyz8" | "-rgb2xyz8" | "--rgb2xyz8" | "+rgb2xyz8") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "select_color" | "-select_color" | "--select_color" | "+select_color") COMPREPLY=( $(compgen -W "tolerance[%]>=0,col1,...,colN >") ); return 0;; "split_colors" | "-split_colors" | "--split_colors" | "+split_colors") COMPREPLY=( $(compgen -W "_tolerance>=0,_max_nb_outputs>0,_min_area>0 >") ); return 0;; "srgb2lab" | "-srgb2lab" | "--srgb2lab" | "+srgb2lab") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "srgb2lab8" | "-srgb2lab8" | "--srgb2lab8" | "+srgb2lab8") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "to_colormode" | "-to_colormode" | "--to_colormode" | "+to_colormode") COMPREPLY=( $(compgen -W "mode={_0=adaptive_|_1=G_|_2=GA_|_3=RGB_|_4=RGBA_} >") ); return 0;; "to_pseudogray" | "-to_pseudogray" | "--to_pseudogray" | "+to_pseudogray") COMPREPLY=( $(compgen -W "_max_step>=0,_is_perceptual_constraint={_0_|_1_},_bits_depth>0 >") ); return 0;; "transfer_histogram" | "-transfer_histogram" | "--transfer_histogram" | "+transfer_histogram") COMPREPLY=( $(compgen -W "[reference_image],_nb_levels>0,_color_channels >") ); return 0;; "transfer_pca" | "-transfer_pca" | "--transfer_pca" | "+transfer_pca") COMPREPLY=( $(compgen -W "[reference_image],_color_channels >") ); return 0;; "transfer_rgb" | "-transfer_rgb" | "--transfer_rgb" | "+transfer_rgb") COMPREPLY=( $(compgen -W "[target],_gamma>=0,_regularization>=0,_luminosity_constraints>=0,_rgb_resolution>=0,_is_constraints={_0_|_1_} >") ); return 0;; "xyz2lab" | "-xyz2lab" | "--xyz2lab" | "+xyz2lab") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "xyz2rgb" | "-xyz2rgb" | "--xyz2rgb" | "+xyz2rgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "xyz82rgb" | "-xyz82rgb" | "--xyz82rgb" | "+xyz82rgb") COMPREPLY=( $(compgen -W "illuminant={_0=D50_|_1=D65_} (no_arg)") ); return 0;; "append" | "-append" | "--append" | "+append") COMPREPLY=( $(compgen -W "[image],axis,_centering axis,_centering") ); return 0;; "append_tiles" | "-append_tiles" | "--append_tiles" | "+append_tiles") COMPREPLY=( $(compgen -W "_M>=0,_N>=0,0<=_centering_x<=1,0<=_centering_y<=1 >") ); return 0;; "apply_scales" | "-apply_scales" | "--apply_scales" | "+apply_scales") COMPREPLY=( $(compgen -W "\"command\",number_of_scales>0,_min_scale[%]>=0,_max_scale[%]>=0,_scale_gamma>0,_interpolation >") ); return 0;; "autocrop" | "-autocrop" | "--autocrop" | "+autocrop") COMPREPLY=( $(compgen -W "value1,value2,... (no_arg)") ); return 0;; "autocrop_components" | "-autocrop_components" | "--autocrop_components" | "+autocrop_components") COMPREPLY=( $(compgen -W "_threshold[%],_min_area[%]>=0,_is_high_connectivity={_0_|_1_},_output_type={_0=crop_|_1=segmentation_|_2=coordinates_} >") ); return 0;; "autocrop_seq" | "-autocrop_seq" | "--autocrop_seq" | "+autocrop_seq") COMPREPLY=( $(compgen -W "value1,value2,..._|_auto >") ); return 0;; "channels" | "-channels" | "--channels" | "+channels") COMPREPLY=( $(compgen -W "{_[image0]_|_c0[%]_},_{_[image1]_|_c1[%]_} >") ); return 0;; "columns" | "-columns" | "--columns" | "+columns") COMPREPLY=( $(compgen -W "{_[image0]_|_x0[%]_},_{_[image1]_|_x1[%]_} >") ); return 0;; "crop" | "-crop" | "--crop" | "+crop") COMPREPLY=( $(compgen -W "x0[%],x1[%],_boundary_conditions x0[%],y0[%],x1[%],y1[%],_boundary_conditions x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_boundary_conditions x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_boundary_conditions") ); return 0;; "elevate" | "-elevate" | "--elevate" | "+elevate") COMPREPLY=( $(compgen -W "_depth,_is_plain={_0_|_1_},_is_colored={_0_|_1_} >") ); return 0;; "expand_x" | "-expand_x" | "--expand_x" | "+expand_x") COMPREPLY=( $(compgen -W "size_x>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "expand_xy" | "-expand_xy" | "--expand_xy" | "+expand_xy") COMPREPLY=( $(compgen -W "size>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "expand_xyz" | "-expand_xyz" | "--expand_xyz" | "+expand_xyz") COMPREPLY=( $(compgen -W "size>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "expand_y" | "-expand_y" | "--expand_y" | "+expand_y") COMPREPLY=( $(compgen -W "size_y>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "expand_z" | "-expand_z" | "--expand_z" | "+expand_z") COMPREPLY=( $(compgen -W "size_z>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "extract" | "-extract" | "--extract" | "+extract") COMPREPLY=( $(compgen -W "\"condition\",_output_type={_0=xyzc-coordinates_|_1=xyz-coordinates_|_2=scalar-values_|_3=vector-values_} >") ); return 0;; "extract_region" | "-extract_region" | "--extract_region" | "+extract_region") COMPREPLY=( $(compgen -W "[label_image],_extract_xyz_coordinates={_0_|_1_},_label_1,...,_label_M >") ); return 0;; "montage" | "-montage" | "--montage" | "+montage") COMPREPLY=( $(compgen -W "\"_layout_code\",_montage_mode={_0<=centering<=1_|_2<=scale+2<=3_},_output_mode={_0=single_layer_|_1=multiple_layers_},\"_processing_command\" >") ); return 0;; "mirror" | "-mirror" | "--mirror" | "+mirror") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_}...{_x_|_y_|_z_} >") ); return 0;; "permute" | "-permute" | "--permute" | "+permute") COMPREPLY=( $(compgen -W "permutation_string >") ); return 0;; "resize" | "-resize" | "--resize" | "+resize") COMPREPLY=( $(compgen -W "[image],_interpolation,_boundary_conditions,_ax,_ay,_az,_ac {[image_w]_|_width>0[%]},_{[image_h]_|_height>0[%]},_{[image_d]_|_depth>0[%]},_{[image_s]_|_spectrum>0[%]},_interpolation,_boundary_conditions,_ax,_ay,_az,_ac") ); return 0;; "resize_mn" | "-resize_mn" | "--resize_mn" | "+resize_mn") COMPREPLY=( $(compgen -W "width[%]>=0,_height[%]>=0,_depth[%]>=0,_B_value,_C_value >") ); return 0;; "resize_pow2" | "-resize_pow2" | "--resize_pow2" | "+resize_pow2") COMPREPLY=( $(compgen -W "_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "resize_ratio2d" | "-resize_ratio2d" | "--resize_ratio2d" | "+resize_ratio2d") COMPREPLY=( $(compgen -W "width>0,height>0,_mode={_0=inside_|_1=outside_|_2=padded_},0=<_interpolation<=6 >") ); return 0;; "resize2dx" | "-resize2dx" | "--resize2dx" | "+resize2dx") COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "resize2dy" | "-resize2dy" | "--resize2dy" | "+resize2dy") COMPREPLY=( $(compgen -W "height[%]>=0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "resize3dx" | "-resize3dx" | "--resize3dx" | "+resize3dx") COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "resize3dy" | "-resize3dy" | "--resize3dy" | "+resize3dy") COMPREPLY=( $(compgen -W "height[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "resize3dz" | "-resize3dz" | "--resize3dz" | "+resize3dz") COMPREPLY=( $(compgen -W "depth[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "rotate" | "-rotate" | "--rotate" | "+rotate") COMPREPLY=( $(compgen -W "angle,_interpolation,_boundary_conditions,_center_x[%],_center_y[%] u,v,w,angle,interpolation,boundary_conditions,_center_x[%],_center_y[%],_center_z[%]") ); return 0;; "rotate_tileable" | "-rotate_tileable" | "--rotate_tileable" | "+rotate_tileable") COMPREPLY=( $(compgen -W "angle,_max_size_factor>=0 >") ); return 0;; "rows" | "-rows" | "--rows" | "+rows") COMPREPLY=( $(compgen -W "{_[image0]_|_y0[%]_},_{_[image1]_|_y1[%]_} >") ); return 0;; "scale_dcci2x" | "-scale_dcci2x" | "--scale_dcci2x" | "+scale_dcci2x") COMPREPLY=( $(compgen -W "_edge_threshold>=0,_exponent>0,_extend_1px={_0=false_|_1=true_} >") ); return 0;; "seamcarve" | "-seamcarve" | "--seamcarve" | "+seamcarve") COMPREPLY=( $(compgen -W "_width[%]>=0,_height[%]>=0,_is_priority_channel={_0_|_1_},_is_antialiasing={_0_|_1_},_maximum_seams[%]>=0 >") ); return 0;; "shift" | "-shift" | "--shift" | "+shift") COMPREPLY=( $(compgen -W "vx[%],_vy[%],_vz[%],_vc[%],_boundary_conditions,_interpolation={_0=nearest_neighbor_|_1=linear_} >") ); return 0;; "shrink_x" | "-shrink_x" | "--shrink_x" | "+shrink_x") COMPREPLY=( $(compgen -W "size_x>=0 >") ); return 0;; "shrink_xy" | "-shrink_xy" | "--shrink_xy" | "+shrink_xy") COMPREPLY=( $(compgen -W "size>=0 >") ); return 0;; "shrink_xyz" | "-shrink_xyz" | "--shrink_xyz" | "+shrink_xyz") COMPREPLY=( $(compgen -W "size>=0 >") ); return 0;; "shrink_y" | "-shrink_y" | "--shrink_y" | "+shrink_y") COMPREPLY=( $(compgen -W "size_y>=0 >") ); return 0;; "shrink_z" | "-shrink_z" | "--shrink_z" | "+shrink_z") COMPREPLY=( $(compgen -W "size_z>=0 >") ); return 0;; "slices" | "-slices" | "--slices" | "+slices") COMPREPLY=( $(compgen -W "{_[image0]_|_z0[%]_},_{_[image1]_|_z1[%]_} >") ); return 0;; "sort" | "-sort" | "--sort" | "+sort") COMPREPLY=( $(compgen -W "_ordering={_+_|_-_},_axis={_x_|_y_|_z_|_c_} >") ); return 0;; "split" | "-split" | "--split" | "+split") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},_split_mode keep_splitting_values={_+_|_-_},_{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},value1,_value2,... (no_arg)") ); return 0;; "split_tiles" | "-split_tiles" | "--split_tiles" | "+split_tiles") COMPREPLY=( $(compgen -W "M!=0,_N!=0,_is_homogeneous={_0_|_1_} >") ); return 0;; "undistort" | "-undistort" | "--undistort" | "+undistort") COMPREPLY=( $(compgen -W "-1<=_amplitude<=1,_aspect_ratio,_zoom,_center_x[%],_center_y[%],_boundary_conditions >") ); return 0;; "unroll" | "-unroll" | "--unroll" | "+unroll") COMPREPLY=( $(compgen -W "_axis={_x_|_y_|_z_|_c_} >") ); return 0;; "upscale_smart" | "-upscale_smart" | "--upscale_smart" | "+upscale_smart") COMPREPLY=( $(compgen -W "width[%],_height[%],_depth,_smoothness>=0,_anisotropy=[0,1],sharpening>=0 >") ); return 0;; "warp" | "-warp" | "--warp" | "+warp") COMPREPLY=( $(compgen -W "[warping_field],_mode,_interpolation,_boundary_conditions,_nb_frames>0 >") ); return 0;; "warp_patch" | "-warp_patch" | "--warp_patch" | "+warp_patch") COMPREPLY=( $(compgen -W "[warping_field],patch_width>=1,_patch_height>=1,_patch_depth>=1,_std_factor>0,_boundary_conditions. >") ); return 0;; "bandpass" | "-bandpass" | "--bandpass" | "+bandpass") COMPREPLY=( $(compgen -W "_min_freq[%],_max_freq[%] >") ); return 0;; "bilateral" | "-bilateral" | "--bilateral" | "+bilateral") COMPREPLY=( $(compgen -W "[guide],std_deviation_s[%]>=0,std_deviation_r[%]>=0,_sampling_s>=0,_sampling_r>=0 std_deviation_s[%]>=0,std_deviation_r[%]>=0,_sampling_s>=0,_sampling_r>=0") ); return 0;; "blur" | "-blur" | "--blur" | "+blur") COMPREPLY=( $(compgen -W "std_deviation>=0[%],_boundary_conditions,_kernel axes,std_deviation>=0[%],_boundary_conditions,_kernel") ); return 0;; "blur_angular" | "-blur_angular" | "--blur_angular" | "+blur_angular") COMPREPLY=( $(compgen -W "amplitude[%],_center_x[%],_center_y[%] >") ); return 0;; "blur_bloom" | "-blur_bloom" | "--blur_bloom" | "+blur_bloom") COMPREPLY=( $(compgen -W "_amplitude>=0,_ratio>=0,_nb_iter>=0,_blend_operator={_+_|_max_|_min_},_kernel={_0=quasi-gaussian_(faster)_|_1=gaussian_|_2=box_|_3=triangle_|_4=quadratic_},_normalize_scales={_0_|_1_},_axes >") ); return 0;; "blur_linear" | "-blur_linear" | "--blur_linear" | "+blur_linear") COMPREPLY=( $(compgen -W "amplitude1[%],_amplitude2[%],_angle,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "blur_radial" | "-blur_radial" | "--blur_radial" | "+blur_radial") COMPREPLY=( $(compgen -W "amplitude[%],_center_x[%],_center_y[%] >") ); return 0;; "blur_selective" | "-blur_selective" | "--blur_selective" | "+blur_selective") COMPREPLY=( $(compgen -W "sigma>=0,_edges>0,_nb_scales>0 >") ); return 0;; "blur_x" | "-blur_x" | "--blur_x" | "+blur_x") COMPREPLY=( $(compgen -W "amplitude[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "blur_xy" | "-blur_xy" | "--blur_xy" | "+blur_xy") COMPREPLY=( $(compgen -W "amplitude_x[%],amplitude_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "blur_xyz" | "-blur_xyz" | "--blur_xyz" | "+blur_xyz") COMPREPLY=( $(compgen -W "amplitude_x[%],amplitude_y[%],amplitude_z,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "blur_y" | "-blur_y" | "--blur_y" | "+blur_y") COMPREPLY=( $(compgen -W "amplitude[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "blur_z" | "-blur_z" | "--blur_z" | "+blur_z") COMPREPLY=( $(compgen -W "amplitude[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "boxfilter" | "-boxfilter" | "--boxfilter" | "+boxfilter") COMPREPLY=( $(compgen -W "size>=0[%],_order,_boundary_conditions,_nb_iter>=0 axes,size>=0[%],_order,_boundary_conditions,_nb_iter>=0") ); return 0;; "convolve" | "-convolve" | "--convolve" | "+convolve") COMPREPLY=( $(compgen -W "[mask],_boundary_conditions,_is_normalized={_0_|_1_},_channel_mode,_xcenter,_ycenter,_zcenter,_xstart,_ystart,_zstart,_xend,_yend,_zend,_xstride,_ystride,_zstride,_xdilation,_ydilation,_zdilation >") ); return 0;; "convolve_fft" | "-convolve_fft" | "--convolve_fft" | "+convolve_fft") COMPREPLY=( $(compgen -W "[mask] >") ); return 0;; "correlate" | "-correlate" | "--correlate" | "+correlate") COMPREPLY=( $(compgen -W "[mask],_boundary_conditions,_is_normalized={_0_|_1_},_channel_mode,_xcenter,_ycenter,_zcenter,_xstart,_ystart,_zstart,_xend,_yend,_zend,_xstride,_ystride,_zstride,_xdilation,_ydilation,_zdilation >") ); return 0;; "cross_correlation" | "-cross_correlation" | "--cross_correlation" | "+cross_correlation") COMPREPLY=( $(compgen -W "[mask] >") ); return 0;; "dct" | "-dct" | "--dct" | "+dct") COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} (no_arg)") ); return 0;; "deblur" | "-deblur" | "--deblur" | "+deblur") COMPREPLY=( $(compgen -W "amplitude[%]>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={_0=Tikhonov_|_1=meancurv._|_2=TV_} >") ); return 0;; "deblur_goldmeinel" | "-deblur_goldmeinel" | "--deblur_goldmeinel" | "+deblur_goldmeinel") COMPREPLY=( $(compgen -W "sigma>=0,_nb_iter>=0,_acceleration>=0,_kernel_type={_0=quasi-gaussian_(faster)_|_1=gaussian_}. >") ); return 0;; "deblur_richardsonlucy" | "-deblur_richardsonlucy" | "--deblur_richardsonlucy" | "+deblur_richardsonlucy") COMPREPLY=( $(compgen -W "sigma>=0,_nb_iter>=0,__kernel_type={_0=quasi-gaussian_(faster)_|_1=gaussian_}. >") ); return 0;; "deconvolve_fft" | "-deconvolve_fft" | "--deconvolve_fft" | "+deconvolve_fft") COMPREPLY=( $(compgen -W "[kernel],_regularization>=0 >") ); return 0;; "deinterlace" | "-deinterlace" | "--deinterlace" | "+deinterlace") COMPREPLY=( $(compgen -W "_method={_0_|_1_} >") ); return 0;; "denoise" | "-denoise" | "--denoise" | "+denoise") COMPREPLY=( $(compgen -W "[guide],std_deviation_s[%]>=0,_std_deviation_r[%]>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={_0_|_1_} std_deviation_s[%]>=0,_std_deviation_r[%]>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={_0_|_1_}") ); return 0;; "denoise_haar" | "-denoise_haar" | "--denoise_haar" | "+denoise_haar") COMPREPLY=( $(compgen -W "_threshold>=0,_nb_scales>=0,_cycle_spinning>0 >") ); return 0;; "denoise_patchpca" | "-denoise_patchpca" | "--denoise_patchpca" | "+denoise_patchpca") COMPREPLY=( $(compgen -W "_strength>=0,_patch_size>0,_lookup_size>0,_spatial_sampling>0 >") ); return 0;; "deriche" | "-deriche" | "--deriche" | "+deriche") COMPREPLY=( $(compgen -W "std_deviation>=0[%],order={_0_|_1_|_2_},axis={_x_|_y_|_z_|_c_},_boundary_conditions >") ); return 0;; "dilate" | "-dilate" | "--dilate" | "+dilate") COMPREPLY=( $(compgen -W "size>=0 size_x>=0,size_y>=0,size_z>=0 [kernel],_boundary_conditions,_is_real={_0=binary-mode_|_1=real-mode_}") ); return 0;; "dilate_circ" | "-dilate_circ" | "--dilate_circ" | "+dilate_circ") COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;; "dilate_oct" | "-dilate_oct" | "--dilate_oct" | "+dilate_oct") COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;; "dilate_threshold" | "-dilate_threshold" | "--dilate_threshold" | "+dilate_threshold") COMPREPLY=( $(compgen -W "size_x>=1,size_y>=1,size_z>=1,_threshold>=0,_boundary_conditions >") ); return 0;; "dog" | "-dog" | "--dog" | "+dog") COMPREPLY=( $(compgen -W "_sigma1>=0[%],_sigma2>=0[%] >") ); return 0;; "diffusiontensors" | "-diffusiontensors" | "--diffusiontensors" | "+diffusiontensors") COMPREPLY=( $(compgen -W "_sharpness>=0,0<=_anisotropy<=1,_alpha[%],_sigma[%],is_sqrt={_0_|_1_} >") ); return 0;; "edges" | "-edges" | "--edges" | "+edges") COMPREPLY=( $(compgen -W "_threshold[%]>=0 >") ); return 0;; "erode" | "-erode" | "--erode" | "+erode") COMPREPLY=( $(compgen -W "size>=0 size_x>=0,size_y>=0,_size_z>=0 [kernel],_boundary_conditions,_is_real={_0=binary-mode_|_1=real-mode_}") ); return 0;; "erode_circ" | "-erode_circ" | "--erode_circ" | "+erode_circ") COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;; "erode_oct" | "-erode_oct" | "--erode_oct" | "+erode_oct") COMPREPLY=( $(compgen -W "_size>=0,_boundary_conditions,_is_normalized={_0_|_1_} >") ); return 0;; "erode_threshold" | "-erode_threshold" | "--erode_threshold" | "+erode_threshold") COMPREPLY=( $(compgen -W "size_x>=1,size_y>=1,size_z>=1,_threshold>=0,_boundary_conditions >") ); return 0;; "fft" | "-fft" | "--fft" | "+fft") COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} >") ); return 0;; "gradient" | "-gradient" | "--gradient" | "+gradient") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_}...{_x_|_y_|_z_},_scheme (no_arg)") ); return 0;; "gradient_orientation" | "-gradient_orientation" | "--gradient_orientation" | "+gradient_orientation") COMPREPLY=( $(compgen -W "_dimension={1,2,3} >") ); return 0;; "guided" | "-guided" | "--guided" | "+guided") COMPREPLY=( $(compgen -W "[guide],radius[%]>=0,regularization[%]>=0 radius[%]>=0,regularization[%]>=0") ); return 0;; "haar" | "-haar" | "--haar" | "+haar") COMPREPLY=( $(compgen -W "scale>0 >") ); return 0;; "heat_flow" | "-heat_flow" | "--heat_flow" | "+heat_flow") COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;; "hessian" | "-hessian" | "--hessian" | "+hessian") COMPREPLY=( $(compgen -W "{_xx_|_xy_|_xz_|_yy_|_yz_|_zz_}...{_xx_|_xy_|_xz_|_yy_|_yz_|_zz_} (no_arg)") ); return 0;; "idct" | "-idct" | "--idct" | "+idct") COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} (no_arg)") ); return 0;; "ifft" | "-ifft" | "--ifft" | "+ifft") COMPREPLY=( $(compgen -W "_{_x_|_y_|_z_}...{_x_|_y_|_z_} >") ); return 0;; "ihaar" | "-ihaar" | "--ihaar" | "+ihaar") COMPREPLY=( $(compgen -W "scale>0 >") ); return 0;; "ilaplacian" | "-ilaplacian" | "--ilaplacian" | "+ilaplacian") COMPREPLY=( $(compgen -W "{_nb_iterations>0_|_0_},_time_step>0,_[initial_estimate] >") ); return 0;; "inpaint" | "-inpaint" | "--inpaint" | "+inpaint") COMPREPLY=( $(compgen -W "[mask] [mask],0,_fast_method [mask],_patch_size>=1,_lookup_size>=1,_lookup_factor>=0,_lookup_increment!=0,_blend_size>=0,0<=_blend_threshold<=1,_blend_decay>=0,_blend_scales>=1,_is_blend_outer={_0_|_1_}") ); return 0;; "inpaint_pde" | "-inpaint_pde" | "--inpaint_pde" | "+inpaint_pde") COMPREPLY=( $(compgen -W "[mask],_nb_scales[%]>=0,_diffusion_type={_0=isotropic_|_1=delaunay-guided_|_2=edge-guided_|_3=mask-guided_},_diffusion_iter>=0 >") ); return 0;; "inpaint_flow" | "-inpaint_flow" | "--inpaint_flow" | "+inpaint_flow") COMPREPLY=( $(compgen -W "[mask],_nb_global_iter>=0,_nb_local_iter>=0,_dt>0,_alpha>=0,_sigma>=0 >") ); return 0;; "inpaint_holes" | "-inpaint_holes" | "--inpaint_holes" | "+inpaint_holes") COMPREPLY=( $(compgen -W "maximal_area[%]>=0,_tolerance>=0,_is_high_connectivity={_0_|_1_} >") ); return 0;; "inpaint_morpho" | "-inpaint_morpho" | "--inpaint_morpho" | "+inpaint_morpho") COMPREPLY=( $(compgen -W "[mask] >") ); return 0;; "inpaint_matchpatch" | "-inpaint_matchpatch" | "--inpaint_matchpatch" | "+inpaint_matchpatch") COMPREPLY=( $(compgen -W "[mask],_nb_scales={_0=auto_|_>0_},_patch_size>0,_nb_iterations_per_scale>0,_blend_size>=0,_allow_outer_blending={_0_|_1_},_is_already_initialized={_0_|_1_} >") ); return 0;; "kuwahara" | "-kuwahara" | "--kuwahara" | "+kuwahara") COMPREPLY=( $(compgen -W "size>0 >") ); return 0;; "lic" | "-lic" | "--lic" | "+lic") COMPREPLY=( $(compgen -W "_amplitude>0,_channels>0 >") ); return 0;; "map_tones" | "-map_tones" | "--map_tones" | "+map_tones") COMPREPLY=( $(compgen -W "_threshold>=0,_gamma>=0,_smoothness>=0,nb_iter>=0 >") ); return 0;; "map_tones_fast" | "-map_tones_fast" | "--map_tones_fast" | "+map_tones_fast") COMPREPLY=( $(compgen -W "_radius[%]>=0,_power>=0 >") ); return 0;; "meancurvature_flow" | "-meancurvature_flow" | "--meancurvature_flow" | "+meancurvature_flow") COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;; "median" | "-median" | "--median" | "+median") COMPREPLY=( $(compgen -W "size>=0,_threshold>0 >") ); return 0;; "nlmeans" | "-nlmeans" | "--nlmeans" | "+nlmeans") COMPREPLY=( $(compgen -W "[guide],_patch_radius>0,_spatial_bandwidth>0,_tonal_bandwidth>0,_patch_measure_command _patch_radius>0,_spatial_bandwidth>0,_tonal_bandwidth>0,_patch_measure_command") ); return 0;; "nlmeans_core" | "-nlmeans_core" | "--nlmeans_core" | "+nlmeans_core") COMPREPLY=( $(compgen -W "_reference_image,_scaling_map,_patch_radius>0,_spatial_bandwidth>0 >") ); return 0;; "normalize_local" | "-normalize_local" | "--normalize_local" | "+normalize_local") COMPREPLY=( $(compgen -W "_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_is_cut={_0_|_1_},_min=0,_max=255 >") ); return 0;; "normalized_cross_correlation" | "-normalized_cross_correlation" | "--normalized_cross_correlation" | "+normalized_cross_correlation") COMPREPLY=( $(compgen -W "[mask] >") ); return 0;; "peronamalik_flow" | "-peronamalik_flow" | "--peronamalik_flow" | "+peronamalik_flow") COMPREPLY=( $(compgen -W "K_factor>0,_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;; "phase_correlation" | "-phase_correlation" | "--phase_correlation" | "+phase_correlation") COMPREPLY=( $(compgen -W "[destination] >") ); return 0;; "pde_flow" | "-pde_flow" | "--pde_flow" | "+pde_flow") COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_velocity_command,_keep_sequence={_0_|_1_} >") ); return 0;; "red_eye" | "-red_eye" | "--red_eye" | "+red_eye") COMPREPLY=( $(compgen -W "0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 >") ); return 0;; "remove_hotpixels" | "-remove_hotpixels" | "--remove_hotpixels" | "+remove_hotpixels") COMPREPLY=( $(compgen -W "_mask_size>0,__threshold[%]>0 >") ); return 0;; "remove_pixels" | "-remove_pixels" | "--remove_pixels" | "+remove_pixels") COMPREPLY=( $(compgen -W "number_of_pixels[%]>=0 >") ); return 0;; "rolling_guidance" | "-rolling_guidance" | "--rolling_guidance" | "+rolling_guidance") COMPREPLY=( $(compgen -W "std_deviation_s[%]>=0,std_deviation_r[%]>=0,_precision>=0 >") ); return 0;; "sharpen" | "-sharpen" | "--sharpen" | "+sharpen") COMPREPLY=( $(compgen -W "amplitude>=0 amplitude>=0,edge>=0,_alpha,_sigma") ); return 0;; "smooth" | "-smooth" | "--smooth" | "+smooth") COMPREPLY=( $(compgen -W "amplitude[%]>=0,_sharpness>=0,0<=_anisotropy<=1,_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") ); return 0;; "split_freq" | "-split_freq" | "--split_freq" | "+split_freq") COMPREPLY=( $(compgen -W "smoothness>0[%] >") ); return 0;; "solve_poisson" | "-solve_poisson" | "--solve_poisson" | "+solve_poisson") COMPREPLY=( $(compgen -W "\"laplacian_command\",_nb_iterations>=0,_time_step>0,_nb_scales>=0 >") ); return 0;; "split_details" | "-split_details" | "--split_details" | "+split_details") COMPREPLY=( $(compgen -W "_nb_scales>0,_base_scale[%]>=0,_detail_scale[%]>=0 >") ); return 0;; "structuretensors" | "-structuretensors" | "--structuretensors" | "+structuretensors") COMPREPLY=( $(compgen -W "_scheme={_0=centered_|_1=forward/backward_} >") ); return 0;; "solidify" | "-solidify" | "--solidify" | "+solidify") COMPREPLY=( $(compgen -W "_smoothness[%]>=0,_diffusion_type={_0=isotropic_|_1=delaunay-oriented_|_2=edge-oriented_},_diffusion_iter>=0 >") ); return 0;; "syntexturize" | "-syntexturize" | "--syntexturize" | "+syntexturize") COMPREPLY=( $(compgen -W "_width[%]>0,_height[%]>0 >") ); return 0;; "syntexturize_matchpatch" | "-syntexturize_matchpatch" | "--syntexturize_matchpatch" | "+syntexturize_matchpatch") COMPREPLY=( $(compgen -W "_width[%]>0,_height[%]>0,_nb_scales>=0,_patch_size>0,_blending_size>=0,_precision>=0 >") ); return 0;; "tv_flow" | "-tv_flow" | "--tv_flow" | "+tv_flow") COMPREPLY=( $(compgen -W "_nb_iter>=0,_dt,_keep_sequence={_0_|_1_} >") ); return 0;; "unsharp" | "-unsharp" | "--unsharp" | "+unsharp") COMPREPLY=( $(compgen -W "radius[%]>=0,_amount>=0,_threshold[%]>=0 >") ); return 0;; "unsharp_octave" | "-unsharp_octave" | "--unsharp_octave" | "+unsharp_octave") COMPREPLY=( $(compgen -W "_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 >") ); return 0;; "vanvliet" | "-vanvliet" | "--vanvliet" | "+vanvliet") COMPREPLY=( $(compgen -W "std_deviation>=0[%],order={_0_|_1_|_2_|_3_},axis={_x_|_y_|_z_|_c_},_boundary_conditions >") ); return 0;; "watermark_fourier" | "-watermark_fourier" | "--watermark_fourier" | "+watermark_fourier") COMPREPLY=( $(compgen -W "text,_size>0 >") ); return 0;; "watershed" | "-watershed" | "--watershed" | "+watershed") COMPREPLY=( $(compgen -W "[priority_image],_is_high_connectivity={_0_|_1_} >") ); return 0;; "area" | "-area" | "--area" | "+area") COMPREPLY=( $(compgen -W "tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;; "area_fg" | "-area_fg" | "--area_fg" | "+area_fg") COMPREPLY=( $(compgen -W "tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;; "at_line" | "-at_line" | "--at_line" | "+at_line") COMPREPLY=( $(compgen -W "x0[%],y0[%],z0[%],x1[%],y1[%],z1[%] >") ); return 0;; "at_quadrangle" | "-at_quadrangle" | "--at_quadrangle" | "+at_quadrangle") COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],x2[%],y2[%],x3[%],y3[%],_interpolation,_boundary_conditions x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],x2[%],y2[%],z2[%],x3[%],y3[%],z3[%],_interpolation,_boundary_conditions") ); return 0;; "detect_skin" | "-detect_skin" | "--detect_skin" | "+detect_skin") COMPREPLY=( $(compgen -W "0<=tolerance<=1,_skin_x,_skin_y,_skin_radius>=0 >") ); return 0;; "displacement" | "-displacement" | "--displacement" | "+displacement") COMPREPLY=( $(compgen -W "[source_image],_smoothness,_precision>=0,_nb_scales>=0,_iteration_max>=0,is_backward={_0_|_1_},_[guide] >") ); return 0;; "distance" | "-distance" | "--distance" | "+distance") COMPREPLY=( $(compgen -W "isovalue[%],_metric isovalue[%],[metric],_method") ); return 0;; "histogram" | "-histogram" | "--histogram" | "+histogram") COMPREPLY=( $(compgen -W "_nb_levels>0[%],_value0[%],_value1[%] >") ); return 0;; "histogram_nd" | "-histogram_nd" | "--histogram_nd" | "+histogram_nd") COMPREPLY=( $(compgen -W "nb_levels>0[%],_value0[%],_value1[%] >") ); return 0;; "histogram_cumul" | "-histogram_cumul" | "--histogram_cumul" | "+histogram_cumul") COMPREPLY=( $(compgen -W "_nb_levels>0,_is_normalized={_0_|_1_},_val0[%],_val1[%] >") ); return 0;; "histogram_pointwise" | "-histogram_pointwise" | "--histogram_pointwise" | "+histogram_pointwise") COMPREPLY=( $(compgen -W "nb_levels>0[%],_value0[%],_value1[%] >") ); return 0;; "hough" | "-hough" | "--hough" | "+hough") COMPREPLY=( $(compgen -W "_width>0,_height>0,gradient_norm_voting={_0_|_1_} >") ); return 0;; "isophotes" | "-isophotes" | "--isophotes" | "+isophotes") COMPREPLY=( $(compgen -W "_nb_levels>0 >") ); return 0;; "label" | "-label" | "--label" | "+label") COMPREPLY=( $(compgen -W "_tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;; "label_fg" | "-label_fg" | "--label_fg" | "+label_fg") COMPREPLY=( $(compgen -W "tolerance>=0,is_high_connectivity={_0_|_1_} >") ); return 0;; "max_patch" | "-max_patch" | "--max_patch" | "+max_patch") COMPREPLY=( $(compgen -W "_patch_size>=1 >") ); return 0;; "min_patch" | "-min_patch" | "--min_patch" | "+min_patch") COMPREPLY=( $(compgen -W "_patch_size>=1 >") ); return 0;; "minimal_path" | "-minimal_path" | "--minimal_path" | "+minimal_path") COMPREPLY=( $(compgen -W "x0[%]>=0,y0[%]>=0,z0[%]>=0,x1[%]>=0,y1[%]>=0,z1[%]>=0,_is_high_connectivity={_0_|_1_} >") ); return 0;; "patches" | "-patches" | "--patches" | "+patches") COMPREPLY=( $(compgen -W "patch_width>0,patch_height>0,patch_depth>0,x0,y0,z0,_x1,_y1,_z1,...,_xN,_yN,_zN >") ); return 0;; "matchpatch" | "-matchpatch" | "--matchpatch" | "+matchpatch") COMPREPLY=( $(compgen -W "[patch_image],patch_width>=1,_patch_height>=1,_patch_depth>=1,_nb_iterations>=0,_nb_randoms>=0,_patch_penalization,_output_score={_0_|_1_},_[guide] >") ); return 0;; "pointcloud" | "-pointcloud" | "--pointcloud" | "+pointcloud") COMPREPLY=( $(compgen -W "_type_=_{_-X=-X-opacity_|_0=binary_|_1=cumulative_|_2=label_|_3=retrieve_coordinates_},_width,_height>0,_depth>0 >") ); return 0;; "psnr" | "-psnr" | "--psnr" | "+psnr") COMPREPLY=( $(compgen -W "_max_value >") ); return 0;; "segment_watershed" | "-segment_watershed" | "--segment_watershed" | "+segment_watershed") COMPREPLY=( $(compgen -W "_threshold>=0 >") ); return 0;; "shape2bump" | "-shape2bump" | "--shape2bump" | "+shape2bump") COMPREPLY=( $(compgen -W "_resolution>=0,0<=_weight_avg_max_avg<=1,_dilation,_smoothness>=0 >") ); return 0;; "skeleton" | "-skeleton" | "--skeleton" | "+skeleton") COMPREPLY=( $(compgen -W "_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "slic" | "-slic" | "--slic" | "+slic") COMPREPLY=( $(compgen -W "size>0,_regularity>=0,_nb_iterations>0 >") ); return 0;; "ssd_patch" | "-ssd_patch" | "--ssd_patch" | "+ssd_patch") COMPREPLY=( $(compgen -W "[patch],_use_fourier={_0_|_1_},_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "thinning" | "-thinning" | "--thinning" | "+thinning") COMPREPLY=( $(compgen -W "_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "tones" | "-tones" | "--tones" | "+tones") COMPREPLY=( $(compgen -W "N>0 >") ); return 0;; "topographic_map" | "-topographic_map" | "--topographic_map" | "+topographic_map") COMPREPLY=( $(compgen -W "_nb_levels>0,_smoothness >") ); return 0;; "tsp" | "-tsp" | "--tsp" | "+tsp") COMPREPLY=( $(compgen -W "_precision>=0 >") ); return 0;; "variance_patch" | "-variance_patch" | "--variance_patch" | "+variance_patch") COMPREPLY=( $(compgen -W "_patch_size>=1 >") ); return 0;; "arrow" | "-arrow" | "--arrow" | "+arrow") COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_thickness[%]>=0,_head_length[%]>=0,_head_thickness[%]>=0,_opacity,_pattern,_color1,... >") ); return 0;; "axes" | "-axes" | "--axes" | "+axes") COMPREPLY=( $(compgen -W "x0,x1,y0,y1,_font_height>=0,_opacity,_pattern,_color1,... >") ); return 0;; "ball" | "-ball" | "--ball" | "+ball") COMPREPLY=( $(compgen -W "_size>0,__R,_G,_B,0<=_specular_light<=8,0<=_specular_size<=8,_shadow>=0 >") ); return 0;; "chessboard" | "-chessboard" | "--chessboard" | "+chessboard") COMPREPLY=( $(compgen -W "size1>0,_size2>0,_offset1,_offset2,_angle,_opacity,_color1,...,_color2,... >") ); return 0;; "circle" | "-circle" | "--circle" | "+circle") COMPREPLY=( $(compgen -W "x[%],y[%],R[%],_opacity,_pattern,_color1,... >") ); return 0;; "close_binary" | "-close_binary" | "--close_binary" | "+close_binary") COMPREPLY=( $(compgen -W "0<=_endpoint_rate<=100,_endpoint_connectivity>=0,_spline_distmax>=0,_segment_distmax>=0,0<=_spline_anglemax<=180,_spline_roundness>=0,_area_min>=0,_allow_self_intersection={_0_|_1_} >") ); return 0;; "ellipse" | "-ellipse" | "--ellipse" | "+ellipse") COMPREPLY=( $(compgen -W "x[%],y[%],R[%],r[%],_angle,_opacity,_pattern,_color1,... >") ); return 0;; "flood" | "-flood" | "--flood" | "+flood") COMPREPLY=( $(compgen -W "x[%],_y[%],_z[%],_tolerance>=0,_is_high_connectivity={_0_|_1_},_opacity,_color1,... >") ); return 0;; "gaussian" | "-gaussian" | "--gaussian" | "+gaussian") COMPREPLY=( $(compgen -W "_sigma1[%],_sigma2[%],_angle >") ); return 0;; "graph" | "-graph" | "--graph" | "+graph") COMPREPLY=( $(compgen -W "[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,...") ); return 0;; "grid" | "-grid" | "--grid" | "+grid") COMPREPLY=( $(compgen -W "size_x[%]>=0,size_y[%]>=0,_offset_x[%],_offset_y[%],_opacity,_pattern,_color1,... >") ); return 0;; "image" | "-image" | "--image" | "+image") COMPREPLY=( $(compgen -W "[sprite],_x[%|~],_y[%|~],_z[%|~],_c[%|~],_opacity,_[opacity_mask],_max_opacity_mask >") ); return 0;; "line" | "-line" | "--line" | "+line") COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,... >") ); return 0;; "linethick" | "-linethick" | "--linethick" | "+linethick") COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_thickness,_opacity,_color1 >") ); return 0;; "mandelbrot" | "-mandelbrot" | "--mandelbrot" | "+mandelbrot") COMPREPLY=( $(compgen -W "z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={_0_|_1_},_c0r,_c0i,_opacity >") ); return 0;; "marble" | "-marble" | "--marble" | "+marble") COMPREPLY=( $(compgen -W "_image_weight,_pattern_weight,_angle,_amplitude,_sharpness>=0,_anisotropy>=0,_alpha,_sigma,_cut_low>=0,_cut_high>=0 >") ); return 0;; "maze" | "-maze" | "--maze" | "+maze") COMPREPLY=( $(compgen -W "_width>0,_height>0,_cell_size>0 >") ); return 0;; "maze_mask" | "-maze_mask" | "--maze_mask" | "+maze_mask") COMPREPLY=( $(compgen -W "_cellsize>0 >") ); return 0;; "newton_fractal" | "-newton_fractal" | "--newton_fractal" | "+newton_fractal") COMPREPLY=( $(compgen -W "z0r,z0i,z1r,z1i,_angle,0<=_descent_method<=2,_iteration_max>=0,_convergence_precision>0,_expr_p(z),_expr_dp(z),_expr_d2p(z) >") ); return 0;; "object3d" | "-object3d" | "--object3d" | "+object3d") COMPREPLY=( $(compgen -W "[object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_sided={_0_|_1_},_is_zbuffer={_0_|_1_},_focale,_light_x,_light_y,_light_z,_specular_lightness,_specular_shininess >") ); return 0;; "pack_sprites" | "-pack_sprites" | "--pack_sprites" | "+pack_sprites") COMPREPLY=( $(compgen -W "_nb_scales>=0,0<=_min_scale<=100,_allow_rotation={_0=0_deg._|_1=180_deg._|_2=90_deg._|_3=any_},_spacing,_precision>=0,max_iterations>=0 >") ); return 0;; "piechart" | "-piechart" | "--piechart" | "+piechart") COMPREPLY=( $(compgen -W "label_height>=0,label_R,label_G,label_B,\"label1\",value1,R1,G1,B1,...,\"labelN\",valueN,RN,GN,BN >") ); return 0;; "plasma" | "-plasma" | "--plasma" | "+plasma") COMPREPLY=( $(compgen -W "_alpha,_beta,_scale>=0 >") ); return 0;; "point" | "-point" | "--point" | "+point") COMPREPLY=( $(compgen -W "x[%],y[%],_z[%],_opacity,_color1,... >") ); return 0;; "polka_dots" | "-polka_dots" | "--polka_dots" | "+polka_dots") COMPREPLY=( $(compgen -W "diameter>=0,_density,_offset1,_offset2,_angle,_aliasing,_shading,_opacity,_color,... >") ); return 0;; "polygon" | "-polygon" | "--polygon" | "+polygon") COMPREPLY=( $(compgen -W "N>=1,x1[%],y1[%],...,xN[%],yN[%],_opacity,_pattern,_color1,... >") ); return 0;; "quiver" | "-quiver" | "--quiver" | "+quiver") COMPREPLY=( $(compgen -W "[function_image],_sampling[%]>0,_factor>=0,_is_arrow={_0_|_1_},_opacity,_color1,... >") ); return 0;; "rectangle" | "-rectangle" | "--rectangle" | "+rectangle") COMPREPLY=( $(compgen -W "x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,... >") ); return 0;; "rorschach" | "-rorschach" | "--rorschach" | "+rorschach") COMPREPLY=( $(compgen -W "\'smoothness[%]>=0\',\'mirroring={_0=none_|_1=x_|_2=y_|_3=xy_} >") ); return 0;; "sierpinski" | "-sierpinski" | "--sierpinski" | "+sierpinski") COMPREPLY=( $(compgen -W "recursion_level>=0 >") ); return 0;; "spiralbw" | "-spiralbw" | "--spiralbw" | "+spiralbw") COMPREPLY=( $(compgen -W "width>0,_height>0,_is_2dcoords={_0_|_1_} >") ); return 0;; "spline" | "-spline" | "--spline" | "+spline") COMPREPLY=( $(compgen -W "x0[%],y0[%],u0[%],v0[%],x1[%],y1[%],u1[%],v1[%],_opacity,_color1,... >") ); return 0;; "tetraedron_shade" | "-tetraedron_shade" | "--tetraedron_shade" | "+tetraedron_shade") COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,R0,G0,B0,...,R1,G1,B1,...,R2,G2,B2,...,R3,G3,B3,... >") ); return 0;; "text" | "-text" | "--text" | "+text") COMPREPLY=( $(compgen -W "text,_x[%|~],_y[%|~],_font_height[%]>=0,_opacity,_color1,... >") ); return 0;; "text_outline" | "-text_outline" | "--text_outline" | "+text_outline") COMPREPLY=( $(compgen -W "text,_x[%|~],_y[%|~],_font_height[%]>0,_outline>=0,_opacity,_color1,... >") ); return 0;; "triangle_shade" | "-triangle_shade" | "--triangle_shade" | "+triangle_shade") COMPREPLY=( $(compgen -W "x0,y0,x1,y1,x2,y2,R0,G0,B0,...,R1,G1,B1,...,R2,G2,B2,... >") ); return 0;; "truchet" | "-truchet" | "--truchet" | "+truchet") COMPREPLY=( $(compgen -W "_scale>0,_radius>=0,_pattern_type={_0=straight_|_1=curved_} >") ); return 0;; "turbulence" | "-turbulence" | "--turbulence" | "+turbulence") COMPREPLY=( $(compgen -W "_radius>0,_octaves={1,2,3...,12},_alpha>0,_difference={-10,10},_mode={0,1,2,3} >") ); return 0;; "dijkstra" | "-dijkstra" | "--dijkstra" | "+dijkstra") COMPREPLY=( $(compgen -W "starting_node>=0,ending_node>=0 >") ); return 0;; "solve" | "-solve" | "--solve" | "+solve") COMPREPLY=( $(compgen -W "[image] >") ); return 0;; "trisolve" | "-trisolve" | "--trisolve" | "+trisolve") COMPREPLY=( $(compgen -W "[image] >") ); return 0;; "add3d" | "-add3d" | "--add3d" | "+add3d") COMPREPLY=( $(compgen -W "tx,_ty,_tz [object3d] (no_arg)") ); return 0;; "animate3d" | "-animate3d" | "--animate3d" | "+animate3d") COMPREPLY=( $(compgen -W "_width>0,_height>0,_angle_dx,_angle_dy,_angle_dz,_zoom_factor>=0,_filename >") ); return 0;; "apply_camera3d" | "-apply_camera3d" | "--apply_camera3d" | "+apply_camera3d") COMPREPLY=( $(compgen -W "pos_x,pos_y,pos_z,target_x,target_y,target_z,up_x,up_y,up_z >") ); return 0;; "apply_matrix3d" | "-apply_matrix3d" | "--apply_matrix3d" | "+apply_matrix3d") COMPREPLY=( $(compgen -W "a11,a12,a13,...,a31,a32,a33 >") ); return 0;; "array3d" | "-array3d" | "--array3d" | "+array3d") COMPREPLY=( $(compgen -W "size_x>=1,_size_y>=1,_size_z>=1,_offset_x[%],_offset_y[%],_offset_y[%] >") ); return 0;; "arrow3d" | "-arrow3d" | "--arrow3d" | "+arrow3d") COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,_radius[%]>=0,_head_length[%]>=0,_head_radius[%]>=0 >") ); return 0;; "axes3d" | "-axes3d" | "--axes3d" | "+axes3d") COMPREPLY=( $(compgen -W "_size_x,_size_y,_size_z,_font_size>0,_label_x,_label_y,_label_z,_is_origin={_0=no_|_1=yes_} >") ); return 0;; "box3d" | "-box3d" | "--box3d" | "+box3d") COMPREPLY=( $(compgen -W "_size_x,_size_y,_size_z >") ); return 0;; "circle3d" | "-circle3d" | "--circle3d" | "+circle3d") COMPREPLY=( $(compgen -W "_x0,_y0,_z0,_radius>=0 >") ); return 0;; "circles3d" | "-circles3d" | "--circles3d" | "+circles3d") COMPREPLY=( $(compgen -W "_radius>=0,_is_wireframe={_0_|_1_} >") ); return 0;; "color3d" | "-color3d" | "--color3d" | "+color3d") COMPREPLY=( $(compgen -W "R,_G,_B,_opacity >") ); return 0;; "cone3d" | "-cone3d" | "--cone3d" | "+cone3d") COMPREPLY=( $(compgen -W "_radius,_height,_nb_subdivisions>0 >") ); return 0;; "cubes3d" | "-cubes3d" | "--cubes3d" | "+cubes3d") COMPREPLY=( $(compgen -W "_size>=0 >") ); return 0;; "cup3d" | "-cup3d" | "--cup3d" | "+cup3d") COMPREPLY=( $(compgen -W "_resolution>0 >") ); return 0;; "cylinder3d" | "-cylinder3d" | "--cylinder3d" | "+cylinder3d") COMPREPLY=( $(compgen -W "_radius,_height,_nb_subdivisions>0 >") ); return 0;; "div3d" | "-div3d" | "--div3d" | "+div3d") COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;; "double3d" | "-double3d" | "--double3d" | "+double3d") COMPREPLY=( $(compgen -W "_is_double_sided={_0_|_1_} >") ); return 0;; "elevation3d" | "-elevation3d" | "--elevation3d" | "+elevation3d") COMPREPLY=( $(compgen -W "z-factor [elevation_map] \'formula\' (no_arg)") ); return 0;; "extrude3d" | "-extrude3d" | "--extrude3d" | "+extrude3d") COMPREPLY=( $(compgen -W "_depth>0,_resolution>0,_smoothness[%]>=0 >") ); return 0;; "focale3d" | "-focale3d" | "--focale3d" | "+focale3d") COMPREPLY=( $(compgen -W "focale >") ); return 0;; "gaussians3d" | "-gaussians3d" | "--gaussians3d" | "+gaussians3d") COMPREPLY=( $(compgen -W "_size>0,_opacity >") ); return 0;; "gyroid3d" | "-gyroid3d" | "--gyroid3d" | "+gyroid3d") COMPREPLY=( $(compgen -W "_resolution>0,_zoom >") ); return 0;; "imageblocks3d" | "-imageblocks3d" | "--imageblocks3d" | "+imageblocks3d") COMPREPLY=( $(compgen -W "_maximum_elevation,_smoothness[%]>=0 >") ); return 0;; "imagerubik3d" | "-imagerubik3d" | "--imagerubik3d" | "+imagerubik3d") COMPREPLY=( $(compgen -W "_xy_tiles>=1,0<=xy_shift<=100,0<=z_shift<=100 >") ); return 0;; "imagesphere3d" | "-imagesphere3d" | "--imagesphere3d" | "+imagesphere3d") COMPREPLY=( $(compgen -W "_resolution1>=3,_resolution2>=3 >") ); return 0;; "isoline3d" | "-isoline3d" | "--isoline3d" | "+isoline3d") COMPREPLY=( $(compgen -W "isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_size_x>0[%],_size_y>0[%]") ); return 0;; "isosurface3d" | "-isosurface3d" | "--isosurface3d" | "+isosurface3d") COMPREPLY=( $(compgen -W "isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_size_x>0[%],_size_y>0[%],_size_z>0[%]") ); return 0;; "label3d" | "-label3d" | "--label3d" | "+label3d") COMPREPLY=( $(compgen -W "\"text\",font_height>=0,_opacity,_color1,... >") ); return 0;; "label_points3d" | "-label_points3d" | "--label_points3d" | "+label_points3d") COMPREPLY=( $(compgen -W "_label_size>0,_opacity >") ); return 0;; "lathe3d" | "-lathe3d" | "--lathe3d" | "+lathe3d") COMPREPLY=( $(compgen -W "_resolution>0,_smoothness[%]>=0,_max_angle>=0 >") ); return 0;; "light3d" | "-light3d" | "--light3d" | "+light3d") COMPREPLY=( $(compgen -W "position_x,position_y,position_z [texture] (no_arg)") ); return 0;; "line3d" | "-line3d" | "--line3d" | "+line3d") COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1 >") ); return 0;; "lissajous3d" | "-lissajous3d" | "--lissajous3d" | "+lissajous3d") COMPREPLY=( $(compgen -W "resolution>1,a,A,b,B,c,C >") ); return 0;; "mode3d" | "-mode3d" | "--mode3d" | "+mode3d") COMPREPLY=( $(compgen -W "_mode >") ); return 0;; "moded3d" | "-moded3d" | "--moded3d" | "+moded3d") COMPREPLY=( $(compgen -W "_mode >") ); return 0;; "mul3d" | "-mul3d" | "--mul3d" | "+mul3d") COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;; "opacity3d" | "-opacity3d" | "--opacity3d" | "+opacity3d") COMPREPLY=( $(compgen -W "_opacity >") ); return 0;; "parametric3d" | "-parametric3d" | "--parametric3d" | "+parametric3d") COMPREPLY=( $(compgen -W "_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 >") ); return 0;; "pca_patch3d" | "-pca_patch3d" | "--pca_patch3d" | "+pca_patch3d") COMPREPLY=( $(compgen -W "_patch_size>0,_M>0,_N>0,_normalize_input={_0_|_1_},_normalize_output={_0_|_1_},_lambda_xy >") ); return 0;; "plane3d" | "-plane3d" | "--plane3d" | "+plane3d") COMPREPLY=( $(compgen -W "_size_x,_size_y,_nb_subdivisions_x>0,_nb_subdisivions_y>0 >") ); return 0;; "point3d" | "-point3d" | "--point3d" | "+point3d") COMPREPLY=( $(compgen -W "x0,y0,z0 >") ); return 0;; "pose3d" | "-pose3d" | "--pose3d" | "+pose3d") COMPREPLY=( $(compgen -W "p1,...,p12 >") ); return 0;; "primitives3d" | "-primitives3d" | "--primitives3d" | "+primitives3d") COMPREPLY=( $(compgen -W "mode >") ); return 0;; "projections3d" | "-projections3d" | "--projections3d" | "+projections3d") COMPREPLY=( $(compgen -W "_x[%],_y[%],_z[%],_is_bounding_box={_0_|_1_} >") ); return 0;; "pyramid3d" | "-pyramid3d" | "--pyramid3d" | "+pyramid3d") COMPREPLY=( $(compgen -W "width,height >") ); return 0;; "quadrangle3d" | "-quadrangle3d" | "--quadrangle3d" | "+quadrangle3d") COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 >") ); return 0;; "random3d" | "-random3d" | "--random3d" | "+random3d") COMPREPLY=( $(compgen -W "nb_points>=0 >") ); return 0;; "rotate3d" | "-rotate3d" | "--rotate3d" | "+rotate3d") COMPREPLY=( $(compgen -W "u,v,w,angle >") ); return 0;; "rotation3d" | "-rotation3d" | "--rotation3d" | "+rotation3d") COMPREPLY=( $(compgen -W "u,v,w,angle >") ); return 0;; "sierpinski3d" | "-sierpinski3d" | "--sierpinski3d" | "+sierpinski3d") COMPREPLY=( $(compgen -W "_recursion_level>=0,_width,_height >") ); return 0;; "skeleton3d" | "-skeleton3d" | "--skeleton3d" | "+skeleton3d") COMPREPLY=( $(compgen -W "_metric,_frame_type={_0=squares_|_1=diamonds_|_2=circles_|_3=auto_},_skeleton_opacity,_frame_opacity,_is_frame_wireframe={_0_|_1_} >") ); return 0;; "snapshot3d" | "-snapshot3d" | "--snapshot3d" | "+snapshot3d") COMPREPLY=( $(compgen -W "_size>0,_zoom>=0,_backgroundR,_backgroundG,_backgroundB,_backgroundA [background_image],zoom>=0") ); return 0;; "specl3d" | "-specl3d" | "--specl3d" | "+specl3d") COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;; "specs3d" | "-specs3d" | "--specs3d" | "+specs3d") COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;; "sphere3d" | "-sphere3d" | "--sphere3d" | "+sphere3d") COMPREPLY=( $(compgen -W "radius,_nb_recursions>=0 >") ); return 0;; "spherical3d" | "-spherical3d" | "--spherical3d" | "+spherical3d") COMPREPLY=( $(compgen -W "_nb_azimuth>=3,_nb_zenith>=3,_radius_function(phi,theta) >") ); return 0;; "spline3d" | "-spline3d" | "--spline3d" | "+spline3d") COMPREPLY=( $(compgen -W "x0[%],y0[%],z0[%],u0[%],v0[%],w0[%],x1[%],y1[%],z1[%],u1[%],v1[%],w1[%],_nb_vertices>=2 >") ); return 0;; "split3d" | "-split3d" | "--split3d" | "+split3d") COMPREPLY=( $(compgen -W "_keep_shared_data={_0_|_1_} >") ); return 0;; "sprites3d" | "-sprites3d" | "--sprites3d" | "+sprites3d") COMPREPLY=( $(compgen -W "[sprite],_sprite_has_alpha_channel={_0_|_1_} >") ); return 0;; "star3d" | "-star3d" | "--star3d" | "+star3d") COMPREPLY=( $(compgen -W "_nb_branches>0,0<=_thickness<=1 >") ); return 0;; "streamline3d" | "-streamline3d" | "--streamline3d" | "+streamline3d") COMPREPLY=( $(compgen -W "x[%],y[%],z[%],_L>=0,_dl>0,_interpolation,_is_backward={_0_|_1_},_is_oriented={_0_|_1_} \'formula\',x,y,z,_L>=0,_dl>0,_interpolation,_is_backward={_0_|_1_},_is_oriented={_0_|_1_}") ); return 0;; "sub3d" | "-sub3d" | "--sub3d" | "+sub3d") COMPREPLY=( $(compgen -W "tx,_ty,_tz >") ); return 0;; "superformula3d" | "-superformula3d" | "--superformula3d" | "+superformula3d") COMPREPLY=( $(compgen -W "resolution>1,m>=1,n1,n2,n3 >") ); return 0;; "tensors3d" | "-tensors3d" | "--tensors3d" | "+tensors3d") COMPREPLY=( $(compgen -W "_radius_factor>=0,_shape={_0=box_|_>=N=ellipsoid_},_radius_min>=0 >") ); return 0;; "text_pointcloud3d" | "-text_pointcloud3d" | "--text_pointcloud3d" | "+text_pointcloud3d") COMPREPLY=( $(compgen -W "_\"text1\",_\"text2\",_smoothness >") ); return 0;; "text3d" | "-text3d" | "--text3d" | "+text3d") COMPREPLY=( $(compgen -W "text,_font_height>0,_depth>0,_smoothness >") ); return 0;; "texturize3d" | "-texturize3d" | "--texturize3d" | "+texturize3d") COMPREPLY=( $(compgen -W "[ind_texture],_[ind_coords] >") ); return 0;; "torus3d" | "-torus3d" | "--torus3d" | "+torus3d") COMPREPLY=( $(compgen -W "_radius1,_radius2,_nb_subdivisions1>2,_nb_subdivisions2>2 >") ); return 0;; "triangle3d" | "-triangle3d" | "--triangle3d" | "+triangle3d") COMPREPLY=( $(compgen -W "x0,y0,z0,x1,y1,z1,x2,y2,z2 >") ); return 0;; "weird3d" | "-weird3d" | "--weird3d" | "+weird3d") COMPREPLY=( $(compgen -W "_resolution>0 >") ); return 0;; "apply_parallel" | "-apply_parallel" | "--apply_parallel" | "+apply_parallel") COMPREPLY=( $(compgen -W "\"command\" >") ); return 0;; "apply_parallel_channels" | "-apply_parallel_channels" | "--apply_parallel_channels" | "+apply_parallel_channels") COMPREPLY=( $(compgen -W "\"command\" >") ); return 0;; "apply_parallel_overlap" | "-apply_parallel_overlap" | "--apply_parallel_overlap" | "+apply_parallel_overlap") COMPREPLY=( $(compgen -W "\"command\",overlap[%],nb_threads={_0=auto_|_1_|_2_|_4_|_8_|_16_} >") ); return 0;; "apply_tiles" | "-apply_tiles" | "--apply_tiles" | "+apply_tiles") COMPREPLY=( $(compgen -W "\"command\",_tile_width[%]>0,_tile_height[%]>0,_tile_depth[%]>0,_overlap_width[%]>=0,_overlap_height[%]>=0,_overlap_depth[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "apply_timeout" | "-apply_timeout" | "--apply_timeout" | "+apply_timeout") COMPREPLY=( $(compgen -W "\"command\",_timeout={_0=no_timeout_|_>0=with_specified_timeout_(in_seconds)_} >") ); return 0;; "check" | "-check" | "--check" | "+check") COMPREPLY=( $(compgen -W "condition >") ); return 0;; "check3d" | "-check3d" | "--check3d" | "+check3d") COMPREPLY=( $(compgen -W "_is_full_check={_0_|_1_} >") ); return 0;; "elif" | "-elif" | "--elif" | "+elif") COMPREPLY=( $(compgen -W "condition >") ); return 0;; "error" | "-error" | "--error" | "+error") COMPREPLY=( $(compgen -W "message >") ); return 0;; "eval" | "-eval" | "--eval" | "+eval") COMPREPLY=( $(compgen -W "expression >") ); return 0;; "exec" | "-exec" | "--exec" | "+exec") COMPREPLY=( $(compgen -W "_is_verbose={_0_|_1_},\"command\" >") ); return 0;; "for" | "-for" | "--for" | "+for") COMPREPLY=( $(compgen -W "condition >") ); return 0;; "if" | "-if" | "--if" | "+if") COMPREPLY=( $(compgen -W "condition >") ); return 0;; "mutex" | "-mutex" | "--mutex" | "+mutex") COMPREPLY=( $(compgen -W "index,_action={_0=unlock_|_1=lock_} >") ); return 0;; "parallel" | "-parallel" | "--parallel" | "+parallel") COMPREPLY=( $(compgen -W "_wait_threads,\"command1\",\"command2\",... >") ); return 0;; "progress" | "-progress" | "--progress" | "+progress") COMPREPLY=( $(compgen -W "0<=value<=100 -1") ); return 0;; "repeat" | "-repeat" | "--repeat" | "+repeat") COMPREPLY=( $(compgen -W "nb_iterations,_variable_name >") ); return 0;; "rprogress" | "-rprogress" | "--rprogress" | "+rprogress") COMPREPLY=( $(compgen -W "0<=value<=100_|_-1_|_\"command\",0<=value_min<=100,0<=value_max<=100 >") ); return 0;; "run" | "-run" | "--run" | "+run") COMPREPLY=( $(compgen -W "\"G\'MIC_pipeline\" >") ); return 0;; "skip" | "-skip" | "--skip" | "+skip") COMPREPLY=( $(compgen -W "item >") ); return 0;; "status" | "-status" | "--status" | "+status") COMPREPLY=( $(compgen -W "status_string >") ); return 0;; "while" | "-while" | "--while" | "+while") COMPREPLY=( $(compgen -W "condition >") ); return 0;; "array" | "-array" | "--array" | "+array") COMPREPLY=( $(compgen -W "M>0,_N>0,_expand_type={_0=min_|_1=max_|_2=all_} >") ); return 0;; "array_fade" | "-array_fade" | "--array_fade" | "+array_fade") COMPREPLY=( $(compgen -W "M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0=min_|_1=max_|_2=all} >") ); return 0;; "array_mirror" | "-array_mirror" | "--array_mirror" | "+array_mirror") COMPREPLY=( $(compgen -W "N>=0,_dir={_0=x_|_1=y_|_2=xy_|_3=tri-xy_},_expand_type={_0_|_1_} >") ); return 0;; "array_random" | "-array_random" | "--array_random" | "+array_random") COMPREPLY=( $(compgen -W "Ms>0,_Ns>0,_Md>0,_Nd>0 >") ); return 0;; "frame_blur" | "-frame_blur" | "--frame_blur" | "+frame_blur") COMPREPLY=( $(compgen -W "_sharpness>0,_size>=0,_smoothness,_shading,_blur >") ); return 0;; "frame_cube" | "-frame_cube" | "--frame_cube" | "+frame_cube") COMPREPLY=( $(compgen -W "_depth>=0,_centering_x,_centering_y,_left_side={0=normal_|_1=mirror-x_|_2=mirror-y_|_3=mirror-xy},_right_side,_lower_side,_upper_side >") ); return 0;; "frame_fuzzy" | "-frame_fuzzy" | "--frame_fuzzy" | "+frame_fuzzy") COMPREPLY=( $(compgen -W "size_x[%]>=0,_size_y[%]>=0,_fuzzyness>=0,_smoothness[%]>=0,_R,_G,_B,_A >") ); return 0;; "frame_painting" | "-frame_painting" | "--frame_painting" | "+frame_painting") COMPREPLY=( $(compgen -W "_size[%]>=0,0<=_contrast<=1,_profile_smoothness[%]>=0,_R,_G,_B,_vignette_size[%]>=0,_vignette_contrast>=0,_defects_contrast>=0,0<=_defects_density<=100,_defects_size>=0,_defects_smoothness[%]>=0,_serial_number >") ); return 0;; "frame_pattern" | "-frame_pattern" | "--frame_pattern" | "+frame_pattern") COMPREPLY=( $(compgen -W "M>=3,_constrain_size={_0_|_1_} M>=3,_[frame_image],_constrain_size={_0_|_1_}") ); return 0;; "frame_round" | "-frame_round" | "--frame_round" | "+frame_round") COMPREPLY=( $(compgen -W "_sharpness>0,_size>=0,_smoothness,_shading,_R,_G,_B,_A >") ); return 0;; "frame_seamless" | "-frame_seamless" | "--frame_seamless" | "+frame_seamless") COMPREPLY=( $(compgen -W "frame_size>=0,_patch_size>0,_blend_size>=0,_frame_direction={_0=inner_(preserve_image_size)_|_1=outer_} >") ); return 0;; "frame_x" | "-frame_x" | "--frame_x" | "+frame_x") COMPREPLY=( $(compgen -W "size_x[%],_col1,...,_colN >") ); return 0;; "frame_xy" | "-frame_xy" | "--frame_xy" | "+frame_xy") COMPREPLY=( $(compgen -W "size_x[%],_size_y[%],_col1,...,_colN >") ); return 0;; "frame_xyz" | "-frame_xyz" | "--frame_xyz" | "+frame_xyz") COMPREPLY=( $(compgen -W "size_x[%],_size_y[%],_size_z[%]_col1,...,_colN >") ); return 0;; "frame_y" | "-frame_y" | "--frame_y" | "+frame_y") COMPREPLY=( $(compgen -W "size_y[%],_col1,...,_colN >") ); return 0;; "img2ascii" | "-img2ascii" | "--img2ascii" | "+img2ascii") COMPREPLY=( $(compgen -W "_charset,_analysis_scale>0,_analysis_smoothness[%]>=0,_synthesis_scale>0,_output_ascii_filename >") ); return 0;; "imagegrid" | "-imagegrid" | "--imagegrid" | "+imagegrid") COMPREPLY=( $(compgen -W "M>0,_N>0 >") ); return 0;; "imagegrid_hexagonal" | "-imagegrid_hexagonal" | "--imagegrid_hexagonal" | "+imagegrid_hexagonal") COMPREPLY=( $(compgen -W "_resolution>0,0<=_outline<=1 >") ); return 0;; "imagegrid_triangular" | "-imagegrid_triangular" | "--imagegrid_triangular" | "+imagegrid_triangular") COMPREPLY=( $(compgen -W "pattern_width>=1,_pattern_height>=1,_pattern_type,0<=_outline_opacity<=1,_outline_color1,... >") ); return 0;; "linearize_tiles" | "-linearize_tiles" | "--linearize_tiles" | "+linearize_tiles") COMPREPLY=( $(compgen -W "M>0,_N>0 >") ); return 0;; "map_sprites" | "-map_sprites" | "--map_sprites" | "+map_sprites") COMPREPLY=( $(compgen -W "_nb_sprites>=1,_allow_rotation={_0=none_|_1=90_deg._|_2=180_deg._} >") ); return 0;; "pack" | "-pack" | "--pack" | "+pack") COMPREPLY=( $(compgen -W "is_ratio_constraint={_0_|_1_},_sort_criterion >") ); return 0;; "puzzle" | "-puzzle" | "--puzzle" | "+puzzle") COMPREPLY=( $(compgen -W "_width>0,_height>0,_M>=1,_N>=1,_curvature,_centering,_connectors_variability,_resolution>=1 >") ); return 0;; "quadratize_tiles" | "-quadratize_tiles" | "--quadratize_tiles" | "+quadratize_tiles") COMPREPLY=( $(compgen -W "M>0,_N>0 >") ); return 0;; "rotate_tiles" | "-rotate_tiles" | "--rotate_tiles" | "+rotate_tiles") COMPREPLY=( $(compgen -W "angle,_M>0,N>0 >") ); return 0;; "shift_tiles" | "-shift_tiles" | "--shift_tiles" | "+shift_tiles") COMPREPLY=( $(compgen -W "M>0,_N>0,_amplitude >") ); return 0;; "taquin" | "-taquin" | "--taquin" | "+taquin") COMPREPLY=( $(compgen -W "M>0,_N>0,_remove_tile={_0=none_|_1=first_|_2=last_|_3=random_},_relief,_border_thickness[%],_border_outline[%],_outline_color >") ); return 0;; "tunnel" | "-tunnel" | "--tunnel" | "+tunnel") COMPREPLY=( $(compgen -W "_level>=0,_factor>0,_centering_x,_centering_y,_opacity,_angle >") ); return 0;; "boxfitting" | "-boxfitting" | "--boxfitting" | "+boxfitting") COMPREPLY=( $(compgen -W "_min_box_size>=1,_max_box_size>=0,_initial_density>=0,_nb_attempts>=1 >") ); return 0;; "brushify" | "-brushify" | "--brushify" | "+brushify") COMPREPLY=( $(compgen -W "[brush],_brush_nb_sizes>=1,0<=_brush_min_size_factor<=1,_brush_nb_orientations>=1,_brush_light_type,0<=_brush_light_strength<=1,_brush_opacity,_painting_density[%]>=0,0<=_painting_contours_coherence<=1,0<=_painting_orientation_coherence<=1,_painting_coherence_alpha[%]>=0,_painting_coherence_sigma[%]>=0,_painting_primary_angle,0<=_painting_angle_dispersion<=1 >") ); return 0;; "cartoon" | "-cartoon" | "--cartoon" | "+cartoon") COMPREPLY=( $(compgen -W "_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 >") ); return 0;; "color_ellipses" | "-color_ellipses" | "--color_ellipses" | "+color_ellipses") COMPREPLY=( $(compgen -W "_count>0,_radius>=0,_opacity>=0 >") ); return 0;; "cubism" | "-cubism" | "--cubism" | "+cubism") COMPREPLY=( $(compgen -W "_density>=0,0<=_thickness<=50,_max_angle,_opacity,_smoothness>=0 >") ); return 0;; "draw_whirl" | "-draw_whirl" | "--draw_whirl" | "+draw_whirl") COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;; "drawing" | "-drawing" | "--drawing" | "+drawing") COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;; "drop_shadow" | "-drop_shadow" | "--drop_shadow" | "+drop_shadow") COMPREPLY=( $(compgen -W "_offset_x[%],_offset_y[%],_smoothness[%]>=0,0<=_curvature<=1,_expand_size={_0_|_1_} >") ); return 0;; "ellipsionism" | "-ellipsionism" | "--ellipsionism" | "+ellipsionism") COMPREPLY=( $(compgen -W "_R>0[%],_r>0[%],_smoothness>=0[%],_opacity,_outline>0,_density>0 >") ); return 0;; "fire_edges" | "-fire_edges" | "--fire_edges" | "+fire_edges") COMPREPLY=( $(compgen -W "_edges>=0,0<=_attenuation<=1,_smoothness>=0,_threshold>=0,_nb_frames>0,_starting_frame>=0,frame_skip>=0 >") ); return 0;; "fractalize" | "-fractalize" | "--fractalize" | "+fractalize") COMPREPLY=( $(compgen -W "0<=detail_level<=1 >") ); return 0;; "glow" | "-glow" | "--glow" | "+glow") COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;; "halftone" | "-halftone" | "--halftone" | "+halftone") COMPREPLY=( $(compgen -W "nb_levels>=2,_size_dark>=2,_size_bright>=2,_shape={_0=square_|_1=diamond_|_2=circle_|_3=inv-square_|_4=inv-diamond_|_5=inv-circle_},_smoothness[%]>=0 >") ); return 0;; "hardsketchbw" | "-hardsketchbw" | "--hardsketchbw" | "+hardsketchbw") COMPREPLY=( $(compgen -W "_amplitude>=0,_density>=0,_opacity,0<=_edge_threshold<=100,_is_fast={_0_|_1_} >") ); return 0;; "hearts" | "-hearts" | "--hearts" | "+hearts") COMPREPLY=( $(compgen -W "_density>=0 >") ); return 0;; "houghsketchbw" | "-houghsketchbw" | "--houghsketchbw" | "+houghsketchbw") COMPREPLY=( $(compgen -W "_density>=0,_radius>0,0<=_threshold<=100,0<=_opacity<=1,_votesize[%]>0 >") ); return 0;; "lightrays" | "-lightrays" | "--lightrays" | "+lightrays") COMPREPLY=( $(compgen -W "100<=_density<=0,_center_x[%],_center_y[%],_ray_length>=0,_ray_attenuation>=0 >") ); return 0;; "light_relief" | "-light_relief" | "--light_relief" | "+light_relief") COMPREPLY=( $(compgen -W "_ambient_light,_specular_lightness,_specular_size,_darkness,_light_smoothness,_xl,_yl,_zl,_zscale,_opacity_is_heightmap={_0_|_1_} >") ); return 0;; "linify" | "-linify" | "--linify" | "+linify") COMPREPLY=( $(compgen -W "0<=_density<=100,_spreading>=0,_resolution[%]>0,_line_opacity>=0,_line_precision>0,_mode={_0=subtractive_|_1=additive_} >") ); return 0;; "mosaic" | "-mosaic" | "--mosaic" | "+mosaic") COMPREPLY=( $(compgen -W "0<=_density<=100 >") ); return 0;; "pencilbw" | "-pencilbw" | "--pencilbw" | "+pencilbw") COMPREPLY=( $(compgen -W "_size>=0,_amplitude>=0 >") ); return 0;; "pixelsort" | "-pixelsort" | "--pixelsort" | "+pixelsort") COMPREPLY=( $(compgen -W "_ordering={_+_|_-_},_axis={_x_|_y_|_z_|_xy_|_yx_},_[sorting_criterion],_[mask] >") ); return 0;; "polaroid" | "-polaroid" | "--polaroid" | "+polaroid") COMPREPLY=( $(compgen -W "_size1>=0,_size2>=0 >") ); return 0;; "polygonize" | "-polygonize" | "--polygonize" | "+polygonize") COMPREPLY=( $(compgen -W "_warp_amplitude>=0,_smoothness[%]>=0,_min_area[%]>=0,_resolution_x[%]>0,_resolution_y[%]>0 >") ); return 0;; "poster_edges" | "-poster_edges" | "--poster_edges" | "+poster_edges") COMPREPLY=( $(compgen -W "0<=_edge_threshold<=100,0<=_edge_shade<=100,_edge_thickness>=0,_edge_antialiasing>=0,0<=_posterization_level<=15,_posterization_antialiasing>=0 >") ); return 0;; "poster_hope" | "-poster_hope" | "--poster_hope" | "+poster_hope") COMPREPLY=( $(compgen -W "_smoothness>=0 >") ); return 0;; "rodilius" | "-rodilius" | "--rodilius" | "+rodilius") COMPREPLY=( $(compgen -W "0<=_amplitude<=100,_0<=thickness<=100,_sharpness>=0,_nb_orientations>0,_offset,_color_mode={_0=darker_|_1=brighter_} >") ); return 0;; "sketchbw" | "-sketchbw" | "--sketchbw" | "+sketchbw") COMPREPLY=( $(compgen -W "_nb_angles>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_} >") ); return 0;; "sponge" | "-sponge" | "--sponge" | "+sponge") COMPREPLY=( $(compgen -W "_size>0 >") ); return 0;; "stained_glass" | "-stained_glass" | "--stained_glass" | "+stained_glass") COMPREPLY=( $(compgen -W "_edges[%]>=0,_shading>=0,_is_thin_separators={_0_|_1_} >") ); return 0;; "stars" | "-stars" | "--stars" | "+stars") COMPREPLY=( $(compgen -W "_density[%]>=0,_depth>=0,_size>0,_nb_branches>=1,0<=_thickness<=1,_smoothness[%]>=0,_R,_G,_B,_opacity >") ); return 0;; "stencil" | "-stencil" | "--stencil" | "+stencil") COMPREPLY=( $(compgen -W "_radius[%]>=0,_smoothness>=0,_iterations>=0 >") ); return 0;; "stencilbw" | "-stencilbw" | "--stencilbw" | "+stencilbw") COMPREPLY=( $(compgen -W "_edges>=0,_smoothness>=0 >") ); return 0;; "stylize" | "-stylize" | "--stylize" | "+stylize") COMPREPLY=( $(compgen -W "[style_image],_fidelity_finest,_fidelity_coarsest,_fidelity_smoothness_finest>=0,_fidelity_smoothnes_coarsest>=0,0<=_fidelity_chroma<=1,_init_type,_init_resolution>=0,init_max_gradient>=0,_patchsize_analysis>0,_patchsize_synthesis>0,_patchsize_synthesis_final>0,_nb_matches_finest>=0,_nb_matches_coarsest>=0,_penalize_repetitions>=0,_matching_precision>=0,_scale_factor>1,_skip_finest_scales>=0,\"image_matching_command\" >") ); return 0;; "tetris" | "-tetris" | "--tetris" | "+tetris") COMPREPLY=( $(compgen -W "_scale>0 >") ); return 0;; "warhol" | "-warhol" | "--warhol" | "+warhol") COMPREPLY=( $(compgen -W "_M>0,_N>0,_smoothness>=0,_color>=0 >") ); return 0;; "weave" | "-weave" | "--weave" | "+weave") COMPREPLY=( $(compgen -W "_density>=0,0<=_thickness<=100,0<=_shadow<=100,_shading>=0,_fibers_amplitude>=0,_fibers_smoothness>=0,_angle,-1<=_x_curvature<=1,-1<=_y_curvature<=1 >") ); return 0;; "whirls" | "-whirls" | "--whirls" | "+whirls") COMPREPLY=( $(compgen -W "_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 >") ); return 0;; "deform" | "-deform" | "--deform" | "+deform") COMPREPLY=( $(compgen -W "_amplitude>=0,_interpolation >") ); return 0;; "euclidean2polar" | "-euclidean2polar" | "--euclidean2polar" | "+euclidean2polar") COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_stretch_factor>0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "fisheye" | "-fisheye" | "--fisheye" | "+fisheye") COMPREPLY=( $(compgen -W "_center_x,_center_y,0<=_radius<=100,_amplitude>=0 >") ); return 0;; "flower" | "-flower" | "--flower" | "+flower") COMPREPLY=( $(compgen -W "_amplitude,_frequency,_offset_r[%],_angle,_center_x[%],_center_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror} >") ); return 0;; "kaleidoscope" | "-kaleidoscope" | "--kaleidoscope" | "+kaleidoscope") COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_radius,_angle,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "map_sphere" | "-map_sphere" | "--map_sphere" | "+map_sphere") COMPREPLY=( $(compgen -W "_width>0,_height>0,_radius,_dilation>0,_fading>=0,_fading_power>=0 >") ); return 0;; "polar2euclidean" | "-polar2euclidean" | "--polar2euclidean" | "+polar2euclidean") COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_stretch_factor>0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "raindrops" | "-raindrops" | "--raindrops" | "+raindrops") COMPREPLY=( $(compgen -W "_amplitude,_density>=0,_wavelength>=0,_merging_steps>=0 >") ); return 0;; "ripple" | "-ripple" | "--ripple" | "+ripple") COMPREPLY=( $(compgen -W "_amplitude,_bandwidth,_shape={_0=bloc_|_1=triangle_|_2=sine_|_3=sine+_|_4=random_},_angle,_offset >") ); return 0;; "rotoidoscope" | "-rotoidoscope" | "--rotoidoscope" | "+rotoidoscope") COMPREPLY=( $(compgen -W "_center_x[%],_center_y[%],_tiles>0,_smoothness[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "spherize" | "-spherize" | "--spherize" | "+spherize") COMPREPLY=( $(compgen -W "_radius[%]>=0,_strength,_smoothness[%]>=0,_center_x[%],_center_y[%],_ratio_x/y>0,_angle,_interpolation >") ); return 0;; "symmetrize" | "-symmetrize" | "--symmetrize" | "+symmetrize") COMPREPLY=( $(compgen -W "_x[%],_y[%],_angle,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_},_is_antisymmetry={_0_|_1_},_swap_sides={_0_|_1_} >") ); return 0;; "transform_polar" | "-transform_polar" | "--transform_polar" | "+transform_polar") COMPREPLY=( $(compgen -W "\"expr_radius\",_\"expr_angle\",_center_x[%],_center_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_} >") ); return 0;; "twirl" | "-twirl" | "--twirl" | "+twirl") COMPREPLY=( $(compgen -W "_amplitude,_center_x[%],_center_y[%],_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "warp_perspective" | "-warp_perspective" | "--warp_perspective" | "+warp_perspective") COMPREPLY=( $(compgen -W "_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "water" | "-water" | "--water" | "+water") COMPREPLY=( $(compgen -W "_amplitude,_smoothness>=0,_angle >") ); return 0;; "wave" | "-wave" | "--wave" | "+wave") COMPREPLY=( $(compgen -W "_amplitude>=0,_frequency>=0,_center_x,_center_y >") ); return 0;; "wind" | "-wind" | "--wind" | "+wind") COMPREPLY=( $(compgen -W "_amplitude>=0,_angle,0<=_attenuation<=1,_threshold >") ); return 0;; "zoom" | "-zoom" | "--zoom" | "+zoom") COMPREPLY=( $(compgen -W "_factor,_cx,_cy,_cz,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "cracks" | "-cracks" | "--cracks" | "+cracks") COMPREPLY=( $(compgen -W "0<=_density<=100,_is_relief={_0_|_1_},_opacity,_color1,... >") ); return 0;; "light_patch" | "-light_patch" | "--light_patch" | "+light_patch") COMPREPLY=( $(compgen -W "_density>0,_darkness>=0,_lightness>=0 >") ); return 0;; "noise_hurl" | "-noise_hurl" | "--noise_hurl" | "+noise_hurl") COMPREPLY=( $(compgen -W "_amplitude>=0 >") ); return 0;; "pixelize" | "-pixelize" | "--pixelize" | "+pixelize") COMPREPLY=( $(compgen -W "_scale_x>0,_scale_y>0,_scale_z>0 >") ); return 0;; "scanlines" | "-scanlines" | "--scanlines" | "+scanlines") COMPREPLY=( $(compgen -W "_amplitude,_bandwidth,_shape={_0=bloc_|_1=triangle_|_2=sine_|_3=sine+_|_4=random_},_angle,_offset >") ); return 0;; "shade_stripes" | "-shade_stripes" | "--shade_stripes" | "+shade_stripes") COMPREPLY=( $(compgen -W "_frequency>=0,_direction={_0=horizontal_|_1=vertical_},_darkness>=0,_lightness>=0 >") ); return 0;; "shadow_patch" | "-shadow_patch" | "--shadow_patch" | "+shadow_patch") COMPREPLY=( $(compgen -W "_opacity>=0 >") ); return 0;; "spread" | "-spread" | "--spread" | "+spread") COMPREPLY=( $(compgen -W "_dx>=0,_dy>=0,_dz>=0 >") ); return 0;; "stripes_y" | "-stripes_y" | "--stripes_y" | "+stripes_y") COMPREPLY=( $(compgen -W "_frequency>=0 >") ); return 0;; "texturize_canvas" | "-texturize_canvas" | "--texturize_canvas" | "+texturize_canvas") COMPREPLY=( $(compgen -W "_amplitude>=0,_fibrousness>=0,_emboss_level>=0 >") ); return 0;; "vignette" | "-vignette" | "--vignette" | "+vignette") COMPREPLY=( $(compgen -W "_strength>=0,0<=_radius_min<=100,0<=_radius_max<=100 >") ); return 0;; "watermark_visible" | "-watermark_visible" | "--watermark_visible" | "+watermark_visible") COMPREPLY=( $(compgen -W "_text,0<_opacity<1,_size>0,_angle,_mode={_0=remove_|_1=add_},_smoothness>=0 >") ); return 0;; "blend" | "-blend" | "--blend" | "+blend") COMPREPLY=( $(compgen -W "[layer],blending_mode,_opacity[%],_selection_is={_0=base-layers_|_1=top-layers_} blending_mode,_opacity[%]") ); return 0;; "blend_edges" | "-blend_edges" | "--blend_edges" | "+blend_edges") COMPREPLY=( $(compgen -W "smoothness[%]>=0 >") ); return 0;; "blend_fade" | "-blend_fade" | "--blend_fade" | "+blend_fade") COMPREPLY=( $(compgen -W "[fading_shape] >") ); return 0;; "blend_seamless" | "-blend_seamless" | "--blend_seamless" | "+blend_seamless") COMPREPLY=( $(compgen -W "_is_mixed_mode={_0_|_1_},_inner_fading[%]>=0,_outer_fading[%]>=0 >") ); return 0;; "fade_diamond" | "-fade_diamond" | "--fade_diamond" | "+fade_diamond") COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;; "fade_linear" | "-fade_linear" | "--fade_linear" | "+fade_linear") COMPREPLY=( $(compgen -W "_angle,0<=_start<=100,0<=_end<=100 >") ); return 0;; "fade_radial" | "-fade_radial" | "--fade_radial" | "+fade_radial") COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;; "fade_x" | "-fade_x" | "--fade_x" | "+fade_x") COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;; "fade_y" | "-fade_y" | "--fade_y" | "+fade_y") COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;; "fade_z" | "-fade_z" | "--fade_z" | "+fade_z") COMPREPLY=( $(compgen -W "0<=_start<=100,0<=_end<=100 >") ); return 0;; "sub_alpha" | "-sub_alpha" | "--sub_alpha" | "+sub_alpha") COMPREPLY=( $(compgen -W "[base_image],_opacity_gain>=1 >") ); return 0;; "animate" | "-animate" | "--animate" | "+animate") COMPREPLY=( $(compgen -W "filter_name,\"param1_start,...,paramN_start\",\"param1_end,...,paramN_end\",nb_frames>=0,_output_frames={_0_|_1_},_output_filename delay>0,_back_and_forth={_0_|_1_}") ); return 0;; "apply_camera" | "-apply_camera" | "--apply_camera" | "+apply_camera") COMPREPLY=( $(compgen -W "_\"command\",_camera_index>=0,_skip_frames>=0,_output_filename >") ); return 0;; "apply_files" | "-apply_files" | "--apply_files" | "+apply_files") COMPREPLY=( $(compgen -W "\"filename_pattern\",_\"command\",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "apply_video" | "-apply_video" | "--apply_video" | "+apply_video") COMPREPLY=( $(compgen -W "video_filename,_\"command\",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "average_files" | "-average_files" | "--average_files" | "+average_files") COMPREPLY=( $(compgen -W "\"filename_pattern\",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "average_video" | "-average_video" | "--average_video" | "+average_video") COMPREPLY=( $(compgen -W "video_filename,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "fade_files" | "-fade_files" | "--fade_files" | "+fade_files") COMPREPLY=( $(compgen -W "\"filename_pattern\",_nb_inner_frames>0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "fade_video" | "-fade_video" | "--fade_video" | "+fade_video") COMPREPLY=( $(compgen -W "video_filename,_nb_inner_frames>0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "files2video" | "-files2video" | "--files2video" | "+files2video") COMPREPLY=( $(compgen -W "\"filename_pattern\",_output_filename,_fps>0,_codec >") ); return 0;; "median_files" | "-median_files" | "--median_files" | "+median_files") COMPREPLY=( $(compgen -W "\"filename_pattern\",_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_frame_rows[%]>=1,_is_fast_approximation={_0_|_1_} >") ); return 0;; "median_video" | "-median_video" | "--median_video" | "+median_video") COMPREPLY=( $(compgen -W "video_filename,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_frame_rows[%]>=1,_is_fast_approximation={_0_|_1_} >") ); return 0;; "morph" | "-morph" | "--morph" | "+morph") COMPREPLY=( $(compgen -W "nb_inner_frames>=1,_smoothness>=0,_precision>=0 >") ); return 0;; "morph_files" | "-morph_files" | "--morph_files" | "+morph_files") COMPREPLY=( $(compgen -W "\"filename_pattern\",_nb_inner_frames>0,_smoothness>=0,_precision>=0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "morph_video" | "-morph_video" | "--morph_video" | "+morph_video") COMPREPLY=( $(compgen -W "video_filename,_nb_inner_frames>0,_smoothness>=0,_precision>=0,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1,_output_filename >") ); return 0;; "register_nonrigid" | "-register_nonrigid" | "--register_nonrigid" | "+register_nonrigid") COMPREPLY=( $(compgen -W "[destination],_smoothness>=0,_precision>0,_nb_scale>=0 >") ); return 0;; "register_rigid" | "-register_rigid" | "--register_rigid" | "+register_rigid") COMPREPLY=( $(compgen -W "[destination],_smoothness>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "transition" | "-transition" | "--transition" | "+transition") COMPREPLY=( $(compgen -W "[transition_shape],nb_added_frames>=0,100>=shading>=0,_single_frame_only={_-1=disabled_|_>=0_} >") ); return 0;; "transition3d" | "-transition3d" | "--transition3d" | "+transition3d") COMPREPLY=( $(compgen -W "_nb_frames>=2,_nb_xtiles>0,_nb_ytiles>0,_axis_x,_axis_y,_axis_z,_is_antialias={_0_|_1_} >") ); return 0;; "video2files" | "-video2files" | "--video2files" | "+video2files") COMPREPLY=( $(compgen -W "input_filename,_output_filename,_first_frame>=0,_last_frame={_>=0_|_-1=last_},_frame_step>=1 >") ); return 0;; "nn_new_input" | "-nn_new_input" | "--nn_new_input" | "+nn_new_input") COMPREPLY=( $(compgen -W "module_name,width,_height,_spectrum >") ); return 0;; "nn_new_fullyconnected" | "-nn_new_fullyconnected" | "--nn_new_fullyconnected" | "+nn_new_fullyconnected") COMPREPLY=( $(compgen -W "module_name,previous_module_name,nb_neurons,activation_function >") ); return 0;; "nn_propagate_batch" | "-nn_propagate_batch" | "--nn_propagate_batch" | "+nn_propagate_batch") COMPREPLY=( $(compgen -W "module_name,[inputs_zstacked] >") ); return 0;; "nn_propagate" | "-nn_propagate" | "--nn_propagate" | "+nn_propagate") COMPREPLY=( $(compgen -W "module_name >") ); return 0;; "nn_backpropagate_batch" | "-nn_backpropagate_batch" | "--nn_backpropagate_batch" | "+nn_backpropagate_batch") COMPREPLY=( $(compgen -W "module_name,[inputs_zstacked],[expected_outputs_zstacked],_insert_network_outputs={_0_|_1_},_loss_function >") ); return 0;; "nn_backpropagate" | "-nn_backpropagate" | "--nn_backpropagate" | "+nn_backpropagate") COMPREPLY=( $(compgen -W "module_name,[expected_output],_loss_function >") ); return 0;; "nn_update" | "-nn_update" | "--nn_update" | "+nn_update") COMPREPLY=( $(compgen -W "module_name,epsilon >") ); return 0;; "nn_output" | "-nn_output" | "--nn_output" | "+nn_output") COMPREPLY=( $(compgen -W "module_name,filename >") ); return 0;; "nn_serialize" | "-nn_serialize" | "--nn_serialize" | "+nn_serialize") COMPREPLY=( $(compgen -W "module_name,_is_compressed={_0_|_1_} >") ); return 0;; "nn_input" | "-nn_input" | "--nn_input" | "+nn_input") COMPREPLY=( $(compgen -W "\"filename\" >") ); return 0;; "alert" | "-alert" | "--alert" | "+alert") COMPREPLY=( $(compgen -W "_title,_message,_label_button1,_label_button2,... >") ); return 0;; "arg" | "-arg" | "--arg" | "+arg") COMPREPLY=( $(compgen -W "n>=1,_arg1,...,_argN >") ); return 0;; "arg2var" | "-arg2var" | "--arg2var" | "+arg2var") COMPREPLY=( $(compgen -W "variable_name,argument_1,...,argument_N >") ); return 0;; "autocrop_coords" | "-autocrop_coords" | "--autocrop_coords" | "+autocrop_coords") COMPREPLY=( $(compgen -W "value1,value2,..._|_auto >") ); return 0;; "base642img" | "-base642img" | "--base642img" | "+base642img") COMPREPLY=( $(compgen -W "\"base64_string\" >") ); return 0;; "base642uchar" | "-base642uchar" | "--base642uchar" | "+base642uchar") COMPREPLY=( $(compgen -W "\"base64_string\" >") ); return 0;; "basename" | "-basename" | "--basename" | "+basename") COMPREPLY=( $(compgen -W "file_path,_variable_name_for_folder >") ); return 0;; "bin" | "-bin" | "--bin" | "+bin") COMPREPLY=( $(compgen -W "binary_int1,... >") ); return 0;; "bin2dec" | "-bin2dec" | "--bin2dec" | "+bin2dec") COMPREPLY=( $(compgen -W "binary_int1,... >") ); return 0;; "covariance_colors" | "-covariance_colors" | "--covariance_colors" | "+covariance_colors") COMPREPLY=( $(compgen -W "_avg_outvarname >") ); return 0;; "dec" | "-dec" | "--dec" | "+dec") COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;; "dec2str" | "-dec2str" | "--dec2str" | "+dec2str") COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;; "dec2bin" | "-dec2bin" | "--dec2bin" | "+dec2bin") COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;; "dec2hex" | "-dec2hex" | "--dec2hex" | "+dec2hex") COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;; "dec2oct" | "-dec2oct" | "--dec2oct" | "+dec2oct") COMPREPLY=( $(compgen -W "decimal_int1,... >") ); return 0;; "fact" | "-fact" | "--fact" | "+fact") COMPREPLY=( $(compgen -W "value >") ); return 0;; "fibonacci" | "-fibonacci" | "--fibonacci" | "+fibonacci") COMPREPLY=( $(compgen -W "N>=0 >") ); return 0;; "file_mv" | "-file_mv" | "--file_mv" | "+file_mv") COMPREPLY=( $(compgen -W "filename_src,filename_dest >") ); return 0;; "file_rm" | "-file_rm" | "--file_rm" | "+file_rm") COMPREPLY=( $(compgen -W "filename >") ); return 0;; "filename" | "-filename" | "--filename" | "+filename") COMPREPLY=( $(compgen -W "filename,_number1,_number2,...,_numberN >") ); return 0;; "files" | "-files" | "--files" | "+files") COMPREPLY=( $(compgen -W "_mode,path >") ); return 0;; "fitratio_wh" | "-fitratio_wh" | "--fitratio_wh" | "+fitratio_wh") COMPREPLY=( $(compgen -W "min_width,min_height,ratio_wh >") ); return 0;; "fitscreen" | "-fitscreen" | "--fitscreen" | "+fitscreen") COMPREPLY=( $(compgen -W "width,height,_depth,_minimal_size[%],_maximal_size[%] [image],_minimal_size[%],_maximal_size[%]") ); return 0;; "gcd" | "-gcd" | "--gcd" | "+gcd") COMPREPLY=( $(compgen -W "a,b >") ); return 0;; "hex" | "-hex" | "--hex" | "+hex") COMPREPLY=( $(compgen -W "hexadecimal_int1,... >") ); return 0;; "hex2dec" | "-hex2dec" | "--hex2dec" | "+hex2dec") COMPREPLY=( $(compgen -W "hexadecimal_int1,... >") ); return 0;; "hex2img" | "-hex2img" | "--hex2img" | "+hex2img") COMPREPLY=( $(compgen -W "\"hexadecimal_string\" >") ); return 0;; "hex2str" | "-hex2str" | "--hex2str" | "+hex2str") COMPREPLY=( $(compgen -W "hexadecimal_string >") ); return 0;; "img2base64" | "-img2base64" | "--img2base64" | "+img2base64") COMPREPLY=( $(compgen -W "_encoding={_0=base64_|_1=base64url_},_store_names={_0_|_1_} >") ); return 0;; "img2text" | "-img2text" | "--img2text" | "+img2text") COMPREPLY=( $(compgen -W "_line_separator >") ); return 0;; "is_change" | "-is_change" | "--is_change" | "+is_change") COMPREPLY=( $(compgen -W "_value={_0=false_|_1=true_} >") ); return 0;; "is_ext" | "-is_ext" | "--is_ext" | "+is_ext") COMPREPLY=( $(compgen -W "filename,_extension >") ); return 0;; "is_image_arg" | "-is_image_arg" | "--is_image_arg" | "+is_image_arg") COMPREPLY=( $(compgen -W "string >") ); return 0;; "is_pattern" | "-is_pattern" | "--is_pattern" | "+is_pattern") COMPREPLY=( $(compgen -W "string >") ); return 0;; "is_percent" | "-is_percent" | "--is_percent" | "+is_percent") COMPREPLY=( $(compgen -W "string >") ); return 0;; "is_variable_name" | "-is_variable_name" | "--is_variable_name" | "+is_variable_name") COMPREPLY=( $(compgen -W "\"str\" >") ); return 0;; "named" | "-named" | "--named" | "+named") COMPREPLY=( $(compgen -W "_mode,\"name1\",\"name2\",... >") ); return 0;; "normalize_filename" | "-normalize_filename" | "--normalize_filename" | "+normalize_filename") COMPREPLY=( $(compgen -W "filename >") ); return 0;; "oct" | "-oct" | "--oct" | "+oct") COMPREPLY=( $(compgen -W "octal_int1,... >") ); return 0;; "oct2dec" | "-oct2dec" | "--oct2dec" | "+oct2dec") COMPREPLY=( $(compgen -W "octal_int1,... >") ); return 0;; "padint" | "-padint" | "--padint" | "+padint") COMPREPLY=( $(compgen -W "number,_size>0 >") ); return 0;; "remove_copymark" | "-remove_copymark" | "--remove_copymark" | "+remove_copymark") COMPREPLY=( $(compgen -W "\"image_name\" >") ); return 0;; "str" | "-str" | "--str" | "+str") COMPREPLY=( $(compgen -W "string >") ); return 0;; "str2hex" | "-str2hex" | "--str2hex" | "+str2hex") COMPREPLY=( $(compgen -W "string >") ); return 0;; "strcapitalize" | "-strcapitalize" | "--strcapitalize" | "+strcapitalize") COMPREPLY=( $(compgen -W "string >") ); return 0;; "strcontains" | "-strcontains" | "--strcontains" | "+strcontains") COMPREPLY=( $(compgen -W "string1,string2 >") ); return 0;; "strlen" | "-strlen" | "--strlen" | "+strlen") COMPREPLY=( $(compgen -W "string1 >") ); return 0;; "strreplace" | "-strreplace" | "--strreplace" | "+strreplace") COMPREPLY=( $(compgen -W "string,search,replace >") ); return 0;; "strlowercase" | "-strlowercase" | "--strlowercase" | "+strlowercase") COMPREPLY=( $(compgen -W "string >") ); return 0;; "struppercase" | "-struppercase" | "--struppercase" | "+struppercase") COMPREPLY=( $(compgen -W "string >") ); return 0;; "strvar" | "-strvar" | "--strvar" | "+strvar") COMPREPLY=( $(compgen -W "string >") ); return 0;; "strver" | "-strver" | "--strver" | "+strver") COMPREPLY=( $(compgen -W "_version >") ); return 0;; "to_clutname" | "-to_clutname" | "--to_clutname" | "+to_clutname") COMPREPLY=( $(compgen -W "\"string\" >") ); return 0;; "uchar2base64" | "-uchar2base64" | "--uchar2base64" | "+uchar2base64") COMPREPLY=( $(compgen -W "_encoding={_0=base64_|_1=base64url_} >") ); return 0;; "demo" | "-demo" | "--demo" | "+demo") COMPREPLY=( $(compgen -W "_run_in_parallel={_0=no_|_1=yes_|_2=auto_} >") ); return 0;; "x_color_curves" | "-x_color_curves" | "--x_color_curves" | "+x_color_curves") COMPREPLY=( $(compgen -W "_colorspace={_rgb_|_cmy_|_cmyk_|_hsi_|_hsl_|_hsv_|_lab_|_lch_|_ycbcr_|_last_} >") ); return 0;; "x_colorize" | "-x_colorize" | "--x_colorize" | "+x_colorize") COMPREPLY=( $(compgen -W "_is_lineart={_0_|_1_},_max_resolution={_0_|_>=128_},_multichannels_output={_0_|_1_},_[palette1],_[palette2],_[grabber1] >") ); return 0;; "x_grab_color" | "-x_grab_color" | "--x_grab_color" | "+x_grab_color") COMPREPLY=( $(compgen -W "_variable_name >") ); return 0;; "x_jawbreaker" | "-x_jawbreaker" | "--x_jawbreaker" | "+x_jawbreaker") COMPREPLY=( $(compgen -W "0<_width<20,0<_height<20,0<_balls<=8 >") ); return 0;; "x_mandelbrot" | "-x_mandelbrot" | "--x_mandelbrot" | "+x_mandelbrot") COMPREPLY=( $(compgen -W "_julia={_0_|_1_},_c0r,_c0i >") ); return 0;; "x_mask_color" | "-x_mask_color" | "--x_mask_color" | "+x_mask_color") COMPREPLY=( $(compgen -W "_colorspace={_all_|_rgb_|_lrgb_|_ycbcr_|_lab_|_lch_|_hsv_|_hsi_|_hsl_|_cmy_|_cmyk_|_yiq_},_spatial_tolerance>=0,_color_tolerance>=0 >") ); return 0;; "x_minesweeper" | "-x_minesweeper" | "--x_minesweeper" | "+x_minesweeper") COMPREPLY=( $(compgen -W "8<=_width=<20,8<=_height<=20 >") ); return 0;; "x_morph" | "-x_morph" | "--x_morph" | "+x_morph") COMPREPLY=( $(compgen -W "_nb_frames>=2,_preview_fidelity={_0=coarsest_|_1=coarse_|_2=normal_|_3=fine_|_4=finest_} >") ); return 0;; "x_quantize_rgb" | "-x_quantize_rgb" | "--x_quantize_rgb" | "+x_quantize_rgb") COMPREPLY=( $(compgen -W "_nbcolors>=2 >") ); return 0;; "x_segment" | "-x_segment" | "--x_segment" | "+x_segment") COMPREPLY=( $(compgen -W "_max_resolution={_0_|_>=128_} >") ); return 0;; "x_select_color" | "-x_select_color" | "--x_select_color" | "+x_select_color") COMPREPLY=( $(compgen -W "_variable_name >") ); return 0;; "x_select_function1d" | "-x_select_function1d" | "--x_select_function1d" | "+x_select_function1d") COMPREPLY=( $(compgen -W "_variable_name,_background_curve_R,_background_curve_G,_background_curve_B >") ); return 0;; "x_select_palette" | "-x_select_palette" | "--x_select_palette" | "+x_select_palette") COMPREPLY=( $(compgen -W "_variable_name,_number_of_columns={_0=auto_|_>0_} >") ); return 0;; "x_warp" | "-x_warp" | "--x_warp" | "+x_warp") COMPREPLY=( $(compgen -W "_nb_keypoints_xgrid>=2,_nb_keypoints_ygrid>=2,_nb_keypoints_contours>=0,_preview_fidelity={_0=coarsest_|_1=coarse_|_2=normal_|_3=fine_|_4=finest_},_[background_image],0<=_background_opacity<=1 >") ); return 0;; "x_whirl" | "-x_whirl" | "--x_whirl" | "+x_whirl") COMPREPLY=( $(compgen -W "_opacity>=0 >") ); return 0;; "h" | "-h" | "--h" | "+h") COMPREPLY=( $(compgen -W "$coms" -- "$cur") ); return 0;; "m" | "-m" | "--m" | "+m") COMPREPLY=( $(compgen -W "_add_debug_info={_0_|_1_},{_filename_|_http[s]://URL_|_\"string\"_} >") ); return 0;; "d" | "-d" | "--d" | "+d") COMPREPLY=( $(compgen -W "_X[%]>=0,_Y[%]>=0,_Z[%]>=0,_exit_on_anykey={_0_|_1_} >") ); return 0;; "d3d" | "-d3d" | "--d3d" | "+d3d") COMPREPLY=( $(compgen -W "_[background_image],_exit_on_anykey={_0_|_1_} _exit_on_anykey={_0_|_1_}") ); return 0;; "da" | "-da" | "--da" | "+da") COMPREPLY=( $(compgen -W "_width>0,_height>0 >") ); return 0;; "dg" | "-dg" | "--dg" | "+dg") COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax,_xlabel,_ylabel >") ); return 0;; "dh" | "-dh" | "--dh" | "+dh") COMPREPLY=( $(compgen -W "_width>=0,_height>=0,_clusters>0,_min_value[%],_max_value[%],_show_axes={_0_|_1_},_expression. >") ); return 0;; "dq" | "-dq" | "--dq" | "+dq") COMPREPLY=( $(compgen -W "_size_factor>0,_arrow_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_} >") ); return 0;; "drgba" | "-drgba" | "--drgba" | "+drgba") COMPREPLY=( $(compgen -W "_background_RGB_color >") ); return 0;; "dt" | "-dt" | "--dt" | "+dt") COMPREPLY=( $(compgen -W "_size_factor>0,_ellipse_size>=0,_color_mode={_0=monochrome_|_1=grayscale_|_2=color_},_outline>=0 >") ); return 0;; "dw" | "-dw" | "--dw" | "+dw") COMPREPLY=( $(compgen -W "_cell_size>0 >") ); return 0;; "e" | "-e" | "--e" | "+e") COMPREPLY=( $(compgen -W "message >") ); return 0;; "ig" | "-ig" | "--ig" | "+ig") COMPREPLY=( $(compgen -W "pattern >") ); return 0;; "on" | "-on" | "--on" | "+on") COMPREPLY=( $(compgen -W "filename,_index >") ); return 0;; "op" | "-op" | "--op" | "+op") COMPREPLY=( $(compgen -W "prefix >") ); return 0;; "ox" | "-ox" | "--ox" | "+ox") COMPREPLY=( $(compgen -W "extension1,_extension2,_...,_extensionN,_output_at_same_location={_0_|_1_} >") ); return 0;; "sh" | "-sh" | "--sh" | "+sh") COMPREPLY=( $(compgen -W "x0[%],x1[%],y[%],z[%],c[%] y0[%],y1[%],z[%],c[%] z0[%],z1[%],c[%] c0[%],c1[%] c0[%] (no_arg)") ); return 0;; "sp" | "-sp" | "--sp" | "+sp") COMPREPLY=( $(compgen -W "_name1={_?_|_apples_|_balloons_|_barbara_|_boats_|_bottles_|_butterfly_|_cameraman_|_car_|_cat_|_cliff_|_chick_|_colorful_|_david_|_dog_|_duck_|_eagle_|_elephant_|_earth_|_flower_|_fruits_|_gmicky_|_gmicky_mahvin_|_gmicky_wilber_|_greece_|_gummy_|_house_|_inside_|_landscape_|_leaf_|_lena_|_leno_|_lion_|_mandrill_|_monalisa_|_monkey_|_parrots_|_pencils_|_peppers_|_portrait0_|_portrait1_|_portrait2_|_portrait3_|_portrait4_|_portrait5_|_portrait6_|_portrait7_|_portrait8_|_portrait9_|_roddy_|_rooster_|_rose_|_square_|_swan_|_teddy_|_tiger_|_tulips_|_wall_|_waterfall_|_zelda_},_name2,...,_nameN,_width={_>=0_|_0_(auto)_},_height_=_{_>=0_|_0_(auto)_} (no_arg)") ); return 0;; "v" | "-v" | "--v" | "+v") COMPREPLY=( $(compgen -W "level {_+_|_-_}") ); return 0;; "w" | "-w" | "--w" | "+w") COMPREPLY=( $(compgen -W "_width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_pos_x[%],_pos_y[%],_title >") ); return 0;; "mv" | "-mv" | "--mv" | "+mv") COMPREPLY=( $(compgen -W "position[%] >") ); return 0;; "nm" | "-nm" | "--nm" | "+nm") COMPREPLY=( $(compgen -W "\"name1\",\"name2\",... >") ); return 0;; "+" | "-+" | "--+" | "++") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "&" | "-&" | "--&" | "+&") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "<<" | "-<<" | "--<<" | "+<<") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; ">>" | "->>" | "-->>" | "+>>") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "/" | "-/" | "--/" | "+/") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "==" | "-==" | "--==" | "+==") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; ">=" | "->=" | "-->=" | "+>=") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; ">" | "->" | "-->" | "+>") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "<=" | "-<=" | "--<=" | "+<=") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "<" | "-<" | "--<" | "+<") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "m/" | "-m/" | "--m/" | "+m/") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "%" | "-%" | "--%" | "+%") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "m*" | "-m*" | "--m*" | "+m*") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "*" | "-*" | "--*" | "+*") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "!=" | "-!=" | "--!=" | "+!=") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "|" | "-|" | "--|" | "+|") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "^" | "-^" | "--^" | "+^") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "-" | "--" | "---" | "+-") COMPREPLY=( $(compgen -W "value[%] [image] \'formula\' (no_arg)") ); return 0;; "c" | "-c" | "--c" | "+c") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_} [image]") ); return 0;; "f" | "-f" | "--f" | "+f") COMPREPLY=( $(compgen -W "value1,_value2,... [image] \'formula\'") ); return 0;; "ir" | "-ir" | "--ir" | "+ir") COMPREPLY=( $(compgen -W "min[%],max[%],_include_boundaries={_0=no_|_1=yes_} >") ); return 0;; "n" | "-n" | "--n" | "+n") COMPREPLY=( $(compgen -W "{_value0[%]_|_[image0]_},{_value1[%]_|_[image1]_},_constant_case_ratio [image]") ); return 0;; "=" | "-=" | "--=" | "+=") COMPREPLY=( $(compgen -W "value,_x[%],_y[%],_z[%],_c[%] >") ); return 0;; "ac" | "-ac" | "--ac" | "+ac") COMPREPLY=( $(compgen -W "\"command\",color_channels,_value_action={_0=none_|_1=cut_|_2=normalize_} >") ); return 0;; "fc" | "-fc" | "--fc" | "+fc") COMPREPLY=( $(compgen -W "col1,...,colN >") ); return 0;; "a" | "-a" | "--a" | "+a") COMPREPLY=( $(compgen -W "[image],axis,_centering axis,_centering") ); return 0;; "z" | "-z" | "--z" | "+z") COMPREPLY=( $(compgen -W "x0[%],x1[%],_boundary_conditions x0[%],y0[%],x1[%],y1[%],_boundary_conditions x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_boundary_conditions x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_boundary_conditions") ); return 0;; "r" | "-r" | "--r" | "+r") COMPREPLY=( $(compgen -W "[image],_interpolation,_boundary_conditions,_ax,_ay,_az,_ac {[image_w]_|_width>0[%]},_{[image_h]_|_height>0[%]},_{[image_d]_|_depth>0[%]},_{[image_s]_|_spectrum>0[%]},_interpolation,_boundary_conditions,_ax,_ay,_az,_ac") ); return 0;; "rr2d" | "-rr2d" | "--rr2d" | "+rr2d") COMPREPLY=( $(compgen -W "width>0,height>0,_mode={_0=inside_|_1=outside_|_2=padded_},0=<_interpolation<=6 >") ); return 0;; "r2dx" | "-r2dx" | "--r2dx" | "+r2dx") COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "r2dy" | "-r2dy" | "--r2dy" | "+r2dy") COMPREPLY=( $(compgen -W "height[%]>=0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "r3dx" | "-r3dx" | "--r3dx" | "+r3dx") COMPREPLY=( $(compgen -W "width[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "r3dy" | "-r3dy" | "--r3dy" | "+r3dy") COMPREPLY=( $(compgen -W "height[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "r3dz" | "-r3dz" | "--r3dz" | "+r3dz") COMPREPLY=( $(compgen -W "depth[%]>0,_interpolation,_boundary_conditions,_ax,_ay,_az,_ac >") ); return 0;; "s" | "-s" | "--s" | "+s") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},_split_mode keep_splitting_values={_+_|_-_},_{_x_|_y_|_z_|_c_}...{_x_|_y_|_z_|_c_},value1,_value2,... (no_arg)") ); return 0;; "y" | "-y" | "--y" | "+y") COMPREPLY=( $(compgen -W "_axis={_x_|_y_|_z_|_c_} >") ); return 0;; "b" | "-b" | "--b" | "+b") COMPREPLY=( $(compgen -W "std_deviation>=0[%],_boundary_conditions,_kernel axes,std_deviation>=0[%],_boundary_conditions,_kernel") ); return 0;; "g" | "-g" | "--g" | "+g") COMPREPLY=( $(compgen -W "{_x_|_y_|_z_}...{_x_|_y_|_z_},_scheme (no_arg)") ); return 0;; "j" | "-j" | "--j" | "+j") COMPREPLY=( $(compgen -W "[sprite],_x[%|~],_y[%|~],_z[%|~],_c[%|~],_opacity,_[opacity_mask],_max_opacity_mask >") ); return 0;; "j3d" | "-j3d" | "--j3d" | "+j3d") COMPREPLY=( $(compgen -W "[object3d],_x[%],_y[%],_z,_opacity,_rendering_mode,_is_double_sided={_0_|_1_},_is_zbuffer={_0_|_1_},_focale,_light_x,_light_y,_light_z,_specular_lightness,_specular_shininess >") ); return 0;; "t" | "-t" | "--t" | "+t") COMPREPLY=( $(compgen -W "text,_x[%|~],_y[%|~],_font_height[%]>=0,_opacity,_color1,... >") ); return 0;; "to" | "-to" | "--to" | "+to") COMPREPLY=( $(compgen -W "text,_x[%|~],_y[%|~],_font_height[%]>0,_outline>=0,_opacity,_color1,... >") ); return 0;; "+3d" | "-+3d" | "--+3d" | "++3d") COMPREPLY=( $(compgen -W "tx,_ty,_tz [object3d] (no_arg)") ); return 0;; "col3d" | "-col3d" | "--col3d" | "+col3d") COMPREPLY=( $(compgen -W "R,_G,_B,_opacity >") ); return 0;; "/3d" | "-/3d" | "--/3d" | "+/3d") COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;; "db3d" | "-db3d" | "--db3d" | "+db3d") COMPREPLY=( $(compgen -W "_is_double_sided={_0_|_1_} >") ); return 0;; "f3d" | "-f3d" | "--f3d" | "+f3d") COMPREPLY=( $(compgen -W "focale >") ); return 0;; "l3d" | "-l3d" | "--l3d" | "+l3d") COMPREPLY=( $(compgen -W "position_x,position_y,position_z [texture] (no_arg)") ); return 0;; "m3d" | "-m3d" | "--m3d" | "+m3d") COMPREPLY=( $(compgen -W "_mode >") ); return 0;; "md3d" | "-md3d" | "--md3d" | "+md3d") COMPREPLY=( $(compgen -W "_mode >") ); return 0;; "*3d" | "-*3d" | "--*3d" | "+*3d") COMPREPLY=( $(compgen -W "factor factor_x,factor_y,_factor_z") ); return 0;; "o3d" | "-o3d" | "--o3d" | "+o3d") COMPREPLY=( $(compgen -W "_opacity >") ); return 0;; "p3d" | "-p3d" | "--p3d" | "+p3d") COMPREPLY=( $(compgen -W "mode >") ); return 0;; "r3d" | "-r3d" | "--r3d" | "+r3d") COMPREPLY=( $(compgen -W "u,v,w,angle >") ); return 0;; "sl3d" | "-sl3d" | "--sl3d" | "+sl3d") COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;; "ss3d" | "-ss3d" | "--ss3d" | "+ss3d") COMPREPLY=( $(compgen -W "value>=0 >") ); return 0;; "s3d" | "-s3d" | "--s3d" | "+s3d") COMPREPLY=( $(compgen -W "_keep_shared_data={_0_|_1_} >") ); return 0;; "-3d" | "--3d" | "---3d" | "+-3d") COMPREPLY=( $(compgen -W "tx,_ty,_tz >") ); return 0;; "t3d" | "-t3d" | "--t3d" | "+t3d") COMPREPLY=( $(compgen -W "[ind_texture],_[ind_coords] >") ); return 0;; "ap" | "-ap" | "--ap" | "+ap") COMPREPLY=( $(compgen -W "\"command\" >") ); return 0;; "apc" | "-apc" | "--apc" | "+apc") COMPREPLY=( $(compgen -W "\"command\" >") ); return 0;; "apo" | "-apo" | "--apo" | "+apo") COMPREPLY=( $(compgen -W "\"command\",overlap[%],nb_threads={_0=auto_|_1_|_2_|_4_|_8_|_16_} >") ); return 0;; "at" | "-at" | "--at" | "+at") COMPREPLY=( $(compgen -W "\"command\",_tile_width[%]>0,_tile_height[%]>0,_tile_depth[%]>0,_overlap_width[%]>=0,_overlap_height[%]>=0,_overlap_depth[%]>=0,_boundary_conditions={_0=dirichlet_|_1=neumann_|_2=periodic_|_3=mirror_} >") ); return 0;; "x" | "-x" | "--x" | "+x") COMPREPLY=( $(compgen -W "_is_verbose={_0_|_1_},\"command\" >") ); return 0;; "u" | "-u" | "--u" | "+u") COMPREPLY=( $(compgen -W "status_string >") ); return 0;; "frame" | "-frame" | "--frame" | "+frame") COMPREPLY=( $(compgen -W "size_x[%],_size_y[%],_col1,...,_colN >") ); return 0;; "nmd" | "-nmd" | "--nmd" | "+nmd") COMPREPLY=( $(compgen -W "_mode,\"name1\",\"name2\",... >") ); return 0;; esac COMPREPLY=( $(compgen -W "$opts" -- "$cur") ) if type -t _filedir >/dev/null; then _filedir else comptopt -o filenames 2>/dev/null COMPREPLY=( $(compgen -f -- ${cur}) ) fi } complete -F _gmic_stdlib -o filenames gmic [100%] Built target bashcompletion /usr/local/bin/cmake -E cmake_progress_start /construction/graphics/gmic/.build/CMakeFiles 0 SUCCEEDED 00:19:23 ------------------------------------------------------------------------------- -- Phase: run-depends ------------------------------------------------------------------------------- ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/ice.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/sm.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/xext.pc - found SUCCEEDED 00:00:00 ------------------------------------------------------------------------------- -- Phase: stage ------------------------------------------------------------------------------- ===> Staging for gmic-2.9.0_2 ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/ice.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/sm.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/x11.pc - found ===> gmic-2.9.0_2 depends on file: /usr/local/libdata/pkgconfig/xext.pc - found ===> Generating temporary packing list /usr/local/bin/cmake -S/construction/graphics/gmic/gmic-2.9.0 -B/construction/graphics/gmic/.build --check-build-system CMakeFiles/Makefile.cmake 0 /usr/local/bin/cmake -E cmake_progress_start /construction/graphics/gmic/.build/CMakeFiles /construction/graphics/gmic/.build/CMakeFiles/progress.marks /usr/bin/make -f CMakeFiles/Makefile2 all /usr/bin/make -f CMakeFiles/gmic_extra_headers.dir/build.make CMakeFiles/gmic_extra_headers.dir/depend cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/gmic_extra_headers.dir/DependInfo.cmake /usr/bin/make -f CMakeFiles/gmic_extra_headers.dir/build.make CMakeFiles/gmic_extra_headers.dir/build [ 0%] Built target gmic_extra_headers /usr/bin/make -f CMakeFiles/libgmic.dir/build.make CMakeFiles/libgmic.dir/depend cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/libgmic.dir/DependInfo.cmake /usr/bin/make -f CMakeFiles/libgmic.dir/build.make CMakeFiles/libgmic.dir/build [ 33%] Built target libgmic /usr/bin/make -f CMakeFiles/gmic.dir/build.make CMakeFiles/gmic.dir/depend cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/gmic.dir/DependInfo.cmake /usr/bin/make -f CMakeFiles/gmic.dir/build.make CMakeFiles/gmic.dir/build [ 66%] Built target gmic /usr/bin/make -f CMakeFiles/bashcompletion.dir/build.make CMakeFiles/bashcompletion.dir/depend cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/bashcompletion.dir/DependInfo.cmake /usr/bin/make -f CMakeFiles/bashcompletion.dir/build.make CMakeFiles/bashcompletion.dir/build [ 83%] Built target bashcompletion /usr/bin/make -f CMakeFiles/man.dir/build.make CMakeFiles/man.dir/depend cd /construction/graphics/gmic/.build && /usr/local/bin/cmake -E cmake_depends "Unix Makefiles" /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/gmic-2.9.0 /construction/graphics/gmic/.build /construction/graphics/gmic/.build /construction/graphics/gmic/.build/CMakeFiles/man.dir/DependInfo.cmake /usr/bin/make -f CMakeFiles/man.dir/build.make CMakeFiles/man.dir/build [100%] Built target man /usr/local/bin/cmake -E cmake_progress_start /construction/graphics/gmic/.build/CMakeFiles 0 /usr/bin/make -f CMakeFiles/Makefile2 preinstall Installing the project stripped... /usr/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake -- Install configuration: "Release" -- Installing: /construction/graphics/gmic/stage/usr/local/lib/libgmic.so.1 -- Installing: /construction/graphics/gmic/stage/usr/local/lib/libgmic.so -- Installing: /construction/graphics/gmic/stage/usr/local/include/gmic.h -- Installing: /construction/graphics/gmic/stage/usr/local/bin/gmic -- Installing: /construction/graphics/gmic/stage/usr/local/man/man1/gmic.1 -- Installing: /construction/graphics/gmic/stage/usr/local/lib/cmake/gmic/GmicTargets.cmake -- Installing: /construction/graphics/gmic/stage/usr/local/lib/cmake/gmic/GmicTargets-release.cmake -- Installing: /construction/graphics/gmic/stage/usr/local/lib/cmake/gmic/GmicConfig.cmake ====> Compressing man pages (compress-man) ====> Running Q/A tests (stage-qa) Error: /usr/local/bin/gmic is linked to /usr/local/lib/libcurl.so.4 from ftp/curl but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libcurl.so:ftp/curl Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libxcb.so.1 from x11/libxcb but it is not declared as a dependency Warning: you need USE_XORG+=xcb Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libjbig.so.2 from graphics/jbigkit but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libjbig.so:graphics/jbigkit Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libwebp.so.7 from graphics/webp but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libwebp.so:graphics/webp Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libwebpmux.so.3 from graphics/webp but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libwebpmux.so:graphics/webp Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/liblcms2.so.2 from graphics/lcms2 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=liblcms2.so:graphics/lcms2 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libfreetype.so.6 from print/freetype2 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libfreetype.so:print/freetype2 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libjasper.so.4 from graphics/jasper but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libjasper.so:graphics/jasper Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libwmflite-0.2.so.7 from graphics/libwmf but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libwmflite-0.2.so:graphics/libwmf Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libxml2.so.2 from textproc/libxml2 but it is not declared as a dependency Warning: you need USE_GNOME+=libxml2 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libprotobuf.so.22 from devel/protobuf but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libprotobuf.so:devel/protobuf Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libharfbuzz.so.0 from print/harfbuzz but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libharfbuzz.so:print/harfbuzz Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libhdf5.so.103 from science/hdf5 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libhdf5.so:science/hdf5 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libsz.so.2 from science/szip but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libsz.so:science/szip Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libglog.so.0 from devel/glog but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libglog.so:devel/glog Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libgflags.so.2.2 from devel/gflags but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libgflags.so:devel/gflags Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libtesseract.so.4 from graphics/tesseract but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libtesseract.so:graphics/tesseract Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/liblept.so.5 from graphics/leptonica but it is not declared as a dependency Warning: you need LIB_DEPENDS+=liblept.so:graphics/leptonica Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libv4l1.so.0 from multimedia/libv4l but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libv4l1.so:multimedia/libv4l Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libv4l2.so.0 from multimedia/libv4l but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libv4l2.so:multimedia/libv4l Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libavcodec.so.58 from multimedia/ffmpeg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libavcodec.so:multimedia/ffmpeg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libavformat.so.58 from multimedia/ffmpeg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libavformat.so:multimedia/ffmpeg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libavutil.so.56 from multimedia/ffmpeg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libavutil.so:multimedia/ffmpeg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libswscale.so.5 from multimedia/ffmpeg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libswscale.so:multimedia/ffmpeg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libavresample.so.4 from multimedia/ffmpeg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libavresample.so:multimedia/ffmpeg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libnghttp2.so.14 from www/libnghttp2 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libnghttp2.so:www/libnghttp2 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libssl.so.11 from security/openssl but it is not declared as a dependency Warning: you need USES=ssl Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libcrypto.so.11 from security/openssl but it is not declared as a dependency Warning: you need USES=ssl Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libXau.so.6 from x11/libXau but it is not declared as a dependency Warning: you need USE_XORG+=xau Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libXdmcp.so.6 from x11/libXdmcp but it is not declared as a dependency Warning: you need USE_XORG+=xdmcp Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libglib-2.0.so.0 from devel/glib20 but it is not declared as a dependency Warning: you need USE_GNOME+=glib20 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libintl.so.8 from devel/gettext-runtime but it is not declared as a dependency Warning: you need USES+=gettext-runtime Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libgraphite2.so.3 from graphics/graphite2 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libgraphite2.so:graphics/graphite2 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libgif.so.7 from graphics/giflib but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libgif.so:graphics/giflib Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libv4lconvert.so.0 from multimedia/libv4l but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libv4lconvert.so:multimedia/libv4l Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libswresample.so.3 from multimedia/ffmpeg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libswresample.so:multimedia/ffmpeg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libvpx.so.6 from multimedia/libvpx but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libvpx.so:multimedia/libvpx Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libdav1d.so.4 from multimedia/dav1d but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libdav1d.so:multimedia/dav1d Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libaom.so.2 from multimedia/aom but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libaom.so:multimedia/aom Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libopus.so.0 from audio/opus but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libopus.so:audio/opus Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libtheoraenc.so.1 from multimedia/libtheora but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libtheoraenc.so:multimedia/libtheora Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libtheoradec.so.1 from multimedia/libtheora but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libtheoradec.so:multimedia/libtheora Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libvorbis.so.0 from audio/libvorbis but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libvorbis.so:audio/libvorbis Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libvorbisenc.so.2 from audio/libvorbis but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libvorbisenc.so:audio/libvorbis Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libx264.so.159 from multimedia/libx264 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libx264.so:multimedia/libx264 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libx265.so.179 from multimedia/x265 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libx265.so:multimedia/x265 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libxvidcore.so.4 from multimedia/xvid but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libxvidcore.so:multimedia/xvid Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libva.so.2 from multimedia/libva but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libva.so:multimedia/libva Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libgmp.so.10 from math/gmp but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libgmp.so:math/gmp Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libgnutls.so.30 from security/gnutls but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libgnutls.so:security/gnutls Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libva-drm.so.2 from multimedia/libva but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libva-drm.so:multimedia/libva Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libvdpau.so.1 from multimedia/libvdpau but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libvdpau.so:multimedia/libvdpau Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libiconv.so.2 from converters/libiconv but it is not declared as a dependency Warning: you need USES+=iconv, USES+=iconv:wchar_t, or USES+=iconv:translit depending on needs Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libpcre.so.1 from devel/pcre but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libpcre.so:devel/pcre Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libogg.so.0 from audio/libogg but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libogg.so:audio/libogg Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libp11-kit.so.0 from security/p11-kit but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libp11-kit.so:security/p11-kit Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libidn2.so.0 from dns/libidn2 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libidn2.so:dns/libidn2 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libunistring.so.2 from devel/libunistring but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libunistring.so:devel/libunistring Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libtasn1.so.6 from security/libtasn1 but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libtasn1.so:security/libtasn1 Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libnettle.so.7 from security/nettle but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libnettle.so:security/nettle Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libhogweed.so.5 from security/nettle but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libhogweed.so:security/nettle Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libdrm.so.2 from graphics/libdrm but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libdrm.so:graphics/libdrm Error: /usr/local/lib/libgmic.so.1 is linked to /usr/local/lib/libffi.so.6 from devel/libffi but it is not declared as a dependency Warning: you need LIB_DEPENDS+=libffi.so:devel/libffi Warning: You have disabled the licenses framework with DISABLE_LICENSES, unable to run checks SUCCEEDED 00:00:11 ------------------------------------------------------------------------------- -- Phase: package ------------------------------------------------------------------------------- ===> Building package for gmic-2.9.0_2 file sizes/checksums [8]: 0% file sizes/checksums [8]: 100% packing files [8]: 0% packing files [8]: 100% packing directories [0]: 0% packing directories [0]: 100% SUCCEEDED 00:00:06 TOTAL TIME 00:21:47