# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

# lin2rgb

Apply gamma correction to linear RGB values

## Syntax

``B = lin2rgb(A)``
``B = lin2rgb(A,Name,Value)``

## Description

example

````B = lin2rgb(A)` applies a gamma correction to the linear RGB values in image `A` so that `B` is in the sRGB color space, which is suitable for display.```

example

````B = lin2rgb(A,Name,Value)` applies gamma correction using name-value pairs to control additional options.```

## Examples

collapse all

Define a range of linear values. This vector defines 257 equally spaced points between 0 and 1.

`lin = linspace(0,1,257);`

Apply gamma correction to the linear values based on the sRGB standard. Then apply gamma correction to the linear values based on the Adobe RGB (1998) standard.

```sRGB = lin2rgb(lin); adobeRGB = lin2rgb(lin,'ColorSpace','adobe-rgb-1998');```

Plot the gamma-corrected curves.

```figure plot(lin,sRGB,'b',lin,adobeRGB,'r') title('Gamma-Corrected vs. Linear Values') legend('sRGB','Adobe RGB (1998)','Location','southeast')```

For an alternative visualization, plot color bars representing each color space.

```cb_lin = ones(30,257) .* lin; cb_sRGB = ones(30,257) .* sRGB; cb_adobeRGB = ones(30,257) .* adobeRGB; figure subplot(3,1,1); imshow(cb_lin); title('Linear RGB') subplot(3,1,2); imshow(cb_sRGB); title('sRGB'); subplot(3,1,3); imshow(cb_adobeRGB); title('Adobe RGB (1998)');```

The gamma-corrected color spaces get brighter more quickly than the linear color space, as expected.

Open an image file containing minimally processed linear RGB intensities.

`A = imread('foosballraw.tiff');`

The image data is the raw sensor data after correcting the black level and scaling to 16 bits per pixel. Interpolate the intensities to reconstruct color by using the `demosaic` function. The color filter array pattern is RGGB.

`A_demosaiced = demosaic(A,'rggb');`

Display the image. To shrink the image so that it appears fully on the screen, set the optional initial magnification to a value less than 100.

```figure imshow(A_demosaiced,'InitialMagnification',25) title('Sensor Data Without sRGB Gamma Correction')```

The image appears dark because it is in the linear RGB color space. Apply gamma correction to the image according to the sRGB standard, storing the values in double precision.

`A_sRGB = lin2rgb(A_demosaiced,'OutputType','double');`

Display the gamma-corrected image, setting the optional magnification.

```figure imshow(A_sRGB,'InitialMagnification',25) title('Sensor Data With sRGB Gamma Correction');```

The gamma-corrected image looks brighter than the linear image, as expected.

## Input Arguments

collapse all

Linear RGB image, specified as a real, nonsparse, m-by-n-by-3 array.

Data Types: `single` | `double` | `uint8` | `uint16`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: `B = lin2rgb(I,'ColorSpace','adobe-rgb-1998')` applies gamma correction to an image, `I`, according to the Adobe RGB (1998) standard.

collapse all

Color space of the output image, specified as the comma-separated pair consisting of `'ColorSpace'` and `'srgb'` or `'adobe-rgb-1998'`.

Data Types: `char` | `string`

Data type of the output RGB values, specified as the comma-separated pair consisting of `'OutputType'` and `'double'`, `'single'`, `'uint8'`, or `'uint16'`. By default, the output data type is the same as the data type of `A`.

Data Types: `char` | `string`

## Output Arguments

collapse all

Gamma-corrected RGB image, returned as a real, nonsparse, m-by-n-by-3 array.

## Algorithms

collapse all

### Gamma Correction Using the sRGB Standard

The gamma correction to transform linear RGB tristimulus values into sRGB tristimulus values is defined by the following parametric curve:

f(u) = -f(-u),             u < 0

f(u) = c ⋅ u,             0 ≤ u < d

f(u) = a ⋅ uɣ + b,      u ≥ d,

where u represents a color value with these parameters:

a = 1.055

b = –0.055

c = 12.92

d = 0.0031308

ɣ = 1/2.4

### Gamma Correction Using the Adobe RGB (1998) Standard

The gamma correction to transform linear RGB tristimulus values into Adobe RGB (1998) tristimulus values uses a simple power function:

v = uɣ,           u ≥ 0

v = -(-u)ɣ,      u < 0,

with

ɣ = 1/2.19921875

## References

[1] Ebner, Marc. "Gamma Correction." Color Constancy. Chichester, West Sussex: John Wiley & Sons, 2007.

[2] Adobe Systems Incorporated. "Inverting the color component transfer function." Adobe RGB (1998) Color Image Encoding. Section 4.3.5.2, May 2005, p.12.