[R] [OT] two question about color space.

baptiste auguie ba208 at exeter.ac.uk
Sun Mar 15 14:13:24 CET 2009


I've put together a rough R port of that C code [*] in a package on r- 
forge:

http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/pkg/spectral/?root=photonics

http://r-forge.r-project.org/R/?group_id=160 ( package spectral,  will  
be built overnight )


There is a lot of optimization and cleaning to do: it seems much  
slower than it should be, and the documentation is empty at the  
moment, but it reproduces the result for the black body radiation.


> library(spectral)
>
> data(wavelength)
> data(cie_colour_match)
> data(colourSystem)
>
> test <- function(bbTemp=5000){
> 	mxyz <- spectrum_to_xyz(specfun=bb_spectrum, bbTemp=bbTemp)
> 	rgb <- xyz_to_rgb(colourSystem[3, ], mxyz)
> 	norm_rgb(constrain_rgb(rgb))
> }
>
> temperatures <- seq(1000, 10000, by=500)
> # temperatures <- seq(1000, 10000, length=300)
> res <- abs(sapply(temperatures, test))
>
>
> grid.newpage()
>
> start <- seq(0.1, 0.9, length=dim(res)[2])
> end <- start + mean(diff(start))
> grid.segments(x0=start,x1=end, y0=0*start+0.5, y1=0*temperatures+0.5,
> 	gp=gpar(col=rgb(res[1, ], res[2, ], res[3, ], alpha=1), lwd=10,  
> lineend=3))


Best wishes,

baptiste



[*]  from http://www.fourmilab.ch/documents/specrend/


On 14 Mar 2009, at 12:33, baptiste auguie wrote:

> Hi,
>
> For a good discussion of the link between colour and spectra I would  
> suggest,
>
> http://www.fourmilab.ch/documents/specrend/
>
> which provides an open-source C code to perform the conversion you  
> ask for. I asked for some advice on how to wrap a R function around  
> this code last week but sadly I didn't get anywhere. Do let me know  
> if you succeed. (alternatively, one could port the implementation in  
> pure R as the code is not too complicated or computationally  
> demanding).
>
> Hope this helps,
>
> baptiste
>
>
>
>
> On 14 Mar 2009, at 12:09, Jinsong Zhao wrote:
>
>> Hi there,
>>
>> I try to plot visible light spectrum (380nm~780nm) with color
>> corresponding to the specific wavelength. However, I don't find a
>> function that could do this.
>>
>> Another question, it's possible to plot a color space chromaticity
>> diagram like this:
>> http://upload.wikimedia.org/wikipedia/commons/thumb/0/02/CIExy1931.svg/300px-CIExy1931.svg.png
>>
>> Thanks in advance!
>>
>> Jinsong
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
> _____________________________
>
> Baptiste Auguié
>
> School of Physics
> University of Exeter
> Stocker Road,
> Exeter, Devon,
> EX4 4QL, UK
>
> Phone: +44 1392 264187
>
> http://newton.ex.ac.uk/research/emag
> ______________________________
>

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag




More information about the R-help mailing list