Linear RGB and XYZ Calculation {spacesRGB} | R Documentation |
Convert Signal RGB coordinates to XYZ, or Linear RGB
Description
Convert signal RGB coordinates to XYZ, or to linear RGB
Usage
XYZfromRGB( RGB, space='sRGB', which='scene', TF=NULL, maxSignal=1 )
LinearRGBfromSignalRGB( RGB, space='sRGB', which='scene', TF=NULL, maxSignal=1 )
Arguments
RGB |
a numeric Nx3 matrix with non-linear signal RGB coordinates in the rows, or a vector that can be converted to such a matrix, by row.
These should be in the appropriate cube |
space |
the name of an installed RGB space. The name matching is partial and case-insensitive. |
which |
either |
TF |
if not |
maxSignal |
maximum value of the input signal |
Details
In XYZfromRGB()
, the conversion is done in 2 steps:
signal RGB → linear RGB using
LinearRGBfromSignalRGB()
and all other the given argumentslinear RGB → XYZ using the appropriate 3x3 matrix for the given
space
andwhich
Value
XYZfromRGB()
returns a data.frame
with N rows and these columns:
XYZ |
the calculated XYZ vectors. These are for viewing under the white point of the given RGB space. |
OutOfGamut |
a logical vector. TRUE means the input signal RGB is outside the cube |
LinearRGBfromSignalRGB()
returns a data.frame
with N rows and these columns:
RGB |
the calculated linear RGB vectors, either scene linear or display linear. |
OutOfGamut |
a logical vector. TRUE means the input signal RGB is outside the cube |
In case of error, both functions return NULL.
References
Wikipedia. RGB color space. https://en.wikipedia.org/wiki/RGB_color_space
See Also
RGBfromXYZ()
,
SignalRGBfromLinearRGB()
,
installRGB()
Examples
XYZfromRGB( c(128,200,255, 0,0,0, 255,255,255), max=255 )$XYZ * 100
## X Y Z
## [1,] 47.60334 53.11601 102.3549
## [2,] 0.00000 0.00000 0.0000
## [3,] 95.04559 100.00000 108.9058
XYZfromRGB( c(128,200,255, 0,0,0, 255,255,255), space='Adobe', max=255 )$XYZ * 100
## X Y Z
## [1,] 42.36398 50.82876 103.8704
## [2,] 0.00000 0.00000 0.0000
## [3,] 95.04559 100.00000 108.9058