Main Content

lab2rgb

Convert CIE 1976 L*a*b* to RGB

Description

rgb = lab2rgb(lab) converts CIE 1976 L*a*b* values to sRGB values.

example

rgb = lab2rgb(lab,Name,Value) specifies additional conversion options, such as the color space of the RGB image, using one or more name-value arguments.

example

Examples

collapse all

Convert a color value in the L*a*b* color space to standard RGB color space.

lab2rgb([70 5 10])
ans = 1×3

    0.7359    0.6566    0.6010

Convert a color value in L*a*b* color space to the Adobe RGB (1998) color space.

lab2rgb([70 5 10],'ColorSpace','adobe-rgb-1998')
ans = 1×3

    0.7086    0.6507    0.5978

Convert an L*a*b* color value to standard RGB specifying the D50 whitepoint.

lab2rgb([70 5 10],'WhitePoint','d50')
ans = 1×3

    0.7282    0.6573    0.6007

Convert an L*a*b* color value to an 8-bit encoded RGB color value.

lab2rgb([70 5 10],'OutputType','uint8')
ans = 1x3 uint8 row vector

   188   167   153

Input Arguments

collapse all

L*a*b* color values to convert, specified as a numeric array in one of these formats.

  • c-by-3 colormap. Each row specifies one L*a*b* color value.

  • m-by-n-by-3 image

  • m-by-n-by-3-by-p stack of images

AttributeDescription
L*Luminance or brightness of the image. Values are in the range [0, 100], where 0 specifies black and 100 specifies white. As L* increases, colors become brighter.
a*Amount of red or green tones in the image. A large positive a* value corresponds to red/magenta. A large negative a* value corresponds to green. Although there is no single range for a*, values commonly fall in the range [-100, 100] or [-128, 127).
b*Amount of yellow or blue tones in the image. A large positive b* value corresponds to yellow. A large negative b* value corresponds to blue. Although there is no single range for b*, values commonly fall in the range [-100, 100] or [-128, 127).

Data Types: single | double

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: rgb = lab2rgb([70 5 10],WhitePoint="d50")

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: rgb = lab2rgb([70 5 10],"WhitePoint","d50")

Color space of the output RGB values, specified as "srgb", "adobe-rgb-1998", "prophoto-rgb", or "linear-rgb". If you specify "linear-rgb", then lab2rgb returns linearized sRGB values.

Data Types: string | char

Reference white point, specified as a 1-by-3 vector or one of the CIE standard illuminants listed in the table.

ValueWhite Point
"a"

CIE standard illuminant A, [1.0985, 1.0000, 0.3558]. Simulates typical, domestic, tungsten-filament lighting with correlated color temperature of 2856 K.

"c"CIE standard illuminant C, [0.9807, 1.0000, 1.1822]. Simulates average or north sky daylight with correlated color temperature of 6774 K. Deprecated by CIE.
"e"Equal-energy radiator, [1.000, 1.000, 1.000]. Useful as a theoretical reference.
"d50"CIE standard illuminant D50, [0.9642, 1.0000, 0.8251]. Simulates warm daylight at sunrise or sunset with correlated color temperature of 5003 K. Also known as horizon light.

"d55"

CIE standard illuminant D55, [0.9568, 1.0000, 0.9214]. Simulates mid-morning or mid-afternoon daylight with correlated color temperature of 5500 K.

"d65"CIE standard illuminant D65, [0.9504, 1.0000, 1.0888]. Simulates noon daylight with correlated color temperature of 6504 K.
"icc"Profile Connection Space (PCS) illuminant used in ICC profiles. Approximation of [0.9642, 1.000, 0.8249] using fixed-point, signed, 32-bit numbers with 16 fractional bits. Actual value: [31595,32768, 27030]/32768.

Data Types: single | double | string | char

Data type of returned RGB values, specified as "double", "single", "uint8", or "uint16". If you do not specify OutputType, the output type is the same type as the input.

Data Types: string | char

Output Arguments

collapse all

Converted RGB color values, returned as a numeric array of the same shape as the input. The output data type is the same as the input data type unless you specify the OutputType parameter.

Tips

  • If you specify the output RGB color space as "linear-rgb", then the output values are linearized sRGB values. If instead you want the output color space to be linearized Adobe RGB (1998), then you can use the rgb2lin function.

    For example, to convert CIE 1976 L*a*b* image LAB to linearized Adobe RGB (1998) color space, perform the conversion in two steps:

    RGBadobe = lab2rgb(LAB,"ColorSpace","adobe-rgb-1998");
    RGBlinadobe = rgb2lin(RGBadobe,"ColorSpace","adobe-rgb-1998");
  • lab2rgb can return color values that are out of the RGB gamut. A converted RGB color is out of gamut when any of its component values is less than 0 or greater than 1. For more information, see Determine If L*a*b* Value Is in RGB Gamut.

Extended Capabilities

Version History

Introduced in R2014b

expand all