spectro/dispcal
Summary
Given calibration target information [white point, maximum
brightness, and response curve ("gamma")], display a series of test
patches on the display, and using the colorimetric values read,
create a calibration lookup tables that make the display meet the
desired target. The type of instrument is determined by the
communication port selected. Emission and display measurement
instruments are supported.
Usage
dispcal
[-options] inoutfile
-v [n]
Verbose mode
-display displayname [X11 only] Choose X11 display
name
-d n[,m]
[X11 only]Choose the display from the following list (default
1),
and
optionally
choose
a
different
display
m
for
VideoLUT access.
-d n
Choose
the
display
from
the
following
list
(default
1)
-d
web[:port] Display
via a web server at port (default 8080)
-d cc[:n]
Display via n'th ChromeCast (default 1, ? for list)
-d madvr
[MSWin] Display via MadVR Video Renderer
-d dummy
Dummy (non-existant, invisible) display
-c
listno
Choose instrument from the
following list (default 1)
-r
Report on the calibrated display then
exit
-R
Report on the uncalibrated display then
exit
-m
Skip adjustment of the monitor
controls
-o [profile.icm] Create
fast matrix/shaper profile [different filename to outfile.icm]
-O description
Fast ICC Profile Description string (Default "outfile")
-u
Update
previous calibration and (if -o used) ICC profile VideoLUTs
-q [lmh]
Quality - Low, Medium (def), High
-p
Use telephoto mode (ie. for a projector, if available)
-a
Use ambient mode (ie. for a projector, if available)
-y X
Display type - instrument specific list to choose from.
-t [temp]
White
Daylight
locus
target,
optional
target
temperaturee
in
deg. K (deflt.)
-T [temp]
White
Black
Body
locus
target,
optional
target
temperaturee
in deg. K
-w x,y
Set the target white point as chromaticity coordinates
-b bright
Set the target white brightness in cd/m^2
-g gamma
Set the target response curve gamma (Def. 2.4)
Use "-gl" for L*a*b* curve
Use "-gs" for sRGB curve
Use
"-g709"
for
REC
709
curve
(should
use
-a ambient as well!)
Use "-g240" for SMPTE 240M curve (should use -a
ambient as well!)
Use "-G2.4 -f0" for BT.1886
-G gamma
Set the target response curve actual technical gamma
-f [degree]
Amount
of
black
level
accounted
for
with
output
offset (default all output offset)
-a ambient
Use viewing condition adjustment for ambient in Lux
-k factor
Amount to try and correct black point hue. Default 1.0, LCD
default 0.0
-A rate
Rate of blending from neutral to black point. Default 4.0
-b
Use forced black point hack
-B bkbright
Set the target black brightness in cd/m^2
-e [n]
Run n verify passes on final curves
-z
Run only verify pass on installed calibration curves
-P
ho,vo,ss[,vs] Position test
window and scale it
ho,vi:
0.0
=
left/top,
0.5
=
center,
1.0
= right/bottom etc.
ss:
0.5
=
half,
1.0
=
normal,
2.0
= double etc.
ss,vs: = optional horizontal, vertical scale.
-F
Fill whole screen with black background
-E
Video
encode output as (16-235)/255 "TV" levels
-n
[X11
only]
Don't
set
override
redirect
on
test window
-K
Run instrument calibration first
(used rarely)
-N
Disable initial calibration of instrument if possible
-H
Use high resolution spectrum mode (if
available)
-X file.ccmx
Apply Colorimeter Correction Matrix
-X
file.ccss
Use Colorimeter Calibration Spectral Samples for calibration
-Q observ
Choose CIE Observer for spectrometer or
CCSS colorimeter data:
1931_2 (def.), 1964_10, 2012_2, 2012_10, S&B
1955_2, shaw, J&V 1978_2, 1964_10c or file.cmf
-I b|w
Drift compensation, Black: -Ib, White: -Iw, Both: -Ibw
-Y R:rate
Override measured refresh rate with rate Hz
-Y A
Use non-adaptive integration time mode (if
available).
-Y
p
Don't wait for the instrument to be placed
on the display
-C "command"
Invoke shell
"command" each time a color is set
-M "command"
Invoke shell
"command" each time a color is measured
-W n|h|x
Override
serial
port
flow
control:
n
=
none,
h = HW, x = Xon/Xoff
-D [level]
Print debug diagnostics to stderr
inoutfile
Base name for
created or updated .cal and .icm output files
Comments
This is the tool is used for adjusting and calibrating a display to
reach specified target behaviour, and optionally profiling it.
For best results on a CRT, you should run this against a neutral
grey desktop background, and avoid having any bright images or
windows on the screen at the time you run dispcal. You could also
use the -B option to black
the whole screen out, although this will make it impossible to
control dispcal unless you have more than one display.
The -v flag reports progress information,
as well as other statistics about the progress of calibration. A
numerical argument greater than 1 gives greater verbosity. 2 will
give per step adjustment and repeat information, while 3 will give
even greater technical detail.
When running on a UNIX based system that used
the X11 Windowing System, dispcal will by default use the
$DISPLAY environment variable to determine which local or remote
display and screen to read from. This can be overridden by supplying
an X11 display name to the -display
option. Note that if Xinerama is active, you can't select the screen
using $DISPLAY or -display, you have to select it using the -d parameter.
By default the main display will be the location of
the test window. If the system has more than one display or screen,
an alternate display/screen can be selected with the -d parameter. If you invoke dispcal so as to display the
usage information (i.e. "dispcal -?" or "dispcal --"), then the
discovered displays/screens will be listed. Multiple displays may
not be listed, if they appear as a single display to the operating
system (ie. the multi-display support is hidden in the video card
driver). On UNIX based system that used the X11 Windowing System,
the -d parameter will
override the screen specified by the $DISPLAY or parameter.
Note that if VideoLUTs for a
display are not accessible (i.e. no hardware calibration
capability), dispcal will
will issue a warning, but continue creating a calibration based on
the display "as-is" rather than its native response. See the -o flag for an explanation of the
implications of having no access to the VideoLUTs.
On X11 the inability to access VideoLUTs could be because you are
trying to access a remote display, and the remote display doesn't
support the XF86VidMode extension, or perhaps you are running
multiple monitors using NVidia TwinView, or MergedFB, and trying to
access anything other than the primary monitor. TwinView and
MergedFB don't properly support the XF86VidMode extension for
multiple displays. You can use dispwin -r
to test whether the VideoLUTs are accessible for a particular
display. See also below, on how to select a different display for
VideoLUT access. Also note that dispcal will fail if the Visual
depth doesn't match the VideoLUT depth. Typically the VideoLUTs have
256 entries per color component, so the Visual generally needs to be
24 bits, 8 bits per color component.
Because of the difficulty cause by TwinView and
MergedFB in X11 based systems, you can optionally specify a separate
display number after the display that is going to be used to present
test patches, for accessing the VideoLUT hardware. This must be
specified as a single string, e.g. -d
1,2 . Some experimentation may be needed using dispwin on such systems, to discover what
screen has access to the VideoLUT hardware, and which screens the
test patches appear on. You may be able to calibrate one screen, and
then share the calibration with another screen. Profiling can be
done independently to calibration on each screen.
-dweb or
-dweb:port starts a
standalone web server on your machine, which then allows a local or
remote web browser to display the the color test patches. By default
port 8080 is used, but this
can be overridden by appending a :
and the port number i.e. -dweb:8001.
The URL will be http://
then name of the machine or its I.P. address followed by a colon and
the port number - e.g something like http://192.168.0.1:8080. If you use the verbose
option (-v) then a likely
URL will be printed once the server is started, or you could run ipconfig (MSWin) or /sbin/ifconfig (Linux or OS X)
and identify an internet address for your machine that way. JavaScript
needs to be enabled in your web browser for this to work. You may
have to modify any firewall to permit port 8080 to be accessed on
your machine.
Note that if you use this method of displaying test patches, that
there is no access to the display VideoLUTs and that the colors will
be displayed with 8 bit per component precision, and any
screen-saver or power-saver will not be disabled. You will also be
at the mercy of any color management applied by the web browser, and
may have to carefully review and configure such color management.
See the -o flag for an explanation of the
implications of having no access to the VideoLUTs.
-dmadvr
[MSWin only] causes test patches to be displayed using the MadVR
video renderer. Note that will have to start MadTPG before
running dispcal, and that while you can adjust the "Test Pattern
Configuration" controls, you should not normally alter the
"Existing Calibration" controls, as dispcal will set these
appropriately.
-ddummy
causes test patches not to be displayed at all. This is useful when
used with the these appropriately. This is useful when patch values
are going to be displayed via the -C option.
-dcc or -dcc:no
causes test patches to be displayed using and available ChromeCast to
your TV. Use -dcc:? to display a list of ChromeCasts on your
local network. Note that the ChromeCast as a test patch source is
probably the least accurate of your choices, since it
up-samples the test patch and transforms from RGB to YCC and back,
but should be accurate within ± 1 bit. You may have to modify any
firewall to permit port 8081 to be accessed on your machine if it
falls back to the Default receiver (see installation
instructions for your platform).
-c The
instrument is assumed to communicate through a USB or serial
communication port, and the port can be selected with the -c
option, if the instrument is not connected to the first port. If you
invoke dispcal so as to
display the usage information (i.e. "dispcal -?" or "dispcal --"),
then the discovered USB and serial ports will be listed. On
UNIX/Linux, a list of all possible serial ports are shown, but not
all of them may actually be present on your system.
The -r and
-R flags
perform a quick measurement of current display behaviour, reports
and then exits. If the -r
flag is used the measurement are taken using the currently loaded
calibration (Video LUT) curves, and in the case of MadVR renderer
test patch display the Color Management 3dLut. If -R is use, then the uncalibrated
("raw" or "native") behaviour is measured (ie. no VideoLut or CM).
Reported are:
Black Brightness in cd/m^2
White Brightness in cd/m^2
The approximate Gamma
The white point x,y chromaticity co-ordinates
The correlated color temperature in Kelvin
(CCT), and the CIEDE200 to the Black Body locus.
The correlated Daylight temperature in Kelvin
(CDT), and the CIEDE200 to the Daylight locus.
The visual color temperature in Kelvin (VCT),
and the CIEDE200 to the Black Body locus.
The visual Daylight temperature in Kelvin
(VDT), and the CIEDE200 to the Daylight locus.
The visual color temperature in Kelvin
(for -R "raw":)
The apparent VideoLUT entry number of
significant bits.
Note that the correlated color temperature is the temperature
of a black body radiator that has the closest color to the white
point measured using the traditional CIE 1960 UCS space color
difference formula. The correlated daylight temperature is a similar
thing, except the CIE daylight locus is used. The visual color
temperature values are calculated similarly to the correlated color
temperatures, but using the modern CIEDE2000 color difference
formula to calculate a better visual approximation to the closest
temperature to the displays white point. There will be no difference
between the UCS and CIEDE2000 temperatures if the display white
point actually lies on the particular locus.
The -m
option skips the usual process of adjusting the display monitor
contrast, brightness and white point controls, and skips straight to
calibration.
-o [profile.icm] Normally dispcal creates just a
calibration file, which can then be used for subsequent
characterization using dispread and
profiling using colprof. If the -o flag is used, dispcal will also create a
shaper/matrix profile. By default it will create a profile named inoutfile.icm, but a differently
named file can be created or updated by specifying the name after
the -o flag. If the -u flag is used with -o, then the ICC profile vcgt calibration curves will be
updated.
Note that if VideoLUT access is not possible for the display, that
hardware calibration is not possible. dispcal will create
calibration curves anyway with a warning, and if a profile is
created, it will not contain a 'vcgt' tag, but instead will have the
calibration curves incorporated into the profile itself. If
calibration parameters are chosen that change the displays white
point or brightness, then this will result in a slightly unusual
profile that has a white point that does not correspond with
R=G=B=1.0. Some systems may not cope properly with this type of
profile. See the tutorial for a
further explanation.
The -O parameter allows setting of the
shaper/matrix profile description tag. The parameter should be a
string that describes the device and profile. 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 profile file name will
be used as the description.
-u Normally
dispcal creates a new
calibration file and optional profile, based on the requested
targets and the response of the display. This can take a fair amount
of time, particularly if a high quality level has been selected, so
to speed up the process of keeping a display in calibration the -u flag can be used. This uses
the same calibration targets as the previous calibration but does a
smaller number of refinement passes, enough to improve the accuracy
of the calibration to account for drift in the device. If the -o flag is used as well, then
the ICC profile will have
its vcgt tag updated with the new calibration. This keeps the
profile up to date with the display. Normally dispcal -u will use the same
quality level that was specified in the previous calibration, but
this can be overridden using the -q
flag. Any options that attempt to change the calibration target (ie.
white point, brightness, gamma etc.) will be ignored. Adjustment of
the display monitor controls is skipped. A profile cannot be updated
if the display does not support hardware calibration (no VideoLUT
access).
Quality - Low, Medium (def), High. The -q flag determines how much time
and effort to go to in calibrating the display. The higher the
quality, the more test readings will be done, the more refinement
passes will be done, the tighter will be the accuracy tolerance, and
the more detailed will be the calibration of the display. The result
will ultimately be limited by the accuracy of the instrument, the
repeatability of the display and instrument, and the resolution of
the Video Lookup table entries and Digital or Analogue output
(RAMDAC).
The -p flag
allows measuring in telephoto mode, using instruments that support
this mode, e.g. the ColorMunki. Telephoto mode is one for taking
emissive measurements from a distance (ie. telespectometer,
tele-colorimeter) mode, and typically would be used for measuring
projector type displays. If a device does not support a specific
telephoto mode, then the normal emissive mode may be suitable for
measuring projectors.
The -a flag
allows measuring in ambient mode, using instruments that support
this mode. This typically would be used for measuring projector type
displays when the light levels reflected from the projection surface
are very low. Note that this means that the color value will not be
quite as accurate, because the effect the projection surface has on
the color is not taken into account. NOTE also that this is
a different option to -a ambient (see below).
The -y
flag allows setting the Display Type. The selection typically
determines two aspects of of the instrument operation: 1) It may set the measuring mode
to suite refresh or non-refresh displays.
Typically only LCD (Liquid Crystal) displays have a non-refresh
nature. 2) It may select an
instrument calibration matrix suitable for a particular display
type. The selections available depends on the type and model of
instrument, and a list of the options for the discovered instruments
will be shown in the usage
information. For more details on what particular instruments support
and how this works, see Operation of
particular instruments. 3) Any installed CCSS files
(if applicable), or CCMX files. These files are typically created
using ccxxmake, and installed using oeminst. The default and Base Calibration
types will be indicated in the usage.
-t Set the target white point
locus to the equivalent of a Daylight spectrum of the given
temperature in degrees Kelvin. By default the white point target
will be the native white of the display, and it's color temperature
and delta E to the daylight spectrum locus will be shown during
monitor adjustment, and adjustments will be recommended to put the
display white point directly on the Daylight locus. If a Daylight
color temperature is given as an argument to -t, then this will become the
target of the adjustment, and the recommended adjustments will be
those needed to make the monitor white point meet the target.
Typical values might be 5000 for matching printed output, or
6500, which gives a brighter, bluer look. A white point temperature
different to that native to the display may limit the maximum
brightness possible.
-T Same functionality as
the -t option, except the
white point locus will be the Black Body, or Planckian locus, rather
than the Daylight locus. While these two white point loci are quite
close, they are subtly different. If a temperature is given as an
argument, this will become the Black Body target temperature during
adjustment.
-w An
alternative to specifying a white point target in Daylight or
Black Body degrees Kevin, is to specify it in chromaticity
co-ordinates. This allows the white point to be a color other than
one on the Daylight or Black Body. Note that the x,y numbers must be
specified as a single string (no space between the numbers and the
comma).
-b Set
the target brightness of white in cd/m^2. If this number cannot be
reached, the brightest output possible is chosen, consistent with
matching the white point target. Note that many of the instruments
are not particularly accurate when assessing the absolute display
brightness in cd/m^2. NOTE
that some LCD screens behave a little strangely near their absolute
white point, and may therefore exhibit odd behavior at values just
below white. It may be advisable in such cases to set a brightness
slightly less than the maximum such a display is capable of.
-g gamma
Set
the target response curve gamma. This is normally an exponential
curve (output = input ^gamma), and defaults to 2.4 on MSWindows and
Macintosh OS X 10.6 or latter and Linux/Unix (which is typical of a
CRT type displays real response), and 1.8 on a Macintosh (prior to
OS X 10.6). Four pre-defined curves can be used as well: the sRGB
colorspace response curve, which is an exponent curve with a
straight segment at the dark end and an overall response of
approximately gamma 2.2 (-gs),
the
L* curve, which is the response of the CIE L*a*b* perceptual
colorspace (-gl). the REC
709 video standard response curve (-g709)
and the SMPTE 240M video standard response curve (-g240)
Note that most real displays
(with the possible exception of OLED) can't reproduce any of these
ideal curves, since they will have a non-zero black point, whereas
all the ideal curves assume zero light at zero input. In the case of
a gamma curve target, dispcal uses an actual technical power curve
shape that aims for the same relative output at 50% input as the
ideal gamma power curve. To allow for the non-zero black level of a
real display, by default dispcal
will offset the target curve values so that zero input gives the
actual black level of the display (output offset). This ensures that
the target curve better corresponds to the typical natural behavior
of displays, but it may not be the most visually even progression
from display minimum, but this behavior can be changed using the -f option (see below).
Also note that many color
spaces are encoded with, and labelled as having a gamma of
approximately 2.2 (ie. sRGB,
REC 709, SMPTE 240M, Macintosh OS X 10.6), but are actually intended
to be displayed on a display with a typical CRT gamma of 2.4 viewed in a darkened
environment. This is because this 2.2
gamma is a source gamma encoding in bright viewing conditions such
as a television studio, while typical display viewing conditions are
quite dark by comparison, and a contrast expansion of (approx.)
gamma 1.1 is desirable to make the images look as intended. So if
you are displaying images encoded to the sRGB standard, or
displaying video through the calibration, just setting the gamma
curve to sRGB or REC 709 (respectively) is probably not what you want! What you
probably want to do, is to set the gamma curve to about gamma 2.4,
so that the contrast range is expanded appropriately, or alternatively
use sRGB or REC 709 or a gamm of 2.2 but also use the -a
parameter to specify the actual ambient viewing conditions, so that
dispcal can make an
appropriate contrast enhancement. If your instrument is capable of
measuring ambient light levels, then you can do so during the
interactive display control adjustment. See
<http://www.color.org/sRGB.xalter> for details of how sRGB is
intended to be used.
It is hard to know whether Apple Macintosh computers prior to OS X
10.6 should also have such an adjustment, since it is not really
possible to know whether colors labelled as being in such a
colorspace are actually encoded in that gamma with the expectation
that they will be displayed on a display with that actual response,
or whether they are intended to be displayed on a display that
contrast expands by a power 1.1. Both situations might be the
case, depending on how source material is created!
-G gamma
As
explained above, the gamma value provided to the -g option is used to set and
actual response curve that makes an allowance for the non-zero black
of the actual display, and will have the same relative output at 50%
input as the ideal gamma power curve, and so best matches typical
expectations. The -G option
is an alternative that allows the actual
power to be specified instead, meaning that when combined with the
displays non-zero black value, the response at 50% input will
probably not match that of the ideal power curve with that gamma
value.
-f [degree]:
As explained in for the -g
and -G options, real
displays do not have a zero black response, while almost all the
target response curves do, so this has to be allowed for in some
way. The default way of handling this (equivalent to -f 1.0)
is to allow for this at the output of the ideal response curve, by
offsetting and scaling the output values. This defines a curve that will match the responses
that many other systems provide and may be a better match to the
natural response of the display, but will give a less visually even
response from black. The
other alternative is to offset and scale the input values into the
ideal response curve so that zero input gives the actual non-zero
display response. This ensures the most visually even progression
from display minimum, but might be hard to achieve since it is
different to the naturally response of a display. A subtlety is to
provide a split between how much of the offset is accounted for as
input to the ideal response curve, and how much is accounted for at
the output, and this can be done by providing a parameter -f degree, where the degree is
0.0 accounts for it all as input offset, and 1.0 accounts for all of
it as output offset, and 0.5 splits it between these. If -f is used without a specified
degree, a degree of 0.0 is assumed, the opposite of the default. Note that using all input offset
(degree == 0.0) is equivalent to the use of the BT.1886 transfer function.
-a ambient:
As explained for the -g
parameter, often colors are encoded in a situation with viewing
conditions that are quite different to the viewing conditions of a
typical display, with the expectation that this difference in
viewing conditions will be allowed for in the way the display is
calibrated. The -a parameter
is a way of doing this. By default dispcal
will not make any allowances for viewing conditions, but will
calibrate to the specified response curve, but if the -a option is used, or the
ambient level is measured during the interactive display controls
portion of the calibration, an appropriate viewing conditions
adjustment will be performed. For a gamma value or sRGB, the
original viewing conditions will be assumed to be that of the sRGB
standard viewing conditions, while for REC 709 and SMPTE 240M they
will be assumed to be television studio viewing conditions. By
specifying or measuring the ambient lighting for your display, a
viewing conditions adjustment based on the CIECAM02 color appearance
model will be made for the brightness of your display and the
contrast it makes with your ambient light levels. NOTE that
this is a different option to using -a without a parameter (see above).
-k factor:
Normally this will be set automatically, based on the measured black
level of the display. A -k
factor of 1.0 will make all colors down the neutral axis (R=G=B)
have the same hue as the chosen white point. Near the black point,
red, green or blue can only be added, not subtracted from zero, so
the process of making the near black colors have the desired hue,
will lighten them to some
extent. For a device with a good contrast ratio or a black point
that has nearly the same hue as the white, this should not affect
the contrast ratio too severely. If the device contrast ratio is not
so good, and the native black hue is noticeably different to that of
the chosen white point (which is often the case for LCD type displays, or CRT type displays with one
channel which has a poor level of black), this could have a
noticeably detrimental effect on an already limited contrast ratio,
and result in a black that is not as good as it can be, and a lower
-k factor should be used. -k values can range between 0.0
(no correction of black) to 1.0 (full correction of black). If less
than full correction is chosen, then the resulting calibration
curves will have the target white point down most of the curve, but
will then blend over to the native or compromise black point that is
blacker, but not of the right hue. The rate of this blend can be
controlled with the -A
parameter (see below). For applications where maximum contrast ratio
is important (such as Video), use -k0.
-A rate:
If
the black point is not being set completely to the same hue as the
white point (ie. because the -k
factor is less than 1.0), then the resulting calibration curves will
have the target white point down most of the curve, but will then
blend over to the native or compromise black point that is blacker,
but not of the right hue. The rate of this blend can be controlled
with the -A parameter. The
default value 4.0, which results in a target that switches from the
white point target to the black, moderately close to the black
point. While this typically gives a good visual result with the
target neutral hue being maintained to the point where the crossover
to the black hue is not visible, it may be asking too much of some
displays (typically LCD type displays), and there may be some visual
effects due to inconsistent color with viewing angle. For this
situation a smaller value may give a better visual result (e.g. try
values of 3.0 or 2.0. A value of 1.0 will set a pure linear blend
from white point to black point). If there is too much coloration
near black, try a larger value, e.g. 6.0 or 8.0.
The -b flag forces source 0,0,0 to map
to destination 0,0,0. This may be useful with displays that have a
very dark black point, and with an instrument is unable to measure
it precisely, and where it is known in some other way that the
display is very well behaved from black (i.e. that it has no
"dead zone" above zero device input). This may be the case with OLED
displays. Using this option with a display that is not well
behaved, may result in a loss of shadow detail. This will override
any -k factor.
-B Set
the target brightness of black in cd/m^2 (i.e. the absolute Y
value). Setting too high a value may give strange results as it
interacts with trying to achieve the target "advertised" gamma curve
shape. You could try using -f 1 if this causes a problem.
-e [n] Run n verify passes on the final
curves. This is an extra set of instrument readings, that can be
used to estimate how well the device will match the targets with the
computed calibration curves. Note that the usefulness of the
verification is sometimes limited by the repeatability of the device
& instrument readings. This is often evident for CRT displays,
which (due to their refresh rate) flicker. More than one
verification pass can be done by providing the parameter n, and by then comparing the
successive verifications, some idea of the repeatability can be
ascertained. The verification uses a fixed number of semi-random
test values to test the calibration.
-z Run
verify pass on the display as it is currently setup (currently
installed LUT curves). This will use the usual input parameters to
establish the expected (target) characteristic. Note that if the initial
calibration was modified due to it being out of gamut of the
display, verify will show the resulting discrepancy. You can use dispwin to load a .cal file into the display
before running dispcal -z.
Note that if you set an Ambient light level interactively during the
calibration, you need to enter the same number that was measured and
set using the -a parameter
for verify.
The -P
parameter allows you to position and size the test patch window. By
default it is places in the center of the screen, and sized
appropriately for the type of instrument, or 10% of the width of the
display if the display size is unknown.. The ho and vo values govern the horizontal
and vertical offset respectively. A value of 0.0 positions the
window to the far left or top of the screen, a value of 0.5
positions it in the center of the screen (the default), and 1.0
positions it to the far right or bottom of the screen. If three
parameters are provided, then the ss
parameter is a scale factor for the test window size. A value of 0.5
for instance, would produce a half sized window. A value of 2.0 will
produce a double size window. If four parameters are provided, then
the last two set independent horizontal and vertical scaling
factors. Note that the ho,vo,ss or ho,vo,hs,vs numbers must be
specified as a single string (no space between the numbers and the
comma). For example, to create a double sized test window at the top
right of the screen, use -P 1,0,2
. To create a window twice as wide as high: -P 1,0,2,1.
The -F
flag causes the while screen behind the test window to be masked
with black. This can aid black accuracy when measuring CRT displays
or projectors.
The -E
flag causes the display test values to be scaled to the Video RGB
encoding range of (16-235)/255. This also modifies the resulting
calibration curve behavior downstream of dispcal. If a calibration
curve created using -E gets installed or converted to an ICC profile
'vcgt' tag in the process of creating a profile in dispcal or
colprof, the incoming full range values will first have the
calibration curve applied and then be scaled to the Video encoding
range (16-235)/255.
-n When
running on a UNIX based system that used the X11 Windowing System, dispcal
normally selects the override redirect so that the test window will
appear above any other windows on the display. On some systems this
can interfere with window manager operation, and the -n
option turns this behaviour off.
The -K
option runs through the black and sensor relative calibration
routines for the Xrite DTP92 and DTP94 instruments, the black level
calibration for the Eye-One Display 1, and a CRT frequency
calibration for the Eye-One Display 2. For the black calibration the
instrument should be placed on an opaque, black surface, and any
stray light should be avoided by placing something opaque over the
instrument. If a Spectrolino is being used, then a white and black
calibration will always be performed before the instrument can be
placed on the display, unless the -N
flag is used. Generally it is not necessary to do a calibration
every time an instrument is used, just now and again. There is also
no point in doing a CRT frequency calibration, as this will be
done automatically at the commencement of patch reading, and will be
lost between runs.
-N Any
instrument that requires regular calibration will ask for
calibration on initial start-up. Sometimes this can be awkward if
the instrument is being mounted in some sort of measuring jig, or
annoying if several sets of readings are being taken in quick
succession. The -N
suppresses this initial calibration if a valid and not timed out
previous calibration is recorded in the instrument or on the host
computer. It is advisable to only use this option on the second and
subsequent measurements in a single session.
The -H
option turns on high resolution spectral mode, if the instrument
supports it, such as the Eye-One Pro. See Operation of particular instruments
for more details. This may give better accuracy for display
measurements.
The -X file.ccmx option reads
a Colorimeter Correction Matrix
from the given file, and applies it to the colorimeter instruments
readings. This can improve a colorimeters accuracy for a particular
type of display. A list of contributed ccmx files is here.
The -X file.ccss option reads
a Colorimeter Calibration
Spectral Sample from the given file, and uses it to set the
colorimeter instruments calibration. This will only work with
colorimeters that rely on sensor spectral sensitivity calibration
information (ie. the X-Rite i1d3,
or the DataColor Spyder4 &
Spyder 5).This can improve a colorimeters accuracy for a
particular type of display. A list of contributed ccss files is here.
The -Q flag allows specifying a tristimulus
observer, and is used to compute PCS (Profile Connection Space)
tristimulus values from spectral readings or using a colorimeter
that has CCSS capability. 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
2012_2 selects the proposed CIE 2012 2 degree
observer
2012_10 selects the proposed CIE 2012 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
1964_10c selects a version of the CIE 1964 10
degree observer that has been adjusted using a 3x3 matrix to
better agree with the 1931 2 degree observer.
file.cmf selects an observer specified by
the given .cmf file.
NOTE that if you select
anything other than the default 1931 2 degree observer, that the Y
values will not be exact cd/m^2, due to the Y curve not being the
CIE 1924 photopic V(λ) luminosity function.
The -I b|w options invoke
instrument black level, and display white level compensation
(respectively). Instrument black level drift compensation attempts
to combat instrument black calibration drift by using an initial
display black test patch as a reference,and then measuring black
patches regularly between other measurements. If an instrument is
not acclimatised sufficiently to the measurement conditions, changes
in temperature can affect the black readings. Display white level
drift compensation attempts to combat changes in display brightness
and white point as it warms up by measuring white patches regularly
between other measurements, and using them to normalise all the
other readings to the final white value. If just instrument black
drift compensation is needed, use -Ib.
If just display white level compensation is needed, use -Iw. If both are needed, use -Ibw or -Iwb.
The -Y R:rate
options overrides calibration of the instrument refresh rate. This
may be useful if the instrument supports this function and the
refresh rate cannot be accurately calibrated from the display
itself.
The -Y A
option uses a non-adaptive integration time emission measurement
mode, if the instrument supports it, such as the Eye-One Pro,
ColorMunki, i1d3 and K10. By default an adaptive integration time
measurement mode will be used for emission measurements, but some
instruments support a fixed integration time mode that can be used
with display devices. This may give faster measurement times, but
may also give less accurate low level readings.
The -Y p
option skips asking the user to place the instrument on the display.
Normally a grey patch is displayed, and then the user is asked to
confirm that the instrument is in place, so that readings can
commence. This flag disables that check. This may be useful in
automating certain operations.
The -C "command" option allows a
method of relaying each test value to some other display than that
on the system running dispcal (for instance, a photo frame, PDA
screen etc.), by causing the given command to be invoked to the
shell, with six arguments. The first three arguments are the RGB
test color as integers in the range 0 to 255, the second three
parameters are the RGB test color as floating point numbers in the
range 0.0 to 1.0. The script or tool should relay the given color to
the screen in some manner (e.g. by generating a raster file of the
given color and sending it to the display being profiled), before
returning. Note that a test window will also be created on the
system running dispread.
The -M "command" option allows a
method of gathering each test value from some external source, such
as an instrument that is not directly supported by Argyll. The given
command is involked to the shell, with six arguments. The first
three arguments are the RGB test color as integers in the range 0 to
255, the second three parameters are the RGB test color as floating
point numbers in the range 0.0 to 1.0. The script or tool should
create a file called "command.meas"
that contains the XYZ values for the given RGB (or measured from the
test window) in cd/m^2 as three numbers separated by spaces, before
returning. If the command returns a non-zero return value, dispcal
will abort. Note that a test window will also be created on the
system running dispcal.
The -W n|h|x
parameter overrides the default serial communications flow control
setting. The value n turns
all flow control off, h
sets hardware handshaking, and x
sets Xon/Xoff handshaking. This commend may be useful in workaround
serial communications issues with some systems and cables.
The -D flag causes communications and other
instrument diagnostics to be printed to stdout. A level can be set
between 1 .. 9, that may give progressively more verbose
information, depending on the instrument. This can be useful in
tracking down why an instrument can't connect.
inoutfile
The final parameter on the command line is the base filename for the
.cal file and the optional ICC
profile. Normally this will be created (or an existing file will be
overwritten). If the -u
flag is used, then these files will be updated. If a different ICC
profile name needs to be specified, do so as an argument to the -o flag.
NOTE that on an X11 system,
if the environment variable ARGYLL_IGNORE_XRANDR1_2
is set (ie. set it to "yes"), then the presence of the XRandR 1.2
extension will be ignored, and other extensions such as Xinerama and
XF86VidMode extension will be used. This may be a way to work around
buggy XRandR 1.2 implementations.
Discussion and guide to display control
adjustment:
The adjustment of the display controls (brightness, contrast, R, G
& B channel controls etc.) is very dependent on the particular
monitor. Different types and brands of displays will have different
controls, or controls that operate in different ways. Some displays
have almost no user controls, and so you may well be best skipping
display adjustment, and going straight to calibration.
Almost all LCD displays lack a real contrast control. Those that do present such a
control generally fake it by adjusting the video signal. For this
reason it is usually best to set an LCD's contrast control at its neutral setting (ie. the
setting at which it doesn't change the video signal). Unfortunately,
it can be hard to know what this neutral setting is. On some
displays it is 50%, others 75%. If the LCD display has a "reset to
factory defaults" mode, then try using this first, as a way of
setting the contrast
control to neutral. The LCD brightness
control generally adjusts the level of backlighting the display
gets, which affects the maximum brightness, and also tends to raise
or lower the black level in proportion, without changing the
displays response curve shape or overall contrast ratio. If your LCD
display has a backlight
control as well as a brightness
control, then the brightness control is also probably being faked,
and you are probably better off setting it to it's neutral setting,
and using the backlight
control in place of brightness
in the following adjustments.
Some high end displays have the ability to mimic various standard
colorspaces such as sRGB or AdobeRGB. You could choose to calibrate
and profile the display in such an emulation mode, although you
probably don't want to fight the emulations white point and gamma.
To get the best out of such a display you really want to choose it's
"Native Gamut" setting, whatever that is called. Note that some
people have reported bad experiences in trying to use "6-axis custom
controls" on displays such as the Dell U2410, so attempting to use
such a mode should be approached with caution. Ideally such a mode
should be used to give just the underlying native display response,
but the settings to achieve this may be very difficult to determine,
and/or it may not be possible, depending on how such a mode distorts
the RGB signals.
On CRT based displays, the brightness
control generally adjusts the black level of the display (sometimes
called the offset), and as
a side effect, tends to change the maximum brightness too. A CRT contrast control generally
adjusts the maximum brightness (sometimes called gain) without affecting the
black level a great deal. On a CRT both the brightness and contrast controls will tend to
affect the shape or gamma of the display response curve.
Many displays have some sort of color temperature adjustment. This
may be in the form of some pre-set color temperatures, or in the
form of individual Red, Green and Blue channel gain adjustments.
Some CRT displays also have R, G & B channel offset adjustments
that will affect the color temperatures near black, as well as
affect the individual channels curve shape. The color temperature
adjustment will generally affect the maximum brightness, and may
also affect the black level and the shape of the display response
curves.
Some special (expensive) LCD displays may have a white point
adjustment that changes the color of the backlight. If you do not
have one of these types of LCD displays, then attempting to change
the white point of the display (even if it appears to have a "white point selection" or R/G/B "gain" controls") may not be a good idea, as once
again these controls are probably being faked by manipulating the
signal levels. Even if you do manage to change the white point
significantly, it may do things like change the mid tone color too
dramatically, or create a display response that is hard to correct
with calibration, or results in side effects such as quantization
(banding) or other undesirable effects. You may have to try out
various controls (and your aim points for the display calibration),
to decide what is reasonable to attempt on an LCD display.
Due to the variety of controls as well as the interaction between
them, it can be an iterative process to arrive at a good monitor
set-up, before proceeding on to calibrating and profiling a display.
For this reason, dispcal
offers a menu of adjustment modes, so that the user can
interactively and iteratively adjust the display controls to meet
the desired targets.
1) Black level (CRT: Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)
3) White level (CRT: Gain/Contrast, LCD:
Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration
8) Exit
There are four basic adjustment modes. Normally one would proceed
through them in the order above, then perhaps repeat the first
adjustment, before checking the overall settings. The White point
and White level modes operate slightly differently, depending on
whether a white target point has been set using the -t -T or -w options, and on whether a
brightness target has been set using the -b option.
The first mode lets you adjust the black level of a CRT display.
Given the current white level, it calculates a value that should
produce a 1% display brightness if the black level is set correctly.
After doing some initial measurements, it will show the target
brightness value (in cd/m^2) on one line, and then underneath it
will show continuously updated readings from the display. The left
most character will switch from '\' to '/' or back again each time a
reading is updated. Some instruments can be quite slow in measuring
dark colors, and it's best to wait for a reading update before
changing the controls more than once. Underneath the target value is
displayed the current reading, and to the right of this is a '+',
'-' or '=' symbol, which gives a hint as to which way to adjust the
brightness control to improve the match to the target.
Adjust CRT brightness to
get target level. Press space when done.
Target 0.60
/ Current 0.68 -
Once happy with the adjustment, press space to go back to the menu.
The second mode lets you adjust the color of the white point of the
display. If a target white point has been set, it will show the
target brightness value (in cd/m^2) on one line, together with the
target chromaticity co-ordinates for the white point, and then
underneath it will show continuously updated readings from the
display. The left most character will switch from '\' to '/' or back
again each time a reading is updated. Underneath the target
brightness value is displayed the current reading, and then the
current chromaticity co-ordinate values. To the right of this is the
current delta E of the white point from the target, and further to
the right are hints '+', '-' or '=' as to which direction to
adjust the individual Red, Green and Blue gain settings to move the
white point in the direction of the target, and reduce the delta E.
If the symbol is doubled, then this channel will have the greatest
effect. If you do not have individual channel gain controls, then
try choosing amongst color temperature pre-sets, to find one with
the lowest delta E. Depending on the stability of the display, the
coarseness of the controls, and the repeatability of the instrument,
you may not be able to get a perfectly zero delta E.
Adjust R,G & B
gain to get target x,y. Press space when done.
Target B 60.00, x 0.3451, y 0.3516
/ Current B 60.05, x 0.3426, y 0.3506 DE
1.4 R+ G+ B--
If you did not set a white point target, then the information shown
is a little different - it will show the initial white point value,
as well as the color temperature, and the CIEDE2000 of the white
point to either the Daylight or Black Body locus (depending on
whether the -T flag was
set). The constantly updated values show the same thing, and the
Red, Green and Blue control hints show the direction to adjust the
controls to place the white point on the locus. The control that
will have the most direct effect on the color temperature will be
the Blue, while the Green will most directly move the white point
towards or away from the locus, thereby reducing the delta E of the
white point to the locus (but there is interaction).
Adjust R,G & B gain to desired
white point. Press space when done.
Initial B 47.25, x 0.3417, y 0.3456, CDT 5113 DE 6.9
\ Current B 47.38, x 0.3420, y 0.3460 CDT 5104 DE
6.7 R-- G+ B-
The brightness value is just there as a guide to what effect
the adjustment is having on the overall brightness. Usually the
white level brightness is adjusted using the next adjustment mode.
Once happy with the adjustment, press space to go back to the menu.
The third mode lets you adjust the brightness of white on the
display. If you set a target brightness using the -b
parameter, it will show the target brightness value (in cd/m^2) on
one line, and then underneath it will show continuously updated
readings from the display. The left most character will switch from
'\' to '/' or back again each time a reading is updated. Underneath
the target value is displayed the current reading, and to the right
of this is a '+', '-' or '=' symbol, which gives a hint as to which
way to adjust the CRT contrast or LCD brightness control to improve
the match to the target.
Adjust CRT Contrast
or LCD Brightness to get target level. Press space when done.
Target 60.00
/ Current 59.96 +
If you did not set a brightness target, it will show the initial
brightness as the target, and the current brightness, which you can
then set any way you want:
Adjust CRT Contrast or LCD
Brightness to desired level. Press space when done.
Initial 47.32
/ Current 47.54
Once happy with the adjustment, press space to go back to the menu.
The fourth mode lets you adjust the color of the black point of the
display, if the display has Red, Green and Blue channel offset
controls. It will show the target 1% brightness value (in cd/m^2) on
one line, together with the target chromaticity co-ordinates for the
black point, and then underneath it will show continuously updated
readings from the display. The left most character will switch from
'\' to '/' or back again each time a reading is updated. Underneath
the target brightness value is displayed the current reading, and
then the current chromaticity co-ordinate values. To the right of
this is the current delta E of the black point from the target, and
further to the right are hints '+', '-' or '=' as to which
direction to adjust the individual Red, Green and Blue offset
settings to move the black point in the right direction. If the
symbol is doubled, then this channel will have the greatest effect.
Adjust R,G & B offsets
to get target x,y. Press space when done.
Target B 0.60, x 0.3451, y 0.3516
\ Current B 0.62, x 0.2782, y 0.2331 DE
10.3 R+ G++ B-
The 1% brightness value is just there as a guide to what
effect the adjustment is having on the 1% brightness level. The
combined channel offsets may have an effect on this in combination
with the CRT brightness control. Press space to go back to the menu.
The fifth selection checks on the overall settings. If targets
have been set, it will be like:
Target Brightness = 50.00,
Current = 47.44, error = -5.1%
Target 50% Level = 10.32, Current = 8.10, error
= -4.4%
Target Near Black = 0.47, Current = 0.68, error
= 0.4%
Target white = x 0.3458, y 0.3586, Current = x 0.3420, y
0.3454, error = 7.55 DE
Target black = x 0.3458, y 0.3586, Current = x 0.2908, y
0.2270, error = 29.69 DE
or if no targets are set:
Current Brightness = 46.28
Target 50% Level = 10.07, Current = 7.52, error
= -5.5%
Target Near Black = 0.46, Current = 0.46, error
= -0.0%
Current white = x 0.3439, y 0.3466, VCT 5098K DE 3.0
Target black = x 0.3439, y 0.3466, Current = x 0.3093, y
0.2165, error = 30.30 DE
and will then go back to the menu.
The sixth selection 6)
allows the reading of you ambient lighting conditions if your
instrument supports such a mode. Doing so will enable the -a option to compensate for your
viewing conditions in the subsequent calibration. See -a.
Once you're happy with the display set-up, you can either
proceed on to the rest of the calibration by selecting 7), or exit and re-start by
selecting 8). You might
want to re-start if you want to change the calibration targets.
Other caveats:
NOTE that some LCD screens
behave a little strangely near their absolute white point, and may
therefore exhibit odd behavior at values just below white. It may be
advisable in such cases to set a brightness slightly less than the
maximum such a display is capable of.
The program attempts to stop any screensaver or powersaver from
interfering with the measurements, but this may not be effective on
some systems, so it may be necessary to manually disable the
screensaver and/or powersaver before commencing the calibration with
a large number of patches.
The calibration tables produced maintain the maximum level of
precision available on a system. If the display has VideoLUTs
available (Video Lookup Tables that the frame buffer values pass
through on their way to the display) and their outputs are better
than 8 bits per component, then the resulting curves can reflect
this, although few current operating systems and/or display cards
actually support better than 8 bit per component output.
If calibration curves are created for a display in which VideoLUTs
are not available, then the resulting calibration file will be
marked to indicate this, and a subsequent profile created with the
calibration will not have the calibration converted to the 'vcgt'
tag, since such a tag can't be loaded into the displays VideoLUTs.
If communications break down with a USB connected instrument, you
may have to unplug it, and plug it in again to recover operation.
Some systems (Apple OS X in particular) have a special set of user
interface controls ("Universal Access") that allows altering the
display in ways designed to assist visually impaired users, by
increasing contrast etc. This will interfere badly with any attempts
to calibrate or profile such a system, and must be turned off in
order to do so. Note that certain magic keyboard sequences can turn
this on by accident.