Если два цвета будут иметь ту же колориметрию CIE, они будут соответствовать, если просматривается при тех же условиях. Однако, потому что цветные изображения обычно производятся для большого разнообразия просмотра сред, необходимо пойти вне простого приложения системы CIE.
Поэтому Международный цветной консорциум (ICC) задал Систему управления цветом (CMS), которая обеспечивает средние значения для передачи информации о цвете среди входа, выхода и дисплеев. CMS использует профили устройства, которые содержат информацию о цвете, характерную для конкретного устройства. Поставщики, которые поддерживают CMS, обеспечивают профили, которые характеризуют цветное воспроизведение их устройств и методы, названные Модулями управления цветом (CMM), которые интерпретируют содержимое каждого профиля и выполняют необходимую обработку изображений.
Профили устройства содержат информацию, что системы управления цветом должны перевести цветные данные между устройствами. Любое преобразование между цветовыми пространствами является математическим преобразованием от некоторого доменного пробела до пробела области значений. С основанными на профиле преобразованиями доменный пробел часто называется исходным пробелом, и пробел области значений называется целевым пробелом. В модели управления цветом ICC профили используются, чтобы представлять источник и целевые пробелы.
Для получения дополнительной информации о системах управления цветом, перейдите к Международному Цветному Консорциальному веб-сайту, https://www.color.org.
Чтобы считать профиль ICC в рабочую область, используйте iccread
функция. В этом примере функция читает в профиле для цветового пространства, которое описывает цветные мониторы.
P = iccread('sRGB.icm');
Можно использовать iccfind
функционируйте, чтобы найти цветовые профили ICC в вашей системе или найти конкретный цветовой профиль ICC, описание которого содержит определенную текстовую строку. Чтобы получить имя директории, которая является системным репозиторием по умолчанию для профилей ICC, использовать iccroot
.
iccread
возвращает содержимое профиля в структуре P
. Все профили содержат заголовок, таблицу тега и серию теговых элементов. Заголовок содержит общую информацию о профиле, таком как класс устройства, цветовое пространство устройства и размер файла. Теговыми элементами или тегами, являются построения данных, которые содержат информацию, используемую CMM. Для получения дополнительной информации о содержимом этой структуры, смотрите iccread
страница ссылки на функцию.
Используя iccread
, можно считать оба формата профиля ICC Версии 2 (ICC.1:2001-04) или Версии 4 (ICC.1:2001-12). Для получения дальнейшей информации об этих технических требованиях и их различиях, посетите веб-сайт ICC, https://www.color.org.
Чтобы экспортировать информацию о профиле ICC от рабочей области до файла, используйте iccwrite
функция. Этот пример читает профиль в рабочую область и затем выписывает информацию о профиле к новому файлу.
P = iccread('sRGB.icm'); P_new = iccwrite(P,'my_profile.icm');
iccwrite
возвращает профиль, который это пишет в файл в P_new
потому что это может отличаться, чем вход профилирует P
. Например, iccwrite
обновляет Filename
поле в P
совпадать с именем файла, заданного в качестве второго аргумента.
Когда это создает выходной файл, iccwrite
проверяет валидность входной структуры профиля. Если какие-либо обязательные поля отсутствуют, iccwrite
возвращает сообщение об ошибке. Для получения дополнительной информации о данных о профиле ICC записи к файлу, смотрите iccwrite
страница ссылки на функцию. Чтобы определить, является ли структура допустимым профилем ICC, используйте isicc
функция.
Используя iccwrite
, можно экспортировать информацию о профиле в обоих форматах профиля ICC Версии 2 (ICC.1:2001-04) или Версии 4 (ICC.1:2001-12). Значение Version
поле в заголовке профиля файла определяет версию формата. Для получения дальнейшей информации об этих технических требованиях и их различиях, посетите веб-сайт ICC, https://www.color.org.
В этом примере показано, как преобразовать цветные данные из цветового пространства RGB, использованного монитором к цветовому пространству CMYK, использованному принтером. Это преобразование требует двух профилей: профиль монитора и профиль принтера. Пробел исходного цвета в этом примере является RGB монитора, и целевое цветовое пространство является CMYK принтера:
Импортируйте данные о цветовом пространстве RGB. Этот пример импортирует цветное изображение RGB в рабочую область.
I_rgb = imread('peppers.png');
Считайте профили ICC. Считайте источник и целевые профили в рабочую область. Этот пример использует профиль sRGB в качестве исходного профиля. Профиль sRGB является цветовым пространством промышленного стандарта, которое описывает цветной монитор.
inprof = iccread('sRGB.icm');
Для целевого профиля пример использует профиль, который описывает конкретный цветной принтер. Поставщик принтера предоставляет этот профиль. (Следующий профиль и несколько других полезных профилей могут быть получены как загрузки с www.adobe.com
.)
outprof = iccread('USSheetfedCoated.icc');
Создайте структуру преобразования цвета. Необходимо создать структуру преобразования цвета, чтобы задать преобразование между цветовыми пространствами в профилях. Вы используете makecform
функция, чтобы создать структуру, задавая преобразование вводит строку в качестве аргумента. Этот пример создает структуру преобразования цвета, которая задает преобразование от данных о цвете RGB до данных о цвете CMYK. Преобразование цветового пространства может включить промежуточное преобразование в независящее от устройств цветовое пространство, названное Пробелом связи профиля (PCS), но это очевидно для пользователя.
C = makecform('icc',inprof,outprof);
Выполните преобразование. Вы используете applycform
функция, чтобы выполнить преобразование, задавая в качестве аргументов цветные данные, которые вы хотите преобразовать и структура преобразования цвета, которая задает преобразование. Функция возвращает конвертированные данные.
I_cmyk = applycform(I_rgb,C);
Запишите конвертированные данные в файл. Чтобы экспортировать данные о CMYK, используйте imwrite
функция, задавая формат как TIFF. Если форматом является TIFF, и данные являются m n 4 массивами, imwrite
данные о CMYK записей к файлу.
imwrite(I_cmyk,'pep_cmyk.tif','tif')
Чтобы проверить, что данные о CMYK были записаны в файл, используйте imfinfo
получить информацию о файле и посмотреть на PhotometricInterpretation
поле .
info = imfinfo('pep_cmyk.tif');
info.PhotometricInterpretation
ans = 'CMYK'
Для большинства устройств область значений восстанавливаемых цветов намного меньше, чем область значений цветов, представленных PCS. Именно по этой причине четыре намерения рендеринга (или методы отображения палитры) заданы в формате профиля. У каждого есть отличные компромиссы эстетической и точности цветопередачи.
Когда вы создаете основанную на профиле структуру преобразования цвета, можно задать намерение рендеринга для источника, а также целевых профилей. Для получения дополнительной информации смотрите makecform
справочная информация.