Научная статья на тему 'Работа с файлами iсс-профилей в среде Matlab'

Работа с файлами iсс-профилей в среде Matlab Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
294
96
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМА УПРАВЛЕНИЯ ЦВЕТОМ / COLOR MANAGEMENT SYSTEM / ФАЙЛЫ ICC-ПРОФИЛЕЙ / FILES ICC-PROFILES / ЦВЕТОПЕРЕДАЧА / CMS / COLOR REPRODUCTION / MATLAB

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Чертихин А.А., Гущина М.О.

The paper examines the main means of interaction with files ICC-profiles with the use of MATLAB. Provides an exemplary architecture profiles and the reasons for their use.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Working with ICC-profiles files in MATLAB

The paper examines the main means of interaction with files ICC-profiles with the use of MATLAB. Provides an exemplary architecture profiles and the reasons for their use.

Текст научной работы на тему «Работа с файлами iсс-профилей в среде Matlab»

УДК 004.9

Работа с файлами ICC-профилей в среде MATLAB

А.А. Чертихин, М.О. Гущина

Московский государственный университет печати имени Ивана Федорова 127550, Москва, ул. Прянишникова, 2А e-mail: wasserfal@gmail.com, m.o.gushchina@gmail.com

В связи с широким распространением средств вычислительной техники, которая тем или иным образом отвечает за воспроизведение изобразительной информации, активное развитие получили системы управления цветом (Color Management Systems - CMS). Основной целью подобных систем является автоматизация и контроль цвета на различных этапах воспроизведения и согласование цветопередачи на различных устройствах. Основная идея, заложенная в данной концепции, лежит в выявлении особенностей устройства ввода/вывода изобразительной информации и воспроизведении нужного изображения с учетом выявленных характеристик.

Предпосылки. При воспроизведении одного и того же изображения на мониторах разных моделей или даже с различным временем эксплуатации, восприятие наблюдаемого результата может быть различным. Данный факт относится ко всем устройствам, которые так или иначе взаимодействуют с изобразительной информацией. Устройства ввода/вывода воспроизводят цвета в аппаратно-зависимых пространствах (RGB, CMYK). Например, при вводе изображения через сканер произвольная точка имела следующие цветовые координаты: R = 33 G = 39 B = 106; после сканирования на LCD-монитор будет выведено изображение уже с координатами точки R = 49 G = 40 B = 152. Данные цвета будут восприниматься одинаково, но их математическое описание различно. Окружение и фон так же оказывают влияние на восприятие изображения и должны учитываться при его воспроизведении.

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

168

Международным консорциумом по цвету (International Color Consortium -ICC) была разработана архитектура систем управления цветом CMS и введена спецификация формата цветового профиля, в которой учитываются факторы, влияющие на восприятие.

Основные идеи ICC-профилирования. Концепция ICC предполагает, что файл профиля содержит всю основную информацию об устройстве и условиях просмотра, которая оказывает влияние на восприятие изображения. Это такие данные, как класс устройства, метод цветосинтеза, цветности излучателей/красителей, источник света при рассматривании изображения и т.д. Спецификация цветового профиля определяет не только данные, необходимые при цветовоспроизведении, но и набор алгоритмов, которые использует CMS. CMS реализуется в виде программного модуля, инсталлируемого на уровне операционной системы. Основная идея состоит в преобразовании координат из аппаратно-зависимого цветового пространства в аппаратно-независимое, в котором выполняются основные алгоритмы синтеза с учетом особенностей устройства ввода/вывода, и дальнейшем их преобразовании в координаты цветового пространства требуемого устройства. Таким образом, у каждого устройства должен быть свой файл ICC-профиля.

Сам файл состоит из:

• заголовка профайла (128 байт) - Header;

• таблицы тегов - TagTable: число тегов (4 байта);

• теги (12 байт на каждый);

• внутритеговые данные (вариабельный размер).

MATLAB и файлы ICC-профилей. MATLAB - набор взаимосвязанных модулей и одноименный язык программирования. Начиная с 7-й версии программы, в нее были включены средства для работы с ICC-профайлами, что упрощает чтение и запись файлов. Были добавлены следующие основные функции: iccroot, iccread, iccwrite, isicc, iccfind. Далее представлено описание функций и примеры их работы.

Поиск директории для файлов ICC-профилей по умолчанию

iccroot

rootDirectory = iccroot

Функция возвращает строку (rootDirectory), которая является путем к корневому каталогу с файлами ICC-профилей, хранящихся на данном компьютере. Пример работы данной функции представлен в листинге 1.

Листинг 1

>> rootDirectory = iccroot;

>> rootDirectory rootDirectory =

C:\Windows\System32\Spool\Drivers\Color

169

Чтение файла ICC-профиля (iccread) sturcureProfile = iccread(fileName)

Входным параметром функции является строка с наименованием файла (fileName), включая расширение. Данный файл может иметь любое расширение ICC-профайла или TIFF, содержащий ICC-профиль. Функция ищет данный файл в каталоге «C:\Windows\System32\ Spool\Drivers\Color» для Windows или «/Library/ColorSync/Profiles/ Displays» для Mac OS, либо в каталоге, который задается с помощью функции iccroot. Возвращаемым значением (sturcureProfile) является структура данных, поля которой содержат теги и их значения файла ICC-профиля. Данная функция способна прочитать данные 2 (ICC.1: 200104) и 4 (ICC.1: 2001-12) спецификаций ICC. Количество полей и их организация зависит от класса файла ICC-профиля.

В листинге 2 представлен пример работы данной функции для файла ICC-профиля «GoldBlue.icc». Из примера видно, что данные структурированы и обращение к нужным полям или тегам не вызывает затруднений, что является большим преимуществом при изучении структуры того или иного файла.

Листинг 2

>> structureGoldBlue = iccread('GoldBlue.icc');

>> structureGoldBlue structureGoldBlue =

Header: [1x1 struct]

TagTable: {4x3 cell}

Description: [1x1 struct]

Copyright: 'Copyright 2011 Adobe Systems Inc.' MediaWhitePoint: [0.9642 1 0.8249]

AToB0: [1x1 struct]

PrivateTags: {}

Filename:

'C:\Windows\System32\Spool\Drivers\Color\GoldBlue.icc' >> structureGoldBlue.AToB0 ans =

MFT: 1

PreShaper: []

PostMatrix: []

PostShaper: []

PreMatrix: [3x4 double]

InputTables: {[256x1 uint8] [256x1 uint8] [256x1 uint8]}

CLUT: [4-D uint8]

OutputTables: {[256x1 uint8] [256x1 uint8] [256x1 uint8]}

170

Стоит заметить, что форма описания файлов несколько отличается от самой структуры файлов ICC-профилей. Архитектура structureGoldBlue для файла GoldBlue.icc не совпадает с архитектурой самого файла. Например, тег AToBO, информация о котором расположена в таблице тегов, а данные в разделе внутритеговых данных (для GoldBlue.icc) здесь находится, можно сказать, на поверхности. Это в какой-то степени облегчает обращение с тегами файла, в силу того, что данные этого тега можно назвать важными для данного класса профайлов.

Запись файла ICC-профиля iccwrite sturcureProfileNew = iccwrite(sturcureProfile, fileName)

Входными параметрами функции являются структура файла ICC-профиля (sturcureProfile), которая должна иметь архитектуру аналогичную, возвращаемую функцией iccread, и имя нового файла ICC-профиля (fileName), передаваемого в виде строки. Функция возвращает структуру нового профайла. Стоит учесть, что при записи нового профайла функция может несколько модифицировать данные, чтобы сохранить совместимость с ICC спецификацией. Так, например, в структуре могут отсутствовать некоторые обязательные теги заголовка, которые не влияют на результат репродуцирования оригинала изображения с использованием данного файла ICC-профиля (дата создания и т.д.).

Пример работы данной функции представлен в листинге 3.

Листинг 3

>> sturcureProfile = iccread('GoldCrimson.icc');

>> sturcureProfile sturcureProfile =

Header: [1x1 struct]

TagTable: {4x3 cell}

Description: [1x1 struct]

Copyright: 'Copyright 2011 Adobe Systems Inc.' MediaWhitePoint: [0.9642 1 0.8249]

AToBO: [1x1 struct]

PrivateTags: {}

Filename:

'C:\Windows\System32\Spool\Drivers\Color\GoldCrimson.icc' >> sturcureProfile.Description ans =

String: 'Gold-Crimson'

Optional: [1x79 uint8]

>> sturcureProfile.Description.String = 'new description for test'; >> sturcureProfileNew = iccwrite(sturcureProfile, 'ICC-profileNew.icc');

171

>> sturcureProfileNew sturcureProfileNew =

Header: [1x1 struct]

TagTable: {4x3 cell}

Description: [1x1 struct]

Copyright: 'Copyright 2011 Adobe Systems Inc.' MediaWhitePoint: [0.9642 1 0.8249]

AToB0: [1x1 struct]

PrivateTags: {}

Filename: 'ICC-profileNew.icc'

Важным параметром, который должен быть уникальным для каждого профайла, является строка описания ICC-профиля (sturcureProfile.Description.String). Поэтому в представленном примере при создании нового файла ICC-профиля необходимо задать новое значение для этого поля.

Проверка файла ICC-профиля на валидность isicc result = isicc(structureProfile)

Входным параметром функции является структура файла ICC-профиля (structureProfile), которая должна иметь архитектуру аналогичную, возвращаемую функцией iccread. Функция возвращает true (1), если structureProfile имеет структуру файла ICC-профиля, в противном случае - false (0). Функция проверяет наличие обязательных тегов соответственно спецификации ICC 2 (ICC.1: 2001-04) и 4 (ICC.1: 2001-12) версий. Пример работы функции представлен в листинге 4.

Листинг 4

>> structureProfile = iccread('sRGB.icm');

>> result = isicc(structureProfile);

>> result result =

1

>> file = textread('word.txt','%s');

>> result = isicc(file);

>> result result =

0

Поиск файлов ICC-профилей iccfind

У данной функции есть несколько вариантов использования. Три из них представлены ниже.

profiles = iccfind(rootDirectory)

172

Функция принимает строку (rootDirectory), которая является путем к корневому каталогу с файлами ICC-профилей, хранящихся на данном компьютере. Возвращаемым значением является массив, который хранит структуры данных о все файлах ICC-профилей в указанной директории.

[profiles, descriptions] = iccfind(rootDirectory)

Функция принимает строку (rootDirectory), которая является путем к корневому каталогу с файлами ICC-профилей, хранящихся на данном компьютере. Возвращаемыми значениями являются массив, который хранит структуры данных о всех файлах ICC-профилей в указанной директории, и массив строк, где каждая строка соответствует описанию файлов ICC-профилей. Пример работы представлен в листинге 5.

Листинг 5

>> [profiles, descriptions] = iccfind(iccroot) profiles =

[1x1 struct]

[1x1 struct]

[1x1 struct]

[1x1 struct] descriptions =

'Adobe RGB (1998)'

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

'AnimePalette'

'Apple RGB'

'Blacklight Poster'

[profiles, descriptions] = iccfind(rootDirectory, pattern)

Функция принимает строку (rootDirectory), которая является путем к корневому каталогу с файлами ICC-профилей, хранящихся на данном компьютере, и строку, которая должна содержаться в название файла без учета регистра. Возвращаемыми значениями являются массив, который хранит структуры данных о всех файлах ICC-профилей в указанной директории, и массив строк, где каждая строка соответствует описанию файлов ICC-профилей. Пример работы представлен в листинге 6.

Листинг 6

>> [profiles, descriptions] = iccfind(iccroot, 'rgb');

>> [profiles, descriptions]

ans = [1x1 struct] 'Adobe RGB (1998)'

[1x1 struct] 'Apple RGB'

173

[1x1 struct] 'CIE RGB'

[1x1 struct] 'ColorMatch RGB'

[1x1 struct] 'DCI P3 RGB (Gamma 2.6) 5900K (by Adobe)'

[1x1 struct] 'ProPhoto RGB'

[1x1 struct] 'Wide Gamut RGB'

[1x1 struct] 'sRGB IEC61966-2.1'

>> [profiles, descriptions] = iccfind(iccroot, 'adobe');

>> [profiles, descriptions]

ans = [1x1 struct] 'Adobe RGB (1998)'

[1x1 struct] 'DCI P3 RGB (Gamma 2.6) 5900K (by Adobe)'

Библиографический список

1. MatWork. Documentation. Электронный ресурс. URL: http:/ /www.mathworks.com/ (Дата обращения: 28.03.15)

2. Домасев М.В, Гнатюк С.П. Цвет, управление цветом, цветовые расчеты и измерения. - СПб.: Питер, 2009. - 224 с.

3. Международный консорциум по цветуИ^). Спецификация ICC.1:2004-10 (Версия профилей4.2.0.0). Технология управления цветом в изображениях - архитектура, формат профилей и структура данных.: 2004. - 102 с.

4. Нюберга Н.Д. Теоретические основы цветовой репродукции. - М.: Советская наука, 1947. - 147 с.

5. Фершильд М. [Fershild M.] Модели цветового восприятия. Второе издание.: пер. с англ.: Rochester Institute of Technology, USA, 2004. - 437 с.

6. Шашлов А.Б. Основы светотехники. - М.: Логос, 2011. -

256 с.

174

i Надоели баннеры? Вы всегда можете отключить рекламу.