# [R] extracting RGB values from a colorspace class object

Jeffrey Horner jeff.horner at vanderbilt.edu
Fri Mar 3 16:11:22 CET 2006

```Dylan Beaudette wrote:
> Greetings,
>
> After pouring over the documentation for the 'colorspace' package, I have not
> been able to figure out how the plot() method converts colorspace coordinates
> to RGB values for display on the screen. I am convert between colorspaces
> with the various as() methods... but cannot seem to find a way to extract RGB
> (i.e. for displaying on a computer screen) triplets from color space
> coordinates.

I don't know how it's done (I get really confused when trying to
understand color spaces), but you'll have to download the code for the
colorspace package and study the c code since that's where the
conversion is done.

To get the RGB and hex triplets, this small example should help:

## Generate white in XYZ space
> white = XYZ(95.047, 100.000, 108.883)
> as(white,"RGB")
R         G        B
[1,] 1.000008 0.9999907 1.000081
> hex(white)
[1] "#FFFFFF"

>
> Here is a sample of the data that I am working with:
> 	H		V	C		x	y	Y
>      2.5Y        0.2         2      1.43      0.97   0.237
>      2.5Y        0.4         2     0.729     0.588   0.467
>      2.5Y        0.6         2     0.563     0.491   0.699
>      2.5Y        0.6         4     0.995     0.734   0.699
>      2.5Y        0.8         2     0.479     0.439   0.943
>      2.5Y        0.8         4      0.82      0.64   0.943
>      2.5Y          1         2    0.4362    0.4177   1.21
>
> I have converted xyY coordinates to XYZ coordinates, based on the equations
> presented here:
> http://www.brucelindbloom.com/index.html?ColorCalcHelp.html
>
> #read in the soil colors: munsell + xyY
> col.names=c("H","V","C","x","y","Y"))
>
> #convert to XYZ
> X <- (soil\$x * soil\$Y ) / soil\$y
> Y <- soil\$Y
> Z <- ( (1- soil\$x - soil\$y) * soil\$Y ) / soil\$y
>
> #make an XYZ colorspace object:
> require(colorspace)
> soil_XYZ <- XYZ(X,Y,Z)
>
> #visualize the new XYZ colorspace object in the L*U*V colorspace:
> plot(as(soil_XYZ, "LUV"), cex=2)
>
> here is an example of the output:
> http://169.237.35.250/~dylan/temp/soil_colors-LUV_space.png
>
> Somehow the plot() method in the colorspace package is converting color space
> coordinates to their RGB values... Does anyone have an idea as to how to
> access these RGB triplets?
>
>
>
>
>

--
Jeffrey Horner       Computer Systems Analyst         School of Medicine
615-322-8606         Department of Biostatistics   Vanderbilt University

```