Calculate signal RGB from linear RGB, XYZ, or Lab
SignalRGBfromLinearRGB( RGB, space='sRGB', which='scene', TF=NULL, maxSignal=1 )RGBfromXYZ( XYZ, space='sRGB', which='scene', TF=NULL, maxSignal=1 ) 
RGBfromLab( Lab, space='sRGB', which='scene', TF=NULL, maxSignal=1 )
a data.frame with N rows and these columns
signal RGB.
If TF is not the identity, the computed linear RGBs are clamped to [0,1]\(^3\) if necessary,
which implies that the output signal RGBs are inside the cube [0,maxSignal]\(^3\).
Values are not rounded.
a logical, TRUE means one or more of the computed linear RGBs were actually clamped to [0,1].
In RGBfromLab(), if a=b=0 exactly, the R=G=B exactly.
In case of error, the functions return NULL.
a numeric Nx3 matrix with linear RGB coordinates in the rows, or a vector that can be converted to such a matrix, by row. The RGB may be outside the corresponding domain box (either scene or display), see Details.
a numeric Nx3 matrix with CIE XYZ coordinates in the rows, or a vector that can be converted to such a matrix, by row.
The XYZ are assumed to be viewed under the white-point of the given RGB space.
a numeric Nx3 matrix with CIE Lab coordinates in the rows, or a vector that can be converted to such a matrix, by row.
the name of an installed RGB space. The name matching is partial and case-insensitive.
either 'scene' or 'display'.
For RGBfromXYZ() which describes the input XYZ.
For SignalRGBfromLinearRGB() which describes the input RGB.
if not NULL, TF is a TransferFunction
that overrides the appropriate transfer function of space.
TF can also be a positive number.
If TF=1, then TF is set to identity.TF,
so the returned RGB values are actually linear, and they are not clamped to the appropriate domain box
(see Value).
If TF!=1 it is used to create either
power.EOTF() or power.OETF() as approriate.
If TF is not NULL in SignalRGBfromLinearRGB(), then space is ignored.
maximum value of non-linear RGB.
Other common values are 100, 255, 1023, 4095, and 65535.
Even when 1, they are still taken to be non-linear Signal values.
In RGBfromXYZ(), the conversion is done in these steps:
XYZ    →   linear RGB using the 3x3 matrix for the given space and which
if TF is not the identity, the linear RGBs are clamped to [0,1]\(^3\) if necessary
linear RGB    →   signal RGB using SignalRGBfromLinearRGB() and all other the given arguments
In RGBfromLab(), Lab   →  XYZ
is calculated using
spacesXYZ::XYZfromLab(),
with the white point
(either 'scene' or 'display') of the given RGB space.
Wikipedia. RGB color space. https://en.wikipedia.org/wiki/RGB_color_space
XYZfromRGB(),
LinearRGBfromSignalRGB(),
installRGB(),
identity.TF,
spacesXYZ::XYZfromLab()
RGBfromXYZ( c(80.310897,90.306510,84.613450, 100,100,100)/100, max=255 )
##       RGB.R    RGB.G    RGB.B OutOfGamut
##  1 230.1676 249.4122 225.2472      FALSE
##  2 255.0000 249.1125 244.4704       TRUE
Run the code above in your browser using DataLab