Какой диапазон значений L*a*b* ограничен для данной контрольной белой точки?

У меня есть несколько снимков, с которыми я хочу что-то сделать в CIE L*a*b*. В каком диапазоне можно ожидать, чтобы значения были в пределах, учитывая, что начальные значения sRGB находятся в диапазоне [0,1]?

Я получаю свои изображения, как показано ниже:

im_rgb = im2double(imread('/my/file/path/image.jpg'));

% ...do some muddling about with im_rgb, keeping range [0,1]

xform = makecform('srgb2lab');
im_lab = applycform(im_rgb, xform);

Для начала я достаточно уверен, что L * будет 0-100. Тем не менее, я нашел эту ветку, которая отмечает, что "... a* и b * не должны находиться в диапазоне [-100,100]".

Редактировать:

Стандартная точка Matlab по умолчанию определяется whitepoint('ICC'), который возвращает 0.9642, 1, 0.8249, Я использую это значение, так как я не уверен, что еще использовать.

Поскольку я всегда использую одно и то же (по умолчанию) преобразование, а входные цвета всегда являются реальными цветами (как [0,1] для каждого из R, G и B), их эквивалентные представления L * a * b * также действительны цвета. Будут ли эти значения L * a * b * также ограничены? Если да, то чем они ограничены или как я могу определить границы?

1 ответ

Решение

Вы в основном спрашиваете, как найти границу пространства sRGB в LAB, верно?

Итак, начиная с L*, да, он будет ограничен между 0 и 100. Это по определению. Если вы посмотрите на формулу для преобразования из XYZ в LAB, вы увидите, что L = 116*(Y/Ywhitepoint)-16, Когда вы находитесь в sRGB white, то отношение Y превращается в 1, что делает уравнение 116-16 = 100. Подобное происходит и в том случае, когда формула в основном падает до 4/29 * 116 -16 = 0.

Вещи немного сложнее с а и б. Поскольку преобразование XYZ -> LAB не является линейным, преобразование не дает легко описываемой формы. Но внешняя поверхность куба sRGB станет внешней границей пространства LAB. Это означает, что вы можете взять крайности, такие как синий основной sRGB[0, 0, 1], конвертируйте в LAB и найдите то, что должно быть дальше всего по оси b: приблизительно -108. Когда вы сделаете это для всех углов куба sRGB, у вас будет хорошее представление о степени пространства sRGB в LAB.

В большинстве приложений (особенно Photoshop) кодирование каналов a и b ограничено от -128 до 127. На практике это работает нормально, но некоторые большие пространства RGB, такие как ProPhoto RGB, на самом деле выходят за рамки этого. Как правило, это не имеет большого практического значения, потому что большинство этих цветов являются воображаемыми, то есть они находятся вне спектрального локуса.

Другие вопросы по тегам