mixMunsell {aqp}  R Documentation 
Simulate mixing of colors in Munsell notation, similar to the way in which mixtures of pigments operate.
mixMunsell( x, w = rep(1, times = length(x))/length(x), mixingMethod = c("reference", "exact", "estimate", "adaptive", "spectra"), n = 1, keepMixedSpec = FALSE, distThreshold = 0.025, ... )
x 
vector of colors in Munsell notation 
w 
vector of proportions, can sum to any number 
mixingMethod 
approach used to simulate a mixture:

n 
number of closest matching color chips ( 
keepMixedSpec 
keep weighted geometric mean spectra, final result is a 
distThreshold 
spectral distance used to compute 
... 
additional arguments to 
An accurate simulation of pigment mixtures ("subtractive" color mixtures) is incredibly complex due to factors that aren't easily measured or controlled: pigment solubility, pigment particle size distribution, water content, substrate composition, and physical obstruction to name a few. That said, it is possible to simulate reasonable, subtractive color mixtures given a reference spectra library (350800nm) and some assumptions about pigment qualities and lighting. For the purposes of estimating a mixture of soil colors (these are pigments after all) we can relax these assumptions and assume a standard light source. The only missing piece is the spectral library for all Munsell chips in our color books.
Thankfully, Scott Burns has outlined the entire process, and Paul Centore has provided a Munsell color chip reflectance spectra library. The estimation of a subtractive mixture of soil colors can proceed as follows:
look up the associated spectra for each color in x
compute the weighted (w
argument) geometric mean of the spectra
convert the spectral mixture to the closest Munsell color via:
search for the closest n
matching spectra in the reference library (mixtureMethod = 'reference'
)
direct conversion of spectra to closest Munsell color via spec2Munsell
( (mixtureMethod = 'exact'
))
suggest resulting Munsell chip(s) as the best candidate for a simulated mixture
Key assumptions include:
similar particle size distribution
similar mineralogy (i.e. pigmentation qualities)
similar water content.
For the purposes of estimating (for example) a "mixed soil color within the top 18cm of soil" these assumptions are usually valid. Again, these are estimates that are ultimately "snapped" to the nearest chip and not do not need to approach the accuracy of paintmatching systems.
A message is printed when scaledDistance
is larger than 1.
A data.frame
with the closest matching Munsell color(s):
munsell
: Munsell notation of the nclosest spectra
distance
: spectral (Gower) distance to the nclosest spectra
scaledDistance
: spectral distance scaled by distThreshold
mixingMethod
: method used for each mixture
When keepMixedSpec = TRUE
then a list
:
mixed
: a data.frame
containing the same elements as above
spec
: spectra for the 1st closest match
D.E. Beaudette
Marcus, R.T. (1998). The Measurement of Color. In K. Nassau (Ed.), Color for Science, Art, and Technology (pp. 3296). NorthHolland.
inspiration / calculations based on the work of Scott Burns: https://arxiv.org/ftp/arxiv/papers/1710/1710.06364.pdf
related discussion on Stack Overflow: https://stackoverflow.com/questions/10254022/implementingkubelkamunklikekritatomixcolourscolorlikepaint/29967630#29967630
spectral library source: https://www.munsellcolourscienceforpainters.com/MunsellResources/SpectralReflectancesOf2007MunsellBookOfColorGlossy.txt
# try a couple different methods cols < c('10YR 6/2', '5YR 5/6', '10B 4/4') mixMunsell(cols, mixingMethod = 'reference') mixMunsell(cols, mixingMethod = 'exact') mixMunsell(cols, mixingMethod = 'estimate')