<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>xicclu</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta name="author" content="Graeme Gill"> </head> <body> <h2><b>xicc/xicclu</b> </h2> <h3>Summary <br> </h3> Lookup individual color values forward or inverted though an ICC profile table. <b>xicclu</b> is the analogue of the icclib tool <a href="icclu.html">icclu</a>, but expands the capability to reverse lookup the Lut tables, and displaying PCS values in CIECAM02 Jab space. <b>xicclu</b> can also be used to plot the device value composition down the neutral axis, for device profiles.<br> <h3>Usage Summary</h3> <small><span style="font-family: monospace;">xicclu [-</span><i style="font-family: monospace;">options</i><span style="font-family: monospace;">] profile</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#v">-v level</a><span style="font-family: monospace;"> Verbosity level 0 - 2 (default = 1)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#g">-g</a><span style="font-family: monospace;"> Plot slice instead of looking colors up. (Default white to black)<br> <a href="#Gs">-G s:L:a:b</a> Override plot slice start with Lab or Jab co-ordinate<br> <a href="#Ge">-G e:L:a:b</a> Override plot slice end with Lab or Jab co-ordinate<br style="font-family: monospace;"> </span><span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#f">-f function</a><span style="font-family: monospace;"> f = forward, b = backwards, g = gamut, p = preview</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> if = inverted forward, ib = inverted backwards</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#i">-i intent</a><span style="font-family: monospace;"> a = absolute, r = relative colorimetric,</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span></small><small><span style="font-family: monospace;"> p = perceptual, </span></small><small><span style="font-family: monospace;">s = saturation</span><span style="font-family: monospace;"></span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#o">-o order</a><span style="font-family: monospace;"> n = normal (priority: lut > matrix > monochrome)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> r = reverse (priority: monochrome > matrix > lut)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#p">-p oride</a><span style="font-family: monospace;"> x = XYZ_PCS, X = XYZ * 100, l = Lab_PCS, L = LCh, y = Yxy,<br> j = CIECAM02 Appearance Jab, J = CIECAM02 Appearance JCh<br> </span><span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#s">-s scale</a><span style="font-family: monospace;"> Scale device range 0.0 - scale rather than 0.0 - 1.0</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#k">-k [zhxrlv]</a><span style="font-family: monospace;"> Black generation: z = zero K,</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> h = 0.5 K, x = max K, r = ramp K (def.)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> l = extra PCS input is portion of K locus</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> v = extra PCS input is K target value</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#kp">-k p stle stpo enpo enle shape</a><br style="font-family: monospace;"> <span style="font-family: monospace;"> stle: K level at White 0.0 - 1.0</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> stpo: start point of transition Wh 0.0 - Bk 1.0</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> enpo: End point of transition Wh 0.0 - Bk 1.0</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> enle: K level at Black 0.0 - 1.0</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> shape: 1.0 = straight, 0.0-1.0 concave, 1.0-2.0 convex</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#kq">-k q stle0 stpo0 enpo0 enle0 shape0 stle2 stpo2 enpo2 enle2 shape2</a><br style="font-family: monospace;"> <span style="font-family: monospace;"> Transfer extra PCS input to dual curve limits</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#K">-K parameters</a><span style="font-family: monospace;"> Same as -k, but target is K locus rather than K value itself</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#l">-l tlimit</a><span style="font-family: monospace;"> set total ink limit, 0 - 400% (estimate by default)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#L">-L klimit</a><span style="font-family: monospace;"> set black ink limit, 0 - 100% (estimate by default)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#a">-a</a><span style="font-family: monospace;"> show actual target values if clipped<br> <a href="#b">-b</a> use CAM Jab for clipping<br style="font-family: monospace;"> </span><span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#m">-m</a><span style="font-family: monospace;"> merge output processing into clut</span><span style="font-family: monospace;"></span><span style="font-weight: bold; font-family: monospace;"></span><br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#c">-c viewcond</a><span style="font-family: monospace;"> set viewing conditions for CIECAM02,</span><br style="font-family: monospace;"> </small><small><span style="font-family: monospace;"> either an enumerated choice, or a parameter:value change</span><span style="font-family: monospace;"></span><br style="font-family: monospace;"> <span style="font-family: monospace;"></span></small><small><span style="font-family: monospace;"> pp - Practical Reflection Print (ISO-3664 P2)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> pe - Print evaluation environment (CIE 116-1995)<br> </span></small><small><span style="font-family: monospace;"> pc - Critical print evaluation environment (ISO-3664 P1)</span></small><small><span style="font-family: monospace;"></span><span style="font-family: monospace;"></span><br style="font-family: monospace;"> <span style="font-family: monospace;"> mt - Monitor in typical work environment</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> mb - Monitor in bright work environment</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> md - Monitor in darkened work environment</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> jm - Projector in dim environment</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> jd - Projector in dark environment</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> pcd - Photo CD - original scene outdoors</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> ob - Original scene - Bright Outdoors</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> cx - Cut Sheet Transparencies on a viewing box</span></small><small><span style="font-family: monospace;"></span><span style="font-family: monospace;"></span><br style="font-family: monospace;"> <span style="font-family: monospace;"> s:surround n = auto, a = average, m = dim, d = dark,</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> c = transparency (default average)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> w:X:Y:Z Adapted white point as XYZ (default media white, Abs: D50)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> w:x:y Adapted white point as x, y</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> a:adaptation Adaptation luminance in cd.m^2 (default 50.0)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> b:background Background % of image luminance (default 20)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> f:flare Flare light % of image luminance (default 1)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> f:X:Y:Z Flare color as XYZ (default media white, Abs: D50)</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> f:x:y Flare color as x, y</span><br style="font-family: monospace;"> <br style="font-family: monospace;"> <span style="font-family: monospace;"> </span><a style="font-family: monospace;" href="#p1"><i>inoutfile</i></a><span style="font-family: monospace;"> The input ICC profile</span><br style="font-family: monospace;"> <br style="font-family: monospace;"> <span style="font-family: monospace;"> The colors to be translated should be fed into standard in,</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> one input color per line, white space separated.</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> A line starting with a # will be ignored.</span><br style="font-family: monospace;"> <span style="font-family: monospace;"> A line not starting with a number will terminate the program.</span></small> <br> <h3>Flags and Parameters</h3> <a name="v"></a> The <b>-v</b> 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.<br> <br> <a name="g"></a>The <b>-g</b> 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 <span style="font-weight: bold;">-G</span> 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 <b>-k</b> 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 <b>-fb</b> to select the B2A table, or to invert the A2B table, and be able to explore black generation behavior, use the <b>-fif</b> flag. The appropriate intent can be selected with the <b>-i</b> flag, as can other flags appropriate to the function selected. See <a href="#xg">example</a>.<br> <br> <a name="Gs"></a>The <span style="font-weight: bold;">-G </span><small><span style="font-family: monospace;"><span style="font-weight: bold;">s:L:a:b</span></span></small> 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<span style="font-weight: bold;"> s:</span> with the three numbers separated by the '<span style="font-weight: bold;">:'</span> character (no spaces).<br> <br> <a name="Ge"></a>The <span style="font-weight: bold;">-G </span><small><span style="font-family: monospace;"><span style="font-weight: bold;">e:L:a:b</span></span></small> 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<span style="font-weight: bold;"> s:</span> with the three numbers separated by the '<span style="font-weight: bold;">:'</span> character (no spaces).<br> <br> <a name="f"></a> The <b>-f</b> 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 <b>xicclu</b>. 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.<br> <br> <a name="i"></a> The <b>-i</b> flag selects the intent table used for a lut based profile. It also selects between relative and absolute colorimetric for non-lut base profiles.<br> <br> <a name="o"></a> 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 <b>-o</b> flag, reverses this order. <br> <br> <a name="p"></a> Normally the native PCS (Profile Connection Space) of a device or abstract profile is used, but the <b>-p</b> flag allows this to be overridden: <span style="font-weight: bold;">-px</span>: XYZ (scaled to 1.0), <span style="font-weight: bold;">-pX</span>: XYZ scaled to 100, <span style="font-weight: bold;">-pl</span>: L*a*b*, <span style="font-weight: bold;">-pL</span>: LCh, <span style="font-weight: bold;">-py</span>: Yxy space, <span style="font-weight: bold;">-pj</span>: CIECAM02 appearance space Jab, or <span style="font-weight: bold;">-pJ</span>: CIECAM02 appearance space JCh.<span style="font-weight: bold;"><br> </span>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 <span style="font-weight: bold;">-i</span> parameter. If the absolute colorimetric intent is chosen using <span style="font-weight: bold;">-ia</span> in combinations with <span style="font-weight: bold;">-pj</span>, then Jab with a fixed white reference is used, which emulates an absolute CIECAM02 Jab appearance space. <br> <br> <a name="s"></a> 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 <span style="font-weight: bold;">-s</span> 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 <span style="font-weight: bold;">-s 255.</span><br> <br> <a name="k"></a> 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. <a href="colprof.html">colprof</a>, <a href="collink.html"> collink</a>), with the addition of two extra options.<br> <br> Possible arguments to the <b>-k</b> option are:<br> <br> <b> -kz</b> selects minimum black (0.0)<br> <b> -kh</b> selects a black value of 0.5<br> <b> -kx</b> selects the maximum possible black (1.0)<br> <b> -kr</b> 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.<br> <b> -kl</b> uses an extra (fourth) value entered after the input PCS value, to select a black locus target between 0.0 and 1.0.<br> <b> -kv</b> uses an extra (fourth) value entered after the input PCS value, to select a black value target value between 0.0 and 1.0.<br> <br> <b><a name="kp"></a>-k p stle stpo enpo enle shape</b> 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.<br> <br> Typical black value generation curve with parameters something like: -kp 0 .05 1 .9 .8<br> <br> <tt> 1.0 K | enpo<br> | _______ enle<br> | /<br> | /<br> | /<br> | /<br> stle | ------/<br> +-------------------<br> 0.0 K 0.0 stpo 1.0<br> White Black<br> </tt><br> <b><a name="kq"></a>-k q stle0 stpo0 enpo0 enle0 shape0 stle2 stpo2 enpo2 enle2 shape2</b> is a combination of the <b>-kv</b> and <b>-kp</b> 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.<br> <br> <a name="K"></a> <span style="font-weight: bold;">-K parameters.</span> Any of the <span style="font-weight: bold;">-k</span> options above can use the <span style="font-weight: bold;">-K</span> version, in which rather than a black value target being defined by the inking rule, a black <span style="text-decoration: underline;">locus</span> 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). <br> <tt> </tt><span style="text-decoration: underline;"></span><br> The <b>-g</b> flag can be used together with the <b>-fif</b> flag, to plot out the resulting black channel behaviour for various <b>-k</b> or <span style="font-weight: bold;">-K </span>parameter values.<br> <br> <b><a name="l"></a>-l</b> <i>tlimit</i> 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.<br> <br> <b><a name="L"></a>-L</b> <i>klimit</i> 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.<br> <br> <a name="a"></a> If the <b>-a</b> 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.<br> <br> <a name="b"></a> If the <b>-b</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.<br> <br> <a name="m"></a> The <b>-m</b> 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.<br> <br> <a name="c"></a>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 <b>-c</b> 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.<br> <br> <a name="p1"></a> The final parameter is the name of the <a href="File_Formats.html#ICC">ICC</a> 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.<br> <h3>Usage and Discussion</h3> Typical usage for an output profile might be:<br> <br> xicclu -ff -ip profile.icm<br> <br> 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:<br> <br> xicclu -ff -ip profile.icm < inputvalues.txt > outputvalues.txt<br> <br> <a name="xg"></a>When plotting the neutral axis behavior, plotting the existing B2A table behavior would typically be done something like this:<br> <br> xicclu -g -fb profile.icm<br> <br> Exploring possible black generation and ink limiting behavior might be done like this:<br> <br> xicclu -g -fif -kp 0 .1 .9 1 .5 -l230 -L95 profile.icm<br> <br> <br> <br> <br> <br> <br> <br> </body> </html>