lin2rgb

Применить гамма- коррекцию к линейным значениям RGB

Описание

пример

B = lin2rgb(A) применяет гамма- коррекцию к линейным значениям RGB в изображении A так что B находится в цветовом пространстве sRGB, которое подходит для отображения.

пример

B = lin2rgb(A,Name,Value) применяет гамма- коррекцию с помощью пар "имя-значение" для управления дополнительными опциями.

Примеры

свернуть все

Задайте область значений линейных значений. Этот вектор задает 257 одинаково разнесенных точек между 0 и 1.

lin = linspace(0,1,257);

Примените гамма- коррекцию к линейным значениям на основе стандарта sRGB. Затем примените гамма- коррекцию к линейным значениям на основе стандарта Adobe RGB (1998).

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

Постройте график гамма-скорректированных кривых.

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

Figure contains an axes. The axes with title Gamma-Corrected vs. Linear Values contains 2 objects of type line. These objects represent sRGB, Adobe RGB (1998).

Для альтернативной визуализации постройте графики цветовых полос, представляющих каждое цветовое пространство.

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)');

Figure contains 3 axes. Axes 1 with title Linear RGB contains an object of type image. Axes 2 with title sRGB contains an object of type image. Axes 3 with title Adobe RGB (1998) contains an object of type image.

Гамма-скорректированные цветовые пространства становятся ярче линейного цветового пространства, как и ожидалось.

Откройте файл изображения, содержащий минимально обработанную линейную интенсивность RGB.

A = imread('foosballraw.tiff');

Данные изображения являются данными необработанного датчика после коррекции уровня черного и масштабирования до 16 бит на пиксель. Интерполируйте интенсивности, чтобы восстановить цвет с помощью demosaic функция. Шаблон массива цветного фильтра RGGB.

A_demosaiced = demosaic(A,'rggb');

Отобразите изображение. Чтобы сжать изображение так, чтобы оно полностью появилось на экране, установите опциональное начальное увеличение значение менее 100.

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

Figure contains an axes. The axes with title Sensor Data Without sRGB Gamma Correction contains an object of type image.

Изображение выглядит темным, потому что находится в линейном цветовом пространстве RGB. Применить гамма- коррекцию к изображению согласно стандарту sRGB, сохраняя значения в двойной точности.

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

Отобразите изображение с гамма-поправкой, задав дополнительное увеличение.

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

Figure contains an axes. The axes with title Sensor Data With sRGB Gamma Correction contains an object of type image.

Гамма-исправленное изображение выглядит ярче линейного изображения, как и ожидалось.

Входные параметры

свернуть все

Линейные значения цвета RGB, заданные как числовой массив в одном из следующих форматов.

  • c палитры -by-3. Каждая строка задает одно значение цвета RGB.

  • m -by- n -by-3 изображение

  • m -by- n -by-3-by- p стек изображений

Типы данных: single | double | uint8 | uint16

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: B = lin2rgb(I,'ColorSpace','adobe-rgb-1998') применяет гамма- коррекцию к изображению, I, по стандарту Adobe RGB (1998).

Цветовое пространство выходного изображения, заданное как разделенная разделенными запятой парами, состоящая из 'ColorSpace' и 'srgb' или 'adobe-rgb-1998'.

Типы данных: char | string

Тип данных выходных значений RGB, заданный как разделенная разделенными запятой парами, состоящая из 'OutputType' и 'double', 'single', 'uint8', или 'uint16'. По умолчанию тип выходных данных совпадает с типом данных A.

Типы данных: char | string

Выходные аргументы

свернуть все

Гамма-исправленное изображение RGB, возвращаемое в виде числового массива того же размера, что и входной A.

Алгоритмы

свернуть все

Гамма- Коррекция с использованием стандарта sRGB

Гамма- коррекция для преобразования линейных значений tristimulus RGB в значения tristimulus sRGB определяется следующей параметрической кривой:

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

    f (<reservedrangesplaceholder4>)                = <reservedrangesplaceholder3> ⋅ <reservedrangesplaceholder2>, 0 ≤ <reservedrangesplaceholder1> <d

    f (<reservedrangesplaceholder2>)    = <reservedrangesplaceholder1> ⋅ <reservedrangesplaceholder0>ɣ + b,      <reservedrangesplaceholder1> ≥ <reservedrangesplaceholder0>  ,

где u представляет значение цвета с этими параметрами:

    a = 1.055

    b = –0.055

    c = 12.92

    d = 0.0031308

    ɣ = 1/2.4

Гамма- Коррекция с использованием стандарта Adobe RGB (1998)

Гамма- коррекция для преобразования линейных значений tristimulus RGB в значения tristimulus Adobe RGB (1998) использует простую функцию степени:

    v = uɣ,           <reservedrangesplaceholder0> ≥ 0

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

с

    ɣ = 1/2.19921875

Ссылки

[1] Эбнер, Марк. Гамма- Коррекция. Постоянство цвета. Chichester, West Sussex: John Wiley & Sons, 2007.

[2] Adobe Systems Incorporated. «Инвертирование передаточной функции цветового компонента». Кодировка цветных изображений Adobe RGB (1998). Раздел 4.3.5.2, май 2005 года, стр. 12.

См. также

Введенный в R2017b