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 object. The axes object 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 objects. Axes object 1 with title Linear RGB contains an object of type image. Axes object 2 with title sRGB contains an object of type image. Axes object 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 object. The axes object 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 object. The axes object 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 имя аргумента и 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'единственный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 ⋅ uɣ + b,      u ≥ d,

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

    a = 1.055

    b = –0.055

    c = 12.92

    d = 0.0031308

ɣ = 1/2.4      

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

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

    v = uɣ,           u ≥ 0

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

с

ɣ = 1/2.19921875    

Ссылки

[1] Ebner, Марк. "Гамма-коррекция". Цветное постоянство. Чичестер, Западный Сассекс: John Wiley & Sons, 2007.

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

Смотрите также

Введенный в R2017b