lin2rgb

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

Синтаксис

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

Описание

пример

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

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

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

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

Откройтесь файл изображения, содержащий минимально, обработал линейную интенсивность 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')

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 ⋅ 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