Argyll CMS documentation index (V1.0.3)
Date: 1st June 2009
Author: Graeme Gill
Introduction
Argyll is an open source, ICC compatible color management
system. It supports accurate ICC profile creation for acquisition devices, 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 1.0.4, a bug fix update to 1.0.3 released in
September 2008. It updates icclib to improve robustness against crafted
file attacks. 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 six environments:
1) MSWindows 2K system running the Microsoft VC++ 6.0 compiler
2) MSWindows 2K system running the MingW port of the GCC compiler
3) Linux on Fedora Core 8, 32 bit using gcc
4) Linux on Fedora Core 8, 64 bit using gcc
4) Apple OSX 10.3 PPC using gcc
5) Apple OSX 10.4 Intel using gcc
6) Apple OSX 10.5 Intel using gcc
It is also known to run on:
MSWindows 2000, XP & Vista
MSWindows Vista 64 (But most USB instruments won't work)
Linux Ubuntu 7.10
Linux Kubuntu 7.10
Linux Mandriva 2008.0
Linux OpenSuSE 10.3
Linux Whitebox 4.2/2
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. If
you're looking for "point and shoot" software, you need to look
elsewhere.
The following instruments are directly supported:
X-Rite:
DTP20
"Pulse"
- "swipe" type reflective spectrometer, that can be used untethered.
DTP22 Digital
Swatchbook
- spot type reflective spectrometer.
DTP41
- spot and strip reading reflective spectrometer.
DTP41T
- spot and strip reading reflective/transmissive spectrometer.
DTP51
- strip reading reflective colorimeter.
DTP92
- CRT display colorimeter.
DTP94 "Optix
XR" or "Optix
XR2"
or "Optix Pro"- display colorimeter.
Gretag-Macbeth (now X-Rite):
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 Monitor
-
spot and "swipe" emissive spectrometer
Eye-One Display
1 or
2 or LT
- display colorimeter
Huey
- display colorimeter
Sequel imaging (Now X-Rite):
MonacoOPTIX
- display colorimeter (Treated as an Eye-One Display 1)
[The Sequel Chroma 4 may also work.]
DataColor ColorVision:
Spyder 2
- display colorimeter (Note that the 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 - 2008 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 utility spectro/average.c is Copyright 2008 Jordi Nodal and
Graeme W. Gill,
and is
made available under the terms of the GNU General Public
License Version 3 or later, as detailed in the License.txt
file.
The UNIX USB library libusb included in this distribution, 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,
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.
The icc library in icc/, the
CGATS library in cgats/, the
jcnf
library
in jcnf/, and the ucmm library
in ucmm/ are
Copyright 1995 - 2008 Graeme W. Gill, and available
according to the "MIT" license granted in the icc/License.txt and
cgats/License.txt files, and the source files in jcnf/ and ucmm/.
The TIFF library included in this distribution for convenience, has
its
own copyright and license detailed in tiff/COPYRIGHT (an "MIT"/"BSD"
like
license).
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-core 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.
How to build the software from the source
if you want to.
Note that you don't need to do
this if you are using one of the binary installations.
Important notes on installing the binary
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 zsh).
Note that in general the arguments consist of possible flags or options
followed by file name arguments. All arguments need to be separated by
whitespace. (If you need to specify a string with embedded white
space, double quote the string). A flag consists of a dash attached to
a single letter, the letter identifying the flag, and is usually case
sensitive. An option is a flag that has an associated parameter or
parameters. The parameter can be separated from the flag by white
space, or may come directly after the flag. So if a utility has a usage
that looks like this:
utility -?
usage: utility [options] infile outfile
-v
Verbose mode
-d
n
Choose a depth 0-4
-r
Use a random depth
-f
[nn]
Use full range. nn optional range 0 - 100.
-M
Manual
infile
Input file
outfile
Output file
then there are 5 flags/options, and two filename arguments.
Notice that square braces [] denote optional items. The first
flag/option is a flag. The second is an option that has a numerical
argument in the range 0 to 4. The third is a flag. the fourth is an
option with an optional argument. The fourth is a flag. The flags
and options can generally be in any order, but must be before the file
name arguments. (For a few special utilities you actually specify a
sequence of flags and files where the flags apply just to the following
file.) So
example invocations may look like:
utility -v testin testout
utility -d3 -M testin1 testout2
utility -f infile outfile
utility -f 45 infile outfile
utility -d 3 -f67 infile outfile
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>
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, EPS or TIFF file 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
average
Average / Merge two measurement data files
Creating Device Profiles
colprof 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
collink 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 (also view differences as VRML)
synthcal
Create a synthetic display
calibration (.cal)file.
Other Utilities
extracticc Extract an
embedded ICC profile from a TIFF file.
dispwin Install
or uninstall display profile, set display calibration from profile or
.cal file, test displace and dispwin access
to a display.
spec2cie Convert
spectral .ti3
readings into CIE XYZ or L*a*b* readings. Apply FWA, plot spectrums.
spyd2en A
special purpose utility that enables the Spyder 2
colorimeter.
Main Utilities Alphabetic Listing:
average Average
/ Merge two measurement data files
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.
collink Link
two device ICC profiles to create a device link profile.
colprof Create
an ICC profile from the .ti3 test data.
dispcal
Adjust, calibrate and profile
a display.
dispread Test
and read colorimetric values from a display
dispwin Install
or uninstall display profile, set display calibration from profile or
.cal file, test displace and dispwin access
to a display.
extracticc Extract an
embedded ICC profile from a TIFF file.
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.
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, EPS or TIFF file containing test patch values, ready for
printing.
profcheck Check
an ICC profile against .ti3 test chart 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. Apply FWA, plot spectrums.
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.
synthcal
Create a synthetic display
calibration (.cal)file.
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 (also view differences as VRML)
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.
Performance hints.
Overview of the software and its aims and functionality.
Limitations of the current functionality.
How directories are organized, what they contain.
Any detailed documentation on how the software works, or what
algorithms
it is based on. (Very incomplete.)
A very brief description of minor utilities and test harnesses.
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.
ucmm Unix micro Color
Management Module convention and configuration file format.
Errors, Corrections and Omissions:
If you notice any errors, corrections needed or omissions in
the
current
documentation, please contact the author.