NAME
macbethcal - compute color compensation based on measured Macbeth chart
SYNOPSIS
macbethcal [ -d debug.hdr ][ -p xul yul xur yur xll yll xlr ylr ]
scannedin.hdr [ calibout.cal ]
macbethcal -c [ -d debug.hdr ] [ measured.xyY [ calibout.cal ] ]
DESCRIPTION
Macbethcal takes a scanned image or measurement set of a Macbeth
ColorCheckerTM color rendition chart and computes a color mapping
function suitable as input to pcomb(1).
In the first form, macbethcal takes a scanned image of a Macbeth chart
that has been converted into a Radiance picture using a fixed
procedure. When used properly as input to pcomb, the computed
calibration file will adjust the brightness and color of any similarly
scanned and converted image so as to best match the original. If the
lighting conditions are carefully controlled (as in the case of a
flatbed scanner), it is even possible to get reliable reflectance
values this way, at least within 10% or so. The input picture is named
on the command line. The output calibration file will be written to
the standard output if no file name is given on the command line.
In the second form, the input is from a file containing measured values
for each Macbeth color. This file must contain entries of the form:
N x y Y
Where N is the number of the corresponding Macbeth color. (See back of
ColorChecker chart for color names and indexing, but it basically
starts from the upper left with 1 and proceeds in English text order to
the lower right, which is 24.) The values x, y and Y are the 1931 CIE
(x,y) chromaticity coordinates followed by the luminance for that
color, which can be in any units. If a white value is known (i.e.
maximum output level), then it may be given as entry number 0. The
entries may be in any order, and comments may be included delimited by
a pound sign (’#’) and continuing to the end of line. It is
recommended that measurements be done for all 24 colors, but the only
required entries are the 6 neutral values on the bottom row of the
chart.
Computing a mapping from measured colors is usually more convenient
when calibrating a particular output device. This is accomplished by
printing the picture macbeth_spec.hdr (which may be found in the
standard RADIANCE library directory in the lib subdirectory) and
measuring the output with a chroma meter or spectrophotometer.
For a scanned image, the locations of the 24 Macbeth patches in the
input picture must be known. If the chart borders are not at the edges
of the input picture, or the chart has been reversed or rotated or is
uncentered or at an oblique angle, then it is necessary to specify the
pixel locations of the corners of the chart with the -p option. The
corner postions (x,y pixel addresses as given by the ximage(1) "p"
command) are ordered on the command line: upper-left, upper-right,
lower-left, lower-right (i.e. English text ordering). These
coordinates should be the outside corner positions of the following
patches:
upper-left = 1. dark skin
upper-right = 6. bluish green
lower-left = 19. white
lower-right = 24. black
If the chart has been flipped or rotated, simply give the pixel
positions of the appropriate patch corners, wherever they are in the
image. (Note: if the Radiance picture has been flipped or rotated with
pflip(1) or protate(1), ximage will report the original pixel positions
if the -c option was not used by the reorienting program(s). This will
be wrong, so be sure to use the -c option.) Macbethcal can handle a
chart with any orientation or perspective warping if the corner
coordinates are given correctly. The debug picture output is the best
way to check for consistency. (See the -d option, below.)
The -d option may be used to specify an additional output file, which
will be a picture comparing the scanned image processed according to
the computed mapping against the standard Macbeth colors. It is a good
idea to use the debug option to check that the color patches are being
located correctly, and to see how well macbethcal does at matching
colors. The center of each patch will show the target color; the left
side of each patch will show the original color, and the right side
will show the corrected value. If the match works well, the debug
picture should have a sort of "notch on the left" look in each patch.
Macbeth colors that could not be matched because they were out of gamut
on this device are indicated with diagonal lines drawn through the
associated target colors.
METHOD
Macbethcal computes the color mapping in two stages. The first stage
uses the six neutral color patches at the bottom of the Macbeth chart
to compute a piecewise linear approximation to the brightness mapping
of each RGB primary. The second stage looks at all the colors that are
within the device’s gamut to compute a least-sqaures fit for a linear
color transformation from the measured space into the standard Radiance
RGB space (as defined by the three primaries in src/common/color.h).
Thanks to the nature of inverse mappings, this method should work
either for converting scanned data to match the original, or for
preconditioning pictures to be sent to specific output devices. In
other words, the same calibration file works either for correcting
scanned images OR precorrecting images before printing.
A warning is printed if some unsaturated colors are determined to be
out of gamut, as this may indicate a poor rendition or improper picture
alignment. The debug picture will show which colors were excluded by
drawing diagonal lines through their entries.
NOTE
It is very important that the same settings be applied when scanning or
printing other images to be calibrated with the computed file. In
particular, all exposure adjustments should be fixed manually, and no
tweaking of the settings should be done along the way. The final
result will be best if the original scanned image is not too far off
from what it should be. In the case of slide and negative scanners, it
is best to apply the recommended calibration file for the type of film
used, so long as this calibration is fixed and not adjusted on a per-
image basis.
CHART AVAILABILITY
The Macbeth chart is available at most photographic supply stores, or
may be ordered directly from Macbeth:
Macbeth
Munsell Color
405 Little Britain Rd.
New Windsor, NY 12553-6148
tel. 1-800-622-2384 (USA)
fax. 1-914-561-0267
The chart sells for under $50 US at the time of this writing.
EXAMPLES
To compute a calibration for a FunkyThing scanner and check the
results:
ra_tiff -r mbscan.tif mbscan.hdr
macbethcal -d debug.hdr mbscan.hdr FunkyThing.cal
ximage debug.hdr
To apply this computed calibration to another scanned image:
ra_tiff -r another.tif | pcomb -f FunkyThing.cal - >
another_calib.hdr
To compute a calibration file for the BigWhiz film recorder, after
taking measurements of a slide made from macbeth_spec.hdr:
macbethcal -c macbeth_spec.xyY BigWhiz.cal
To prepare a picture prior to output on the same film recorder:
pcomb -f BigWhiz.cal standard.hdr > toprint.hdr
To use pcond(1) to also adjust the image for human response:
pcond -f BigWhiz.cal -h standard.hdr > toprint.hdr
AUTHOR
Greg Ward
Paul Heckbert supplied code for perspective projective mapping
SEE ALSO
icalc(1), pcomb(1), pcond(1), pfilt(1), ximage(1)