xicc/xicclu  
    Summary 
    
    Lookup individual color values forward or inverted though an ICC
    profile table or CAL file. 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, or CAL file contents.
    
    Few of the options that apply to ICC profiles apply to CAL files,
    although device value options such as -e or -E will
    work. To lookup inverted CAL values, use -f b.
    Usage Summary
     xicclu [-options] profile_or_cal
       -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
         -V            
        Use 'vcgt' calibration tag from profile
       -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, A = disp. abs. measurements
       -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
      
      -e flag       
            Video encode device input as:
             -E flag       
            Video decode device output as:
                
            n          
            normal 0..1 full range RGB levels (default)
                
            t          
            (16-235)/255 "TV" RGB levels
                
            6          
            Rec601 YCbCr SD (16-235,240)/255 "TV" levels
                
            7          
            Rec709 1125/60Hz YCbCr HD (16-235,240)/255 "TV" levels
                
            5          
            Rec709 1250/50Hz YCbCr HD (16-235,240)/255 "TV" levels
                
            2          
            Rec2020 YCbCr UHD (16-235,240)/255 "TV" levels
                
            C          
            Rec2020 Constant Luminance YCbCr UHD (16-235,240)/255 "TV"
            lev
        -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)
                   
        g:glare      Glare light % of ambient
        (default 2)
           
            g:X:Y:Z      Glare color
        as XYZ (default media white, Abs: D50)
               
        g:x:y        FGare color as
        x, y
      
        inoutfile       The
        input ICC profile or CAL file.
      
          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.
    
    If a CAL file is used, then -g will simply plot the each
    channels calibration curve. It will also plot the invers curve for -f
      b.
    
    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 -V flag tells xicclu to load the given
    ICC profile, and the extract the 'vcgt' display calibration curves
    from the profile. The calibration curves can then be looked up in
    the normal way, or plotted using -g.
    
     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.
    The -A flag selects Display absolute measurement mode, where the
    Luminance tag value is used restore absolute measurement XYZ values.
    The PCS will be force to be XYZ with this selection.
    
     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.
    
    The -e flag applies a Video encoding
    to the input. See -E for the
    list of encodings.
    
    The -E flag applies a Video
    encoding to the output. The possible encoding are:
    
        
            n               
            normal RGB 0..1 full range levels (default)
                
            t               
            RGB (16-235)/255 "TV" levels
                
            6               
            Rec601 YCbCr SD (16-235,240)/255 "TV" levels
                
            7               
            Rec709 1125/60Hz YCbCr HD (16-235,240)/255 "TV" levels
                
            5               
            Rec709 1250/50Hz YCbCr HD (16-235,240)/255 "TV" levels
                
            2               
            Rec2020 YCbCr UHD (16-235,240)/255 "TV" levels
                
            C               
            Rec2020 Constant Luminance YCbCr UHD (16-235,240)/255 "TV"
            levels
          
     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