MunsellTosRGB: Convert a Munsell specification to sRGB coordinates

View source: R/conversions.R

MunsellTosRGBR Documentation

Convert a Munsell specification to sRGB coordinates


MunsellTosRGB Converts a Munsell specification to non-linear sRGB coordinates, by interpolating over the extrapolated Munsell renotation data


MunsellTosRGB( MunsellSpec, maxSignal=255, ... ) 



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 N-vector with Munsell notations, which is converted to an Nx3 matrix using HVCfromMunsellName().


maximum of signal sRGB; Other popular values are 1, 100, 1023, and 65535


other parameters passed to MunsellToxyY()


The conversion is done in these steps.

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

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

  • XYZ is adapted from Illuminant C to Illuminant D65 (from the sRGB standard) using spacesXYZ::adaptXYZ() and the Bradford chromatic adaptation method

  • XYZ \rarrow sRGB using spacesRGB::RGBfromXYZ() with the given maxSignal


a data.frame with these columns:


the original MunsellSpec if that was a character vector. Or the Munsell notation string converted from the input matrix HVC.


an Nx3 matrix with xyY values in the rows, that are adapted to Illuminant C. This is an intermediate result that is sometimes useful, e.g. it can be passed to IsWithinMacAdamLimits(). The rownames of xyY are copied from those of HVC, unless the rownames of HVC are NULL when they are set to SAMPLE_NAME.


an Nx3 matrix with non-linear signal sRGB values in the rows. All values are clamped to the appropriate cube, e.g. [0,255]^3. The rownames of RGB are copied from those of xyY.


logical vector, TRUE means the RGB result was out of gamut (the cube) before clamping it


The more general function MunsellToRGB() also performs this conversion. The main reason to use MunsellTosRGB() is that it takes a little less time, since the CAT (using the Bradford method) is precomputed during base::.onLoad().


Jose Gama and Glenn Davis


Paul Centore 2014 The Munsell and Kubelka-Munk Toolbox

See Also

MunsellToXYZ(), MunsellToRGB(), spacesXYZ::XYZfromxyY(), spacesXYZ::CAT(), spacesXYZ::adaptXYZ(), spacesRGB::RGBfromXYZ(), IsWithinMacAdamLimits()


MunsellTosRGB( c('7.6P 8.9/2.2', 'N 3/') )
##     SAMPLE_NAME      xyY.x      xyY.y      xyY.Y     RGB.R     RGB.G     RGB.B OutOfGamut
##  1 7.6P 8.9/2.2  0.3109520  0.3068719 74.6134498 231.35746 221.14207 230.35011      FALSE
##  2         N 3/  0.3101000  0.3163000  6.3911778  71.50491  71.50491  71.50491      FALSE

munsellinterpol documentation built on April 8, 2022, 9:07 a.m.