Provided by: radiance_4R1+20120125-1.1_amd64 bug

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)