XYZfromRGB: Convert Signal RGB coordinates to XYZ, or Linear RGB

Description Usage Arguments Value References See Also Examples

View source: R/conversion.R

Description

Convert signal RGB coordinates to XYZ, or to linear RGB

Usage

1
2
3
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 [0,maxSignal]^3.

space

the name of an installed RGB space. The name matching is partial and case-insensitive.

which

the output XYZ or linear RGB - either 'scene' or 'display'. Usually the OOTF for the space is the identity and so these two are the same.

TF

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 not clamped (see Value). If TF!=1 it is used to create either power.EOTF() or power.OETF() as approriate. If TF is not NULL in LinearRGBfromSignalRGB(), then space is ignored.

maxSignal

maximum value of the input signal RGB. Other common values are 100, 255, 1023, 4095, and 65535. Even when 1, they are still taken to be non-linear signal values.

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 [0,maxSignal]^3. If TF is not identity.TF, then the input signal RGBs are clamped to this cube before further calculations.

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 [0,maxSignal]^3. If TF is not identity.TF, then the signal RGBs are clamped to this cube before linearizing.

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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

spacesRGB documentation built on Dec. 11, 2021, 9:58 a.m.