Роль цветового профиля в графической программе

Кажется, я понимаю, что такое цветовые профили. Я не понимаю, в чем разница в обработке фото например в фотошопе в 16bpp sRGB и 16bpp Adobe RGB. Мой монитор может отображать только sRGB.

  • Есть ли разница в алгоритмах?
  • Может быть, перед тем, как программа отобразит результаты моей работы, выполняется какая-то предварительная обработка (например, AdobeRGB(0.3, 0.25, 0.82) отображается как sRGB(0.301, 0.253, 0.819) на моем мониторе)?
  • Есть ли смысл использовать разные цветовые профили, если я не использую профиль ICC своего монитора/принтера?
  • В общем, что мне делать, если я хочу разработать собственное приложение для работы с графикой, поддерживающее профиль, отличный от sRGB (например, в Qt)?

person jaskmar    schedule 15.03.2016    source источник
comment
Тот факт, что ваш монитор не может отображать один тип, не означает, что другие методы отображения не могут. Например, печать или другой тип отображения.   -  person Ander Biguri    schedule 15.03.2016
comment
Это правда, но это не ответ на мой вопрос.   -  person jaskmar    schedule 15.03.2016
comment
По какой причине вы не выбрали ни один из ответов как принятый и позволили сроку действия вознаграждения? В каком отношении ответы недостаточны?   -  person Palec    schedule 07.04.2016
comment
Очень извиняюсь, был офлайн. Это была моя первая награда, и я сожалею, что не могу дать свои баллы сейчас :(   -  person jaskmar    schedule 08.04.2016


Ответы (3)


Цветовое пространство, используемое вашим изображением, определяет, как ваши 16 бит на пиксель должны соотноситься с выводом, создаваемым вашим монитором, т. е. определяет, какие цвета на самом деле представляют числа.

Это может повлиять на то, как обрабатываются некоторые алгоритмы, если они должны давать реалистичные, естественные или последовательные результаты.

Допустим, вы наложили полупрозрачный желтый цвет на темно-красный фон? Какой у вас коричневый цвет? Если алгоритм всегда смешивает пиксельные данные одинаковым образом, то даже если желтый и красный выглядят одинаково на вашем мониторе, коричневый, который вы получите, может отличаться из-за вашего цветового пространства.

Более «правильным» способом микширования было бы преобразование ваших пиксельных данных в согласованное цветовое пространство, микширование, а затем обратное преобразование. Если исходные цвета выглядят одинаково на двух мониторах с разными откалиброванными профилями, то они преобразуются в одинаковые числа в едином цветовом пространстве, а результат микширования преобразуется обратно в результаты, которые выглядят одинаково на обоих мониторах, даже если значения пикселей может быть другим.

Естественный композитинг с полупрозрачностью — хороший пример алгоритма, который должен учитывать ваше цветовое пространство для получения реалистичных результатов. Другие эффекты, которые должны выглядеть «естественно», такие как зеркальные блики, тени и т. д., также должны выполнять физически точные вычисления в согласованном цветовом пространстве.

Чтобы ответить на ваши конкретные вопросы:

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

  2. Да, есть. Цветовое пространство изображения определяет, что означают данные с точки зрения физического освещения. Если вы отображаете его с калиброванным профилем ICC, он преобразуется в числа, которые необходимы вашему монитору для точного отображения вашего изображения.

  3. Должно быть очень мало разницы, какое цветовое пространство вы используете для своего изображения, за исключением того, что некоторые программы отображения не будут учитывать это. Создание изображений sRGB лучше для межсистемной совместимости, но я думаю, что Adobe RBG имеет большую гамму и может фактически отображать некоторые зеленые цвета, которые sRGB не может. Вы должны использовать калибровку принтера и монитора, чтобы вы могли УВИДЕТЬ, как на самом деле выглядит ваше изображение.

  4. Кажется, я ответил на это выше.

person Matt Timmermans    schedule 30.03.2016
comment
Когда дело доходит до пункта 2. — это делает операционная система. Но когда вы используете, например, Photoshop, я думаю, что это программное обеспечение также выполняет некоторую предварительную обработку. Вы можете увидеть разницу после преобразования изображения из одного профиля в другой. - person jaskmar; 30.03.2016

У них нет различий в алгоритмах, потому что вы работаете в цветовом пространстве RGB, а не в цветовом пространстве XYZ. Мониторы, как вы сказали, отображают цвета по-разному, красный цвет на одном мониторе может не точно соответствовать красному основному цвету на другом мониторе. Чтобы определить различные RGB цветовые пространства общим образом, мониторы используют цветовое пространство CIE 1931 XYZ. Каждый монитор или система рассчитывают цвет от RGB до XYZ в соответствии с используемыми профилями, например: RGB (1,0,0) = XYZ (0.4358, 0.2224, 0.0139) в sRGB и XYZ (0.7977, 0.2880, 0.0000) в ProPhotoRGB.

Для получения дополнительной информации см.:

person Plachu    schedule 16.03.2016
comment
@MariuszJaskółka Я так думаю, может быть, не сама программа, а какой-то низкоуровневый системный API может преобразовать ваш RGB в XYZ и отправить его на монитор. Я предполагаю, что вы можете перевести и отправить его самостоятельно, но вам нужно проверить эту информацию. - person Plachu; 16.03.2016

Отображение гаммы объясняется по аналогии

Если вы измените цветовые пространства, вы можете потерять часть информации, потому что отображение одного в другое может быть неинъективным (обратимым). Вы можете выбрать среди различных способов рендеринга сопоставление, которое отбрасывает только ту информацию, которую вы считаете наименее полезной.

Эта аналогия может проиллюстрировать последствия преобразования изображения в меньшее цветовое пространство, когда исходное пространство больше, чем у вашего устройства: вы можете очень хорошо представить трехмерный объект на компьютере, но вы никогда не увидите его на самом деле, потому что ваш экран плоский и, таким образом, может отображать только 2D-изображения. Вы можете просматривать проекции объекта, вы можете просматривать разрезы объекта, но вам нужен 3D-принтер, чтобы получить из него что-то действительно трехмерное.

Даже если у вас нет 3D-принтера, стоит представлять объект в 3D, а не в виде фиксированной 2D-проекции. В противном случае вы не сможете делать все эти 2D-разрезы и проекции, и даже если вы купите 3D-принтер в будущем, вы больше не сможете печатать объект.

3D-объект — это изображение в большем пространстве, фиксированная 2D-проекция — это изображение в меньшем пространстве, экран — это устройство с меньшим цветовым пространством, а 3D-принтер — это устройство с большим цветовым пространством. Конец аналогии.

Рабочий процесс ICC

Если вы делаете снимок, ваша камера должна назначить ему профиль, описывающий цветовое пространство устройства камеры. Профиль определяет сопоставление чисел внутри изображения (координаты в цветовом пространстве устройства) с реальными цветами (координаты в абсолютном цветовом пространстве). Таким образом, без профиля цифры действительно не имеют никакого значения, и каждый волен составить любое отображение, которое ему нравится.

Если вы снимаете в формате RAW, вы выполняете преобразование цветового пространства при проявлении фотографии; если вы снимаете в формате JPEG, камера выполняет эту задачу за вас.

В обратном направлении, при отображении или печати: если устройство отображения не откалибровано и не имеет профиля, реальные цвета, хранящиеся на изображении, могут не соответствовать тому, что на устройстве получается на самом деле. Отображение между цветовым пространством изображения и пространством устройства вывода не может гарантировать сохранение цветов и является несколько произвольным.

Актуальные ответы

  1. Разница в обработке фотографии в sRGB и Adobe RGB заключается в том, что Adobe RGB больше и, таким образом, сохраняет больше информации для дальнейшей обработки.

  2. Разница в алгоритмах уже была объяснена Мэттом Тиммермансом в другом ответе. Что касается смешивания цветов, вы можете узнать больше о перцептивно однородных цветовых пространствах (см., например, закрытые вопросы и ответы по SO) .

  3. Да, преобразование из Adobe RGB в sRGB не является тождеством и поэтому требует некоторой обработки. Где именно выполняется эта обработка (драйвер устройства, ядро ​​ОС, программное обеспечение для обработки изображений) зависит от источника и цели, ОС и их настроек. Если вы конвертируете пробелы в Photoshop, он сам выполняет вычисления. В Windows есть встроенный модуль управления цветом, который заботится о преобразовании изображения с профилем в цветовое пространство устройства вывода.

  4. Изображение, которое вы хотите отобразить/напечатать, может храниться в каком-то довольно экзотическом цветовом пространстве. Если ОС догадается, что это sRGB (Windows догадается), это может привести к странным результатам. Лучше предоставить как можно больше информации системе управления цветом. Даже неоткалиброванным устройствам могут быть назначены некоторые общие профили, могут иметь место некоторые догадки. И, может быть, вы когда-нибудь откалибруете и охарактеризуете свое устройство или отправите изображение кому-то с таким устройством.

  5. #P12# <блочная цитата> #P18# #P13# #P14#

Связанное чтение

person Palec    schedule 05.04.2016
comment
хороший ответ, но когда дело доходит до 4-го вопроса - я знаю, что Qt не поддерживает цветовые профили, но это был скорее вопрос, как реализовать эту функциональность самостоятельно? Просто умножить вектор RGB на матрицу для преобразования в XYZ, а затем (например) в Adobe RGB? - person jaskmar; 08.04.2016