xicc/xicclu
Summary
Lookup individual color values forward or inverted though an ICC
profile table. xicclu is the analogue of the icclib tool icclu, but expands the capability to reverse
lookup the Lut tables, and displaying PCS values in CIECAM02 Jab space.
xicclu
can also be used to plot the device value composition down the neutral
axis,
for device profiles.
Usage Summary
xicclu [-options] profile
-v level
Verbosity level 0 - 2 (default = 1)
-g
Plot slice instead of looking colors up. (Default white to black)
-G s:L:a:b Override
plot slice start with Lab or Jab co-ordinate
-G e:L:a:b Override
plot slice end with Lab or Jab co-ordinate
-f function f = forward, b =
backwards, g = gamut, p = preview
if
= inverted forward, ib = inverted backwards
-i intent a =
absolute, r = relative colorimetric,
p =
perceptual, s
=
saturation
-o order n
= normal (priority: lut > matrix > monochrome)
r
= reverse (priority: monochrome > matrix >
lut)
-p oride x
= XYZ_PCS, X = XYZ * 100, l = Lab_PCS, L = LCh, y = Yxy,
j = CIECAM02
Appearance Jab, J = CIECAM02 Appearance JCh
-s scale
Scale device range 0.0 - scale rather than 0.0 - 1.0
-k [zhxrlv] Black generation: z
= zero K,
h = 0.5 K, x = max K, r = ramp K (def.)
l = extra PCS input is portion of K locus
v = extra PCS input is K target value
-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 q stle0 stpo0 enpo0
enle0 shape0 stle2 stpo2
enpo2 enle2 shape2
Transfer
extra PCS input to dual curve limits
-K parameters Same as -k, but target is K
locus rather than K value itself
-l tlimit set
total ink limit, 0 - 400% (estimate by default)
-L klimit set
black ink limit, 0 - 100% (estimate by default)
-a
show
actual target values if clipped
-b
use
CAM Jab for clipping
-m
merge output processing into clut
-c viewcond set viewing
conditions
for CIECAM02,
either an enumerated choice, or a parameter:value change
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, Abs: D50)
w:x:y
Adapted white point as
x, y
a:adaptation
Adaptation luminance in
cd.m^2
(default 50.0)
b:background Background %
of image luminance (default 20)
f:flare
Flare
light % of image luminance (default 1)
f:X:Y:Z Flare color
as XYZ (default media white, Abs: D50)
f:x:y
Flare color as x, y
inoutfile The input
ICC profile
The colors to
be translated should be fed into
standard in,
one input
color per line, white space separated.
A line
starting with a # will be ignored.
A line not
starting with a number will terminate the
program.
Flags and Parameters
The -v parameter sets the level of verbosity.
Default is level 1, which repeats each input value, the colorspaces of
input and output, the type of conversion algorithm used, and if the
result was clipped. Level 2 adds prints extra information about the
profile before doing the conversions. Level 0 turns off all verbosity,
just outputting the results of each conversion. Use the latter to
capture batch output ready for further processing.
The -g flag causes a plot of the device values
along a slice through the Lab or Jab colorspace, rather than allowing
the interactive looking up of color
values. By default this will be the neutral axis
from the white point to the black point, but the start and end can be
overridden using the -G
parameters.
This is useful in determining the existing black generation in a CMYK
profile,
or exploring the behavior of various black generation options using
the
-k parameters. The profile must be a device profile, and the PCS
must
be either Lab or Jab. The default plot is up the neutral axis is from
the white to
the black point (scale 0 to 100%), and shows the percentage of each
device colorant. To examine a profiles B2A table black
generation,
use the flag -fb to select the B2A table, or to invert the A2B
table,
and be able to explore black generation behavior, use the -fif
flag.
The appropriate intent can be selected with the -i flag,
as
can other flags appropriate to the function selected. See example.
The -G s:L:a:b
parameter overrides the plot slice start point of white, with some
other point specified in Lab or Jab Profile Connection Space. The
parameter must be a single string that combines s: with the three numbers separated
by the ':' character (no
spaces).
The -G e:L:a:b
parameter overrides the plot slice end point of black, with some
other point specified in Lab or Jab Profile Connection Space. The
parameter must be a single string that combines s: with the three numbers separated
by the ':' character (no
spaces).
The -f flag selects which type of table or
conversion is to be used. In addition to the usual four tables that can
be accessed in a fully populated Lut based profile, two additional
options are available in xicclu. One is to invert the forward
table, and the other is to invert the backward table. For non Lut based
profiles, -fif is equivalent to -fb, and -fib is equivalent to -ff.
Note that the -fib combination may not be fully supported.
The -i flag selects the intent table used for
a lut based
profile. It also selects between relative and absolute colorimetric for
non-lut base profiles.
A profile is allowed to contain more than the minimum
number of elements or table needed to describe a certain transform, and
may contain redundant descriptions. By default, Lut based table
information will be used first if present, followed by matrix/shaper
information, and only using monochrome information if it is all that is
present. The -o flag, reverses this order.
Normally the native PCS (Profile Connection Space) of
a device or abstract profile is used, but the -p flag allows
this to be overridden: -px:
XYZ (scaled to 1.0), -pX: XYZ
scaled to 100, -pl: L*a*b*, -pL: LCh, -py: Yxy space, -pj: CIECAM02 appearance space Jab,
or -pJ: CIECAM02 appearance
space JCh.
Note that the CIECAM02 output space selection by default uses
the colorimetric table of the profile, but that the perceptual or
saturation tables may be used by selecting them using the -i parameter. If the absolute
colorimetric intent is chosen using -ia
in combinations with -pj,
then Jab with
a fixed white reference is used, which emulates an absolute CIECAM02
Jab
appearance space.
Usually device values are processed and displayed
using a normalized value range between 0.0 and 1.0 Sometimes other
systems scale them to some other range (such as 100 or 255) due to an
underlying binary representation. The -s
flag lets you input and display such data in its normal range. For
instance, if your device values have a range between 0 and 255, use -s 255.
When inverting a CMYK profile, (ie. using the -fif
flag), an input PCS value can have many possible CMYK solutions. To be
able to return a unique solution, a black level (or black inking rule)
should be chosen. The choice here reflect similar choices in black
generation available in other tools (eg. colprof,
collink), with the addition of two extra
options.
Possible arguments to the -k option 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.
-kl uses an extra (fourth) value entered after the input PCS
value, to select a black locus target between 0.0 and 1.0.
-kv uses an extra (fourth) value entered after the input PCS
value, to select a black value target value between 0.0 and 1.0.
-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 .05 1 .9 .8
1.0 K |
enpo
|
_______
enle
|
/
|
/
|
/
|
/
stle
| ------/
+-------------------
0.0 K
0.0 stpo 1.0
White
Black
-k q stle0 stpo0 enpo0 enle0 shape0 stle2 stpo2
enpo2 enle2 shape2 is a combination of the -kv and -kp
functionality, with the black being preserved in CMYK to CMYK linking,
with the output black constrained to be between the first and second
set of curve parameters.
-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 -g flag can be used together with the -fif
flag, to plot
out the resulting black channel behaviour for various -k
or -K parameter
values.
-l tlimit Sets the
total ink limit (TAC, Total Area Coverage) for the CMYK inverse forward
lookup, as a total percentage from 0% to 400%. If none is provided, it
will be estimated from the profile relcolor B2A table. The ink limit
will be in final calibrated device values if the profile includes
calibration information.
-L klimit Sets the black
ink limit for the CMYK inverse forward lookup, as a total percentage
from 0% to 100%. If none is provided, it will be estimated from the
profile relcolor B2A table. The ink limit
will be in final calibrated device values if the profile includes
calibration information.
If the -a flag is used for inverse forward
lookups, then if
the target PCS value cannot be reproduced by the device (ie. it clips),
then the achievable, clipped PCS value is displayed.
If the -b flag is used for inverse forward
lookups, then out of gamut clipping will be performed in the CIECAM02
Jab appearance colorspace, rather than L*a*b* colorspace.
The -m flag turns on an internal processing
option, in which the per device curve lookup table processing is merged
into the main multi-dimensional interpolation lut lookup.
Whenever PCS values are to be specified or displayed in
Jab/CIECAM02
colorspace, a set of viewing conditions will be used to determine the
details of the conversion. The -c parameter allows the
specification of the 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 in detail 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.
The final parameter is the name of the ICC profile to be used. On the
MSWindows platform a .icm extension is generally used, and on Apple or
Unix/Linux platforms a .icc extension is often used.
Usage and Discussion
Typical usage for an output profile might be:
xicclu -ff -ip profile.icm
Normally the program is interactive, allowing the user to type in input
color
values, each number separated by a space, and the resulting output
color
being looked up and displayed after pressing return. To batch process
a
group of color values, prepare a text file containing each input value
on
a
separate line, and use the input indirection facilities of your command
line
shell to redirect this input file into the standard input of xicclu.
The
output can be captured to a file by redirecting standard output to a
file.
In most shells this would be done something like this:
xicclu -ff -ip profile.icm < inputvalues.txt >
outputvalues.txt
When plotting the neutral axis behavior, plotting the
existing B2A table
behavior would typically be done something like this:
xicclu -g -fb profile.icm
Exploring possible black generation and ink limiting behavior might be
done
like this:
xicclu -g -fif -kp 0 .1 .9 1 .5 -l230 -L95
profile.icm