exponenta event banner

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

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

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

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

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

где u представляет значение цвета со следующими параметрами:

    a = 1,055

    b = -0,055

    c = 12,92

    d = 0,0031308

    ɣ = 1/2.4  

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

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

    v = ,  u  ≥  0     

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

с

    ɣ = 1/2.19921875

Ссылки

[1] Эбнер, Марк. «Гамма-коррекция». Постоянство цвета. Чичестер, Западный Суссекс: John Wiley & Sons, 2007.

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

См. также

Представлен в R2017b