VandY {munsellinterpol} | R Documentation |
Convert Munsell Value V to Luminance Factor Y, and back again
Description
Convert non-linear Munsell Value V to linear Luminance Factor Y, and back again
Usage
YfromV( V, which='ASTM' )
VfromY( Y, which='ASTM' )
Arguments
V |
a numeric vector with elements in the interval [0,10] | |||||||||||||
Y |
a numeric vector with elements in the interval [0,100] | |||||||||||||
which |
one of the strings in the first column of this table
Partial matching is enabled, and it is case insensitive. |
Details
'Priest'
is the earliest (1920) transfer function in this package.
It is implemented as:
V = sqrt(Y) ~~~~~~and~~~~~~ Y = V^2
One readily checks that when V=10, Y=100, and vice-versa. This transfer function has been implemented in colorimeters, using analog electric circuits. It is used in Hunter Lab - the precursor of CIE Lab.
'Munsell'
is the next (1933) transfer function,
and was proposed by Munsell's son (Alexander Ector Orr Munsell) and co-workers.
It is implemented as:
V = sqrt( 1.474*Y - 0.00474*Y^2 )
Y = 50 * ( (1474 - sqrt(1474^2 - 4*4740*V^2)) / 474 )
One readily checks that when V=10, Y=100, and vice-versa. The luminance factor Y is absolute, AKA relative to the perfect reflecting diffuser.
'Priest'
and 'Munsell'
are included in this package
for historical interest only.
The remaining three define Y as a quintic polynomial in V.
The next one historically - 'MgO'
- is implemented as:
Y = (((((8404*V - 210090)*V + 2395100)*V - 2311100)*V + 10000000)*V ) / 10000000
One readily checks that when V=10, Y=102.568. This Y is larger than 100, because the authors decided to make Y relative to a clean surface of MgO, instead of the perfect reflecting diffuser. In their words:
It should be noted that the reflectances indicated are not absolute but relative to magnesium oxide; whereas the maximum at value 10/ was formerly 100 percent, it is now 102.57. Use of this relation facilitates results and also avoids the somewhat dubious conversion to absolute scale, by permitting Y determinations with a MgO standard to be converted directly to Munsell value.
Nowadays, the perfect reflecting diffuser is preferred over MgO.
For users who would like to modify this quintic as little as possible,
with the perfect reflecting diffuser in mind
(going back to 'MUNSELL'
),
I offer 'OSA'
, which is given by this quintic of my own design
Y = (((((8404*V - 210090)*V + 2395100)*V - 2311100)*V + 10000000)*V ) / 10256800
ASTM had a similar modification in mind,
but did it a little differently by scaling each coefficient.
'ASTM'
is given by this quintic:
Y = ( ((((81939*V - 2048400)*V + 23352000)*V - 22533000)*V + 119140000)*V ) / 1.e8
One readily checks that when V=10, Y=100 exactly (for both 'OSA'
and 'ASTM'
).
The inverses - from Y to V - of all 3 quintics are implemented as
3 splinefun()
s at a large number (about 300) of points.
These inverses are both fast and accurate.
The round-trip Y → V → Y is accurate to 7 digits after the decimal.
The round-trip V → Y → V is accurate to 8 digits after the decimal.
Value
a numeric vector the same length as the input
Note
The quintic functions 'ASTM'
and 'OSA'
are very close.
They agree at the endpoints 0 and 10 exactly, and the largest difference is near
V=6.767 where they differ by about 0.0007.
Author(s)
Glenn Davis
References
Priest, I. G. Gibson, K. S. and McNicholas, H. J. An Examination of the Munsell Color System. I. Spectral and and Total Reflection and the Munsell Scale of Value. Technologic Papers of the Bureau of Standards, No. 167. pp. 1-33. Washington D.C. 1920.
Munsell, A. E. O., L. L. Sloan, and I. H. Godlove. Neutral Value Scales. I. Munsell Neutral Value Scale. Journal of the Optical Society of America. Vol. 23. Issue 11. pp. 394-411. November 1933.
Newhall, Sidney M., Dorothy Nickerson, Deane B. Judd. Final Report of the O.S.A. Subcommitte on the Spacing of the Munsell Colors. Journal of the Optical Society of America. Vol. 33. No. 7. pp. 385-418. July 1943.
ASTM D 1535-08. Standard Practice for Specifying Color by the Munsell System. 2008
See Also
MunsellToxyY()
,
xyYtoMunsell()
Examples
VfromY( c(0,50,100) )
## [1] 0.00000 7.53772 10.00000