Rev 61154 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/grDevices/man/convertColor.Rd% Part of the R package, http://www.R-project.org% Copyright 1995-2011 R Core Team% Distributed under GPL 2 or later\name{convertColor}\alias{convertColor}\alias{colorspaces}\title{Convert between Colour Spaces}\description{Convert colours between their representations in standard colour spaces.}\usage{convertColor(color, from, to, from.ref.white, to.ref.white,scale.in = 1, scale.out = 1, clip = TRUE)}\arguments{\item{color}{A matrix whose rows specify colors. }\item{from, to}{Input and output color spaces. See \sQuote{Details} below.}\item{from.ref.white, to.ref.white}{Reference whites or \code{NULL}if these are built in to the definition, as for RGBspaces. \code{D65} is the default, see \sQuote{Details} for others.}\item{scale.in, scale.out}{Input is divided by \code{scale.in}, outputis multiplied by \code{scale.out}. Use \code{NULL} to suppressscaling when input or output is not numeric.}\item{clip}{If \code{TRUE}, truncate RGB output to [0,1],\code{FALSE} return out-of-range RGB, \code{NA} set out of rangecolors to \code{NaN}.}}\details{Color spaces are specified by objects of class \code{colorConverter},created by \code{\link{colorConverter}} or \code{\link{make.rgb}}.Built-in color spaces may be referenced by strings: \code{"XYZ"},\code{"sRGB"}, \code{"Apple RGB"}, \code{"CIE RGB"}, \code{"Lab"},\code{"Luv"}. The converters for these colour spaces are in the object\code{colorspaces}.The \code{"sRGB"} color space is that used by standard PC monitors.\code{"Apple RGB"} is used by Apple monitors. \code{"Lab"} and\code{"Luv"} are approximately perceptually uniformspaces standardized by the Commission Internationaled'Eclairage. \code{XYZ} is a 1931 CIE standard capable of representingall visible colors (and then some), but not in a perceptually uniformway.The \code{Lab} and \code{Luv} spaces describe colors of objects, andso require the specification of a reference \sQuote{white light}color. Illuminant \code{D65} is a standard indirect daylight,Illuminant \code{D50} is close to direct sunlight, and Illuminant\code{A} is the light from a standard incandescent bulb. Otherstandard CIE illuminants supported are \code{B}, \code{C}, \code{E} and\code{D55}. RGB colour spaces are defined relative to a particularreference white, and can be only approximately translated to otherreference whites. The Bradford chromatic adaptation algorithm is usedfor this.The RGB color spaces are specific to a particular class of display.An RGB space cannot represent all colors, and the \code{clip} optioncontrols what is done to out-of-range colors.}\value{A 3-row matrix whose columns specify the colors.}\references{For all the conversion equations \url{http://www.brucelindbloom.com/}.For the white points\url{http://www.efg2.com/Lab/Graphics/Colors/Chromaticity.htm}.}\seealso{\code{\link{col2rgb}} and \code{\link{colors}} for ways to specifycolors in graphics.\code{\link{make.rgb}} for specifying other colour spaces.}\examples{require(graphics); require(stats) # for na.omitpar(mfrow = c(2,2))## The displayable colors from four planes of Lab spaceab <- expand.grid(a = (-10:15)*10, b = (-15:10)*10)Lab <- cbind(L = 20, ab)srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)clipped <- attr(na.omit(srgb), "na.action")srgb[clipped, ] <- 0cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,xlab = "a", ylab = "b", main = "Lab: L=20")Lab <- cbind(L = 40, ab)srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)clipped <- attr(na.omit(srgb), "na.action")srgb[clipped, ] <- 0cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,xlab = "a", ylab = "b", main = "Lab: L=40")Lab <- cbind(L = 60, ab)srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)clipped <- attr(na.omit(srgb), "na.action")srgb[clipped, ] <- 0cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,xlab = "a", ylab = "b", main = "Lab: L=60")Lab <- cbind(L = 80, ab)srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)clipped <- attr(na.omit(srgb), "na.action")srgb[clipped, ] <- 0cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,xlab = "a", ylab = "b", main = "Lab: L=80")(cols <- t(col2rgb(palette())))zapsmall(lab <- convertColor(cols, from = "sRGB", to = "Lab", scale.in = 255))round(convertColor(lab, from = "Lab", to = "sRGB", scale.out = 255))}\keyword{color}