profile/colprof
Summary
Create an RGB, CMY or CMYK ICC
profile from the .ti3 test
chart patch values.
[ Note that currently, Monochrome and N-Color profiles are not
supported. ]
Usage Summary
colprof [-options] inoutfile
-v
Verbose mode
-A "manufacturer" Set the
manufacturer description string
-M "model"
Set the model
description string
-D "description" Set the
profile Description string (Default "inoutfile")
-C "copyright" Set the
copyright string
-Z tmnb
Attributes:
Transparency, Matte, Negative, BlackAndWhite
-Z prsa
Default
intent: Perceptual, Rel. Colorimetric, Saturation, Abs.
Colorimetric
-q lmhu
Quality - Low,
Medium (def), High, Ultra
-b [lmhun]
Low quality B2A table - or specific B2A quality or none
for input device
-ni
Don't create input (Device) shaper
curves
-np
Don't create input (Device) grid position curves
-no
Don't create output (PCS) shaper
curves
-nc
Don't put the input .ti3 data in the profile
-k zhxr
Black Ink generation: z =
zero K,
h
=
0.5
K
(def),
x
=
max K, r = ramp K
-k p stle stpo enpo enle shape
stle:
K
level
at
White
0.0
- 1.0
stpo:
start
point
of
transition
Wh
0.0 - Bk 1.0
enpo:
End
point
of
transition
Wh
0.0 - Bk 1.0
enle:
K
level
at
Black
0.0 - 1.0
shape:
1.0
=
straight,
0.0-1.0
concave,
1.0-2.0 convex
-K parameters
Same as -k, but target is K locus rather than K value itself
-l tlimit
override CMYK total ink limit, 0 - 400%
(default from .ti3)
-L klimit
override black ink limit, 0 - 100% (default
from .ti3)
-a lxXgsmGS
Algorithm type override
l
=
Lab
cLUT
(def.),
x = XYZ cLUT, X = display XYZ cLUT + matrix
g
=
gamma+matrix,
s
=
shaper+matrix, m = matrix only,
G
=
single
gamma+matrix,
S
=
single shaper+matrix
-u
If input profile, auto scale WP to allow extrapolation
-uc
If input profile, clip cLUT values above WP
-U scale
If input
profile, scale media white point by scale
-R
Restrict
white
<=
1.0,
black
and
primaries to be +ve
-B X,Y,Z
Display Black Point override hack
-V demphasis
Degree of dark region cLUT grid emphasis 1.0-3.0 (default 1.00 =
none)
-f [illum]
Use Fluorescent
Whitening Agent compensation [opt. simulated inst. illum.:
M0, M1, M2, A,
C, D50 (def.), D50M2, D65, F5, F8, F10 or file.sp ]
-i illum
Choose illuminant for
computation of CIE XYZ from spectral data & FWA:
A,
C,
D50
(def.),
D50M2,
D65, F5, F8, F10 or file.sp
-o observ
Choose CIE Observer for spectral data:
1931_2 (def.),
1964_10, S&B 1955_2, shaw, J&V 1978_2
-r avgdev
Average deviation of device+instrument readings as
a percentage (default 0.5%)
-s src.icm|cperc Apply gamut
mapping to output profile perceptual B2A table for given source,
or compression percentage
-S src.icm|experc Apply gamut
mapping to output profile perceptual and saturation B2A table,
or expansion percentage
-nP
Use colormetric source gamut to make output profile perceptual
table
-nS
Use colormetric source gamut to make output profile saturation
table
-g src.gam
Use source image
gamut as well for output profile gamut mapping
-p aprof.icm,... Incorporate
abstract profile(s) into output tables
-t intent
Override gamut
mapping intent for output profile perceptual table:
-T intent
Override gamut mapping intent for output profile saturation
table:
a - Absolute Colorimetric (in Jab) [ICC Absolute Colorimetric]
aw - Absolute Colorimetric
(in Jab) with scaling to fit white point
aa - Absolute Appearance
r - White Point Matched
Appearance [ICC Relative Colorimetric]
la - Luminance matched Appearance
p - Perceptual (Preferred) [ICC
Perceptual]
pa - Perceptual Appearance
lp - Luminance Preserving Perceptual
ms - Saturation
s - Enhanced Saturation [ICC
Saturation]
al - Absolute Colorimetric (Lab)
rl - White Point Matched Colorimetric (Lab)
-c viewcond
set input viewing conditions for output profile CIECAM02 gamut
mapping,
either an enumerated choice, or a parameter
-d viewcond
set output viewing conditions for output profile CIECAM02, gamut
mapping
either an enumerated choice, or a parameter:value change
Also sets out of gamut clipping CAM space.
Enumerated Viewing Conditions:
pp - Practical Reflection Print (ISO-3664
P2)
pe - Print evaluation environment (CIE
116-1995)
pc - Critical print evaluation
environment (ISO-3664 P1)
mt - Monitor in typical work
environment
mb - Monitor in bright work environment
md - Monitor in darkened work environment
jm - Projector in dim environment
jd - Projector in dark environment
pcd - Photo CD - original scene outdoors
ob - Original scene - Bright Outdoors
cx - Cut Sheet Transparencies on a viewing box
s:surround n = auto, a = average, m =
dim, d = dark,
c = transparency (default average)
w:X:Y:Z Adapted white point
as XYZ (default media white)
w:x:y Adapted
white point as x, y
a:adaptation Adaptatation
luminance in cd.m^2 (default 50.0)
b:background Background %
of image luminance (default 20)
l:imageewhite Image white in cd.m^2 if surround = auto
(default 250)
f:flare Flare light
% of image luminance (default 0)
g:glare Glare light % of
ambient (default 5)
g:X:Y:Z Glare color as
XYZ (default media white)
g:x:y Glare
color as x, y
-P
Create gamut gammap_p.x3d.html and gammap_s.x3d.html diagostics
-O outputfile
Override
the default output filename & extension.
inoutfile
Base name for
input.ti3/output.icc file
Options
-v Turn on verbose mode. Gives progress
information as the profile is created. Since colprof can take a long
time to generate, this is often useful to monitor progress. If used
in combination with the -y flag, the error of each test
point to the resulting profile will be printed out.
The -A parameter allows setting of the
device manufacturer description tag. The parameter should be a
string that identifies the manufacturer of the device being
profiled. With most command line shells, it will be necessary to
enclose the parameter with double quotes, so that spaces and other
special characters are included in the parameter, and not mistaken
for the start of another flag, or as a final command line
parameters. By default no manufacturer description string tag will
be generated for the profile.
The -M parameter allows setting of the
device mode description tag. The parameter should be a string that
identifies the particular model of device being profiled. With most
command line shells, it will be necessary to enclose the parameter
with double quotes, so that spaces and other special characters are
included in the parameter, and not mistaken for the start of another
flag, or as a final command line parameters. By default no model
description string tag will be generated for the profile.
The -D parameter allows setting of the
profile description tag. The parameter should be a string that
describes the device and profile. On many systems, it will be this
string that will be used to identify the profile from a list of
possible profiles. With most command line shells, it will be
necessary to enclose the parameter with double quotes, so that
spaces and other special characters are included in the parameter,
and not mistaken for the start of another flag, or as a final
command line parameter. Many programs that deal with ICC profiles
use the description tag to identify a profile, rather than the
profile filename, so using a descriptive string is important in
being able to find a profile. By default, the base name of the
resulting profile will be used as the description.
The -C parameter allows setting of the
profile copyright tag. The parameter should be a string that
describes the copyright (if any) claimed on the profile being
generated.. With most command line shells, it will be necessary to
enclose the parameter with double quotes, so that spaces and other
special characters are included in the parameter, and not mistaken
for the start of another flag, or as a final command line
parameters. By default a generic copyright string will be generated
for the profile.
The -Z parameter allows setting of the
profile attribute flags. There are four flags: t to set Transparency, the
default being Reflective; m
to set Matte, the default is Glossy; n to set Negative, the default is Positive; b to set BlackAndWhite, the
default is Color.
The -Z parameter allows setting of the
profile default intent. The default intent can be one of the four
standard intents: p to set
Perceptual, r to set
Relative Colorimetric, s to
set Saturation, and a to
set Absolute colorimetric. Some CMM's will use this to determine the
default intent that they will use.
The -q parameter sets the level of effort
and/or detail in the resulting profile. For table based profiles
("cLUT" profiles), it sets the main lookup table size, and hence
detail in the resulting profile. For matrix profiles it sets the per
channel curve detail level and fitting "effort". It is highly recommended that
-qm be used as a starting
point, and other settings only tried after this has been evaluated.
NOTE that -qu is a test mode, and
shouldn't be used, except to prove that it is not worth using.
The -b flag overrides the -q
parameter, and sets the lut resolution for the BtoA (inverse) to a
low value. The creation of the B2A table is fairly time consuming,
and if the profile is only going to be used by targen, or if it will only be used as an
input space profile, or if it will only be linked as an output
profile using Argyll's collink tool
using the -G option (inverse AtoB option), then a high
detail BtoA table is not required, and some time and profile space
can be saved. If the profile is to be used as an output space
profile with another CMS, or is going to be linked using the simple
(-s) or mapping mode (-g) options, then a good quality B2A table is
needed, and the -b flag should NOT
be set. Optionally, a specific B2A table quality can be set.
For input devices, the presence of a B2A table is not
mandatory, and it can be omitted entirely from the profile by using
-bn. Note that input
profiles and matrix profiles will only contain a colorimetric intent
table or matrix.
Normally cLUT
base profiles are generated with three major elements:- per device
channel (shaper) input curves, the multi-dimensional lut table, and
per PCS channel (shaper) output curves. The Using the -ni
flag disables the creation of the per device channel curves, while
using the -no flag disables the creation of the per PCS
channel curves.
For cLUT based profiles, the input curves that are written to the
profile are composed of two components, a shape to best match the
detailed shape of the device behavior, and a shape to distribute the
input values evenly across the LUT input indexes. The -no flag disables the former,
while the -np flag disables
the latter.
-nc Normally
the
device and CIE/spectral sample data and calibration curves used to
create a profile is stored in the 'targ'
text tag in the resulting ICC profile. To suppress this and make the
resulting profile smaller, use the -nc
flag. Note that this
will then preclude final calibrated device value ink limits from
being computed for the resulting profile in subsequent use (ie. collink, xicclu
etc.).
-k parameter sets the target level of black
(K) when creating a B2A CMYK output tables. This is often called a
black level, a black inking rule, black generation, or under color
removal. These set the target black level.
Possible arguments to the -k flag are:
-kz selects minimum black (0.0)
-kh selects a black value of 0.5
-kx selects the maximum possible black (1.0)
-kr selects a linear black ramp, starting at minimum black
for highlight, and maximum black for shadow (equivalent to -kp 0 0 1
1 1). This is the default.
-k p stle stpo enpo enle shape allows
an arbitrary black value ramp to be defined, consisting of a
starting value (stle) for highlights, a breakpoint L value (stpo)
where it starts to transition to the shadow level, an end breakpoint
L (enpo) where it flattens out again, and the finishing black level
(enle) for the shadows. There is also a curve parameter, that
modifies the transition from stle to enle to either be concave
(ie. the transition starts gradually and and finished more
abruptly) using values 0.0-1.0, with 0.0 being most concave, or
convex (the transition starts more abruptly but finishes gradually),
using values 1.0-2.0, with 2.0 being the most convex.
Typical black value generation curve with parameters something like:
-kp 0 .1 .9 1 .5
1.0 K |
enpo
|
_______ enle
| /
| /
| /
| /
stle | ------/
+-------------------
0.0 K
0.0
stpo 1.0
White
Black
For minimum sensitivity of printed output to the lighting spectrum,
it currently seems best to use the maximum possible black, but other
black generation levels (ie. 0.3 to 0.5) may well be preferred if
one wants to minimize the noisy appearance of black on an inkjet
device, or if the banding behaviour or other rendering flaws of the
printer is to be minimized.
Note that the black level curve is applied throughout the gamut,
resulting in GCR (Grey Component Replacement). There is no facility
to restrict black to just neutral colors, hence UCR is not currently
supported.
The xicclu tool can be used to plot out
the resulting black level for a given set of parameters, by using
the -g flag of a profile already
created from the same .ti3 file.
-K parameters.
Any of the -k options above
can use the -K version, in
which rather than a black value target being defined by the inking
rule, a black locus
target is defined. For each lookup, the minimum possible black level
and the maximum possible black level is determined, the former
corresponding to a locus target of 0, and the latter corresponding
to a locus target of 1. For instance, at the white point, no black
will be used in the output, even if the black locus specifies a
maximum (since the maximum amount of black that can be used to print
white is actually zero). Similarly, at the black point, black may
well be used, even if the black locus specifies zero black (since a
certain amount of black is needed to achieve the desired density of
color).
The -l tlimit parameter sets the
total ink limit (TAC, Total Area Coverage) for the CMYK separation,
as a total percentage from 0% to 400%, and overrides any ink limit
specified in the .ti3 file. The limit value should generally be set
a little below the value used in the test chart generation, to avoid
the very edges of the gamut. If the test chart ink limit has been
chosen to be a little beyond an acceptable level, then this number
should be the acceptable level. Although limits can be set below
200%, this will generally restrict the color gamut noticeably, as
fully saturated secondary colors will not be reproduced. Values are
between 220% and 300% for typical printing devices. Ink limits will
be in the final calibrated device values if the .ti3 includes the calibration
table.
The -L klimit parameter sets the
black channel ink limit for the CMYK separation, as a total
percentage from 0% to 100%. For printing press like devices, this
can be used to prevent the black channel screening pattern "filling
in". Typical values might be from 95% to 99%. Note that with the
current implementation this can slow down the creation of the
profile quite noticeably, so do not use -L unless you really need to. Ink limits will be in
the final calibrated device values if the .ti3 includes the calibration table.
The -a parameter allows choosing an
alternate profile type.
By default (equivalent to -al) profile creates a cLUT based table profile with a
PCS (Profile Connection Space) of L*a*b*, which generally gives the
most robust and accurate results, and allows for the four different
rendering intents that ICC profiles can support.
A cLUT base table profile using a PCS of XYZ can be created if -ax
is used, and this may have the advantage of better accuracy for
additive type devices (displays, scanners, cameras etc.), may avoid
clipping for displays with a colorant chromaticity that can't be
encoded in L*a*b* PCS space, and may give a more accurate white
point for input devices by avoiding clipping of values above the
white point that can occur in L*a*b* based cLUT input profiles. A disadvantage
of this type of profile is that it can be a lot less robust if given
a test patch set that is sparse, or too unevenly spaced. By default
cLUT XYZ PCS Display profiles will also have a set of dummy matrix
tags included in them, for better compatibility with other systems.
The dummy matrix deliberately interchanges Red, Green and Blue
channels, so that it is obvious if the cLUT tables are not being
used. If it is important for both the cLUT and matrix be accurate,
use -aX, which will create
shaper/matrix tags.
For RGB input or display profiles, a simpler type of profile using
either a gamma curves or a general shaper curves, combined with a
matrix can be created, although such a profile cannot support
perceptual or saturation intents. Gamma curve and matrix profiles
can be created by specifying -ag or -aG, the former
creating three independent gamma curves, one for each device
channel, and the latter creating one common curve for all the device
channels. The latter may be needed with certain applications that
will not accept different gamma curves for each channel. General
shaper curve and matrix profiles (which are superior to gamma curve
profiles) can be created by specifying -as or -aS,
the former creating three independent shaper curves, one for each
device channel, and the latter creating one common curve for all the
device channels. The latter may be needed with certain applications
that will not accept different shaper curves for each channel.
The -am option will create
a matrix profile with linear (i.e. gamma = 1.0) curves. This may be
useful in creating a profile for a device that is known to have a
perfectly linear response, such as a camera in RAW mode.
-u: Input
profiles will normally be created such that the white patch of the
test chart will be mapped to perfect white when used with any of the
non-absolute colorimetric intents. This is the expected behavior for
input profiles. If such a profile is then used with a sample that
has a lighter color than the original test chart, then a cLUT
profile will clip the value, since it cannot be represented in the
lut table. Using the -u flag causes the media white point to
be automatically scaled (using the same type of scaling as the -U scale option) to avoid
clipping values up to full device white. This flag can be useful
when an input profile is needed for using a scanner as a "poor mans"
colorimeter, or if the white point of the test chart doesn't
represent the white points of media that will be used in practice,
and that white point adjustment will be done individually in some
downstream application.
-uc: For
input profiles it is sometimes desirable that any highlights
brighter than the white point, map exactly to white, and this option
post processes the cLUT entries to ensure this is the case. Note
that due to the finite nature of the cLUT grid, this may affect the
accuracy of colors near the light surface of the device gamut.
-U scale: Input profiles
will normally be created such that the white patch of the test chart
will be mapped to perfect white when used with any of the
non-absolute colorimetric intents. This is the expected behavior for
input profiles. Sometimes the test chart white is not quite the same
as the media being converted through the input profile, and it may
be desirable in these cases to adjust the input profile white point
to compensate for this. This can happen in the case of a camera
profile, where the test chart is not perfectly exposed. The -U parameter allows this. If the
media converted is a little darker than the test chart white, then
use a scale factor slightly less than 1.0 to make sure that the
media white comes out as white on conversion (ie. try 0.9 for
instance). If the media is a little lighter than the test chart
white and is "blowing out" the highlights, try a value slightly
greater than 1.0 (ie. try 1.1 for instance). The -u option sets the scale
automatically to accomodate a perfect white, but -U scale can be used on top of
this automatic scaling.
-R: Normally the white point, black point and primary
locations (for matrix profiles) are computed so as to create
profiles that best match the sample data provided. Some programs are
not happy with the resulting locations if they have negative XYZ
values, or if the white point has a Y value > 1. The -R option restricts the white,
black and primary values, so as to work with these programs, but
this will reduce the accuracy of the profile.
-B X,Y,Z This option is for display profiles
only, and allows overriding the black point of the resulting
profile. The XYZ value is in absolute instrument measurement units.
This option should be used only in special circumstances, for
instance if the display has a very low black point and the
instrument is not capable of measuring the black point accurately or
consistently. In this case a manual estimate of the black point
could be made and provided as the argument to -B. It may also be
useful for displays with black points that approach perfect black
(ie. Plasma or OLED) where a value of 0,0,0 may be more accurate
than typical instrument measurements. A value that is too different
to the default computed black point will likely result in a profile
with strange behavior near black.
Note that the default contents of the .ti3 created by dispread is normalised to be 100 for the
white point Y value, and similarly values returned by icclu -ia -px
are normalized to a white Y value of 1.0, which is not what the -B
option expects, so some care needs to be taken in specifying and
evaluating the resulting black point XYZ values.
The -V demphasis parameter allows sets the
degree to which cLUT grid spacing should emphasize the accuracy of
modelling the device response in the dark regions, over that of the
lighter regions. By default this value will be a scaled down version
of the one set using the targen -V
parameter, and values in the range 1.3 - 1.6 are a good
place to start. Display devices used for video or film reproduction
are typically viewed in dark viewing environments with no strong
white reference, and typically employ a range of brightness levels
in different scenes. This often means that the devices dark region
response is of particular importance, so increasing the density of
cLUT grid points in the dark region may improved the balance of
accuracy of the resulting profile for video or film reproduction.
This is most valuable when used in concert with a set of test points
that more densely sample the dark regions, by use of the
corresponding targen -V parameter. Emphasizing the dark region
characterization will reduce the accuracy of modelling the
lighter regions given a certain quality/grid resolution.
The -f flag enables Fluorescent Whitening
Agent (FWA) compensation. This only works if spectral data is
available and, the instrument is not UV filtered. FWA
compensation adjusts the spectral samples so that they appear to
have been measured using an illuminant that has a different level of
Ultra Violet to the one the instrument actually used in the
measurement. There are two ways this can be used:
The first and most useful is to use the -f flag with
the -i illuminant parameter (i.e. "-f -i D50"), to
make the color values more accurately reflect their appearance under
the viewing illuminant. This will work accurately if you specify the
actual illuminant spectrum
you are using to view the print, using the -i
flag. If you are doing proofing, you need to apply this to both your source profile, and
your destination profile. Note that it is not sufficient to
specify an illuminant with the same white point as the one you are
using, you should specify the spectrum of the illuminant you are actually using for the
proofing, including its Ultra
Violet spectral content, otherwise FWA compensation won't
work properly. This means you ideally need to measure your
illuminant spectrum using an instrument that can measure down to
300nm. Such instruments are not easy to come by. The best
alternative is to use the illumread
utility, which uses an indirect means of measuring an illuminant and
estimating its UV content. Another alternative is to simply try
different illuminant spectra in the ref directory, and see if one gives you the result
you are after, although this will be fairly a tedious approach. The
ref/D50_X.X.sp set of illuminant spectra are the D50 spectrum with
different levels of U.V. added or subtracted, ref/D50_1.0.sp being
the standard D50 illuminant, and may be somewhere to start.
[Note: Generally using -f
with the standard (-i) D50 illuminant spectrum will predict
that the device will produce bluer output than the default of not
FWA compensation. This is because most instruments use an
incandescent illuminant (A type illuminant), which has lower
relative levels of UV than D50, so the FWA compensation simulates
the effect of the greater UV in the D50. Also note that in an
absolute colorimetric color transformation, the more a profile
predicts the output device will have blue output, the yellower the
result will be, as the overall color correction compensates for the
blueness. The opposite will happen for an input profile.]
The second way of using the -f flag is to provide it
with a instrument simulation illuminant spectrum parameter, in
addition to the default D50 or -i parameter CIE XYZ
calculation illuminant (i.e. "-f M1", or "-f A -i D65"
etc.). This more complicated scenario simulates the measurement
of the spectral reflectance of the samples under a particular
instrument illuminant, then computes the CIE XYZ values of
that reflectance spectrum under the default D50 or -i
parameter illuminant. This is not used to give a more
accurate real world result, but to provide simulations of various
standardized measurement conditions. For instance, to reproduce ISO
13655:2009 M2 measurement conditions, the -f D50M2 could be
used (together with the default -i D50 setting). There are
shortcuts provided for ISO 13655:2009 conditions:
-f M0
equivalent to -f A
-f M1
equivalent to -f D50
-f M2
equivalent to -f D50M2
Note that using -f
M2 gives a result that is comparable to that of a U.V. cut
filter instrument. See also the discussion About
Fluorescent Whitening Agent compensation.
The -i parameter allows specifying a
standard or custom illumination spectrum, applied to spectral .ti3
data to compute PCS (Profile Connection Space) tristimulus values. A,
D50, D65, F5, F8, F10 are a
selection of standard illuminant spectrums, with D50 being
the default. If a filename is specified instead, it will be assumed
to be an Argyll specific .sp
custom spectrum file. This only works if spectral data is available.
Illuminant details are:
A CIE
tungsten filament lamp 2848K
D50 CIE daylight 5000K
D65 CIE daylight 6500K
F5 CIE Fluorescent
6350K, CRI 72
F8 CIE Fluorescent
5000K, CRI 95
F10 CIE Fluorescent
5000K, CRI 81
Custom illuminants are most often used when a viewing booth or
other known viewing conditions is going to be used to view results.
Other illuminant reference files could be created using a suitable
measuring instrument such as a spectrolino, or an eyeone using spotread, although such instruments do
not themselves provide the necessary response down to Ultra Violet
that is needed for accurate operation of Fluorescent Whitening Agent
compensation. The best way of measuring a custom illuminant is to
use illumread, since it uses a special
method to estimate the illuminant UV in a way that complements FWA
compensation. (See the discussion above for the -f flag).
Note that if an illuminant other than D50 is chosen, the resulting
ICC profile will not be standard, and may not work perfectly with
other profiles that that use the standard ICC D50 illuminant,
particularly if the absolute rendering intent is used. Profiles
should generally be linked with other profiles that have the same
illuminant and observer.
The -o flag allows specifying a tristimulus
observer, and is used to compute tristimulus values. The following
choices are available:
1931_2 selects the standard CIE 1931 2 degree
observer. The default.
1964_10 selects the standard CIE 1964 10 degree
observer.
1955_2 selects the Stiles and Birch 1955 2 degree
observer
1978_2 selects the Judd and Voss 1978 2 degree
observer
shaw selects the Shaw and Fairchild 1997 2 degree
observer
Note that if an observer other than 1931 2 degree is chosen, the
resulting ICC profile will not be standard, and cannot be freely
interchanged with other profiles that that use the standard 1931 2
degree observer. Profiles should only be linked with other profiles
that have the same illuminant and observer. The 1978_2
observer or shaw observer
may give slightly better results than the 1931_2 observer.
The -r parameter specifies the average
deviation of device+instrument readings from the perfect, noiseless
values as a percentage. Knowing the uncertainty in the reproduction
and test patch reading can allow the profiling process to be
optimized in determining the behaviour of the underlying system. The
lower the uncertainty, the more each individual test reading can be
relied on to infer the underlying systems color behaviour at that
point in the device space. Conversely, the higher the uncertainty,
the less the individual readings can be relied upon, and the more
the collective response will have to be used. In effect, the higher
the uncertainty, the more the input test patch values will be
smoothed in determining the devices response. If the perfect,
noiseless test patch values had a uniformly distributed error of +/-
1.0% added to them, then this would be an average deviation of 0.5%.
If the perfect, noiseless test patch values had a normally
distributed error with a standard deviation of 1% added to
them, then this would correspond to an average deviation of 0.564%.
For a lower quality instrument (less than say a Gretag Spectrolino
or Xrite DTP41), or a more variable device (such as a xerographic
print engine, rather than a good quality inkjet), then you might be
advised to increase the -r
parameter above its default value (double or perhaps 4x would be
good starting values.)
-s
-S In order to generate perceptual and saturation
intent B2A tables for output profiles, it is necessary to have
something that defines what source gamut should be used to create
the source to destination gamut mapping. [For more information on why a source gamut is
needed, see About ICC profiles and
Gamut Mapping]. The -S parameter is used to do
this, and doing so causes perceptual and saturation tables to be
generated. If only a perceptual intent is needed, then the -s
flag can be used, and the saturation intent will use the same table
as the perceptual intent.
There are two ways of specifying a source gamut 1) Specify a
specific source ICC profile or 2) Specify a general compression of
the output gamut as a percentage. With the second choice, incoming
colors that are up to the percentage outside the devices gamut will
be compressed to fit into it. The same percentage is used for
expansion if a saturation table is generated, or a separate
percentage can be specified by including both a -s and -S
percentage. You can optionally specify both and input ICC
profile and a general compression percentage by using the -S option
twice, in which case the input profile determines just the luminance
range mapping, with the percentage determining the gamut volume
compression. If a percentage compression is specified without an ICC
profile, then the incoming luminance range will be assumed to be
full range (perfect white to perfect black), which is compatible
with idealized colorspaces such as sRGB, AdobeRGB and other working
RGB spaces. The input viewing conditions are applicable to the
assumed full range input.
If no source ICC or compression percentage is specified for a cLUT
Display profile, then an ICC Version 2.2.0 profile will be created
with only an A2B0 and B2A0 tag. If a source gamut is specified, then
an ICC Version 2.4.0 profile will be created with a full complement
of B2A tags to support all intents.
The source gamut is created from the corresponding intent table of
the provided profile to the output table being created. A TIFF or
JPEG file containing an embedded ICC profile may be supplied as the
argument, instead of an ICC profile.
Note that input profiles and
matrix profiles will only contain a colorimetric intent table or
matrix, and hence the -s
and -S option is not
relevant.
Note that an input, output, display or device colororspace
profile should be specified, not a non-device colorspace, device
link, abstract or named color profile.
-nP:
Normally when a source profile is provided to define the source
gamut for the output profile perceptual table gamut mapping, the
perceptual source table is used to determine this gamut. This is
because some profile have gamut transformations in their perceptual
A2B tables that is not in the colorimetric A2B table, and this needs
to be taken into account in creating the perceptual B2A table, so
that when the two profiles are linked together with the perceptual
intent, the gamut mapping works as intended. The -nP option causes the source
gamut to be taken from the source profile colorimetric table
instead, causing the perceptual gamut mapping created for the
perceptual table to be from the natural source colorspace gamut to
the output space gamut.
-nS:
Normally when a source profile is provided to define the source
gamut for the output profile saturation table gamut mapping, the
saturation source table is used to determine this gamut. This is
because some profile have gamut transformations in their saturation
A2B tables that is not in the colorimetric A2B table, and this needs
to be taken into account in creating the saturation B2A table, so
that when the two profiles are linked together with the saturation
intent, the gamut mapping works as intended. The -nS option causes the source
gamut to be taken from the source profile colorimetric table
instead, causing the saturation gamut mapping created for the
saturation table to be from the natural source colorspace gamut to
the output space gamut.
The -g flag
and its argument allow the use of a specific source gamut instead of
that of the source profile. This is to allow optimizing the gamut
mapping to a source gamut of a particular image, which can
give slightly better results that gamut mapping from the gamut of
the source colorspace. Such a source image gamut can be created
using the tiffgamut tool. The gamut
provided to the -g flag should be in the same
colorspace that colprof is
using internally to connect the two profiles. For all intents except
the last one (no. 7), the
space should be Jab appearance space, with the viewing conditions
generally being those of the input profile viewing conditions. The
input profile will normally be the one used to create a source image
gamut using tiffgamut. Note
that a source gamut is not used if a general compression ratio gamut
mapping is used.
The -p option allows specifying one
or more abstract profiles that will be applied to the output tables,
after any gamut mapping. An abstract profile is a way of specifying
a color adjustment in a device independent way. The abstract profile
might have been created using one of the tweak tools, such as refine.
If a single abstract profile is specified, then it will be applied
to all the output tables (colorimetric, perceptual and saturation).
To specify different abstract profiles for each output table, use a
contiguous comma separated list of filenames. Omit a filename
between the commas if no abstract profile is to be applied to a
table. For instance: -p
colabst.icm,percabst.icm,satabst.icm for three different
abstract transforms, or: -p
,percabst.icm, for just a perceptual table abstract
transform.
One strategy for getting the best perceptual results with output
profile when using ICC profiles with systems that don't accept
device link profiles, is as follows: Specify a gamut mapping profile
of opposite type to the type of device being profiled, and when
linking, use the relative colorimetric intent if the two profiles
are of the same type, and perceptual intent if the two profiles are
of the opposite type. For instance, if you are creating a CMYK
output profile, specify an RGB profile for the -s or -S
parameter. If linking that profile with a CMYK source profile, use
relative colorimetric intent, or if linking with an RGB profile, use
the perceptual intent. Conversely, if creating an RGB output
profile, specify a CMYK profile for the -s or -S
parameter, and if linking that profile with an RGB source profile,
use relative colorimetric intent, or if linking with a CMYK profile,
use the perceptual intent.
(Note that the perceptual and saturation table gamut mapping doesn't
make any allowance for the application of the abstract profile. This
is a bug.)
Normally, the gamut mapping used
in creating the perceptual and saturation intent tables for output
profiles is set to perceptual and saturation gamut mapping (as would
be expected), but it is possible to override this default selection
for each intent using the -t and -T flags. The -t
flag can be used to set the gamut mapping for the perceptual table,
and the -T flag can be used to set the gamut mapping for the
saturation table. A more detailed description of the different
intents is given in collink. Note that
selecting any of the absolute intents will probably not function as
expected, since the perceptual and saturation tables are inherently
relative colorimetric in nature.
Since appearance space is
used in the gamut mapping (just as it is in
collink), the viewing conditions for the source and
destination colorspaces should really be specified. The source
colorspace is the profile specified with the -s or -S
flag, and the destination is the profile being created. The -c
and -d options allow specification of their respective,
associated viewing conditions. The viewing condition information is
used to map the profile PCS (Profile Connection Space, which us
either XYZ or L*a*b*) color into appearance space (CIECAM02), which
is a better colorspace to do gamut mapping in. The viewing
conditions allow the conversion into appearance space to take
account of how color will be seen under particular viewing
conditions.
Viewing conditions can be specified in two basic ways. One is to
select from the list of "pre canned", enumerated viewing conditions,
choosing one that is closest to the conditions that are appropriate
for the media type and situation. Alternatively, the viewing
conditions parameters can be specified individually. If both methods
are used, them the chosen enumerated condition will be used as a
base, and its parameters will then be individually overridden.
Appearance space is also used to provide a space to map any
remaining out of gamut colors (after a possible gamut mapping has
been applied) into the device gamut.
The -P option causes diagnostic 3D X3DOM plots to be created that
illustrate the gamut mappings generated for the perceptual and
saturation intent tables.
The -O
parameter allows the output file name & extension to be
specified independently of the final parameter basename. Note that
the full filename must be specified, including the extension.
The final parameter is the file base name for the
.ti3 input test point data, and
the resulting ICC output
profile (.icm extension on the MSWindows platform, .icc on Apple or
Unix platforms). The -O
parameter will override this default.
Discussion
Note that monochrome profiling isn't currently supported. It may be
supported sometime in the future.
If the -v flag is used (verbose), then at the end of
creating a profile, the maximum and average fit error of the input
points to the resulting profile will be reported. This is a good
guide as to whether things have gone smoothly in creating a profile.
Depending on the type of device, and the consistency of the
readings, average errors of 5 or less, and maximum errors of 15 or
less would normally be expected. If errors are grossly higher than
this, then this is an indication that something is seriously wrong
with the device measurement, or profile creation.
Given a .ti3 file from a display device that contains calibration
curves (generated by dispcal, passed
through dispread) and the calibration
indicates that the VideoLUTs are accessible for the device, then colprof will convert the
calibration into a vcgt tag
in the resulting profile so that the operating system tools can
configure the display hardware appropriately, whenever the profile
is used. If the VideoLUTs are not marked as being accessible, colprof will do nothing with the
calibration curves. In this case, to apply calibration, the curves
have to be incorporated in the subsequent workflow, either by
incorporating them into the profile using applycal, or including them after the
profile in a cctiff profile chain.
Given a .ti3 file from a print device that contains the per-channel
calibration information (generated by printcal,
passed through printtarg and chartread), colprof will save this along with the .ti3 file in
the 'targ' text tag in the
profile, so that
subsequent evaluation of ink limits can compute the final calibrated
device values.