Argyll CMS documentation index (V0.70 Beta8)

Date:   15th January 2008
Author: Graeme Gill

Introduction

Argyll is an open source, ICC compatible color management system. It supports accurate ICC profile creation for scanners, CMYK printers, film recorders and calibration and profiling of displays. Spectral sample data is supported, allowing a selection of illuminants observer types, and paper fluorescent whitener additive compensation. Profiles can also incorporate source specific gamut mappings for perceptual and saturation intents. Gamut mapping and profile linking uses the CIECAM02 appearance model, a unique gamut mapping algorithm, and a wide selection of rendering intents. It also includes code for the fastest portable 8 bit raster color conversion engine available anywhere, as well as support for fast, fully accurate 16 bit conversion. Device color gamuts can also be viewed and compared using a VRML viewer. Comprehensive documentation is provided for each utility, and a general guide to using the tools for typical color management tasks is also available. A mailing list provides support for more advanced usage.

This is Version 0.70 (Beta8). The last full release was in December 2005. The first public release of icclib was in November 1998, and of Argyll was in July 2000. Code development commenced in 1995. See Changes Summary for an overview of changes since the last release. Changes between revisions is detailed in the log.txt file that accompanies the source code.

The latest source code is available from here.

Argyll is known to compile and run in at least four environments:

1) MSWindows 2K system running the Microsoft VC++ 6.0 compiler and Jam/MR
2) MSWindows 2K system running the MingW port of the GCC compiler and Jam/MR
3) Linux on Whitebox V4 x86 using gcc and Jam/MR
4) Apple OSX 10.3 gcc and Jam/MR

but may well compile and run correctly in many more than this.

This is a command line terminal only environment. Those unfamiliar with command line environments should consult an appropriate tutorial for their environment if they are interested in using this software. See the listing of tutorials below.

It still has an amount of debugging turned on.

It directly supports the following color measurement instruments:

X-Rite:
    DTP20 "Pulse"                              - "swipe" type reflective spectrometer, that can be used un-tethered.
    DTP22 Digital Swatchbook            - spot type reflective spectrometer.
    DTP41                                         - spot and strip reading reflective spectrometer.
    DTP41T                                       - spot and strip reading reflective/tranmissive spectrometer.
    DTP51                                         - strip reading reflective colorimeter.
    DTP92, DTP92Q                          - CRT display colorimeter.
    DTP94 "Optix XR" or "Optix XR2"  - display colorimeter.

Gretag-Macbeth:
    Spectrolino                                   - spot reflective/emissive spectrometer
    SpectroScan                                 - spot reflective/emissive, XY table reflective spectrometer 
    SpectroScanT                               - spot reflective/emissive/transmissive, XY table reflective spectrometer
    Eye-One Pro                                 - spot and "swipe" reflective/emissive spectrometer
    Eye-One Display 1 or 2  or LT        - display colorimeter
    Huey                                            - display colorimeter

Sequel imaging:
     MonacoOPTIX                             - display colorimeter
                                                           [The Sequel Chroma 4 may also work.]

ColorVision:
     Spyder 2                                      - display colorimeter (Note that user must supply firmware.)
                                                          [The Spyder 1 also seems to work..]
Other:
    Colorimètre HCFR                          - display colorimeter

See
Operation of particular instruments for more instrument specific detail.

Other instruments can be supported indirectly, since patch result files created by other packages can be imported into Argyll.

If you've decided to buy a color instrument because Argyll supports it, please let the dealer and manufacturer know that "You bought it because Argyll CMS supports it" - thanks.

Please direct any queries or problems regarding operation of color instruments in combination with Argyll, to the Author(s) of Argyll, and not to any other party.

Copyright and Licensing:

Most of the source code and provided executable files are copyrighted works, licensed under the GNU Version 3 license, and therefore they (or works derived from them) can't be copied or sold without providing the source code. Nothing other than your agreement and compliance with the GNU License, grants you permission to use, modify or distribute Argyll source code, executables or its derivative works. You could be sued for copyright infringement if you distribute Argyll without a valid license. The GNU license prohibits combining these utilities into any sort of package (i.e. by combining other programs or scripts that make use of, depend on, or work with the Argyll code) and distributing them, unless the other elements of the package are also licensed under the GPL, since such packages are derived works. It is permissible to provide Argyll utilities with other non GPL components, if the elements of the package are not related, such that the packaging is mere aggregation. For all the gory details, please read the accompanying license.

Note that unlike many commercial ICC profiling tools, the profiles created using Argyll, are not subject to any claims or restrictions of Argyll's author(s), but are assumed to be the copyright property of the person who gathers the characterization data, and causes the profiles to be created.

The Argyll CMS is Copyright 1995 - 2007 Graeme W. Gill, and is made available under the terms of the GNU General Public License Version 3, as detailed in the License.txt file.

The utility spectro/spec2cie.c is Copyright 2005 Gerhard Fuernkranz, and is made available under the terms of the GNU General Public License Version 2 or later, and is licensed here under the Version 3 license, as detailed in the License.txt file.

<>The icc library in icc/ and the CGATS library in cgats/ are Copyright 1995 - 2007 Graeme W. Gill, and available according to the "MIT" license granted in the icc/License.txt and cgats/License.txt file.

The TIFF library included in this distribution for convenience, has its own copyright and license detailed in tiff/COPYRIGHT (an "MIT"/"BSD" like license).

The UNIX USB library libusb included in this distribution for convenience, is copyright Johannes Erdfelt, Thomas Sailer and Brad Hards, and is licensed under the GNU LGPL Version 2 or later. See  libusb/LICENSE and libusb/COPYING for details.

The Win32 USB library libusb-win32, included in this distribution for convenience, is copyright Stephan Meyer, Johannes Erdfelt and Thomas Sailer, and is licensed under the GNU LGPL Version 2 (the DLL)  and GPL (the drivers, services, installer). See  libusbw/License.txt, libusbw/COPYING_LGPL.txt and libusbw/COPYING_GPL.txt for details.

What sort of project is this ? (re: contributions)

This is essentially my private project, that I've made available under GNU licensing conditions. Because I license my code under other licenses as well, there is a limit to what I will accept in the way of code contributions back into this project. For me to accept contributions into this distribution, it either has to be a non-essential side project, or has to be offered to me with copyright conditions that are compatible with my other uses (i.e.. a "BSD" like license, or assigning or licensing the copyright to me).

Of course there is nothing to stop someone setting up a real free software, community project based on the GNU licensed code made available here, that would be able to take GNU licensed contributions from everyone and would essentially be a "fork" of this code base.

Compiling

How to build the software from the source.

Installing

Important notes on installing the software on various platforms.

Main Utilities and the command line

These are all command line ("DOS" shell) utilities, and each tool require appropriate options to be set, followed by filename arguments. Sometimes the filenames will have to include the usual extensions, sometimes they are implicit. To get a brief listing of the possible arguments and usage of any of the utilities, run it with just an "-?" argument, i.e. targen -? (or some other unrecognized flag, if the "?" character is treated specially in your shell, i.e. try "--" on OS X).

In order to make use of the tools, it is necessary to keep track of where various files are, and what they are called. There are many possible ways of doing this. One way is to put each source profile and all its associated files (test charts, spectrometer values etc.) in one set of directories for each source profile type. Similarly the device profiles could be stored in a hierarchy of directories ordered by device type, media, resolution, device mode etc.

Those unfamiliar with command line environments should consult an appropriate tutorial for their environment if they are interested in using this software:

MS Windows :
   <http://www.bleepingcomputer.com/tutorials/tutorial76.html>
   <http://www.pcstats.com/articleview.cfm?articleid=1723&page=1>
   <http://tnd.com/camosun/elex130/dostutor1.html>

    To find more: <http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial>

OS X:
    <http://www.osxfaq.com/Tutorials/LearningCenter/>
    <http://www.atomiclearning.com/macosxterminalx.shtml>
    <http://www.oreillynet.com/pub/a/mac/2001/12/14/terminal_one.html>

    To find more: <http://www.google.com/search?hl=en&q=OS+X+shell+tutorial>

Linux:
    <http://www.linuxcommand.org/index.php>
    <http://www.tuxfiles.org/linuxhelp/shell.html>
    <http://www.ee.surrey.ac.uk/Teaching/Unix/>

    To find more: <http://www.google.com/search?q=linux+command+line+shell+tutorial>

Tutorial: Typical usage scenarios and examples

A guided tour of the major utilities, applied to typical CMS jobs, such as calibrating displays, creating device profiles, linking them, and converting color spaces of raster files.
 

Topical Discussions

Discussions about particular topics:

About Fluorescent Whitening Agent compensation

Operation of particular instruments

About ICC profiles and Gamut Mapping

About display monitor settings and targets

Main Utilities by category:

Calibrating devices

dispcal       Adjust, calibrate and profile a display.

Creating test targets for profiling

targen        Generate a profiling test target values .ti1 file.
filmtarg      Create film recorder TIFF files from Argyll .ti1 file.
printtarg     Create a PS or EPS file to containing test patch values, ready for printing.

Obtaining test results for profiling

chartread     Read a test chart using an instrument to create a .ti3 data file.
dispread      Test and read colorimetric values from a display
filmread      Read film colorimetric values using a SpectroScanT (Deprecated ?)
scanin        Convert a TIFF  image of a test chart into .ti3 device values.
fakeread      Fake the reading of a device using an ICC or MPP profile.
synthread     Fake the reading of a device using a synthetic device model.
cb2cgats      Convert Colorblind format CMY/RGB test chart into Argyll .ti3 CGATS format.
kodak2cgats   Convert Kodak Colorflow format CMYK test chart into Argyll .ti3 CGATS format.
logo2cgats    Convert Gretag/Logo or X-Rite ColorPort format RGB or CMYK test chart results into Argyll .ti3 CGATS format.
fakeCMY       Create a fake Argyll .ti3 CMY data file from a CMYK profile, as a basis of creating a CMY to CMYK separation

Creating Device Profiles

profile       Create an ICC profile from the .ti3 test data.
mpprof        Create a Model Printer Profile (MPP) from the .ti3 test data.
sepgen        IN DEVELOPMENT Create a CMY[K] to device colorant separation.
revfix        Regenerate a device profiles B2A table data by inverting the A2B table.

Linking Profiles

icclink       Link two device ICC profiles to create a device link profile.

Converting colors

cctiff        Color convert a TIFF file using a sequence of ICC device, device link and abstract profiles
icclu         Lookup individual color values through any ICC profile table.
xicclu        Lookup individual color values forward or inverted though an ICC profile table.
mpplu         Lookup individual color values though an MPP profile. Also create MPP gamut files/views.
greytiff      Convert a TIFF file to monochrome using an ICC device profile

Color Tweaking tools

refine        Creates an abstract profile from two chart readings, useful for refining proofing profiles.

Creating gamut views

iccgamut      Create a gamut file or VRML file of the color gamut of an ICC profile.
tiffgamut     Create a gamut file or VRML file of the color gamut of a TIFF image.
viewgam       Convert one or more gamuts into a VRML 3D visualization file. Compute an intersection.

Diagnostic and test utilities

iccdump       Dump the contents of an ICC profile as text.
profcheck     Check an ICC profile against .ti3 test chart data.
invprofcheck  Check ICC forward against inverse lookup.
splitscgats   Split a CGATS file (ie. a .ti3) into two parts randomly to verify profiling.
timage        Create TIFF test images.
mppcheck      Check an MPP profile against .ti3 test chart data.
spotread      Use an instrument to read a single spot color value.
verify        Verify matching of CIE in two .ti3 files.
displin       Create linear display calibration (.cal)file.

Other Utilities

dispwin       Load Video LUT from profile or .cal file, or test dispcal and dispwin access to a display.
spec2cie      Convert spectral .ti3 readings into CIE XYZ or L*a*b* readings.
spyd2en       A special purpose utility that enables the Spyder 2 colorimeter.
 

Main Utilities Alphabetic Listing:

cb2cgats      Convert Colorblind format CMY/RGB test chart into Argyll .ti3 CGATS format.
cctiff        Color convert a TIFF file using a sequence of ICC device, device link and abstract profiles
chartread     Read a test chart using an instrument to create a .ti3 data file.
dispcal       Adjust, calibrate and profile a display.
displin       Create linear display calibration (.cal)file.
dispread      Test and read colorimetric values from a display
dispwin       Load Video LUT from profile or .cal file, or test dispcal and dispwin access to display.
fakeCMY       Create a fake Argyll .ti3 CMY data file from a CMYK profile, as a basis of creating a CMY to CMYK separation
fakeread      Fake the reading of a device using an ICC or MPP profile.
filmread      Read film colorimetric values using a SpectroScanT (Deprecated ?)
filmtarg      Create film recorder TIFF files from Argyll .ti1 file.
greytiff      Convert a TIFF file to monochrome using an ICC device profile
iccdump       Dump the contents of an ICC profile as text.
iccgamut      Create a gamut file or VRML file of the color gamut of an ICC profile.
icclink       Link two device ICC profiles to create a device link profile.
icclu         Lookup individual color values through any ICC profile table.
invprofcheck  Check ICC forward against inverse lookup.
kodak2cgats   Convert Kodak Colorflow format CMYK test chart into Argyll .ti3 CGATS format.
logo2cgats    Convert Gretag/Logo or X-Rite ColorPort format RGB or CMYK test chart results into Argyll .ti3 CGATS format.
mppcheck      Check an MPP profile against .ti3 test chart data.
mpplu         Lookup individual color values though an MPP profile. Also create MPP gamut files/views.
mpprof        Create a Model Printer Profile (MPP) from the .ti3 test data.
printtarg     Create a PS or EPS file to containing test patch values, ready for printing.
profcheck     Check an ICC profile against .ti3 test chart data.
profile       Create an ICC profile from the .ti3 test data.
refine        Creates an abstract profile from two chart readings, useful for refining proofing profiles.
revfix        Regenerate a device profiles B2A table data by inverting the A2B table.
scanin        Convert a TIFF  image of a test chart into .ti3 device values.
sepgen        IN DEVELOPMENT Create a CMY[K] to device colorant separation.
spec2cie      Convert spectral .ti3 readings into CIE XYZ or L*a*b* readings.
splitscgats   Split a CGATS file (ie. a .ti3) into two parts randomly to verify profiling.
spotread      Use an instrument to read a single spot color value.
spyd2en       A special purpose utility that enables the Spyder 2 colorimeter.
synthread     Fake the reading of a device using a synthetic device model.
targen        Generate a profiling test target values .ti1 file.
tiffgamut     Create a gamut file or VRML file of the color gamut of a TIFF image.
timage        Create TIFF test images.
verify        Verify matching of CIE in two .ti3 files.
viewgam       Convert one or more gamuts into a VRML 3D visualization file. Compute an intersection.
xicclu        Lookup individual color values forward or inverted though an ICC profile table.
 

Overview

Overview of the software and its aims and functionality.

Limitations

Limitations of the current functionality.

Organization

How directories are organized, what they contain.

Source

Any detailed documentation on how the software works, or what algorithms it is based on. (Very incomplete.)

Minor Utilities

A very brief description of minor utilities and test harnesses.

Performance Tuning

Performance hints.
 

File formats that Argyll uses

Argyll uses a number of file formats for its operation, some that are external standards, and some that are unique to Argyll.

.ti1            Device test values
.ti2            Device test values & chart layout
.ti3            Device test values & CIE tristimulus/spectral results  Format details.
.cal            Device calibration information. Format details.
.cht           Test chart recognition template. Format details.
.gam         3D gamut surface description
.sp            Illuminant spectral description
CGATS      Standard text based data exchange format
ICC           International Color Consortium profile format
MPP          Model device profile format
TIFF         Tag Image File Format raster files.
VRML       Virtual Reality Modelling Language 3D file format.
 

Errors, Corrections and Omissions:

If you notice any errors, corrections needed or omissions in the current documentation, please contact the author.