MunsellToXYZ: Convert a Munsell specification to CIE XYZ coordinates

View source: R/conversions.R

MunsellToXYZR Documentation

Convert a Munsell specification to CIE XYZ coordinates

Description

MunsellToXYZ Converts a Munsell specification to XYZ coordinates, by interpolating over the extrapolated Munsell renotation data.

Note that by default the returned XYZ is relative to the white point of Illuminant C. Since Illuminant C is obsolete, it is almost certain that if this XYZ is used in subsequent calculations, it must be chromatically adapted to a different white point.

But if the white point for subsequent calculations is supplied, then the chromatic adaptation is done internally by spacesXYZ::adaptXYZ().

Usage

MunsellToXYZ( MunsellSpec, white=NULL, adapt='Bradford', ... ) 

Arguments

MunsellSpec

a numeric Nx3 matrix with HVC values in the rows, or a vector that can be converted to such a matrix, by row.
MunsellSpec can also be a character vector with Munsell Notations, which is converted to an Nx3 matrix using HVCfromMunsellName().

white

XYZ for the output white point. If NULL then the output XYZ are for viewing in an environment with Illuminant C, and the output XYZ is not chromatically adapted. If white is not NULL, then the interpolated XYZ is chromatically adapted from the white point of Illuminant C to the given white point. white can be a numeric 3-vector; by convention Y=100 for Munsell work. white can also be a numeric 2-vector; which is interpreted as xy chromaticity and converted to XYZ with Y=100. white can also be the name of any standard illuminant recognized by spacesXYZ::standardXYZ() which is then scaled so that Y=100.

adapt

method for chromatic adaptation; for valid values see spacesXYZ::CAT(). Also see Details. If white=NULL then adapt is ignored.

...

other parameters passed to MunsellToxyY()

Details

The conversion is done in these steps:

  • HVC \rarrow xyY using MunsellToxyY() and .... This xyY is for Illuminant C.

  • xyY \rarrow XYZ using spacesXYZ::XYZfromxyY()

  • If white is not NULL, XYZ is chromatically adapted from the white point of Illuminant C to the given white using the given adapt method.

Value

an Nx3 matrix with XYZ values in the rows. The rownames of XYZ are copied from the input HVC matrix, unless the rownames are NULL and then the output rownames are the Munsell notations for HVC.

Author(s)

Jose Gama and Glenn Davis

References

Paul Centore 2014 The Munsell and Kubelka-Munk Toolbox \MKMTB

See Also

MunsellToxyY(), spacesXYZ::XYZfromxyY(), spacesXYZ::adaptXYZ()

Examples

## make expected XYZ for a Perfect Reflecting Diffuser, under Illuminant D65
white.D65 = 100 * as.numeric( spacesXYZ::standardXYZ( 'D65' ) )
white.D65
##  [1]  95.047 100.000 108.883

## convert Munsell 'N 10/' - the Perfect Reflecting Difuser - to XYZ
MunsellToXYZ( "N 10/" )
##               X   Y        Z
##  N 10/ 98.03984 100 118.1157
##  this is the white point of Illuminant C, and not equal to white.D65

## Redo and supply the true white point.
MunsellToXYZ( "N 10/", white=white.D65 )
##             X   Y       Z
##  N 10/ 95.047 100 108.883
##
##  now we have a match


MunsellToXYZ('7.6P 8.9/2.2')
##                     X        Y        Z
##  7.6P 8.9/2.2 75.6055 74.61345 92.92308

munsellinterpol documentation built on July 3, 2026, 5:07 p.m.