basic-paramTF: Basic Parameterized TransferFunctions In spacesRGB: Standard and User-Defined RGB Color Spaces, with Conversion Between RGB and CIE XYZ

Description

Each of these functions returns a TransferFunction object, that depends on the argument values passed to it. The returned object has the parameter values "locked in". These TransferFunction objects are a mixture of EOTFs, OETFs, OOTFs, and general-purpose transfer functions.

Usage

 1 2 3 4 5 6 power.OETF( gamma ) power.EOTF( gamma ) power.OOTF( gamma ) BT.1886.EOTF( gamma=2.4, Lb=0, Lw=1 ) XYZfromRGB.TF( primaries, white ) affine.TF( y0, y1 )

Arguments

 gamma the value of γ; it must be positive Lb the black level Lw the white level primaries a 3x2 or 4x2 matrix; see Details white a vector of length 1, 2, or 3; see Details y0 the number to which 0 maps y1 the number to which 1 maps

Details

There are 3 valid combinations of primaries and white, as given in this table:

 dim(primaries) length(white) Description 4x2 1 primaries is a 4x2 matrix with CIE xy chromaticities of R,G,B,W in the rows 3x2 2 primaries is a 3x2 matrix with CIE xy chromaticities of R,G,B in the rows 3x2 3 primaries is a 3x2 matrix with CIE xy chromaticities of R,G,B in the rows

If length(white) is 1, then white is the whitepoint Y. If length(white) is 2, then white is the whitepoint xy (CIE chromaticity); the whitepoint Y is taken to be 1. If length(white) is 3, white is the whitepoint XYZ (CIE tristimulus).
primaries can also be a plain numeric vector of length 6 or 8, which is then converted to a 3x2 or 4x2 matrix, by row.

Value

power.OETF() returns a TransferFunction with the classical 1/γ power law. power.EOTF() returns a TransferFunction with the classical γ power law. power.OOTF() is the same as power.EOTF(), but having a different name may make the creation of new RGB spaces clearer. All three of these map [0,1] to [0,1].

BT.1886.EOTF() returns a TransferFunction that maps [0,1] to [Lb,Lw], with non-linearity given by gamma. The BT.1886 standard has details in Annex 1.

XYZfromRGB.TF() returns a 3D TransferFunction that is linear and maps RGB=(1,1,1) to the XYZ of white. The domain is set to the ACES cube [-65504, 65504]^3 and the range is set to the smallest enclosing box. For the inverse one can use XYZfromRGB.TF()^-1.

affine.TF() returns a 1D TransferFunction that maps 0 \rarrow y_0 and 1 \rarrow y_1 in an affine way. One must have y_0 \ne y_1, but is is OK to have y_0 > y_1. No quantities are associated with these values; the function is intended for arbitrary 1D scaling.

References

BT.1886. Reference electro-optical transfer function for flat panel displays used in HDTV studio production. March 2011.