Как работать с файлами TIFF с несовместимыми цветовыми профилями ICC

Я пишу TIFFImageReader плагин для Java (ImageIO), но вопрос общий:

Каков «правильный» способ работы с файлом TIFF, который содержит цветовой профиль ICC, который не соответствует данным изображения (т. Е. Данные изображения являются RGB, но метаданные TIFF содержат профиль CMYK ICC)?

Недавно у меня был пользователь, сообщивший об этой проблеме. Быстрое и простое решение - просто выдать предупреждение и игнорировать цветовой профиль. Однако в спецификации TIFF 6.0 вообще не упоминаются профили ICC и способы работы с ними. ICC Спецификация ICC.1: 2010-12, приложение B описывает, как правильно встроить цветовые профили, но не упоминает связь профиля с данными изображения (кроме того, что он находится в том же IFD).


person Harald K    schedule 28.10.2014    source источник


Ответы (1)


Не существует "правильного" способа решения этой общей проблемы.

Цветовой профиль сообщает вам, как связать числа RGB, которые сами по себе являются просто абстрактными значениями, с независимым от устройства пространством, таким как CIE XYZ или CIELAB, чтобы вы могли правильно интерпретировать их как цвета и отображать их последовательно.

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

Во многих случаях вы можете сделать обоснованное предположение на основе информации, относящейся к предметной области. Например, мы часто можем правильно предположить, что изображения в Интернете без профиля, скорее всего, будут данными sRGB, но это всего лишь предположение. Это очень похоже на рецепт печенья, в котором требуется 1 мука, вероятно, это означает 1 стакан муки.

Очень, что изображение RGB имеет профиль CMYK очень - очень сложно понять, как это вообще происходит. Если бы мне пришлось с этим разобраться, я бы выдал ошибку с сообщением о проблеме. Если точность цветопередачи не критична, вы также можете удалить профиль и позволить последующему процессу, необходимому для отображения изображения, работать с немаркированным изображением, или угадать что-то разумное, например sRGB, с пониманием, что это всего лишь предположение.

person Mark    schedule 14.02.2015
comment
Когда я говорю «правильно», я, вероятно, должен сказать, что это де-факто, или что делает другое программное обеспечение. Изображение RGB с профилем CMYK ICC, конечно, является ошибкой, но может произойти, если программное обеспечение, редактирующее изображение, считает, что оно может просто оставить метаданные как есть. Я делаю библиотеку, поэтому не могу предположить, важна ли точность цветопередачи или нет. Поэтому я думаю, что останусь с предупреждением и возьму sRGB (так же, как я делаю с изображениями без профиля). - person Harald K; 15.02.2015