# inst/raw/getmunsellmap.R In munsell: Utilities for Using Munsell Colours

```### explore the mapping
getmunsellmap <- function(){
require(colorspace)

# correct sequence
# 1. convert xyY to XYZ
# 2. convert to XYZ to use correct reference white (C to D65)
# 3. convert XYZ (D65) to sRGB

# 1. convert to XYZ
# http://www.brucelindbloom.com/Eqn_xyY_to_XYZ.html
# Y needs to be scaled down by 100
col.map <- within(col.map, {
Y <- Y/100
X <- x * Y / y
Z <- ((1 - x - y) * Y) / y
})

# 2. convert to XYZ to use correct reference white (C to D65)
# using Bradford method
Bradford.C.D65 <- matrix(c(0.990448, -0.012371, -0.003564, -0.007168, 1.015594, 0.006770, -0.011615, -0.002928, 0.918157), ncol=3, byrow=TRUE)
col.map[ , c("X", "Y", "Z")] <- as.matrix(col.map[, c("X", "Y", "Z")]) %*%

# 3. Use colorspace methods to convert XYZ to hex (sRGB)
col.map\$hex <- hex(XYZ(100 * as.matrix(col.map[, c("X", "Y", "Z")])))

cols <- c("R", "YR", "Y", "GY", "G", "BG", "B", "PB", "P", "RP")
ints <- seq(2.5, 10, 2.5)
col.map\$h <- factor(col.map\$h,  levels = paste(rep(ints, 10),
rep(cols, each = 4), sep = ""))

# from here: http://wiki.laptop.org/go/Munsell
grey.map\$hex <-  hex(sRGB(as.matrix(1/255 * grey.map[, c("r", "b", "g")])))

munsell.map <- rbind(grey.map[, c("h", "C", "V", "hex")],
col.map[, c("h", "C", "V", "hex")])
names(munsell.map) <- c("hue", "chroma", "value", "hex")
munsell.map\$name <- paste(munsell.map\$hue, " ", munsell.map\$value, "/", munsell.map\$chroma,  sep = "")
munsell.map\$name[is.na(munsell.map\$hex)] <- NA

not.miss <- subset(munsell.map, !is.na(hex))
not.miss <- cbind(not.miss, as(hex2RGB(not.miss\$hex), "LUV")@coords)
munsell.map <- merge(munsell.map, not.miss,  all.x = TRUE)
munsell.map[munsell.map\$name == "N 0/0" & !is.na(munsell.map\$name),
c("L", "U", "V")] <- c(0, 0, 0)

more.greys <- expand.grid(hue = unique(col.map\$h), chroma = 0, value = 0:10)
munsell.map <- rbind(munsell.map,
merge(more.greys,
munsell.map[munsell.map\$hue == "N", c("chroma", "value", "hex", "name", "L", "U", "V")]))

save(munsell.map,  file  = "../../R/sysdata.rda")
}
```

## Try the munsell package in your browser

Any scripts or data that you put into this service are public.

munsell documentation built on May 29, 2024, 7:29 a.m.