Применить гамма- коррекцию к линейным значениям RGB
Задайте область значений линейных значений. Этот вектор задает 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');

Гамма-исправленное изображение выглядит ярче линейного изображения, как и ожидалось.
A - Линейные значения цвета RGBЛинейные значения цвета 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'Цветовое пространство выходного изображения, заданное как разделенная разделенными запятой парами, состоящая из 'ColorSpace' и 'srgb' или 'adobe-rgb-1998'.
Типы данных: char | string
'OutputType' - Тип данных выходных значений RGB'double' | 'single' | 'uint8' | 'uint16'Тип данных выходных значений RGB, заданный как разделенная разделенными запятой парами, состоящая из 'OutputType' и 'double', 'single', 'uint8', или 'uint16'. По умолчанию тип выходных данных совпадает с типом данных A.
Типы данных: char | string
B - Гамма-исправленное изображение RGBГамма-исправленное изображение RGB, возвращаемое в виде числового массива того же размера, что и входной A.
Гамма- коррекция для преобразования линейных значений 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
Гамма- коррекция для преобразования линейных значений 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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.