Если два цвета будут иметь ту же колориметрию CIE, они будут соответствовать, если просматривается при тех же условиях. Однако, потому что цветные изображения обычно производятся для большого разнообразия просмотра сред, необходимо пойти вне простого приложения системы CIE.
Поэтому Международный цветной консорциум (ICC) задал Систему управления цветом (CMS), которая обеспечивает средние значения для передачи информации о цвете среди входа, вывода и дисплеев. CMS использует профили устройства, которые содержат информацию о цвете, характерную для конкретного устройства. Поставщики, которые поддерживают CMS, обеспечивают профили, которые характеризуют цветное воспроизведение их устройств и методы, названные Модулями управления цветом (CMM), которые интерпретируют содержимое каждого профиля и выполняют необходимую обработку изображений.
Профили устройства содержат информацию, что системы управления цветом должны перевести цветные данные между устройствами. Любое преобразование между цветовыми пространствами является математическим преобразованием от некоторого доменного пробела до пробела области значений. С основанными на профиле преобразованиями доменный пробел часто называется исходным пробелом, и пробел области значений называется целевым пробелом. В модели управления цветом ICC профили используются, чтобы представлять источник и целевые пробелы.
Для получения дополнительной информации о системах управления цветом, перейдите к Международному Цветному Консорциальному веб-сайту, www.color.org
.
Чтобы считать профиль ICC в рабочую область MATLAB®, используйте функцию 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, http://www.color.org.
Чтобы экспортировать информацию о профиле ICC от рабочего пространства MATLAB до файла, используйте функцию iccwrite
. Этот пример читает профиль в рабочее пространство MATLAB и затем выписывает информацию о профиле к новому файлу.
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, www.color.org
.
Этот пример показывает, как преобразовать цветные данные из цветового пространства RGB, использованного монитором к цветовому пространству CMYK, использованному принтером. Это преобразование требует двух профилей: профиль монитора и профиль принтера. Пробел исходного цвета в этом примере является RGB монитора, и целевое цветовое пространство является CMYK принтера:
Импортируйте данные о цветовом пространстве RGB. Этот пример импортирует цветное изображение RGB в рабочее пространство MATLAB.
I_rgb = imread('peppers.png');
Считайте профили ICC. Считайте источник и целевые профили в рабочее пространство MATLAB. Этот пример использует профиль 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 массивами, данными о CMYK записей imwrite
к файлу.
imwrite(I_cmyk,'pep_cmyk.tif','tif')
Чтобы проверить, что данные о CMYK были записаны в файл, используйте imfinfo
, чтобы получить информацию о файле и посмотреть на поле PhotometricInterpretation
.
info = imfinfo('pep_cmyk.tif');
info.PhotometricInterpretation
ans = 'CMYK'
Для большинства устройств область значений восстанавливаемых цветов намного меньше, чем область значений цветов, представленных PCS. Именно по этой причине четыре намерения рендеринга (или методы отображения палитры) заданы в формате профиля. У каждого есть отличные компромиссы эстетической и точности цветопередачи.
Когда вы создаете основанную на профиле структуру преобразования цвета, можно задать намерение рендеринга для источника, а также целевых профилей. Для получения дополнительной информации смотрите справочную информацию makecform
.